Visual Studio 2015 and Roslyn Compiler

Over the next few months in addition to this blog I’ll be writing a few posts for the guys over at Gooroo.io.

The Gooroo platform is a free set of tools designed at helping Software Developers manage their careers. DDD Melbourne attendees might remember Gooroo’s Terence Siganakis & Carl Joseph from their talk  “What we learnt analysing 1.5 million Tech Job Ads (and how we did it)”.

The first of these posts focuses on the Roslyn compiler covering the background & motivations behind the Roslyn project.

Head over to: https://gooroo.io/GoorooTHINK/Article/16253/Visual-Studio-2015-and-Roslyn-Compiler/latest to read the article.

.

What is Project Spartan and is IE dead?

It is naughty & generally a bad idea to isten to rumours but around September 2014 & again early January 2015 you may have heard that Microsoft was developing a new browser with the code name Project Spartan.

However it wasnt until 21st of January 2015 at a Windows 10 preview event that Microsoft confirmed the existence of this browser and gave us our first peek.

Oooo but most importantly what does it look like?

Well we can’t get our hands on it yet so we are reliant on demos and Microsoft blog articles. Here is a picture I have taken from the IE blog of Project Spartan’s UI to give you some idea:

spartan

A nice clean simple UI that bears very little resembalnce to Internet Explorer.

Tell me about the new features in Project Spartan..

Well it is still very much in development but here is a summary of some of the new features we know about so far compiled from various blogs, the Window 10 video and tweets from IEDevChat:

  • A nice new clean UI that bears little resemblance to IE’s
  • Ability to annotate & comment on web pages (and PDF’s!) to highlight issues/impress your co workers with your cat drawing abilities
  • Spartan can save content for later viewing offline. This feature is also integrated into Windows reading list application & I assume can sync between devices
  • Reading view – a distraction free version of a page optimized for the reading of content. This feature was actually first introduced in the Metro version of Internet Explorer however you probably never noticed unless you had a Surface device as Windows Metro mode was er pretty horrible
  • Integration with Microsoft’s digital assistant Cortana. In the launch event a demo was shown where the user started searching for weather in the address bar & the browser showed a weather forecast specific for that users location.
    A more complex example was also shown where Cortana was aware the user was tracking a particular flight & automatically pulled flight status details when the user searched for the flight/airline
  • Updated F12 developer tools – you can see some of these great new features in the latest version of IE11
  • Fixes for over 3000 interoperability issues
  • Possibility of an extensibility model (or perhaps more accurately one you’d actually want to use!). @IEDevChat tweeted “We’re working on a plan for extensions in Project Spartan. Stayed tuned!”  and “Still building our plan for extensions, but we’ll share more once we have details”. Cant wait to see what they have planned & I hope it will be similar to Chromes model
  • Microsoft say they are working on implementing over 40 new web standards including support for accessing the dom using XPath syntax, Web Audio, Media Capture API, WebRTC 1.1, Touch Events, Content Security Policy, HTTP/2
  • Apparently IE preview has the best support for ES6 features at the time of writing
  • A new User Agent String containing various other browser identifiers aimed at making sites work that would previously have excluded IE by user agent sniffing (never a good practice)

annotation

Above Project Spartan’s annotation features shown at Windows 10 event

Spartan sounds interesting how can I play with it now?

Not quite. You can’t quite yet play with the new UI/annotation features as they are still cooking but you can see the new rendering engine in action by downloading a preview of Windows 10 at http://blogs.windows.com/bloggingwindows/2015/01/23/january-build-now-available-to-the-windows-insider-program/ & enabling Edge mode by opening up the browser and going to about:flags.

So is this the end for IE?

Jacob Rossi says “Spartan is the browser we expect people will be using on Windows 10”.

So for the majority of consumers in the future er kinda yes..

However this is not the full story.

Before I answer this we need to understand that browsers are actually made up of many individual components and subsystems. In fact it’s probably better if you head over to the IE blog here and you can learn all about what makes up Internet Explorer from the people that actually create this stuff – go on i’ll wait.

Internet Explorer in its rendering related system(s) contains a huge amount of code dedicated to providing support for legacy versions of IE all the way right back to IE 5.5.

As you can imagine maintaining this became a bit painful (and does anyone really need support for weird IE5.5 rendering issues – no you don’t) & can slow progress. With Spartan Microsoft decided to draw a line in the sand and based Spartan’s rendering engine on IE11’s standards support and went to work throwing out the older legacy rendering stuff (and a few other items such as vbscript that no one not even its mother will miss).

So in short Spartan is built upon the rendering & JavaScript engine of IE11 (and I guess some other components) but without the old legacy stuff.

The result is a great standards compliant platform with an awesome JavaScript engine to build upon going forwards. Microsoft are referring to this new rendering engine as EdgeHtml.dll.

But what about backwards compatibility? glad you asked let me tell you about Spartan’s dual engine mode..

I work for a bank/government agency and am worried about backwards compatibility!

To support legacy applications Spartan operates in dual engine mode and transparently switches (it is unclear what triggers this) between using the new engine & the old Trident/MSHTML engine for legacy sites.

Internet Explorer will also be made available on Windows 10 to support those guys that have built applications on top of IE’s extensibility models toolbars/ActiveX etc (you poor brave fools!).

It looks like it is still to be decided if IE will be hidden away in order to encourage Win 10 users to move to Spartan. For example in a reply to a tweet regarding if IE will be part of Windows 10 @IEDevChat replies that “We’re evaluating different approaches, but our intent is for ppl to use Spartan unless they have specific compat needs”.

Can you force EdgeHTML rendering on intranet sites?

Yes. “You can get EdgeHTML on intranet using x-ua-compatible if intranet sites are set to use compat view.”

Why can’t Spartan/IE just use WebKit/Blink as its rendering engine – my life would be much easier?

Well maybe but having no completion/a mono culture is a very bad thing for a number of reasons.

Christian Heilmann (probably best known for his work at Mozilla but now working for Microsoft) answered a comment on Jacobs article similar to this with:

“The fact of the matter is that in order to have a standards based web, we have to have different browser engines to test standard proposals against. Having a WebKit only web would be as disastrous as having an IE6 only web or a Gecko-only web. Any engine that has no competition will deteriorate over time – no matter if it is open or closed.”

And I would certainly agree – competition and different is good and drives the web forward & stops one organisation having control over the webs direction.

Will Spartan auto update?

Yes Spartan is “Evergreen”.

Which operating systems can I use Spartan on?

Initially Windows 10 & Windows Phone 10. Remember that Win 7 updwards users will be able to upgrade to Windows 10 for free so there is really no excuse unless perhaps you are in Corporate world. Microsoft said regarding potential cross platform support in the future: “No current plans, we’re focused on making it great for Win10.”  and “Spartan is currently targeted at Win10. We’re focused on getting ppl upgraded (free) but will watch Win7 demand”

Will Spartan use vendor prefixes?

It will likely still contain some but these will be discouraged. “EdgeHTML engine will have a lot of ms prefixes removed; we want to use prefixes very sparingly if ever”.

Were there perf gains from removing the old rendering stuff?

“Yes. The disk size of the engine itself is decreasing and general web page performance has improved by various metrics, including JS perf. Preview builds are notoriously not our best foot forward with perf though, but you should see good things already and we’re not done yet.” Jacob Rossi comment http://www.smashingmagazine.com/2015/01/26/inside-microsofts-new-rendering-engine-project-spartan/

Which IE engine will web driver use?

The new Edge engine. John Jansen in a comment at http://www.smashingmagazine.com/2015/01/26/inside-microsofts-new-rendering-engine-project-spartan/ said:

“We are definitely committed to the Edge engine with WebDriver. We are still working out details about how it must work, but it should never randomly switch between them for no apparent reason. I expect that you will be able to test your internet sites or intranet sites in ways the very closely mimic the actions a real user would see and do”.

Upon release will the browser still be called Project Spartan?

If history is anything to go by Microsoft Marketing or whoever names MS products has a consistent ability to remove cool names so probably not.

I am a site developer what does this mean for me?

You should continue to develop your sites and applications using current standards and everything should be marvellous.

Will Spartan be integrated as closely integrated with Windows as previous versions?

Personally I hope not & in an ideal world I would like to see it possible to run Spartan entirely off a USB stick. I have my suspicions that Spartan may have some deep links given it integrates with Cortana, Sharing of comments, Reading list etc but guess we will have to wait and see how this will work.

Additionally in previous versions of IE many products took dependancies on IE components e.g. Outlook utilized it for rendering HTML email. Having these dependancies may have slowed development as the IE team would have had to be careful not to break these applications reliant on these components.

It is also worth noting that as Spartan updates automatically updates should not be quite as big a deal as they were previously so maybe if there is a close Windows integration it wouldnt be such a problem.

What new HTML/CSS/JavaScript features will Spartan have?

Head over to staus.modern.ie for the most up to date view.

When will it be available to use?

No idea.

Further reading/watching

You can watch the full preview event at http://news.microsoft.com/windows10story/. Note if you just want the Spartan related stuff fast forward to an hour in :)

https://twitter.com/iedevchat
http://blogs.msdn.com/b/ie/archive/2015/01/22/project-spartan-and-the-windows-10-january-preview-build.aspx
http://www.smashingmagazine.com/2015/01/26/inside-microsofts-new-rendering-engine-project-spartan/
http://www.aaron-powell.com/posts/2015-01-25-project-spartan-and-internet-explorer.html

Webinar for Pluralsight on WebGL and Three.js

Ill be conducting a free webinar for Pluralsight on the topics of WebGL & three.js.

The webinar will be held on Sat 23rd 8am Melbourne, Australia time which is Fri 24th 1pm PST  for US readers/viewers.

We will look at some of the advantages & disadvantages WebGL has over other web display technologies, some common gotchas & then putting together a simple car game (screenshot below) utilizing the physijs physics engine!

Headover to Pluralsight now to register for this (free) Webinar!

carJumpingSmall

My 2014 and 2015 goals

Welcome to 2015!
Each year I like to reflect back on the previous year & some of my plans for the year ahead. This blog post is primarily for my own benefit to reflect back on later but maybe it’s of interest to you.

Baby
For me 2014 saw a number of changes. No doubt the biggest change for me this year was the birth of my daughter. It was a great but unexpected surprise. Her birth led to a somewhat different year to what we had originally planned & the cancellation of a booked & paid for trip to Thailand & planned honeymoon to Hawaii :(

Still I wouldnt change anything & here is a pic of me looking pretty tired with her shortly after her birth:

10622903_10203405313307643_2681753911272070687_n

I honestly don’t know what I did with all my spare time prior to her birth & the last few months have certainly been an adjustment period for myself & my wife!

I have found I have to be a lot more selective with what I spend my time on & I have started fitting in things like watching tech videos/Pluralsight content on my morning train commute & squeezing gym sessions into lunch & before work so I can get back home asap.

Citizenship
After just over 5 years here I became an Australian citizen (whilst retaining my British citizenship). Moving countries is never easy for anyone & for me personally my move had a difficult start so was a big achievement for me that I am very proud of. Australia has its issues like anywhere (one of the biggest is our good friend Tony Abbott!) but overall it’s a great place to live and I am happy to be part of it.

10172830_10152040026941053_2755261043340708324_n

Pluralsight & Speaking
I had had a few people approach me about writing a book on various subjects but wasn’t interested right now. Writing is a very time consuming exercise with a lot of time spent editing rather than learning about what you are writing about & the short life time of any technical books for me make this a sum that doesn’t add up.

I do enjoy putting together training content so this year I put together a course for Pluralight on the WebGL framework three.js you should watch it!

Putting together the online course was a much more enjoyable experience than writing & I really enjoyed working with the Pluralsight guys. I picked up some basic video & audio editing skills as well. I really like Pluralsight as a company & they have a great culture & payment model. I’d highly recommend working with Pluralsight.

This year I had a reduced number of speaking engagmenents (quite deliberatly) but enjoyed talking at Web directions code & Melb.js. I also attended and ran a workshop at Campjs. I really liked the format of camp.js & would highly recommend the event although running a workshop is a very different proposition to a talk and I would do this quite differently next time.

The last few years I have spent predominantly focussed on JavaScript & HTML5 & friends but I think this year I will be concentrating on some of the exciting changes in Visual Studio 2015 and ASP.net vNext.

DDD Melbourne
In 2014 we ran DDD Melbourne for the fifth year with over 300 delegates. We had some great talks & workshops and some great key & lock note presentations from well-known speakers Troy Hunt & Iris Classon.

I hadn’t enjoyed running DDD 4 & it had taken up a large amount of my time leaving me a bit burnt out at the end of it. DDD5 ran much smoother & we have some great plans for DDD 6.

One of the big changes we are making is splitting out the running of the event into mini teams, opening the process and site & documenting our process so others can continue it in the future if any of the core team leave.

Work
Towards the end of the year I felt in need of a change at work. I wasn’t enjoying what I was doing & felt it wasnt the right direction for me. I had been doing consulting based work for some time & felt now was time for a change.

Luckily for me cloud based accounting company Xero were looking for developers so in October I took a position with them which I am very much enjoying (we are looking for more devs if you are interested). Xero has a great almost startup like feel to it and its great to be working on some exciting new challenges that come with a shift to a product based company.

Fitness
One of the important aspects of my life is fitness. One of my new year’s resolutions is actually to do less but more focussed training. I love training but you can get a bit carried away with it which can leave you feeling tired, worn out and also slow any gains. I realised I was doing too much so this year plan to focus on more on fewer but better quality sessions.

2015 goals
I plan the following in 2015:

  • Less but more focussed exercise training sessions. In the next 6 months I’d like to up my Squat (butt to ground squats!) weight to 120kg (+25) deadlift to 130kg (+15) and bench 90kg (+15).
  • Focus on learning the new changes in Visual Studio 2015 & ASP.net vNext & refreshing my .net knowledge
  • More blog posts – I often come across things I want to share but never get round to it. I think the secret is probably to try to do short posts rather than massive ones (like this!)
  • More talks – I’ll be submitting something for teched this year I think
  • Attend CodeMania in April & Yow conferences in Melbourne – everyone tells me both of these are great conferences but yet to attend one

I wish you all a great 2015!