Friday, September 11, 2009

Because I can

This is a list of worthy programmers. It makes me happy.

Unfortunately that is all I can say about this list at this time. Hopefully someday my disclosure may be fuller.

Tuesday, July 7, 2009

Sex and the Clueless Coders

I am very late to the "party" here, but I can't help chiming in on the recent spate of programming conference presenters dropping bits of porn into their presentations. First it was the Golden Gate Ruby Conference in April, where a presentation on CouchDB (hmm, now I know what couch they meant!) included some racy pictures of mostly nekkid women. What's more astonishing yet is that David Hennemeier Hanson, the Big Dog of the Ruby community, apparently thought this was all quite appropriate. I guess he wants the Ruby community to be all anti-corporate and rock-star. Or something.

And now as I was doing my remedial surfing to catch up on the story from April, I find that something similar went down (ahem) at a Minneapolis Flash conference, where the presenter did a big ol' animation of all kinds of X-rated activities.

It's funny, in a sad way, to see so many clueless male geeks sticking up for the L33t Rebels Busting Out The Pr0n. I mean, my God, guys, the entire Internet is filled with images of hotties of all genders, ages, species, and descriptions. Why do you feel the need to shove it in peoples' faces at a geek conference?

I work for Microsoft now, which I suppose is an arch-corpocracy by the definitions of these running-wild-and-free, swinging-low coder cowboys (operative word being boys). Here at Microsoft we have this little thing called an HR policy. What it means is that if I wallpapered my desktop or office with pictures like the ones these zany idiots are slathering all over the place, I WOULD GET FIRED. And deservedly so. Because while sex is great, mixing it with work is guaranteed trouble for everyone.

It's especially appalling how absolutely butt-ignorant many of these testosterone-poisoned hackers seem to be. I lived in San Francisco for a good twenty years, and I got to know a raft of feminist sex workers and general sex-positive people. And the one abiding principle that everyone thrived on was respect. Listening to what other people want and how other people feel -- what a concept!!! And that's exactly what all these indignant self-important immature coderboys are apparently utterly unable to do, when confronted with the thoroughly understandable discomfort of the women and the more enlightened men who were present at these code talks that turned into bad peep shows.

I love programming. I love computer science. The world of software has unlimited potential. And the lack of women in this field is beyond tragic. This summer I'm actually managing a female intern in our group; she is rocking the code in a serious way and I'm honored to get to be her manager. Looking at this unbelievable travesty of civilized behavior at these conferences, I'm just really, really glad we're not on any Ruby or Flash projects, and I'm also glad we're in a Big Boring Corporation, because not only are we working on things that are astonishingly cool despite our corporate overlords, we are protected from the kind of juvenile bullshit that seems to have infected the Ruby world.

We want MORE women in this field, not less -- but if the numbskull, sexist Rubyists and their ilk have their way, all we'll have is stupid guys with more balls than brains. And that's bad for everyone. KEEP IT IN YOUR DAMN PANTS, IDIOTS! And do your pr0n surfing in private!

Edit: Here's the big thread on the Ruby debacle, with the presenter in question chiming in. Now you know which side I'm on....

More editing: Here's Martin Fowler's excellent summary of the debacle. And here's DHH himself -- scroll down to April 27. Kind of funny how he seems to think that enjoying the movie Pulp Fiction and putting porn into a technical conference are somehow related. Dude, don't be so proud of being R-rated -- I'm sometimes very X-rated myself, but you won't find out about it here, because I know better than to get my boundaries mixed up! Good fences make good neighbors.

Friday, May 8, 2009

Bob vs. Gavin, no holds barred

As this blog chronicles, I was in the Java world from 1996 to 2008. Near the end of the road, I got involved in the Seam and GWT communities, and I met Gavin King and Bob Lee. Gavin developed Hibernate and Seam (both wonderful), and Bob created Guice at Google (which I hear is wonderful, but haven't looked at it much). (Sorry, can't be arsed to link all these terms; search = your friend!)

Then we had to sell our house (housing bubble near-miss) and we decided to move to Seattle, and now I work for Microsoft and am very happy, and I lost touch with what was going on in the Java world. The last I heard, Gavin was working on the Web Beans JSR (JSR-299), collaborating closely with Bob, and Web Beans was going to be the best of Seam and the best of Guice standardized and pushing Java EE forwards. Ah, how lovely a picture!

However, I just opened my RSS feed on Gavin's blog, and was shocked -- SHOCKED -- to see serious trouble in paradise. For example, quoth Gavin:
Bob, if you're honestly trying to argue that Guice - which relies upon procedural Java code to specify dependency-related metadata - is as inherently toolable as a system that allows all dependency-related metadata to be specified using annotations (or XML for that matter), I'm just going to leave this discussion now, because that's absurd.

And quoth Bob (replying to a different post, I'm cherry-picking not summarizing):
This is a little disingenuous. As you know, the lead of a JSR has absolute power. Most leads don't abuse this power. They listen to their (highly representative) EG, achieve consensus, and very rarely make executive decisions. I think you'll agree that you are more of a dictator. Yes, you took what you thought were the best ideas from Guice, but I found working with you as a lead and changing your mind on anything to be an exercise in frustration. I can't count how many hours I wasted convincing you that Seam-style injection was fundamentally flawed only to have you switch to using proxies which have their own set of problems. I even brought Josh Bloch in one time to help settle a debate, but you cursed at and insulted him. I sincerely wish I had that part of my life back. By joining your JSR, Spring would not only validate it, but they'd have to give you absolute power over themselves. Based on my experience, I wouldn't recommend they do that.

Zow! What's also strange is that this comment shows up in my RSS feed for Gavin's page, but I'm not seeing it on the comments web page itself. So if you want to see the fur fly, go straight to the feed.

This is the kind of thing I miss the least about the Java world. I theoretically admire the openness of the JCP/JSR process, and in theory it should lead to better results than a more closed process. But in practice, normal human perversity just gets in the way -- the kinds of personalities that drive specs forwards tend to be very focused, and prone to conflict. So now it looks like there are going to be multiple JSRs describing dependency annotations, and the two people who could best work it out seem to be at each others' throats (as far as their respective specs are concerned). Disappointing.

Neal Gafter recently left Google -- and the entire Java world -- and came to Microsoft, for similar reasons... he put man-years of work into the Java closures spec, and then it was killed due to backroom political pressure. The Microsoft model is more like, we own everything, and we will do what we think is best. Coming from the Java world, I used to think that made Microsoft the Evil Borg. But now, on the inside, I see there are a lot of benefits to having a single decision point. (Well, God knows there are huge political issues even inside Microsoft, but it's still an order of magnitude less than the Java world!)

Saturday, April 25, 2009

Intentional shipped!!!

Intentional Software was founded in 2002 by Charles Simonyi, one of Microsoft's first billionaires. They've been pretty vague ever since then, which led to the usual vaporware skepticism.

I've been following them for some time, because I had extremely positive results using domain-driven design at Nimblefish (my first serious enterprise software job). I've also blogged extensively here before about the appeal of extensible languages.

Well, last week they finally gave a real demo, and it turns out they've been very busy for these last seven years. The Intentional team has made some real leaps forward in the whole concept of language construction, multi-language projection, and bidirectional editing. Basically, their system lets you use any number of different languages to describe a problem domain; you can create your own languages, project them as Ruby/Java/C# code, tables, or diagrams, edit them in any format and have it translated directly to the others (to the extent possible), run the model directly while editing it, and just generally take metaprogramming to completely the next level.

Yes, I'm excited; it's not every year (or even every decade) that you see a demo like this.

Here's a breakdown of the contents, if you need to optimize your optical cycles:

  • 0:00 - 9:00: basic Powerpoint conceptual overview
  • 9:00 - 13:00: more technical Powerpoint about the structure of their system
  • 13:00 - 21:00: illustrating the "metamodel" for a state machine domain-specific language
  • 21:00 - 31:00: bidirectionally projecting and editing a state machine via Ruby, UML, etc.
  • 31:00 - 36:00: demonstrating an electronics DSL, including a live evaluation of electrical flow while editing the circuit graphically
  • 36:00 - 43:00: the Cap Gemini beta test product, implementing a pension system with live Intellisense on the actuarial math equations, and a temporal rule language for pension rules
  • 43:00 - 46:00: the multi-user versioning support that operates at the level of their fundamental tree-based data structure
  • 46:00 - end: various Q&A

If you only have 15 minutes, watch 31:00 - 46:00.

There are various systems that have done various subsets of all this before, but I've never seen it packaged in a unified way. Ever. It's time to start watching Intentional very closely. It may also be time to check out the open-source JetBrains Meta Programming System. Software is all about raising levels of abstraction, and we might just have some new cranes coming online.

Edit: I just checked out the Meta Programming System's tutorial, and yay! Looks like it's a free version of many of these concepts that we can play with now! Time to tinker....

Thursday, March 26, 2009

Miracles can happen: CACM

So I've been a member of the ACM for many years. For a long time it was the only way to get at their Digital Library, which was the motherlode for research paper junkies like me. That made it worth putting up with their magazine, Communications of the ACM (CACM for short), which was really remarkable for how it never had anything worth reading. Pretty much all the lead articles it published were turgid studies about the sociological makeup of MIS departments, or the nature of collaboration in enterprises, or other strange bureaucratic stuff that only had a tenuous connection to programming as I knew it.

Last spring I got my current (unbelievably excellent) job at Microsoft, which has free corporate access to the Digital Library. Hmm, I thought, maybe I should drop my ACM membership.

They must have been snooping on me, because almost exactly then, they announced a complete editorial revamp of CACM. Refereed articles! Hardcore software / hardware research papers! Suddenly they were talking my language. And even better, they actually did it.

The new CACM is frankly the best computing magazine I've ever seen. Wide ranges of articles, high technical bar, many diverse subjects of great interest... it's really a winner. Puts the old Byte / Dr. Dobbs / etc. to shame. Of course, all those mags are dead, too... but the itch they used to scratch is scratched much better by CACM! Who would have thought?

And the new CACM web site is no slouch, either.

I guess sometimes miracles do happen. Thank you, ACM, for doing such a good job on this reboot!

(And yes, it's been a while... I've been sick, the whole family had the flu, the dog ate my homework, it's been awful dark outside, gimme a break here! At least I'm back! :-)