I’m not going uber-technical on this post as I’m more in a thought mode tonight but definitely read Building Windows 8 Applications with AngularJS aka Oh Yes I Did! by my good friend Lukas Ruebbelke (also co-author of the upcoming AngularJS in Action, get the MEAP today!!) to get a grasp on the simplicity.
My Brief History Microsoft Tech
For about a year+ I dealt with a fair amount of .NET (specifically C#). A good friend Cody Beckner (one of the smartest dudes I know; said it before and I’ll keep saying it) and I kept having these ColdFusion vs .NET arguments (fun lil’ jabs here/there) and finally I said: “I’m going to put it to the test.” My point was to prove to him how much better CF was than .NET. I was wrong.
We worked on an app for Microsoft called BuzzMark. It was a Stack Overflow clone, with their permission, for internal use so the quality had to absolutely hit the mark and so did the code. What were we going to use as the tech? Well, .NET of course! The shear amount of options we had at our disposal was insane. The simple things were still simple, even if it took a few more lines of code than comparable code in CF, but the hard things were easier through things like method annotations, Linq (OMG…amazing), ASP.NET MVC (wow!), etc.
I was impressed but how does all of this apply to Windows 8 apps? One of the most impressive bits about .NET, to me…a polyglot, was the CLR:
Compilers and tools expose the common language runtime’s functionality and enable you to write code that benefits from this managed execution environment.
Weird, right? Native? Seriously? (How many more questions can I add here? One more?)
is compiled through runs on (UPDATE: thx Tim Heuer for the correction) the CLR just like XAML/etc. This is important because it means you get the comfort of picking a language and it is treated like a 1st Class citizen. Typically you have to make a lot of compromises but Microsoft, IMHO, got this one right. It is something I urged @Adobe to do back in the whole “Adobe vs Apple” beef regarding Flash CS5 exports: choose your language with little to no compromise.
At work, I am part of a ~15 developer team where we work on a large AngularJS app. I’ve come to really enjoy it so it was a natural choice when looking at doing HTML/JS apps for Windows 8 but I felt like I’d be losing out in the process. That simply is not the case. Microsoft enables HTML/JS developers with the power of C# developers. What’s sweetest is you can mix them: C#
controls used in HTML/JS. (UPDATE: link points to the appropriate place now to show C# called from HTML/JS)
This morning I had the itch to add a couple of other features so I opened Visual Studio Express 2012 and within a few minutes I had persistence through a couple lines of code. The best part is because I used the Roaming Settings the data syncs to the users profile and is available on any other Windows 8 device. 2 lines!! That’s it.
Don’t believe me? On Saturday I wanted to spruce up the app to give it a bit more of a native feel. You know…simple stuff like clicking on a calendar date would depress the day so it felt like it was actually clicked or the calendar slides in properly when it first loads. To add these native animations, I added 3 lines of Windows 8 code within my AngularJS directive:
Windows 8 with HTML/JS is insanely fun. Of course, if you know C#/XAML or similar, why not use them?
Why not HTML/JS?
There are times I wouldn’t say use HTML/JS. Some apps need DirectX, etc so you may find the need for C#/XAML or similar. It always boils down to a best tool for the job. HTML/JS is a nail…you’re the carpenter. Choose your nails wisely.
Windows 8 Store
Having deployed apps to the Play Store (by far the fastest and easiest deployment) and the App Store (by far the most cumbersome to setup and slowest process), I was a bit skeptical at how Microsoft addressed deployment, signing, etc. As usual, I left impressed.
- Create a developer account (used my biz and was done in ~24 hours)
- In Visual Studio, click Store -> Create App Packages
- Sign In -> Select App (for an update or to link to a reserved app name)
- Run through Windows App Certification Kit (opens it for you)
- (once/if complete) Store -> Upload App Packages
This opens your browser and you can simply drag/drop the packages into the page to add them to the app submission wizard. It goes through an Apple’esque certification process (took a mere 2 days to get my app live, almost right at 48 hours) then it is deployed (auto-deploy or you can set a date). Cake!
The mere fact I could spit out those steps from memory after only having done it twice is a testament to the ease. I would need a whole new blog post to explain the steps for iOS (namely steps 1 and 2 are the pain points for iOS dev). This is a key win for Windows 8 development, IMHO.
- From the Dev Center
- Video Series on Channel 9
I built two apps in ~12 hours on Saturday (from scratch to deploy as a Windows 8 noob) and I built the raw Angular (not in the Windows 8 environment yet) for the third this evening so it is on the way to deploy this week. Look for more details on these as they become available. I’ll give them their proper due in separate posts (short or otherwise). One of them (OvuLately) was linked above in the screencast to show the animations.
I’m doing an extreme MVP on these apps. They are absolutely basic but will continue to grow in features while keeping things simple (a big key I’m now pushing for my apps/work on all platforms). I’m also going to explore the financial options; specifically trials, in-app and ads.
It isn’t like I’m quitting web work or Android/iOS but I’m definitely no longer in the “Nah…no one is on Windows 8 so it isn’t worth the trouble” camp. I’m absolutely not in the Android or iOS first camp either. This entire platform has impressed me to seriously consider each apps market appropriately.