Fixing Computer Science

I’ve been reading a lot of complaints about the current state of computer science education lately.  This post makes a reasonable attempt at summarizing the different ideas around what sort of graduates these programs should produce.  I’ve been in industry long enough that my CS program hadn’t switched to using Java as the initial language when I started.  I agree with Brian Hurt and Chris Cummer about the value of a computer science degree.

The right courses in a CS degree amount to a toolbox of concepts that you can use to solve whatever real-world problem you’re facing.  The most recent example of this happened on the job.  We had an issue where some text files being downloaded for storage in a database kept causing failures in a process.  Because of how the process was implemented, there was no way to pin the cause of a failure on a particular line of the file.  The files in question are regularly more than a gigabyte in size, so manual inspection wasn’t an option.  The minimal understanding I have of how compilers work enabled me to direct my staff to build a parser, so we could validate the input file before running the process against it.  Without a CS background, it’s highly likely that I don’t come up with a solution at all (or a really bad implementation of a parser).

If I had it to do over again, I would have spent more time in my CS program getting better depth in compilers, operating systems, and other areas.

Computer science isn’t perfect, but it’s relatively young as a field compared to disciplines like law or medicine.  There are probably things that should be changed, but I think the fundamentals are good.

Apple Stuff

iPod nano

The iPod I mentioned yesterday is the 4th (!) one I’ve owned. Each of the previous ones was sold to help fund the upgrade to the next one. I love this one even more than all the previous ones because it handles video.  The video is watchable, even at that size.  The nano makes great use of the screen when it isn’t playing video too.  The earbuds that came with this one are better than the previous ones, but I’m still going to buy a better set.

Thoughts on MacWorld

The most important product announced there isn’t MacBook Air–it’s Time Capsule.  I think far more people will find a use for wireless drive backup than they will for a really thin laptop.  Because Time Capsule also works as a router and can share a USB device (or devices if you plug in USB hub), you could conceivably share even more hard drive space and a printer to every machine on your wireless network.  As far as I can tell, Time Capsule provides more capabilities than Mirra Personal Server (a comparable backup/Internet access product) at a lower price ($300 for the 500GB version) in a much smaller form factor.  After a copy of Leopard, I think a Time Capsule will be my next purchase from Apple.


I turned 34 today. I suppose I’m officially in my “mid-30s” instead of my early 30s now. Other than that, it doesn’t seem different at all from any of my other post-30 birthdays.

I did pick up a new toy for my birthday–an 8GB iPod nano.

The trouble with using strongly-typed datasets

Apparently, if your database-driven website is under heavy concurrent user load, the  Adapter.Fill method in the .NET Framework (called by code generated by the XSD in Visual Studio) begins to fail because it doesn’t close connections properly.

The next time I need a data access layer for anything of substance, strongly-typed datasets are off the list.

Welcome to 2008

If a single word could define my 2007, it would be “travel”.  I suspect it’s the biggest reason I enjoyed the year.  The places I had the chance to visit include:

  • San Jose, CA
  • San Francisco, CA
  • Portland, OR
  • Seattle, WA
  • Vancouver, BC (Canada)
  • Orlando, FL
  • Dallas, TX

There were a couple of short road trips to Pennsylvania as well.

Looking back at the five things I wanted to accomplish this year, I finished two: taking two full weeks off, and forming an LLC.  The latter should play a large part in what 2008 will be like for me.  The three things I didn’t accomplish last year go back on the list for this year:

  • Learn a new programming language/product. I ended doing nothing at all with Eiffel last year.  This year, particularly with the LLC, I’ve been thinking about specializing in a product.  When I worked for Lockheed-Martin, I specialized in the customization of Community Server.  I’ll either go back to that, or look at a technology from Microsoft (BizTalk, SharePoint, etc).  If I learn another programming language, it will probably be something like Python.
  • Re-learn the piano. I hardly played at all last year.  I’m glad my ability to read music hasn’t disappeared.  I’m not sure what it will take to get me practicing regularly again, but I’ll figure something out.
  • Study the Bible more regularly. I’ve started using online devotionals and religious podcasts to jump-start this.

One brand-new goal for this year is to increase my involvement in software development training.  Last year, I started an informal learning lunch program at work.  My original intent was to give the consultants that work for us multiple opportunities to transfer their knowledge to our permanent staff.  I ended up preparing and presenting on a wide variety of topics myself.  The program has been very well-received by the staff, and I’ve enjoyed assembling and giving presentations on best practices and technologies.  At the suggestion of friends & family, I’ve decided to pursue part-time openings as a technology instructor.  I’m scheduled to interview with a local community college for an adjunct position this month.  It will be the first work I do for my LLC if I’m accepted.