Cory Foy

Thursday, May 31, 2007

TDD in VSTS being improved

One of the biggest challenges I've had in doing TDD with VSTS using the native unit testing tools is how darn slow it is to get to the Red or Green bar. I recently sent out an internal email to get some feedback on what teams like or dislike about TDD in VSTS, and instead got a reply from Naysawn Naderi, the PM for Visual Studion Enterprise Test, pointing to his blog entry on new Unit Testing features in Orcas, including the focus that they are making to improve the TDD story in VSTS.

Martin Fowler on Ruby at Microsoft

A good friend of mine Jason Darling sent me over a new article by Martin Fowler about Ruby at Microsoft. He asked for my thoughts on it. Martin makes some good points, and there are some I want to point out.

First, Microsoft hiring John Lam several months back may have been a signal that MS wants Ruby on the .NET platform. But that doesn't preclude someone else from working on a NRuby open-source platfrom ala JRuby. Yes, John was working on something similar, but if one is worried about the control MS will have over the platform, or if it will meet the needs of the community, then I say we build the platform that meets the needs of the community as the community.

Martin says "Ruby doesn't compete with the core revenue generators in Microsoft's line up." Perhaps not, but one of the challenges of an organization releasing something is that they have to support it. So if they did release a Ruby runtime as an official Microsoft product, I reckon they'd have to support it, meaning they'd have to ramp people up on that. So I suppose they'd probably just put it on Codeplex to sidestep that.

Martin also says "If Microsoft doesn't support the Ruby platform, it runs the risk of people moving away from .NET (and Windows) on server farms if Ruby on Rails becomes successful." I think this is unlikely, at least for a while. .NET is free. They would likely run Ruby on Windows - probably using IIS somehow. And with the Ruby in Steel project, devs might continue using Visual Studio, and probably TFS as well. Yes, people may use Linux, but there's more to the servers in a data center than what runs on top of them - especially given the level of support the larger customers can get with Microsoft.

I tend to agree with Martin's comments on the AlphaGeeks. I remember when Neal Ford began really using Ruby and Rails, and thinking how much of an impact Ruby would have on the .NET community. Just like it is hard to compete with Apple because they are cool, it's hard to compete with Ruby because it is fun. How does one compete against fun? By it's very nature, if you aren't for fun...

Regarding Agile at Microsoft - I think an interesting turning point occurred when Microsoft released the Agile for MSF process template as the default template in TFS. I go onsite to a lot of customers who are now interested in agile processes because of that. And internally, it seems like there are more and more pushes for agility inside the teams.

In fact, I had a long conversation last night with some colleagues about this very thing. They hadn't really heard or understood what this whole "agile" thing was all about. Two of them came from dev teams inside Microsoft. And we had a very good discussion about what agile is, what the agile methodologies are really about (finding the pain points stopping you from delivering quality, working software that meets your customer's needs and applying the proper methodologies to help with that pain), and how difficult it is to become agile in a legacy environment - especially as large as some of the teams are at Microsoft.

In his closing, Martin talks about what a great opportunity this is for Microsoft to work with the Ruby community. Not to sound like a Microsoft apologist, since I truly don't know the answer to this, but were things like that said about Sun? "JRuby is an excellent opportunity for Sun to work with the Ruby community." Granted, Sun is a different ballgame, but it goes back to my earlier point.

We as a community shouldn't be as concerned about what Microsoft is doing with Ruby and .NET. We should assume that they are only doing things that benefit their bottom line, and work to create excellent alternatives. Microsoft may have bastardized NUnit, but they also integrated the output and tracking of that into a data warehouse which can actually report some interesting information with the devs having to do little more than run the reports.

So, I'm not sure what opportunity we have at hand. But, whatever it is, we as a community shouldn't rely on others to create the things we want. In fact, that's kind of counter to the open-source movement. Instead, let's build our own, creating integration with Visual Studio, making it easy to mix Ruby and ASP.NET, and innovating Ruby. Let's make Ruby (and Python) languages that truly can run anywhere - StandAlone, in a JVM, in .NET, or wherever the future may lie.



Disclaimer: All thoughts above are my own and don't reflect the thinkings or opinions of my employer. I don't speak for them - my blog uses blogger for goodness sakes. Prices may vary. Void where prohibited.

Wednesday, May 23, 2007

Too many dialog / option levels?

I think I found something not intended for the public to see in Outlook today. We've been having some issues getting prompted for passwords from Outlook, and one of my colleagues pointed out that one fix was to disable the dowloading shared folders. To get to that option you have to go to Outlook 2007 -> Tools -> Options -> Mail Setup -> E-Mail Accounts -> Change -> More Settings.

However, going there revealed an additional two layers that no one else is seeing. First was an option entitled, no joke, "Even More Options..."

Clicking on that revealed another dialog box with some interesting tabs:

Ok, so some debugging stuff. But Malebolge? What the heck is that? Even worse, clicking on it doesn't help explain anything:

What the heck does that mean? Oh well, I'll just assume I got some sort of internal build and see if I can reinstall. But seriously, what are we, like 8 levels in? Who needs that many options anyway?

Tuesday, May 22, 2007

How to tell you aren't a newbie

The day you say "what type of idiot wrote this crap" and then find out you were the idiot, is the day you are no longer a newbie.

- Kinglink (via The Daily WTF)

Saturday, May 19, 2007

Consent based decision making

On another thread on the XP list, we've been discussing some ideas around moderation after a certain, um incident, which some people agree with and some don't. The idea was brought up to perhaps next time have a discussion about the moderation, and come to an agreement by consent rather than consensus (for more about that, see here).

John Roth sent a query about it over to a group which discusses such things, and the following was the reply from Sharon Villines, and author of a book called Consenting to a Deeper Democracy - The Essential Guide to Sociocratic Principles and Methods:

Consent decision making only works in a group of people who:

1. Share a common aim and
2. Can reflect together on how best to achieve that aim
3. The group consents to who is included in the group (and thus in the decision making).

If these three conditions cannot be met, then majority vote or autocratic decision making works best.

If you have a group of moderators, they can use consent amongst themselves (if they can meet these three conditions). If the moderator list is representative of the kinds of people on the list, they should be able to make decisions that are in the best interests of the people on the list. But, obviously, not every person with every kind of aim.

The view from list members will be that the moderators are making decisions autocratically because that is how an individual list member will experience it.

Majority vote on a list will tend to produce a very homogeneous list as the minority is voted down and leaves.

Friday, May 18, 2007

Sorting messages by Thread using Thunderbird and Outlook

Recently on the XP mailing list, we were having a discussion about readbility of the list, given the number of messages we see a day. I mentioned that I use the thread feature of Thunderbird to sort everything by threads, and had several people ask me about it. Since I also use it in Outlook, I'll show that too.

First, in Thunderbird you may have to enable that column to see the icon. Looking at your list of messages, you'll see a tiny drop down icon on the far-right, which will get you the column customization so you can choose Thread:

Now, you should see an icon that looks like a little bubble. Click that once to group by Thread, and a second time to sort so that the most recent thread starter is on top:

In Outlook, it's similar. From your message list, right click on the columns, and choose Arrange By -> Conversation:

That groups the messages by conversation. The one thing I don't like is that it sorts them by the lastest thread to have a message posted. So the position of the threads changes based on what time the last post was. That makes it a little harder to find things if you knew what the threads around it were, but comes in handy if a thread has been posted to for a while, since it pops up to the top.

Enjoy!

Monday, May 07, 2007

Used CDs in Florida

Over the past few years, I've had a special liking to the music of Tool. Don't ask me why, but there it is. I had been trying to track down a used CD store here in Tampa to find an album I used to have, plus see if they had any others. But all the places we used to go to before we moved have closed down. Although I did find a good one last time I was down in Boca, it might be even harder when this comes into law:

New "pawn shop" laws are springing up across the United States that will make selling your used CDs at the local record shop something akin to getting arrested. No, you won't spend any time in jail, but you'll certainly feel like a criminal once the local record shop makes copies of all of your identifying information and even collects your fingerprints. Such is the state of affairs in Florida, which now has the dubious distinction of being so anal about the sale of used music CDs that record shops there are starting to get out of the business of dealing with used content because they don't want to pay a $10,000 bond for the "right" to treat their customers like criminals.


Good job, Florida. How can you be so annoyed with a place you enjoy being so much?

Labels: ,

Friday, May 04, 2007

Silverlight, "Cross-Platform" and, what else, DRM

There has been much hubbub over Silverlight and it's touting of being "Cross-platform", especially since "Cross-platform" means Windows and OSX 10.4.8 or later. How can it be a "flash-killer" and call itself "cross-platform" if it doesn't run everywhere Adobe's Flash does?

Now it makes sense. In the FAQ for Silverlight, it became apparent why it's not supported on Linux:

Will Silverlight support digital rights management?

For content providers, Silverlight will support digital rights management (DRM) built on the recently announced Microsoft PlayReady content access technology on Windows-based computers and Macintosh computers.

Of course! DRM! That's the killer, and it makes perfect sense. I can't wait until the day people can revoke and restrict things on the fly. I love it when I purchase stuff and get told, "Oh, and here's how you can use it" (except for things like rental services, which I think it is appropriate for).

Alright Linux guys, let's get cracking and get DRM supported, and then maybe Microsoft will consider Silverlight there.

Wednesday, May 02, 2007

VSTS/TFS performance

Ayende Rahien, the creator of RhinoMocks, has an interesting blog post in which he talks about the troubles he's had with TFS, and he advises people to avoid it:

 

Latency is a killer here, TFS has a always connected model, which means that it drives me crazy when I want to edit several files, it checks them out, one by one, s l o o o o w l y.
Then there is read-only bit - plays havoc with my build process.


I found the merge capabilities quite week, frankly.
Patching doesn't exists, so you are forced to do work around that with shelving, with you can't send in an email, etc.
No good offline support.

I ended up chatting with him and we discussed what his perception was. In a nut shell it was:

  • No offline support
  • Checking out a file to edit it is slow
  • Using a refactoring tool which has to do multiple checkouts is very slow
  • Patching support is non-existant (for example, against repositories you don't have permissions to)
  • Opening a source controlled project takes a long time
  • Merging is weak

The funny thing was, I haven't seen a source control integration yet which doesn't have some latency when editing a file that hasn't been checked out, and then has to be. We used Subversion for quite a while (because I fought hard against VSS and won), and we started out with the SVN MSSCCI provider. Even though SVN is not a connected system - meaning checkouts are basically just marking the file writable - there still was a little bit of latency if I just started typing on a file I hadn't checked out for edit.

After talking with him, it seems as though he isn't using an integrated SCM, but doing it outside the IDE (ala TortoiseSVN, which we ultimately ended up going to). That's going to be hard to compete with, since the IDE doesn't have to do anything.

However, I understand what he is saying about performance problems. One option could be just to always keep everything checked out, and use the multiple check-out option. Of coursem that doesn't help with the opening project issue - I ran a sniffer as I opened a project that was version controlled and caught at least 20k worth of traffic before the project opened. I understand why it is doing that (mainly for various enterprise-y type features), but can also see how devs who are used to things being snappier would not be happy (I wouldn't be).

Nor does it help with offline support. That story is still awful, although I know the team is working on it.

With merging - James Manning has a post on customizing the merge tools in TFS which should help.

Finally, the concept of patching is an interesting one. I know that work I've done on NUnit in the past was that way - I'd sync my sources, make my changes, and then send a patch up to be approved, since I didn't have direct check-in abilities. Granted TFS has shelvesets, but I'm still going to run that past the VSTS team to see what they think of it.

So, thanks to Ayende for holding a good conversation back and forth about the things he saw (he isn't using TFS anymore). Hopefully the product will get back to the point where agile developers can be just as productive using TFS as no intergrated provider.

Tuesday, May 01, 2007

Silverlight and Ruby

When I first heard about Silverlight, Microsoft's new "Flash killer", I have to admit I was a bit skeptical. Flash has been around for a long time, and is a great way to do various cross-platform things, since it runs in the browser and (mostly) behaves the same way across platforms. How would Silverlight match that?

This morning's article in eWeek has me taking a little more notice. Not because of Silverlight, but because of the new DLR - Dynamic Language Runtime. It runs on top of the .NET CLR and allows developers to create applications - including Silverlight - using .NET, or Ruby, or Python, or other dynamic languages. This is extremely cool, because the biggest problem with Flash applications is, well, creating them.

In other words, I'm a lousy designer. So the concepts of timelines and frames in Flash makes my head spin. I was extremely happy when I dove into ActionScript, because I was mostly back in my home territory.

But being able to use a language like Ruby to create applications which interact not only with each other, but applications written in other dynamic languages, and .NET, and Silverlight? That might be the step to really push a movement in this direction.

Of course, I just hope that Microsoft truly follows through with Cross-platform and allows these things to run on Macs and Linux and other platforms. It would be a shame to have something so cool, but still be locked into Windows with it.