Category Archives: Development

OSCON 2007: Subversion Worst Practices

We started using Subversion at work shortly after I joined the team, so I thought I’d attend the “Subversion Worst Practices” talk. It’s billed by the speakers, Ben Collins-Sussman & Brian W. Fitzpatrick of Google (and of Subversion fame), as a light-hearted follow-up to the best practices session they held last year. I’m happy it will be light-hearted, because I wasn’t thrilled with the session last year, and didn’t feel I got much out of it.

They started out with the top 10 ways to sabotage your project with Subversion. It’s Friday, and there’s not that much to say about each of the slides, so I’ll merely enumerate the worst practices, without commentary, for now. Hopefully the slides will be posted later.

10. Argue about Version Control Systems

9. Do a Brute-Force Transition

8. Backups? What Backups?

7. Loads of Locales

6. Rule with an IRON FIST

5. Hide the Version Control

4. Use Complex Branching Schemes

3. Put Everything in the Repository

2. Use a Network Drive

(Oops, we do that…)

1. Really Clever Hook Scripts!

0. Edit the Repository Database

Obviously, this session was really a list of best practices presented in a humorous way, by pointing out the extreme case of not actually following those best practices.

I noticed the MacBook Pro Ben and Brian are using to drive their session has a bumper sticker on it: “My other computer is a data center.” I like it. It’s exactly what I’ve been doing to my computing.

It was nice that Ben and Brian left ample time for questions and answers. The audience appreciated the time to ask questions about how to apply Subversion best practices to their own repositories. Or just to bitch about some pain points. Fun stuff.

OSCON 2007: Machine Learning Made Easy with Perl

The key lesson of this session, presented by Lino Ramirez, is that it’s all about empowering people. Perl gives us the power to empower people.

I really enjoyed the video of a tae kwon do match as a real-world analog of software development. Try one technique, see the result (get hit); try another technique, see the result (get knocked down); ad infinitum.

There are three phases: preparation, modeling, and implementation. These phases are not linear in nature. One moves between phases as necessary to design the solution.

PDL was demonstrated in the modeling phase. Brad was pretty happy when one of the slides contained a web site address for information on PDL, which happened to be a web server at his job.

As he delved into the case studies, I started to zone out, so I have little to say about his examples of machine learning and Perl in action. I wanted to enjoy this session more, since I’ve often wanted to get back into using neural networks and other machine learning techniques in my code. Unfortunately, I just found it too difficult to follow his case studies. Still, I have some good pointers for packages that will help me sprinkle some machine learning goodness in my code.

I like his conclusion: “Perl excels at empowering people in all three phases of the development of a machine learning application.” Perl is awesome for rapid application development, which in turn gets solutions to people who need them faster.

OSCON 2007: DBD::Gofer

Lunch is over and I’m sitting in the first of two mid-afternoon sessions I’ve chosen on Perl technologies. The first one with Tim Bunce, the extremely knowledgeable author of DBI. He’s presenting DBD::Gofer, a stateless proxy driver for DBI.

This session is very much like other sessions I’ve attended. It’s essentially a brain dump of as many features Tim can squeeze into the alloted time as possible. It’s almost too much to follow. It’s certainly too much to take notes. Fortunately, he’s told us the slides will be available on-line.

From the description of the session, I had hoped DBD::Gofer would scratch an itch we have at work. Essentially, we need to ensure data finds its way into a database, even if the database may not be available. We have a custom solution at the moment, but it would be great if we could replace it with a packaged, maintained module. However, it appears that, while DBD::Gofer makes an excellent proxy, it wouldn’t fit our needs.

Examples have included connection pooling and load balancing, often to reduce load on the main database server. It’s apparent from the use cases that this module was developed for use by heavily trafficked web sites (its development was sponsored by Shopzilla.com). It’s design is modular, so perhaps it can be extended to do what we want. I won’t know until I’ve had a chance to look at the distribution.

Some interesting things for the future are HTTP caching and JSON, effectively turning DBI into a web service. This is cool. I can see this opening up a lot of possibilities as more applications are constructed from individual services, complete in their own right.

Analyze This

I’ve been reading Google Hacks as an “assignment” from my local Linux user group. Basically, we raffle off review copies of books donated to us from O’Reilly. One of the requirements of this is that we review these books. Well, I’ll have my review finished soon. But that’s not what I wanted to write about in this post.

One of the final chapters in the book contains hacks for webmasters. As the master of my own as well as a few other web sites, this chapter was very interesting for me. It pointed me in the direction of Google’s tools for webmasters, in particular Google Analytics. I’ve known about this tool for a while, but I finally decided to check it out. I love it. All I have to do is add a snipped of JavaScript on all of my web pages (view the source of this one and you’ll see it there at the bottom), and Google gives me all sorts of pretty graphs.

Webmastering SanDiego.pm

As of tonight, I am the new webmaster for the San Diego Perl Mongers. This is pretty exciting for me. I have a vision for what I want the SanDiego.pm “web community” to be, and I hope I’m able to achieve it.

My first order of business was to create a public calendar for our group. Now anyone can subscribe to our calendar to find out when we’re having meetings or any special events. Not only that, using Google means less work for me.

I have much more in mind, which I’ll be sure to announce here and in my use Perl journal. Of course, I don’t intend to run this web site in the dark. I’m open to any and all suggestions. I want this to be a community effort on the part of SanDiego.pm.