Apple is just as proprietary as Microsoft

People love to complain about how Microsoft is too proprietary, and rightfully so. Linux/FreeBSD users can make that claim freely but when Apple users make it I cringe. Microsoft has done some “bad” things with API’s and interoperability and is a worse offender than Apple, however, Apple is by no means a saint of openness and isn’t shy about locking users in to their equally proprietary products and services. Here are just a couple of examples that come to mind:
Continue reading

Posted in Desktop | 19 Comments

My favorite family PC support moment

Almost every good nerd gets the pleasure of being the family’s go-to PC support person and it’s always great fun to sit around and swap amusing stories with fellow nerds.

When I gave my dad his first PC about 8 years ago, the initial support calls were frequent. Almost every visit back east involved some PC cleanup work. On one trip home I had to show my dad how to:
Continue reading

Posted in Links | 4 Comments

Hiring a senior MySQL and FreeBSD systems administrator

We’re hiring a senior MySQL and FreeBSD systems administrator to work at GreatSchools (a 40 person company) in San Francisco. If you or someone you know is interested in working on a high traffic website (1M page views per day) consisting of 18 FreeBSD servers, redundant load balancers, MySQL 5 with replication and so on send your resume to jobs-sysadmin at greatschools dot net. If you have a family or want quality of life and are interested in working a compressed week (4 days) or a reduced week (e.g. 32 hours) that’s a possibility too given the right candidate!

Posted in Systems Administration | Leave a comment

Major sites not conserving bandwidth with gzip content compression

At GreatSchools we do around 1M real page views per day and another 250k or so for crawlers. Before content compression we were running well in excess of 10Mbit/s during peak hours and were getting hit with bursting charges on high traffic months. When we switched our proxy servers to Apache with mod_deflate (gzip based compression) we saw a 35% decrease in bandwidth utilization and the 3 proxy servers that do the compression and sit in front of our 10 web servers barely register a load at all.
Continue reading

Posted in Systems Administration, Web | 3 Comments

Implementing CRUD HTTP style

I’m amazed by how often DHH can keep coming up with newer, simpler, and more elegant approaches to web development that really make you think. In his recent blog entry/keynote he discusses using HTTP’s PUT and DELETE methods to more elegantly model CRUD operations (slides of his presentation are here) and this is a good 3rd party summary of his keynote:

So rather than the old school approach of:
Continue reading

Posted in Ruby, Web | 1 Comment

June San Francisco Ruby Meetup

I attended the June 12th, 2006 San Francisco Ruby Meetup at CNet which was my first. There was quite a turnout, I’d guess maybe 80-90 people. The presentations focused more on process and lessons rather than in-depth technical sessions. Here are my notes: Continue reading

Posted in Ruby, Software Engineering | 3 Comments

Configuring MySQL sql-mode in Ruby on Rails

In my previous post I wrote about setting MySQL to a stricter sql-mode to make it behave like most other databases, however, I recently ran into a case where I couldn’t set the global sql-mode without breaking some legacy applications. I imagine this is also often the case when you host on a shared server where a global configuration change would be out of the question.
Continue reading

Posted in MySQL, Ruby, Software Engineering | 1 Comment

Creating subversion repositories for just about anything

I’ve been using Subversion for just about everything I work on including keeping my documents synchronized across multiple computers, backups, source control, etc… I got the idea a while back from Martin Fowler’s Bliki who uses it for a similar purpose. All you need to host your own Subversion repository is a shell account on a machine that you can SSH into. Sure, you could create a repository on your local machine Continue reading

Posted in Source Control, Systems Administration | Leave a comment

Modeling enumerated types in the database

Let’s say you have an Employees table and you want a column to track the status of an employee such as [’employed’, ‘resigned’, ‘retired’, ‘terminated’, etc…]. You have a couple of options including:

  1. Using your database’s custom enumeration data-type if it has one
  2. Creating an int or char column and let the mapping live in the code
  3. Creating a lookup table

Continue reading

Posted in Database, Ruby, Software Engineering | 3 Comments

When installing MySQL always set the sql-mode

As I’ve described before, MySQL has some appalling out of the box settings which will thwart your attempts at good data integrity! They’ve clearly seen the light though and at least give you an option to achieve good data integrity through foreign keys in InnoDB and proper handling of non-nullable fields and invalid values through the servers sql-mode setting.

To make matters worse it seems MySQL may have different out of the box settings per platform and per version. For example a friends 5.0.21 install on Windows XP had the sql-mode set with relatively strict settings whereas 5.0.18 on my Mac had an empty sql-mode. This only illustrates the necessity of always explicitly defining these settings with each install yourself so that you get consistent behavior.
Continue reading

Posted in MySQL, Systems Administration | 1 Comment