For any readers in LA, I’m keynoting the MS Architect Connections conference in LA next week. They have a few spots still open, so if you’re interested you can sign up here.
TechEd Iron Architect Contest
For a change, I’m not involved with TechEd at ALL this year. It’s all Simon and Marty. Looks like they’ve got some cool stuff cooking, particularly the Iron Architect contest. Almost makes me wish I was going this year.
Talking Dynamic Lanugages with Neal Ford
I spent a couple of hours chatting with Neal Ford from ThoughtWorks yesterday. Ted Neward had virtually introduced us a few months ago and he was in town for MTS, so he arranged a meeting. I had asked Ted to introduce me to some dynamic language folks for some research and public debate purposes, and Neal was one of the people he hooked me up with. Unfortunately, this was right before I changed roles and got real busy. Of course, dynamic languages in general and Ruby in particular plays a large role in Edge Architecture, so I’m thankful Neal took the time to drop me a line and meet with me.
Above all else, talking to Neal made me realize that I just don’t know enough about dynamic languages, which limits my ability to discuss them. To date, I’ve flirted with them, but haven’t made a real commitment. For example, I’ve played around with Instant Rails, but hadn’t actually installed Ruby yet. It was time to re-image my dev partition anyway, so I’m going to try using Ruby exclusively for a while.
Here’s a brain dump of some of what we talked about. Not sure what it all means yet, so I’ll try and refrain from making commentary.
- Hungarian notation for interfaces (i.e. ISomething) is a big code smell. This has nothing really to do with Ruby or dynamic languages, but it’s an important point that I wanted to include here. Neal’s point is that the interface defines the semantics of the type and the concrete class is an “implementation detail”. In other words, contract-first isn’t just for web services. Apparently, ThoughtWorks doesn’t use ADO.NET directly primarily because the interfaces “aren’t pervasive enough” and are difficult to mock out. Also, they’re using Rhino Mocks which I wasn’t previously aware of.
- For all the debate about static vs. dynamic languages, it seems like the value Ruby brings is in meta-programming rather than dynamic typing. Certainly, that’s one of the big differentiators for Ruby vs. other dynamic languages like Python. While Rails has pushed the popularity of Ruby thru the roof recently, Neal seems much more enamored with Ruby than Rails.
- There is an even bigger gulf between dynamic and static typing proponents than I had thought. I brought up Singularity, which uses static typing exclusively to deliver a provably dependable system. Neal disagreed with that approach, pointing out that “tests are the best way of encoding the specification of the system” rather than compile time checking. Given my lack of expertise in this space, I’m withholding comment (for now) but I’m guessing the truth is somewhere in the middle.
- However, while the dynamic vs. static typing gulf is big, meta-programming is potentially the bridge. I don’t believe meta-programming is exclusive to dynamic languages. Certainly, some of the new features in the “Orcas” versions of C# and VB bring more expressiveness to the languages while still remaining type safe.
- All this meta-programming leads to domain specific languages. Ruby has strong support what Martin Fowler called “internal DSLs”, but Neal thought over time the focus would shift to external DSLs as they are more expressive and not constrained by the semantics of an existing language. Obviously, we’re pretty heavily focused on DSLs. However, Neal did think our focus on graphical DSLs is misplaced. He called them a “hangover” from CASE/UML tools. He rightfully pointed out that “business analysis speak English”.
All in all, it was time well spent. Neal, I hope we can pick up the conversation again sometime.
Felipe Cabrera on Amazon’s Mechanical Turk
Felipe’s a good guy (I knew him when he was at MSFT) but this session wasn’t anything exciting because it’s all old news. There are some things humans are better at than computers, typically things involving judgment such as “which is the best picture of this store?” Yes, I saw that when Amazon first released Mechanical Turk.
They did have a partner on stage, a company called Casting Words that offers podcast transcription services for 42 cents a minute. But how is that a business? I’m not sure what kind of percentage Casting Words is making out of that 42 cents a minute, but couldn’t I go directly to Mechanical Turk and ask for transcription services myself? There are no Casting Words tasks currently on the site as I type this, but I imagine if I watch a while I’ll see a Casting Words task. Then I could simply use a site like HIT Builder to farm out my own transcription tasks. What’s my incentive to use Casting Words at all?
Furthermore, there’s not really a business model behind Mechanical Turk itself. If Microsoft launched its own version, there would be plenty of takers for that work as well – the workers will gravitate to where the best paying and most interesting work they can do is. There’s no incentive to provide your artificial artificial intelligence services exclusively to one company. So Mechanical Turk wouldn’t work as a stand alone business. But as a feature of Amazon it works great. In fact, when the service first launched the only tasks came from A9. I’m guessing it would be worth it to Amazon to run the service even if they were the only ones using it.
SPARK Weblog
In preperation for SPARK later this month, we (i.e. the Architecture Strategy Team) has set up a SPARK Blog. So far it’s mostly links to a fewpeopletalking about SPARK, but it’s also appears to be an opportunity to use the work “SPARK” whenever possible, such as “SPARKs Fly“.
I’m just waiting for someone to blog about SPARKitecture. 😄