Oh the irony!

I think this article is the perfect example of crazy apple fans:


If you read the article and the comments you’ll see all the mac fanboys are swooning over the possibility of playing iPhone games on a big multi-touch table size screen, which is hysterical. I seem to recall their comments regarding this exact technology, except made by Microsoft, almost a year ago:


When Microsoft does it, its a “big ass table” but now you throw some iPhone games on it and it’s cool again. The fanboyism is breathtaking.

Expression Studio and MIX09

Tomorrow is Day 1 of MIX09, if you’re not aware of this then you must be living on mars should amble on over and check out what’s in store this year. There’s a lot I can’t tell you but I can say there are tons of cool new features being announced for the first time tomorrow, including the one that I have been working on here in Minneapolis. Also, there are some features that will be demoed during the keynote that will not be apart of the public CTP released at the same time so you should definitely check that out to get a complete idea of the sweetness of the real release.

If you have any questions about features feel free to ask me sometime tomorrow after the keynote 😉 Until then it’s all hush hush.

Asynchronous Programming With Iterators

I just saw this on the visual Studio Start page blogs.msdn.com/charlie/archive/2008/12/03/jeff-richter-video-on-asynchronous-programming-and-his-power-threading-library.aspx

It’s a pretty interesting video worth checking out. It seems like one of those good ideas that translate into a very small library that can be used to do powerful things.

To sum it up briefly (in case you can’t afford to watch the 20 minute long video) Jeff has realized that the state machine-esque code generated for you when you create an iterator in C# (i.e. “yield return”) is exactly the same type of code you’d need to write to comply with the standard .NET asynchronous programming model. Therefore writing your asynchronous code inside of an iterator (with help from his AsyncEnumerator class) allows you to write code in a synchronous format and rely on the C# iterator expansion capabilities to translate that into asynchronously compatible code.

As clever and interesting as this is I’m not happy about the (mis)use of the yield syntax to work around a compiler limitation. I have submitted this idea to the Boo Lang user group because this seems like the perfect example of the potential power of meta programming. In the case of C# you have some macro expansion for certain baked in keywords (using, lock, yield, etc.), and it just so happens that the expansion of the yield keywords is exactly what you need to match some other pattern but I believe you could do this in Boo in a much cleaner way.

Imagine having an actual “async” keyword and an “wait” keyword? It would do nearly the same thing but would make it all feel so much cleaner. Anyway, food for thought.


Specter – A Specification DSL for Boo

Specification frameworks are a great way to enable a smooth approach to test driven development. A nice and simple specification framework called Specter has been created specifically for Boo, which includes a simple and elegant internal Specification DSL. If you’re curious to learn about specification frameworks, Boo or DSLs you should check out Specter for an elegant and useful example of all 3.

Here is a really great video of the step-by-step process:

CSLA Light PropertyStatus control in Action

I have been working on CSLA Light for a while now and one of the coolest things I’ve gotten to work on is the “PropertyStatus” control. It turns out that creating controls for Silverlight is a huge pain in the neck but I think this one turned out pretty well actually.

So what the property status control does is that once bound to a CSLA business object it will hook into PropertyChanged events and display the properties IsBusy status and various broken rules. It will also disable / make read-only another control based on the authorization rules specified in the object. All in all it’s pretty useful.

I put together a quick little video demonstrating the effects. The second half of the video I have logged in under “Guest” credentials to show how it works with authorization.

Youtube Tutorials

I made a couple tutorial videos related to NBusiness and how to get started with a new project and uploaded them to youtube. The quality is pretty low so it’s hard to see the text but hopefully it’s better than nothing. Here they are:
This video shows the basic steps of creating a new web project, adding an Visual E# entity project then adding a reference. Each subsequent video in this series will be based off of the same code created here.
This video shows how to setup a web config file for a web project referencing a Visual E# project.