Pretty hiring trends

Pretty graphs at Simply Hired:

Ruby, Python, C#, Erlang, Javascript, Php trends
  • Interesting how Ruby, Python and PHP so closely track each other
  • I would have never guessed how close JS and C# are, especially given that one has basically no vender and really spotty implementations while the other has a massive vendor and two pretty good implementations

Important ideas in ASP.NET MVC

In a former life, I worked in a Microsoft shop. So I’m not completely foreign to the Microsoft development tool landscape. At the time, C# and .NET were just slightly better than Java, from my perspective as a language nerd. Lucky for me, I haven’t done extensive work in J2EE frameworks or ASP.NET so I have no frame of reference for how they compared at the time.

Given my obvious interest in languages, frameworks and how that affects what programmers build, I enjoyed hearing about the new ASP.NET MVC framework from Scott Guthrie. The most promising thing about this tool, to me, is that MS is guiding people down the unit testing path by default. I don’t know if any other Visual Studio tools are doing this, but it’s a pretty big deal to me. I think that right now only the most enthusiastic programmers do some any form of TDD or BDD. Putting it in the hands of “vocational” programmers has the promise to significantly raise the state of the art in programming. As a side note, it was interesting to observe that 40-50% of the audience raised their hand about doing TDD and 33-50% raised their hand for using an MVC framework.

The framework itself is nothing surprising if you’ve looked at Rails, Django, CodeIgniter, et. al. What was interesting to me is to see how the framework is colored by running in the CLR. On the plus side, you get LINQ and a really good VM. On the downside, you have to use for loops and nullable types (wink, nudge). The rest is pretty much what you’d expect to see when you transliterate an MVC framework to C#, though they did display some creativity in making it decent to look at in terms of code style.

There was a pretty strong message that the tool is cross-platform (works with Mono) and cross-language. You can write a model in C#, a controller in Ruby and a view in Python. Scott even suggested that you could write unit tests in PHP, to which I thought, “PLEASE GOD NO!”

Scott a somewhat typical response, “Hey, I did this in Smalltalk in 1974!” – funny because it’s true. He also acknowledged its not for everyone. Some people need a car and some people need a motorcycle. Even so, the ideas that MS is putting in front of a ton of programmers are progressive and important. That’s the most important part to me.


DO WANT

Desmond t-shirt!

D'ye need a new T-shirt, brother?

Aye. I do.


Open Source and Research at Microsoft

So, as I’ve alluded, I’m at Microsoft Intergalactic Headquarters this week for the Microsoft Technology Summit. The crux of the biscuit here is to invite people from communities not using Microsoft technology and show them what Microsoft is up to.

There’s particular emphasis on what MS is doing in the Open Source Software space. Sam Ramji opened up the event to give us a sort of rundown on what MS is now doing in OSS and interoperability. I was unaware that IIS7 will support PHP, that MS is changing their practices to suit the Samba project or that HyperV will, in part get released as OSS.

Sam mentioned that he is committed to not confusing Open Source and Shared Source. It’s a slight distinction to most people but it really tends to rankle those who know the difference. I think he best summed it up by saying OSS at MS is in year 3 of a 10 year project and to judge it by what they actually do, and not their overtures (big nod to Ballmer rattling sabers about OSS and patent litigation).

Next up, Kevin Schofield showed off some of the work MS Research has been doing. His first point was that research does pay off. Research money into technologies like VLSI, databases, parallel databases and workstations have yielded multi-billion dollar industries. Projects that start out as pure academics can evolve into major players such as Oracle and Sun.

MS Research’s mission is to advance the state of the CS art and ensure that MS has a future. By the latter, he means that MSR is a hedge on the company’s agility. They don’t want to turn a corner and find customers demanding something that MS doesn’t know about.

To this end, they hire the best researchers around and then don’t tell them what to do. In this way, they refer to themselves as the “world’s largest CS department”. However, knowledge transfer is critical. If they don’t transfer technology to the product groups, what they’ve done is useless.

I found it very interesting that Kevin said “tech transfer is a social process.” For this reason, he specifically hires people with good relationship management. People Hacks at work ya’ll!


Warm water makes the world go 'round

I’ve been doing “very detailed” research on the correlation between the time it takes to get hot water in public bathroom sinks and affluence. Signs point to a strong correlation between the two. Shocking, I know!

Microsoft and Austin Ventures' buildings have almost instant hot water. Generic office buildings take a while. My bathroom at home: 60 seconds of astonishingly cold water.


My dog misses me

I’m at the Microsoft Technology Summit this week.

Fred, sleeping on my pillow

Of course, Fred misses me (and I miss him!), so he’s sleeping on my pillow to keep it warm.


Tough CS illustrated

Greg, who I don’t think has formal CS training, has been making some great illustrations of some of the harder ideas in operating systems and concurrency.

skitched-20080324-145943.jpg
Uploaded with plasq's Skitch!

You can find more sprinkled throughout his lovely little tumblelog.


Write a script in April for Script Frenzy

Script Frenzy – wherein one writes a script in the month of April. I’m tempted to take part, though I’m sure it’d would end up in detriment to all the other plates I have spinning.


Fix Subversion conflicts

Got a case where you did a @svn up@ and now you have a bunch of conflicts where you just want to overwrite your changes? I’ve got a little bit of Ruby cleverness for you:


  `svn status`.split("\n").grep(/^C/).map { |c| c.scan(/\S+/).last }.each { |c| `svn cat #{c} > #{c} && svn resolved #{c}` }

I run this from @irb@ at the root of my Subversion working directory. It makes me happy.

Update: lord that looks ugly on one line!


  status = `svn status`.split("\n")
  conflicts = status.grep(/^C/)
  files = conflicts.map { |c| c.scan(/\S+/).last }
  conflicts.each do |c|
    `svn cat #{c} > #{c} && svn resolved #{c}`
  end

Keep your pants on

A teaser of what I’m working on instead of writing:

NO

Please, keep your pants on.


Git is nouns and verbs

Git was originally not a version control system; it was designed to be the infrastructure so that someone else could build one on top. And they did; nowadays there are more than 100 git-* commands installed along with git. It's scary and confusing and weird, but what that means is git is a platform. It's a new set of nouns and verbs that we never had before. Having new nouns and verbs means we can invent entirely new things that we previously couldn't do.

Avery Pennarun, Git is the next Unix


Geek spring break

For the fourth time, I’m at the annual geek retreat in Austin. Since I went when it was but 300 people, I’m obliged to marvel at how big the conference is getting. I remember when we had to walk uphill, through the snow, both ways, on fire, to get to every panel.

This year, I’m going to retire the hoodie I got five years ago wen I first attended SXSW. It’s a big deal, mind you. FYI.

Anyhow, I’ll attend a subset of these sessions, if you’re curious. I’m hoping on “attending” the “hallway track” more often this year. Also, I’m going to take the leap and not bring my laptop with me. Just a Moleskine and my trusty tricorder.

More importantly I’m going to the Austin on Rails Happy Hour and playing at the Rock Band party with The Rural Jurors.

If you aren’t are coming, I will continually lament your absence. Otherwise, I look forward to seeing you there!


The American Dream, LOL'd


You can patent things that don't exist

The ear worm things from Star Trek II: The Wrath of Khan are patented. The obvious punchline:


SCIENCE

All I can say is SCIENCE!

Tom Preston Werner on God’s memory leak


Summertime Blues

[youtube=http://www.youtube.com/watch?v=t5euZ3YWLXQ&rel=0]

“Summertime Blues” The Who (originally Eddie Cochran)


Non-chalantly rocking

Me, rocking

Rands helps you with your presentations

Out Loud. Conference season looms, folks. Rands is here to help.


Cosmic Class.new

Reading the sources of test/spec inspired me to write a whole post about Class.new on the FiveRuns weblog. Unintentionally, I ended up channelling the style of Err The Blog in writing that post. Now, Chris Wanswrath has posted a little ditty, test/spec/mini, that uses Class.new.

The “Circle Of Class.new” is complete, we can all go back to our normal lives. Also, Class.new totally has a man on your boat.


Teamwork anti-pattern: the edge case

Edge Cases are the Root of all Evil:

"I've learned over the years that Edge Cases are not meant to be normal rationale or a casual reminder of some odd circumstance that you've neglected. Rather, they usually represent an attempt by someone else to gain, show or exert power in a situation. I'll explain."

After reading this, I immediately realized the Edge Case is definitely an anti-pattern of teamwork. I’ve observed, suffered and inflicted this particular tactic countless times in the past.

Tackling this one is three-pronged:

  • Recognize it. When someone points out an edge-case, quickly try to establish with the rest of the team whether this occurrence is as rare as you think it is or whether its truly important.
  • Neutralize it. If it really is a corner case, mark it as such and get back to making actual progress.
  • Bury it. Should you throw something out there and find its really an edge case, let it go. Don’t be that guy.

“But Adam”, you say. “It would be really embarrassing if we omitted a condition for the Blurbleflaster Case!” Well, I couldn’t even find the Blurbleflaster Case in Wikipedia! So, if someone finds that we’ve omitted it, then they get the prize; it won’t be the end of the world. We should probably implement that whole social network thing first anyway.