Kyle's life in technology

Tuesday, March 07, 2006

Subversion again -- it's the simple things

Currently using Subversion 1.3 at my company.  Been using Subversion for 1.5 years as a team.  Put simply, it works.  It does one thing (versioning files & directories, merging, etc), does it well, does it reliably, and does it quickly.

It has never gone down aside from hardware outside the box going down (network switch failure, drive controller failure)

It has never corrupted any data.  Never.  Not once. 

The only administration I've ever done to it after setup has been adding/removing users permissions from the system. 

We have about 10,000 commits across three repositories.  We use FSFS backend right now, but used BDB for the first 9 months and never had a problem with it (running on a Windows 2000 server.)

It works well over VPN & even slower connections.  (tip:  use the mod_deflate option on Apache)

It's ... it's ...  beautiful.

WTF: why is clustering & redundancy so hard?

We've had way worse availability of our storage systems since we switched from per-box RAID to a SAN.  And cute little notes from the vendor like, "We've discovered a flaw in our firmware.  If you don't [take your production systems out for two hours] and upgrade it within the next 7 business days, we will no longer support you."  Maybe we'll switch vendors.

We're also using a database clustering technology.  Cool thing though is that when one node goes down, it takes the other one out without fail.  Very consistently.  From a major reputable vendor.  Why?  Got me.  Getting better I think though, upgrades, etc.  Too bad it depends on the aforementioned SAN.

We're using an application cluster from a reputable vendor.  Unfortunately, the tool that manages nodes/instances in the cluster tends to hang a lot.  Which may or may not mean a node is down.  When a node goes down, it is typical for us not to know about it other than seeing our performance fall into the basement.  And of course, when we try to fix, we can't, because the node manager is down.  We upgraded two major versions last year, and it got worse, not better.

Can I just say WTF?????

Sunday, December 11, 2005

VS.NET 2005, you had me at hello

Decided to take the plunge & install it.  So I freed up some space, prepping to lose a nice chunk (4GB) to the IDE & help files.  (Note going into this, I already had the .NET 2.0 Framework Redistributable installed.)  I have VS.NET 2003 & help installed and no plans on removing it.

  • First thing -- VS.NET 2005 picked up on the fact I have Win XP SP1 and told me I have to have SP2.  Fair enough.  (time passes ...)
  • While I wait, I'm reading articles like this that concern me (but I will most likely never run into this particular one).  But I still want it.  Folding laundry now waiting for my 111mb download & install of SP2 to finish.
  • Allset ... install + docs with my documentation only took 2.1GB --  not bad
  • Installed AnkhSVN snapshot 23  [would recommend firing up VS.NET 2005 at least once before installing all the add-ins]
  • Installed NUnit 2.2.3 (support for .NET 2.0 )
  • Installed TestDriven.NET 2.0 beta
  • Loaded my first project ...
It did an automatic conversion/upgrade of the project for me.  All I had to do to get it to run was to change the reference to the key file (.snk) for signing the assembly.  VS.NET 2005 wants it as a project option, whereas in 2003 it was an assembly-level attribute.  Easy enough fix.  Presto -- one of my more critical projects compiled without a hitch, and all 200+ unit tests passed like a champ.  nice :)

Played around with Refactoring a bit -- this could come in handy.  Class designer was good too -- dropped a solution on the surface and it diagrammed out a class model diagram for all of the classes.

All in all -- very nice.  Excited to explore more features, like the local web projects improvements.

Saturday, December 03, 2005

Mono running on Suse 9.1, FC4

Finally finished with the Mono on Suse 9.1 madness.  Not sure why I spent so much time on it, other than it became an obsession/challenge.  I learned a ton on the way.

I installed Fedora Core 4 on a different box using VMWare.  (Learned you can mount ISO's from host OS to look like the CD drive to the guest OS, pretty slick).  I did the same thing (built from source distribution), but took only 1-2 evenings.  All of the packages in FC4 were considerably more up to date.

I am very excited about Mono on Linux.  I was able to successfully run MonoDevelop on both Suse 9.1 and FC4.  It didn't run too bad on an old PII-350, runs very nicely on a newer PentiumM.

Monday, November 14, 2005

GTK2, Suse, Mono, and build pain

So I decided I wanted to build Mono 1.1.10 from src on Suse 9.1.  Thus started a many-day dependency nightmare.  Try to build X, X needs Y, try to build Y, Y needs Z, etc.  But got reallllly close ... and ...

Kept getting "can't load libcairopango" errors when trying to build gtk2 (latest, 2.8.something).  After much pain and suffering, I finally realized that the *.la files in /usr/local/lib are basically library manifests.  So I went through the file and figured out it listed /usr/local/lib/, which wasn't present.  Even thought libexpat was install on the system.So I downloaded libexpat src, ./configure, make, make all, and poof that was fixed.  AND THEN ...

Some weird make error about glib-genmarshal not being found.  I found it in /usr/local/bin, but not /usr/bin.  I linked it (and two other glib-* tools) from /usr/local/bin to /usr/bin and IT WORKED.GTK2 installed.  Now for Mono's gtksharp.  

In the end, I want to run MonoDevelop.  Wish me luck :)    

Wednesday, May 04, 2005

There are no stupid questions, only stupid answers

In my industry, we seem overrun by a number of people who don't know how to answer questions. My 6th grade english teacher maintained that there was no such thing as stupid questions, only stupid answers. I am now a firm believe in this.

Let me illustrate:

1) If someone comes up to you, their clothes ablaze, and screams, "Where's a bucket of water?" do you:

  1. Stare in fascination at how brightly polyester can burn
  2. Tell them that you think there is a water spigot out behind the barn, and there may be a bucket inside one of the old horse stalls
  3. Keenly realize this person needs help, instruct them to stop, drop, & roll, while you run and get water & call 911.

1) is fecitious, 2) is technically correct but of no value, and 3) is a good answer. But #3 isn't an answer really, is it? In actuality, it is a far better response than the first two. Its all about context and knowing what the person is really asking. You recognize that the person is in serious need of help, which is why they asked you the question. You think for yourself and determine how to help them. (By the way, #2 is a stupid answer)

2) If user of your software comes to you, and says, "I get this really big greek error message when I click this button. Pleae help me", do you:
  1. Tell them it means another process has the named mutex
  2. Tell them how to work around it and file a bug report so that it gets fixed.
If you chose #2, DING DING DING, you are the winner. Answer #1 is technically correct, but worthless. If you chose #2, you recognize why they are asking you the question in the first place and help them. The point is that when you answer someone's question (or have any communication with them), it's not enough to answer the question with something that is technically correct. Ask yourself:
  1. What is the outcome of this interaction that would be of value to the asker? (Or rather, what do they really want?)
  2. What information does this person really care about? Strive to answer the question effectively but also with brevity.
In this way, you will spread the joy of effective communication to all those around you. Please, please -- think before you answer.

Monday, May 02, 2005

Subversion 1.2 and Autoversioning

I've been playing recently with SVN 1.2rc2 + Apache 2.0.54 + autoversioning. Basically using a wonderful little protocol called WebDAV (extension to http), it lets users browse a Subversion virtual file system as a normal file system, save files, add files, delete files, with the cool effect that every single change is versioned. And the user doesn't even know they're using versioning. Windows Web Folders works for the most part, except for a missing feature that prevents edit-in-place from working (you have to copy local, modify, and copy back in.) I've been using WebDrive as a WebDAV client for Windows. It works pretty nicely with SVN autoversioning -- there a few minor glitches, but so far, WebDrive support has been great providing me a new version that fixes the issues. My plan is to roll this solution out, using FSFS as the repository format. FSFS has a fast commit speed and works great with incremental backups. FSFS been 'in the wild' for several months now and I've seen nothing but good comments on it. Rock on.

Sunday, April 10, 2005

Cache item expiration in ASP.NET

Made an interesting yet painfully-learned-the-hard-way lesson tonight.

When you give an absolute or sliding expiration to Cache item, the Cache does not remove the item immediately when the expiration is reached. Rather, it will remove it on the next attempt to access the item, and return null. I would also guess that expired items are removed when Cache does a sweep when it needs to free memory.

It makes sense now that I think about it. Never thought about it before :) ouch.