… and back to Perl

For the last five years, roughly, I’ve been doing PHP programming, gradually forgetting the Perl that I knew, except when I wished PHP would do something that Perl makes easy.

One particular syntax I missed on an almost daily basis was:

foo( ) unless $bar;

It was therefore with some trepidation that I started on my new project, which uses Perl, mod_perl, and a heap of CPAN modules that I used to be very familiar with, but have, I thought, forgotten.

I’ve been very pleased to discover that I haven’t forgotten it, although some of it is pretty rusty. Perl’s use of different variable sigils ($, @ and % to denote different variable types) was welcomed back like group of old friends of whom you have fond memories, but sometimes confuse their names. If you know what I mean.

But it’s all coming back to me, and the various Perl colloquialisms are springing to my fingers.

I think that my years in PHP have benefited me, but I’m not very clear just yet in what way. The ability to jump back and forth between languages can make you perpetually confused, or it can make you stronger in both, depending on your approach. One hopes that you can learn something from the one to take back to the other, but that doesn’t always work out.

I am reminded on a regular basis, by support email, that I have a bunch of modules on CPAN which have largely languished while I’ve been in PHP-land. Of course, many of them have been superseded by better modules while I’ve been away. The Date ones, in particular, have almost all been superseded by the Perl Datetime project, which, although I helped start, Dave Rolsky has been heading for several years now. Maybe, if I’m lucky, I’ll have an opportunity to resurrect some of those modules and start playing with them again. Non-gregorian calendars, and traditions about different dates have long held a fascination for me, and I’d like to play with that again.

But, meanwhile, I’m learning the slang again, and since I’ve missed a half-dozen releases of Perl, I’m sure that it does even more weird and wonderful things than I did when I was a common face around the Perl circles.

Working from home

Well, this ends week one of working from home.

Mostly, I was concerned that I wouldn’t be able to concentrate, but amazingly that hasn’t been the case. Although the boy has had a little trouble adjusting to the fact that when he gets home from school I’m still at work, even that hasn’t been too much of a distraction, and I’ve been able to get quite a lot done during this first week.

I started out on one project, which I had begun to get the basics of after the first two days, but was then switched to another project, which is *way* exciting, and which I think I have a good idea of what needs to be done. By the end of Friday I was, I think, making actual useful contributions to the project, and I have high hopes for next week.

Oh, and today I wore shorts to work for the first time in more than 10 years, so that’s got to count for something, too. 🙂

Speedup

Earlier this week:

Today:

Nothing to write home about, but an improvement, anyways.

Unfortunately, I didn’t get the full story, and apparently I didn’t get any faster uplink, which means that things like voip that need both directions, or something like Sugersync which is primarily upload, or updating web content, didn’t benefit much.

Looking around, it appears that the fastest uplink I can hope for is about 1mbps unless I want to pay for business-level service. I don’t really understand why the upload is so much slower than the download.

Craig’s List

This weekend, for the first time, I posted something to craigslist. I was cleaning out the attic, and I came across some ancient computer hardware, and on the way to the garbage I thought, there’s probably someone would could benefit from this.

So I put a Seagate DDS3/DDS4 tape drive, and a Serial-to-USB converter, as well as two old car stereos.

Within an hour, I had someone at my door giving me $15 for a Serial-to-USB thingy that I was about to toss in the trash. Not much, but I felt like I did him a favor, and we had a little pocket money.

I *love* the craigslist website, precisely because it doesn’t waste a moment on anything superfluous. It’s just raw data, and the minimum amount of formatting required to make it legible. And it works.

I admit I was a little nervous that some nutjob would show up at my door to check out my place for a later burglary, but he seemed like a fellow-geek who just wanted some esoteric piece of hardware.

ClearMyRecord, a retrospective

So, I’m leaving ClearMyRecord and going to OmniTI. A few words are in order in parting.

First of all, why I came to CMR in the first place. ClearMyRecord is all about restoring dignity to people who have lost it, through their own mistakes. This is an honorable goal, and being part of creating the technology to achieve that goal was very appealing to me. And, while I was here, we did indeed help a lot of people obtain expungement of their criminal records, which is a ticket back to participation in community at a level that had been denied to them.

This has been my first real experience with management. I was a manager, sort of, at one former job, but treated it more like a team lead than a manager, and that experience didn’t go well. The less said about that, the better.

However, my management still is still very delegatory, if that’s a word. I assign tasks to folks that I feel can do them, and then I step back and allow them to be creative in how they do them. The side-effect of this, of course, is that sometimes things don’t get done, get done in ways that I didn’t envision, or get done far slower than I had hoped.

About halfway through my time here, I hired someone with far more management experience than myself. I suspect that he frequently didn’t agree with how I chose to operate, and sometimes he made that explicit. I learned a great deal from him, and I think that I will do things rather differently if I have an opportunity to be in management again. Now that I’m leaving, he’ll be taking my place, and the rest of the team will get to see how he chooses to manage. I’m very interested to hear more about this in the coming weeks.

As to what I would like to have done differently – I think that greater focus on the goals and specific deliverables would have resulted in meeting those goals earlier – months earlier in many cases. We had the tendency, as a team, to be pulled in dozens of different directions at once, and spend weeks at a time working on stuff that was completely outside of our core goals. Granted, this was often mandated from upstream, but I strongly suspect that I could have managed this better if I had been more forceful.

So, now I’m going back to a more hands-on position, where I can revive my Perl knowledge, as well as taking advantage of my 5 years of PHP experience, and my 15 years of Apache experience. Pretty exciting, all around. And maybe, just maybe, I’ll get to try my hand at management again at some point in the future. Meanwhile, I’m looking forward to working with my new manager, who, while younger than I, is someone that I have had some contact with over the last few years, and greatly respect.

Unit testing: A good habit, lost

When I was a Perl programmer, I was a strong believer in testing. I wrote tests before I wrote functions. I wrote tests before I fixed bugs. I ran the test suite every time before I committed changes to svn. I ran tests after I ran svn update.

When I became a PHP programmer, I quickly slipped out of the habit. There were two reasons for this.

First, my style of programming changed pretty drastically, with the move to being completely web-centric, and web front-end code is just harder to test.

Two, at that time, the available tools for unit testing were immature. Or, at least, so I believed, coming from the Perl world where testing is not considered optional, and is integrated into every aspect of the process, from design all the way up to ridiculing stuff that’s submitted to CPAN without adequate tests.

Now that I’ve been doing PHP programming for going on 5 years, I desperately want to get back into a testing mindset, but find that there’s an awful lot of inertia around not testing. If your code doesn’t have a test suite, it’s difficult to make that first leap to build one. And it’s also hard to convince management that it’s worthwhile spending time making a test suite when you’re behind deadlines.

And, since there’s not One True Way in PHP, like there is in Perl, you waste a lot of time and energy trying to find the right testing methodology. The PHP community could do themselves, and the rest of the world, a great service, by agreeing on one testing methodology, and then evangelizing it. Here’s another case where the quest for the best has woefully injured everyone, and led to a situation where people simply don’t test.

Now, I’m sure that the core PHP folks will disagree with me. Actually, I kind of hope that they will. Please disagree with me? Tell me that there is One True Way, and also that you do run the test suite every time you change a line of code. I greatly regret getting out of that habit.

OmniTI


It is with unmingled delight that I am now able to announce my new gig. Starting on August 24th, I will be working for OmniTI.

I’ve been aware of OmniTI for almost as long as it has been in operation, because I have known Theo roughly that long, and have been attending his Scalable Internet Architectures presentation on and off for almost ten years. Every time I attend that talk, I think, well, this is cool stuff, but I’ll never work on anything that gets more than a few thousand visitors a day,

So I’ve been admiring OmniTI from afar for a long time, wishing that I could work for them, or, failing that, some place where my knowledge of scalability could be something more than a vague theory, never put into practice.

For reasons beyond the scope of this blog, however, I am unwilling to move out of the Lexington, Kentucky area. This life decision closes many opportunities to me, but it’s a choice that I continue to make willingly.

Anyways, some time in the middle of July, when Chris blogged about leaving OmniTI, I was poking around the website and saw that I might just be qualified for some of the positions they were offering, and, on a whim, emailed Theo to ask if they’d be willing to hire me, and let me stay home. Turns out, they were willing, and that’s what I’m going to do.

My offices just keep getting better over the last few years. 🙂

Exactly what I’ll be doing, I’m not yet entirely certain. But it will be a mixture of Perl and PHP, as well as being able to utilize my Apache HTTPD expertise more than I’ve ever done before, which is very exciting all by itself. I’ll be working with some of the smartest people I know, as well as a lot of smart people that I don’t yet know. And I’ll have the most fabulous office I could ask for, overlooking the swimming pool. My biggest concern is that I’ll have trouble staying focused, but I expect that I’ll develop strategies for that pretty quickly.

As to why I’ve waited so long to mention this – after all, I’ve known about it for close to two weeks – we had a deadline, of the crisis variety, at work. The deadline was Friday August 14th, and it was determined by various people that it would be unkind to the rest of the team to announce my departure while we were working so hard to meet that deadline. I’ve been brimming with excitement and a desire to tell the world, but saw the logic in the request.

It’s been a great year and a half at ClearMyRecord.com. I’m leaving the team in very capable hands, and wish them all much success. I had the privilege of working with a very talented team here, and would be glad to work with them again.

Oh, and I should also take this moment to thank Andy. Whether or not you’re looking for a job, if you’re in the IT business – and probably even if you’re not – you should read Andy’s website. His advice is sensible, practical, and indispensable.

Ice Cream Scoops

As I’ve mentioned before, whoever is handling the ad campaign for the UNCF isn’t doing their research. In a new ad, they state that Alfred Cralle invented the ice cream scoop.

Which he did, but the picture shows a simple spoon-style ice cream scoop, rather than the variety that Cralle invented. What he invented was far cooler – a scoop with gears and lever which scoops the ice cream out of the bowl of the spoon.

So that’s another ad that they’re running where they claim that an african-american inventor invented something, when in fact he invented something much cooler. Why would they do this? Come on, folks, do your research a little better. Or, UNCF, get a better ad agency.

Swimming Pool

We finally have a swimming pool. It’s been a long and frustrating saga.

Last Friday evening, after the kids went to bed, we rolled out the pool, which had been delivered by UPS on Thursday. We followed the instructions (most of them) and started filling it with water.

Turns out, that bit about “level ground” was pretty important, as I should have known, since I was a physics minor in college. About 1000 gallons later, we had a pool with about two feet in one end, and maybe 6 inches in the other end, tilting precariously. We knew this wasn’t going to work, but decided to let the kids play in it before starting over.

Saturday morning, they came out and were tickled pink, which was the desired effect, but after about 2 hours of playing, the edge finally dipped, and all that water went thundering down the hill, washing away our gravel path and generally wreaking havoc.

Being impatient, we went for the quick fix, and bought a bunch of sand bags to prop up the bottom end. As the water reached the top of the sand wall, it dragged the side over to the other side of the wall, and there it lay, until finally we couldn’t prop it up any more, and we lost another flood down the hill.

Now ready to follow the instructions, we started digging, and have been digging all week, a few hours a day, until about 8 last night when we deemed it done. In retrospect, we should have taken a few more steps to smooth the ground, but we decided it was good enough, and by about 11 last night, we had a serviceable pool. It still needs to fill a little bit, but it’s level now, and ready for the screaming kids.

Unfortunately, neither of the kids are with us this weekend. But at least we can enjoy a little time in the pool now, and try to recover from our aches from a week of digging.