Running Free

14 August 2010

This was an article I wrote a few months ago, but for some reason forgot to tidy up and actually publish. I’m doing so now as after re-reading it, I still think it’s right, and if anything it’s even more pertinent now given Apple’s “antennagate” issues with the iPhone 4, and the news that Android phones are now outselling the iPhone.

I already dropped a link to this article (ironically penned by Daniel Lyons, of Fake Steve Jobs fame) in my recent link post, however there was a really interesting point in that article that I wanted to follow up on. Daniel says:

I was a little shocked recently when an Apple spokesbot responded to the news of Android’s outselling iPhone OS by reciting the old chestnut about Apple’s having more phones out there.

I was shocked because it’s a familiar line, one that I’ve heard countless times in my 20-plus years covering technology. But I’ve only ever heard it from companies that are doomed and in total denial about it.

We’ve seen this movie before. In the 1980s, Apple jumped out to an early lead in personal computers, but then got selfish. Steve Jobs, a notorious control freak, just could not play well with others.

Along came Microsoft, with Windows, which was a knockoff of Apple’s operating system. Microsoft partnered with everyone and today has 90 percent market share, while Apple’s share lingers in the single digits.

Today the battlefield is mobile devices, and just as before, Apple jumped out to an early lead. And just as before, Jobs got selfish. He won’t support Flash, or any cross-platform tools—because he wants developers locked into his platform, and his App Store, where he collects a 30 percent commission.

I find this fascinating, not only because it rings very true to what’s actually happening, but also because there aren’t a huge amount of people picking up on it. Sure, there are lots of people switching to Android. Sure, there are lots of people questioning what Apple are doing. But specifically comparing this to the last time Apple became irrelevant? Wow, who knew there were so many similarities?

Right now the path that Apple are going down is very odd, and one that I’m surprised no one within the organisation is questioning or doubting (or perhaps they are, albeit not publicly). While they are no doubt a very successful company, they are also stifling innovation, and as Daniel says, they appear to be trying to make as much money off of the ecosystem they themselves created as possible. That tends to only end up with one result - people will want to look for platforms that encourage innovation and competition, and that share the wealth and respect a little better. Apple’s strategy might be working in the short term, but is ridiculous over the longer term, and I think they will need to address these concerns with their next generation of mobile device and platform, or else perhaps they’ll simply be doomed to repeat history, and consign themselves to always being the company that could start a trend, but sure couldn’t bask in it.

Discipline

29 May 2010

I’ve just finished reading Cesar’s Way, a book written by The Dog Whisperer, Cesar Millan. It’s a fantastic read if you have a dog, and has really helped me better understand our gorgeous pet Dalmatian Rocky. Some of the insights though are more profound than just how they relate to our canine friends. In particular, Cesar’s take on discipline I found to be very interesting:

To me discipline is a word that helps me to stay on target, to reach my goals and dreams. It’s a word that allows me to stay balanced, to be a respectful human being, an honest human being, someone who wants the best for himself and for everything around him - from trees, to animals to human beings.

It’s easy to see how being disciplined can help to set rules and boundaries for someone else - whether it’s for a child, an apprentice, or a pet. However, self-discipline is just as important for us to be able to achieve our own goals, whether they are personal, or as part of a broader team or group effort. Often self-discipline is harder than being disciplined on someone else’s behalf. When working with someone else, we might find that they are the motivation we need to stay disciplined, but without that motivation, it’s easier to slack off and convince ourselves that we don’t need to be so hard on ourselves. It basically comes down to responsibility - and being responsible for more than just yourself is great inspiration, and a great motivator to stay on track. With a baby on the way, and an incredible wife (as well as a pet puppy dog in need of leadership!), I feel like I’ve never been more inspired and disciplined, so that our goals and dreams as a family can be realised.

Tab Cleanup

22 May 2010

Haven’t posted in a while, been crazy busy with lots and lots of cool stuff. Figured it might be a start though just to post some recent great stuff I’ve been looking at and reading.

My Common Git Workflow - good article from Yehuda Katz about a basic Git workflow for common operations, specifically compared to the equivalent Subversion commands.

Smash Into Vim - PeepCode episode on Vim, a text editor that is getting a great deal of positive interest from a lot of Rubyists. I haven’t yet watched this, but am planning on doing so as I’m considering making the switch from emacs.

Localized external services - an interesting look at testing code that hits a remote external service API.

The WebM Project - an attempt at a truly open web video format, with some pretty big players involved.

Google Font Directory - Google now have a Font API for using non standard fonts in your web apps. Am I right in saying that this is similar to Typekit, albeit free, open but with less fonts to choose from?

Sayonara, iPhone: Why I’m Switching to Android - fantastic article that does a very good job of summarizing the reasons why Android is a far more compelling mobile platform than the iPhone. I just upgraded my HTC Hero to an HTC Desire and I’m even more impressed with Android now at version 2.1, and with the latest generation of phones.

autotest

13 January 2010
(2 notes)

I’ve just recently started using autotest again, and it’s making development so much easier, and more enjoyable. If you do any TDD (test driven development) with Ruby, you need autotest running, as it really improves the experience massively.

With autotest, and growl, you can plod away writing failing tests, implementing code so that they pass, and then rinse and repeat - all the way getting messages flash up telling you when tests are broken, and when tests are passing again. It’s a great way to iterate through writing code to meet user requirements, and incredibly satisfying as you turn failing tests into passing ones, with working code.

So what do you need to do to get it setup? You’ll need to install ZenTest, which contains autotest amongst some other tools:

sudo gem install ZenTest

You can then install the following gems too if you don’t have them already:

sudo gem install autotest-growl
sudo gem install autotest-rails

Finally, you’ll need to setup a small config file, called .autotest in your home directory (~/.autotest):

require "autotest/growl"

That’s all you need in that file, now just hop into a Rails project directory, and run autotest:

cd /path/to/project
autotest

You’ll then get output from the initial test run, and from now on while autotest is running, when you edit a file, it will re-run any tests it deems to have been impacted by a change to that file. It will pop up test failures and test successes as growl notifications too. To force it to re-run the entire test suite, press ctrl+c once. To end autotest completely, use ctrl+c twice in quick succession. Bear in mind for things like database schema changes, you’ll need to do the following to get the test database schema up to date and inline with the development database, otherwise your tests when being run under autotest will fail:

rake db:test:prepare

Now get cracking with those user stories, get those tests written, and then turn them from red to green!

Ruby on Rails Tutorial

9 January 2010
(2 notes)

Not a great start to my yearly goals - right after posting about how I want to blog every other day, I manage to go six days without a post! Time to try again, starting from today…

I was planning my next article as a follow-up to the Getting started with Rails 2.3.5 article I did in December, when I stumbled across this rather brilliant work in progress online tutorial book, Ruby on Rails Tutorial, by Michael Hartl (author of the great Railsspace book). Rather than write some more beginner articles that are probably covered by that material (or soon will be), I figured I’d point my readers in the direction of that resource, as it is certainly shaping up to be a great read for anyone just getting started with Rails.

So going forward I’m going to concentrate on some more advanced topics, and a few more interesting things perhaps for those who are already up to speed with the Rails basics. I’m going to be covering some of the alternative datastores popping up under the NoSQL umbrella - CouchDB and MongoDB on the document database side, and Redis on the key-value store side of things. I’m also going to have a play with the very latest Rails 3 code, so look for a few articles both on building a new app with Rails 3, as well as migrating existing apps.

And if anyone has any requests for intermediate or advanced topics they’d like to see me cover, then let me know. In the meantime, even if you’re an expert Rails developer, it’s still worth checking out the Ruby on Rails Tutorial book and helping Michael out with any feedback you might have.