Eric Sink posted an article bemoaning the current state of the web. In his footnotes is this observation:

I think we need to stop saying that the spammers only continue because they make money doing it. Virus writers don’t make money. They write viruses simply for the joy of causing harm to others. I don’t see much reason to believe that spam would stop if the financial incentive were magically removed somehow.

I agree with him. The idea that spammers will quit if they can’t find any more suckers is yet another piece of conventional wisdom I get tired of hearing. I also think it’s fairly useless to talk about something that’s not going to happen. As long as there are people, there will always be people getting suckered into making bad decisions. It’s human nature.

No longer am I going to cringe every time I hear the word “enterprise”.

Before looking it up, enterprise to me meant “big” or “expensive”, as in Visual Studio Enterprise Edition.

But today after wondering what kind of a software developer people are looking for when they use the word “enterprise”, I had a look in the dictionary. The fourth meaning in The American Heritage Dictionary’s definition is:

Willingness to undertake new ventures; initiative

This is a great quality to have, on both the large scale and the small scale.

I found a good example today of large-scale enterprise today, from the Daily Sun’s (Flagstaff’s local newspaper) revamped online job listings. A year ago, they were using their own setup. It worked, but had poor search functionality and a clunky UI. Now they’re simply linking to a customized portal by They have their logo up there, some generic graphics, and a website that works well. I applaud the developers of this software for seeing the problem the newspapers had and coming up with a elegant solution.

A good example of small-scale enterprise might be taking on a project to document or refactor some code, or implementing one of the things on The Joel Test.

Now when I hear people talking enterprise, I’ll give them the benefit of the doubt and listen to what they say, in hopes that they’re talking about true initiative, and not just trying to sound big.

I’ve been using Gmail lately. Overall it’s a great user experience, but two kinds of windows popping up annoy me.

First, why do links in the message body pop up in new windows, and why is there no way to change that?

Second, why use old-fashioned question popups for “there is no subject, are you sure?” messages? I’ve seen some cross-browser javascript for modal boxes in front of a page that seems to work fine. And unlike the standard popups, they aren’t modal across the tabs, only modal across the browser page.

I think there’s a geek consensus about the annoyingness of pop-up windows. Why is Google going with the stuffy, professional way of doing things?

Right now I’m reading David Heinemeier Hansson’s Blog back to front, and it got me thinking:

It’s a common practice to close down blog comments after a certain amount of time, especially on popular sites. I noticed that DHH’s site still allows people to enter a comment and press submit, even on the oldest entries. I think it’s a good idea to encourage commenting on old posts, because someone who’s reading an old post might have some insight about it. But on the other hand, people just aren’t going to notice comments from an old post.

My idea is that after a month, instead of allowing someone to add to the old post, or just saying “comments are closed”, the old post should have a form for e-mailing the author. It could say something like this before the form:

The time has expired to leave comments on this page. However, you can still fill out a comment form and your comment will be sent to me via e-mail (with an automatic link to this post). It may even inspire a new blog entry!

I’m going to implement this for my blog after I change my blog engine (I’m planning to either grow my own in Ruby or move to Typo), but if you like this idea, feel free to implement it yourself.

Also, thank you elzr for giving me the idea to read DHH’s blog back to front.

Olifante posted instructions for setting up TextMate to edit TextArea’s in Firefox using the recently updated Mozex Extension.

This is a huge improvement. I was already doing the same thing much of the time by copying and pasting. I heard about the extension and thought about what it would take to get it working well with the latest versions of Firefox and everything myself, but was glad to see that I don’t have to – the author made the necessary improvements. Great work, Vladimir Marek!

With extensions like these, Firefox beats Safari and Camino by leaps and bounds (It’s the Ecosystem, Stupid!).

Gliffy Screenshot

Gliffy is a pre-launch startup, which makes a program for collaborative drawing. I signed up for the beta a few weeks ago, and just got invited today.

While I haven’t tried out the collaboration feature, I am pretty impressed by the program overall. First, I was surprised that it actually worked, until I found out it was written in Flash (after which the only surprise was that copy and pasting text worked). I am also impressed by the use of screen real estate. All of the features needed to do a drawing are given space, and it is much less cluttered than Microsoft Office (don’t even get me started on Office 2007 or Windows Vista). Another thing that impresses me is the versioning system built into it.

I think with the new crop of office applications, including those from 37 Signals, and a web app to tie them together that hasn’t been invented yet, we could start to see a shift from desktop office applications to the web in half a decade or so.

I’m going to L. A. this weekend. Instead of comparison-shopping for airline tickets, I just went to and booked my flight.

I’m not going to fly United or Delta or anyone who has gone bankrupt and continued to fly (and incur more losses) or anyone who’s received corporate welfare. This is for the simple reason that I’m not going to pay twice for my travel – first in tickets, then in taxes (or national debt, if you prefer to look at it that way) and in the strain on the economy caused by bankruptcy.

The trip should be interesting. The only times I’ve been to the L. A. area, I’ve either gone with family or just drove through. During the family vacations we were either in Anaheim, Valencia, or Dana Point. This time I’m going to stay with a friend at Thousand Oaks, and probably explore the areas south and west of there. I also want to go to Chinatown for dinner. It’s a goal of mine to go to all of the Chinatowns in major cities in the U. S. I told this to a friend, who asked if I knew Chinese. I sure don’t, but maybe I’ll learn a little. :)

Update: Southwest sure isn’t as fun to fly as JetBlue. In fact, in one way it’s worse than the (other?) big companies created by mergers. The seating is not reserved beforehand. On the other hand, I did help a person out with a spreadsheet on the way back and we had a good conversation. So it evened out.

JetBlue has a great website. It’s very usable, and has a nice picture where you can choose where to sit, that really beats the other airlines. Also, all of its planes are relatively new, which is nice, IMO.

Another update: The verdict is still out on whether I prefer reserved or open seating. The reason I didn’t get a good seat was that I reserved late on a holiday weekend. If I had been able to pick my seat in a web app I would have seen that all of the good seats were occupied.

I got linked to an MSDN blog and noticed that the URL was I don’t think that this is the actual folder structure on the server’s filesystem. I think it’s just what gets passed on to a script, that determines what content is being requested, and generates that content.

The “.aspx” must be deliberate. I think it’s an advertisement to anyone who programs computers that the website uses XML-based ASP (Active Server Pages, a Microsoft technology).

I think that this is pretty silly, because the extensions in the URLs are extra typing, are incorrect after switching languages, and don’t make things any easier for developers that are using URL dispatchers.

On the other hand, I think it’s a pretty slick move by Microsoft, and in some way I wouldn’t mind seeing it countered by Java, Python, and Ruby programmers.

Any thoughts?

Over the last couple of weeks, I’ve been trying to code up a news aggregator that works the way I want it to. That meant I had to decide what I was going to use to develop it.

I thought about what I like, and read about a few different web application frameworks. A few things I was thinking when I chose to give Django a try:

  • I prefer liberal open source licenses (MIT, BSD) to copyleft ones (GPL).
  • I want Python or Ruby. Of the two, I prefer Python because it has less syntax and more libraries coded for it.
  • I like PostgreSQL. It has some cool extension libraries (for mapping and other domains) and a liberal license.
  • I want something that’s proven
  • I want something that is very actively being worked on
  • Not having to write any SQL at all for simple sites is a plus.

I thought about, Rails, Turbogears, and Django. I also thought about Python servlets or writing my own framework.

Things that impress me about Django, besides meeting my above criteria:

  • The template system. It has its own template system that supports “Template Inheritance”, which is a very neat concept. It also plays well with Dreamweaver, they say. I haven’t used Dreamweaver so I’m unable to confirm that.
  • The admin interface. It’s a bunch of code that comes with Django to provide a nice admin screen. In the program I’m making, if feeds become corrupted I could go into the admin and fix them. Or I could just have a good look at the data
  • The configuration files, including regular expressions for URLs.

I set to work installing it, and decided to document how I did it in a Wiki. For this, I installed Instiki, which is an impressive program. One thing I like about it is the fact that it supports three different wiki languages. I chose Markdown, which is not the default. I expected that since it was not the default, the support would be very rudimentary. I was pleasantly surprised! It’s supported and documented every bit as well as TextPattern, including a quick reference on the side of the editing pages.

After I figured out how to get a kick-ass Django development installation on my iBook, I decided to share my knowledge with others. The best place to post the information, I determined, was on the Django wiki. The wiki, as it turns out, is powered by Trac. It has its own wiki syntax that is similar to wikipedia.

After a search for translation tools, I started manually converting what I’d written to Trac’s wiki format. This was tedious, so I wrote a script to help out. After that I searched around a bit more, and found that Aaron Swartz wrote an html2text that converts from HTML to markdown syntax. What a great idea! First, Markdown looks good in plain text format, since it was designed to use the same idioms that people use when sending plain text e-mails. Second, it can be used to go from any wiki format to Markdown. This is because in order to display pages wikis convert from plain text to html. So all you have to do is go into view source in any wiki, copy the segment of the wiki you want, paste it into a text editor, save it, and run Swartz’s html2text on it, and voila, you have converted from that wiki format to Markdown.

If I get around to writing a serious tool to help me translate from Markdown to Trac, instead of just writing something to go between the formats, I’ll write a script to convert from HTML to the Trac wiki syntax.

I just got done reading a great article called HOWTO: Be more productive on Aaron Swartz: The Weblog. One part I found interesting:

Time when you’re hungry or tired or twitchy is low-quality time. Improving it is simple: eat, sleep, and exercise.

If you’re not exercising, I’d like to encourage you to start again. Please feel free to encourage me next time I forget that exercising actually makes me more likely to get other things done.

A couple of months ago I bought an iBook. The idea was to get a laptop with good battery life and to try out Mac OS X. I’ve used it for a while, and decided that I prefer Linux.

The current version of iTunes is the best example I can think of to show what bugs me about Mac OS X, as a platform. iTunes does a ton of things now – music, video, shopping, downloading, burning, and podcasts. I don’t think it is possible for a single application to do all of those things the “best” way. For one thing, what’s best depends on the person. Another thing is that some applications just don’t go so well together – like music listening and podcasts. When I’m browsing and listening to my music I don’t want to see my podcasts in my library with the music. Another thing is music and video.

I prefer to have a bunch of small applications that I can pick and choose from. And this extends to other parts of the OS. Especially desktop managers.

I’ve read several well-written negative reviews of Mac OS X. I found one today called How MacOS X sucks.

Finally, I’ll mention how I’m doing the switch. I like the ability to run all major OS’s, for testing, so I’m not getting rid of OS X entirely. But I want it off the laptop I use every day. So I’m going to get an external drive, install Mac OS X on it, and boot from the external drive when I want to use Mac OS X. But I’ll stick to Linux for programming.

Update: I changed my mind about installing Linux on my iBook. It’s a hassle, and I thought of a number of good things about Mac OS X that I previously had not considered. Also, I re-read that link, and realized that a number of the problems have been fixed, or aren’t real problems. Finally, I’m removing the text suggesting reading it for insights into software design – it really has nothing to do with the subject. It’s a rant.

I just thought I’d share this thing I noticed with anyone from Startup School who might still be reading my blog.

After Startup School for Hackers there was an Open House at Y Combinator, a unique Venture Capitalist firm started by Paul Graham and others. I might apply for funding for their 2005 summer founders program. Y Combinator’s office was in a home-type building in a neighborhood in Cambridge. They’re moving to Silicon Valley for the winter, though.

A punch of the address to google maps reveals that in Silicon Valley they’ll be using a traditional office building.