How to Beat Programmer’s Block

My own experiences programming are as a self-employed, generally self-motivated coder, designing software I want to design. If you are an employee writing code implementing someone else’s specifications, this may not be helpful.

For me, programming is usually a creative process. Unless I am fixing small bugs or making minor tweaks, writing software is no different from writing a story, a song, a poem, or drawing a picture. It is an abstract process by which I turn general ideas into something that doesn’t quite approach a true language. There is a purely creative process: coming up with ideas to implement. And there is a less creative, but often just as abstract a process: turning those ideas into little processes that a compiler can understand.

Since writing code is so much like writing anything else, a programmer is prone to “programmer’s block” just as an author of a novel can be afflicted with writer’s block.

Beating programmer’s block while simultaneously staying productive is something easily done as long as you keep these things in mind:

  • When you’re stuck, do something else.
  • It’s easy to do something else if you have more than one project.

It’s really that simple, at least for me. At any given time I have at least a half-dozen “things” I can do that constitute productive behavior.  If I experience programmer’s block when developing one application, I have several others I can go work on for a while. Or, I can write a blog entry or even read a business-related book.

The key is to have more than one thing to do at any given time, so that when project A gets stuck, you can go work on project B for a while.  It’s not hard. And for me, the goal is to take a break without becomming idle.  Sure, vacations and long-term breaks have their place, but with all those people on welfare counting on my taxes, I just can’t relax when I am truly doing nothing so I always have something else I can do when I hit a wall.

Software Has Limits

As I write this, somewhere around 8,000 people are stuck in LAX waiting to go through customs because of a computer glitch.

Frankly, I am amazed this doesn’t happen more often. This reminds me of a book I recently read called The Limits of Software. Anyone who is curious about why computers and software so frequently don’t work properly would benefit from reading it.

The Limits of Software is a sort of docu-drama in book form about the massive failed attempt at upgrading the Federal Aviation Administration’s ancient computer systems. The event is a case-study proving that all the money in the world can’t make the impossible happen. But since the government can just spend, spend, spend, they sure did give the impossible a try. I highly recommend this book for programmers or anyone who wants to understand what kind of problems programmers are always trying to solve.

What it all boils down to is that software is a means of describing abstract human thought for computers to understand and implement in reality. It will never be perfect.

No consolation for the 8,000 poor folks stranded in LAX, I know.

Implementing a Partial Serial Number Verification System in Delphi

Most micro-ISVs use a serial number/registration code system to allow end users to unlock or activate their purchase.  The problem most of us have run into is that a few days or weeks after our software is released, someone has developed a keygen, a crack, or has leaked a serial number across the internet.

There are several possible solutions to this problem. You could license a system like Armadillo/Software Passport or ASProtect, or you could distribute a separate full version as a download for your paying customers. Each option has advantages and disadvantages. What I am going to show you is a way to keep “rolling your own” license key system while making working cracks harder for crackers to produce, and working keygens a thing of the past.

Continue reading Implementing a Partial Serial Number Verification System in Delphi

How to get super rich and never have to work again

(Well, not really. Keep in mind that you’re reading a post by someone who is not rich and works like a dog almost every day.)

Here’s an interesting book if you’re curious about how successful technology companies get started: Founders at Work: Stories of Startups’ Early Days by Jessica Livingston.

Founders at Work is a collection of interviews with 32 people who started, or helped start, super-successful companies like Adobe, TiVo, Blogger, Yahoo!, and more. It also includes interviews with people who founded not-very-successful-but-made-the-founders-super-rich companies, like Hotmail and Lycos. (Yes, I know, some people will disagree with me about those companies not being successful. Hotmail has had serious problems, and I think Lycos’ domain name expired yesterday. Just be glad I didn’t put Apple on that list!)

These types of books always interest me, because I am one of those individualist entrepreneur types. I don’t ever expect to “hit it big,” because my focus is always on narrow niches, but it’s still fun to read about people who, often enough, created extremely successful businesses without really trying to.

For example, PayPal began as a PDA application and initially told customers they didn’t want it to be used to pay for auctions. They eventually abandoned the initial goals of PayPal and now everybody uses it to pay for auctions.

Then there are the companies that almost collapse under their own initial success, like Blogger. Prya Labs didn’t set out to create a new “sphere” (as in blogo-), but when it did, had lots of users and no way to make any money off them. They had to lay off practically the entire company and run on fumes until someone with lots of money (Google) came in and made the one guy who stuck around super wealthy.

There are, of course, several companies represented in the book who did exactly what they set out to do. But that’s boring.

And there’s the occasional founder who was so wrapped up in what was happening to him that he doesn’t know what was going on around him: like Steve Wozniak (aka the Woz) who is still convinced that the Apple II set all sorts of records that it didn’t, and thinks Commodore passed on acquiring Apple when in fact Steve Jobs tried to push Jack Tramiel too hard and lost the chance. But I digress.

I can certainly recommend reading this book. At the very least, you’ll learn that nobody ever got rich because of a book or blog post they read, and most of the ones who do get rich don’t stop working after their bank accounts overflow.

Software Industry Conference 2007 Mini-Review

Last week, we packed up the family and drove to Denver for SIC 2007. The Software Industry Conference is an annual conference geared towards independent software developers and vendors.

As usual, there were some very helpful sessions. Dave Collins and Thomas Wetzel convinced me to give Google AdWords yet another try with their insights. There were several sessions about blogging, newsletters, and podcasting as marketing vehicles, with Bob Walsh, Phil Schnyder, and Michael Lehman making several appearances on these topics. Nick Bradbury, author of the excellent TopStyle, had a great presentation on effective user interface design and the difficulties of keeping software simple while still satisfying the needs of power users.

David Intersimone of CodeGear had a session on native code development. I have to say I was a bit disappointed that he didn’t make more of a pitch for using Delphi. He showed off some of Delphi’s features, but his session seemed to be more of an overview of the development options for Windows, rather than one really driving home the benefits of native code development with Delphi. But it was great to see CodeGear at SIC, because it shows that they understand the importance of reaching out to independent developers rather than just focusing on enterprise customers like Borland has been doing for the last several years. Spending time talking with David was a highlight of the conference for me.

There are plenty of sessions I didn’t mention simply because there are too many for one person to attend.

SIC isn’t just about sessions, it’s also about networking and schmoozing.  It’s nice to have an opportunity to spend time with people in the same industry, as being an independent software developer often means spending your days behind a computer without “realspace” interaction with your colleagues. I had a great time meeting new people, and especially catching up with people I’ve met at previous conferences.

Industry Awards at SIC

The Shareware Industry Awards Foundation presents several awards each year at SIC during an awards banquet. Last year, my wife and I attended the banquet and decided that we could save some money by skipping it the next time and eating out at a restaurant instead. So this year, a group of us drove out to Ruth’s Chris Steakhouse where we enjoyed some good steak and excellent company.

Upon our return, I was informed that I missed my own award presentation! I didn’t believe it at first, because I assumed Bible Software was too much of a niche market to even put me in the running. But nobody was pulling my leg — SwordSearcher received the People’s Choice Award for the Hobby & Personal Interest category. I was stunned — I didn’t ask anyone to vote for me, I didn’t mention it in a single newsletter. I didn’t even vote for myself! The People’s Choice Awards are voted on by thousands of people across the internet on major websites like CNet, Tucows, and PC World. So that was exciting.

SwordSearcher People's Choice AwardHere’s a picture of the award. It’s much heavier than it looks and takes up a good deal of space on a shelf. Always thinking about getting the word out, I promptly wrote a press release announcing the award.

A big thank-you to the folks who put on the conference. I hope to be able to attend again next year in Boston.