Windows programs you ENJOY using…

What windows programs do people ENJOY using?  Not use because they have to, but really WANT to use? 

My personal list is VERY short, and it’s because of the companies and the way they respond.  My absolute #1 piece of software that I love to use is Cakewalk‘s SONAR.  SONAR is used to record music in a multi-track format.  The interface is great and the company’s responsiveness is even better.

Now, why the question?  Because this is a point that Microsoft lacks and Apple lives on.  It seems like software that is written for the Mac, people LOVE to use.  Windows software?  Ho-hum, it works.  I’ve got some theories, and will put them in blogs a little bit later…

Writing software for the Mac…

Over on Steve Makofsy’s furrygoat site (not it’s not some sort of fetish site!) there’s an article containing a link to a presentation as to Writing Software for the Mac.  There are some REAL interesting comments in the presentation.  There is even a section on writing good code in general.  My friend Shoaib has a mac software company.  A lot of the points on the PDF match up to the things he has commented on with Mac programming.

Update to the very cool computer

Emachines has put very little on their website about the new machines.  Well, Compusa has some extra details about the lower priced machine mentioned in the press release.  Here’s the link to see what they look like, plus more exact specs…

The good thing is that the machine has a 7200 rpm hard drive.  Plus, there is a PCIe video card slot if you don’t like the on-board video.  This is a REAL computer folks!

Note… The link is for the 6410, the 6520 is a more expensive version that include Media Center, a faster processor, more memory, and a larger hard drive.

Very, very cool computer

Wow!  Talk about hitting the price point!  For the price of a Mac mini, you can get a fully decked out Windows Media PCEmachines is starting to sell an Athlon 64 3400+, 1 Gig of memory, 200 Gig HD, Dual layer DVD burner, 8-ini-1 media reader and Windows Media Edition for ~$600!  (After a $50 mail in rebate, so the price is like $649).  It’s got an integrated video card, but it’s no slouch, it’s ATI’s Radeon Xpress 200 chipset.  I’m sure it will have either an AGP or PCIe slot for an external video card.  I just hope the hard drive will be a 7200 rpm drive.

Now, I’ve got to find one of these, as a friend of mine needs a new computer.

Cool new Mac software from xhead software

Ok, here’s a shameless plug for my friend Shoaib.  He’s one of the founders and lead programmer for a company called xhead software.  They develop useful and cool apps for the Mac.  They just released a new product called info.xhead.  I was able to see a demo of this product when Shoaib was in town.  It’s a great organizer for any sort of data.  What was really nice was the ease-of-use factor.  A couple of clicks and your record format was defined.  Plus, it integrates with Spotlight to make searching SUPER easy.  They have a real winner here.

More ‘good programmer’ qualifications

My friend Rick has his own thoughts on what makes a good programmer.  He approaches it with some good concrete coding ideas.  My ideas are a little more abstract, but then again, I’ve been changing my concepts lately.  I do have a couple of differences in the things Rick brings up… 

One thing that I’d change, instead of ‘don’t deserve’, I’d say ‘should be go back and learning some more’.  Most languages created in the last 10 years (Java’s over 10 years old, folks) have automatic memory management.  It doesn’t mean that you can be blind to pointers and not understand them, but they are not as critical as they used to be.  (Dave will now completely duck and hide from all the C++ programmers out there <grin>)

Rick brings up a bunch of excellent points.  I would want to hire developers that learn and have a good understanding of the current ‘landscape’.  I’m not as concerned about ‘cross-platform-ness’ as he is, but my environment where I would be hiring programmers would be a very windows-centric world.  It IS good to know what the differences are, though!

Got to do some ‘fun’ coding today

I like my regular job, but, for the most part, it’s pretty ‘normal’ coding.  Read table, process data, display results.  There is a lot of work that goes into those steps and a the work is fun and interesting, but today I got to do something a little bit unusual.  I consult on the side, and it’s the same thing, just on a different pay scale.

But, today was different.  The person I consult for wanted to be able to fill in a third-party web site with the data he stored in his database.  The third party didn’t have a API or Web Service to do the work, so he wanted a routine to fill in the values on a web page.  Now, I’ve taken a look at this before, and was not too enthusiastic about this task, as my initial thoughts were SendKeys or some sort of letter sender.  He really wanted this, so I started doing some more research. 

I came across an article about how to reference the document through an interface, and actually be able to access the parts of the DOM (I know, this stuff is dead-bang simple to any web programmer, but I *LIKE* heavy client software).  One other problem is that, at the time, the web page would not display the source code.  THAT made things a little more interesting.

It turned out to be fairly easy, but the results were impressive, to say the least.  Now, instead of dragging and dropping the data from a set of fields, the user can press a button and auto fill the page.  It will save a LOT of time for his users.  And, it was kinda fun.

What makes a good programmer…

Lately, I’ve been thinking about what makes a good/bad programmer.  What’s come to light is a programmer’s coding skills may or may not make a good programmer.  What DOES make a good programmer?  Here’s my list of valuable skills:

  • Judgement.  The absolute #1 skill a programmer can have is good judgement.  There is a fine line in software development.  When does tenacity cross over to ‘bloody-mindedness’?  A good developer will chase a problem that needs to be solved, not just the ones that they want to solve.  Plus a good developer knows when to throw in the towel and try a different approach.
  • Attitude.  It’s cliche.  It’s old.  Unfortunately, it’s true.  A developer with a negative attitude can kill development.  I know, I’ve been the negative guy a job or two.  Again, it’s a fine line between addressing potential problems and worrying about the sky falling.
  • Entrepreneurial.  How does this help make a good developer?  Development is about discovery.  A good developer will see a need for something, and take steps to address that need.

I’ll have more later, now I’ve just got to figure out how to live up to my own expectations.

Getting back on track…

Sorry for no post for a while, but things have been a little crazy lately.  Pretty much my life has been sleep, go to work, work, come home, do work at home, read a programming book, repeat ad nauseaum.  A lot of the slowdown has come from having too many subjects that I don’t really want to air out in public.  Some might come up, but most will stay buried.  I’ll see what I can do…

Being reminded of WHY I do all the stuff I do…

Wow, Friday night… where do I begin?  First off, a friend from work had some tickets to see a band at a local club, so I ended up getting to see Collective Soul.  Started the evening with a little snack after work, then we went down to stand in line to get in the club.  After waiting for a half hour to get in, we hung around near the front of the stage.  After some cheezy ‘Las Vegas’ dancers did a number, the opening act came out.  To be honest, I started out going, ‘Get to the main act!’.  These guys quickly won a hostile audience over.  They were good, and they happened to be from Tennessee (my home).  By the end of their set, people had a good vibe going.  Another cheezy dance routine, and then Collective Soul hit the stage.  These guys know how to put on a show!  2 hours of music, and only one or two ‘slow’ spots.  People were dancing from beginning to end.

This DEFINITELY makes me want to start being serious about playing guitar again.

How to fix ‘fail to install registry key’ for ATI Catalyst Drivers and Windows XP 64

I’ve been living on Windows XP 64 for a couple of months now.  I ran into one problem recently that completely baffled my mind.  When installing ATI video drivers, I was getting an error ‘fail to set install registry key’ when trying to install the update.  There is very little info on this problem, and many people are getting upset. 

Turns out, there’s a reason for the failure.  Security and the windows registry do NOT go hand-in-hand.  A registry key gets locked, and the install process cannot overwrite it.  Instant failure.  Now that the problem has been identified, what’s the solution?

  1. Download a program called supershell.
  2. Run the .exe in the zip program.  When you get the command prompt, type Regedit and hit Enter.
  3. Find HKEY_Local_MachineSoftwareWow6432Node.
  4. Delete the keys for ATI.
  5. Reboot the computer and reinstall the drivers.

That should do it!

Did we cross over into an alternate universe?

Wow, what a week! 

First off, Microsoft creates a new standard file format for Office Documents for Office 12.  Plus they are back-porting the format to Office 2000, XP, 2003, and Office for Mac.  Why is this important?  It will become a LOT easier to create office docs without actually needing Office.  I know of MANY uses for this.

Second, Apple will be selling Macs with Intel processors by this time next year.  Ok, this is one of the most stunning decisions ANY computer company has ever done.  This could be either the best or worst decision Apple’s ever made.  I love the idea of being able to run either OSX or Windows on the same box WITH NO EMULATION.

Third, Microsoft announces a release date for Visual Studio 2005.  I know what *I’m* gonna want for x-mas this year.

There’s some more weirdness in my life, but most of it is NOT blog material (yet).

‘Blinking lights influence corporate policy’

It’s funny what can drive policy in any organization.  Today, I was talking with a co-worker about having SQL Server installed on all of the developers local machines.  My question to him was, does SQL Server 2005 have the blinking light service checker program?  His answer was ‘No.’  I said, ‘Good, let’s switch and get everyone going…’

Now, why was that question important, and what is the REAL TOPIC of this article?

I dislike blinking lights.  I don’t know if it is some sort of psychological thing, but I cannot tolerate seeing a visible blinking light for any length of time.  SQL Server 2000 had this great little pinging application to check to see if the Database was still alive.  To show that it was pinging, it would blink a ‘light’ on the icon.  This drove me absolutely up the wall.  I either change the setting to pinging like once every 5 minutes, or I disable the app completely.  Or I don’t install the server portion of SQL Server. 

This was my ‘personal’ policy, which of course will change with 2005 .  BUT, as I sometimes can influence decisions with my development team, I had, ah, resisted supporting attempts to make SQL Server manditory on all of our boxes.  Just because of a stupid, blinking icon.

So, on to the thought of the day…  Corporate policies can have some pretty weird reasons for them being there.

Finally dropping Borland Delphi

Newsgroups that is.  Even though I have switched to C# completely, I was still interested in the ‘goings on’ of Borland, Delphi, and Together for .NET.  A couple of things that have happened to Borland finally pushed me over the edge to dropping even casual interest in their products…

First off, Delphi 2005 patch 3.  Three patches in 6 months?  And it still doesn’t resolve a majority of the issues?  Plus no more patches, as they are already working on 2006?  That is UNACCEPTABLE…  Borland used to have a curse that was ‘avoid the even number releases’.  Delphi 2, 4, 6, and CERTAINLY 8 hit that mark (although 6 wasn’t too bad).  Now, they’ve had two releases in a row that have been disasters.

Second, Together for .NET.  Is ANYBODY actually using this product?  We bought version 2  for our shop, seems decent, but not earth shattering.  Refactoring was the best thing about it, plus it was only ~$150.  BUT, it had some wonderful bugs… There are at least three different versions in the wild (with NO differentation that they exist).  Only one version will load the projects from the other two.  And good luck finding ANYONE who knows what’s different.  So, then Borland releases an ‘update’ called version 3.  It’s supposed to be a fancy ‘bug fix’.  The price jumps from $150 to $1500.  Yes, you read that right a 10x INCREASE in price.  No upgrade option at all.  They didn’t even have the product listed on their site until at least a month after the ‘demo’ was released.

Finally, while working on Delphi 7, I came across a hideous bug… an expression changed its result depending on whether there was an intermediate variable or not.  This was in the ROUNDING code, and could have been anywhere.  I’ve decided to stick my head in the sand on this one…

Sorry Borland.  I was one of the bigger fans of Delphi.  Heck, I went so far as to interview for them several years ago.  I have kicked myself long and hard for turning down a truly wonderful offer that they made.  Maybe it wasn’t such a bad decision after all…

Practice DOESN’T make perfect (perfect practice does)

Note:  The following thought should reside under several of my categories, but I’m aiming it at programming, so it is going there…

I had posted a link to a nice article about how the Pro musicians spend their limited and valuable time practicing.  One thing that positively JUMPED out is one small tidbit… Practice doesn’t make perfect.  Perfect practice makes perfect.  The concept is to instill perfect execution before increasing difficulty, then increasing difficulty, all the while continuing to perform perfectly.  Doctors and airplane pilots are excellent examples of this principle.  You ALWAYS want them to perform perfectly .  Sloppy practice only leads to sloppy execution.

I’ll let everyone in on a little secret… Software development is the same way.  Unfortunately, most books and/or classes do not teach perfect software development.  Few work environments allow for perfect software.  In fact, most books are about how to ‘save’ sloppy projects.  (There certainly are enough projects to make printing these books an EXCELLENT return on investment).  A better way to save a project is to put good practices in place *BEFORE* beginning.

Good software development practices can help accelerate a project.  They can even help kill a bad project before it leaves the gate.  Unfortunately, there is not an easy way to measure how much a practice helps/hurts the bottom line.  Unless one does BAD projects, there’s no way to measure when the GOOD ones happen.

More on this later…

Trying not to turn into a couch potato

This weekend I had a real interesting experience… A co-worker asked if I would hook up her DVD player to her TV.  Me, being ‘Mr. Technology’, gladly accepted the challenge…  And it was a doozie.  The TV only had one plug for a cable connection, and the DVD player didn’t have a cable pass through!  Ack!  One quick run to Radio Shack to purchase a connection kit, and all was well…

During this time, we were discussing past relationships, and she mentioned that her last boyfriend had been a ‘computer guy’.  Unfortunately this was *NOT* said in a positive light.  She basically said that he sat on the couch with the TV remote in one hand, and a mouse in the other.  And, because of this, he’s no longer in the picture.

Later that evening, as *I* sat on my couch watching auto racing, some small facts about that snippet of conversation sunk in.  I started to take a hard look at what I enjoy doing.  And, unfortunately, I realized that I’m falling into the couch potato concept.  I don’t watch TV, but I really like to stretch out on the couch with a book, and my cat curled up in my lap.  If I’m not reading, I’m working on the computer.  Sometimes it’s for work, but mainly it is just a way to waste time.  I have not been practicing guitar much, and I cannot think of things to do that are enjoyable.  Most of my time is spent with my mind at work and trying to solve the day-to-day mysteries.

I’m beginning to realize that I *need* to get out more.  Being single with an apartment, there are few responsibilities that *require* me to get out.  It’s sad when I go play ‘handyman computer/electronics guy’, not because I want the money, but that I want something to do.