Don’t get the joke? Know Your Meme does a fine job explaining the XZIBIT “Yo Dawg” meme in this article as well in the video shown below.
This one’s a long one! You might want to get yourself a beverage or snack.
This week is Windows Mobile Incubation Week, a “jam session” taking place at The Empire’s Silicon Valley branch, where startups are invited to learn about Windows Mobile from Microsoft’s gurus and pick up some tricks from mobile industry gurus and venture capitalists. They’re also challenged to build Windows Mobile apps during the week, with prizes being awarded to winning participants. Admission to Mobile Incubation Week is free-as-in-beer; all you have to do is scrounge up the cash to cover your trip to the Valley and find a couch to crash on at night.
Even as a Sith Lord with Imperial backing, I don’t have the travel budget to get down to Silicon Valley to catch this event, and it’s likely that you don’t either. That doesn’t mean that you have to miss out on Mobile Incubation Week. I’ll be linking to all the blogs covering it and I’ll also be posting articles covering different aspects of Windows Mobile Development, some technical, some tactical. I hope it piques your interest in Windows Mobile; perhaps it might even get you started building apps for Windows Mobile phones.
In this first article, I talk about mobile development over the past few years (with a little detour into my own experiences) and the way I see the current state of Windows Mobile.
My First Mobile App
Back in early 2001, I bought a PalmOS-compatible Handspring Visor Platinum for $99 from my then-coworker at OpenCola, Steve Jenson. He’s always had ridiculous amounts of hardware in his house:
I used it regularly, but never got around to writing applications for it until early 2002. That’s when a number of companies building P2P software during the Bubble 1.0 era imploded and when OpenCola unceremoniously laid me off. I decided to put up my “consultant” shingle, and thanks to the network of contacts I’d built as OpenCola’s Developer Relations guy, it didn’t take long for me to dig up some clients.
A friend of mine who was now working for a big drug company’s ad agency asked if I could write a questionnaire app for PalmOS handhelds. It wasn’t anything too complicated: just give the user (who could either be a doctor or a patient) a series of questions and provide a response at the end based on their answers. The tasks seemed simple enough, and despite the fact that I’d never written a Palm app before, I took the job.
(For those of you new to the industry, you’ll find that that you will often be asked to do things that you’ve never done before or aren’t 100% sure you can do. One of the valuable skills that comes with experience is figuring out how far you can stretch yourself and your abilities with a project.)
I’d seen a couple of articles on developing for PalmOS in C, and they looked like more work than they were worth. An app that was made up of a single button that read “Hello World” took 3 or 4 pages of code to implement, most of which was what I call “preamble” – a lot of setup code and “scaffolding” to support the app, way more code than for the actual app itself. My client seemed to be testing the waters of Palm apps, so I figured I’d be asked to make lots of changes to the app along the way. I needed something that would let me build and modify Palm apps quickly.
My plan was to build the app with NS Basic/Palm, a Visual Basic-like development system for PalmOS. I’d heard about it before, and as an added bonus, they were based right here in Toronto. I picked up a copy directly from their offices in the morning, and by the end of the afternoon, I had a functioning version of the app. By the end of the next day, I had it polished. The day after that, I showed my work to the client, and a week after that, they cut me a cheque.
I thought I’d make a career for myself as a PalmOS developer, but after that initial success, no other clients approached me about building a Palm app for them. That was a bit of a disappointment; unlike many of my friends, who wanted to build system- or network-level software, I wanted to build software for people. I figured that the best platform for people-oriented software would be a computer that you had in your pocket with you all the time.
The Underused 1995-Era Computer in Your Pocket
One of the things that I noticed while building Palm apps in 2002 was that the machine specs were like the specs for desktops back in 1995, when I was building CD-ROM-based multimedia apps with Mackerel Interactive Multimedia. The desktops of 1995 had processor speeds in the double-digit megahertz, RAM in the single-digit megabytes and limited, if any, access to the internet – just like 2002-era PalmOS devices.
At the same time, there was a class of devices that was beginning to emerge – the smartphone, which combined the connectedness of mobile phones with the computing power of PDAs. The problem was trying to get apps onto them.
Back in late 2003, when I was just getting started as Tucows’ Tech Evangelist, I wrote an article grumbling about the state of mobile development. In spite of the fact that smartphones had the power of PDAs, the market for mobile apps seemed like a ghost town. There was a mish-mash of all sorts of mobile platforms, installing apps on your mobile form was more complicated than it should’ve been, and the telcos seemed to be doing their level best to keep apps off of phones, using the need to “keep the phone network secure” as their excuse.
“Imagine how far behind we’d be,” I wrote back then, “if we had to get our computer vendor’s permission every time we installed a new program on our desktops. That’s what it’s like for mobile apps.”
The Best Gaming Phone, 5 Years Ago
Near the end of 2003, this phone was supposed to be the thing that brought mobile gaming to the masses:
It was the Nokia N-Gage. There’s a good reason you probably never owned one, nor did anyone you know. While it had some decent specs, it was a pain for both developers and users alike:
- Pain for the developers: Not just anyone could develop for the N-Gage. You had to apply for permission to do so, which required you to have a track record of mobile game development, which probably ruled out a lot of potential developers in 2003. There was also the matter of the fee that you had to submit while applying for the privilege of being an N-Gage developer: the non-trivial sum of 10,000 Euro.
- Pain for the users: The buttons were notoriously bad – they used phone-grade buttons as opposed to game controller-grade ones, which made for a less-than-optimal gaming experience.
- More pain for the users: Here’s how Brighthand described the process of loading a game onto the N-Gage: “"In order to put a game into the system, you have to turn the phone off, take the back cover off, remove the battery, slide out the existing game, put the new one in, put the battery back in, replace the back cover, hold down the power button for several seconds, wait for the system to boot up, open the main menu, select the game, open it… And then your game starts loading."
- Even more pain for the users: The N-Gage sometimes suffered from “The White Screen of Death”, a phenomenon where your phone would spontaneously reboot thanks to a memory management issue arising from a design flaw. The fix was a firmware upgrade, for which Nokia decided to charge users.
I thought that the N-Gage had all kinds of portable personal computing uses, both for gaming and beyond, but there was no way I could develop for it. Besides, the telcos were still pretty adamant about not letting just anyone develop for smartphones.
So my plans to take on mobile development stayed shelved a little longer.
Predictions are Hard, Especially About the Future
Depending on where your loyalties, sympathies and platform preferences lie, you’re going to find the following headlines either LMAO-hilarious or stool-softeningly cringeworthy. Maybe it’s because I’m still a relatively new at Microsoft (I’ll have been there six months a week Monday), but I laughed and cringed at these headlines that vaingloriously predicted that The Empire would dominate the smartphone market:
- Industry Jumps on Windows Mobile 5.0 Bandwagon (May 12, 2005)
- Mobile Phones Will Overtake iPods, Says Gates (May 13, 2005)
- Microsoft Expects to Dominate Smartphones in Three Years (June 28, 2005)
“Dominate Smartphones in Three Years”, huh? Here’s what happened a mere two years later:
In the space of two years and one day, we’d gone from Microsoft triumphantly declaring that Windows Mobile would own the smartphone market to Microsoft’s most famous evangelist (well, former evangelist by that time) doing a victory pose at the Apple Store because he’d managed to get his paws on one of the first iPhones.
A good chunk of the iPhone’s success comes from Apple’s incredible marketing machine, but a bigger factor is that great products are their own marketing. The iPhone combines a great user experience and a centralized store, but far more important was the feeling that you were using something that was designed to be both beautiful and fun, not feasting on the table scraps thrown to you by a company who’d rather be making stuff for Fortune 500 executives.
The iPhone formula seems to be working. According to Kevin Tofel of the mobile device blog JK On the Run, Apple sold 3.3 million iPhones in 2007 and handily beat that sales figure in 2008 with 11.4 million, making them the mobile phone vendor that gained the most ground that year.
And Now, the Good News
It’s not all bad news for Windows Mobile or people who want to develop for it. For starters, Windows Mobile still represents a sizeable chunk of the mobile phone market. 18 million Windows Mobile licenses were sold in 2008, and they were sold to four out of the five largest mobile phone manufacturers in the world (in case you were wondering, Nokia is the holdout). LG has signed on to put Windows Mobile on 50 of its smartphone models. All told, that’s a big hardware ecosystem on which to deploy your mobile apps.
The smart moves that The Empire has been making with its various platforms, from Windows 7 to the web to XBox 360 to cloud computing, are also beginning to show in the form of Windows Mobile 6.5 (slated for release this year) and Windows Mobile 7 (due next year). The UI has been vastly improved; a lot of the UI lessons and ideas from Windows 7, XBox 360 and Surface seem to have made their way in:
And yes, there will be support not just for client apps that run on your WinMo phone, but Widgets – mini-web apps that run in a browser with just a border and no interface controls, a la Windows widgets or the iPhone’s web apps:
Paired with the improved user experience is an online store accessible from your Windows Mobile phone:
…and you still have the freedom to not use Windows Marketplace to sell your apps. I cover why that’s a good thing in the next and final section of this article.
Freedom
Let me show you some slides from Pete Forde’s recent presentation at MeshU, Is That an iPhone in Your Pocket, or are You Just Happy to See Me?. Namely, this section of his presentation:
The iPhone App Store is the only legal way to distribute iPhone apps, whether you’re selling them or giving them away. As a developer, you submit your applications to the App Store for review, and in around seven days, after which you are told whether your app has been accepted or rejected.
If your app is rejected, are you told the reasons why? Here’s Pete’s answer to that question:
The people doing the reviews for the App Store are a toxic mix of Victorian-era prudish and Kafka-esque:
…and you can forget writing any David Mamet / Quentin Tarantino themed-apps:
…and that’s not just “no swearing” in your apps; that’s also “no swear words” in any search results your app returns. Consider the problem faced by one hapless app developer:
They’re also kind of uptight about certain novelty apps, such as the one that makes it look as though you’ve shattered your iPhone’s screen:
When you submit your app for review, whatever you do, don’t put any joke items in the feature list. One developer, when submitting an updated version of an app (yes, you have to submit updates for review) threw in a joke item in the feature list: more dragons! Here’s the response from the App Store review board:
The rest of Pete’s presentation was built around bypassing the App Store’s reviewer monkeys by building your iPhone apps as single-use browsers that were hard-wired to the web application where your app lived. That’s a workable solution for some apps, but not if you want to make use of the resources built into the iPhone.
While the Windows Mobile Marketplace might have a review board for legal purposes, it’s not the only way to distribute your apps. You can also make them downloadable from your site, meaning that you can distribute your screen-breakin’, hard-cussin’, dragon porn Windows Mobile app without The Man steppin’ on your throat.
Now isn’t that nice?
Next
In the next installment, I’ll provide a quick-and-dirty intro to writing your own Windows Mobile apps.
My Interview at MeshU
No tech workshop is complete without a little goofing around on an accordion, and I certainly didn’t want the MeshU day of workshops (which preceded the Mesh Conference) to be incomplete. I did a quick interview with Anita Kuno in which I performed a classic computer programmer song parody and promoted The Empire, which you can see in the video below:
I know it’s incredibly short notice, but I just found about these myself. If:
- the design and implementation of programming languages, virtual machines and compilers, multi-language libraries and IDEs is your cup of tea, and…
- you’re going to be in or near Redmond this week
…then you might want to check out these conferences:
First, there’s the 2009 Lang.NET Symposium, which takes place in building 99, Room 1919 of the Microsoft Corporate Headquarters from Tuesday, April 14th through Thursday, April 16th. There is no charge to register – that’s right, this is a “free as in beer” event. Who says The Empire isn’t generous?
Here’s a quick description of the event:
Overview
Lang .NET 2009 Symposium is a forum for discussion on programming languages, managed execution environments, compilers, multi-language libraries, and integrated development environments.
This conference provides an excellent opportunity for Programming Language Implementers and Researchers from both industry and academia to meet and share their knowledge, experience, and suggestions for future research and development in the area of programming languages.
Why Attend
If you are a language designer, compiler writer, or tool builder in industry or academia, Lang.NET 2009 is a unique opportunity to directly interact with the architects of Microsoft language platforms.
Microsoft language technologists will be very active participants in the conference while at least 50% of the program is reserved for presentations by non-Microsoft employees.
The Lang.NET Symposium will be followed immediately by…
…the Domain-Specific Languages Developers Conference, which runs from Thursday, April 16th through Friday April 17th in the same room, Building 99, Room 1919 of the Microsoft Corporate Headquarters. Here’s a quick description of the conference:
The goal of the DSL Developer’s Conference is to cut away all the unessential conference baggage and concentrate on why we’re spending time at a conference in the first place — the talks by industry experts and experienced practitioners. By doing so, we can keep your wasted time to a minimum. In fact, if you don’t go away with your head hurting from all the new ideas you’ve heard, we’ve haven’t done our job!
As with the Lang.NET Symposium, DSL DevCon doesn’t cost anything. If you want to attend, just register!
This article also appears in Canadian Developer Connection.
Click the photo to see it at full size.
(And yes, he’s using the word “pants” in the British English sense, as in “underpants”.)
On Thursday evening, I caught Colin Bowern’s presentation, Authentication Alternatives for ASP.NET at the monthly gathering of the Metro Toronto .NET User Group. Here’s the abstract:
Asking someone to create another username and password is presents risk. Most people use the same password across sites, or worse yet they write it down! The good news is there are smart people thinking about how to solve this problem and for web developers there are easy ways to take advantage of their hard work. In this session we will take a look at the credential management from a user perspective. We will dig into the efforts made in Active Directory, Windows Live ID, OpenID, OAuth, and Facebook Connect and how you can take advantage of them in your application.
He covered Windows Live ID, OpenID and OAuth. Not only did he show the theory, but he also presented some reasonably easy-to-follow code and showed it in action. Colin’s got a good presentation style; perhaps he picked up a thing or two at the speaker’s workshop we had a week ago as part of EnergizeIT!
Here’s the “Call to Action” slide from his presentation:
…which says:
- Stop requiring users to create more identities
- Leverage OpenID for authentication – see the DotNetOpenID project at Google Code
- Investigate OAuth for delegated resource access
- For apps targeting corporate scenarios, read up on the Geneva product set – see items on Channel 9 tagged “identity”
Afterwards, I joined Colin, Metro Toronto .NET User Group President Graham Marko and a few others for some post-presentation Guinness at the nearby pub The Spotted Dick and told them I’d catch them at the Toronto Code Camp in a couple of weeks.
Next Presentation: Yours Truly on ASP.NET MVC
I was invited to present at the Metro Toronto .NET User Group meeting. Graham said I could present on any topic I wanted, so I asked if anyone had done one on ASP.NET MVC yet. No one had, so I figured I’d cover it. I’ve been looking into it casually for the past little bit and I’ll be diving into it over the next month, with my experience using another MVC web framework, Ruby on Rails, as my guide. I promise I’ll be informative and entertaining! You might want to come even if you’re not a .NET developer.
The next meeting will take place on Thursday, May 28th from 6:00 p.m. to 9:00 p.m. at the North Tower of the Manulife Financial Offices (200 Bloor Street East, on the north side, between Church and Jarvis). Yes, the meetings take place around dinner, but they provide some pizza and pop, and there’s always an opportunity for post-session nachos at the nearby pub.
My Afternoon at MeshU
This article also appears in Canadian Developer Connection.
I caught the afternoon sessions of MeshU, the day of workshops that precedes the Mesh Conference. MeshU had three tracks – Design, Development and Management – and I chose to attend the sessions in the Development track.
Leigh Honeywell on Writing Secure Software
First up was HackLabTO cofounder Leigh Honeywell, (pictured on the right) whose presentation was titled Break It to Make It: Writing (More) Secure Software. She works at the MessageLabs subsidiary of Symantec, which makes security products for email systems, and before that, she worked as an independent security consultant. Simply put, security is both her job and her hobby.
Leigh provided an informative and entertaining summary of the most common security vulnerabilities in applications and the recommended best practices for writing secure apps. Here’s a photo of her slide showing OWASP’s ten principles that you should follow in order to write secure applications:
The ten principles are:
- Minimize attack surface area
- Establish secure defaults
- Least privilege
- Defense in depth
- Fail securely
- Don’t trust services
- Separation of duties
- Avoid security through obscurity
- Keep security simple
- Fix security issues correctly
She also covered what OWASP considers to be the current top ten vulnerabilities:
- Cross-site scripting
- Injection flaws
- Malicious file execution
- Insecure direct object references
- Cross-site request forgeries
- Information leakage / improper error handling
- Broken authentication and improper error handling
- Insecure cryptographic storage
- Insecure communciations
- Failure to restrict URL access
At the end of her presentation, Leigh listed a couple of books that she considered to be valuable security references. One of them was Writing Secure Code, Second Edition, written by Michael Howard and Steve Lipner and published by Microsoft Press.
This was a surprise to many people in the audience, the majority of whom were not building apps on Microsoft technologies and generally (and often mistakenly) think of the term “Microsoft” being synonymous with “insecure”. A number of people chatted with me after the presentation and it seemed like this was one of many things from Microsoft that caught them by surprise, along with other unexpected things including the MS-PL license, CodePlex and the Open Source Lab, the new emphasis on standards and interoperability…and hey, even taking on “unlikely” evangelists such as David Crow and me.
Here’s her slide deck:
Pete Forde Does the iPhone Dance
Next was Pete Forde, one of people behind the development shop Unspace and the RubyFringe and FutureRuby conferences. He started his presentation, Is That an iPhone in Your Pocket, or are You Just Happy to See Me?, with a Napoleon Dynamite-esque dance number set to the tune of Start the Riot by Atari Teenage Riot. Here’s the video of the dance that Leigh Honeywell shot:
And here’s the video that I shot:
Pete’s presentation covered the options that developers have when building iPhone apps. For the curious, here’s the deck he used:
The one thing that he wanted you to take away from his presentation is, in his own words:
Consider iPhone web applications and side-stepping the iTunes Application Store (and their 30% gross cut) completely.
The one thing that I took away from the presentation (in addition to the one above) was that it’s not all smiles and sunshine in iPhone development land. Yes, the iPhone provides an excellent user experience and the App Store has been a hit with the customers and many developers. However, a good chunk of Pete’s presentation was about how some of the biggest obstacles for iPhone developers come from Apple itself; I’ve heard that there were similar grumblings at an iPhone developer meetup that took place later in the week. I think that there are some things that Windows Mobile developers (and the Windows Mobile team at Microsoft) can learn from these obstacles, and I’m going to write about them in a later article.
Chris Wanstrath and the Story of GitHub
The final presentation of the afternoon, Building a Business with Open Source, was given by Chris Wanstrath of GitHub, a hosting service for software repositories created with the Git distributed version control system. There are a number of open source projects hosted on GitHub, including one you might not expect: Microsoft’s very own IronRuby.
Chris explained that GitHub was an answer to a problem that he and his friends had: they were working on a number of open source projects, so many that managing them was “beginning to wear them down”. GitHub was created as a solution to that problem: it took care of the tedious parts of source code management so that they could focus on their code.
Although GitHub hosts a number of open source projects and uses Git, which is open source, it is not open source. Chris explained that managing an open source project takes up more time that he or the others on the team have. “Ironically,” he said, “starting GitHub has given me less time to work on open source.” After hinting at his dissatisfaction with the GNU General Public License, an audience member asked "Does the GPL cause you nightmares?"
“Yes,” he replied, after which he endorsed his preferred open source license. “MIT license all the way,” he said.
To promote GitHub, they took an approach that was closer in spirit to evangelism than standard marketing. “Companies still believe in old-school advertising, and they also think that what works offline works online,” he said. So they rely on the standard offline methods of promoting their wares: advertisements and marketing campaigns. In the online world, people trust their peers, so they opted for an approach that he called “guerilla marketing”: instead of spending money on ads, they spent money to hang out with developers, buy them beer and pizza and provide “a human face” to GitHub. He summed up the approach with a good one-liner: “Who knew that actually spending time with your customers would be good for business?" A great point, especially in today’s word-of-mouth-y, interconnected world.
Whether you’re an old hand at developing for Microsoft’s platforms or completely new to The Ways of The Empire, you’ll find the upcoming Toronto Code Camp to be a great way to get some deep information on .NET development as well as a way to meet some of the most active and engaged members of the local Microsoft developer community. It takes place at the Manulife Building (200 Bloor Street East, on the north side between Church and Jarvis) and runs from 8:00 a.m. to 5:00 p.m., and registration is free.
Toronto Code Camp will have 5 tracks in its agenda:
- ASP.NET: Covering Active Server Pages technology, which includes Virtual Earth and the new ASP.NET MVC framework, which gives you the goodness of frameworks like Rails and Django and the speed and libraries of .NET. The ASP.NET MVC: Beyond the Basics presentation by Richard Obuhowich is definitely on my own “must-see” list.
- Data / Architecture: SQL Server, plus ADO.NET, LINQ and the Microsoft Sync Framework.
- .NET Framework: This is a really broad topic, and this year, the sessions will be on building installers with WiX, building extensions to Office and Visual Studio, building SharePoint apps, and a fast introduction to Windows Mobile development by Mark Arteaga that I intend to catch.
- Silverlight / WPF: The track for people who want to build rich multimedia interfaces for the web (Silverlight) and Windows (WPF, short for Windows Presentation Foundation). I’m thinking of seeing Robert Burke’s Silverlight from 2 to 3 – or, Silverlight Beyond MIX09 presentation, which is supposed to be PowerPoint-free!
- Future / Other: A catch-all track for topics about upcoming developer tools and tech, as well as things that don’t quite fit in the other tracks. There are presentations on the F# programming language (an OCaml-like .NET language), the Azure cloud computing platform, upcoming goodies like the .NET 4.0 framework and VB10 plus a session titled 2D XNA Game Programming for Fun and Profit by Josef Rogosky.
For more details about all the sessions and when they’ll take place, see the Toronto Code Camp agenda.
I’m going to be there, attending as both a developer looking to learn as well as a Sith Lord representing the Empire. I’m going to take notes, snap photos and perhaps even shoot a little video; I’m also going to see what I can do about bringing some swag to give away.
The registrations are coming in fast and furious, so if you want to come, make sure you register now!