As it is too early in the year for most usergroups to start again for 2012, I thought it would be a great chance to organise a Nerd Dinner to kick the year off with.
Location: The Elephant & Wheelbarrow
94-96 Bourke Street, Melbourne
When: Jan 25th 6:30pm
I’m speaking at the Melbourne XDDN this month. Now that Windows 8 and the WinRT programming model has been released, it makes sense to focus on them. Below are the meeting details:
A tour around Windows 8 – David Burela
Windows 8 has been announced to the public and is being branded as “Windows reimagined”. This introductory session will show some of the new features coming with Windows 8.
A touch first interface, user account syncing via the cloud, “charms”, app to app data sharing, and the ability to use a picture password to log into windows will all be demonstrated.
Getting started with Windows 8 development – David Burela
So you’ve heard that Windows 8 has a new way of applications known as “Metro styled immersive apps”, but what does this actually mean? What is WinRT? Is Microsoft really making developers use HTML5 to create desktop apps? What about your previous investments in Silverlight?
Join David Burela as he helps clarify what the new programming model is and what impact it will have on you. Explanations of WinRT and how to create basic applications will be shown.
Windows Server 8 Developer preview released. Available for download
Windows Server 8 “is the most ambitious server release since Server 2000”. Lots of streamlined features for multiplex NICs, virtualisation, storage, etc.
The confusion around HTML5, xaml and Jupiter is finally cleared up. The new immersive apps (full screen, metro style apps which are launched from the tile based interface) can be built in either C#/XAML or HTML5/JS. Under the covers it reflects into the WinRT APIs. Apps built like this will run on ANY Win8 machine (x86, ARM, etc)
Silverlight & WPF are "legacy". They put it onto the slide for show. The Win8 xaml looks to be 90% compatible with Silverlight. Demos are shown where they take a Silverlight app, copy/paste the code into a new Win8 XAML app, and only a few namespaces need to be changed. A silverlight grid is then changed to use the native WinRT grid to make it touch enabled and "Metro-y"
The Win8 XAML app is ported to Windows Phone 7 with only 1 line changed.
New version of Visual Studio available to help build apps for Win 8 "Microsoft Visual Studio 11 Express for Windows Developer Preview" (got to love Microsoft product names)
Expression blend works for editing the HTML5/JS apps
The native WinRT controls work in XAML and HTML5
New windows 8 app store. Store & submission process VERY similar to Windows Phone 7. Can submit via Visual Studio Paul Thurrott: "Biggest point of Windows Store: Microsoft is NOT taking a 30 percent cut. It will take a ZERO percent cut."
Win8 machines can be easily restored back to a "clean base image" that developer can specify. Keeps all files, just reverts apps. (Reset/Refresh)
Windows Live application integration. Nice support for photos, calendar, mail, people. Very similar to Windows Phone 7 built in features. Windows user account settings Synced across PCs via the cloud (profile photo, etc)
Win8 specs are the same as Win 7. Consumes less memory after startup. Boot times have been massively reduced. Cold boot demo shows the PC almost starting faster than the monitor can turn on.
Michael Kordahi asked people to write up what their geek origins were http://delicategeniusblog.com/?p=1292. I had some fun digging around and finding old links from the past. So here is a brief rundown of my early years.
Early years:
My geek origin story definitely starts at school. My school was very forward thinking and every student was given an apple laptop, with a 4 grey scale screen! During school hours I’d be making Hypercard animations and games. I also got started with writing Quake 2 and halflife mods for fun and eventually moving on to homebrew on the SEGA Dreamcast. In my later school years I would experiment more and more with the school’s computers and networks. Every time they put up new restrictions, or installed new software like “Mac Admin”, it would only take me a few days before I was able to circumvent them. I was sent to the high school office on more than one occasion for this, and nearly expelled twice. This is also the origin of my gamer tag: xp3ll3d.
Those early years of “Burela vs. the admins” is probably what made me very vocal about computer freedoms such as internet filters (and also why I don’t get along with corporate IT in organisations very well).
University years:
I’ve always been a geek at heart, and the need to spread the knowledge has always been with me. University was a brilliant place to be who you want to be. This was definitely the origin of my love for participating in the developer community as I ended up running a lot of community events for geeks during these years.
It started off with me being nominated to be president of the University’s “school of computing society”, I found I had a knack for organising people and events and it all snowballed from there.
Windows 8 supports applications being built in C# / XAML / VB.Net / C++ / HTML+JS.
The new UI framework ‘Jupiter’ allows applications to be written in your language of choice. This is similar to how the .Net framework allowed people to code against the framework in their language of choice.
Jupiter seems to be a ‘Next generation’ XAML based framework
I’m more excited about the new possibilities coming in the new Jupiter XAML programming model than the misconception that HTML+JS is the only way to create apps.
In the last few weeks, the internet has been in frenzy over the newly released demo video of Windows 8. In the video there is only mention of the new “Immersive applications” being created in a mixture of HTML + Javascript. People took this as more evidence that WPF & Silverlight are dead. Which hasn’t helped after the lack of attention which caused events like Silverlight Firestarter to be needed, or the http://FixWPF.org movement. It also doesn’t help when Microsoft have remained tight lipped even after an outcry from developers. The famous thread on the Silverlight forums has seen over 13,000,000 views. Which is more than the forums usually see in a single month.
What people have found so far is that while yes it is possible to create applications using HTML + Javascript, there is a whole new framework laying underneath that can be programmed against by almost any language / framework.
The first piece of the puzzle comes from the new application model for creating applications. There are a number of codenames here that need to be sorted out
DirectUI: The underlying framework that creates, draws the visual elements on the screen.
Jupiter: The new packaging format of applications on Windows 8. Allows apps to be written in language of choice.
Immersive applications: Current theory is that these are apps that execute within the ‘new shell’ in windows 8. And are aware of being split paned and resized. Like was shown with the RSS feed reader.
Direct UI
Direct UI has been around since Windows Vista days. Previous is seemed to be focused around UI basics for the OS such as theming app windows in the ‘new vista style’ vs. classic theming in WinXP. http://blog.vistastylebuilder.com/?tag=directui
Now it seems that Direct UI is being overhauled to have additional functionality to load XAML applications, new animations, etc.
Jose Fajardo has been a great source of information on Windows 8 leaks. From information he has dug up, as well as information on the forums, it seems that the new Jupiter programming API is a mashup between WPF & Silverlight.
As far as I can see, Jupiter is not Silverlight nor WPF, its another kind of framework that kinda similar or compatible to Silverlight/WPF code.
So Sinofsky is right, that ‘Silverlight’, as we know it, is still a Browser/Desktop thing.
What he didn’t say is, the ‘Jupiter’ framework will enable you to leverage your Silverlight/.NET skills to write Immersive (or desktop) applications in XAML/C#/VB/C++, its very very similar, but not exactly the same thing.
The situation is similar to the relationship of Silverlight and WPF and Silverlight for Phone, you need to create different project in VS, then you can write very similar UI/code, even sharing most of your portable code in a common library, but the underlying technology are still very different. https://channel9.msdn.com/Forums/Coffeehouse/Jupiter/e7960a6237024c1598639efc00d8e394
While the new Jupiter programming model may not be a direct continuation of WPF or Silverlight it does seem to have a lot of code from both technologies. Jupiter instead seems to be a ‘Next generation’ XAML based framework. A framework that can be targeted against by all main current languages used by the typical .Net developer (C#, HTML, etc)
*speculation* This could be because of the calls from the development community to make WPF & Silverlight more aligned. Perhaps we’ll see an updated ‘Silverlight’ framework when Windows Phone 8 is released that is compatible with Jupiter.
Creating applications with Jupiter
As further evidence that Jupiter applications can be created with your language of choice, and that it has roots in Silverlight, here are some examples of how to create applications.
There are some initial attempts at getting HTML working with the new frameworks. The apps and manifests have been created, but a few more hooks may be required to get a fully working version
There are mentions that you can hooks into Direct UI through the COM hooks from Javascript. And also that you may be able to use Direct UI XAML + Javascript. Similar to how Silverlight was done in the original Silverlight version 1.
Immersive applications
There is some confusion over the distinction between a “Jupiter app” and an “Immersive app”. Immersive apps require a call to CreateImmersiveWindow and can make calls to the new immersive namespace
Immersive applications are ones that were shown to live inside of the new Windows 8 shell. Examples of functions that an immersive app can do can be seen with the RSS reader app. When it was docked and resized, it knew to display its data in a different format.
Classic / Jupiter applications will run in the ‘classic windows’ desktop view that was seen when they fired up excel
Immersive applications will be embedded within the new shell
Will this work for existing applications?
There is evidence that existing applications can be wrapped up in the new packaging format.
So while existing applications may not run with the new Direct UI framework, it seems they will still be able to be packaged and distributed through the Windows 8 App store. This was discovered by Long Zheng a few months ago.
While Microsoft only showed off the HTML hooks into Jupiter, I am a LOT more excited about the upcoming XAML based framework.
If you are an existing WPF, Silverlight or Windows Phone 7 developer, it seems that your XAML based skills will carry across fine to the new development framework on Windows 8.
My thoughts are that Microsoft announced that applications can be created in HTML in the same way that they announced it in WindowsXP with active desktop, and then again in Vista with “HTML based sidebar gadgets”. It was a way of saying “hey you can use your existing web skills to create applications on Windows 8.
And that Microsoft plans on unveiling the new Jupiter SL/WPF hybrid framework for all of the “Real developers” at BUILD in 3 months.
The second session was Steve Godbold talking about continuous delivery and how to improve your process of delivering software We’ve heard the story of Flickr’s multiple production releases in the same day. It sounds like a lofty goal, which may be attainable via the right charms, chants and dance moves done at the stroke of midnight on the second Tuesday of April. In this session Steve Godbold will walk you through what constitutes continuous delivery and just how you can work your way towards a more pleasant release experience.
In a current Silverlight application we had the scenario where we needed to validate a data form. When the user entered some data, we needed to run some custom validation code against the database to ensure that it was valid.
Unfortunately standard custom validators that you put into a .shared.cs file will not work. As any database logic that you wrote, while working on the domain service side, would not be able to compile on the Silverlight side.
After a LOT of research, my team came across this blog post by Nikhil Kothari (@nikhilk) that describes how you can write custom validation code that is ONLY executed server side. This allows you to write code that access databases, etc. that cannot be executed client side.
Nikhil also then goes into more details on how you can get client side UI notifications, by adding Asynchronous Validation to the UI.
On the weekend I talked at DDD Melbourne http://www.dddmelbourne.com/
It was a VERY VERY well organised community conference and I have a lot of respect for the organisers who made everything run smoothly.
The talk I put together was titled “New development workflow”. In it I decided to explore and demonstrate a new way you could build a website using newer tools & methodologies. Here is the blurb:
In the last few years there have been a number of new technologies released, which when used together can greatly simplify a developer’s life. For this session, I explore what kind of workflow we could create for the modern .Net developer. The session will show an end to end example of creating a new project: Modern ways of using source control, managing assemblies, testing, pushing to the cloud, etc.
The order of things demonstrated in the video are:
Overview of the ‘current way’ people develop software
Overview of how it could be done with newer tools
What is DVCS
How to use Mercurial with TortoiseHg
Create a new ASP.Net MVC3 HTML5 semantic app
The evolution of going from a coupled data service to using IoC/DI (Inversion of Control / Dependency Injection)
What is NuGet
Using NuGet to install Ninject to enable DI throughout the MVC3 framework
Using NuGet to install nSubstite to create mocks to enable unit testing
Over the last 4 years, I continuously come back to this one blog post by Rowan Miller to remind myself how to create an ItemTemplate for a ListBox. It is the best cheat sheet I’ve found online.
Introduction Data binding in WPF seems to be much like skinning a cat (although hopefully a lot less painful… for the cat at least), there is usually more than one way of achieving the result you want. The purpose of this blog is to quickly detail some of the many ways you can bind data to a WPF application. If you want to go into more detail about the concepts behind WPF data binding and it’s inner workings here are a couple of great articles; … Read More