Thursday, November 29, 2007

Computer Randomly Plays Classical Music

During normal operation or in Safe mode, your computer may play "Fur Elise" or "It's a Small, Small World" seemingly at random. This is an indication sent to the PC speaker from the computer's BIOS that the CPU fan is failing or has failed, or that the power supply voltages have drifted out of tolerance. This is a design feature of a detection circuit and system BIOSes developed by Award/Unicore from 1997 on.

Friday, November 16, 2007

Clucking

"We are climbers who fuck, not fuckers who climb."

It's hardcore. Fucking Hardcore.

What is that in the box?

Before you hit play, try to figure out what is in the box.

video

Monday, November 12, 2007

Subversion Config File

The Subversion documentation is not clear on the true format of the config file with respect to multiple properties for a single file pattern. The answer is simple, use a ';' to separate each property.
*.sh = svn:eol-style=native;svn:executable
That said, this begs a little rant about Subversion. There is no server based push of configuration data to the clients. Even worse is that this is far from a priority for the developers.

Thus, you have to send out an email to your entire development team and ask them to edit the file in .subversion/config. What a royal pain in the ass. I recently had to do this because in a mixed office of OSX and Windows users, we were ending up with files with both line endings in them! When we did a merge, we had all sorts of weird conflicts. The only real solution to this problem is to get everyone to add eol-style=native lines like the one above to all of the 'text' files referenced in their config file. No fun at all and it really makes the IT department look like a bunch of idiots with crappy tools.

San Francisco Oil Spill

Lynne and I went for a walk along sunset beach today. It was a gorgeous day out. Sunny and not windy at all. When we got to the beach, we noticed a bunch of signs saying the water wasn't safe, etc. We weren't even thinking about the big oil spill in the bay this last week. Having never been near an oil spill of this magnitude, I had no idea of what kind of damage it really does.

We started walking down the beach and noticed very few people with plastic bags digging little bits of sand up. We looked down as we walked and started noticing all the little black dots *everywhere*. Actually, they aren't that little. A lot of them are the size of quarters and you just can't miss them. After walking for a bit more, we decided to start to pick up a few small bits and it became infectious. We stayed for over an hour and filled up a plastic bag full of sandy oil that we got from one of the other 'cleaners'.

After over an hour of musing about how depressed we were that the beach has been mucked up, we dropped the plastic bag in a pile of about 50 other even larger plastic bags. The beach is such a mess! The oil is this nasty sticky smelly stuff. If you haven't been to the beach, you need to go as soon as possible to help clean up. I plan on trying to get down there a few more times this week before sunset.

The company behind this spill really isn't doing enough to clean up these beaches. There should be people being paid 24/7 to work on this. We didn't see a single person there that was clearly working to clean up the beach. It was all volunteers. Its really sad.

Saturday, November 10, 2007

Subversion Vendor Branches Howto

This little posting is going to explain something that I have recently learned about that I would like to share. As someone who maintains complex software systems, it is important for me to be able to easily do upgrades of our third party applications. So, what is the best way to do this?

I use Subversion and a concept called 'vendor branches.' Sadly, their documentation is confusing and not as easy as what I'm going to describe. Let us use an example to demonstrate.

At work we rely on JiveSoftware's JiveForums software to host our forums. Each time they come out with an upgrade, what is the easiest way to deploy that upgrade across our development, preview and production environments? The answer is to check a copy of their code into subversion. This is an example script of how I do an upgrade from version 5.5.0 to 5.5.7. This assums that 5.5.0 has already been added using steps similar to below.
  1. wget http://domain/jive_software_5.5.7.zip
  2. unzip jive_software_5.5.7.zip
  3. svn co -N http://svn/vendor/jivesoftware jivesoftware
  4. mv jive_software_5.5.7 jivesoftware
  5. cd jivesoftware
  6. svn add jive_software_5.5.7
  7. svn ci -m 'adding a clean download of 5.5.7'
Now, the whole concept of the upgrade can be imagined with this simple statement: "I would like to take the difference between version 5.5.0 and 5.5.7 and apply that to what is in my development environment". In order to accomplish this, I check out my development tree locally and then execute a merge of the diff of the two versions.
  1. svn co http://svn/dev/jive jive-dev
  2. cd jive-dev
  3. svn merge --ignore-ancestry http://svn/vendor/jivesoftware/jive_software_5.5.0/ http://svn/vendor/jivesoftware/jive_software_5.5.7/ .
  4. svn ci -m 'upgraded development environment to 5.5.7'
Note: if there are any conflicting files, you will need to resolve those conflicts before checking in. However, as you can see, you can locally modify any of the jive software files and the diff process will take care of doing the merges for you.

For deployment of code to our preview and production environments, we have just checked out the preview/prod trees from svn onto the individual servers. Upgrading preview/prod is the same steps as above. Upgrading the machines themselves means that we just need to do an 'svn up' or 'svn switch' if we decide to deploy based on tags. At some point we might use .deb's to do these deployments, but for now, subversion is a great solution. It is especially handy to be able to quickly see a nice diff if a file changes because someone logged in over the weekend and needed to quickly modify a file by hand.

Running JBoss through this system works exceptionally well because not only does each revision move files around significantly, but it is increasingly difficult to even remember all the modifications we make to various configuration files for our preview and production servers. This process gives us the nice ability to use diff's to easily find those changes.

As for gotchas, one major one that I've discovered during upgrades of JBoss is that they will frequently take a packaged set of files (ie: a .sar/.jar file) and explode them into a directory. Unfortunately, subversion doesn't deal with this problem very well. It gives an error about 'type of resource object has changed.' When this happens, what you need to do is delete the file from your local repository first (including committing this change) and then doing the merge. The other gotcha is to make sure that all your text files go in with 'svn:eol-style = native' line feeds set from your .subversion/config file. If you get files with mixed linefeeds, the merge process doesn't always work so well and generates a lot of conflicts.

Well, that's it. I hope that little howto has been helpful.

Monday, November 5, 2007

Fix for iPhone earphone issue

The speaker on my iPhone handset stopped working recently. I suspect it stopped working sometime after I plugged an audio cable into it so that I could listen to music in my car. After restoring my phone back to stock 1.1.1 (something I've been wanting to do anyway cause the phone was randomly crashing), it still wasn't working. Google to the rescue. I cut the top off a q-tip sprayed some glass cleaner on it and then gently put it into the headphone jack hole. When I pulled the q-tip back out, it had two massive lint balls on it. I then played my voicemail and it worked just fine again. Yea!

Saturday, November 3, 2007

Gap Feedback Coupons

I recently bought some clothes at The Gap. As part of your receipt, they give you a coupon for 20% off your next visit if you go to their feedback website and answer a few questions. The silly thing about this system is that if you say you are a 12 year old girl (or boy), then they don't ask you any questions. How pointless is that? Well, I'm sure that solicitation of young children has a law against it. Tell that to the priests. Heh.

If I was designing the system, I would print out a special code on the receipt that the receipt holder had to enter in. That way you have tracking from purchase to coupon. It sure would tell you a lot more about your customer base than just handing out 20% coupons does.

Thursday, November 1, 2007

Innovative Education

After more than 4 years in college and no where near getting a degree, I decided to drop out. The reality is that I had spent the those 4 years learning everything I could about software, hardware and networking. I was in a great environment. I had a boss who loved me and I worked for the only department in the entire school that had any money (and they had a boat load of it). In fact, they had so much money, I was tasked with figuring out how to spend it on cool computer systems across the entire department. Oh, did I mention my boss loved Apple computers? A dream job for me, except two things: #1. the rest of the school was jealous, so I was treated strangely. #2. the pay sucked ($5.40/hr), I could barely survive on what I was making.

The point of all of this? Well, basically what I was starting to say is that I was disillusioned by the fact that I was bored taking classes. Sure, I had really good professors, but I felt like I wasn't getting anything out of regurgitating what was in the books. It was frustrating that I was learning more information running the departments computers than I was attending classes. By my final year, I was taking a class in C programming and at the same time accomplishing something far more complex: porting X11R6 to A/UX (it took about 4-5 hours to compile it all). In class, things move a lot more slowly to keep up with the least common denominator.In the real world, the education I learned on my own by running these systems really made me feel a lot more useful; I was learning something that gave me the ability to make a real difference for my life and others. I like that concept a lot.

While reading my email just now, I saw this slashdot posting:
openfrog writes "An inspired professor at University of Washington-Bothell, Martha Groom, made an interesting pedagogical experiment. Instead of vilifying Wikipedia as some academics are prone to do, she assigned the students enrolled in her environmental history course to contribute articles. The result has proven "transformative" to her students. They were no longer spending their time writing for one reader, says Groom, but were doing work of consequence in a "peer
reviewed" environment, which enhanced the quality of their output."
And it dawned on me. This is a brilliant innovative education idea! If I had been tasked with helping others by improving wikipedia, then I would have been more interested in the subjects! Doing research for the purpose of sharing it with others is way more rewarding. I bet I would have learned even more by the fact that people would be editing my articles as well! How cool!

With that, I commend that Mrs. Groom for really thinking out of the box. You go girl.