Archive for the 'Uncategorized' Category

English is hard

January 13, 2010

I asked my sister and father for help on a point of grammar. Each found a separate flaw in my example sentence.

Where does an adult go to improve his writing?


The New Airport Security

January 6, 2010

Rory and Aran fly to San Jose.

We pack checked baggage only, knowing we won’t be allowed to carry much on.

The airport is empty. Flying on Wednesday afternoon has its perks.

It takes a while to figure out that flying NorthWest Airlines means checking in at Delta.

We breeze through checkin. I had a cheerful, friendly agent who helped me through checkin and waived my checked baggage fee of $20. Rory was not so lucky, with a surly woman who gave no such favour.

Customs had a couple agents working and no line. My agent found out I was interviewing at Yahoo!, so he asked me why they should hire me instead of some other candidate.

The usual X-Ray screening station was overstaffed. We didn’t wait, and the agents with nothing to do were joking around.

Beyond usual security, there was a new station staffed with a dozen RCMP men and women. They were doing full pat-down searches and inspection of electronics. They were way more cheerful than the usual security types. I guess they still had their souls. We cracked jokes about my trying to earn a pat down from one of the cute female officers. (No luck.)

Total time from entering the airport to reaching my gate: Less than one hour.

5 months to go

June 29, 2009

Five months to go at U of T. What would you do?

Smartphones in Canada: Comparing the iPhone 3GS, HTC Dream, HTC Magic and Palm Pre

June 9, 2009

Here is my comparison of the four cool new smartphones available this month in Canada: The iPhone 3GS, available on Rogers and its kid brother Fido; the HTC Dream and newer HTC Magic available on Rogers; and the Palm Pre, available on Bell.

Pricing and cost

First, cost. The Canadian wireless companies compete gently and their plans are very similar. For an average smartphone plan, with a couple hundred minutes daytime, unlimited evenings and weekends, a few hundred text messages, a healthy data plan and a few necessities like caller ID and voicemail, we can expect to spend on the order of $100/month. Most of the providers require a three-year contract or carefully price things to make the contract worthwhile. That means we’re expecting around $3600 in recurring costs over three years. With this in mind, it doesn’t make a lot of sense to worry about the difference between an upfront $99/$149/$299/$499 for the phone: It’s a small slice of the pie. We use our phones all the time. We should just focus on getting the best phone available.

That said, the iPhone 3GS pricing is unannounced. It’s safe to assume it will look something like the 3G pricing at $300 with a three-year contract. The Magic and Dream are both $150 with a three-year contract, $600 without. The Palm Pre pricing is also unannounced.

Phone Price
iPhone 3GS ~$300
HTC Magic $150/$600
HTC Dream $150/$600
Palm Pre ?

Physical Dimensions

The Dream is a clunky beast next to others, weighing in at 158g compared to the iPhone and Pre’s 135g and the Magic’s trim 116g. The Pre and Dream are thick at around 17mm compared to the Magic’s 13.6mm and iPhone’s 12.3mm. This makes me sad, since my elderly Motorola L2 beats them all at 11mm.

The Pre is a little stubbier than the others, peering up from 100.5mm at the >110mm-tall others.

Phone Height Width Depth Weight
iPhone 115.5mm 62.1mm 12.3mm 135g
Dream 117.7mm 55.7mm 17.1mm 158g
Magic 113mm 55.56mm 13.65mm 116g
Pre 100.5mm 59.5mm 16.95mm 135g


The Dream and Pre both have physical keyboards; the Magic and iPhone lack them. I think in general a physical keyboard is a boon but not a deal-sealing killer advantage. Millions of happy Blackberry users will back me up that keyboards are good; Millions of happy iPhone users will back me up that keyboards aren’t strictly necessary. Though I haven’t played with one myself, I imagine that Google’s Android engineers have built a virtual keyboard that is every bit as good as Apple’s.

Phone Keyboard
iPhone Virtual
Dream Physical
Magic Virtual
Pre Physical


All the phones have Wi-Fi (802.11 b/g). I worry, though, about the HTC phones. The HTC spec pages customized for Rogers omits any mention of Wi-Fi capabilities, whereas it is mentioned in others carriers’ pages. Could Rogers be planning on funking with the Wi-Fi? I hope not.

The iPhone and HTC phones are GSM phones. These three all support UMTS/HSDPA and Quad-band GSM/EDGE. To be fair the iPhone supports one additional UMTS frequency, 2100MHz, but nobody cares. Rogers is building out an HSDPA network which currently covers most of metropolitan Canada. Since I live in Toronto, I would have access to it.

The Pre, being a Bell phone, supports CDMA/EV-DO on two frequencies. Translation: Slower internet. GSM is also better for travel in most parts of the world.

The Pre boasts Bluetooth 2.1+EDR, whereas the HTC phones have Bluetooth 2.0+EDR. 2.1 makes Bluetooth easier to use, among other minor improvements. The iPhone spec sheet claims Bluetooth 2.1+EDR, but it is crippled to support only handsfree/earpiece devices.

Short-Distance Radios
Phone Wi-Fi Bluetooth
iPhone Yes 2.1+EDR (limited)
Dream Yes 2.0+EDR
Magic Yes 2.0+EDR
Pre Yes 2.0+EDR
Long-Distance Radios
F(MHz) 850,1900 2100 850,900,1800,1900 800,1900
iPhone Y Y Y
Dream Y N Y
Magic Y N Y
Pre Y


All four displays are 320 by 480 pixel touchscreens. The iPhone’s is largest, at 3.5” diagonally, and the Pre smallest at 3.1”. For crisp readability, what matters most is the pixels-per-inch. The iPhone is 163ppi; the others are higher. So there is a tradeoff between crispness and size here.

Phone Display Diagonal
iPhone 3.5”
Dream 3.2”
Magic 3.2”
Pre 3.1”


All four phones have 3 megapixel cameras. The Pre has a flash, which is nice, though it must make the battery cry in hot, lithium-ionic pain. The iPhone records 640×480 video. Android supports video recording in software; I’m not sure what resolution these particular phones can sustain. The Pre doesn’t support video out-of-the-box, though Palm has said they might add the capability in software later.

The iPhone and Pre have ambient light and proximity sensors. That means the display can adjust itself to light conditions, and the phone can tell when you’ve put it up to your face. All four phones have accelerometers and digital compasses.

Side note: Digital compasses are awesome, because it means your maps always point the right way. Since I have the geospatial IQ of a toddler on ecstasy, I need this.

Phone Camera Video Light Proximity Accel. Compass
iPhone 3MP 640×480 Y Y Y Y
Dream 3.2MP Y N N Y Y
Magic 3.2MP Y N N Y Y
Pre 3MP (flash) N – maybe later Y Y Y Y


Raw specs. It’s very hard to make apples-to-apples comparisons here.

The iPhone wins on raw storage capacity. The HTC phones are weak on built-in storage, but they have a MicroSD slot. The biggest MicroSD cards are 16GB.

I don’t know what kind of processor the iPhone has; suffice to say it’s good. The Palm Pre apparently sports an ARM Cortex processor, which is a true beast of a machine if true. This seems odd though, given its stated lack of 3D support.

This is the area where the newer Magic beats down its sibling Dream. The extra RAM is necessary given the desire to use several applications at once.

Phone Storage Processor RAM +MicroSD 16GB
iPhone 32GB ? 600MHz 256MB N
Dream 256MB Qualcomm 528MHz 192MB Y
Magic 512MB Qualcomm 528MHz 288MB Y
Pre 8GB ARM Cortex ? N


I’m forced to rely on manufacturer claims here. I care mostly about battery performance when using the phone in a 3G environment. Apple claims 5 hours of talk time or internet use for the 3GS; I don’t know the battery specs. The Pre and Dream have 1150 mAh batteries, not as enduring as the Magic’s 1340 mAh battery, but that doesn’t say much. The battery life depends on the software and the performance of all the hardware in the device. So we can guess that the Magic will outlast the Dream, but we can’t easily compare the iPhone with the Pre or HTC phones.

Phone Battery
iPhone 5 hours
Dream 1150mAh
Magic 1340mAh
Pre 1150mAh


Operating Systems

The iPhone runs a variant of Mac OS X, programmable in Objective-C. It has its benefits and faults. These are well-known and thoroughly discussed elsewhere.

The HTC phones run Google’s Android software. It’s open source and supports many languages already. You don’t need to wait for anyone’s approval to make an Android application. Of the group, it’s the best.

The Pre runs on a new operating system called WebOS, which is a custom-tailored Linux. Pre applications are web apps that run with additional JavaScript libraries. Nobody knows yet whether or not a large developer community will rally around the Pre.


“Tethering” means using the phone’s internet connection for a laptop. Most modern phones could support tethering if only the phone companies would let us use the feature. I think tethering will be available on all of the phones at a steep, ugly price. I don’t know anything about the official tethering policies for Bell or Rogers.

3D Graphics

The iPhone and HTC phones have built-in support for 3D graphics. The Palm Pre doesn’t, despite its powerful central processor.


The iPhone only lets you run one application at once. The other phones don’t have this restriction. I suspect the iPhone will get multitasking in a future software update, but who knows how long this will take.


What else is there to talk about? The Pre has a brilliant wireless charger and some new innovative syncing software. The iPhone integrates beautifully with Mac OS X and iTunes. The HTC phones integrate best with Google applications.

Phone OS Tethering 3D Multitasking
iPhone Mac OS X ? Y N
Dream Android ? Y Y
Magic Android ? Y Y
Pre WebOS ? N Y


iPhone 3GS

The iPhone’s biggest advantages:

  • Well-known and well-understood
  • iTunes/Mac OS X integration
  • Big storage

Its big disadvantage is the closed nature of the platform.

HTC Dream and HTC Magic

The Dream is the better Android phone for keyboard lovers. Otherwise, the Magic is the better choice of the two. Android is the big advantage for the two HTC phones.

Palm Pre

Finally, the Pre’s advantages:

  • Multitasking (over the iPhone)
  • Better hardware features (over the HTC phones)

The Pre’s crippling disadvantage is Bell Canada.


I think the iPhone is the better phone right now. But, I think its lead will vanish by the end of the year. New Android phones will learn the iPhone’s lessons, and their hardware will surpass it.

Investigating “Lambert Academic Publishing” with Google Square

June 4, 2009

Update: Lambert Academic Publishing and VDM Verlag are apparently not a scam. A reader wrote to me to mention that VDM published her PhD thesis and those of several friends. These can be purchased at Amazon.

It is unfortunate that LAP and VDM use unethical marketing practices in support of their legitimate business. I apologize to anyone who was misled when I believed them to be a scam.

Last month I received spam from “Lambert Academic Publishing”. I published the whole thing, and it seems many others have seen the same thing. According to a commenter, Lambert asks for bank information to facilitate the deposit of royalties. Clever.

The Lambert website is sophisticated and looks trustworthy. It includes names of part of the executive team, so I submitted the names to Google’s new product, Google Square. Very quickly, I was able to discern that they are in fact executives of a publisher called VDM Verlag. Verlag appears to be legitimate but some Google searching suggests they’re perpetrators of a similar scam.

Notes on “Competencies of Exceptional and Non-Exceptional Software Engineers”

June 4, 2009

Competencies of Exceptional and Non-Exceptional Software Engineers: Richard T. Turley, James M. Bieman

The setting is a large company. There are twenty software developers, grouped by managers into “Exceptional (top 5%)” and “Non-exceptional” and matched on years of experience. There is no discernible difference between the MBTI personality types of the groups. Interviews conducted via critical incident analysis, e.g. “tell me about a time you were at your best.” The recorded results are coded for statements about the important qualities of software engineers. The qualities elicited include engineering habits like prototyping, test automation, code reuse, code reading; personality factors like sense of fun, lack of ego, perseverence; and attitudes like pride in quality, strength of convictions, bias for action. For each group, count the number of subjects that claim the quality, and find that no quality distinguishes between the groups except prototyping.

Now distribute surveys to a broader sample of engineers in the same company, separating performers ranked in the top 30% from the bottom 70%. The surveys force the subjects to rank their habits, thereby choosing the habits they feel most accurately describe their behaviour. The fact that it’s a ranking is important and is critical for understanding the results described below.

Prototyping as a significant difference vanishes. (Maybe because only top 5% can prototype, but not top 30%?) Instead, top performers report a higher priority on mastery of skills and techniques, help others, maintain a big picture view, have strong convictions, and take a pro-active role with management. (Which looks to me like they are both better team players and technical team leads, i.e. the expert on a product or module.) Meanwhile non-exceptional subjects are more likely to be driven by a desire to contribute, seek help from others, and be willing to confront others.(In my view, less familiar with a domain and weaker team players.)

Experience is the only significant biographical factor distinguishing the groups.

Despite the bad news on single predictors, a discriminant function of 10 variables is able to predict >80% of cases. The ten variables (+ for high performer, – for non-exceptional) are: +Years at company in software, +number of languages used in typical work, +math(!) degree held, -perseverance, +bias for action, +sense of mission, +strong convictions, -responding to schedule pressure by sacrificing design, +helping others and -being willing to confront others.

Climate Change Wager

May 28, 2009

Pascal’s wager:

Pascal's Wager

The environmental wager:

Environmental Wager

How Software Engineers Can Help the Climate

May 22, 2009

I had a conversation with Jon after Steve’s talk yesterday. Here’s the gist of it. The disagreeable parts are my unfounded opinions. The reasoned, intelligent stuff is Jon’s.

First: Climate change is a big problem. We have many possible activities which could help. Most of them are distractions because they could never solve the big problem.

Imagine I ask you to move a handful of dirt across a garden. You would pick it up and move it with your hands.

Let’s say I ask you to move a few kilos of dirt across the garden. Then, you might move it one handful at a time. It would take all day, but it would get you there. If you were impatient, you might step back and look for new tools. Perhaps you would go out to find a shovel and move the dirt one shovelful at a time. Or maybe you would use a wheelbarrow.

What happens if I ask you to move a mountain? It is true that moving dirt one handful at a time is progress. But it’s obvious that it will never get you there. If you try to move the mountain one handful at a time, you waste your energy and time. You’ll be forced to step back and think about the problem. You couldn’t do it with a shovel. You couldn’t do it with a wheelbarrow. In fact, you couldn’t do it with any tool currently in existence.

If I asked you to move a mountain, you would need to invent entirely new tools. You would probably need to create an organization to manage the effort of designing the new tools and putting them to work.

If moving the mountain were really important, you wouldn’t want to waste any time on solutions that won’t solve the whole problem. You would want a strategy and a systematic approach. You would create a system that explores potential solutions, evaluates them, and improves them.

My first point is that the scale of the problem is so large that most proposals will be essentially useless. We need systems designed.

Steve asks, “How can we as software engineers help?”

We are specialists at managing complexity. We have techniques and notations for eliciting and modeling requirements. We architect, test and debug large systems. We create abstractions. We are systematic thinkers. Software engineering researchers are increasingly familiar with empirical approaches. We have large libraries of general approaches to problems: Branch and bound, genetic algorithms, searching, machine learning and so on.

We can apply these skills to the design of systems (or meta-systems). There are analogies between software design and organizational design. We should exploit these and apply every tool in our toolboxes to building a robust system for addressing climate change.

I don’t think this is too vague. We could start today by calling together requirements elicitation experts and mapping out requirements for climate change change. We could model the artifacts of an organization such as values documents and organizational structure and link these artifacts to the goals they’re meant to achieve. We can specialize business process models.

Climate Change Talk at ICSE

May 21, 2009

Some key takeaway’s from Steve’s talk at ICSE.

  • Climate change the biggest global crisis ever. The causes and consequences are beyond comprehension for most people. To keep things simple: It is likely that over 90% of the world’s population will die in wars and disasters caused by climate change.
  • Plastic vs. paper, light bulb choices, recycling and other such “green activities” are necessary and good, but far from sufficient. Given that each of these takes psychic energy, they are at best a feel-good distraction and at worst a dangerous and insidious form of problem avoidance.
  • Every moral person must address the problem using his or her skills.
  • Software engineers analyze and build systems. We must apply our skills to climate change.

A man from the UK proposed that ICSE accept only papers that directly address the intersection of software engineering and climate change. This is ridiculous, but the political changes that are necessary to avoid disaster sound even more ridiculous.

A Parable for Graduate Students

May 11, 2009

Via Igor: A Parable for Graduate Students

What Strange Spam Is This?

May 8, 2009

Update: Lambert Academic Publishing and parent VDM Verlag are apparently not a scam. A reader wrote to me to mention that VDM published her PhD thesis and those of several friends. These can be purchased at Amazon.

It is unfortunate that LAP and VDM use unethical marketing practices in support of their legitimate business. I apologize to anyone who was misled when I believed them to be a scam.

Dear Aran Donohue ,

I am writing on behalf of the German publishing house, LAP Lambert Academic Publishing AG & Co. KG.

In the course of a research at the University of Toronto , I came across a reference to your dissertation entitled Msc .

We are a German-based publisher whose aim is to make academic research available to a wider audience.

LAP would be especially interested in publishing your manuscript in the form of a printed monograph.

Your reply including an e-mail address to which I can send an e-mail with further information in an attachment

will be greatly appreciated.

I am looking forward to hearing from you.

Sincerely yours,

Kind Regards,

Toolasee Marooodamoothoo

Acquisition Editor

LAP LAMBERT Academic Publishing AG & Co. KG

Theodor-Heuss-Ring 26 / 50668 Köln, Germany

Fon +49 681 3720-310

Fax +49 681 3720-3109 /

Handelsregister Amtsgericht Köln HRA 26549

Partner with unlimited liability:

VDM Verwaltung Aktiengesellschaft

Handelsregister Amtsgericht Saarbrücken HRB 16777

Board of Directors: Dr. Wolfgang Müller (Chairman/Vors.), Christoph Schulligen, Jürgen Gerber, Katalin Bontenakels

Supervisory Board: Prof. Dr. Johannes G. Bischoff (Chairman/ Vors.), RA Thomas Bischoff, RA André Gottschalk

Type inference, static checkers and IDEs

April 29, 2009

In Haskell every function has a type. If you don’t tell it the type of your function, it’ll infer it for you.

Prelude> let plus a b = a + b
Prelude> :t plus
plus :: (Num a) => a -> a -> a

Some Haskell programmers write out the type of every function they write. It’s a tradeoff. The function becomes a little more resistant to change, because you might need to change the type signature if you change the function. In return, you get compiler-checked documentation for your function, right there in the code.

Of course, data in other languages have types too, whether or not the language enforces them. It would be perfectly possible for a JavaScript static checker to figure out there’s a problem if you subtract a string from an integer.

var i = 7, s = "asdf";
print(i - s);

The types of i and s might change later, but at the print statement, they’re a number and a string.

I’ve discussed this with Patrick Dubroy and Zak Kincaid, and we agree: A better way would be to have your IDE perform the analysis and make the information available live. I’m not sure how the information would be ideally presented (maybe as a tooltip, or as a specially marked insertion in the editing window) but it would be great to explore.

Michael Lee-Chin’s Tips for Success

April 28, 2009

Michael Lee-Chin is the billionaire entrepreneur behind the very successful Canadian investment company AIC. (That’s C, not G like the disaster-ridden American insurance company.) He’s incredibly inspirational—a true rags to riches self-made man. Here are some notes from a talk he gave today at the University Club in Toronto.

  1. Principles. Have principles and stick to them.
  2. Passion. Be passionate about what you do. With passion, you can outwork anyone who isn’t as passionate. Having strong principles makes it easier to be passionate.
  3. Patience. Success comes slowly. Five years of hard work is a bare minimum. Having passion makes it easier to be patient.
  4. Perseverance/Perspiration. Expect to work hard. All of the above make it possible to work harder.

Every successful businessperson does the following five things:

  1. Owns just a few businesses.
  2. Understands these businesses thoroughly.
  3. These businesses are in industries that are positioned for long-term growth and profit.
  4. Holds these businesses for the long term.
  5. Use other people’s money to enhance the rate of return.

On a personal level:

  1. Build a good reputation and let nothing touch it.
  2. Differentiate yourself. Do not become a commodity.

He believes in “Do well, do good.” That is, it’s not enough just to be personally successful. One must also give back to society.

Another big lesson is to ask for what you want, no matter how unreasonable it might seem.

Some key quotes:

“Danger = Crisis + Opportunity” (from Chinese)

“Risk more than others think is safe, care more than others think is wise, dream more than others think is practical, expect more than others think is possible.” (of unknown origin)

“To invest successfully over a lifetime does not require a stratospheric IQ, unusual business insights, or inside information. What’s needed is a sound intellectual framework for making decisions and the ability to keep emotions from corroding that framework.” (from Warren Buffet)

Ways to Get Software for UToronto CS Grad Students

April 13, 2009

Get cheap or free stuff!

Will it fly?

March 27, 2009

Or, How to Determine How Hard It Will Be To Make Your Idea Real: A Framework for Evaluation of Stakeholder Support of Initiatives.

Make a list of everyone affected by your proposal.

Now give each person a letter-grade:


A: Will fight for and support your idea.

B: Supports your idea but won’t actively help.

C: Doesn’t support your idea but won’t actively fight it.

D: Will fight against your idea.


To succeed, you need more powerful A’s than C’s and no powerful D’s.

It’s a simple system but it works in many scenarios.