Tuesday, May 30, 2006

Buried Treasure

I've long had the feeling that we in the software industry have somehow wandered off the path of true forward progress. Many people, such as Alan Kay, have been voicing similar opinions for a long time now. The paper, Buried Treasures, written by Glenn Vanderburg for the 2006 No Fluff Just Stuff series, does a nice job of pointing out the ideas and technologies that we've somehow misplaced or ignored. Ideas like garbage collection, virtual machines, dynamic typing, deep introspection, and closures, which were all developed in the 1950's, 60's, and early 70's, are finally being accepted again by the mainstream, so there's hope that we may actually start coming up with new ideas in the near future.

BTW, I worked with Glenn on a J2EE implementation back in 2003 (has it been that long?) and quickly learned that he has a lot of interesting things to say. You can sometimes find him speaking at conferences like No Fluff Just Stuff and OOPSLA, so if you get the opportunity, drop in on one of his presentations.

Sunday, April 30, 2006

Keeping up with the Joneses

I was just talking to someone the other day about how hard it is to keep up with all the things that you are "supposed" to know to do our job: numerous web frameworks, database engines, operating system minutia, programming languages, class libraries, and on and on. With new libraries and versions showing up literally every week, it's really hard to keep up, no matter how dedicated you are.

So today, when I ran across Kathy Sierra's blog, "The myth of keeping up", it felt good to know that the problem isn't just me. She lists a few ideas for helping you control your information overload; ideas that I need to try to take to heart. As Kathy suggests saying: I will never keep up, I will never keep up...

Wednesday, January 04, 2006

iPod Video


My wife gave me a video iPod for Christmas; very nice! I tested its video capabilities by ripping my Old School DVD on it using Handbrake Lite (which is two-button-click easy). The video quality is excellent considering that its only got a 2.5 inch screen.

In addition to doing a nice job of displaying videos, the color screen really adds a lot to the feel of the device. It's now practical to load pictures from iPhoto and display them in slide-show mode (along with a soundtrack, of course). In the usual Apple style, it's dead-simple to sync iPhoto albums, address book entries, calendars, music and video onto the iPod. My only problem now is that I wish that I had a newer, faster Mac that could rip DVDs faster :-)

I've loaded the video podcasts of SICP onto it and plan on watching the classes during lunch a few days a week.

Saturday, December 10, 2005

Reddit vs. Lisp

There's been a big discussion on the Lisp world about the Reddit guys dropping Lisp in favor of Python. There has been a variety of reactions from the Lisp crowd, most of which, IMHO, are counter-productive. Responses have included everything from statements of dissapointment to people trying to replicate Reddit in Lisp. I think that the most reasonable response to the situation has been from Dave Roberts.

As someone who is relatively new to Lisp (I used it briefly in school in 1985 and just picked it up again about a year ago) and trying to do something non-trivail with it, I've run into every one of the problems that Dave lists (which I am copying below with a few added comments):
  1. Lisp is a great language. Keep this point in mind. The Reddit developers gave Lisp compliments; they didn't 'diss it. [Lisp has some amazing capabilities. As I spend each day working with Java, I wish that I could replace all that boilerplate code with a nice, clean macro, or be able to easily pass a function into a method.]
  2. Lisp has a balkanized feature set. Some (necessary!) things to build modern applications are not cross-platform. When you have to work on multiple machines and environments, which is more and more the norm these days, there are no open source implementations of Lisp that run across the dominant environments without differences. (CLISP comes the closest, but you may or may not be able to tolerate its GPL license terms.) Because these features are not standardized, you're left writing compatibility layers if you want things to work across platforms.
  3. In particular, networking and threading are problem areas.
  4. Lisp libraries are scant. This is a well known problem in the Lisp community. The standard, basically valid, response is "Jump in and help us write some more libraries." (Kudos to Kenny Tilton for driving this line hard. He's right, but there's also a bit more to it than that.)
  5. The library problems are compounded by the balkanization of feature set. In some cases you can find something that sort of works, but it may work on another implementation, not yours. If it has any dependencies on the problem areas of threads and networking, you've got a long road of tweaking ahead to get it to work. This time is better spent getting on with your real task. [This nicely sums up 2, 3, and 4. There are all kinds of libraries out there, but many times you run into problems getting it to work on your combination of OS and Lisp implementation. It's frustrating to see that someone has taken the time to build some really cool library, but you can't use it. The typical community response is something along the lines of "well, go fix it, or write your own". The problem with this stance is that I chose Lisp because between my work and my family life, I have a very limited amount of time available and need a development environment that gives me maximum productivity. If I put a large amount of my effort toward writing or fixing up libraries, I'll never make any progress on the "real" project. I image that many people feel the same way.]
  6. Edi Weitz (yet again) wins the Lisp Superhero award for creating the best libraries out there, bar none. Seriously, if anybody aspires to create libraries that are well-used, go take some cues from Edi. His code is always high quality, his APIs and implementations are always complete, he's absolutely responsive to problem reports, he provides great documentation, and he often tests his code across multiple implementations, trying to make them as cross-platform as possible. In short, you couldn't expect better service and support from a commercial vendor, and Edi releases his code as open source. [There are several people in the Lisp community that provide excellent libraries and/or guidance, but I am especially indebted to the work that Edi has done (I'm a heavy user of cl-ppcre and lw-add-ons). Thanks to Edi and everyone else that makes my life easier!]
Be sure to read Dave's suggested solutions to these problems; they're right on.

Monday, December 05, 2005

Ruby and Lisp

Random Hacks has a short article comparing Ruby and Lisp. As I've worked with both Ruby and Lisp (and like both), I found the reader comments more interesting than the actual article.

Which language is better arguments aside, I'm just glad that we are approaching the programming language state of the art circa 1973. Maybe now that people are opening their eyes to the possibilities, we can finally start making some forward progress.

Monday, November 21, 2005

Apple iWipe

This is a great use for that old Mac sitting in the attic! Somehow I don't think my wife would appreciate finding this in the bathroom.

How to improve disk I/O performances with VMware Workstation 5

Alessandro Perilli has some good tips for increasing the performance of VMWare workstation. See How to improve disk I/O performances with VMware Workstation 5

Monday, November 14, 2005

Free Oracle Database

Oracle is now offering a beta version of Oracle 10gExpress Edition, which

"...offers application developers, database administrators (DBAs) and students a free starter database to develop and deploy their applications. It is also freely available for independent software vendors (ISVs) and hardware vendors to distribute or embed with their applications and products."

I guess if you really want to use Oracle and/or you can't use an open source solution, such as MySQL or PostgreSQL, then this might be a decent option.

Google Now in the Web Analytics Biz

I'm sure this makes a lot of the web analytics vendors feel a little queasy:

Google Offers Web Analytics for Free

Now if I just had a video iPod...

Getting video onto your iPod

Monday, October 31, 2005

OOPSLA 2005 - Wish I could have gone

Of course, I missed it because I was taking a vacation in Santa Barbara, so I can't exactly complain. Still, there were some interesting talks that I would have liked to attend:

OOPSLA Day 3: Robert Hass on Creativity
OOPSLA Day 3: Sussman on Expressing Poorly-Understood Ideas in Programs
OOPSLA Day 5: Grady Booch on Software Architecture Preservation

Friday, June 03, 2005

Writing Google Desktop Search Plugins

Writing Google Desktop Search Plugins by Jeremy Jones -- Google recently released the source code of Kongulo, a plugin for the Google Desktop Search utility. Kongulo is useful on its own, but it's even better as an example of how to write your own plugins for GDS. Jeremy Jones explores the code and explains how it interacts with GDS.

Wednesday, May 25, 2005

Pro-Mac Rant

I'm very much a Mac fan, so I found the title of this guy's rant pretty eye-catching:
Mad as hell, switching to Mac
Or how about this recent quote from Paul Otellini, CEO of Intel Corp. (from WSJ):
Pressed about security by Mr. Mossberg, Mr. Otellini had a startling confession: He spends an hour a weekend removing spyware from his daughter's computer. And when further pressed about whether a mainstream computer user in search of immediate safety from security woes ought to buy Apple Computer Inc.'s Macintosh instead of a Wintel PC, he said, "If you want to fix it tomorrow, maybe you should buy something else."

Why you need to go to a skateboard shop

From Creating Passionate Users:
If you're a programmer, attorney, teacher, chef, preacher, marketer, whatever--you can't ignore the crucial importance of design, especially today. And one of the best places to find it is... the nearest skateboard shop...

Distributed Development == Shitty Results

Some interesting comments on outsourcing from Cote:

From "Who Benefits from Outsourcing? Not the Line of Business":

The Deloitte study also debunked several other oft-claimed benefits of outsourcing. For example, proponents frequently claim that outsourcing can free up internal company staff to focus on projects that deliver more business bang-for-the-buck; for a majority of respondents (57 percent), this wasn't the case. In fact, because of the increased management overhead associated with the outsourcing model, many companies said this was impossible.

This is far from surprising to most IT pros, of course.

"This project [I'm now on] has been joked about for staying mainframe, but the cost savings over implementing this in 'newer technology' will be in the tens of millions of dollars," says Cave. "If it were the outsourcers alone, they would probably just do as desired by upper management and build a whole new subsystem. But once [management] was presented [with the cost estimates], they realized that the numbers don't lie."

I haven't posted about offshoring/outsourcing in awhile. Whether your outsourcing to another campus in your own company or to a different company across the globe, we've known for years that distributed development and IT-work makes things more difficult, slow, and costly.

If your people aren't in the same room, or barring that, the same floor in the same building, you won't be as productive as possible, nor make as much money as possible. (Granted, if you have a bunch of those Hero-monk types, they might need their own office and 7 months on a steady diet of flat-foods.) You'll end up with some horribly distributed monstrosity, whose parts will barely be able to talk or work with each other. Just like your people, all spread out across the world.

This is a fact of programming and IT. End of story.

(If you can figure out how to get around this fact, there's vaults of gold waiting for you.)