January 2006

Woohoo! I’m a gradutate!

Woohoo!!! I just got my DANTES “Money & Banking” test results in the mail, and with a barely passing score, I now have enough credits to graduate from Bellevue University (assuming I counted correctly ;)).  Yay!

Now the question is: Should I go on for something more, or should I spend time with my family/laptop*.
(Threw the laptop comment in for the wife).

General

Comments (0)

Permalink

Dilbert Design Requirements

Dilbert today is hilarious. [Link].

I have been fortunate to not run into this type of individual myself, but have heard of ‘em.

General
Software Development

Comments (2)

Permalink

PBBS - Peanut Butter Brain Syndrome

You ever notice how your mouth gets all gummy when you are eating a peanut butter and — insert your favorite compliment here — (mine is sugar) sandwich and you cannot talk? Well, right now my brain feels that way. I just finished reading a book earlier this evening, and have spent the last few hours trying to catch up on my bloglines. Only 374 entries!*

The thing about PB&* is that it seems to get worse and worse until finally your mouth clears, and you are able to talk again (or take another bite ;- ).   Well, tonight I cleared out as much of my blog line as I could.  There were many posts that I really wanted to read, and then many that looked somewhat interesting when I first saw them, but upon closer review have no context to me.

It is tough to stay on top of all those blogs, let alone the IRC channels and mailing lists and bb forums.  Looking in my gmail account, I see that I have the following unread messages to read:

AM (91)
APM (86)
Commons-Dev (1074)
Maverick (72)
Pragmatic Programming (76)
Rails (7205)
Refactoring (50)
SCRUM (298)
TDD (284)
XP (419)
 

That doesn’t include the daily digest lists that I follow.  Think I will ever catch up?  Not likely.
If I want to be productive at work I have to tune all of this stuff out.  I have tried to keep up with it and my work tasks, and my work tasks quickly became overrun.  The irony is that as I became more efficient at monitoring the messages/interuptions, the more messages/interuptions I accepted into my life.

I am trying to pare my input down.  The thing is, I have some level of attachment to each of these.  For instance, I have had some really interesting conversations in the XP list, and every time I look at the Rails list I am amazed at the things people are doing with that technology and want to be there too.

The first step to treating any addiction is to admit you have a problem, right?  Step 1… check.
*I’m down to only 50 now!

General

Comments (0)

Permalink

Java Performance Management Tools Speaking Engagement

Just a heads up for those of you who like? to hear me talk (or prefer to harass me while I talk), I will be giving a presentation, entitled Java Performance Management Tools February 9th at the Marriott Hotel in Regency Court (Omaha, NE).  The consulting company I work for, Bass & Associates, is sponsoring a recruiting open house, of which I will be giving this complimentary technical presentation.
I will be speaking at 7:30AM and 11:30AM.   Everyone is welcome.  See the company’s website [link]for more details and for RSVP info.

General
Java
Software Development

Comments (0)

Permalink

Handy Ruby Tool: multi-file Find/Replace

I am a huge fan of CodeWright, a code editor owned by Borland that is no longer being worked on. I have been using it since the beginning of my career, and really fell in love a couple of features that I have been hard pressed to find elsewhere. The first is a relatively minor feature, but comes in handy none-the-less: columnar/verticle selects. This feature allows you to select and edit a block of text, but only the columns you want. This is unbelievably handy when you have a large file that needs columns to be changed.

The other feature that really makes CodeWright a necessary part of my toolkit (up until now :)) was multi-file Find/Replace. CodeWright would let you select a directory (any directory, not just one in your workspace! take that Eclipse!) and any set of files in that directory (recursively or not) and replace a search string (could be a RegExp) with a replacement string. It also lets you approve the changes for each line, so you could surgically make changes with a broadsword, if you so choose.
I use this feature fairly often, but since leaving ACI in May, I have been without a good tool for that job. CodeWright, though no longer supported by Borland, still (STILL!) costs $299 as part of the “Borland Classics” line!!!!! What the #$^! is wrong with this picture? Borland, please PLEASE PLEASE either make it cheap (under $100) or better yet, give to the Open Source community. I would gladly help support this fine tool.

Anyway, enough ranting… back to the purpose of this post! I needed a find/replace tool today for converting ERwin Oracle SQL scripts into MySQL scripts, did not want to do it by hand more than once (which I did yesterday… yuck!).

So, pulling out my handy dandy “Programming RubyHTML Help file (left the book at home) I went to work on a script to do it for me. Here it is:

  1. #
  2. # Find / Replace -
  3. #  1.) Moves current file to filename.ext.bak
  4. #  2.) Creates a new file "filename.ext" and
  5. #  3.) adds each row, first substuting where necessary
  6. #
  7. # ARGV[0] = regex pattern to find (i.e. "\w*." )
  8. # ARGV[1] = replacement text
  9. # ARGV[2..] = filename or (i.e.) **\*.txt to hit every .txt file in the dir and its children
  10.  
  11. puts “Replacing #{ARGV[0]} with “#{ARGV[1]}" in file(s):"
  12.  
  13. # find the regex pattern in the input REGEX
  14. regexp = Regexp.new(ARGV[0]);
  15.  
  16. for i in 2ARGV.length
  17. Dir[ARGV[i]].each do |path|
  18. puts path
  19. bakpath = “#{path}.bak”
  20. File.rename(path, bakpath)
  21.  
  22. File.open( bakpath, “r” ) do |fin|
  23. fout = File.open(path, “w”)
  24. fin.each do |line|
  25. tmp = line.gsub(regexp) { “#{ARGV[1]}” }
  26. fout.write tmp
  27. end
  28. fout.close
  29. end
  30. end
  31. end

Unfortunately, WordPress 2.0 does not like source code anymore and took out my whitespace… oh well.  Hopefully that will be fixed soon.

Anyway, the above code is simple, clear, and does exactly what I need it to do.  The only thing that is missing is the approval, which I may create a rubyTK program to handle, but this will work for now.

General

Comments (2)

Permalink