This month I’m staying in a flat (that’s an apartment for you yanks) in the upper crusty town of Windsor. I’m quite pleased to be living less than a mile from Her Royal Highness the Queen, although for some reason she hasn’t invited me over yet. Not to worry, today a co-worker informed me that, in addition to my royal neighbor, there’s another very famous celebrity living a mere 3.5 miles from my front door.
Here’s a satellite image of the estate in question:
Can you guess the name of my famous neighbor? The first one to correctly identify my mystery neighbor in the comments below gets a free subscription to my blog, which is worth, exactly…nothing.
I can’t wait for the next block party.
You’ve probably heard the famous George Bernard Shaw quote about America and Britain being “two nations divided by a common language”. Everyone knows the common terminology differences like trunk/boot, elevator/lift, truck/lorry, etc. But after working in the UK for four months, I’ve collected some that you probably haven’t heard – sayings that are commonplace over here but sound genuinely bizarre to my unrefined American ears.
So, without further ado, here’s my list of the seven strangest things I’ve actually heard people say while living in England:
- cock-a-hoop – overjoyed, ecstatic, as in “She’s all cock-a-hoop about that new car”.
- faff – fool around, waste time, as in “Stop your faffing about!”.
- Bob’s Your Uncle – there you go, there you have it, as in “Take exit 4, turn left and Bob’s Your Uncle!”
- donkey’s years – a long time, as in “I haven’t played cricket in donkey’s years”
- having kittens – feeling nervous or concerned
- trundle – to ride a bicycle
- teaching your granny to suck eggs – telling you something you already know
In the interest of cultural exchange, feel free to suggest your favorite Britism (or Americanism) in the blog comments below. But enough faffing about – I’m all cock-a-hoop over today’s weather and it’s been donkey’s years since I’ve had a trundle. Cheerio!
My daughter, Maya, is growing up too quickly. At some point the little girl who used to love to jump into my arms turned into a sophisticated pre-teen with an aversion to displays of affection, especially toward her father. That’s why the hand on my arm took me by surprise.
It was one of those perfect spring days in Seattle: 70 degrees, sunny and breezy. Maya and I rode the log flume at Seattle Center and played some carnival games. As we walked around the fair grounds together, I felt the little hand on my arm and a brilliant day got even brighter.
The next day, Maya and I walked to the supermarket together and there it was again. Maya knew I was about to leave on a business trip so I imagine that might have had something to do with it. But whatever the reason, once again I felt the indescribable joy of that soft tug on my sleeve. It says to me: “I’m still your little girl”.
As we walked along, I thought about how my father probably felt the same way about me when I was ten and how quickly life passes us by. Someday, that hand will again be on my arm but for a different reason. It will say to me, “Don’t worry Dad, I’ll take care of you”.
Dear loyal readers, or should I say loyal reader (Hi Mom!),
Let me begin by apologizing for the long delay in posting to this blog. I’ve been a little busy since my last post in (ahem) January. Or, to be perfectly honest, I’ve been a little lazy since then. At any rate, sometimes you stumble onto something so beautiful or so terrible that you just have to share it with the rest of the world and that’s exactly why I’m getting back to work here.
So I’m visiting the British Library in London and there’s this wonderful computer based exhibition on historical audio clips. They’ve got clips of all sorts of famous figures in history, from all around the world. I notice there’s a little section on famous American political icons, featuring audio from the likes of FDR, JFK and Harry Truman. Oh, and I notice they’ve got a clip of George W. Bush. I can’t resist clicking that one, wondering what he could have possibly said in his eight years of incoherence, which would have been worth capturing in this august collection. And what I hear is…
The “Peeance Freeance” speech set to a kind of rap/vocal backing. I thought I had heard all the famous Bushisms by now but this one was new to me. To experience the full joy of this gaffe, check out this youtube video (the music is by the George W. Bush Singers from their CD “Songs in the Key of W”):
So the curators of the British Library decided the most noteworthy audio clip representing our last president was a blunder set to music. How appropriate.
How do you know when you’ve enjoyed a book? That seems like a silly question, doesn’t it? But books are mixed bags, not all good or all bad. Often, when I finish a book I like to stop and ponder whether and how much I liked it. A good metric is to ask yourself “Would I recommend this book to a friend?”. But here’s an even simpler way to measure how well you liked a book: How fast did you read it? The best books beg to be read – they seem to jump into your hands and refuse to be put down until their story is told.
Shortly after I started reading “The Miraculous Journey of Edward Tulane”, by Kate DiCamillo, aloud to my daughter, I realized this was no ordinary children’s book. It’s a surprisingly dark and tragic tale, punctuated by occasional moments of transcendent joy. In Edward’s world, as in the real world, good deeds often go unrewarded and sometimes bad things happen to good rabbits. But above all, this is a simple and compelling story told with such exquisitely beautiful prose that it nearly reduced me to tears several times. When we finished the book, my daughter remarked “this is my new favorite book” and, amazingly enough, I felt the same way. Writers who can thoroughly satisfy children and adults at the same time are few and far between (Roald Dahl comes to mind).
Judging by the reviews on amazon.com, this is one of those books that people either love or hate. Although overwhelmingly praised, the few negative reviews complained that this book is too disturbing for children. But my sense is that children are more sophisticated than we give them credit for. They sense and respond to honesty, which is why I think this book ultimately works for them.
When I reflected on how much I liked this book, I didn’t need to analyze much – my daughter and I raced through it, never wanting to stop reading, which, by my metric above, tells me everything I need to know. As for my daughter, her review is nicely summarized by the following direct quote: “Dad, can we read just one more chapter before bed? PLEASE???”. That’s music to any parent’s ears.
Have you ever worked on basic math problems with your kid and noticed a certain fixation with their hands? Kids are smart – they figure out how to hide the fact that they’re counting on their fingers. But that tell-tale delay is a dead giveaway. Here’s how I helped my daughter work through this phase…
I’ve always found that whenever I write something down on paper, it somehow eases the memorization process so I had my daughter write the basic addition facts for the digits 0-9 on a piece of scrap paper. We did this for a few days and then I quizzed her occasionally with some home made flash cards. Not surprisingly, she didn’t relish these flash card sessions so I thought “what’s more fun for kids than computers?” and RoboDad was born.
RoboDad automates the testing process in a gentle and fun way. You can choose the type of test, the number of digits to work with, the number of seconds to allow for an answer and the number of questions. I’ve added support for addition, subtraction, multiplication and music note recognition. At the end of the test you get a detailed summary of the results.
This worked well for my daughter so I’ve made it available on the web here for anyone to use. Feel free to comment below if you have any problems, suggestions or feedback of any kind.
I have to say, Apple really blew it here. They appear to require use of a custom object oriented variant of C for OS X developers only. Why not use C++? It’s technically mature, readily (and freely via GNU) available, widely used, works on nearly every computing platform and is an international standard. I’m sure this is because Objective-C has been around for a long time and is the de facto language for Mac developers but programmers care about the languages they use so this seems like something that will actually inhibit developer excitement. Don’t get me wrong – there are going to be legions of people writing iPhone apps, but it will be in spite of Objective-C, not because of it. Getting down off my soapbox now…
In my next post, I’ll take on a very important question: what should my app do? That may be the most important decision you can make because it influences the complexity, content and usefulness of your app.
As a long time chess player, I’ve often thought of chess as a metaphor for life. Decisions made at the chess board, like those made in life, can never be undone so you need to choose your moves carefully. As Thomas Wolfe said, “You can’t go home again”. In chess, as in life, you can play a perfect game, only to throw it all away with one bad move. And I’ve often been fascinated by the way a player’s style over the board mirrors his or her personality. My wife plays a cautious, analytical game whereas I tend to play impatiently, relying on intuition, often overextending myself.
Bruce Pandolfini, national master, prolific chess author and teacher, and inspiration for the chess tutor in Searching for Bobby Fischer, has written a tiny (105 pages) gem of a book that examines the idea of chess as a metaphor for decision making in business. Each chapter examines an important principle in chess and then shows how that concept applies in the business world and in life. Some sample themes:
- Play with a Plan
- Look at Your Opponent’s Move
- Don’t Overextend
- Seek Small Advantages
- Don’t Apply Principles Mechanically
It’s worth noting that this is not really a “chess book”, per se – it doesn’t attempt to teach the reader how to play or improve their chess game in any specific way and it doesn’t require or expect the reader to know anything about chess. The focus is on what we can learn from sound chess principles and how we can apply those same ideas to business and life decisions. It’s interesting and, I think, healthy to ponder how the ideas in this book might help you in your own personal game of chess – you’re playing one every day, whether you realize it or not. :)
In my last post in this series, I promised to spend a day or two reading the iPhone developer’s getting started documents and then report back on what I’d learned. In typical fashion, it’s taken me more like 4 days. Not because it’s difficult – it’s just that I’m incredibly lazy. So without further ado, here are some things I’ve learned:
- iPhone OS Overview – This document summarizes the various layers in the iPhone. The iPhone kernel is a variation of the same OS X kernel (derived from Mach) running in the Mac. Of the four layers described (core OS, core services, Media, and Cocoa Touch) the former is the one on which you’ll want to focus your attention. More specifically, there are two programming frameworks in the Cocoa Touch layer that serve as the most important API’s in your application: “foundation” and “UIkit”.
- Tools for iPhone OS Development- This document summarizes three key developer tools: Xcode, which is the Integrated Development Environment (IDE) for both Mac OS X and iPhone (sorry PC, as noted in an earlier post, you’ll need a Mac to run these tools), Interface Builder, which is a drag and drop style UI construction tool, and Instruments, which is a real time performance data gathering facility. Another interesting developer tool is the iPhone simulator, whch allows you to test your app on a virtual iPhone. Xcode supports real time debugging of your apps on both the iPhone simulator and a real iPhone.
- Learning Objective-C: A Primer - This isn’t really much of a primer – it’s more of a high level summary. Even if you are an old time C programmer, there is a lot to learn here. Give this a quick read but eventually you’ll want to review the authoritative source on Objective-C, which can be found here. I have to say, based on what I’ve seen so far, I am not a fan of this language. I’ll elaborate further in a future post but for now this is the only game in town so if you want to develop iPhone apps, you’ll have to swallow this pill.
- Signing Code for iPhone Development – This is a high level summary of the code signing process Apple uses to ensure that you, as the author of record of an iPhone app, are who you say you are and that you don’t change your code after it’s been released. Don’t worry about this too much for now – you can deal with code signing down the road when you have an application to sign.
- Creating an iPhone Application – This is a very nice tutorial, which walks you through the creation of a sample application (“MoveMe”). Here’s what MoveMe does, in a nutshell:
Touching the Welcome button triggers an animation that causes the button to pulse and center itself under your finger. As you drag your finger around the screen, the button follows your finger. Lift your finger from the screen and, using another animation, the button snaps back to its original location. Double-tapping anywhere outside the button changes the language of the button’s greeting.
You can download the code, build and test it yourself. The MoveMe app exercises a bunch of iPhone facilities so it gives you a good idea about how to do several specific tasks while at the same time giving you a general sense of how iPhone applications are structured and how the developer tools work.
- iPhone OS for Cocoa Developers – This document is nothing more than a couple of paragraphs saying, basically, “if you’re already a Mac developer you already know how to use Cocoa”. Not a lot of help since I don’t fall into that category. Fortunately, the Cocoa Fundmentals Guide provides a comprehensive description of the Cocoa application environment. I’m (slowly) working my way through this document.
- Frequently Asked Questions – This is a handy collection of commonly sought information, organized into neat categories. An ambitious developer might comb through these pearls of wisdom but I’ll read ‘em when I need ‘em.
Finally, one important document which is not mentioned in the list of getting started docs (it’s in the reference libary list) is the iPhone Application Programming Guide
, which is a free, useful and comprehensive reference manual for iPhone app developers.
So, my next step is to download, build and test the MoveMe app, per the “Creating an iPhone App” doc, which should help me get the hang of a basic app and also some familiarity with Xcode and the other developer tools. At the same time, I’ll be working my through the Cocoa Fundamentals Guide. Someday, I’ll actually write some code of my own… :)
It is. By one second. At 11:59:59 pm Universal Time, one additional second will be added before the official arrival of 2009. The reason? To make a minor adjustment for the slowing of the earth’s rotation, we need to add a “leap second” this year for the 24th time since 1972.
Here’s a better explanation:
Why does the world need leap seconds? Chalk it up to the moon’s braking action on Earth’s rotation and to modern timekeeping that has become so precise it can make your head spin.
The moon is the single largest influence on Earth’s spin, slowing it by an average of 2 milliseconds per century. Since Earth’s rotation rate varies, so would the value of one second when it’s defined as a fraction of the time it takes for one spin of the Earth on its axis.
So where a leap year periodically makes up for the difference between a year on the calendar (365 days) and a year’s trip around the sun (365 days plus 6 hours), the leap second makes up the difference between an atomic clock’s second and one second as defined by astronomical time keeping.
You can read all about it here. So you now have a good excuse to sleep late tomorrow. Happy Leap Second!
Are you the kind of person who, upon receiving a new electronic gadget, tears open the package, tosses the instruction manual aside and starts using the new gizmo immediately? Or do you sit down and read every word of the manual before trying your new toy? I’m somewhere in the middle of that spectrum. I like to read enough to make sure I’ve got the basics but I don’t have the patience to digest the whole user’s guide before I touch anything.
You’ll have a similar choice to make after downloading the iPhone SDK. You could just start running the development tools and “feel your way around” but, chances are, you’ll waste a lot of time that way (and get very frustrated in the process). On the other hand, you could spend days or even weeks watching videos and reading documents before writing a single line of code, which could cause you to lose your momentum and never quite make it to writing the next great iPhone app.
On the download page, Apple offers two collections of getting started material: videos and documents. I’m opting to use the latter simply because I can control the information mining process much more effectively by reading a document than I can by watching a video. If I get very interested in a particular topic, I may try one of more of the videos but for now I’m viewing those as reference material.
If your goal, like mine, is to write a real iPhone app in this lifetime then I would advise making a quick pass through the seven getting started docs, as follows:
- iPhone OS Overview – fast skim for background
- Tools for iPhone OS Development – fast skim to understand what each tool is used for
- Learning Objective-C – A Primer – slow skim to get up to speed on the language
- Signing Code for iPhone Development (skip it – worry about this when you have an app to sign)
- Creating an iPhone Application (slow skim)
- iPhone OS for Cocoa Developers (slow skim)
- Frequenty Asked Questions (fast skim for background)
I’m planning to spend a day or so skimming the above material. I’ve highlighted the three documents on which I intend to spend the most time in boldface type. When I’m done I’ll report any findings of particular interest and then I’ll move on to writing my first app.
The first thing you need to know is that Apple’s official software development platform for the iPhone works only on OS X so if you are a PC-only household you may be out of luck. Fortunately for me, my daughter has a MacBook, which she’ll share with me if I’m extra nice to her.
Now for the requirements: you’ll want to have software release 2.2 loaded on your iPhone and OS X version 10.5.5 (or later) on your Mac. The iPhone SDK takes roughly 4.4 GB so you’ll need at least that much free space on one of your local hard drives.
So now you’re ready to download the iPhone SDK (software development kit), which can be done from this site: http://developer.apple.com/iphone/sdk1/. You’ll need an Apple ID, which you can create via the “Create Apple ID” link at the above URL.
If and when you get serious about distributing apps to real customers via the iTunes app store, you’ll need to apply to the iPhone Developer Program, which will set you back $99 (one time charge, not per app). The good news is you can “try before you buy”, i.e. download the tools, write and and test some apps, play to your heart’s content, before you commit to the $99 enrollment fee.
I’ll have more to say about the development tools, the IDE, the language, the API, etc. but for now I just wanted to share some quick guidance about getting started. The good news is that if you have a Mac with some available disk space, it’s easy and free to set yourself up as an iPhone developer.
I bought myself an iPhone 3G a few weeks ago and I’m delighted with it. If you think about it, there’s really no fundamentally new technology associated with this device – what’s really great about it is the way in which it combines so many existing technologies into one elegant package. It’s the swiss army knife of cell phones. I use my iPhone as a:
- mobile phone
- email client
- digital camera
- calendar and contact manager
- mobile web browser
- navigation system
- music player (with video)
- portable game system
- stock tracker
and that’s just with the standard apps that come with the phone. With some additional (mostly free) apps, I’ve made my iPhone into a:
- voice recorder
- guitar tuner
How cool is it that one small device that fits in my pocket can do all those things? And with the iTunes app store, the sky’s the limit.
Perhaps the coolest feature isn’t even on the list above because it’s hidden from view: whenever your iPhone 3G is in range of a wifi service, it will automatically try to use wifi, which will give you big performance boost over AT&T’s 3G data network.