Rants, rambles, news and notes from another geek

Omea Reader Still Free

The nice folks at JetBrains have decided to extend the free license period for Omea Reader, their excellent RSS and USENET reader, until March 31, 2005.

Even if you don’t download it now, you should at lease go get a free license key while they’re&nbsp_place_holder;available.

Resharper Build 151 Is Out!

For anyone who uses Resharper, I just saw this go by on one of their newsgroups…

We are glad to announce that we start early access program for new ReSharper
version (1.5). This version will add more refactorings. We plan to release it in the end
of January 2005.

Here is the list of refactorings to be added:

  • Extract Interface
  • Extract Superclass
  • Introduce Field
  • Encapsulate Field
  • Copy Type
  • Introduce Parameter
  • Convert Interface to Abstract Class
  • Convert Abstract Class to Interface

And even better… ReSharper build #151 is out.

Changes (from ReSharper 1.0.5):

  • Extract Interface refactoring
  • Extract Superclass refactoring
  • Introduce Field refactoring
  • Encapsulate Field refactoring
  • Copy Type refactoring

Full list of fixed bugs is available at http://tinyurl.com/46qsh

You can download ReSharper from the download page of the ReSharper site:
http://www.jetbrains.net/confluence/display/ReSharper/Download

Yippee!

Fantasy Football Winner!!

Fantasy Football Final ResultsI’ve never really played Fantasy Football before, and honestly, I’m not much of a football fan. Don’t get me wrong, I like NFL Football in the same way that I like PGA Golf… I love going to games… if I’m with friends, it is fun to watch over a few beers… etc.

Needless to say, it came as quite a surprise to me (and to my friends back in Denver who are football fans) when I started out the season 7-0. I got lucky and picked up Daunte Culpepper, Randy Moss&nbsp_place_holder;and Nate Burleson and they all started out amazingly.

In the middle of the season Randy got hurt and I lost a few games, but by the end of the season I was in the playoffs with a second place overall finish. We had a small league, so playoffs were only two rounds and I dominated both of them… thanks again to the Minnesota Vikings Air Force.

A number of people have suggested to me that I had an advantage by being a complete football outsider who was playing purely from a statistical stance. A bunch of the guys in the league were Denver Broncos fans and aggressively drafted Broncos players. Which is why nobody noticed me picking up the offense that I did (I also got Tiki Barber).

I don’t know about that, I just know that I had fun. I hope we have a league next year too, but maybe this time it should be a money league instead of a free one.

Now playing: Liquid Tension Experiment - Chewbacca

Start a Movement! Donate All Your Google AdSense Revenue to Earthquake Relief

Scott Hanselman just posted this

Greg Hughes and I were talking about this idea. The power of blogging isn’t citizen journalism, it’s the power to start a movement.

Nick Bradbury is donating his profits to the Red Cross. Kudos Nick. Let’s ALL take our passive Google Adsense Revenue **for the year **and donate it directly to earthquake relief. Mine so far is&nbsp_place_holder;US$287.53 since I started ads in June. I’m sure hundreds of thousands, even millions could be raised quickly in this manner.

To that end, let’s **pressure Google **into allowing us to automatically donate our revenue from their side! Spread the word and trackback this link.

To me, spreading an idea like this is the power of blogging, more than citizen journalism.

I’m in. Come on Google… DO IT!

The Biased American Media

No I’m not talking about politics, per se. I’m talking about how the American media is so… well…&nbsp_place_holder;American-focused.

22,000 people dead (at last count this morning) from the 9.0 earthquake in Indonesia and CNN makes sure to point out how few Americans were involved. I understand that Americans want to know about Americans, but don’t forget about the millions of Southeast Asian folks who live and work here every day. Don’t discount their losses just because they aren’t of western-european descent.

Rather than go into a long diatribe about it, I’ll just point you to Scott Hanselman’s post on the subject.

Now playing: A Perfect Circle - Imagine

Developing Non-Admin: File Ownership on Windows Server 2003

So that I don’t lose this later, and so it will help others out who run into this…

When you are developing non-admin, you will probabky end up using something like Aaron Margosis’ MakeMeAdmin tool to elevate your privileges when you need to do admin-like things.

The problem comes when you are doing something in an admin context that creates files. In Windows XP, when you created a file as a member of the Administrators group, the file was owned by you. In Server 2003, it is owned by the Administrators group. Apparently this was to make it easier for multiple system adminstrators to work on a system. Each of them, by just being a member of the right group, gets ownership of all the files created by other admins. Makes sense.

But when you are developing, you may not want this behavior. Suppose for example that you perform a build of your application from a MakeMeAdmin boosted context. When the compiler is doing its dirty work, all those files in obj/ and bin/ will be owned by the Administrators group. If you later try to do a compile of the same project as a non-admin, it may fail because you may not have the rights to delete an administrator’s file. Oops. Keith Brown talks about this in Item 41 in his book.

Now for the fix (similar to the one described&nbsp_place_holder;at the end of&nbsp_place_holder;MSKB 318825):

  1. Use MakeMeAdmin or logon as the local machine administrator
  2. Launch gpedit.msc, the group policy editor.
  3. Navigate to Computer Configuration/Windows Settings/Security Settings/Local Policies/Security Options in the tree
  4. Double click on System objects: Default owner for objects created by members of the Administrators group.
  5. Change the value to Object creator.

Reboot and you’re golden.

Note: You may have to use MakeMeAdmin to fix any files that were previously created.

Now playing: Bob Marley & The Wailers - Easy Skanking

Geek Notes 2004-12-27

So Christmas is over and it is still a ghost town here on campus. I shouldn’t be surprised, when you have to “use it or lose it”, you make sure to take your vacation, right?

Our first Christmas by ourselves in Seattle was fun. Hadley got her “purple baby”, but it is a bit creepy because it is the same size as my son Finn. When I see her carrying it around by one leg, we can’t help but jump up thinking she’s got the boy by the leg!

And if that weren’t enough, this morning my wife IMed me and told me that Hadley has already started talking about “what she wants next from Santa.” Great.

  • The Free Lunch Is Over[](http://www.gotw.ca/publications/concurrency-ddj.htm)&nbsp_place_holder;- In this article, soon to be published in DDJ and subtitled “A Fundamental Turn Toward Concurrency in Software”, Herb Sutter outlines why developers will be driven to produce concurrency aware by changes (hyperthreading, multi-core, etc.) made by processor manufacturers. Moore’s Law is coming to an end. Must read.
  • I Hate ResX Files - Well I don’t, but Shawn Van Ness does. And here’s why. Good points all. And he’s got some helpful code and tools to help deal with the problem.
  • Lego Logic Gates - Very cool. This guy has made working NOT, OR, AND and NAND gates. I need more legos [via Boing Boing]
  • CTRL-F5 Is Back - A number of bloggers (myself included) complained about the removal of CTRL-F5 from Whidbey and now it looks like they’ve added it back in. Community involvement pays off!
  • Coffin Weed&nbsp_place_holder;- Ha ha ha ha a truck driver got arrested after cops discovered 610 lbs of pot in the coffins they were hauling. As expected, they didn’t look inside to see what was in the coffins would you?

Also, I some time over the long weekend working&nbsp_place_holder;on my new blog skin. Hopefully it will be done soon. I’ve learned a lot about how .TEXT is put together some of which I don’t like very much. But honestly, when was the last time you looked at someone else’s code and fell in love?

Now playing: Tool - Lateralus

Regex Static Methods

In this post, Jason Bock says…

Today a co-worker pointed out the following line in the documentation for Regex:

_Using a static method is equivalent to constructing a Regex object, using it once and then destroying it. _

Um…what??

Jason then shows a bunch of code that compares a type initializer (aka static constructor) with an instance constructor. He concludes with…

The key point to see is that the type initializer for StaticMethodApproach is only called once. The constructor for InstanceMethodApproach is called every time you invoke CallMe(). In other words, the type is only loaded once, but you get three instances of InstanceMethodApproach. That doesn’t seem “equivalent” to me.

Instead of “equivalent”, I would go with “analogous”, although even that seems to be too strong of a connection between the concepts. Also, I checked the .NET 2.0 docs and it hasn’t changed. I don’t know, this just doesn’t feel like the right wording to me.

I think Jason is missing the point of the documentation. If we take a look back at the Regex Class docs on MSDN, it says this:

The Regex class contains several static methods that allow you to use a regular expression without explicitly creating a Regex object. Using a static method is equivalent to constructing a Regex object, using it once and then destroying it.

This isn’t making any statements about type initializers. It also isn’t making a general statement about static methods vs. instance methods.&nbsp_place_holder;It is instead giving you a hint about the implemetation of the _these particular _static fa├â┬ºade methods.

Take the static (Shared for you VB folks) Match method, for example, it has the following signature:

   1:  public static Match Match(

   2:     string input,

   3:     string pattern,

   4:     RegexOptions options

   5:  );

Now combine that with the documentation that says this method is “equivalent to constructing a Regex object, using it once and then destroying it.” We can predict that Match will be implemented something like the following code. (A quick experiment with Reflector confirms it.)

   1:  public static Match Match( string input,

   2:                             string pattern,

   3:                             RegexOptions options )

   4:  {

   5:      return new Regex(pattern,options).Match(input);

   6:  }

So I would say that the phrase “is equivalent to” is completely accurate here. Wouldn’t you agree?

Bigger Is Better

Damn that’s big. A 102-inch plasma… here’s a photo and a link to the story&nbsp_place_holder;on Yahoo! News..

Capt.sel80112161348.south_korea_samsung_sdi_sel801

Ward Cunningham Quotes

One of the coolest things about working at patterns & practices, is getting to bump into Ward Cunningham (inventor of CRC cards, wiki and much of the ideas and thinking behind Extreme Programming). Last month I went to see Ward give a talk over at MS Research. During the presentation I tried to type into my phone many of the funny and insightful things he shared with the group. Here are some of my favorites.

**Talking about software development methodology **

“I don’t claim to be a methodologist, but I act like one only because I do methodology to protect myself from crazy methodologists.”

**Talking about the lack of data on pair programming effectiveness **

“When a manager asks for hard data, that’s usually just his way of saying no.”

**Talking about code smells **

“There is a programming smell here which is kind of like the smell in your refrigerator, you know. There’s a sign that there’s something wrong, but you can’t quite put your finger on it. But you know if you leave it there, its only going to get worse.”

**Talking about testing, TDD, etc **

“What I’m really doing is I’m trying to preserve the right for a programmer to think while he’s typing. If you feel that it’s not going well, you can stop and say ‘What did I get wrong? Let me correct it.’”