Wednesday, September 21, 2011

.Net and WinRT

Well, I have to say, Microsoft is making a bold move with .Net and Windows 8. It seems like they're betting that what people use computers for has essentially been established, and it isn't what we're used to.  Basically, they're betting the company that people don't want computers they sit in front of and type on all day.  Instead, they want something smaller, something that has a tactile interface, that allows them to read email, watch movies, check bank accounts, maybe create an occasional document, and so on.  What they don't really want is what they have - workstations, notebooks, things that require a keyboard, a mouse, and an investment of time to use.

I think they're probably right in broad strokes, but the devil will be in the details.  Microsoft still makes the lion's share of their revenue from operating system and office licenses, last I checked.  It's about 60% of their revenue, in fact.  I think this is the first time they've really done something this radical in those segments.  I mean, what could compare to changing the entire way people interact with their computers? to relegating the workstation role to a small segment of their installed base? Windows 95? not even close if you ask me.

So the Windows 8 development stack is all on top of the Windows Runtime (WinRT), so apps will be developed in a typical web stack (CSS/JS/HTML) and/or in C++.  I'm personally interested in how you effectively merge the two - heavy lifting in C++ via WinRT, and integration and UI with web tech.

So what happens to .Net? Well, you'd better get familiar with Azure.  I think the writing's on the wall at this point, .Net is going to transition to being a cloud development framework, and move away from the client.  No more WPF, WinForms, or anything like that.  I suppose they'll continue to support it in desktop mode, but how many people are really going to use that?  Folks like us (developer-types) will, sure, but let's face it, there's not many of us out there.  I'll be interested to see how long desktop mode sticks around now that's it's essentially yesterday's news.

I've just downloaded the developer preview released from the Build conference. Hopefully, it'll be stable enough to work with a bit.

Monday, September 12, 2011

Behavior Driven Development Presentation

I've been working this week on a guest lecture at the local University on Behavior Driven Development (BDD).  I only have a single class to really go over it, and the audience is somewhat diverse with respect to technical expertise.  The presentation's hosted on my github account, you're welcome to take a look at it, and feel free to comment if you have any thoughts.

Monday, September 5, 2011

Jenkins and Node.js

So I've spent some time with Jenkins lately, and have good news and bad news.  The good news is, yes, you can integrate Node.js projects, tested through jasmine-node, with Jenkins.  Jasmine-node returns appropriate values when executed; 0 on a successful test run and 1 on a test failure.  Furthermore, it does seem you can use git with Hudson/Jenkins.   Integrating a builder that runs jasmine-node tests is possible too, perhaps following the lead of other plugins that have integrated node.js with Jenkins.

The bad news is that the integration is still rough and kinda kludgey, and needs some work from both the Jenkins and the jasmine-node ends to make things work smoothly.  Jenkins needs to support Node.js and Jasmine-node via custom builder plugins.  Furthermore, jasmine-node will likely need to generate test output that Jenkins can use to generate reports, and Jenkins will likely need a custom reporter and publisher of some kind.  This is important work that somebody needs to tackle to make Node.js attractive to professional development teams.  Node.js has some real advantages for developing RPC over HTTP infrastructures without unneeded web server cruft, something really important in next generation systems where web clients use HTML5 technologies like web workers to retrieve and process information, and act more like fully-fledged clients than simple pages as a result.

I'm going to begin to look at these issues, starting with jasmine-node integration and then reporting, in future posts.  I'm also going to start the development of a simple grocery list system using Node.js, HTML5, and likely the Android SDK.