Categories
Uncategorized

A “Whiteboard Jam” on Monads and Coordinate Systems

And now, a left turn into Theoryland! Don’t worry, it’s good for your brain, and might even change the way you look at your day-to-day programming.

Get Microsoft Silverlight

Can’t see the video? You can download and install Silverlight or download the video in iPod, MP3, WMA, WMV, WMV (High) or Zune formats.

Here’s the latest in Channel 9’s “Expert to Expert” series of videos – a “whiteboard jam” between two big brains:

Here’s the abstract for the video:

The idea for the format of this conversation is simple: put two geniuses together, give them each a whiteboard and some markers, and see what happens. It’s much like free jazz: expert improvisation, seriously geeked-out whiteboard jamming.

The content theme for this episode — Monads as coordinate systems–is not simple. To grok this, we need to think in three dimensions: programming, physics and mathematics. But don’t worry. Brian and Greg do not expect to be jamming in front of only fellow experts. This is Channel 9, after all, and there are many different levels of knowledge out there amongst our Niner population. Accordingly, you will not feel as though you’re watching something in a language you don’t speak. That said, you should possess interests in the theoretical, in mathematics, and in physics, and an overall appreciation for learning new things.

Monads are often used in functional programming – they’re structures that describe a flow of control and data (ff you’re a SharePoint person or have developed using WF, you might want to think of them as distant cousins of workflows). As the practical upshot of Moore’s Law has shifted from “doubling in speed about every couple of years” to “doubling in cores about every couple of years” and shows no sign of shifting back, functional programming and what it offers to parallel programming are becoming increasingly important. So don’t pass by this video thinking that it’ll never apply to you – there’s a chance it might.

Explanations of monads for non-functional programmers include:

(Perhaps I should buttonhole Reg “Raganwald” Braithwaite into providing us with a nice beginner’s explanation of monads. Would you folks like that?)

This article also appears in Canadian Developer Connection.

Categories
Uncategorized

The jQuery Online Conference: Monday, July 12th – Everywhere!

ThinkVitamin presents...The jQuery Online Conference

Are you a web developer and want to sharpen your jQuery skills? Would you like to attend a conference featuring some of the brightest lights in jQuery programming? Are you too short on time and travel expenses to hit such a conference?

For a mere US$150 and no travel at all, you can attend the jQuery Online Conference. It’s a live, over-the-‘net conference taking place on Monday, July 12th starting at 12:00 noon EDT / 9:00 a.m. Pacific and featuring these four sessions:

  • Beyond String Concatenation. Using jQuery Templating to Cleanly Display Your Data
    Rey Bango (Client-Web Community Program Manager for Microsoft and Head of Evangelism for the jQuery JavaScript Project)
    In this presentation, Rey will show you a new way to produce easily maintainable dynamic pages via pre-built JavaScript templates and the Microsoft jQuery templating plugin.
  • Testing Your Mobile Web Apps
    John Resig (JavaScript tool developer for Mozilla and creator of jQuery)
    This talk will be a comprehensive look at what you need to know to properly test your web applications on mobile devices, based upon the work that’s been done by the jQuery team. We’ll look at the different mobile phones that exist, what browsers they run, and what you can do to support them. Additionally we’ll examine some of the testing tools that can be used to make the whole process much easier.
  • Taking jQuery Effects to the Next Level
    Karl Swedberg (Web developer at Fusionary Media, member of the jQuery Team, author of jQuery 1.3 and 1.4 Reference Guides and maintainer of the jQuery API site)
    One of the first things web developers learn to do with jQuery is to show and hide elements on a page and then add some flair by sliding those elements up and down or fading them in and out. Too often, though, we stop there, missing out on the incredible range and flexibility of jQuery’s core effects. In this talk, we’ll investigate both standard and custom animations and how they can be used to create useful and fun effects. We’ll also build a couple effects plugins, explore parts of the effects API that are often overlooked, and learn how to avoid common problems when attaching these effects to certain events.
  • jQuery Pluginization
    Ben Alman (Developer at Boston.com, contributor to jQuery and Modernizr)
    In this live-coding session, Ben explains how, with just a little thought and effort around generalization, parameterization and organization, you can convert your "just get the job done" jQuery code into a legitimate, reusable, modular jQuery plugin.

Your conference attendance fee not only lets you watch the live event and ask questions of the presenters, it also lets you watch the recordings of the events any time afterwards. So if you can’t catch the live event (perhaps you’re busy at work, or it’s 3:00 a.m. in your time zone), you can still watch the presentations. This also lets you watch the live event to get the general idea, and then watch it again for note-taking or hands-on workshopping.

This article also appears in Canadian Developer Connection.

Categories
Uncategorized

Thinking of Moving to the Cloud? Get Free Compute Time with Windows Azure

a special cloud offer

Windows Azure PlatformAre you a developer looking to launch your new web application? Or perhaps you’re an IT Pro or IT Architect trying to understand what all the fuss about “The Cloud” is. Or maybe you need for some compute time to run calculations. No matter who you are, or why you’re thinking about the cloud, Microsoft is making it easy for you try out our cloud offerings: Windows Azure (which runs your apps the in the cloud), SQL Azure (your database in the cloud) and AppFabric (which ties your on-premises and cloud systems together).

Check out the Azure Pricing Page and take a look at the introductory special, which lets you take Azure for a spin for a limited time – free of charge. Here’s what you get:

Included each month at no charge:

  • Windows Azure
    • 25 hours of a small compute instance
    • 500 MB of storage
    • 10,000 storage transactions
  • SQL Azure
    • 1 Web Edition database (available for first 3 months only)
  • AppFabric
    • 100,000 Access Control transactions
    • 2 Service Bus connections
  • Data Transfers (per region)
    • 500 MB in
    • 500 MB out

Any monthly usage in excess of the above amounts will be charged at the standard rates. This introductory special will end on October 31, 2010 and all usage will then be charged at the standard rates.

This special offer is available right now through October 31, 2010 and is limited to one per customer.  (You’ll probably want to look at the “full details and disclosure” page.)

If you’re in Canada and have questions about Windows Azure, my team and I are here to help and can answer your questions.  We’d also love to hear what sorts of projects you’re using Azure for. To reach us, drop us an email at cdnazure@microsoft.com.

This article also appears in Canadian Developer Connection.

Categories
Uncategorized

The Mobile Dev Rap Battle: Native Code vs. Web Apps

I’ve heard the back-and-forth debate about whether you should write your phone app as a native app or as a web app more times that I care to recall, but it’s never been done as well as Jason Alderman and Matthias Shapiro do it…rap battle style!

Here’s the pre-recorded version:

and in true 8 Mile style, here they are doing it live at the last Ignite Salt Lake:

By the bye, if you’re building stuff for WPF, Silverlight or Windows Phone, you really should be reading Matthias’ blog, Designer Silverlight. I’ve already bookmarked it, and so should you!

And for the truly nerdcore, here are the lyrics:

Jason:
You bought three coding books for reading on your Kindle,
They never got read, the whole deal is a swindle,
Pony annual fees for app sales, then they tax it,
I’m telling you man, that app store is a racket!
You are MUCH better off with HTML–
The web page markup that I know you know well–
The latest spec lets you store data on phones
Even when offline, but the browser phones home!
Your iPhone, Android, Palm, soon Blackberry:
Local data storage! SQL! it’s no worry!

Matthias:
Cross platform apps are a real seduction
But you give up your form, and most of your function
And your app, it hobbles in the passing lane
Like a one-legged zombie but with far less brains
Running your crap on the web, no performance
Mine is greased lightning, you run like a tortoise
You don’t understand the mental model users are adopting
They don’t want to hit the web, they want one-stop shopping
Here’s how you make an application fun
Turn it on, do your thing, turn it off and you’re done

Jason:
When the iPhone came out, sure the browser was slow,
But the new smartphones? half a gigahertz or mo’
That’s faster than the box on which your mom does her taxes
Pretty snappy–WinME!–, but now it’s like molasses
In praxis? I already write scripts, it’s easy
Better than compiling native code till my teeth bleed
Time that I saved, I put in media queries,
add UserAgent switch statement, stylesheets fear me!
Custom chrome, each phone? Modus operandi.
Willy Wonka’s schooled by my custom eye candy!

Matthias:
Did that school teach usability cause I think you missed it
With apps for devices the use is holistic
Gotta look act like you belong, not draw their attention
Like a steam punker crashing an Avatar convention
Use is more than just Chrome and colors, look at navigation
Modern users look for standard gestures, menus, animations,
And what about the richness of movement & location
Do you want to surf the web or record your whole vacation?
When I tilt your web app, it’s just stuck in a groove
With my purely native code I can bust a move.

Jason:
But that’ll only improve–heck, web apps get location
And if the case came where I needed acceleration
I’d wrap my web app in the library Phonegap–

Matthias:
Excuses, excuses, You’re giving mobile a bum rap
Try adding 3D to your list of what apps do
Or write a game that’s not scrabble, chess or sudoku
And you know CSS competes with OpenGL
Like a cub scout against 10 marines with a 50 cal
Boom! 3D mushroom cloud filling the room
Now go back your text adventure version of Doom

Jason:
Sure games make money, but think of their use,
They’re casual, waiting in line at Jamba Juice,
You’re making the mistake of the hardcore PSP,
When a simple DS meets the goal just as easily
Heavy duty third-dimension graphics drain the life
Of your battery, more than the scripts I’m paid to write.
But, hey, if you want 3-D page flip transitions,
Perspective transforms of element positions,
Web apps can do that, CSS has you covered,
To your Mel Gibson, C-S-S is Danny Glover!
(I’m too old for this!)

Matthias:
CSS animations, are you out of your gourd?
That’s a terrible sin in the eyes of the web lord.
Every time I bring up something hard
You just dance around it, pulling out your library card
Or some spec or framework only halfway done
As if javascript and CSS are rainbows and fun
Look, there’s only one way that this thing can go
Build your web apps for free or jump into the cash flow
Advertising won’t help you survive
But just one little iFart can get you set for life
No app store, no eyeballs, no business plan.
Making just enough dough to pay the rent on your trash can
I hate to play the role of Scrooge McDuck
But without a good market you’re pretty much… well, you know

Jason:
Trash can? Your app waits in limbo for a month,
You’re stuck eating ramen, watching reruns of Monk.
Your funk? Only lifted if the app store approves it
And we both know the king of the process is ruthless!
The truth is, even if it does get approved
There’s a chance that your make-it-rich dream comes unglued
When a bug in your app that slipped through the process
Makes users hate it, they leave lots of comments,
And you fix it real quick, test patches and submit it
But it still takes a month, so your app gets attritted
From all the top ten lists, losing all worth,
It’s a digital coaster, like "Battlefield Earth"!
My apps sell anywhere, and update on the fly.
You can’t have your cake OR eat it, ’cause the cake is a lie.

Thanks to John Bristowe for finding this!

This article also appears in Canadian Developer Connection.

Categories
Uncategorized

Introducing WebMatrix

What is WebMatrix?

webmatrixBy now, you’ve probably seen the tech news reports as well as Scott Guthrie’s announcement about WebMatrix, Microsoft’s lightweight web development web development system that packages a web development tool with a number of new web technologies:

  • IIS Developer Express: a lightweight, free-as-in-beer web server with simple setup, runs on all versions of Windows and is compatible with the full-on version of IIS 7.5
  • SQL Server Compact Edition: a lightweight, free-as-in-beer file-based database with simple setup that can be embedded within ASP.NET applications, supports low-cost hosting and whose databases can be migrated to the full-on version of SQL Server.
  • ASP.NET “Razor”: A new view engine option for ASP.NET for easy and clean templating with a simple syntax. You can use Razor to embed C# or VB into HTML.

WebMatrix ties these goodies together in a nice simple package that the beginning web developer will find easy to use and that the pro web developer will find handy for building quick sites. These parts are also available individually to ASP.NET developers and will soon be available to ASP.NET MVC developers.

If you’re looking for a quick video tour of WebMatrix, chack out the Channel 9 video below:

Get Microsoft Silverlight

Can’t see the video? You can download and install Silverlight or download the video in iPod, MP3, PSP, WMA, WMV, WMV (High) or Zune formats.

A Quick Look at WebMatrix’s Parts

WebMatrix provides a simple, task-based interface for quickly creating web sites, both static and dynamic:

WebMatrix "Quick Start" screen, with four links: My Sites, Site from Web Gallery, Site from Template, Site from Folder

It makes it easy to include open source ASP.NET- and PHP-based web applications in your site:

WebMatrix App Gallery page, featuring apps like DotNetNuke and WordPress

It’s also easy to manage applications in a WebMatrix site:

BlogEngine.NET management page in WebMatrix
If you’d rather write your own web app in WebMatrix, you can do that too. There’s a rich file editor:

WebMatrix file editor, showing the site.master page in BlogEngine.NET being edited

And database definition and management tools:

Screenshot of table definiton and contents in WebMatrix's database tools

There’s also sample code and web helpers to make your life easier and show you what’s possible, such as this handy sample that makes it easy to make a Twitter client. Here’s the code that takes advantage of the sample:

WebMatrix code editor showing a Twitter class' "Search" method being called

…and here’s the result:

Screenshot of sample Twitter app in WebMatrix

If you need to get hardcore, you can open your WebMatrix project in Visual Studio or even the free-as-in-beer Visual Web Developer 2010 Express:

WebMatrix toolbar, with the "Launch in Visual Studio" button highlighted

Previewing your WebMatrix site in multiple browsers is a snap:

The "Run" button in WebMatrix, showing the different browsers you can use to preview your site

Deployment is nice and easy once you’re doing editing your site:

The "publish" button and screen in WebMatrix

Find Out More

I haven’t had a chance to take WebMatrix out for a proper spin yet, but I’m hoping to over the next few days. It’s a collection of cool technologies (which I ‘ll also use in my regular ASP.NET MVC development) wrapped together by a nice, simple tool that’s great for the web developer who’s not working on enterprise sites. I can also see myself using it as a handy prototyping tool.

If you’d like to find out more about WebMatrix, take a look at these:

Download the WebMatrix Beta now!

WebMatrix has just been released as a beta and available for download right now! We want you to try it out and let us know what you think, because we’ll be refining it based on what you tell us.

This article also appears in Canadian Developer Connection.

Categories
Uncategorized

Yuri Gurevich: “Introduction to Algorithms and Computational Complexity, Part 1 of n”

Get Microsoft Silverlight

Can’t see the video? You can download and install Silverlight or download the video in MP4, MP3, WMA, WMV, WMV (High) or Zune formats.

If you took computer science in university, you might remember a course or two with a title like “Algorithms and Data Structures”. Perhaps – and this is more likely – you might not. It’s understandable: as a student, you were probably bored by the course’s deep forays into theory-land and never cracked open Rivest and company’s Big Book of Algorithms, certain that you’d never end up using this stuff in real life (and admittedly, the only time I ever found the “Could P ever equal NP” problem useful was in an extremely unusual dating situation).

As a reader of this article, the chances are that you’re out of school and working either as a programmer or at least work with them. You might have come around to thinking that you wish you’d paid a little more attention in that Algorithms course, in that wistful, grown-up “Why did I quit piano lessons when I was young?” way. If you feel this way, here’s your second chance.

Microsoft’s Channel 9 is presenting a series of video lectures by computer scientist and big math brain Yuri Gurevich,, the guy behind the abstract state machine (an enhancement of the Church-Turing Thesis, which states that if it’s computable, it can be computed by a Turing machine). In this series, he’ll walk through all those algorithms that were covered in that course, provide plenty of historical context and explanations, and hopefully give you enough knowledge to help make you a better programmer. The first lectures in the series introduces algorithms by starting with Euclid’s “greatest common divisor” algorithm, explores the history of computation (including the Entscheidungsproblem), covers the difference between solvable and non-solvable and covers all those goodies you missed in Algorithms class.

This article also appears in Canadian Developer Connection.

Categories
Uncategorized

A Must-Read for Mobile Developers: The Mobile Developer Economics 2010 Report

What’s the number one reason why developers choose a mobile platform? According to Mobile Developer Economics 2010 Report, which is produced by VisionMobile (and which I’ll call MDE 2010 from now on), it’s market penetration:

developers reasons

Do mobile developers stick to one platform, or do they develop for multiple platforms? MDE 2010 says that the latter is true:

Most developers work on multiple platforms, on average 2.8 platforms per developer, based on our sample of 400 respondents. Moreover, one in five iPhone and Android respondents release apps in both the Apple App Store and Android Market.

Which mobile platform was most used by developers in 2010? It might not be what you think, going by MDE 2010’s numbers:

most used platform

Are app stores the way of the future? Quite likely, and that’s because according to MDE 2010:

  • It provides the fastest time from final GM version to market, and
  • It’s the fastest way to get paid.

time to market

MDE 2010 is a treasure trove of useful information for developers and entrepreneurs looking to make it big by creating software that runs on those little computers that are rarely more than arm’s reach away. Luckily, it doesn’t cost a thing – the folks at VisionMobile have made the download available for free!

If that weren’t enough, VisionMobile is also posting a four-part series of articles on their blog in which they discuss MDE 2010. Part one is here, with the other parts to follow.

This article also appears in Canadian Developer Connection.