The Wisdom of Programming Quotes

I love good programming quotes. The best ones say something true about the craft of programming, usually both concisely and humorously. Recently I started following Programming Wisdom on Twitter. It’s been a source of many great quotes, but occasionally I have seen quotes that I think completely misunderstand the essence of programming. Here are three examples: Continue reading

Ph.D. or Professional Programmer?

When I graduated from university with a degree in Computer Science, I wanted to continue and get a Ph.D. But I also wanted to work as a software developer, so I worked for five years in industry before going back to do a Ph.D. I spent one year as a Ph.D. student before deciding that I liked professional software development better. Even though this was many years ago, I think some of the lessons I learnt still apply. Continue reading

Social Engineering from Kevin Mitnick

GitWI recently finished reading Ghost in the Wires by Kevin Mitnick. It is the story of Mitnick’s hacking career, from the start in his teens, through becoming the FBI’s most wanted hacker, to spending years in jail before finally being released. It’s a fascinating book that at times reads like a thriller. One of the things that struck me when reading it was how often he used social engineering to gain access to systems. Here are three examples of what he did, and what we can learn from them. Continue reading

Recruiting Software Developers – Initial Contact

I regularly get emails from recruiters trying to get me to change jobs. Unfortunately, many of the emails are not very good, wasting my and the recruiters’ time. So here are 5 tips for recruiters on how to write a good email, as well as some advice for developers. Continue reading

Coursera Course Review: Software Security

I just finished taking the course Software Security from the University of Maryland via Coursera. It was a relatively easy course (at least if you know C) that gave an overview of the following areas: buffer overflows and other memory attacks, web security (including SQL injection, CSRF and XSS), secure design, static analysis, symbolic execution, fuzzing and penetration testing. The instructor, professor Michael Hicks, was one of the more pedagogical lecturers I have listened to, and the whole course was quite enjoyable. Continue reading

Lessons Learned in Software Development

Here is my list of heuristics and rules of thumb for software development that I have found useful over the years:

Programming bookshelf



1. Start small, then extend. Whether creating a new system, or adding a feature to an existing system, I always start by making a very simple version with almost none of the required functionality. Then I extend the solution step by step, until it does what it is supposed to. I have never been able to plan everything out in detail from the beginning. Instead, I learn as I go along, and this newly discovered information gets used in the solution.

I like this quote from John Gall:  “A complex system that works is invariably found to have evolved from a simple system that worked.”

Continue reading

Book Review: Clean Code

I finally got around to reading Clean Code by Robert C. Martin (Uncle Bob). It is often high on lists of the best books for software development, and for good reason. Clean Code is an excellent book that all programmers should read. Here is what I liked and didn’t like about it. Continue reading