I just heard that NetCon made a big sale to The Company, my first real employer out of college. Apparently we beat out Lucent in making this sale, which is funny because before I started at s-mart, they had just beat out Lucent for their biggest contract a top tier ISP in Australia. It's funny how the world is all connected.
One of the more decisive things I did early on working at s-mart was to write a fairly comprehensive test suite for the provisioning code for which I am responsible. Before that we didn't have any regression tests at all, so it wasn't something that I had to do, but it seemed like a good thing to do. I'd say that it's been a resounding success, because although it took me a fair amount of time to write the test cases, it's saved me lots of time in the long run. I can make changes to the base classes pretty easily, run the entire test suite and be fairly comfortable that I haven't broken anything. Not even "anything major" but "anything".
The reason I thought this was important was from my work at The Company, where we had pretty good regression tests, and my work at Company 2 where they didn't have any regression tests, and their approach to not breaking existing systems was to simply fork the source code any time they needed to make a customization. At The Company we even had nightly regressions, which meant in the morning you could see what you broke the night before. I'd like to set up something similar at s-mart, but I haven't had the free time to do it. It certainly wouldn't hurt, the regressions take a long time on the lumbering old development machine, but nightly regressions would run at some ungodly hour in the morning when nobody is around anyway.
Today, though, I felt vindicated in my approach when Andrew got Newt to write some test cases for the code that he's been working on, without any prompting from me. Even though Andrew doesn't like writing test cases, he sees the value in them, from the way that I've used them. It will only be a total victory when I get Andrew himself to contribute to the test suite, but I'll take what I can get :)
- 5 February 2009 12:11pm: Quarterly update means free lunch after. Always nice food too.
- 5 February 2009 04:21pm: Allison is whining because we don't have any spare hard drives to give her. It's getting annoying.
- 5 February 2009 05:01pm: I was just thinking Allison's behaviour would be age appropriate for my little sister... seven years ago when she was six that is.
- 5 February 2009 10:21pm: It will be good to spend a few days at The Point and not have to commute all the way to/from Wyoming every day.
- 6 February 2009 08:37am: Standing room only on the train. Nose to stinky arm pit.
- 6 February 2009 10:18am: I started saying ko again. It's weird.
- 6 February 2009 03:54pm: Mail server migration went off pretty much without a hitch but the connection to muse dropped out and now I can't update the DNS! *sigh*
- 6 February 2009 04:12pm: Got to muse. nullslice is now nullray. Your local DNS server may take a while to update.
- 6 February 2009 10:38pm: of course I spoke too soon because there was stuff I forgot... :/
- Yesterday at 06:43pm: I am going to start saying "after now" again. It's like I pick up a camera and I turn into myself three years ago.
- Today at 05:56pm: 65 dead in Victoria. How much longer before they stop saying "..since Ash Wednesday" and just say "deadliest fires in Australian history" :(
- 30 January 2009 01:36pm: so hot omg.
- 30 January 2009 06:54pm: Things always seems better after nice Australian lamb chops for tea.
- 1 February 2009 03:00pm: Preparing our attack plan for tonight's twilight parade.
- 2 February 2009 08:10am: It's February: meaning hot and humid like every year. Least. Favourite. Month. Ever.
- 3 February 2009 05:38pm: I forgot to wish Kathy a happy Groundhog Day.
- Today at 11:22am: Andrew is asking if I know any HTML monkeys. Apparently Kim has been a no show for a while, maybe we never have to see her sorry face again.
- Today at 08:40am: Kimbot rudely left herself logged in now new guy is all "I'll wait till Andrew comes in" but seriously...
- Today at 08:41am: New guy's name is newt. Half expecting him to say "noooooboydy calls me Rebecca, except my brother. They're dead, okay, can I go now?"
- Today at 08:57am: So far I much prefer Newt to Kimbot. He is so much more polite and less nerve-grating.
- Today at 02:49pm: Somebody said 40 degrees. I'd say maybe 37.
- Today at 08:37pm: thank the flying spaghetti monster that the wind and rain broke the back of the heatwave.
- 11 January 2009 05:36pm: Beach in January is hot, wet, windy and sandy.
- Yesterday at 11:28am: I'm feeling as though much of my work before hols was a bit sloppy due to my wanting to get the heck out at that time.
- Yesterday at 11:30am: I just noticed that there is an overgrown graveyard across the street from my new windowd cube.
- Yesterday at 12:07pm: I need to better organise my digital photos. Right now they are spread over six computers. At least if one dies I only loose a fraction.
- Yesterday at 12:21pm: Arguing with Kim about digital vs. film. Well. She's arguing I don't give a flying...
- Yesterday at 12:38pm: Also: it must be nice to be so sure of everything. Seeing the beauty in things that everyone else seems to have discarded is exhausting.
- Yesterday at 02:05pm: Not hungry, so for my lunch hour I took a stroll through the creepy overgrown graveyard.
- Yesterday at 02:17pm: Realising camera set to ISO 3200 after taking pictures during sunny 16 weather irritates me.
- Today at 10:01am: Narrowmindedtwat er... I mean Kimbot is not at work today.
- Today at 03:59pm: Haven't been able to see season 2 of This American Life yet... anyone know when it will hit the iTunes and/or DVD?
- Today at 04:00pm: Andrew decides to tone down his snarky comment when responding to a client. I'll be glad to see the backside of this project.
- 12 December 2008 05:37pm: Listening to Paul Simon's kodachrome on the way to the camera repair shop.
- 17 December 2008 04:56pm: DJabberd is a high-performance, scalable, Jabber/XMPP server framework where everything is a plugin... and nothing WORKS! Way to go guys.
- 18 December 2008 09:22am: This year "going home for Christmas" doesn't involve any plains trains or automobiles.
- 19 December 2008 01:15pm: Typical aussie party divided on gender lines.
- 19 December 2008 01:58pm: Steal your co-workers chrissy presents day.
- 20 December 2008 03:44pm: New WWI aerial combat exhibit at the war memorial was pretty good and reminded me of playing Red Baron in high school.
- 21 December 2008 10:16pm: Happy Chanukah :)
- 24 December 2008 08:45am: Today I am the dev team.
- 26 December 2008 09:35am: Chrissy at the beach was awesome. Now I'm going to try and find some 120 film for my Rolleiflex so I can take some square pictures.
- 31 October 2008 11:18am: Monthly birthday lunch at work. The ladies talk about weddings and the guys talk about babies. How to contribute? Linux servers are easier.
- 31 October 2008 01:27pm: Boss is going on vacation. That makes me Captain Inview for two weeks.
- 3 November 2008 04:49pm: Being Captain Inview is stressful when a misconfiguration causes the stats queue to explode and it takes two hours to clear.
- 3 November 2008 09:28pm: mmmmm good and plenties may be good, but they are not plentiful when you have to fly to America to get them.
- Today at 03:48pm: I just realised that I already implemented the feature that I am working on. Either I am just "that good", or my memory is not.
- Yesterday at 04:52pm: Even two candidates seems to be too many for a debate. Healthy democracy.
- Today at 01:36pm: Today I got to visit the colo where s-mart's computers do their thing. White sterile room with whirring fans and air conditioners. brrrrr.
I wonder why they bother teaching concurrency in computer science. There is this funny problem they teach you, involving n philosophers and n forks and a big pot of spaghetti which, if you solve it wrongly, could cause n philosophers to die of starvation. It's a well understood problem, and there are tones of tools to address it properly, most of which have been around for decades on every platform imaginable.
When I was working on parallel abstraction and timing at The Company, I went to a lot of effort to make sure that it worked concurrently. This put me in conflict with people who were too lazy to make sure their code worked properly in parallel. I even tried to make tools to make it easier for them to make code parallel safe, but no, that was too much effort, even though it mostly amounted to using a different class with the exact same interface.
In my current job at s-mart we use a locking mechanism which has an inherent race condition. Which means if something goes wrong it might corrupt data. Admittedly, the odds of that are quite low, but I don't understand why we don't use proper locking (ie. flock), which isn't conceptually any more complicated than the "simple" locking scheme that we use. In my last job at Company 2, we had a similar locking scheme, but it was hand coded, they didn't even bother to re-use the "simple" locking scheme provided by perl for systems that don't have flock.
I found this list of the The Thirteen Greatest Error Messages of All Time. I can't help but wonder if a bit more time thinking about concurrency could have kept some of these from happening often enough to make the list.
i miss you black and white; and my time in the darkroom
i never was very good at being blunt
i like how history is always repeating itself, except for the nice parts; the future always seems like a cut down discounted version of something you once remembered
i hate missing people no longer with us
i’ve forgotten more than you will ever know, but do you remember more than i’ve remembered?
i am moving to wyoming; yes really!
i hate MySQL, but if everything were postgres, it would be pretty boring arguing about it
i tasted lime in my drink tonight; it reminded me of someone special
new mexico will never be the same; before or after
product launch next monday; should be a grand crash
Kim was arguing with Andrew last week about something pointless and I had a sense of utter joy at the fact that it wasn’t me having a pointless argument with her. The more that I think about it though, the more I realise the reason Kim irritates me so much is that she is a computer. She was carping to Andrew about this silly “fun factoid” billboard on the way to work isn’t precise enough for her. “People should be more precise!” She was saying. Andrew was arguing that people don’t have to be so precise when they are talking to other people because they can understand the meaning through context. The reason this pleases me is that for a long time I believed that there were significant advantages to working with computers over with people. Computers tend to do exactly what you tell them to. This is both their greatest strength and their greatest weakness. People are more flexible, and as a result tend to do exactly what you tell them not to do. In Kim I have finally met someone who is more like a computer than a person. What pleases me is that I finally enjoy much more working with people.
At work yesterday, I got into this drawn out argument with my boss about an API that I had designed (and implemented). It was a respectful argument and in the end I think we came to a compromise that we were both mildly happy with. It is a funny thing because this one little function call seemed pretty uncontroversial when I wrote it, but it has somehow managed to draw the most criticism (Gordon suggested a change which didn’t get made weeks ago).
I hate arguing with people because whenever I look back on arguments I see how I was either too zealous in arguing my point, or give in too easily. On Friday I was arguing with Kim about macro lenses. Short version is that I made an assertion that, while true if explained correctly, I didn’t feel like arguing the point. That feels like every argument (read: every conversation) that I have with her, as she is totally unable to see my perspective, as a result I sort of intensely dislike her.
Yesterday was also Russian and I was going to bring my computer with me so that I could go to Potts Point after class instead of home (Potts Point is closer). Only when I left work I realised my computer wasn’t in my backpack and I panicked. I remembered closing the lid to my computer so that it would go to sleep, but I couldn’t remember if I had actually put it in my backpack. The only time I hadn’t had my backpack with me was when I left it at work briefly to go to the bathroom and if it had been stolen that would have meant it would have been someone at work. I was relieved when I got home and it was sitting in its place, asleep, but unmoved. I felt weird that I could have thought that someone at work could have taken it, because it is a smal company and everyone knows everyone (not that people don’t steel in those situations, but it is somehow worse when they do?).
I usually make it a rule not to get to close to my co-workers. I was hoping this might be an exception, but days like yesterday remind me that there are reasons that I have those rules. Nothing really terrible happened (in the end), but events leave me vaguely uneasy.
I was in a tall building the other day riding the elevator from close to the top all the way to the ground floor. A guy who worked in the building was already in the lift and seemed flustered and was very apologetic because only one of the two lifts was operating. I make it a policy never to be in a hurry so I wasn’t bothered. Then this lady got on somewhere (let’s just say level l0 for good measure). This seemed only to make the man even more flustery. She kept telling us that she needed to get off on level 5, in the same manner that someone reminds ones self something by saying it over and over again because it is something they are likely to forget. I was sort of torn as to whether or not to suggest that pressing the “5” button might help. When we got to the ground level, she was all “oh my gosh I missed my floor.” Again the man was apologising for wasting my precious time. I thought it prudent not to mention that I wasn’t even supposed to be in the building in the first place.
This week at work my boss responded to a client that he would pass their provisioning request on to the “Provisioning Team”. He then poked his head over the cubical wall and said “Graham, you are now officially our Provisioning Team.”
I mentioned to Kim on Friday that I was taking Russian. She asked why, in a manner, dare I say it, that might sound a bit like surprise.
I am trying to get my head around the Vista thing. Fortunately my workplace has been smart and all the windows client machines are still XP. Several of the business apps that we use, like Office and Outlook, are of the Vista generation (by which I mean completely baffling from a user interface point of view). Was there something wrong with the XP generation of software? I think personally the best feature of XP was that it was relatively easy to make it look and act like Windows 2000. I’m reading in an open source rag (so, obviously not a balanced point of view) today about how the demise of Microsoft due to Vista was a forgone conclusion because their model for software development is “wrong”. Is that really true though? I mean I remember MS-DOS 4. That turkey was a real stinker. Everyone just kept using version 3.3 until 5 came out. The stakes in the computer industry are a whole lot higher now of course, but history is not really about progress it is about cycles.
Today was my first “quarterly update” at s-mart. The very first slide had a bullet that read: “Graham xxxxx Developer Extraordinaire!”; as one of last quarters events was me starting at the company. It was nice to get the recognition. We used to have meetings like this all the time at The Company, but they were always less interesting because I was such a small cog in such a big machine. Now I am a slightly larger cog in a much smaller machine :P When I was working at Company 2 I wasn’t even invited to these meetings. It’s nice to be a person at work again.