Why Does This C# Code Compile?

Here’s a cute little puzzler I got from the blog hackification — why the does code below compile?

using System;

namespace ConsoleApplication1
    class Program
        static void Main(string[] args)
            System.Console.WriteLine("Hello from Global Nerdy!");
            System.Console.WriteLine("(Press ENTER to continue)");

Here’s what the output of the program looks like:

Console output: "Hello from Global Nerdy! (Press ENTER to continue)"

Why does the program compile even though the first line of the Main() method is a “bareword” URL? See if you can figure it out on your own rather than running it through the compiler – doing that gives away the answer.

I’ll post the answer in the comments.


Is Canada Becoming a Digital Ghetto?

Over at CBC’s Search Engine, Jesse Brown asks an important question: Is Canada Becoming a Digital Ghetto? I’m reproducing the article in its entirety below.


Here are three things that suck about being Canadian right now:

  1. Last week the CRTC sided with Bell against a group of small Internet Service Providers who want to offer their customers unthrottled connections where what they download is their own business and not subject to interference.
  2. In last week’s throne speech the Conservative government renewed their intention to “modernize” Canadian copyright law. Their effort to do so last session was Bill C-61, a woefully unbalanced and retrograde piece of legislation that led to the greatest citizen backlash to any proposed bill in recent memory. Yet there has been no indication from new Industry Minister Tony Clement that a much-needed public consultation will take place. The best he has offered is the possibility of a “slightly different” version of the bill.
  3. Twitter has just announced that they are killing outbound SMS messaging in Canada due to exorbitant and constant rate hikes from Canadian cell providers (former Industry Minister Jim Prentice vowed to get tough on SMS price gouging, then backpedalled). Cell phone rates in Canada are among the highest in the world, and the result is that mobile penetration is pathetically low and that emerging new cultural platforms like Twitter are being hobbled.

This growing list of backwards policies is already creating a sense of digital isolation: Canadians can’t stream the videos Americans stream, download the files Americans download, remix the media Americans remix, or tweet the way Americans tweet.

With the election of Barack Obama, digital culture in the U.S. hit a tipping point, where a robust online public sphere proved itself capable of changing the world. Meanwhile, here in Canada we’re approaching our own tipping point, where a series of ignorances and capitulations threaten to turn our country into a digital ghetto.

[Thanks to Mark Relph for pointing me to this article.]


Programmer T-Shirts for Good Causes

Andy Brice has created some t-shirt designs for software developers and selling the shirts online for a good cause. The proceeds from sales of the t-shirts, some of whose designs are pictured below, will go to two worthy charities: and

If you’ve got a programmer on your holiday list – or even if you just want one of these shirts for yourself, please buy one. The money’s going to some very good causes.


About the Charities

jaipurfoot This organization pioneered the “Jaipur foot” (also known as the “Jaipur leg”) – an effective and easy-to-fit prosthetic lower limb that can be produced for a little as $30 and is provided for free by the charity. The prosthetic was first developed in the 1960s by an orthopedic surgeon and a sculptor. Since then the charity has provided over 300,000 limbs in 22 countries. In the television program a young boy arrived at the clinic hopping on one leg and left running on two, beaming. It was moving to watch. You can read more in this Time magazine article.


Sightsavers works to alleviate sight problems around the world. Last year Sightsavers and their partners treated more than 23 million people for potentially blinding conditions and restored sight to over 244,000 people. It only costs:

  • $0.10 to protect someone from river blindness for a year.
  • $10 to pay for eyelid surgery for trachoma.
  • $35 for an adult cataract operation.

Papercraft HAL 9000

If you’ve got a colour printer with decent paper, scissors and glue, you can make these papercraft HAL 9000s:


You can download the kit here. The instructions are in Japanese and “Engrish”, but you’re smart people. I know you can figure it out.


VeloCity Project Exhibition

Yesterday, I (along with David Crow and Barnaby Jeans, my colleagues at Microsoft Canada’s Developer and Platform Evangelism Team) went to the University of Waterloo to see the projects on display at the exhibition of a new initiative at the university called VeloCity.


VeloCity has been described as a “dorm for entrepreneurs”; I’ve also heard it referred to as a “dormcubator”. Taking a cue from successful businesses such as Dell, Facebook, Google, RIM and Yahoo!, which were started by students working in their dorm rooms, the VeloCity project aims to create an atmosphere that will encourage and enable Waterloo’s students to sharpen their technical and entrepreneurial skills, and perhaps even come up with “the next big thing”.

The university converted its Minota Hagey residence from a standard dorm into a place where its residents would have access to a boardroom, a mobile device lab, high-bandwidth wifi, large flatscreens, workstations, programmable lighting and other goodies that you might find at a high-tech company’s campus. Students in the VeloCity program live and work on their projects there; they also attend professional development workshops for entrepreneurs at the nearby Accelerator Centre.

The VeloCity projects are currently treated as extracurricular activity – they’re done in addition to their regular courseload. Adding to the challenge is the short timeline: they’ve only been working on their projects since the start of the school year in September.

Why wasn’t something like this around when I was in university?

The Exhibition

View From Above 2

Yesterday’s exhibition was the VeloCity students’ first chance to show off their projects in their current state. Each project team set up a booth science-fair style in the foyer of Waterloo’s Davis Centre and did presentations to attendees and passers-by; they also had to do a three-minute pitch presentation onstage.

Extreme Venture Partners were there to judge the projects. They would provide $1000 to fund the project they deemed most worthy.

The projects participating in the exhibition are listed below.

Project Description
Grocerus A location-aware web application that helps users create grocery lists and find the best prices for items on that list in their area.
Gruup A web application that lets its users do group purchases of items for volume discounts.
Sparknav A mobile navigation application with a twist: it’s for finding your way around indoor or enclosed spaces, such as malls, airports, university campuses and amusement parks.
Emoshion A mobile app that provides “location-based high-end fashion news”.
Find It Off Campus A web application that helps University of Waterloo students find off-campus housing.
Szello Mobile A consultancy that does mobile UI design and provides a mobile UI development kit.
Fading Hearts / Magical Aces Two projects: Fading Hearts is an anime-style multimedia “choose your own adventure” story-game. Magical Aces is a 2-D vertical shooter arcade game (in the style of Raiden) with manga-inspired story elements.
Ufansi A web application that connects charities with donors, keeps donors apprised of their charities’ activities and helps to lower charities’ administrative costs.
Giftah A web application that creates a marketplace for retailers’ gift certificates and gift cards.
ClassAlbum A web application for managing class schedules and finding vacant classrooms.
Comic Battle A multiplayer Flash-based online fighting game.
My Story An “online platform where authors can share their creativity”. Authors can publish their stories, add media elements such as background music or voice-overs, get constructive feedback from their readers and even collect money for their stories.
CashIn A wallet with an electronic component that acts as a financial advisor, tracking your spending and warning your spending is threatening to break your budget.
inPulse A watch interface that acts as a secondary display for your mobile phone, allowing you to see caller ID, email and SMS messages or your calendar without having to fish your phone from your pocket or its holster.
Threadband A 2-D casual game for the iPhone.
Metacast A web application that combs the internet for video, places them into category-specific channels which can be viewed in a TV-like fashion.


Before announcing the winner, the judges told the audience who their top three picks were:

  • inPulse
  • Sparknav
  • My Story

Of these three, they picked Sparknav.


VeloCity will be holding another exhibition in March. It will be interesting to see how far  these project (and the people behind them) progress in the interim.

Suggestions and Observations

Startups vs. Lifestyle Businesses

There is a difference between a startup and what Austin Hill referred to as a “lifestyle business” at the recent Startup Empire conference.

A lifestyle business is a service or consultancy that addresses the needs of a small or localized market. What it doesn’t do is make a product nor does it change the market it’s in or define a new one. There’s nothing wrong with these businesses; they meet certain needs and give their owners some money, ranging from discretionary income to enough to support a pool of small employees. Some notable lifestyle businesses include small development shops like 37signals and Toronto’s own Unspace, popular money-making sites like the Dooce and I Can Has Cheezburger? and applications like 37signals’ BaseCamp, Remember the Milk, Delicious Library and Hampton Catlin’s iPedia. While they are entrepreneurial and even fun to run (I’ve done one), they’re not the sort of thing that investors are looking to fund.

A startup is an attempt to create a new product that often creates a new market, or changes or becomes a big player in its market. It involves the creation of a new technology or the use of existing technology in a particularly novel way to solve a problem, often for a large market, if not the entire world. Apple, Microsoft, Yahoo!, Google, eBay and – to cite a Canadian example –- RIM are particularly big examples of startups. They are the sort of venture that investors are looking to fund.

The line between startups and lifestyle businesses can be fuzzy. A lifestyle business can sometimes grow into something startup-like or even a true startup because it defines a new market or changes the one it’s in. Craigslist falls under this category. Flickr and Blogger are examples of startup-like companies that grew out of side projects and were later acquired. Facebook started off as a lifestyle business but turned into a startup.

I believe that while VeloCity is trying to encourage tech entrepreneurialism in general, what they’re really trying to do is encourage students to become startup entrepreneurs. I think that the VeloCity participants should be mindful of the difference between startups and lifestyle businesses and steer towards projects that are more startup-like in nature.

Look Beyond the Consumer Market

A lot of people come up with product ideas for the consumer market because they’re graspable: they’re easy to think up and easy to implement. There’s a world of problems beyond consumer applications, and sometimes even a small solution can make a big difference. Think of the big issues that are on people’s minds today: the economy, the environment and healthcare, for starters.

Beware of Living Off Advertising

Once again, I’ll take a quote from Austin Hill: Advertising is not a business model. A business model is something that answers the question “How can I get customers no one else will get?”

Perfect your pitches

Pitching is considered a “soft” skill, which is the sort of thing that techies tend to discount. Even businesspeople sometimes consider it unimportant: at the recent Startup Empire, VC Austin Hill said that he’s seen CEOs who couldn’t pitch their way out of a paper bag. This is a mistake: no matter how good or cool your technology is, no one will care unless you can tell a story about it, and tell it well.

In “The Valley”, pitches are so important that they agonize over them. Countless blog posts, articles and books have been written on the art of pitching, and there are regular workshops where they work on their pitches.

Half of what makes a pitch is its content; the other half is its delivery. Your pitch needs to cover what your product is, what kind of problems it solves and why it’s the basis of a viable business. You also have to be able to make your case in two to three minutes, with delivery that engages the audience. You need to practice your pitch to the point that you can do it in your sleep.

One key point to remember is the point of pitching is not to go over your product’s feature set, but about its market and the needs that it will fill. Remember, people don’t really buy drills, they buy holes.

The best pitch of the bunch was delivered by Eric of inPulse, who started with the problem he was trying to solve, presented his “smart watch” phone interface as a solution, and then explained why inPulse was viable as a technology and a business. He quickly explained what the current state of the project was, what his expecting timelines were, his technology partners and what the goal was. His delivery was good, and he had some memorable lines in his pitch, most notably “We want to be the industry leader of smart watches in 2010” and “If you have any question, send an email…directly to my watch!” (David Crow groaned at that line, but I liked it. More importantly, we’ll both remember it.)

Honourable mention for good pitch goes to Caleb, Dane and Eric from CashIn, who also had a good presentation style and structure.



Using the Hell Out of Your Digital Camera

I got this Nikon Coolpix P6000 assigned to me.
I’ll do a writeup on it in a future article. has a great article featuring “10 camera tips not really related to photography” which covers some interesting uses for a digital camera that may not have occurred to you.

The photo above shows tip #1: take a photo of your contact info so that your camera can be returned to you if it’s lost. Many cameras have a feature that lets you lock a photo so it’s can’t be deleted; make your “This camera belongs to” photo the first shot on your card and lock it.

(Yeah, that’s my real mobile phone number and work email address. In the world of anti-spam, email rules and caller ID, I’m not too worried about handing out that info.)

You should check out the article for the full details, but for those of you who want a quick summary of the other interesting uses for a digital camera, they are:

  • A portable map device if you don’t have a GPS, iPhone or similar gadget
  • Remembering where you parked (especially if you’re not going to return to your car for some time, such as with airport long-term parking)
  • Remembering how something was assembled before you dismantle it for repair
  • Taking note of the licence plate of the guy who parked uncomfortably close to your car
  • A quick photocopier to take a copy of a couple of pages from a book or magazine with info that you might need while out
  • To cover your ass
  • To remember what’s on the menu at Chinese take-out
  • A quick way of jotting down the ingredients in a recipe so you know what to buy at the grocery
  • A better way of doing the “dent check” when you first take possession of a rental car
  • A mirror

If you can think up any other interesting uses for a digital camera – perhaps some that make use of the video recording feature – post them in the comments!


The C# “Yellow Book”: Free as in Beer and Good as in Beginner’s Guide

Cover of the "C Sharp Yellow Book"

As a new Microsoftie and programmer returning to C# after a six-year absence, I have a lot of learning and re-learning ahead of me. In preparation for this, I spent the better part of an afternoon in the “Computers” section of my neighbourhood bookstore going through the C# programming books, sorting the gems from the junk. I took the “beginner’s mind” approach and looked at all the books on the shelves, regardless of the skill level they were written for, even the books that devoted whole chapters to basic concepts like looping and branching. At the very least, it would give me an idea of the current state of programming literature was like in the .NET world.

A couple of weeks later, I stumbled across the C# “Yellow Book”. It’s the standard book for first year computer science students at the University of Hull (I know of it thanks to a Black Adder episode) and written by Rob Miles, a Microsoft MVP and lecturer at that university. Each computer science student there is given a free-as-in-beer printed copy of the book, and now anyone can get a free-as-in-beer PDF copy online.

The C# Yellow Book is quite good, and can easily hold its own against some of the commercial C# books I’ve seen, which typically sell for about $35. It’s written in a clear and breezy style, explains it concepts well, has examples that actually work (I tried some out just for kicks) and often goes beyond typical beginners’ books with many asides called “Programmers’ Points” that explain good programming technique. Its 185 pages cover most of the basic C# language — and most of the example code is run in console mode except for the section near the end that covers basic Windows Forms. After finishing this book, you should have enough background material to tackle an intermediate book on C# or introductory books on .NET topics like GUI programming, ASP.NET or even game development for the PC, Xbox 360 and Zune (yeah, really, the Zune) with XNA.

I’d say that Rob has a strong incentive to make the book as good as possible because it’s the basis of a course at his university and because he can get some rather immediate feedback from its readership. If only that was true for a professor of mine back at Crazy Go Nuts University, whose Pascal programming book (it was the eighties) had terrible examples, an incomprehensible presentation and writing style and annual revisions to foil used-book sales and to force each new class to buy the latest edition. Kudos to Rob and the computer science department at Hull for giving away the course textbook for free!

If you’re a starving student looking to learn Windows programming, I’d recommend getting your hands on a copy of Rob Miles’ free-as-in-beer C# “Yellow Book” and pair it with Microsoft’s free-as-in-beer Visual C# 2008 Express Edition. Alas, I can’t point you to any free-as-in-beer computers.