Tag Archives: geek

Raspberry Pi, episode 1

I got a Raspberry Pi for Christmas. I’ve been meaning to get one for some time, because I wanted to play with home automation (x10) stuff again. So here we go.

I’d rather not mess with getting usb/serial stuff working again. That was a pain. So I’m going to get a CM19a instead and see if I can get that working.

Should be fun.

So far, I have the Rasberry Pi booted, and I’ve got some basic stuff installed on it. It’s running Debian 6 (Raspbian) and I’ve got a 4G card in it, which, so far, looks like it’s going to be plenty.

Open Source and The Cloud

I had something of an epiphany in the shower this morning. I discovered that I actually agreed with Bradley Kuhn about something.

TLDR: Is “the cloud” a threat to Open Source? I stopped working on an Open Source calendaring project because of Google Calendars.

Several months ago I attended (part of) a talk by Bradley about how The Cloud (whatever that is) is a threat to Free Software. (Yes, I know what The Cloud is. Snarky remark in reference to all the different things The Cloud might mean to various people. See Simon Wardley’s wonderful talk about what the cloud is.)

His reasons struck me as so outside of my way of thinking about software that I ended up leaving the talk. Oh, also, Skippy wanted to go to lunch, and that sounded like a lot more fun. Nothing personal, Bradley. He was talking about how something like Google Calendar (actually his example was GMail, but hold on a minute) was a threat to Free Software because the code, even though it’s in Javascript and right there in front of you, can’t really be inspected (ie, you can’t learn from it) because it’s hugely obfuscated. Also, you can’t see the back end. So here’s a service you can use for “free”, but it’s not Free, because it’s in chains, metaphorically speaking.

Then, this morning, I was thinking about why people are involved in Free/Open Source software, but also why they stop being involved, and I realized something.

I used to have a web-based calendar thingy. It was written in Perl, and it was really very cool. In fact, it not only started my passion for Open Source (it was the first thing I ever had on CPAN, and it was the first software that I ever wrote which was featured in a book!) it also paid my mortgage for a few years. I used to write calendaring applications for the General Motors Desert Proving Grounds in Mesa, Arizona. Although that plant is long closed, their scheduling ran on my software. If you wanted to schedule a test on the dust track (tests a vehicles various rubber seals to make sure they keep out dust, as well as handling in those conditions) you used the web-based scheduling application, called D.U.S.T. (I forget what it stands for – Dusttrack Usage Scheduling Tool or something) and scheduled it. This worked better than grubby bits of paper, because it didn’t get lost, and you always could get to it without walking down the hallway.

Also, when I was at Databeam, back in the late 90s, I wrote a similar application for scheduling conference rooms (clever name: Conference Rooms). I went up to the front desk one day and stole the conference room scheduling book and hid it, forcing everyone to use the online scheduling app. Strangely, it worked, and I didn’t get fired.

Then, I got involved in a project called Reefknot, which was an implementation of various international calendaring standards, in Perl. That was humming along nicely. And I had a dozen different calendar modules on CPAN.

By the way, in case you don’t know, calendaring is hard. Sure, it looks easy, but then you get into things like “every other Monday at 10am, except during company vacations.” Or possibly “the last day of each month.” Think for a little while about how you’d implement that, and your brain will start to melt just a little. “every monday” suggests a simple solution, but as soon as you start having to deal with exceptions, things get very very complicated. And what with different length months and leap years … and don’t even get me started on time zones. *shudder*

Anyways, then something called Google Calendar came along. It worked with all of the various calendaring applications. It did the various calendaring specifications, including the long-elusive CalDav. We were all very excited in the calendaring community, but then an odd thing happened. People stopped working on calendaring stuff. Because, you know, it’s already done.

So, I stopped working on an Open Source project because there was an implementation in the cloud. (ie, online somewhere.)

So, was Bradley right? Did Google Calendar kill the Reefknot project specifically because it’s closed source? Yes, in a sense. I don’t believe, as the FSF does, that closed source is intrinsically immoral. But there’s a direct correlation between the projects I no longer work on, and great cloud based implementations of the same functionality, where I don’t have access to the source to participate.

Furthermore, as my interaction with software is increasingly via a browser, and not via running software on my own computer, I have less and less incentive – and ability – to tinker with those things.

Now, I’m weird, I still run several of my own servers. Granted, those servers are “in the cloud”, meaning that I have no idea where they are physically located. But I have root on them. I build software from source on them, and tinker with that source from time to time. I tinker with the source code of my blog, even though there’s a good blogging platform “in the cloud”, but I also have several blogs on Blogger, simply because it’s simple and I don’t want to monkey with it.

So, although I disagree with Bradley’s philosophically, I find that he may be completely right for more pragmatic reasons.

But at the same time, Open Source has a whole new rebirth of late, and there continue to be ever more exciting projects out there. I’m much more concerned about my kids, and what they will find to hack on. My son is a hacker. He likes to build stuff, take stuff apart, break it and fix it, figure out how it works. I don’t know if I’m doing an adequate job of encouraging this. I really need to get him a subscription to Make magazine. I wonder, however, when he gets a little older, if he’ll be interested in programming. I think he’d be really good at it, but it would be a great shame if the removal of applications to The Cloud also results in a lack of opportunities to hack on code.

Review: Squid Proxy Server 3.1 Beginner’s Guide, by Kulbir Saini

I just got done reading “Squid Proxy Server 3.1 Beginner’s Guide” by Kulbir Saini, from Packt Publishing.

(Full disclosure: Packt sends me free books on the condition that I review them. However, I’m under no obligation to say nice things, and they keep sending me books even when I say harsh things.)

Quick version: The writing style is ideal for a beginner – clear descriptions of concepts, rich in step-by-step examples and section reviews/summaries to clarify why you just did what you did. Frequent exercises reinforce concepts. Saini writes like a teacher.

Saini’s writing style suggests to me that he’s been teaching this material for quite some time. Every concept has copious examples and suggested exercises to help you remember what you’ve learned. Concepts are clearly defined, clearly explained, and then illustrated before moving on to another concept. Previous concepts are reintroduced and incorporated into the new ones as you go along, so that idea builds upon idea.

This is a book to be read in order, but aso is structured so that someone at an intermediate level can go back and use individual sections as reference.

I love reading technical books that aren’t dry and boring, and which inspire me to be a better writer. Oh, yes, and I learned a lot about Squid, too.

I presume that the content isn’t really quite so specific that it’s only for 3.1, but having not used Squid for an extended time, I can’t say for sure.

The book starts with clear descriptions of the general concepts of proxying, but very quickly gets hands-on and specific to Squid. This is how I like it, because I learn by examples and doing.

So, on the whole, I give this book a firm thumbs up. I’m always a little hesitant doing a review of a book on a technology I don’t know by an author I don’t know, because I make it a firm rule to say the book stinks if it stinks. So it’s always a joy to read a book like this that exceeds my expectations, and turns out to be not just ok, but actually really well written.

Tek11 just a week away

A quick reminder that Tek11 is just a week away, but there’s still time to get your tickets. I’ll be speaking twice – once about all of the things you didn’t know the Apache HTTP Server could do, and once about writing a better FM. And, of course, dozens of far-more-brilliant people will be there too, speaking about many PHP-related topics, and hanging out having fascinating conversations, and working on fascinating projects.

You can hardly afford to miss it. See you there.


Tek11 is just a month away, and you should come. PHPTek is one of the best conferences I attend, always full of practical, usable presentations. It’s primarily a PHP conference, but also has a great deal of web-related content and awesome people to hang out with.

This year, I’ll be giving two talks.

The first, N Things You Didn’t Know Apache Could Do is a high-speed sprint through N features of Apache HTTP Server (N is currently 25, I think) that, in my experience, most folks are unaware of. And, with the release of 2.4 imminent, much of this content will be focused on the cool new stuff in 2.4.

My second talk, Write A Better FM, is completely new content for me, and is about what it takes to make your documentation and your customer support more customer-focused, and less … ahem … traditional, free software, the luser is an idiot and an annoyance, RTFM style. This draws on my 15 or so years of working in Open Source documentation, in the Perl, Apache, and PHP communities, as well as writing a half-dozen books.

In addition to these two talks, there will be many community luminaries giving a wide range of talks which, if the last 4 years are any measure, you’ll be able to go back to the office and apply immediately.

You should come.

Chrome vs Firefox, conclusion

Having discovered that Chrome has pinnable “app” tabs, too, I’ve moved back to Chrome, for three reasons.

1) It’s WAAAAAY faster

2) Typing stuff in the address bar consistently loads Google search results for that stuff, whereas Firefox does sometimes, and other times it’ll load whatever site it deems the best match. While I’m sure that’s configurable, I’d rather not have to hunt for it.

3) The thumbnails of my most frequent sites is really quite useful. There’s a plugin to do this for Firefox, but it doesn’t actually do this – you have to manually add each site.

These are all pretty minor things, and of course I’ll still have to use Firefox while developing.

Mail filters

I had my laptop in for service today. When I got it back I had to restore everything from backup. In the process of restoring, I lost my mail filters – the list of rules that sort inbound email into folders.

I have 116 folders in my personal email, and 26 in my work email. Perhaps three quarters of those have mail sorted into them automatically, while the rest are either historic, or actually get stuff sorted in manually.

Losing my mail filtering rules gave me an interesting insight into just how much email I receive, and how little of it I actually read.

Some of it I don’t read because it’s automated sysadmin mailings that I want to be able to refer to if something goes wrong, but which I ignore when nothing goes wrong. Others are mailing lists that I’m subscribed to, but just never get around to reading.

When all of this stuff gets dumped into my inbox, I realize that I get many hundreds of messages a day that I never even look at.

Granted, this is better than it was a year or two ago. Since then, I’ve unsubscribed from dozens of mailing lists. At one point I was getting thousands of messages a day, and reading perhaps a hundred of them.

Looks like it’s time to prune again.


I’ve been using the same keyboard for the last ten years – a Microsoft Natural Keyboard. It’s pretty much the only Microsoft product I use on a regular basis. I’ve been using it at home and at work since when I was at TCG, which was starting in about 1999 or 2000. I actually had two of them – one for home and one for work. One of them broke several years back, but that’s fine since I work at home now.

A month or so ago it started dropping keystrokes, and about a week ago it started getting stuck in CTRL or CMD mode, and only unplugging it would reset it.

I’ve replaced it with the new Microsoft Ergonomic Keyboard 4000, which is the same keyboard, although with a few more bells and whistles. It’s got programmable keys that actually work on OSX, and it’s got a little zoom scrolly thing in the middle. It’s got the same basic shape and split keys, which is what I’d gotten used to, but the key layout is just slightly different – enough that I’m missing keys every now and then. But I’m getting used to it pretty quickly, I think. It’s happening less today than it did yesterday.

I don’t think I’ll use the programmable keys much – never felt the need for them before – but the volume keys and the play/pause key is already getting a lot of use. They Just Work out of the box and do the right thing on OSX without any special programming, controlling the volume and iTunes, respectively. Oh, and there’s a calculator button that’s slightly useful – at least, I think it might be.

There’s also a back and forward key down front, and I don’t know why anyone would want that. But fortunately it’s not actively in the way, so I probably won’t press it by mistake.

I looked around a little before choosing the same keyboard. But much of what I do on a daily basis is all muscle memory – this is why I still use vim as my editor, after trying dozens of other editors briefly. After using vi for 20+ years, my hands want to press :wq when I’m done, and they want to press x and dd and so on when doing basic editing. So I went with the keyboard that my hands already know, even though I got several recommendations for other keyboards.

Speck laptop cover

My biggest complaint with my MacBook Pro has always been the sharp front edge. When using it for extended periods of time without an external keyboard (which I do perhaps 2 or 3 days a week, working in the living room or dining room) it begins to cut into my forearm quite painfully. Yes, I know, I’m not supposed to rest my wrists on the laptop. But I’ve been typing this way for almost 30 years, and am unlikely to change now.

I read a few sites that talked about grinding off that sharp corner, but somehow I think that my employer might frown on me voiding my warranty in that particular way.

So, last week I picked up a Speck laptop cover. Yes, they are expensive, but I figured it’s tax deductible, and it’ll save me some pain.

Turns out that it has a sharp corner on it, too. But, it’s plastic, and grinding it down doesn’t void the warranty on my MacBook. So, with a little work with sandpaper, I now have a front corner of my laptop that doesn’t make me bleed, and I can work comfortably just a little longer.

What I’d really like to see is Apple taking heed of this complaint that’s persisted through several generations of this hardware, and make that corner a little less painful. But, failing that, this is an acceptable solution.

The only negative here is that the part of the cover that goes on the screen is a little heavy. The screen/lid of the MacBook is pretty well balanced, and adding even a little weight to it causes it to fall open quite violently when leaned too far back. The cover provides just that needed weight, and picking it up by the base while it’s open can cause the lid to slam all the way open. I’m concerned that one of these times it’s going to snap the hinge.


For some reason, I was sure that S3 was an end-user file storage service. It’s not. It’s for web developers who need somewhere to store a large amount of data for back-ending their website. So, say, someone like Flickr might use S3 for the actual photo storage. (I don’t know if they do. Just an example.)

So, thanks to a suggestion from CGNaughton, I am now using SugarSync, which was remarkably easy to set up, and seems to work pretty well, although it took three days for the initial sync of my data.

I’m also planning to put the 24G of photos, which I have on an aging Linux box at home, up on SugarSync, which will likely take all weekend. Once that’s done, I will finally shut down Buglet, which I have operated out of my house for more than ten years now, and I will then have a total of *zero* servers in my home, for the first time in probably fifteen years.

Having my servers managed, and, in particular, backed up, by someone else, has an awful lot of appeal. It’s no longer fun to keep servers updated, patched, backed up, free of dust, and restarted every time there’s a power dip.

On a related note, if you’re in the Lexington area, and you need a half-dozen aging server machines, come and get them. We’re only too delighted to offload them. Most of them were great machines in their time, but I no longer have need of them. Monitors too.