Category Archives: Web/Tech

What’s Happening on CodeLesson

Our mighty mighty online learning site, CodeLesson, continues to astound and amaze us as it slowly consumes my entire career forevermore. Here’s what’s going on with the site today:

  • My PHP course is proceeding apace. We are in week six of the course and no one’s brain has exploded yet. (At the same time I’m also teaching a modified version of the course for our partner, the University of Victoria.)
  • We started our first session of Introduction to Web Publishing (our WordPress course) this week.
  • The indefatigable Zed Shaw’s Introduction to Python Programming will start on November 8. There’s still space in this course, but it’s looking like it will fill up — you can sign up for the course here.
  • We are talking to a few more interesting instructors and hope to have some new course announcements in the next week or two.
  • We added a few new courses to our catalog to see if there’s interest: Google Chrome Extensions, a PayPal course, and a few more that you can see on our newly-compacted course catalog page. If any of these courses are interest to you, click on the big orange Add Course button to let us know you’re interested. (Some of our courses don’t make it onto our schedule until there’s sufficient student interest.)
  • We are itchingly close to announcing our first free course which will be sponsored by an awesomely excellent technology company of which we will be able to hopefully disclose more information soon.
  • We are having some interesting preliminary discussions with prospective investors who are mightily impressed at the fact that we have figured out a way to get people to pay for goods and services on the Web. Yay us!

Overall I can say that I’ve been blown away to the response to what we’ve been doing, and I’ve been particularly heartened by the dozen or so people who have stepped up to teach courses, suggest new topics and otherwise refine our offering. Thanks, all you cool folks.

Upcoming CodeLesson Courses

It’s hard to believe it’s been less than six weeks since we’ve launched CodeLesson. The response to the site has been terrific and we’re having some enlightening conversations with students, instructors and others about what they want to see from the site.

My CodeLesson PHP course is in progress, and it’s going really well. It’s a small, energetic group, more than one of whom are fellow startup CEOs, which was great to hear. We’re all about smashing the divide between the geeks and the suits.

Meanwhile, we’ve brought on a team of instructors to teach some more courses, a few of which are on our course schedule now:

  • Introduction to Programming in Python will start November 8 and will be taught by the most excellent Zed Shaw.
  • Introduction to Web Publishing is our introductory WordPress course. If you’ve ever wanted to run your own Web site but weren’t sure where to get started, this course is for you. This course doesn’t involve coding, but it does cover how to set up, configure, and manage WordPress from beginning to end. The course also covers new features of the recently-released WordPress 3.0. I’ll be teaching this course, which will start on October 18.
  • Developing WordPress Themes was just announced last week; this is a more advanced WordPress course that will show you how to use your HTML and CSS skills to create custom WordPress front-ends. The instructor for this course will be Cheryl Chung.
  • We hope to run a session on The Ruby Programming Language in November. We should be able to announce the instructor in the next week or so, but the guy we’re talking to has written a few books on Ruby and is basically drenched in awesome sauce.

We have a few more courses lined up (JavaScript and jQuery are biggies with me), and we’re also taking suggestions for new courses. Which courses would you like to see taught on CodeLesson? Let us know.

Also, we’re starting to get requests from businesses who want use CodeLesson to teach courses on their technology products. We’re calling this “CodeLesson for Your Business”;  we should have some announcements with specifics about how this will work around the holidays. For now, if you have a technology product that you want to provide training for, let me know in the comments and let’s talk.

The Great Yahoo! Developer Experiment is Over

From Yahoo! comes word that a number of popular developer products, including the MyBlogLog APIs as well as Maps and Local APIs, are soon to be shut down.

The announcement is as tone-deaf as it is disingenuous; it starts by saying that Yahoo’s “commitment is unwavering” and then goes on to vaguely enumerate the number of products they’re eliminating. (Which begs the question: What does “unwavering” actually mean to Yahoo? If your surgeon has an “unwavering” commitment to your health, is it OK for her to occasionally perform surgery without anesthesia? How much am I permitted to waver and still be able to say that I’m unwavering? Could it be possible that to Yahoo, “unwavering” actually means the opposite of what everyone else in the world thinks it means?)

This is a big problem because for every API that is taken away, applications will break. It’s a bigger problem for Yahoo because the more thoughtlessly they manage their platform, the more difficult it will be for anyone to trust them in the future.

When I went to work for Yahoo in 2005 I was given the mission of opening the company to third-party innovation through Web services and other developer products, to create a platform that would endure for the ages, enabling developers to create amazing new applications (and, hopefully, accelerate Yahoo’s business). It’s become clear to me now that this was really just a poorly-conceived experiment, not a serious attempt at creating a platform, and I say this not as an ex-Yahoo employee, but as someone who advises businesses on platform integration today. In other words, my reaction to this is professional, not personal.

So my professional advice for prospective platform providers is to do whatever you can to avoid emulating Yahoo. For developers and companies who are thinking about doing any kind of integration with Yahoo, do whatever you can avoid them until the company’s commitment to providing an open platform is more clear. From a developer and platform perspective, Yahoo is unsafe at any speed.

My Contact Info

How cool is this, I just discovered the coolness that is qrcodes and stuck my contact info in one:

If you have a mobile phone with a barcode scanning app you can use it to read this right off the screen and it’ll plop all my contact info into your contacts. Super cool! I just tested this with ShopSavvy for Android but I’m sure it’ll work with other barcode scanning apps as well.

Updated VPS Hosting Price Comparison (June 2010)

Update: There’s a more recent version of the data below at

Linode announced that they’re increasing the amount of RAM by a lot (like 40%) on all of their virtual server products today. I’ve been watching pricing for a few of these services for about a year now and I’ve made a few posts comparing pricing. Today, for most servers under 8GB of RAM, Linode is a better value among the services we’re tracking. Here are the details:

RAM (MB) HD (GB) Bandwidth (GB) Price/Month Cost/RAM Notes
Amazon EC2 Large 7680 850 1024 248.88 0.0324
Amazon EC2 Extra Large 15360 1690 1024 497.76 0.0324
Amazon EC2 Small 1740.8 160 1024 62.22 0.0357 Maybe buy Linode 1536 instead
Linode 512 512 16 200 19.95 0.0390 Best value for this size
Linode 768 768 24 300 29.95 0.0390 Best value for this size
Linode 1024 1024 32 400 39.95 0.0390 Best value for this size
Linode 1536 1536 48 600 59.95 0.0390 Best value for this size
Linode 2048 2048 64 800 79.95 0.0390 Best value for this size
Linode 4096 4096 128 1600 159.95 0.0391 Best value for this size
Slicehost 15.5GB 15872 620 2500 800.00 0.0504 Buy Amazon EC2 Extra Large instead
Slicehost 8GB 8192 320 2500 450.00 0.0549 Buy Amazon EC2 Large instead
Slicehost 4GB 4096 160 2500 250.00 0.0610 Buy Linode 4096 instead
Slicehost 3GB 3072 120 1800 190.00 0.0618 Buy Linode 4096 instead
Slicehost 2GB 2048 80 1200 130.00 0.0635 Buy Linode 2048 instead
Slicehost 768 768 30 450 49.00 0.0638 Buy Linode 768 instead
Slicehost 384 384 15 225 25.00 0.0651 Buy Linode 512 instead
Slicehost 1.5GB 1536 60 900 100.00 0.0651 Buy Amazon EC2 Small instead
Slicehost 1GB 1024 40 600 70.00 0.0684 Buy Linode 1024 instead
Slicehost 512 512 20 300 38.00 0.0742 Buy Linode 512 instead
Slicehost 256 256 10 150 20.00 0.0781 Buy Linode 512 instead

The chart is sorted according to best value, defined in terms of cost per megabyte of RAM per month.

This time rather than placing the data in a chart like I did last time, I calculated it in a spreadsheet so I could come up with a total cost per megabyte of RAM per month. I also included pointers to which product is the better value choice at each price point, so, for example, if you’re thinking about getting the smallest Slicehost machine, you’d actually be better off with a Linode 512, which provides twice the RAM for $0.05 less per month.

As in the past, I’ve stacked up two VPS hosting providers (Linode and Slicehost) against Amazon EC2. (I didn’t do Rackspace Cloud this time because I have yet to hear much about the reputation of that service, and they charge for bandwidth and storage separately so it’s more difficult to do an apples-to-apples comparison. Amazon EC2 charges for bandwidth/storage separately, too, but they provide a handy calculator for that and I couldn’t find anything comparable for Rackspace. Also, Slicehost is owned by Rackspace now.)

As in the past, everyone’s battling for supremacy at the low end but Amazon is still a better choice if you a) need a larger machine, b) need a guaranteed level of CPU, or c) need some of Amazon’s programmability features such as the ability to spin up new virtual machines automatically or if you’re going to use their automatic load balancing feature.

I’d been thinking about using Linode for a while and today’s pricing changes compelled me to sign up for an account for a few upcoming projects we’re working on. So far, so good — I like that Linode’s control panel is a little more granular than Slicehost’s, although I was initially tripped up by the fact that they don’t automatically boot a new instance for your when you provision it.

It’ll be interesting to see what Slicehost does in terms of pricing now, since they haven’t done anything significant there in the year since I’ve been paying close attention to these products.

Soon You People Will Be Calling Me Master

Today I got word that I’ve been formally admitted to the Master’s program in Computer Science at Colorado State University.

This program leads to the Master of Computer Science degree, which is a terminal, professional degree (as opposed to a research-oriented degree). Think of what I’m doing as the geek analog to an MBA.

I’ve actually been taking courses in the program since last year (which they helpfully allow students to do before they’ve been formally admitted to the program). Being able to take courses on a trial basis was vital for me since it helped verify that the material is at a level I can handle, although I’m carefully strategizing to avoid a few courses in the curriculum that involve a lot of crazy higher math. I’m a somewhat competent algebraist, but my last formal math course was in tenth grade.

The most common reaction I’ve gotten to this was “Why do you need to take more computer courses? You teach computer courses. You’re like mister software.” The truth of it is that there’s always more to learn no matter how much of a ninja you are (which is one reason why I love the field), but there’s a lot of academic CS I didn’t get in my undergrad years since I only took a few CS courses as electives (my undergraduate degree is in English). And although I’ve been doing technology teaching in various corporate settings since I was in my 20s, I want to open the door to potentially do more kinds of teaching later in my career, and having a Master’s would be a prerequisite for some of that.

A note to panicked clients and co-workers: None of this will change my work status or my city of residence; the Colorado State MCS program is all done online and I will be doing all of my coursework in my off-hours, mostly in my underpants. My plan is to progress through the program as slowly as humanly possible, taking a single course per semester until my planned completion in May 2013.

In Which I Do Various Interesting Things with Various Fine Universities

In the last six months I’ve been doing a few things with a number of universities:

  • I’ve been teaching a web design and management course for University of Victoria.
  • I just started teaching a similar course on web development for Minneapolis College of Art and Design. Both of the classes I’m teaching are online which makes the commute much easier.
  • I served as the judge for General Website Excellence as part of the 2010 California College Media Association awards. (The CCMA is an organization of college journalism programs.) Reviewing the two dozen or so sites, I noticed some interesting trends; I plan to blog in more detail about this after the awards are given out in April.
  • I’m working with Loyola Marymount University’s student media department on an upcoming overhaul of their Web site. This project just kicked off and I’ll probably do some blogging about it after the project is completed in a few months.

It has been neat to get back into teaching. I did a bunch of it early in my career, and I still give talks at tech conferences a few times each year, but I feel like it’s important to stay connected to the way that new learners approach the Web, and to see how they react to things that are outside of their comfort zones. I did an overhaul of the UVic web curriculum back in December, adding material about current Web development design practices (things like semantic markup, “Web 2.0”, frameworks, even a little HTML5).

Cities Starting to Collaborate on Open Data Initiatives

I’ve been keeping an eyeball on open data initiatives in local government for a while now, and as I’ve mentioned here we advised our consulting client BART on their open data initiative last year.

I just noticed that the upcoming San Francisco Open311 initiative is planning to coordinate its efforts with a similar initiative underway in Washington, D.C. with the ultimate goal of making their systems interoperable. This is outstanding news; it means that if a developer builds an application that targets a data set emitted by one government agency there’s a decent chance that application will work against any similar agency’s data.

After machine readability, interoperability is the final frontier for open data. It’s not enough to post meeting minutes online as PDFs (the format where data goes to die), and soon it won’t even be sufficient to post it in a machine-readable format; data needs to be structured consistently. If every municipality invents its own format, this movement will be stillborn.

Link: San Francisco and D.C. Set to Launch Open311 APIs

Price Points for VPS Hosting Services

Over the past few years I’ve done a few posts highlighting the differences between various virtual hosting services, including Slicehost (which we use today and are happy with) and Amazon EC2 (which we’ve used on behalf of consulting clients and also like quite a bit). But as more virtual hosting products with different price points come to market, it’s getting more difficult to know where the value is. So every so often I go through list prices for various services to see who’s most competitive.

As I’ve noted in these posts before, Amazon EC2 has gotten much more competitive on price for medium-sized servers. They have no true low-end offering; they’ve ceded that to providers like Slicehost and Rackspace (which are now the same company). Last week Slicehost added new intermediate-sized virtual servers with more granular pricing (such as 384MB and 768MB). But as you can see in the chart below, they’re still not competitive with other hosting providers; even the corresponding Rackspace offering is about half the price at the smallest size available, and the value gap becomes more pronounced as the virtual machines get bigger:

Hosting Price Comparison Chart

(You can click on the chart to see it full size.)

You can make value comparisons between similar products on this chart by comparing points that are proximate. For example, if you’re thinking of getting a 512MB Slicehost virtual machine, it may be more cost-effective to go with a 720MB Linode machine (to get more than 50% additional RAM for an additional $1/month) or the 512MB Rackspace VPS (to save $20 a month).

It’s hard to fathom why Rackspace and Slicehost have such different price points since they’re the same company now. I’m sure there must be some kind of genius marketing strategy at work here, or maybe they just thought that nobody would ever plot this out. There’s also the inertia factor (it’s not worth it to us to migrate several web apps off of a $38/month Slicehost machine just to save $5/month on hosting). Anyway, at $21.90/month, the 512MB Rackspace Cloud virtual server seems like a spectacular deal, even though you only get 20GB of storage with that (same as the corresponding Slicehost product).

But once you get to the point where you need a decent amount of RAM (1.7GB or more), the Amazon EC2 offering becomes very competitive, even if you use an on-demand instance. If you pay for a year up front with a reserved instance, EC2 is an even better value. However, this chart doesn’t factor in the cost of storage and I/O, which for Amazon EC2 machines is metered and billed separately and will be different depending on what you’re doing.

In this comparison, I’ve added Linode pricing for the first time. I’ve never used these guys myself but their offering seems to be comparable to what Slicehost and Rackspace Cloud do, and I know people who swear by them.

Of course, this graph doesn’t compare other factors such as local storage and CPU because I wanted to keep the graph reasonably simple. I typically go with RAM as a basis for comparison because it’s the biggest differentiator in terms of performance for most web-hosting scenarios. CPU comparisons for virtual hosting are also challenging because nobody but Amazon EC2 gives you a firm guarantee as to what kind of processing power you’re paying for (which, to me, is scandalous — the VPS hosting industry needs some standard performance benchmarks, pronto). Suffice it to say that if your application is CPU-bound, you should be looking at some of the high-CPU EC2 machines (which aren’t represented on this chart).

I should also repeat the apples-to-oranges disclaimer: EC2 has capabilities and features that the competitors listed here don’t have, such as the ability to create machine images that you can spin up programmatically. Amazon also has a commodity load-balancing service (which is very reasonably priced, only $0.008 per hour) which we’re planning to use on a client implementation soon. Also, Rackspace charges separately for bandwidth, as EC2 does.

At the same time, the other providers have features and services that Amazon doesn’t have, such as included durable storage, free online support (the main reason why we stick with Slicehost for the low-end stuff) and free DNS hosting (which we used to pay for separately; now it seems as if everybody in the world except Amazon provides this).

Why Location-Based Systems Will Have No Effect On Crime

I’ve been watching the reaction to this service that uses the Foursquare API to tell the world when someone isn’t home, with the implication that criminals will be firing up their expensive laptops to go find people to rip off. This is nonsense, and it’s kind of surprising that it’s gotten so much attention. I’m not going to use the tired rationalization “must have been a slow news day,” but I’m thinking it.

I look at this site as a provocative and sensationalist art project (which, to my mind, is one of the best kinds of art project). At the same time, it is an extremely poor commentary on the relative safety of broadcasting your location, and I say this as someone who spent a couple of years reporting the news on a daily cop beat. The city I covered was pretty small and relatively crime-free, so property crime was kind of a big deal. As a result, I wrote stories and police blotter items on property crime frequently. After spending time with the Sergeant of Detectives at the local police station nearly every weekday, I learned a lot about how residential property crimes commonly happen and how the police investigate it.

First (and this is a pedantic point, I realize), it’s impossible for your home to be robbed. Robbery is something that happens to you, not your property; it is legally defined as “theft by force or fear”. If you’re not home, there can be no robbery, by definition. Burglary is what this site is really talking about.

Second, the site doesn’t provide “a list of all those empty homes out there,” as it purports to. It provides a list of check-ins that people have voluntarily made that say they’ve left home. It doesn’t say where “home” is. It also doesn’t say whether there’s someone else at home, or when the person will be back. It also has no way of knowing if the person checking in is telling the truth about any of this.

Third, this project implicitly misrepresents the statistical likelihood of being a victim of a major property crime, which for most Americans is close enough to zero to not be worth worrying about. If the creators of this site were really concerned about peoples’ safety, they’d create a site warning people who were about to get into cars or eat a bunch of transfat, since those things are far more likely to kill you than robbery in our society.

There are generally two kinds of people who break into residences: someone who lives in the neighborhood (a teenager, for example, or a disreputable acquaintance) or someone who is a little off (with substance abuse or mental health issues, for example). In any case, the vast majority of people who do these kinds of property crime are in poverty or close to it. They’re generally not computer whizzes (if they were, they’d probably have a job using their computer skills instead of breaking into houses).

Ultimately, if someone is going to burglarize your house, they either already know your habits (because they live down the block and see you leave the house for work every morning) or they can figure them out pretty easily. There’s a very simple way to see if someone is home or not — sit in a parked car and wait for someone to come out of their house, or pretend to go door to door selling magazines until someone doesn’t answer the door. Both of these techniques are very commonly used by burglars, and neither of them require the investment of a laptop and extensive knowledge of online social systems. These tactics also happen to be easy to defend against (lock your doors).

My solution, of course, to just never leave my house. It’s difficult to find the time to get out with all the time I spend here cleaning my extensive shotgun collection.