Web 2.0?
What the fuck is up with the use of Web 2.0 to describe emerging trends on the internet? Sure there are bunch of newer things out there like blogging, AJAX/ATLAS, tagging, podcasting, etc. but how the hell do you label it as Web 2.0?
Did some great, all-knowing internet god determine it was time to upgrade the internet to version 2.0? Did this person come into their office one day and say “Hmmm….looks like they’ve released v2.0 of the Web. Let’s just run the upgrade and see what happens.” He pulls out a 3 1/2” floppy slaps it into his 8086 (cause who’s going to need more than 256K of memory right?) and double clicks on the setup.exe. After watching a progress bar fill up he gets a message saying “Upgrade Complete” so he shoots off an email to everyone he knows telling them that “We’re now running Web 2.0, tell your friends”.
My other thought is what the fuck was Web 1.0? Didn’t that get hammered in the Dot Com implosion a few years back? We’ve been running Web 1.5 ever since. If we upgrade to the new full version (2.0) won’t we still run the risk of have Dot Com Bomb 2.0, Mass Tech Unemployment 2.0, Stock Certificate Toilet Paper 2.0 and But I Don’t Want To Get A Real Job 2.0?
The web is ever evolving. Don’t try to bring some trendy, marketing type term like Web 2.0 into the mess. You can’t label it. Don’t try. You sound stupid.
Yosemite Sam
After writing up the post about Chicken Little Syndrome, I had flash backs to an earlier time when I worked with this bloke Yosemite Sam who had a bad case of Rebootitis. The first thing you have to understand is that the guy really did look like Yosemite Sam, mustache and all. Now that you have him pictured in your head I can begin to explain how he would continually hunt rabbits and be affected by Rebootitis.
I first started working at this company who, when using the Joel Test, scored an amazing 0 (if only I’d forced the test on them prior to taking the job). Okay, maybe they got 1/2 a point, but I’ll post about that later. When I started at this place I shared an office with Yosemite Sam. For the first week or so I was rather busy trying to keep my head above the water (first day: Here’s 40 reports we need modified. You can find the database on the network) so I didn’t really notice that Yosemite was ducking out of the office regularly. After a while I’d be working on said reports and all of a sudden I’d have database connectivity errors popping up all over the place. I chalked it up to networking issues as the email server was in a constant state of flux at the same time (again another post will have to cover networking at this joint).
Eventually I started to notice that there was a correlation between Yosemite’s office departures and the appearance of database connection errors in Crystal Reports. Being a curious individual I followed him out on one of his journeys. He left our office, walked into the server room (yes open to all, and yes to be covered in a future post) and proceeded to hard boot the server. Yep, just walk up to it and push the power button. Wait for the noise to stop coming from it, and then push the button to start it all back up again. Turns out this was also the email server (explains it’s stability), the domain controller, the development SQL Server machine, marketing’s Maximizer server and the print server. So Yosemite Sam was rebooting the entire company a number of times each day.
Being a newbie I didn’t say anything (why rock the boat when you’re the one without a life vest?) and carried on my merry way. Finally a couple of weeks later I was debugging some code with Yosemite and when it started to return results he didn’t expect he pipes up with “Hang on. I’ll go reboot the server. It’ll fix this.” Turns out it was just a bug in the client side code, but hey, rebooting the server should fix anything.
I’m the Igloo Coder and I’m just flipping the light switch waiting for the TV reception to get better.
Driving Tunes
Don’t remember where I found this, but damn are these tunes good. Thanks to Mercedes-Benz for putting it out on the web for free.
Java Kills
This is great.
"The software product may contain support for programs written in Java. Java technology is not fault tolerant and is not designed, manufactured, or intended for use or resale as on-line control equipment in hazardous environments requiring fail-safe performance, such as in the operation of nuclear facilities, aircraft navigation or communication systems, air traffic control, direct life support machines , or weapon systems, in which the failure of Java technology could lead directly to death, personal injury, or severe physical or environmental damage".
Java technology could lead directly to death….
Chicken Little Syndrome
I’ve been unfortunate enough to work with all kinds of people. Life would be so much easier if everyone were trying to be all they could be. But nooooo….people are far to satisfied with being mediocre. They’re happy not knowing enough to do their jobs. They’re happy running to someone else to get their jobs done.
So I’m on holidays right now. Got the week between Christmas and New Years off (me and every other programmer on the project). Stupid me says “Oh I’ll be in town so if disaster strikes I can be found at my cell number”. I figured that the fact I said “…if disaster strikes…” would indicate that I’m only willing to take calls in the most dire of situations. Apparently I should have laid this out in a clearer fashion. Something along the lines of “I’ll take a call only if the moon is hurtling towards the earth, and then only if it is going to hit my igloo”.
This morning I woke up to my cell phone ringing (conveniently on the other side of the igloo). I missed the call and quickly was listening to the message. “The sky is falling. The sky is falling.” So I return the call to find out the “problem” is that “…my processing hasn’t taken place and I’ve waited at least 5 minutes…”
A little background for you here. Our system has a web user interface that saves information to a database (sounds like a million other programs eh?). After saving a message is sent to a MSMQ queue and it’s processing can jump into a retry loop. That retry is configured, by default, to 30 minutes intervals.
Back to our fearless chicken caller. No matter how many times I’ve told this particular individual that this is the case, they don’t get it. Maybe they do get it, but alas it is stored in volatile memory. At one point I set the retry interval to 5 minutes and Chicken Little still appeared at my desk proclaiming that his transaction was “hung” and “I’ve waited for about 10 minutes and nothing is happening”. I looked in the logs and the queue only to find that the transaction had been submitted only 3 minutes earlier.
My question is why do people do this? Is it lack of knowledge, lack of patience or something else? I can’t subscribe to the idea that it is lack of knowledge since I’ve repeatedly mentioned retries, retry interval durations and even given brief tutorials on asynchronous programming.
In my mind that leaves lack of patience as the only option. People find it too easy to just run over to someone else and ask for the answer. “Is it done yet?” Although they come asking a simple question really they are pushing their work onto you. Instead of searching for the information they get you to search for them. Instead of analysing the situation they get you to do it.
What’s the problem with that? First, my time is already booked at work I only wish I had someone on our team with the sole purpose of chasing other peoples work. I don’t though so I have to push off my work and resolve the “Sky is falling” issues. The second thing that concerns me is that people who do this type of thing don’t seem to absorb the knowledge that you try to transfer to them. This usually means that knowledge of the system is centralised in a select group of people who invariable will, at some point in time, become a victim of the “hit by a bus” scenario.
In the end it comes down to respect. Respect for your coworker, and respect for yourself.
I’m the Igloo Coder and I’m trying to put a seal skin chair in the corner of my igloo. Could you tell me where the corner is?
IT Related Articles
Christmas Cheer
I get to my parents place at about 7pm on the 24th after driving for over 6 hours. Luckily there was a good hockey game just starting so I could settle in and watch that until lack of sleep took over. I settle into a comfy chair and what do I find.......the house is like a freaking zoo! My parents have 2 dogs (not in the house thank god) and 3 cats. My sister was visiting as well and she brought her 2 dogs (god forbid they have to stay outside) and a cat.
So with all the damn animals running around, fighting over toys, with each other and occasionally with people, my tolerance level reached rock bottom along with my blood alcohol level. During the next available commercial break (have you tried leaving a hockey game this year during the play? Might as well guarantee that you'll miss at least one goal) I went over to the cupboard in search of some good canadian rye whiskey. Right away I found a nice, unopened, bottle of 12yr old Gibsons and an opened bottle of Crown Royal. While walking away with the bottle of Gibby's my mother scolded me for not finishing the opened bottle (which had about 22oz left in it....hello mom, I like a couple drinks, but that's just a little much). So like the good child I never was, I switched to the Crown and took another glance in the back of the cupboard just in case mom was going to freak on my sober ass again. Sure enough there were a couple more bottle in the back of the cupboard.
Side note: My parents will have an occaisonal drink but they certainly don't do it regularly.
So I pull out the two newly found bottles and both happened to be unopened. One was another rye whiskey, Alberta Springs, and the other was a red wine. The first thing I noticed was that the whiskey bottle label just looked a little weird. So I investigated it a little bit and determined that the font and label coloring (very pale yellow in place of the white) were making the bottle appear very old. Back in the day bottles were "sealed" with a piece of paper over the cap and glued to the neck of the bottle. This one had the seal date on it. 1982. Yes folks a bottle of 24yr old aged (bottle not cask) rye whiskey. Needless to say that was coming home with me. The red wine was a Cabernet Sauvignon from Chile and marked as 1989. Very nicely aged as well.
Not only did I get a couple of whiskey neats to offset the zoo atmosphere, but I also got a couple of very sweet bottles of booze for my collection.
I'm the Igloo Coder and if you know where to find the value of whiskey or wine I'm interested in hearing from you.
Northern Bureaucracy
Seems like the big fella in the red suit can’t help but be bureaucratic. The least he could do is have this online and create a good mashup with an online mapping site.
I’m the Igloo Coder and apparently my neighbours need to have you fill out paper work so that they have fuel for the fire on these long cold nights.
Festivities
I was out last night doing the festive thing with some friends who were visiting from out of town. We started the night at La Tapa on 99th Ave between 105th and 106th Streets. As advertised the paella was stunning and the tapas was outstanding. We ordered up a few pitchers of sangria which were a great way to start the night.
After leaving there (and leaving behind the little kids who were with the party behind us) we were off to Sherlock Holmes on Rice Howard Way. I’ve been there a number of times before (okay, fine, the waitress knows what I drink) and on occasion had visited when there was live music. Last night we were lucky enough to hit some live music by Jimmy Whiffen, who I’m pretty sure was one of the performers I had seen there before. I have to say, Jimmy can do justice to almost any kind of music. Last night he sang one of the greatest renditions of Waltzing Matilda that I’ve ever heard. I’m certainly going to be watching to see when he’s playing there again.
On a side note, others, who I’m sure wish to remain anonymous, were out being festive too. It’s just too bad that they insist on calling all pissed up at 2am. I suppose you just have to learn to do nothing more than screw with their drunken minds at that point.
I’m the Igloo Coder and won’t you go a waltzing with me?
Visual 2005 Add-Ins
I love winter
Call me sick. Call me twisted. Call me a Canadian.
I love winter. I love the way it muffles the tire sound on streets. I love the way it turns a grimey fall into a pristine white canvas. I love the way it scares the crap out of people when you say “-40 before the wind chill.” I love the sense of how inconsequential we are that the weather puts in us. I love the way people bundle up in 27 layers to go to and from work, and when at work they strip darn near all of it off. It’s like going to the peelers without the skin exposure.
Most of all I love snowmen. Call me sick. Call me twisted. Call me the Igloo Coder.
More on Software Installations
Recently I posted this on my experiences with multiple installations for multiple environments. I got a response from David Lockwood that suggested I look into using MSI Transforms. After reading a few things (this, this, and this) I’m pretty confident that using MSI Transforms would have worked for us.
One of the things that we had to deliver to the client was an installation that the IT department could take to the server, double click, and have installation run and complete with no more user interaction required. I’m sure we all know that deployment environments change and this “one-click” deployment requirement would definitely have the possibility of input changes. So what we delivered was the MSI file, answer.xml file (contains the potential variable values) and a DOS batch file that runs the MSI file and points it at the answer.xml file. Double click the DOS batch file and the installation runs to successful completion or failure.
Based on my research of MSI Transforms, <caveat> which is only a day old </caveat>, it appears that we would have shipped the client a MSI file, a transform file and a DOS batch file that runs the MSI file and points it at the transform file.
I know that everyone is thinking “Oh, but you don’t need the DOS batch file”. Well, according to our client, no matter how much documentation we wrote on how to type the correct command line entry, that was not a viable solution. So we were stuck creating a batch file which, in almost all cases, has only one line in it.
So, thanks to David, I will certainly be looking at the use of MSI Transforms when I run into these types of installs again.
I’m the Igloo Coder and no matter how much I try msiexec /i TheIgloo.msi TRANSFORMS=BigPalatialShack.mst nothing really changes.
SQL Server CTP Removal
NUnit and your project
I was out with Slim the other day and we discussed how our current project is using NUnit and what difficulties we were running into with it. This certainly wasn’t a discussion about how we should be implementing TDD or unit testing nor is that the motivation behind this post.
The way that we’ve built included the unit tests into our solution was to create a project that contains nothing but unit tests. Our standard “functional” projects are all built with a mix of public, private and protected functions etc. The unit test project then references each “functional” project, making it’s interfaces available for testing. Each test in the unit test project calls the public interface from the “functional” projects. This is model has made it very difficult to test any private or internal functions from the “functional” projects.
What we were thinking would be a good solution is to switch all our privates to protected. This would allow us to keep the same public interface on our assemblies. In our unit tests we would create classes that inherit the required class from our “functional” projects. By doing this we now have access to the protected functions and methods in the inherited class.
The reason we got on this discussion is because I wrote a schwak of code that created line items, but ever function creating these line items was private and only exposed from a public function called CreateLines(). It’s very difficult to create a meaningful unit test when the CreateLines() function could generate close to a hundred separate line items. Unfortunately this is all in hind site now. I will be taking this lesson with me though.
Software Installations
Recently I’ve started doing the installations, into a number of environments, of our software at work. One of the requirements that we had to meet for our software deliverable was that the install, and un-install, had to be one-click. I thought of two things when I heard this.
1) How will we create single click installs and ensure that the person running the installation can’t screw up the values needed during the process?
In the end we ended up using Visual Studio to create our *.msi files. Each installation (we have 5) was customised so that the *.msi files accepted a number of parameters that include things like computer name. We can then call the *.msi files using a DOS batch file and pass in dynamic values (i.e. %computername%) into the *.msi as parameters. For a number of other values that are not installation machine dependent we customised the Visual Studio installation projects to read from an xml answer file. This allows us to pre-configure values for each of our environments. When we ship our installation “package” to the client they receive a group of files including the *.msi files, one xml file per msi, an installation DOS batch file and an un-install DOS batch file. All they have to do is double click the appropriate batch file and, voila, process runs without any user prompting.
Let me tell you that this is very handy and it makes uninstall/re-install process very fast. This is especially good when you’re doing the installations early the morning after a Christmas party with an open bar.
2) What are the reasons that a client would want to have a one-click install for a server program?
The only reasons that I’ve been able to determine for them wanting this is so that they can script the installation of a “base” server configuration. This makes complete sense to me except for one thing, our software is not part of any base server installation. Heck we even have stand alone servers just to host our software. I suppose that it will be useful if they decide to expand the number of servers that are in the load balancing cluster.
Perhaps someone out there can indulge me in my quest for knowledge.
I’m the Igloo Coder and I’m very happy that the igloo is round. It makes it a lot harder to notice that it’s spinning after a night out on the town.
Attensa RSS Aggregator
Recently I made the change away from SharpReader as my aggregating software. I was tired of having SharpReader’s tendency to error when reading feeds. At first my thought was to use the VSTO to write a .NET 2.0 add-in for Outlook so that I could read my feeds and email together.
I did a little searching on the web and ended up finding Attensa for Outlook. Being the right price (free for the Beta) I decided to download and install it. Additionally it includes a Firefox add-in that automagically detects RSS feeds and allows you to add them by right-clicking and selecting Attensa RSS – Add Feed.
I have had no problems with the stability of the software thus far. The one thing that has happened is the load time for Outlook has increased quite substantially. Before you start thinking “Oh that’s because you’re loading up hundreds of feeds”, let me say that I currently subscribe to less than 100 feeds. The load time is bearable, but it seems a little too long.
I would love to see the final version of this include the ability to group the feeds into categories and, using folders, visually display the feeds based on these groupings. The only thing that I would like to see added during the installation is a Search Folder in the Favourite Folders section that displays all Unread Feeds.
Otherwise, pretty damn nifty.
VS 2005 RTM
So I finally got my lazy ass into gear and un-installed VS 2005 Beta 2 and installed VS 2005 RTM. No real big issues here. I manually un-installed all the pieces of SQL Server Beta 2 and then used the VS 2005 Un-install tool.
I installed the Standard Edition (from the Launch Tour) and realized that it doesn’t include Source Safe. Not a big deal, but what do I use as a replacement? I’ve briefly looked at SourceGear’s product, but it looked like I needed to have a bunch of server OSes and the such to get it installed. I suppose it’s just another research project now.
Let me know if you have any suggestions.