Drool fuel

My buddy Rick has been drooling over Macinstoshes.  I wholeheartedly agree with him, but I have some drool fuel of my own.  I’ve been wanting a Tablet PC for a LONG time, but they have not been inexpensive enough with the options that I want.  An absolute MINIMUM requirement is the screen resolution being 1400 x 1050.  Toshiba has the awesome Portege M200, but it is very expensive (at least for the way that *I* would load it out).  Now they brought out the Tecra M4, which has the newest technology, but is cheaper (huh?).  Their are only two things that I can think of that I want different.  One, it needs a 7200 rpm drive option.  With more hard drive manufacturers shipping 7200 rpm notebook drives, at least offer it as an option.  Second, it is a BIG notebook to be caring around.  Tablets are the place where bigger is NOT better.  Remember, the concept is for it to be a pad of paper that remembers EVERYTHING you write.

Thanks to Robert Scoble for the info about this wonderful new PC!

Unicode Regular expressions

If you’re a developer and haven’t discovered Regular Expressions, then shame on you!  These are incredible powerful search and text manipulation commands.  .NET has an entire namespace dedicated to handling Regular Expressions.  The interesting thing is that most regular expressions suffer from the same ‘narrow-mindedness’ that regular programming does.  WE TEND TO FORGET INTERNATIONAL CHARACTERS.  The normal RegEx for accepting any character is ‘[A-Za-z]’.  Well, of course, this is wrong.  So, Michael Kaplan wrote an article on how to include unicode characters in Regular expressions.

Turning away from what you want to do…

I had a meet-and-greet with a band last night that I may audition for.  I liked these guys, liked the music, and LOVED where they played, but… I don’t think I have the kind of time to devote to the band that they deserve.  I spoke to the lead singer, and he indicated that they wanted to start playing out 3 nights a week.  In fact, they have a gig on Wednesday that runs until 2 am.  This little announcement made me realize a couple of points:

  1. I do not have the ability to get home at 3 in the morning, sleep for 3 hours and the get up and go to work and even be CLOSE to effective at my job.
  2. My job requires that I travel a bit, usually on the weekends.
  3. My focus of my life would change from ‘getting established’ to ‘getting the band established’.
  4. Money that would be allocated to paying bills would now go to paying for equipment.
  5. In the end, it would not be fair to either my job or the band.

I don’t know if any of this is a ‘cop-out’ or just being practical.  I REALLY want to get back playing and practicing with a band.  I *COULD* draw an analogy to something else that usually isn’t as much fun by one’s self, but I’ll leave that to the reader’s imagination.


Finally some good news…

Wow, what a day!  I finished up a project that was giving me fits this week.  Refactoring is one of the greatest ideas ever.  If I ever use the word ‘transform’ in a variable/method name again, I should be shot.  Abstract names are great for diagrams, high level overviews and interfaces, but have no place in regular code.  Using an abstract method/variable names means that the person writing the code could not articulate the concept very clearly in English. Not understanding the concepts translates to not implementing code correctly.  It is very fustrating when it is *MY* code (whoops…) Live and learn, and don’t repeat the same mistake again. Also don’t repeat the same mistake in other things (like that… <grin>).

Sometimes its hard to change the paradigm

Have you ever realized that your looking at a problem from the wrong direction? It hit me this morning that I’ve been thinking like a Windows client developer. My current job is develop server side processes for ASP.NET pages. This requires a TOTALLY different mindset. I keep forgetting that I don’t have the computer’s unlimited time and memory. I’ve GOT to start thinking more multi-user/single-box. Back to the drawing board for me…

Ok, so I’m not an iTunes kinda guy… (MSN Music content)

I have a confession to make… I don’t use iTunes.  In fact, I don’t even LIKE iTunes.  I use (horror upon horrors) MSN Music.  *Dave will now run so that he can keep his geek card*.  In fact, the reason I LIKE MSN is a little bit geeky.  The long and short of it is MSN encodes in 160 kbs WMA while Apple opts for 128 kbs AAC.  Why is this important?  Well, higher bit rates equal higher quality music.  128 kbs is a good enough for most people.  I’m NOT most people.  I use these files to learn and transcribe music. How does the bit rate affect this?  Glad you asked.

To do the lossy music compression, the encoders usually ‘discard’ sounds that are outside of most people’s hearing range. These frequencies are usually above 15-18k on the spectrum of sound. When a musical instrument is played, there are a lot of overtones that go up beyond this spectrum and interact and change the sound BACK BELOW THE THRESHOLD. Based upon some principals that I have no understanding about, the human mind can ‘fill-in’ the higher level overtones, which is great because it allows for smaller files to sound almost like the original recording. Again, most people cannot tell the difference.

Ok, so how does this all come back to MSN Music and transcribing? When transcribing music, one of the techniques is to slow the music down.  Thanks to some great algorithms, a computer can slow the sound down without altering the pitch of the music. BUT, when slowing the sound down the overtones become VERY, VERY important.  A lower bit-rate recording will turn to mush when it is slowed down.  Also the ‘attack’ or definition of a note is in those upper level frequencies.  When they are gone, it is much harder to ‘pick out’ notes.

The last thing is that my transcribing program Transcribe! supports playing back DRM’ed WMA files.  It doesn’t support DRM’ed AAC files.

Rant about single letter variable names


Before today, I had no issues with using single letter variable names for things like counters and temps.  That’s changed.  I was working in some VBA/Excel legacy code that the previous developer had used the variable ‘x’ for some important piece of functionality.  Now trying to find all the references becomes a HUGE pain in the rear because a lot of OTHER variable names contain ‘x’ in the word!  Arrrgggghhh…  Now I realize that the same issue could occur with counters like ‘i’ and ‘j’.  So, no more single letter variable names for my loops.  Thank goodness for the foreach statement in C#.

/End Rant

An overlooked feature of C# 2.0…

At last Visual Studio 2005 beta 2 is out, but that’s not important now… What is important is some of the features that have been added. One feature that I was not interested in, and a little bit unhappy that they added, was Partial Classes. My main language for the past 7 years had been Delphi. Delphi has an interesting scheme where the properties are stored in one file, and the code is stored in another. Because of the way Delphi did things, these properties could be a real problem, as they were not part of the code, and sometimes did strange things when loading.

My initial understanding of Partial Classes was to implement something along the same lines, one file has the properties, and another has the code. I thought, "Delphi all over again, ugh". It turns out that there is a real need for partial classes. At my work, we are using Typed Datasets. These are very good, BUT they have a couple of issues. Any code added to the class that is generated will disappear the moment you make a change and regenerate the class.  To get around this, a co-worker came up with the idea of having the generated classes be a base class, and adding code and anything else to a derived class.  It’s a very good solution, but it takes a little bit to understand, and needs a tool to propagate certain changes out to the derived class.  Partial classes REALLY help this.  Now all code that we want to add can be placed in the partial class file.  The part that is auto generated can be regenerated over and over, and the code we add never has to change.  YEAH!!!!!

A co-worker made a good point today…

I confess, I’m an info junkie.  Blogs and RSS have been the greatest thing since sliced bread for me. I love to be ‘in the know’, especially with computer hardware and software. Unfortunately, I’m also a skeptic. I believe little of what I hear. The combination produces someone who reads a lot and accepts the writing as fact, but doesn’t listen to the people around him.  My friend and co-worker pointed this out to me today, as ideas that he has spoken about have been ignored UNTIL an article is found. In fact, he sent me a link for an article over 3 months beforehand that was ignored until the problem the article dealt with finally reared its ugly head! I am starting to rectify this behavior.  Now, I’ll take notes when he talks so that I can follow up with the ideas sooner!  I really dislike the fact that I had good information well before the problem arose, and I ignored it until the last possible second.

Definitely have to be a little clearer…

Thanks Richard1110!  Isn’t the english language wonderful… I made a comment that I go to sleep reading design documents.  What a Fraudian slip!  I meant to say that design docs put me to sleep.  What is funny is the habbit that I *DO* have.  I read technical books just before going to sleep.  My cat sleeps on the book as I read, and I let myself try to understand the verbage.  I then let my ‘unconcious mind’ dwell over any concepts that I may or may not understand.  It seems to work for me.

Designs and Diagrams

I found a great article on Design Diagrams.  Aarod Junod has a wonderful article on using UML in designs.  I’ve got to start looking into some sort of diagramming tool for work, it is far easier to get people to ‘look at the pretty pictures’ than to dig through pounds of print.  I know that *I* go to sleep reading design docs.  Now, if only I could find a good tool that can round-trip with C#, be easy to use, cheap, extendable, well-supported, have good support for printing, and integrate with some sort of documenting program…. (I’m not asking for much )

Another Lousy Day

Some days you get the bear, some days the bear gets you… Today was one of those days that the bear got me.  I have not had a great attitude lately.  I’ve been overwhelmed with administrative work and haven’t been able to PLAN anything.  Sometimes it seems like life is just one punch after another, and one has to roll with them.  There have been a LOT of distractions, including a friend of mine leaving the company, and new toys like Visual Studio 2005.  I’m trying to work through them, but it is tough.  It especially doesn’t help when you’ve got the ability to say exactly the wrong thing to the wrong person at the wrong time.  Little comments seem to have huge impacts, and it’s far too easy to ‘open mouth, insert foot’.

Hopefully, my frustration will bleed off a little tomorrow, and I can get back to being a normal developer…  A band audition and some very cool stuff with my ideas will definitely help me get back in the groove.


Ok, I’ve gotta pay more attention.  I was happy this morning because of getting an update with an audition.  Well… it turns out the email was from a DIFFERENT ad that I answered almost 2-3 weeks ago.  I called and set up a ‘meet-and-greet’ for Saturday when they are playing out.  I’m actually looking forward to it, as I haven’t gone and seen a band in a LONG time.  This one has a good feel to it, even though they are auditioning other people.  I haven’t heard from the other group, hopefully they will catch up with me.  I REALLY want to get back into playing out again.

Another small victory, this time with music

A little bit of background:  I have been involved with music in some way, shape or form since I was 3 years old.   I have played guitar since I was 15, and tried to play with a couple of bands during that time.  Unfortunately, time, job, and general interest has pushed me from not even trying to find a band for the last 1-2 years.  When my job situation changed last year, I finally have had time to devote to finding a new band.

I recently came across an ad looking for a guitar player.  My initial contact led me to the band’s old set list, which had a couple of songs that I know, but a lot that I would have to learn.  I started to learn some of the songs, but was a little depressed, thinking that I probably would not do too well.  Then, yesterday, I got a email with the current set list.  There were enough songs on the list that I know, and have played with a band to feel a LOT more comfortable.  Wish me luck!

Life’s small victories…

A friend of mine just had a great ‘small victory’.  Rick finally got his KVM switch working the way he wanted it.

I had a similar ‘small victory’ on Friday.  My car’s computer had been trying to tell me something because when I pressed the brake, the clock and various lights on the car would dim.  Plus, when I clicked on my left hand turn signal, the same lights would click in time with the signal.  If it was at night, though, the turn singal would click double time.  So, I reasoned out that it was a ‘error code’ to the user (me).  I had noticed one of my tail lights was looking weird, so my thought was to have the tail lights changed.  Now, I usually let the dealer fix anything wrong on the car, as I have a wonderful tendency to make things go wrong (see previous stories with computers ).  This time, being broke and a little bit stubborn, I decided to try to fix it myself.  It turns out that my car owner’s manual explains how to change the bulbs.  I went and bought the bulbs and the special screw driver, and changed all the bulbs.  Presto!  That’s what the computer was telling me. (Doh!)  For a grand total of $15 and maybe 20 minutes of my time, I did what probably would have cost me $40 and an hour of time at my service center.  Hurray for a small victory!

The user experience

Recently, I’ve had a bunch of problems with my computer.  All I want to do is be able to select a hard drive to boot off of.  Supposedly, my motherboard will allow this, but everytime *I* try it, my BIOS goes off into la-la land.  What’s funny is that there is a boot menu that I can select which drive to boot to, but I have to press Escape, and select the drive from a menu.  That doesn’t sound so tough, right?  But, that’s not what I *want* the system to do.  I expect a computer to make things easier, not add more steps.

Why am I bringing this up?  Because, recently, I had a customer of mine ask me to set up a spreadsheet for him.  He wanted to keep his books like a general ledger.  Fine and dandy, but sorting in Excel is a real pain.  Not in the fact that it’s difficult, it just requires several steps that a user doesn’t realize.  It is not intuitive that one must select ROWS to sort COLUMNS.  For him to sort his data by dates requires that he select all his rows, select sort, then pick a column.  Heck, that doesn’t make sense to ME!  Now, I’m not knocking Excel at all.  Excel is a great product.  It is NOT what I would have chosen to do what he wanted.  But Excel does have the capabilities, and that’s what was requested, so away we go. 

Where’s all this headed?  Just this.  Users don’t think like developers, hardware or software.  As a developer, be ready, user’s ask for the darnest things.  And those things are IMPORTANT to those users.  I’ll never buy another board from the company that I have my motherboard. My customer probably thinks I’m a little crazy for making him take three steps for something that he thinks (rightfully so!) should be automatic.

Back to the drawing boards…

Back to square one

After kicking the side in on the computer (no, I’m not kidding), I was able to get my computer working again.  (Of course, re-flashing the bios, taking everything one step at a time, and being VERY careful as to what changed each time helped too ).  Unfortunately, the functionality that I want STILL doesn’t work, but I can get around the issue fairly easily.  Some days, I really want a Mac.  Then I realize that there is a LOT of cool stuff that I already do, and it doesn’t cost me a dime ’cause I’ve already spend for what I have.

“Instant Karma’s gonna get ya”

Arrghhhh…. I spoke too soon about the motherboard.  When am I EVER gonna learn? 

Here’s the saga.  I had my system working fairly well.  It would go to the correct drive, and if I wanted to boot to my other hard drive, I could get a boot menu and select the second drive.  What I could not do was set to in the BIOS the ability to set the 2nd drive to be the main boot drive.  The BIOS had the ability, but when I would set it up like that, the system would appear to hang when starting.  So, stupid computer geek that I am, thought that a new BIOS update might have fixed this problem… Well, flashing the BIOS went fine.  System worked like it did before, booting from the 1st drive correctly.  Then I decided to do something stupid.  I set the second drive to be the boot drive.  From that point on, the computer would not start up.  After flashing the BIOS, fiddling with settings, and finally disconnecting the hard drives AND turning ON the RAID functionality, I managed to get it back to the original state, abeit, with the OS dectecting the RAID and wanting to install a driver for it.  Finally, it a completely stupid state, I was like ‘Ok, it’s working.  I can turn off the RAID’.  Hahahahahahahahaha…..  Boom, back to the no boot.  And now, even turning the RAID on does not help…. Grrrrrrrrrrrrrrrrrrrrrr….. 

I give up.  It’s either time for a new board or a new system.  Either one is going to be a pain in the rear.

One good thing…

After having a really crappy motherboard for almost a year, I FINALLY got a BIOS update that seems to have fixed all the issues I have been running into.  This is the 5th version of the BIOS for my particular motherboard.  All I ask is that I can switch which drive I boot from.  So far, trying to switch drives around has caused the BIOS to freeze so hard that I had to re-flash the BIOS.

I did discover a very, very cool thing about the board, though.  The BIOS flash utility is built into the BIOS itself.  All I have to do is copy the BIOS file to a CD, then start the utility on startup.  It finds the file and flashed the BIOS automaticly.  Very cool feature that fixes the problems with having to have multiple BIOS flashing utilities for different Operating Systems.

Good job guys.

One good thing…

After having a really crappy motherboard for almost a year, I FINALLY got a BIOS update that seems to have fixed all the issues I have been running into.  This is the 5th version of the BIOS for my particular motherboard.  All I ask is that I can switch which drive I boot from.  So far, trying to switch drives around has caused the BIOS to freeze so hard that I had to re-flash the BIOS.

I did discover a very, very cool thing about the board, though.  The BIOS flash utility is built into the BIOS itself.  All I have to do is copy the BIOS file to a CD, then start the utility on startup.  It finds the file and flashed the BIOS automaticly.  Very cool feature that fixes the problems with having to have multiple BIOS flashing utilities for different Operating Systems.

Good job guys.