writing my first windows phone 8 app

At some point yesterday, I submitted for approval my first ever Windows Phone app. It also happened to be my first ever Windows Phone 8 app, since I never got around to developing any apps for the previous version of the operating system. I figured I’d type some thoughts down on my experience as a developer who has worked pretty extensively with .NET technology before. I’ll try to keep things from getting too technical but I cannot make any promises.


#1: Same Old Technology

When I first had a desire to develop a mobile app, my target platform was obviously the iPhone since it was the largest and most successful app market that existed at the time (and possibly still but I’ve stopped following iOS closely). I went ahead and bought a Mac Mini since I needed an OS X machine to be able to write the appropriate code. I then sniffed around Objective C and figured I needed a guided experience so I went ahead and bought an e-book. I may have even read 2-3 chapters of that book.

The problem became apparent very quickly. I hated Objective C. I hated it with a passion. The syntax makes no sense to me–which I’m sure would change once I got used to it–but I could not imagine a world where I wanted to be used to Objective C. The code just looked ugly. Which is a weird thing to say. But it did. It did not feel structured and logical like C-like syntaxes, despite being a subset of C. Weird. In my opinion, Objective C looked just how OOP syntaxes should not look.

Anyhow, developing my WP8 app, I did not have to learn any crazy new technologies. I already have a firm grasp of C# and that was all I needed for the modeling aspects of my app. C# is almost syntactically identical to Java, so that’s a whole bunch of developers there that shouldn’t need to learn a new skillset. The UI language is something I did have to learn, but having used Silverlight and WPF in the past, this wasn’t a massive leap for me. I’ve had to handcode Cocoa UI in the past and let me say I easily prefer XAML-land. Everything makes sense to me and the MVVM pattern flows effortlessly.

#2: Developing Metro apps is easy

The thing I like most about Windows Phone is the design of the apps. Several developers (particularly cross-platform ones) choose to ignore the beautiful design language and develop cluttery navigational systems. I decided to stick with Metro and it was abundantly easy to do so. There’s lots of boilerplate code to get you started and once I installed the Windows Phone 8 toolkit, I had access to all the controls that MS use on their native apps. Using my pre-existing MVVM knowledge, I was able to get going very quickly. After deploying my app to my device and the emulator, I noticed that MS handled a lot of things seamlessly. One particular shoutout is the persistence of view models. My original code had me recalculating stuff every time a page was loaded with the intention of caching it manually sometime in the future (kinda like in ASP.NET land). I instead found that if I just added a flag to see if I had been to that page before, I could take advantage of view models being cached automatically. This is probably already the case with WPF, but I didn’t realize it and it made me happy.

#3: Haven’t yet done it, but I can see how easy it would be to replicate stuff into a Windows RT/WPF app

I haven’t done this yet, but I do have plans to write a cross-platform WP8/Windows 8/Windows RT app at some point. Given that the all three targets use so much shared technology, it seems that porting across platform really will be a matter of adding the appropriate #if and #endifs and writing the UI layer. This also leads itself to more modular code since I have to keep in mind to separate my modeling layers from my view layers. This can further be expanded to WPF and even ASP.NET which means a developer could go from one code-base to writing apps for: WP8, WP7.5, WinRT, .NET 4.5 and ASP.NET! This makes me seriously excited as I think about app ideas that can leverage all these different platforms.


#1: Getting a fully-capable dev machine

Unfortunately, WP8 development also has several shortfalls, the greatest of which is finding a dev machine capable of developing apps on. This search was ultimately futile from the perspective of finding a machine that was able to both run the emulator and deploy to my device. Of all the machines I work with (and I work with several), only my home-built desktop was able to support the hardware virtualization that allowed the emulators to run. Sure, the emulators run really well, but it makes no sense to me why you would make the barrier to entry so large for a fledgling mobile OS. I can easily see independent developers willing to give WP8 development a spin only to realize that they need to buy a brand new Windows 8 64-bit computer with the appropriate new processor architecture to be able to use an emulator.

Once I found a computer able to run the emulator (which happened to be the desktop I had built from scratch 3 or so years ago), I quickly found out that it was not able to talk to my phone via USB. This may be an issue with my USB controller but I do use several USB devices without event so this was still annoying to me. I ended up having to install Windows 8 on my personal laptop and dual boot it to have a device which could deploy to my phone. So now I have a weird workflow where I develop on my desktop and test things out via emulator before checking it in to TFS and then pulling down a copy of the code on my laptop, building it and deploying it to my 920. Not something I would recommend.

#2: Silverlight-based target is still generations behind .NET 4.5

While I mentioned that the technology is similar to standard .NET development for Windows Phone, sadly it is still a couple of generations behind the current .NET release. Libraries and keywords that I have become accustomed to in my day-to-day development are suddenly no longer available. Routed commands are something I missed, in particular, because it cramped my MVVM style. I had to write my own ICommand classes and I will have to do that for all the apps I develop. Uncool.

#3: Developer support and documentation is paltry

End-user documentation from MSDN is horrible. I cannot recall finding a single piece of code that helped me on the Windows Phone documentation section. Most of my queries get answered by a Google search, a StackOverflow question or just get worked around. Microsoft’s .NET documentation is very good with lots of examples of how to do things. They definitely need better code samples and not just a high-level journey through workflows. The most immediate thing that comes to mind is programmatically generating dynamic live tiles. MS has a huge page describing the tile technology–in English. They frequently reference dynamic tiles and doing things programmatically–but never provide a code sample! Craziness.

That’s it for now. I’ll put a link up to my app once it gets approved.

8th day thoughts on the Microsoft Surface RT

So, a little more than a week ago, I made the impulse decision to purchase a Microsoft Surface. I ended up spending most of my lunch hour in line at the Microsoft Store in The Domain in a mostly chilly morning with about a 115-120 other shoppers. I have to say I was pleasantly surprised at the number of people who had lined up, although most of the pleasantness was not recognized at the time, because it was pretty chilly and I was in shorts and a sweatshirt

Anyhow, let’s get to the meat of this entry: the Surface RT itself.

Everyone has talked about the beauty of the hardware itself and I am mostly in agreement with that. Of course, I have not owned any other tablet device, so I do not have a comparison point, but I have used my parent’s first generation iPad and I would say that it easily blows that device out of the water (which it should do for a device that is a few years old). Compared to the various laptops I’ve owned, this definitely feels nicer and sturdier. Microsoft has promoted the sounds of the hinge and the clicking in of the cover. I’m not sure what is so special about it, but again I have not had the benefit of comparing it to another high-tech device with a hinge. The clicking in sound does sound pretty satisfying but I found, after 8 days of usage, that the only time I was clicking the cover in or out was when I wanted to demonstrate the sound to another person.

Let’s move on to another piece of the hardware: the Touch Cover. When the Surface was first announced earlier this year at an Microsoft keynote, this was the thing that immediately caught my eye. In fact, I even remember immediately posting a picture of it on Facebook, in awe. Unfortunately, Microsoft elected not to bundle the cover in the price of the base device, which I think was a misstep. That said, the keyboard itself works phenomenally for a device that is so thin and non-keyboard like. I am writing this entire review on the Surface so that I have the benefit of a relatively large document to test the keyboard out. I still make several typos and have to use the backspace key liberally, but it is eons ahead of any on-screen keyboard. In fact, when I’m in tablet mode on this device and the on-screen keyboard shows up, I can only use it for a few short words before I just flip the keyboard around and use it. The trackpad is also surprisingly responsive and challenges and, in some cases, betters the performance of several laptop trackpads. It supports multitouch, as well.

The problem areas for me with the keyboard are the space bar and the left shift key. In general, it seems that any key that needs to be fired with my pinky are slightly problematic as my brain needs to readjust to the fact that I need to apply more pressure to those keys than I’m used to. I suppose that is a con, but it is something that doesn’t really affect me that much. I will also concede that long typing sessions will probably cause fatigue to the wrists because there is no rest area for them. In conclusion, though, the keyboard is a fine piece of engineering.

The camera is unfortunately a letdown. I haven’t had a chance to do video chat on it yet, so I don’t know whether it will suffice for that purpose but for everyday picture taking, it is not very usable. I guess that makes sense since it is kind of silly to carry around a 10″ device to take photos, but it would be sweet if it packed a higher-resolution camera. The angled back camera also makes sense if the thing you want to tape is right behind your device but kind of an inconvenience for anything else. I tried to use the camera to take photos during my Halloween party last week and it was hard to use and produced pretty crappy looking photos.

Next, let’s move on to the software. The Surface RT comes bundled with Windows RT, which is essentially a handicapped version of Windows 8. When the Surfaces were first announced, I had my heart set on a Surface Pro as my laptop replacement. However, once Microsoft announced the pricing model of these devices, I realized that the Pro would probably fall out of my budget, especially given that my current Sony VAIO still works fairly well. In addition, I wanted to take advantage of the slightly lighter Surface RT as well as the fact that it was available now (see earlier comment about impulse purchase).

I did download a couple of the Windows 8 previews this year but did not get the chance to use it extensively. I set it up on my HTPC that is connected to my computer and found that the interface, while beautiful, is really not designed for a point-and-click environment. Which is why the Surface is the perfect device to take advantage of the “Modern UI” that Microsoft has been pushing. As a multi-year owner of Windows Phone devices, I have already completely been sold on the live tile-based UX and was excited to see it expanded. Having used the Surface for a little more of the week, I have to say that the gestures are very well designed and consistent across the Modern UI. I find myself swiping the Windows 8-style gestures when on my Lumia 900, now.

Let me go back to the handicapped nature of Windows RT, for a moment. As you may or may not be aware, the Surface RT packs an ARM microprocessor which means it is not compatible with Intel x86 code. Which, for the less technically-inclined, is essentially any Windows software that you have encountered prior to Windows 8. Microsoft ported a version of Office to the ARM processor but apart from that, any “apps” need to be installed from the Microsoft store. As a developer, I haven’t had the chance to play with the SDK yet and haven’t really followed the Build sessions so I do not know how restricted the available APIs are for Windows RT. It would certainly be neat to be able to run some legacy stuff, especially drivers (my printer is not supported) and stuff that rely on browser plugins (such as my work VPN as well as Google+). The porting of that legacy stuff will depend entirely on the commercial success of the device.

With regards to the stability of the device, I would give it a decent score. I do encounter some lag when I have a lot of stuff open or in some specific apps (Xbox Music being a prime example) but in general it doesn’t affect me on a daily basis. I did encounter a situation yesterday when apps seemed to crash to desktop when attempting to use them. A restart (and the restart itself is quick) fixed the issue but it was still a minor inconvenience. That said, I have applied the workaround that allows me to get to any Flash-enabled website that I want, so I’m not sure if the Surface was equipped to deal with the crappiness of Adobe’s platform.

Let me talk about the stock apps a little bit, now. Unfortunately, almost all the stock apps that I use on a daily basis are pretty sucky. First, there’s the Mail app. This app is pretty slow and definitely needs a second pass before it is usable on an everyday basis. It syncs down fine and everything but is just very laggy. Next we have the Calendar app. First of all, the Calendar app neglected to sync down my Facebook calendar properly and it is still an issue I haven’t figured out. Secondly, it appears Google still hasn’t enabled multiple-calendar support for the Surface so only the default calendar gets pulled in. I downloaded some trial software to sync my work Notes calendar with Outlook.com and it promptly brought my Calendar app to an unusable slowdown. Luckily, the live tile and notifications still work fine, so I don’t have to go into the actual Calendar app that often.

Next, there’s the Xbox Music app. Unfortunately, I think this app is a drastic downgrade from the really solid Zune desktop app. I sure hope the development team at Microsoft work on improving this app (they’ve pushed out several updates since Windows 8 was RTM’d) because right now it is buggy. I encounter everything from random songs being skipped due to Xbox Music Pass issues to the UI becoming unresponsive when trying to control my playlist. Once I get everything queued and started, it works pretty well, but that is not an ideal usage scenario.

The People Hub also appears to be a downgrade from the experience in Windows Phone. The biggest problem I have with this is the live tile doesn’t mark items as being read so I have notifications from several days ago still flipping around. Without a first-party Facebook app (so far) the People app also does not bridge the gap well enough so I find myself going into the browser-based experience often. Speaking of the browser, IE10 is very solid. The Modern UI app works really well and gives me a nice, full-screen view of the pages I want. There is still room for improvement in the form of the back and forward actions, which appear to reload the page from a very, very slow cache.

All this said, it is gratifying to note that none of the stock apps are part of the operating system, which means that they will have the ability to be updated regularly. Whether we actually see Microsoft throwing resources towards the continued improvement of those apps is anyone’s guess.

In conclusion, I’m very happy with this device. The major negative areas for me appear to be in updatable software portions. I expect Microsoft may have cut some features in their stock apps to be ready to ship by holiday season, and I hope those features get scheduled in the next few updates. This device isn’t ready yet to replace my laptop, but that is mostly a function of it not being an x86 device, something I knew going into the purchase. The Remote Desktop app actually functions pretty well so I can theoretically access anything I want from the Surface as long as I am on a network with an x86 computer I can remote in to.

I would recommend this device to anyone who is willing to deal with the growing pains of a 1.0 device. I think the keyboard is a must-buy if you get this device because it is what sets it apart from other products in the same form factor.

technology soapbox

A lot has been going on in the technology landscape over the last few weeks and I’ve decided to get on a little soapbox and share my thoughts on them at midnight on a Tuesday night instead of going to sleep so that I can wake up in 7 hours to walk my dog after (hopefully) finding out that she has not pooped all over everything. Instead of trying to make the writing flow, I’m just gonna knock them off one after another.

Apple-Samsung patent case

As you may have read unless you were taking a break from the interwebs for the last month, Apple won a huge patent case against Samsung with regards to smartphone developments and innovations. While I’m not familiar with the nitty gritty details (nor do I have the desire to get familiar with them) I still feel the need to spew some gospel.

From a purely legal perspective (which, in honesty, is what the jurors should have been looking at anyway) I agree that Samsung was guilty of copying Apple’s “innovations”. I think the issue, though, is the fact that such patents exist, anyway. Of the several patents that were successfully defended, it seems there were ones about the shape of the device, the user interface of the operating system and other visual effects (such as the “bouncing” of a scrolling list when you hit the end). Apple zealots (I won’t use the word fanboy since that always evokes negative emotions) have been quick to deride Samsung for stealing Apple’s innovations.

I challenge that these “inventions” are worthy of a patent. Is the world’s self-professed most innovative company really suing people for copying the “bounciness” of their lists? Is that really the level of innovation that we have come to expect from technology companies? The original iPhone was not innovative because the lists were bouncy or because the device was rounded. It was innovative because it was the first truly accessible touch-enabled device. The innovation came by way of the app store (as a former BlackBerry user who was trying to download apps, the iOS store was truly a cool invention).

Filing for and receiving patents for the shape of a device and minor user interface effects and animations is pathetic, more pathetic than suing a company for violating said patents. In my humble opinion, the biggest long-term effect of this litigation and judgment is the filing of frivolous patents by technology companies instead of any actual innovation. Imagine if Alexander Graham Bell had filed a patent on the curliness of the wire connecting the various parts of a phone–that is in essence what these “design patents” amount to.

Nokia Lumia 920 and PureView “Scandal”

This is only really a scandal if you are a tech-geek like myself and follow several tech blogs every day. The “scandal”, if it can be called that, is that Nokia, in an advertisement following their Lumia 920 announcement, presented optical image stabilization (OIS) in a way that suggested that they were using the Lumia 920 for the media in the advertisement. Basically, their ad showed clips of a person on a bike shooting another person on a bike using a Lumia 920 and then cut to how the video would look with OIS on and off. People (including myself) made the incorrect assumption that the video of OIS on was shot on a Lumia 920.

It turns out some super sleuths were able to catch a couple of frames in the video where the magic of reflecting light showed that the OIS on stuff was not shot with a Lumia 920 on a bike but a full camera rig on a van. The internet temporarily exploded into chiding Nokia about incorrectly leading people on. Nokia even issued a public apology and shared actual video shot with the Lumia 920, compared with video not shot on the device.

Seriously, people? Are we now in the business of calling out advertisements for not being 100% accurate? I don’t own an iPhone 4S, but 90% of my friends do and no one has told me that Siri is perfect, or anywhere close to it. I certainly don’t expect to ride on a horse backwards when I buy Old Spice deodorant and I don’t think anyone would allow me to pay them with Orbit gum. It’s an advertisement–it’s supposed to pique interest about the product.

When I watched the original commercial, the fact that Nokia used the “OIS on” and “OIS off” textual overlays in their video made me wonder if one could actually turn the feature on and off on the Lumia 920–which suggests that they weren’t malevolently claiming that the OIS on video was shot on a Lumia 920. If that was the case, they could very easily have replaced the captions with “Lumia 920” and “<insert competitor phone here>”. Yes, there is no arguing that they were trying to “trick” consumers into thinking that the OIS on video was shot on a Lumia 920, but that’s the point of advertising…

Windows Phone 8 + Windows 8 and Microsoft marketing strategies

As much of an MSFT fan as I am, I have always held onto the belief that there are some really dumb people running Microsoft’s PR campaigns. Surely they should be able to find a firm that does the job half as decent as Apple’s marketing team. Thinking back over Apple and Microsoft advertising campaigns, the only reason I remember MSFT ones are because they were utterly SMH-worthy (that’s shaking my head, for the acronym-challenged). Apple, for example, had the the Mac vs. PC campaign, which, although it made me cringe, was memorable and to the point (and very effective in developing the Apple zealotry). Their current campaigns, while not as powerful, are still pretty effective: close-ups of beautiful looking devices with an abundance of hyperbolic adjectives in the background along with some indie music.

If I think of Microsoft’s ad campaigns over the last few years, the two that come to my mind are the “Windows 7 Launch Party” and the “WP7: A phone to save you from your phones” campaigns. Both were supremely cringeworthy and didn’t really cast the product in a positive light. What the heck was a Windows 7 launch party? I watched several of these commercials and had no idea what they were trying to portray. The WP7 campaign was an attempted assault on other phones but one that didn’t make any sense–why would I want to spend a bunch of money on a phone that I then didn’t need to use?

Anyhow, that’s all old hat. MSFT is trying a new strategy now, which also sucks, of announcing products 2-3 months before launch. They don’t have the marketing prowess to sustain that hype over such a long period. And, unfortunately, it seems like Nokia is following a similar plan. The Microsoft Surface tablets were announced a while back but in the announcement, there were no information about pricing or availability. The same thing happened with the Windows 8 announcement, the WP8 announcement and the Lumia announcement. Tomorrow, Apple introduces the iPhone. I am absolutely certain they will announce the price, shipping date and will begin preorders as soon as the event ends.

That’s it for now. Time to get a few hours of sleep!

why i love windows phone 7

The internet, in general, hates Windows Phone so I decided to write a quick post to explain why I’m completely smitten by the platform. For background purposes, the Nokia Lumia 900 is my fourth smartphone after a BlackBerry Curve 8310, the iPhone 3GS and, most recently, the HTC HD7S. I’ve been using the Windows Phone platform since about July 2011 (the HD7S) and there’s no looking back, for me. Let’s go into details.

It’s Freaking Beautiful

The UI is absolutely stunning. Yes, the screen resolution doesn’t allow for “retina display” and WP manufacturers have not entered the ongoing pixel arms race, but the actual presentation of the operating system is beautiful. Metro is easily my favorite user experience on any piece of software I’ve used. The large tiles are bold and bright and the sharp edges gives them definition. Compare this with the grid of tiny icons that iOS/stock Android presents you (along with a number-based notification system) and the difference is massive if you allow yourself to believe in it. Of course, iOS and Android are making strides with an improved notification system and widgets, respectively, but I’m a fan of the WP presentation. It’s sexy and utilitarian. If I want to check the weather, I just need to unlock the phone and the live tile tells me the current weather and the next two days. If I want to see if anyone has posted anything on my Facebook or tweeted anything at me, once again, the live tile grabs all this information.

Everything is integrated

When I was using an iPhone, I had:

  • My contact list on my phone
  • My music playing off of Spotify with the Spotify app
  • My Facebook notifications coming through the FB app
  • My Twitter notifications coming through the Twitter app
  • Any synchronization being done through the shitty iTunes interface
  • QR Code/barcode scanning being done through third party apps
  • Pandora for live radio
  • Shazam to do song recognition

And it goes on. I use my phone primarily to keep track of my social networks, to text my friends, to listen to music and occasionally make a call or two. All the above things I mentioned are integrated into the core Windows Phone operating system. When I first set up my phone, I logged into my Windows Live and Facebook accounts. This grabbed all my contacts and even matched them up with the relevant Facebook accounts. I did install the third-party Facebook app but I hardly use it (also, it is extremely buggy).

The Windows Phone search button (a dedicated touch button that can be pressed at any time) allows you to not only search for text but to scan a barcode or QR code or even listen to music. Yup, the Shazam feature is automatically built in. Pandora still needs a third-party app (wpFandora does an excellent job) but more importantly, all my music is tracked through the Music & Videos hub. This means that if I heard a song on Pandora and then listened to other stuff on my phone, I can easily find the track in my music history as if it were being played from the same source.

I cancelled my Spotify subscription in favor of the Microsoft Zune Pass, which is the same price. The advantages? I don’t have to use iTunes again, ever. I can’t put into words how huge this advantage is for me. I absolutely detest iTunes. Zune is a more than worthy replacement and is about 1,452,530 sexier than iTunes. You know how OS X has been building up all these “full screen, immersive apps” the last few months? Well Zune has been doing that since… well, a long time. Another positive of Zune Pass is that it is essentially iTunes, Spotify, Spotify Mobile and Pandora rolled into one. I can listen to any song on Zune through subscription, and I can download it to my phone and play it offline. Of course, if I haven’t downloaded a song, I can look it up and play it from the marketplace section on the phone and even download it and save it to a playlist. Without having to buy it. Without having to download Spotify. The Pandora equivalent is “Smart DJ”. You can search for any artist and click “Smart DJ” and it will start playing related songs. Sure, their algorithm is probably not as good as Pandora’s, but you can get started with it immediately.

The hardware and software are unique… “different”

I find it most hilarious that I’m using Microsoft software and being “different”. It seems like only yesterday when Apple was forcing “think different” down everyone’s throats. For those not in the know, Nokia is using the slogan “beautifully different” to drive Lumia sales. And it’s ironic, but Microsoft’s product offering here is really unique and different. The iPhone is now the go-to smartphone for most users and the marketing advantage that Apple had with Macs of having “something cooler than yours” has not carried forward to their phone product line. Everyone has an iPhone. Except those people who have Android, which, in my opinion, basically means that you want (/need) to tinker with your OS to customize it to your needs or you are just to cheap to buy an iPhone. Or you hate the fact that Apple makes minor improvements to their product every year and then sells it as if it’s the greatest new thing. Android buyers have the latest technology available at a low price now, instead of next year. Alas, it comes at the cost of a fragmented marketplace that is struggling to deal with all the different versions of the operating system on their hardware, now.

Windows Phone has a minuscule market share and one that Microsoft, I think, should increase only enough to become the Mac of the smartphone market. The Lumia 900 is a fine hero device because it’s not just Android hardware with the WP software on it, but a device built from scratch to match the sexiness of the WP7 operating system. Of course, MS has historically operated on volume so they are trying to give the device away for free to try and get it in people’s hands. I suppose this works, but at some point I think MS should try to make Windows Phone a luxury device, rather than the Dell of smartphones.

And finally, the negatives…

Of coures, there are several negatives with the platform. The two that have been brought up the most are (1) “there are no apps” and (2) “this is last year’s hardware”. Yes, the app offering is fractional compared to the iTunes App Store and the Google Marketplace (or whatever its name is, right now). And the bigger problem, in my opinion, is that most big-name developers don’t even consider developing for WP. Which is mindblowing to me, as a developer, because Microsoft’s developer suite (Visual Studio) is heads and shoulders above iOS’ (XCode or Mono Touch) or Android’s (Eclipse or whatever Java editor you choose to use). .NET technology has been around for ages and most developers already know how to code in it. One would expect there to be a lot more Windows Phone developers, but I guess they are driven by market needs.

But going back to the crux of the issue, yes, there is an app problem. Any Windows Phone user who tries to tell you otherwise is just lying to himself or herself. I want to play Draw Something on my Lumia. I want to be with the “in” crowd of whatever game ends up being the next viral craze. This is a work in progress and it’s only going to change if there is a sufficient shift in market share for Windows Phone. All that said, the apps for WP are legitimate in themselves. There are several really nice apps that take advantage of the Metro UX and understand Microsoft’s vision with the operating system.

The second negative is, in my opinion, mostly just FUD. Yes, current generation Windows Phones are babies compared to the technical specifications of Android. Isn’t there an Android phone out there which is going to be quad-core? And really, the first thing that comes to my mind is, “why the hell do you need four cores on your phone?” It sounds like either the developer SDK is not efficient or that the developers are dumb. Windows Phone works like a dream with a single core. Everything is snappy and I have encountered little to no lag. That said, I do think that a few of the software requirements/implementations could use improvement. For example, I’d like to have higher resolution graphics and better camera software. I’m hoping Apollo will change some of this. And if Apollo does include dual-core support, I can’t imagine how awesome the platform would be. If WP’s performance is already comparable with iOS/Android with a fraction of the cores, a multi-core experience is only going to be better (especially given that MS has software pedigree in developing successful multi-core operating systems).

Alright, I’m gonna step off my soap box, now, since this was a fair bit longer than I expected. Keep in mind that these conclusions are drawn based off of my Lumia 900. A few of my opinions would be very different if I had been writing this article whilst using the HD7S, which is essentially just an Android phone with the Microsoft OS on it.

Feel free to comment with your opinion! I completely understand that my love of the MS offering is highly subjective. As with taste in music and preference for beer styles, I respect the fact that people like different things.

iTunes is a piece of crap

I don’t mean to regularly post about iTunes crappiness as far as media playing software goes, but it really stinks. Without fail, every time I’ve connected any one of my iOS devices to my computer (iPod Touch 1G, iPhone 3GS, iPod Touch 4) the software says my device has some sort of system error and that something failed and everything seems to work afterwards. Okay, fine. I understand that designing software is not Apple’s forte, but today the software has been unquestionably shitty.

To rewind a bit, I just got my iPod Touch 4 delivered today. The device itself is super sleek and sexy. I’m afraid it’ll break in half it’s so thin, and I cannot tell when it’s in my pockets. These could all be negatives but they’re in fact positives. The retina display looks spectacular. The cameras are good and the in-built speaker is a much needed feature that has been missing for ages. Great. Let’s use it. I should just be able to turn it on and go, right? Wrong.

Enter iTunes. As soon as I start the device, it asks me to plug it into iTunes. I groan. I guess this is the activation acrobatics. Fine, it activates. Oh wait, no. First I have to download iTunes 10. Okay, done. Now it activates. It then asks me to set up my device. I name it “iJolokia” to go with my recent theme of pepper-flavored computer devices. iTunes has it’s unbounded progress bar think for ages until it tells me “The device could not be set up. A file could not be copied” or some idiotic message like that.

The iPod page on iTunes lists my device as having 4GB of hard disk space. I bought a 32gig model. I disconnect and reconnect the device and iTunes tells me the iOS software needs to be updated. I update it. It then takes me to the “Set up as a new iPod” or “Restore from backup” page. I choose setup as new and try again. Fail.

Next, I jump through all the above hoops again. This time I restore from a backup of my iJolokia failed sync, not expecting it to really succeed. It tells me “iTunes could not restore the iPod iJolokia because the backup session failed”. This time I try to restore it from a backup of my old iPod Touch 1G, groaning because it will spend all the time syncing my old apps which I don’t want. I end up groaning for a different reason. The same message pops again.

What the hell?

Time for my first call to Apple Tech Support.


Recently an article came up on my Google News about the new “background image” option on the Google homepage. It was an article on PC World ruminating about why some people are complaining about the new background image. I read it and agreed with most of it, but most honestly, I was wondering, “What kind of people would actually complain about this?” I expected it to be some minor percentage of people who have nothing to do, but as I scrolled down to the comments section, I was really flabbergasted by the number of people who actually had an issue with the new homepage.

To recap, Google added the ability for you to specify a background image on your Google homepage, the effect of which made it look a bit like Bing (but in reality a lot different–Bing’s graphical homepage is actually a lot more feature-ful). Furthermore, you could actually choose which “theme” you wanted and could even upload your own stuff or do a Google Images search for a graphic you wished to use. What’s the issue?

Apparently some Google users feel like they have some ownership of how the page should look. There were actually people demanding that Google return the homepage to the default state or add some sort of “easy to click” option to do so. Really? It’s just a homepage. The page behaves exactly the same. The only thing I’m really worried about is whether the Google logo will still be customized on special days–as that’s the only reason I actually go to the Google homepage (I use my Firefox search bar for everything else).

Seriously, people, find something better to complain about. Like that oil spill or whales dying or something.

apple and flash

Steve Jobs posted an open letter today about why Flash is not and will not be supported on the Apple mobile platform. You can follow the link to read the full article, but basically he gave 6 reasons. Let me look at each of these one-by-one. And before I do, I would like to remind everyone that I’m not really a big proponent of Flash. Back when I was web-developer, Flash was the one platform I detested and never took the time to learn. I think web-design through Flash is a poor design choice except if it is being done for some sort of portfolio or niche-website. Anyhow, with that out of the way, let’s look at Jobs’ six reasons.

First, there’s “Open”.

Jobs’ claim here is basically a fact. Flash is a proprietary system. Not only do you need to buy expensive software from Adobe to be able to create professional-grade Flash applications, but you also need to download a third-party plug-in from them any time you want to view it. There’s no complaints I have about this statement except that it reminds me of, you know, pot-kettle-black.

Apple is possibly the most proprietary technology developer out there right now. Not only is the iPhone OS system completely closed and regulated, but even going back to the OS X operating system, you legally need a Mac to run that. It sounds highly hypocritical of a CEO of such a proprietary company using “openness” to attack Adobe. To Jobs’ credit, he accepts that Apple is proprietary, but he wants the web to be open. How benevolent of him to allow us this luxury!

Second, there’s the “full web”.

Adobe has counter-claimed Apple’s claim that the iPad is the best way to experience the web, by suggesting that those users do not have access to the full web. Jobs’ counter-argument to this is that Apple supports HTML5, CSS and the modern H.264 format for viewing video. He also rattles off a list of 16 sites that supposedly support video on the iPhone OS (although at least one of them–Facebook–at least check, does not).

As I said at the beginning of this piece, I hate it when a website has used Flash for the purpose of web-design (especially when they haven’t offered an HTML alternative). So from that standpoint, I’m happy that Apple has gone ahead and blocked those websites. However, when it comes to videos, Apple is just ignoring the problem. Sure… they support these 18 sites that now allow HTML5-based streaming. But about the 1000 other websites that people actually visit? How can you advertise a device as being the best way to browse the web when it falls annoyingly short in multimedia presentation? Companies have paid millions of dollars implementing their current content delivery platforms–not everyone has the financial resources that YouTube, for example, has, to begin supporting H.264 video overnight.

Third, there’s reliability, security and performance.

I have heard several anecdotes about how Flash causes Macs to barf. Jobs labels Flash as the number one reason for Mac crashes. Obviously Adobe has a part to play here, since they are the ones that are writing the actual plug-ins. But I don’t buy the whole “reliability, security, performance” argument for the iPhone OS. Just like I don’t buy the justification that Apple fanboys give for keeping the App platform closed or for keeping OS X locked down to Mac hardware–to preserve the quality of the system. How dumb do they think consumers are? The App Store is already plush full of useless applications (I believe Fart Apps deserve their own category going by volume, right?). In fact, I can count the number of apps I use regularly on my iPhone on one hand.

This destroys the perception that it is impossible to create low-quality applications staying within Apple’s development platform and regulation. The theory that it is impossible to create a quality application outside of the Apple-allowed platform is similarly debunked by the “black market” that is Apple jailbroken apps. There are several quality applications developed there that would deserve their place in the App Store if Apple had put it’s draconian policies aside. Not to mention that they’ve actually supported the novel (not really) idea of evaluation software. Instead of Apple allowing evaluation periods, they decided to go with “Lite Apps” (there’s actually a section in the Apple Developer Center that recommends releasing a Lite app, with stripped out functionality). There have been countless times that I have been partially interested in an iPhone App only to find that is not free and the “Lite” version doesn’t allow me to actually test what I want to. Some developers, like Remember the Milk, have gone about their own methods of providing a trial period enforced by a web-service.

Fourth, there’s battery life.

Jobs claims that on an iPhone, an H.264-encoded video will play up to 10 hours whereas a software-decoded video will play only up to 5 hours. This may well be true, but I don’t think Apple is in any position to preach about battery life. I have had to charge my iPhone, without fail, every night. If I don’t, I’ll get into the red midway through the next day. I don’t make that many calls, either (if I could exchange my rollover balance for cash value, I’d be a rich man), so it’s not like I’m using my phone all that much. In fact, I check in to Twitter about 3-4 times a day, the same with Facebook and occasionally I play Racing Live for about 5 minutes (this is not a graphics-intensive game, btw, it is more of a “simulation”-type game). Yet, my battery is toasted by the time I reach home. I can’t imagine how life is going to be when multi-tasking is supported.

I guess Apple does have a claim to make here, they’re prepared to do anything if it increases battery life.

Fifth, there’s Touch.

A side-note, I wonder if Apple has actually trademarked the word “Touch”. Why else would it appear capitalized? Anyhow, Jobs’ claim here is that Flash was designed for mouse-based input whereas the iPhone OS introduces a completely new touch-based interface. The point is well-taken. I’m not aware if Adobe has made any forays into touch input, but my feeling is they would have, if they were expecting to release the Flash CS5 Deploy to iPhone App feature. Which leads nicely into Jobs’ final point, the most important one, supposedly.

Sixth, the most important reason.

Besides the fact that Flash is closed and proprietary, has major technical drawbacks, and doesn’t support touch based devices, there is an even more important reason we do not allow Flash on iPhones, iPods and iPads. We have discussed the downsides of using Flash to play video and interactive content from websites, but Adobe also wants developers to adopt Flash to create apps that run on our mobile devices.

This is referring to the Deploy to iPhone App feature that I talked about in the previous point. Basically, Adobe is planning to release, in Flash CS5, the ability for a user to deploy a Flash animation as an iPhone App. Flash does all the heavy-lifting of converting the ActionScript code into the archaic Objective C format, compiling it as required by the App Store, etc. However, a few weeks ago, Apple modified their developer contract to state that creators of iPhone Apps must have originally created that code in Objective C. This basically makes any app that was generated by Flash CS5 in violation of the developer agreement. The same is the case for apps developed using MonoTouch–the commercially available tool that allows .NET developers on Macs to create iPhone Apps–as they are also not originally Objective C.

Jobs then goes as far as to suggest that developers won’t have access to the newest features when they become available, etc. I have a huge pain-point with this. In my previous discussions about Apple and it’s products, I always bow out of the discussion when someone brings up the point that Apple is not targeted primarily towards technical consumers. What this means is that I can go and build a computer for less than it costs to buy a Mac–that’s why Macs aren’t targeted towards me, specifically. I can understand and accept that–Apple does a good job in marketing a product and keeping their profit margins wide. However, Jobs, in this case, actually is trying to run the same argument by, except targeting them towards the actual technical users.

He hypothesizes that if Apple were to allow third-party code to be converted into Objective C, developers would become clueless about how to take advantage of the newest features released in an Apple SDK. That’s not only extremely inaccurate, but it is extremely insulting to many parties.

It is insulting to developers because we have to be ahead of the technology curve (for example, the iPhone OS 4 SDK is already out for iPhone developers, but not for end users) and have to have an understanding of how a system actually works.

It is insulting to consumers because it suggests that they will not be able to tell the difference between a good app and a bad app. As I’ve said earlier, it is a fallacy that all apps created within the Apple-permitted spectrum are good and all apps created outside that spectrum are bad. Why not let the user decide what is a good app?

Finally, it is insulting to the actual Apple staff involved in the app review committee. Jobs is basically suggesting that they will not be able to adequately test an application to determine whether it is good or bad, without knowing if it was originally Objective C or not. This basically throws hot water on the whole app review process, because it claims that the process will not be able to test an app’s usability independent of the development platform.

As a whole, I understand why Steve Jobs does not want Flash on the iPhone OS and I have no problems with it. I’m not a major Flash proponent and there are only a handful of websites I visit on an iPhone anyway. I would have a problem with it if I owned an iPad, but that, and several other reasons, have contributed to me not being even a bit interested in owning one. I do have issues with the lock-down of the development process, though, for no reason whatsoever. iPhone developers still have to purchase a Mac to develop their software on, because iPhone apps use a bunch of frameworks that don’t have cross-platform ports. So it is not as if Apple is losing a revenue stream there. It is not as if Apple is losing the developer account revenue stream either–since the developers of those apps would still have to pay their annual fee to be able to sell on the App Store.

On the whole, that move by Apple just seems like a reaction without provocation.

windows xp needs a swift death

I don’t feel like composing a well-thought out entry here, so I’ll just publish a series of one-liners.

  1. If I ever suffer from high blood pressure, it can almost certainly be attributed to Windows XP.
  2. Windows XP is where productivity goes to die.
  3. It has taken me 5 hours (and counting) to install LabVIEW Beta 2 on my developer machine. It took me <30 minutes to install both the 32-bit and 64-bit versions of that software to my Windows-7 laptop.
  4. I forgot about the concept of defragmentation until I had to go back to using Windows XP.

Okay, I cannot think of any more. But seriously, if anyone is still trying to justify Windows XP’s place in industry with anything other than transition costs, they can take a hike. The OS was written nearly a decade ago. Computer Science has come a long way since then. I feel sorry for people (like myself) who have to use Windows XP on a daily basis.

My Windows 7 laptop may be newer, but it is out-spec’ed in almost all categories by the XP machine. Whether it be processor speed, number of cores, RAM, HDD capacity, HDD speed, etc. It’s pretty pathetic (Windows XP, that is).

Okay, enough ranting.

psyched about iPhone OS 4

Apple held their iPhone OS 4 event today and I must say, I’m pretty psyched by the features that they are rolling out. Some of them are things that should have been part of the OS from day 1, in my opinion, others are pretty good innovations. All in all, I can’t wait to see how they turn out come this summer. Let’s take a look at the features I’m most interested in…


Whooooohoooo! Multitasking has *finally* come to the iPhone. This is a feature that users have been asking for years now, and Apple has finally delivered. Their method of delivery is kind of interesting, though, in that they are not allowing for full-featured, automatic multitasking. Effectively, if you want to add multitasking to your app, you’re going to have to do a bit of work. Multitasking is exposed via 7 different APIs that allow you to plug-in to different things from background audio to VoIP. This is different from the standard computer paradigm of multitasking, wherein you save whats in memory and all your valuable stack pointers, load something else into memory and then set up your new pointers correctly. Whether this is a smart way to implement it, only time will tell, but it’s likely to decrease the latency in switching between applications and actually using the foreground app, with all that bookkeeping not being relevant any more.


Of late, I’ve been suffering from an inability to organize my apps as I want them because there are too many/too little of a certain type. I tried to be as categorical as I could from the beginning–organizing by things such as games, social network, etc. However, the issue is that if I want to reorganize a category, or if a category overflows to another page, I’m pretty much screwed. Or not screwed, but in a situation where I spend a bunch of time moving apps around. Folders have been part and parcel of the BlackBerry OS for ages and they are one feature that I used extensively when I still used my Curve 8310. This is a welcome addition to the organizational freaks such as myself.

Game Center

This is the last thing that seems like it could be useful–it’s basically XBox Live for the iPhone. Meaning that you can create match-ups, track leaderboards, etc. Many games currently do this through manual leaderboards driven through web-service calls–this would obviously be an improvement since there would be a standardized API to be able to handle all that stuff, and also the more stable Apple servers running it.

Amongst the other features mentioned, there was better mail management, better enterprise integration, etc. I didn’t really find much of that relevant, but I’m sure there are people who are elated by that news. Amongst the announcements that I didn’t like was their iAd offering. This is basically an effort to counter the in-app ads that are currently being pulled in by many apps (through AdMob and the like, I suppose). While the framework allows ad developers to basically create a lightweight app (one that in many ways will be like a pre-OS 4 app), I think it will be detrimental to current apps. We may see a bunch of apps being rejected/removed because they don’t embrace the iAd platform. While the idea of having these app-like ads may seem novel, I wonder how many people seriously click on an ad. Then again, given that Google built its empire on ads, maybe I’m just a minority.

That’s all for now!

enjoying the vaio

Last Thursday, I ordered a Sony VAIO Y Series laptop (VPCY118GX, to be exact) to use as my new “work” machine. Basically, I’ve got a few weeks of travel coming up in the next month, and I was not looking forward to the prospect of carrying around my large HP laptop with the potential of the fan (re-)busting up again. After searching high and low (mainly high, since I wanted a high-end PC) for about 2-3 weeks, I finally settled on the offering from Sony. This was a perfect combination of style and performance, in my opinion. It was delivered on Tuesday (just 3 business days–amazing!) and I’ve been setting it up to pace over the last few days.

My initial thoughts are that I love it! Here are the specs:

Processor: Intel Core 2 Duo SU7300 1.30GHz
RAM: 4GB DDR3 800MHz
HDD: 500GB 5400rpm
Screen: 13.3″ Widescreen LED with max. res. of 1366×768
Weight: 3.90lbs

The laptop itself is not shiny, but unassumingly sleek. Complete opposite from the HP, which is a fingerprint magnet. It is extremely lightweight… I can hold it under 1 arm for more than 5 minutes without notable fatigue! And the battery life is ridiculous. It came with 2 batteries–the standard 8-cell and the extended 12-cell. The 8-cell has a max-advertised battery life of… 8 hours. The 12-cell has one of 12 hours. Ridiculous, right? If I took both of these on a full charge, I’d be able to make it all the way to India without needing to take my AC charger (of course, I wouldn’t be able to use the laptop for anything useful, and would be in a bit of a pickle once I reached).

From my personal perspective, battery performance is more than adequate. I have brought the laptop in the last 2 days and it has easily managed to stay alive the whole work day. This, despite me doing resource heavy tasks like synchronizing 11,000+ files from a remote server, being on VPN the whole day and building LabVIEW on it. In fact, I’ve run it for about 7.5 hours already, today, and it still has 29% remaining.

I’m guessing this extra battery life is coming from a lower-clocked CPU and thus expected lower performance, but this is not the case. Running Windows 7 Professional 64-bit, this easily blows my Windows XP on a Core 2 Quad out of the water. All in all, a great purchase, in my opinion!

One problem I do have, thus far, is with the keyboard. Obviously, this is smaller than any keyboard I have used (the smallest laptop I owned before this was a 14-incher) and hence I will have a few gnawing pains as I readjust my wrist-flexing angles. The keyboard is also a bit too loud for my taste, but not enough to take away from the rest of the experience!