July 8th, 2009
I’ve been doing some iPhone and iPod Touch development and if like me you’re used to web development in languages like Ruby, Java, and Python, the learning curve to build a native iPhone app in Objective C is quite steep. Since my applications are online (in that you need to be connected for them to be useful) I was pysched to find a much easier way using two great open-source tools:
iUI consists of Javascript/CSS/images that allow you to build a mobile version of your app that looks and feels just like a native iPhone app
PhoneGap lets you create an iPhone application (that can be submitted to the app store) that displays a framed mobile version of your site
To build your iPhone app: Read the rest of this entry »
Posted in Ruby on Rails, Software Engineering, Web | No Comments »
January 15th, 2009
Back in my days doing SAP I got intimately involved in Oracle performance tuning and there is a LOT to know! However, for the past 9 years I’ve been working almost exclusively with MySQL (with a little PostgreSQL thrown in) and while I don’t do nearly as much DBA work these days, I still find myself troubleshooting a query or tuning my.cnf. While in general I find MySQL to be a lot more straightforward to work with, it’s still equally important to tune it for your applications needs.
To that end one of the tools I want to give a shout out to is the MySQL Performance Tuning Primer Script. You download and run it against a production system Read the rest of this entry »
Posted in Database, FreeBSD, Linux, MySQL, Systems Administration | No Comments »
January 10th, 2009
At Common Sense Media I wanted to get some functional testing up and running that didn’t require a lot of user training for the QA folks. I also wanted those tests to run in our Rightscale/Amazon EC2 hosted Hudson continuous integration server. As a result I’ve published the:
Selenium Selenese Continuous Integration Runner
on GitHub in the hopes that it will save other people time when trying to get their Selenese tests running from a continuous integration server. It’s very simple but one thing I battled with was that I had to patch the selenium JAR to get it to work with Firefox 3.0. It should work fine in any continuous integration server regardless if it’s Hudson, Cruise, Cruise Control, Bamboo, etc.
The functional testing products I’ve used that drive a real browser include Test Complete (commercial), Selenium, and Watir. I think all 3 do a good job but one thing I like about Selenium is that it’s dirt simple to get a user productive with the Selenium IDE Firefox plugin. However, that benefit is also the most limiting factor of the Selenium IDE which is that to be able to re-open tests in Selenium IDE you have to save them as Selenese (which is the most limited of the testing languages that Selenium supports). Still, I think Selenese is a reasonable choice for a lot of organizations that need a moderately sophisticated functional test suite.
Posted in Agile Development, Continuous Integration, Java, Javascript, Quality Assurance, Software Engineering, Testing | 3 Comments »
December 22nd, 2008
Update 7/8/2009: With the latest batch of user submitted patches standalone migrations now works just like Rails migrations
Update 12/26/2008: I switched standalone migrations to use a Rakefile instead of a Ruby script.
In my work managing websites I end up working in Ruby, Java, and PHP. In everything but Rails managing the schema requires rolling your own solution. As a result I’ve started using Rails migrations in non-Rails projects to manage the schema. It’s not much code but I figured others might benefit from it so I created a little Github project called standalone migrations.
It’s based on Lincoln Stoll’s blog post titled Stand-alone ActiveRecord migrations and David Welton’s blog post titled Using Migrations Outside of Rails.
Assuming you have Ruby and Gem installed on your machine, here’s how to use it:
gem install -y activerecord rake mysql
wget http://github.com/thuss/standalone-migrations/zipball/master (or fetch it using git)
unzip it, and mv to something like my_non_rails_project/db
cd my_non_rails_project/db/ (or wherever you put it)
cp config/database_sample.yml config/database.yml
vi config/database.yml
./new_migration some_user_story
vi migrations/*_some_user_story.rb
rake db:migrate (this applies your newly created migration)
Posted in Database, Java, Linux, MySQL, Ruby, Ruby on Rails | 3 Comments »
November 14th, 2008
After 3 Ubuntu upgrades on my primary workhorse (a Lenovo Thinkpad z61t) I decided it was time for a fresh install to remove all the cruft. In the past I’ve always used 32 bit Ubuntu (even though my laptop is a 64 bit Core 2 duo) because of issues with the Flash plugin, Java plugin, and Skype. After backing up my files I bit the bullet and did a fresh install of 64 bit Ubuntu Intrepid Ibex and in the process also decided to give XFS a shot instead of EXT3 as my primary filesystem.
I’m pleased to say that after 3 hours I had the install done and all of my software installed and working including Jetbrains IDEA, Netbeans, Skype, VirtualBox, Flash plugin, Java plugin, Web Developer Toolbar, and Firebug. Apparently things have gotten a little better for 64 bit Linux over the past year and a half! However, I’m still running into odd issues every now and again related to both Sun’s 64 bit Java (IDE and Jetty occasionally hangs) and the the Open JDK browser plugin which is still buggy. Hopefully future updates will help address these issues. Anyhow, I thought I’d throw out the links I used to get everything working:
Fonts
Howto: Install Mac Fonts on Ubuntu
Make Firefox in Ubuntu look much better
Skype
Add the Medibuntu repository
sudo apt-get install skype-static
Flash plugin
Install Flash 10 Under Ubuntu Linux 64 bit Edition
Java plugin
sudo apt-get install openjdk-6-jre icedtea-gcjwebplugin
Posted in Desktop, Java, Linux | 1 Comment »
June 8th, 2008
October 4th, 2007 was my last day as the VP of Technology at GreatSchools when I handed the reigns over to Chris Pickslay so that Susan, Sequoia, and I could take off on our sailboat to Mexico for 6-12 months. It was a great 4 years leading the tech team at GreatSchools and I was sad to leave such a terrific job and group of people but both Susan and I were really feeling the itch for some adventure under sail. Our plan was to explore the Baja peninsula, mainland Mexico, and of course the lovely Sea of Cortez.
Read the rest of this entry »
Posted in Sailing, Travel | No Comments »
August 15th, 2007

Working at GreatSchools we do a lot of CSS work and we have a number of CSS books on our library shelf. However, last month we picked up a copy of Transcending CSS and it’s far and away the most enlightening book on CSS I’ve read. We’re already changing the way we do our CSS for the better as a result.
Having worked with a lot of front-end Read the rest of this entry »
Posted in Design, Web | 1 Comment »
June 12th, 2007
Update 6/14/2007: Dion Almaer has published a nice Javascript helper which makes working with spreadsheets much nicer, I’ve moved my stuff to it and it’s a big improvement over using the Google JSON api directly.
Publishing dynamic content on your website in a format that you can style with CSS has gotten a whole lot easier with Google’s simple JSON based Javascript API’s. The two I’ve found myself playing with lately are the Google Ajax Feed API for publishing RSS and Atom feeds and the Google Spreadsheet API
for publishing little snippets of text that should be easily editable.
Say you want a simple headline on your homepage that you can change daily. Here’s how you’d do it with the Google Spreadsheet API:
1. Create a spreadsheet making the first row the column headers (important because you’ll refer to the cell by the column header):

Read the rest of this entry »
Posted in AJAX, Javascript, Software Engineering | 9 Comments »
May 22nd, 2007

Hello lazy web, I’m looking for some advice on caching proxy servers and thought you might have some good pointers!
We currently front our site with 3 caching proxy servers to offload static content from the web servers and we haven’t found the right solution yet. We’ve tried a number of solutions including Oops and Apache with mod_cache (which we’re currently running) but they are either missing a critical feature, have buggy caching behavior, or crash under heavy load. The main features I’m looking for are:
Read the rest of this entry »
Posted in Systems Administration, Web | 7 Comments »
May 1st, 2007
I’m thrilled that GreatSchools has won the Webby People’s Voice Award for best Family/Parenting site. We’ve been in the nominations before but I think continued growth and brand awareness through a largely redesigned site helped push us over the top this year.
Read the rest of this entry »
Posted in Design, Web | No Comments »