AngleBrackets, Curly braces and the cloud by @shanselman #devsum13

Speaker deck: http://devsum.se/wp-content/uploads/2011/05/AngleBrackets-and-Curly-Braces-2013-05.pdf

What would you teach someone about web programming, if you were to start today?

Scott tells us a story about how he wound up talking to a distinguished older engineer at Intel who was curious about web technologies. The gentleman told Scott that, in order to fire up a virtual machine at Intel, he would have to fax someone. To get a hold of a SQL server instance, he'd have to fill out forms and call people, slowing every effort down.

There's now a community depot - VM DEPOT - access from Windows Azure, letting you fire up a Ruby Stack Ubuntu machine on Azure right away!



If you're not comfortable with managing a virtual machine (managing updates etc) though, Azure supports hosted services, such as Azure Web Sites, which themselves sit on top of virtual machines that you never have to think about.

Scott demonstrates the ease at creating a web site from the console (using the Azure CLI tools), create a git repository and push up code for a new site. He then proceeds to edit a .cshtml file, git commit the file, followed by git push azure master and we instantly see the changes in the azure portal. The site itself, featured all of Azure Web sites features, having a Node.js-script, a classic ASP script, ASP.NET pages, php … [[ see-also http://task.codeplex.com/ ]] 

The cloud doesn't care about language choice. Run .NET, node.js, Java, PHP, Python. It doesn't matter.

The Azure SDK is Open Source. This includes the Command Line Tools. An open platform on which you can play.

Scott then demonstrates a theory - "SimpleBatch" - batch processes in the cloud, where you could feed a bunch of files into blob storage. Tweet and E-mail me, if you're interested in us making this a product, says Scott.

After walking through the history of plugins, Scott shows off Commandore 64 and Linux emulators, written completely in JavaScript. To take it up a notch, Scott runs the Linux emulator in an iPhone emulator and compiles a c-file. He continues to show off contrejour.ie, a touch-enabled HTML5-based game (iPad game of the year 2011) and then epic Citadel, C/C++ + asm.js-port of the Unreal Engine, compiled to JavaScript. See my blog post: JavaScript is Web Assembly Language and that's OK.

HTML5 in itself is not very interesting - it's just defining a page's structure. What's interesting, is CSS3 and JavaScript - check out cssdeck - Creating Single Element iPhone using CSS3. CSS provides the interface, JavaScript the interactions.

Consider Vanilla.js - you don't need jQuery everywhere. It's beneficial to know what's going on under the hood. That might be a reason why the battery drains so fast on your phone - a bunch of sites using tight loops (.fadeIn()), using jQuery for example. jQuery dom changes generally happens on the CPU in tight loops, whereas CSS transforms happens on GPU - better performance and less power usage.

Expect more of your tools: All of the Web Tools have been taken out of Visual Studio so that we can update and ship them more often. Run in Page Inspector is a powerful tool that shows you what lines that generated a certain part of your page. As you're making changes using the Page Inspector, your page is dynamically updating. The CSS editor offers tooltips which shows which rules work in which browsers. Take a look at the new CSS editor in VS2012 together with the Web Essentials extension.

Use your client's javascript virtual machines! Check out Crossfilter.io - don't post a 10 item list to the server to have it sorted!

Scott wrapped up with a quote from Jeff Atwood - "any application that can be written in JavaScript, will eventually be written in JavaScript." and showed that the same thing goes for Excel, showing us an implementation of PacMan in Excel. Good times ;-)



Comments

Popular posts from this blog

Auto Mapper and Record Types - will they blend?

Unit testing your Azure functions - part 2: Queues and Blobs

Testing WCF services with user credentials and binary endpoints