Oh the irony!

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

http://forums.macrumors.com/showthread.php?t=681763

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:

http://www.youtube.com/watch?v=CZrr7AZ9nCY

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.

Consider

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: