Subversion is basically a fancy file system. When storing files in a Subversion repository, you can use any folder names you like. The convention is to have three top-level folders called “trunk”, “tags”, and “branches”, with the master copies of the project’s files under trunk. Making a tag is merely a matter of copying what’s in trunk to a subfolder of tags, and starting a branch is merely a matter of copying what’s in trunk to a subfolder of branches. There is absolutely no difference between tags and branches as far as Subversion is concerned. (Actually, you can tag or branch anything, not just what’s in trunk.) When I say, “copy”, I’m referring to the Subversion concept of “cheap copies.” Under the hood, the file contents and the differentials are all stored together. The observable file system is actually just lots and lots of pointers to the actual content.
Sometimes, mistakenly, Subversion repositories are created with all of the project files directly at the root level. So, what do you do when a Subversion repository is missing the standard trunk/tags/branches base folders and you want to create a tag or branch?
Continue Reading
Students at UC Irvine are working on some new source code search engine technology. You can check it out at: sourcerer.ics.uci.edu – They’re just getting started, but click on the “Fingerprints” tab to get an idea of the heuristics they’re looking into.
As usual I wasn’t following instruction while trying to update MySQL on my dev laptop. There’s some decent upgrade documentation on the MySQL site (here if you’re looking for it.) but its a lot to think about all at once and all the warnings didn’t seem to apply to the databases I had. The first thing I didn’t do was backup the database. I figured the installer would see that I had MySQL on the machine and would update things accordingly. I was wrong. The second thing I didn’t do was uninstall the MySQL service that was currently running. So, after the installer failed to configure the service, I was a bit stuck.
Continue Reading
[This originally appeared in my personal blog on 6/29/2005. Reposted by request.]
TDD has become as automatic for me as breathing. It’s a beautiful thing when you get to start a new project from scratch and can write every line of code test-first. These days, however, I’m working on a legacy app with very little in the way of unit tests, and it feels as if I’m working at 5,000 meters above sea level and struggling for every breath of rarefied atmosphere.
Continue Reading
We’ve been working on the new site for a while. Its got a new design, and best of all, a new engine that runs it. We’ve chosen Drupal as the engine behind our site for a variety of reasons. Before we get too far into it, yes we’re still Tapestry developers. Yes we could’ve done this in Tapestry. But, the simple fact of the matter is that developing a content management system is a lot of work. Drupal is really comprehensive and though we’re not PHP developers, it didn’t take much effort to figure out how to use and deploy the system. There are still a few rough edges to work out but in all we’re talking a few hours (under 8 hours) of work getting blogging, page posting and a variety of other nifty features running. And most of that time was spent fiddling with the template and reading the Drupal documentation.
If you haven’t heard any of the free (listener-supported) recordings available on http://www.itconversations.com you are truly missing out. There’s a wealth of information in these podcasts. Topics run the gamut from origin stories to the latest innovations.
For just one tiny example, the interview with Alistair Cockburn is especially fascinating. His expertise in software processes started early in his career when IBM assigned him to make up and document the recommended process for writing object-oriented code in Smalltalk and C++. To accomplish this, he flew around the world, interviewing software engineering teams. You may be surprised to hear about the correlations he found (didn’t find) between the processes they used and the corresponding success rates.
Cockburn also explains the origin of the term “software engineering” (as well as just “engineering”) and how they have been routinely misapplied to what we actually do as software developers. He also talks about the common misconception that creating software is somehow like building a bridge, and why that analogy is wrong on so many levels.
Tapestry won a Duke’s Choice award for innovation at this years JavaOne. “The fourth Duke’s Choice Awards … spotlight some of the most clever, practical, and inspirational Java technology applications on the planet.” Check out Howard’s blog (photos yet to come): http://howardlewisship.com/blog/2006/05/tapestry-dukes-choice.html