Last update: 2003-12-20
- Fixed several typos
- Added personal links at the very bottom of the page
Table of ContentsSoftware Development
- Extreme Programming
- Agile Development
- Software Quality
- Ruby Language
- Other Technical
- Politics of Technology
- Recommended Reading
Extreme Programming (XP)
- XP FAQ, by John Brewer. This is a good overview of XP, covering the basics and giving some good links.
- What is XP?, by Ron Jeffries, one of the true gurus of XP, this describes the most up-to-date thinking about what XP really is. Note that he names a few practices differently from the original "white book".
- Diamond Sky's Quick Guide to XP, which is a very nice introduction. It describes some of the business benefits of XP.
- ExtremeProgramming.org, a "gentle introduction" to XP is great for browsing. Sometimes I find the navigation a bit frustrating. It has some nice diagrams.
- XP 123, William Wake's great site. His XP on one page (PDF) seems cluttered and confusing to me, but the bottom panel about programming is pretty good.
- RoleModel Software, an XP-oriented consulting compay. This site has several great pages, including XP Distilled, and Rules of XP. I am somewhat bothered by their use of Christian symbols, and by how much they bring religion into their business. However, I was very pleased that their excellent book, Extreme Programming Applied was virtually religion-free.
- Extreme Programming Yahoo Group is the big XP mailing list (over 4000 members). High traffic--often 100+ messages per day. Usually has a high signal-to-noise ratio, but it varies from week to week.
- Ward's Wiki, an interactive site. It's kind of like a bulletin board, but more free-form. It can be confusing at first, and I find it difficult to remember what I've already seen and what I haven't. But there's some excellent information here.
- A Critique of XP. I don't really agree with the author, but this article at least appears to be a reasonably balanced examination of XP. There are several essays on the web criticizing XP, but I haven't found any that are useful. XP does have problems and weaknesses, but most attacks ignore the valid concerns and instead offer weak, emotional arguments.
- The principles behind the Agile Manifesto pretty well sum up my beliefs about software development. For more information, check out the Agile Alliance.
- Martin Fowler has written some great stuff. Besides his book "Refactoring", he has posted a some excellent articles on the web, including The New Methodology (a great introduction to Agile methodologies), and Is Design Dead?. These are great for people who are skeptical about agile/extreme programming, as well as those who are just gathering information about them.
- The official Refactoring web site.
- This essay by Jack W. Reeves titled What is Software Design? was written back in 1992, and foreshadows the whole agile software development approach. He suggests that programming is a craft, explains why it makes sense to evolve a design over the life of a project, and how testing is part of the design process. If the article were written today, it would be good. That it was written ten years ago makes it amazing.
- An interesting essay comparing programming to poetry. It is pretty much in tune with the agile movement.
- QualityCode.com (this site).
- Pragmatic Programmer site. These guys share true wisdom. The site includes a nutshell summary of the key points in the book. If you haven't already read their book, go read it now!
- Many experienced programmers are realizing that the "safety" of static variable type checking is not really an advantage, and that dynamic languages are far more productive in the long run. This essay by Bruce Eckel describes his realization. Robert Martin came to a similar conclusion. This essay by Tim Bray covers similar ground, finishing with a discussion of Java exceptions.
- Open Source and Code Quality, a short essay describing why open source can lead to higher quality code. (It doesn't always!)
- Good essays about software engineering, from some of the folks behind the Multics operating system.
- Joel on Software. Even though much of the development-specific content is non-XP, it's still fun to read. And if you're not trying to do XP, that same content is excellent. The non-development-specific essays range from slightly kooky to absolutely brilliant. Do yourself a favor, and spend a few hours reading most or all of the essays. You'll learn a lot.
- Eric Raymond's writings. I particularly like "The Art of Unix Programming".
- Excellent paper describing how to write programs that are secure. Mostly for Linux, but includes good information for all platforms, plus Java.
- JLint, a tool that checks Java code for "bugs, inconsistencies, and synchronization problems". I haven't tried it, but it was highly recommended by someone on the XP list.
- A list of programming "gotchas", written by Steve Dewhurst.
- A while ago on the XP mailing list (Yahoo Group), there was a discussion of whether or not it made sense to use cppunit as a unit test framework. The consensus answer seems to be "no", and this message has a simple alternative implementation. I haven't tried it yet, but plan to on my next C++ project.
- StickyMinds has a very large collection of articles related to software quality and testing. I'm not sure how to filter it to get to the really good stuff, but it looks like a good resource.
- satisfice.com seems to have some pretty good ideas on testing. They seem to take a more agile (people oriented) approach.
- This article describes Attack Trees, a powerful tool to help enumerate and triage security risks for a software (or other) project.
- Ruby-lang.org, the official Ruby language site.
- RubyGarden.com, Ruby news and discussions. Includes a wiki.
- RubyCentral.com, a nice portal.
- Ruby language quick reference guide. Really neat-o!
- wxRuby, a free software library I'm working on that allows ruby programs to use the wxWindows GUI toolkit, which allows you to develop cross-platform (MS Win, Linux, Mac) apps using native widgets. Native widgets are important to provide accessibility for people with disabilities, and to get a look and feel that exactly matches other apps on that system.
Other Technical Sites:
- AmbySoft, Scott Ambler's site. Scott has made the transition from model-driven development to what he calls "Agile Modeling". I'm not sure it's as agile as I would like, but it's definitely a better approach to modeling than most.
- Technical FAQ for Linux, by IBM, targeted at Windows users. It's a 50 page (wow!) PDF file (ugh!).
- A list of Programming Contests. These can be a great source of little, solvable programming problems with which you can experiment with TestFirstDesign and other tools or techniques.
- Diceware, a site that helps you create secure passwords by rolling dice.
- Passphrase FAQ also by Diceware. Everything you ever wanted to know about creating passwords (and more).
- The BrainF*** language, which is about the simplest computer language ever. It's more of a mind experiment than anything else. Sort of like a modern Turing machine. If you are offended by the "F-word", don't go to this site!
- SCID essay, which describes one possible future of software development environments. A few years ago, it would have seemed far-fetched. But I am using eclipse at work, and it already has several of the proposed features.
- Jack Crenshaw's outstanding tutorial series: "Let's Build a Compiler". This fifteen part tutorial is amazing on several levels. First, it teaches you how to build your own compiler and interpreter. Second, it teaches you about compilers and interpreters. Third, he uses a very agile development method--in fact, it is surprisingly similar to Extreme Programming, but was started back in 1988. He relies heavily on simplicity, YAGNI (by a different name), refactoring, and highly iterative development. Highly recommended!
Politics of Technology:
- EFF (Electronic Frontier Foundation). The most visible group promoting the liberty of the internet and other technologies. Please join me in supporting them.
- Another big threat to Free Software is the so-called "Trusted Computing" initiative being pushed by the large media corporations and Microsoft. If it becomes required by law (as has already been proposed in the US), it would outlaw GNU/Linux. Here is a good essay by Richard Stallman titled "Can you trust your computer?" Also, be sure to see this page covering TCPA / Palladium Frequently Asked Questions.
- SincerceChoice.org, a wonderful counterpoint to Microsoft's self-serving campaign against governments growing fondness for open source.
- Free(d) Dmitry Skylarov. A programmer (and father of two small children) wrote a program that was legal in his own country, and which has many legal uses even in the USA, including providing blind people with reasonable access to electronic books. He came to the USA to speak at a conference, was arrested, and held in jail for weeks. After being released on bail, he was detained in this country for five months. Scary stuff.
- Burn your GIF files!. The GIF file format relies on a patent (not yet expired in all countries) that was not enforced until after GIF became a very popular "standard" graphics format. Using GIF files implies that you support software patents, and gives the patent holders more power. Instead, use JPEG or PNG format for your images and pictures.
- Boycott Amazon. Their stupid "one-click" patent is reason enough. Go ahead and use their website to look at user reviews and get information about books... but then go buy the book somewhere else.
- Creative Commons is a new organization trying to bring sanity back to the world of copyrights.
- League for Programming Freedom, a site opposed to software patents (and user interface copyrights). I believe patents are one of the biggest threats to free software development, which means they are a serious threat to the ability of individual developers to improve their skills, and to contribute to the community.
Recommended Reading for Software Development:
- Extreme Programming Applied, by Ken Auer and Roy Miller. Probably my favorite XP book. It has more practical advice than the white book. They identify which of the 12 XP practices are mostimportant to start with: Planning Game, Small Releases, Test-first (unittesting), Pair programming, Refactoring, and Continuous integration. They claim the other practices can be added as needed, but that by doing at least these six, the project will get enough XP benefits to have initial success. This is the "purple book". Also see my mini-review.
- Extreme Programming Explained, by Kent Beck. The original book about XP, and still classic. It is a very easy read that provides much of the theory behind XP. People who read it tend to either think "Yes, of course!" or "That's insane!" It's often referred to as the "white book". See my mini-review.
- Planning Extreme Programming, Kent Beck and Martin Fowler. This is the "dark green" book, and it contains essential information for anyone leading an XP project. See my mini-review.
- Extreme Programming Installed, Ron Jeffries, Ann Anderson and Chet Hendrickson. Excellent general coverage of XP. The first 30 pages are perfect to introduce XP to someone in a Customer role. This is the "pink book". See my mini-review.
- Extreme Programming in Practice, James Newkirk and Robert C. Martin. A short book describing a team's first attempt to use XP. The "orange book". See my mini-review.
- Programming Ruby, David Thomas and Andrew Hunt. This "pickaxe book" is still the classic Ruby language text. Excellent!
- Pragmatic Programmer, David Thomas and Andrew Hunt. See my mini-review.
- Debugging the Development Process, Steve Maguire
- Peopleware, Tom DeMarco and Timothy Lister
- Refactoring, by Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts. Refactoring is hard to learn from a book, but if you're going to try, this is the best book for now. An online catalog ofrefactorings is available at http://www.refactoring.com.
- Writing Solid Code, Steve Maguire
- Software Craftsmanship, Pete McBreen See my full review.
- Debian, my favorite GNU/Linux distribution.
- Mozilla Firebird web browser. It's a "light" version of Mozilla (which is the nerd version of Netscape). I've been using it for months, and it's my favorite browser under both under Linux and under Windows. Highly recommended.
- Thunderbird, an email client from the Mozilla project. I recently installed the 0.2 release using this unofficial Debian package, and it is already my favorite email client (replacing evolution). It seems very stable, and is only missing a few features. Highly recommended.
- gFTP client for Linux. Very slick.
- Anjuta IDE (Programming editor and environment). Not quite finished yet, but it's the best C++ editor I've found for GNU/Linux.
- Eclipse, a free, open source IDE (programming environment) from IBM, mostly for Java. We have been productively using it for production coding at work since Feb 2002. It is really powerful, but is very complex and not well documented. I wish there were simpler alternatives that still had comparable refactoring abilities.
- Naked Objects. Sorry, nothing kinky here. Just an innovative framework that can automatically generate a basic interactive UI based on a bunch of domain objects. I haven't tried it, but if I'm about to write a basic business app I'll consider using it.
- If you're stuck in the MFC world, there are two excellent sites that have code samples: CodeGuru, and CodeProject.
- slashdot (/.). The articles themselves are really great. Almost all of the follow-up postings are useless.
- Linux Weekly News. The BEST source of news about the Linux community. It comes out every Thursday, and is a "must-read" site. It's one of the very few sites I find valuable enough to pay for.
- CNET News. General news about the computer industry.
- Fast Company. Excellent.
- SD Magazine online. Excellent.
- Simple Living Network. Very thought-provoking. Visit it sometime when you have a clear mind and a couple hours. Your life might change.
- Craig's List. In the San Francisco/San Jose area, is the absolute best source of listings for jobs, housing, and cars.
- Monster. Much improved, and now one of the best.
- CPlusPlusJobs.com. Good listings for c++ coders.
- Dice. The classic. Too many headhunters, but it's still pretty good, especially if you're planning to relocate.
Searching for Information:
- Yahoo Search. Yahoo's search is not as good as google, but I choose not to support google's monopoly for these reasons.
- DMOZ, an open project to build a directory of the web (similar to yahoo's categorized directory).
- Wikipedia. An amazing open project to build a full web-based Encyclopedia. You can edit pages yourself!
- Nupedia. A free, international, peer-reviewed Encyclopedia. Wikipedia and Nupedia are sister projects, but Nupedia is much more formal and controlled.
Local (Silicon Valley Area):
- Santa Clara Valley Transportation Authority
- San Jose Mercury
- Recent earthquakes
- Real-time traffic map
- The Onion (satire humor)
- BBSpot (satire humor)
- Satire Wire (satire humor)
- IMDB, the Internet Movie Database. This is one of the best internet sites I've seen.
- TV Guide
- Thinks (games and puzzles)
- Folklorama, the annual folk and cultural festival in Winnipeg, Manitoba, Canada.
- "When Pigs Fly", a musical album containing popular songs recorded by unexpected people.
- One of the best translations of the Tao Te Ching, and as a bonus, it is in the public domain. Actually, I liked earlier versions of this document better. Hopefully I can retrieve them with the internet archives 'wayback machine'.
- A wonderful collection of World Flags.
- Bruce Bryson's site that graphically demonstrates the size of our universe
- One of the coolest ideas in automobiles is this cute and tiny car. I want one! Another option is the Smart car, which unfortunately is not available in the USA. I'd buy one imediately.
- Or, as a nice compromise between private cars and public mass transit, how about PRT - Personal Rapid Transit? There are several companies pushing similar concepts. Imagine how great something like this would be at Disneyworld! (In case you haven't been there, most of the park(s) are connected by slow buses, not sleek monorails). I'm still a bit skeptical about convincing people to allow so many overhead tracks, but the benefits (and low cost) are very appealing. You could even run them underground, or at ground level, if you were willing to spend more. They would probably still be cheaper than a subway or even a typical light rail solution, and far more fun to use.
- The Gumption Memo is a brilliant work that identifies the single biggest problem affecting our world today: Overpopulation. Along the way, the author gives great advice for how to make decisions, and how to select which charities to support. Some of the graphs and statistics are amazing.
- One of the more interesting political sites (and movements) I've come across is the Free State Project. I certainly don't agree with all their values, but a part of me wants to see them succeed, just to watch a Grand Experiment.
- Mark Morford. This columnist is radical, offensive, funny, insightful, crazy, and brilliant. Love his opinions or hate them, but at least he's saying something interesting!
- Benetech, the non-profit where I work
- No-Web-Site-Yet???, a company that designs and runs web sites for small businesses
- Behind-the-Bar, a professional bartending company run by a friend