MSN: plicease@hotmail.com
e-mail: plicease (at) wdlabs (dot) com
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 :)
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"⋘note 1⋙ 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⋘note 2⋙.
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.
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⋘note 1⋙. 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.
Yesterday I
I’m sorry I left myself logged in to IM for like two days but had been so busy that I didn’t sit in front of my home computer for that whole time. Sorry if you sent me messages I wasn’t ignoring you! Promise! I will endeavour to log myself out next time, and actually be in front of my computer when it says that I am.
Kim at work told me that I could never do or say anything to surprise her. At first this made me angry, but now I don’t really care. It occurred to me that nothing she has done so far has been terribly surprising. meh.
I had an epiphany this morning about how to reorganise the provisioning code. I was glad that I had left work early yesterday rather than agonising over it, because apparently all I needed to was to get a good night’s sleep and a fresh perspective. I realise though, that I love my job, but in some ways it isn’t as challenging as when I was working at The Company, especially that period when I was working on parallel abstraction. It’s hard to compare with accomplishing the impossible.
Today we had lunch at the pub, which was fun, except they forgot our order and then pretended that they hadn’t. There is this girl who is always flirting with Andrew. I can’t remember her name.
I’m looking forward to special visitors in March.