Tuesday 28 June 2011

Brazil

After Vegas I returned to Australia with not much to work on. I proofread some of Jacob's patent apps, I went through his new matrix idea, I started building some of the stuff that we'd talked about back at ATB Software... but I didn't have anything formal to work on. I was still waiting for network access, but the company more or less shut down in the first week of December and most of my queries went unanswered. Occasionally I'd get a chirpy reply from someone in the IT department saying: "Done! There you go!" but no passwords or network details were forthcoming.

New Year passed, and so did the first couple of week of January. A full month since I had returned. Very slowly the logistics guy, Wils, organized me some flights out to Sweden to meet the team, to coincide with Jacob's next visit. The first itinerary he sent me was mental: the numbers on the flight times didn't add up and he had me routed through Atlanta. Once I got back in I had to look at it twice to discover that the flights he had booked originated in Melbourne, Florida.

Eventually, after I started to get a bit shirty about my network access, somebody in IT realized what had happened. They had indeed set me up with VPN access to the network and an internal email account, and then they sent all the information about it to that internal email. Several times. Once they put the information where I could find it I found that I could log into the network, no problem, but I had no access to anything beyond the intranet newsletter.

I flew to Sweden. Wils met me at the airport and took me back to the apartment that Jacob and I would be sharing  for my stay. I showered off my 35 hours of airports and aeroplanes and went straight to work. I was in the office by about lunchtime.

I was given the seat vacated by Åke, sharing an office with Tyko. Tyko was no problem; I knew him already, and I discovered that I had a greater tolerance for the techno music that pumped out of his computer all day long than I had expected. Åke, however, was another story, even though he was gone.

Åke's desk told a lot about the man and his work. It was filthy; covered with derelict CRT monitors, cables, mouldy coffee mugs, wastepaper, dust, and a layer of grease that I still cannot explain. I spent ninety minutes cleaning before I was satisfied that I wouldn't contract tetanus from sitting there. Åke's computer was on and unlocked, so I turned my attention to that next. He had left a thousand windows open, each one of them showing a gorgon's nest of ugly code. I carefully saved the contents of each window and closed them until I could again see the desktop of the PC. Then I shut the machine down, wrapped it in plastic, and buried it in a 12 foot hole. If we ever found a sudden need for whatever Åke had been working, on we were beyond hope.

(Alright, I lied about the hole. I put the machine in a corner of the room in case I might one day need something to accidentally-on-purpose put my foot through.)

I met the team. They seemed like a nice, if reserved bunch of guys. No overt social problems, although a couple of them were definitely capital-P Programmers. The guys Tyko said were good shared one office, the guys he said did not were in another. There was a third team, the UI guys, who lived in their own world and nobody was sure what they did... but it involved lots of code churn and without any visible results. Which is odd, you might think, for a team whose business is entirely wrapped in the visual element of the product. But they were not my problem.

I was finally granted access to the source code repository. I checked the code out of CVS, but I couldn't work out how to build it. When I asked where the main solution was... the build scripts, the make files... I was told that there was none: everybody just did whatever they had to in order to make it build on their local machine.

Which is to say, nobody knew what the fuck was happening, and if they did, they were keeping that information to themselves. It was like being in Terry Gilliam's Brazil.

I spent a day making the code I had build as best I could, but there were pieces missing. When I enquired after them I learned that they were in a different repository. I had to stand over the IT guys in order to get them to give me access. This happened three before I had all of the source code. I was shocked.

A source code repository is EVERYTHING to a team. If the code constitutes the raw ingredients of your product, the repository is the refrigerator. Even if the raw produce is low quality, you at least try to keep the fridge clean... because if the fridge goes you've got nothing. At Fjord systems, it was like they were keeping the ingredients in a series of buckets,w hich they'd stashed in the outhouse. I'd seen poor code and CM before, but this was rancid.

I spent most of the week getting it all to build in one place. Harder than it seemed: each of the four repositories had some overlap with the others, but they were not kept properly in sync. Once I was done I got IT to set up a new repository, I checked everything in and I said "Okay boys, this is the one place where you will get your code from, and the one place you will put it back." They seemed pleased with it, but it was hard to tell. In hindisght, I should have added "Try not to break it."

The code was horrible. Spaghetti and shitballs. It couldn't be saved. I said as much to Tyko, who gloomily agreed. I told Jacob, who took it pretty well. But our biggest immediate problem was the drivers. It was dangerous, letting our customers use those half-finished, barely functional drivers and we needed to fix them, stat.

I told Jacob that I thought Chucky was free... or at least he had been a couple of months earlier. Jacob remembered Chucky from ATB Software and so we got in touch with him. With Jacob on hand and in the office to hassle HR, we got Chucky sorted for a contract in days, not months, and we got his network access hooked up properly. We got him access to the new repository and turned him loose on the drivers. He worked sixteen straight hours from the minute his access was hooked up. The drivers, he said, were rubbish, but he could at least make them stable. Which he did. He did us proud.

Monday morning Jacob called a meeting of the development team. As soon as he had all of us in there (excluding those who came to work after 11am) he surprised me by saying "Aaaaand.... take it away Pike."
"Uh, what do you want me to say, Jacob?"
"Whatever needs to be said."

I took it by the horns. The product needed an overhaul and a redesign. I went through what was wrong with it, and how to fix it. I roughed out new designs on the whiteboard. I estimated about a year's work.

The team took it coolly. I was a stranger, the only non-Swedish speaker in the room, telling them that what they had been working for all of these years was wrong and needed to be done over. I worried that I was offending them. I worried that I was stepping on Anders, the new team leader... but something had to be done, and nobody else was prepared to step up. Nobody said much of anything when I asked for feedback beyond a noncommital "That looks okay." After each meeting I made an effort to talk to the other developers one-on-one, and the feedback they gave me was invariably good: "This seems like the sort of thing we need," said one of the better devs. Anders told me "We need to start over. I get a bad feeling when I look at the old code."

I started feeling good about it. I figured if this was Brazil, I was Harry Tuttle: renegade air conditioning specialist, suspected terrorist and all-round bad ass. When the going gets tough, Harry swings in through the window and fixes the problem, permit or not. He's played by Robert De Niro, so you know he is not-to-be-fucked-with.

So we made a plan. I would go back to Australia and start documenting up the new system and building  prototype infrastructure while the team finished off the new release. Chucky would begin work on a new set of drivers. Once the release was out and the infrastructure was ready we would reconvene in Sweden and bring the whole team onto the new project for build out. 

It was going to be a lot of work, and there was and obvious pessimism about whether we could accomplish any of this, but I was confident: I'd managed it before with a team a third of the size and a quarter as experienced, and this time I was going in knowing exactly what I was doing. In the eight or so years I had been a professional developer I'd yet to encounter a technical issue that I couldn't solve. It might take time or study or a shitload of pestering questions to somebody more experienced, but we'd solved every problem that came our way, every place I'd been. What I failed to realize was that it wasn't the technical problems that had proven to be insurmountable int he past; it was the people problems. And we already had people problems.

It was clear that Jacob wasn't going to be able to move to Sweden. Although I was sharing the apartment with him, I didn't know exactly what was going on until later in the week. I didn know that Jacob had been suffering from terrible migraines and that they were clearly work-related. This wasn't the easy-going, goofy Jacob I knew.

Anders and I were invited to a dinner with the CEO, the COO and another guest, Martin, who Jacob old me would be the new CTO. Since he couldn't make the move Jacob was stepping back into a similar role to the one he'd held at ATBSoft: that of a chief research consultant.

Martin was a charismatic, likeable guy from Sydney who impressed me as somebody who knew nothing at all about software development and who lacked even the barest interest in it. When they'd been recruiting a new CTO the executive staff had originally chosen Jacob over him. Now he was coming on board and Jacob would be working under him. That did not seem like a healthy position for Jacob to be in, and, with me as his chief henchman stirring up shit inside the development team, that didn't seem like a good place for me to be, either. It was clear that if shit went down... and it always does... Martin wasn't going to be much of an advocate for anything.

It was just like Brazil. The irrelevant and incompetent machinations of people way beyond my pay grade were going to be a problem for me in ways I didn't understand. It was just like Brazil, but I wasn't Harry Tuttle, the A/C fixit terrorist... I was Sam Lowry, the bureaucrat who, while trying to fix an administrative screwup, becomes an enemy of the state.

Sunday 26 June 2011

Storm Lord

I didn't think I was going to make it to Vegas.

Even getting the new laptop proved to be an ordeal. I bought it online from a Sydney retailer and, in order to expedite the process, I said I would pick it up from the depot at the airport as soon as it arrived. The individual who designed the traffic infrastructure around Melbourne Airport was surely a Genius Programmer in a previous life: the only way to get to the airport  is via the Tullamarine Freeway, and if there's an accident on the road you're shit out of luck.

There was an accident Laptop Day; a jack-knifed semi trailer. I sat in traffic for three hours until I finally reached an exit, whereupon I turned around and went home.

I went again the next day and picked up the laptop. I spent the entire following day setting it up, and then I got on the plane and flew to Vegas. Amount of code I had to demonstrate to my new boss: zero. I did have plenty of reading for the flight, though: two expensive textbooks.

Jacob collected me at Vegas airport and dropped me at my hotel. I had a shower an we copped some lunch, and then we got to work.

Jacob was--and is--an ideas man. I don't mean that in a derogatory way: he has a list of patents as long as my arm and he has a genuine talent for finding new angles on the problems of the sector. Jacob can write code and will often built proof-of-concept prototypes or small routines to  speed up difficult tasks, but he is not an engineer or an architect, and he'll tell you so. That was what he needed me for.

It didn't matter that I couldn't demo anything yet, because Jacob had a new idea of his own. If it worked, it would massively reduce the memory footprint and increase the speed of the software in a particular process that has always been an industry bugbear. We spent most of the first week working through the maths of it. Could it work? What were the limitations? The concept was great, but would it scale?

While I was there I also got to sit in on Jacob's daily phonecalls from HQ in Sweden. Management told him that the development team was in chaos. They had a deadline in March (this was just prior to Christmas) and nobody even knew what work was going into it. The team leader stepped down. Blood was raining from the sky and the Frost Giants were waking from their sleep beneath the ice.

I suggested to Jacob that, if nobody knew what needed to go into the release, there shouldn't be a release. He  himself was still coming to grips with the organization and it spoke volumes about his predecessor that the team had no idea what they were supposed to be working on. There had to be a release; but management didn't know or care what was going to be in it. Jacob very sensibly set the bar low: some cleanup and a couple of small features.

As for the supposed 'chaos'... well, the team leader had, indeed, stepped down, but the rest of it was hysteria. Jacob told me that the team had been fine when he'd seen them, two weeks ago. He appointed a new team lead and set them to work. It would take ma about a year to fully understand how the team could seem calm and organized to Jacob while the rest of management saw them as a pack of insane chimpanzees flinging faeces around the office. Both views were correct.

The second week I was in Vegas, an engineer named Tyko flew in to join us. Tyko was young, although it wasn't obvious due to the ZZ Top beard he wore (in retrospect he was probably going more for a Storm Lord kind of a look). He was quiet and thoughtful and clearly very smart. Tyko was a dyed-in-the-wool hacker, but, judging by the books he was reading, he was building an excellent engineer's skillset as well. Jacob had selected Tyko to join us for a good reason.

Tyko wasn't much interested in Jacob's new idea, but we were all interested in improving the product. I grilled Tyko on the codebase and I got more than I bargained for.

The drivers didn't work, and hadn't been maintained in years. The main application service was a resource hog, and nobody quite understood how it worked. The core of the product was a nightmare kluged together out of seaweed and snot. The database was a set of flat files that were loaded up into STL containers without any concern for paging or caching, and these themselves were copied all over memory over and over again.

Into the bargain, Tyko didn't think much of the team. He named three good developers, but he claimed that the rest of the group were humps. The smartest guy on the team, in Tyko's opinion, was Åke--who had just turned in his notice and was going across to work for the competition. Tyko said that Åke was not a good engineer, but he was apparently a genius hacker who was brilliant at solving tough but discrete problems. The 'g' word again: without having met him or seen his code, I was glad that Åke was leaving.

Tyko's words boiled down to this: the product was a pile of shit, and the team didn't know what to do about it.

I said I would take a look at it if somebody would give me access to the source code. The competing product I'd built at ATBSoft was reviewing really well, usually ranking in the top 3 products of its kind, so I was confident that I knew what I was doing.

My hope then was that I could suggest some quick fixes that the team could then refine into a plan to fix the product. My job was to be Jacob's research adjutant; I wasn't really a part of the team and I didn't want to overstep myself... but  if the product was as bad as it sounded, the brilliant and fancy ideas that Jacob and I was supposed to be building for Jacob were worthless.

At the end of the week Jacob took me and Tyko back to the airport to catch our respective flights. Jacob wasn't sure exactly what would happen next: he was trying to sell his family home so he could pick up his things and relocate to Sweden, but the US housing bubble had burst and there were dozens of brand new, unoccupied places in his town going cheap. We'd meet again in Sweden the following January and really get things moving.

Once Jacob was gone, I walked Tyko to his departure gate. My flight wasn't for a couple of hours yet. Tyko looked at me and said: "It's not going to work out."

Tyko and I had been staying in the same hotel, and we'd gone drinking in the casinos a few times after dinner. Tyko, I think, was trying to set a new benchmark for Scandinavian impassivity, but he was a smart guy and I came to trust him. This was not what I had expected to hear from him.

"You mean Jacob's matrix ideas?"

"No, I don't think Jacob is going to work out. I think one skilled developer is all he has to bring to the table." I was a bit stunned. Jacob was somebody I admired and trusted him. I knew that he wasn't much of an engineer or a leader, but he was a very sharp predictor of technology and he knew the industry inside out and he was well-respected for it.

There was a strain of naked pessimism in Tyko's tone that I'd never heard before, but which I would become very familiar with over the coming months.

Monday 20 June 2011

Back to the Future

I accepted the job that Jacob offered me at Fjord Systems, but not much happened for a while.

I didn't tell anybody at Outerlink, I just kept showing up at work while Fjord got their act together. I kept up a lively correspondence with Jacob, but I couldn't start work until human resources had sorted out the paperwork... and they took their time getting to me. They asked me for a 'salary history'; something I'd never had to do before. I figured it would be a good place to start negotiating from, though, so I made one up and sent it to them.

Time passed and a whole lot more nothing happened. One day at lunch the Butcher grilled me about working in the States. "There's no challenging work left in Australia," he lamented. I couldn't help but agree with him.

I was sick at home when the phone rang early one morning. Eventually I established that the lady on the line with a thick accent that I couldn't identify was calling from Sweden, and that she wanted to negotiate salary with me. She offered me a lot less than what I was currently making--which she was well aware of, given that I had provided her with a salary history a few weeks prior. I was confused fuddled. Were we talking Euros? Pounds sterling? Swedish kronor? No, Australian dollars.

Eventually I bargained her back up to the salary I was currently getting and she told me she would send me a contract.

Time passed and nothing happened. I became more and more concerned about my poor productivity. Surely somebody had noticed how slow I'd gotten? At my job with ATBSoft I would write more code in a day than I was now writing in a week.

Eventually a contract arrived. I signed it, sent it back, and... nothing. I didn't have a start date and I didn't have a reciprocally-signed copy. I kept working at Outerlink and I wondered if I had hallucinated the whole thing... but no, I kept receiving email from Jacob. He was still based mostly in the US and he didn't know what the holdup was.

I got on the phone with HR and asked what was going on. "Oh, I have your contract here. It's been sitting on my desk for weeks."

We agreed on a start date, and I wrote up a letter of resignation for Outerlink. I'd been there for barely six months and I felt bad about it--I liked the people and I knew that it was expensive to recruit and train a new developer. I was the second developer to resign in that timeframe and I knew they'd been having a hell of a time replacing the other guy.

I couldn't help but remember that the last time I'd been in my manager's office with the door closed it had been for a dressing down about using the flexibile hours I'd been promised a few months prior.

"I hope that's not what I think it is," said my manager, indicating the envelope in my hand. He looked genuinely unhappy. "I'm afraid it is."
"You can't leave, you're the guy who gets things done!"
I gave him my letter. He read it.
"Would you stay if we offered you more money? I can do that, now that we know what you're capable of, and everything..."
I couldn't quite believe that he thought I was working so hard for him. "Um, no. This isn't about money... this is the work that I want to do."

I broke it to Sinclair first. He took it personally. "This is about the people, isn't it? This is personal." I felt terrible and I told him that it absolutely wasn't. I think he believed me.

The rest of the team had mixed reactions. The Butcher approved. Chop was thrilled for me. Chitra quietly wished me luck. Ross sniggered about how long it would take to train up a replacement.

In my couple of days, Outerlink hired a contractor to pick up some of the slack. He was wild and woolly and bore a fair resemblance to Doc Brown from back to the future, so the team started to refer to him as The Professor.


The Prof would be immediately picking up some of my workload, so I did a hand-off to him. I spent two days locked in a conference room with him, most of which time was spent listening to him describe his exploits at his prior job. I don't know why he felt the need to impress the guy who was leaving, but he failed to. The Prof espoused everything I disliked about the way the software business had been heading: writing inefficient, resource-hungry code with out-of-the-box tools that don't scale. He described to me in excruciating detail how, at the start of the project, his team was told that they could never get their app to perform using that methodology, and when they were done with it it didn't... until they quadrupled the number of CPUs running it. This, he cited as a victory.

I kept telling myself that I didn't care, it wasn't my problem.When my manager asked me what I thought of the Prof, I could only say "Keep him away from the server." But Doc Brown was a good sign. I was leaving the past; all this old hat stuff and heading for a research gig. I was indeed going BACK TO THE FUTURE.

I finished up, and Jacob had the logistics manager at Fjord Systems draw up some travel plans for me. "I'm flying you out for two weeks," he said. "So we can get everything rolling."
"Sweden must be cold this time of year, " I said. It was the start of December. "I'll have to buy some long underwear."
"Sweden's cold, but you don't have to worry about that just yet," he replied. "We're going to do the briefing here at my place. In Vegas."

I was the happiest I'd been pretty happy with the way this was shaping up. I ordered some very expensive technical books from amazon, with expedited shipping, so that I could really  jump into the research end of things. I wanted to be able to demo some ideas once I got over there.

Then was when my laptop died.

Looking back on it, I already had all the information I should have needed about how things were going to turn out.

Tuesday 14 June 2011

The Hours

I was a bit wary, but I told Vikram I was interested in working for him. he asked me for a resume to show the others in the company, which concerned me a bit. you don't offer someone a job and then ask for a resume in any reality that I had previously been a party to.

Chucky hadn't started working yet for them yet, although they had offered him a job. He had his own reservations about them.

I continued to work for Outerlink. My productivity fell and I became worried that somebody would notice, but then nobody else seemed to be producing much, either. Chop and the Butcher were both working on large projects that had blown out their timelines. We kept having the same arguments about the architecture for the new system.

Vikram, meanwhile, drip-fed me information about Sonar Security. The company was run by a group of PhDs from around Australia and in the States. This again set of alarm bells, but I reminded myself that Harj had been a PhD and he'd been great. Still, it seemed to me that Chucky and I were the only people who had commercial experience, and that we would be doing the bulk of the work (Vikram was going to chip in 'a bit' as well) while the rest of the guys published papers and took all the credit. Still... Outerlink was boring.


Vikram was also hedging about the office. There was one, he claimed, located far outside of the CBD, but he wouldn't give me the address and he could never quite manage to set up a meeting for me there. This did not stop him from ringing me up and saying "So, can you start on Monday?" I hadn't seen a contract and we hadn't even spoken about salary.

I wrote to Chucky in Florida, who had independently decided that Sonar were a bunch of lunatics. He sent them a note to say that he was out, and I did the same. Arune was stunned, shocked and puzzled by this. "That is so weird, both of you guys backing out at the same time."

The drudgery continued. Most of the upstairs crew used to eat lunch in the office between 12:00 and 12:30pm, but a growing group of us would head out to a local strip mall in search of food. Because there was almost nowhere in walking distance, this made lunch a bit of a mission, so we would take a full hour and work back until 5:30 to make up for the lost half an hour. Most of us did this anyway. These lunch missions soon drew the ire of management: apparently, Downstairs had seen us taking these long lunchbreaks and grown resentful. This despite the fact that we were making up our hours... and then some. We were on salary and they were paid hourly; nobody upstairs ever got paid overtime. We were instructed not to take any more hour lunches.

Of course we laughed at that, and the very next day (a Friday) we took an hour and a half. That afternoon we were each called into the manager's office and individually dressed-down. I just stood there and took it, even though I distinctly remembered being told that work hours were reasonably flexible when I had started, only a few months prior. After that everybody was scrupulous about taking half an hour for lunch... and about leaving at 5pm on the dot. Nobody was going to work unpaid overtime after that.

Petty as that was, I felt like I was going to die. I felt as if the hours of my life were being prized out of me with tweezers, one by one.

It was about then that I received an email from another old acquaintance from Florida: Jacob Derrick. He had been made the CTO of a Swedish rival of the place where we had previously worked together. Jacob said: "Hey Pike, you remember that neural network project we talked about last year? If you still want to do it, I'd love to have you come work for me."

When I told him I was interested, he asked me for a resume to show to the others in the company.

Monday 13 June 2011

Upstairs and Downstairs

Outerlink was very much an upstairs-and-downstairs place. Literally. Management and engineering were upstairs; ground floor was admin and the factory line. 

The team at Outerlink were a nice bunch of guys. There were no psychopaths or out-of-control egos, or even any particularly weird behavioural quirks: just a bunch of very-nerdy-but-well-adjusted guys. For the first time ever I was in a team composed mostly of people my own age. All told, the team at Outerlink demonstrated the best combination of talent and relevant experience experience of anywhere I had yet worked.

The team lead, Sinclair, was well-spoken and meticulous without quite being anal retentive. There was Ross, an older bloke who'd come with the building. He liked to snigger at the decisions that had lead to problems in the application , even though he had been party to them. There was the Butcher, who remains one of the most talented programmers I have ever worked with. Sheer boredom drove him to use his powers for evil, not for good: he made everything as fancy and as obscure as he could because, in his own words, he was 'bored with writing the same for-loop.' Chitra was very quiet. As the only female on the team,  she was of course was assigned the task of writing test scripts. Chopper was a huge and very sociable guy who lived near me. We socialized occasionally: it turned out that he knew a girl I had briefly dated, and that he'd been a member of my gym. Chops always had two or three girlfriends on the go, and complaints about all of them. 

Work was dead boring.

The codebase wasn't nearly as bad as I had been lead to believe. It was stable and sensible and the application performed very well. The only problem was that it was very manual: a lot of the base classes were under-featured and we had to rewrite very similar code every time we did some work in the server. It took a long time to get anything working, but it never really felt as if I had to hit myself with a hammer to write sensible code. I wrote some template classes to make this easier for myself, although I don't think anybody else adopted them. 

I did have its share of peculiarities, mind. A few of the smaller external modules were written in Python, because some former engineers had been enthusiasts for it, and some strange infrastructure had built up around that, but that didn't bleed into the rest of the codebase. The garbage was kept separate. There were also so  strange ideas in evidence which had come about in the earlier stages of the app, when development was directed by the hardware guys, but again, it wasn't a major problem. 

OuterLink had some new hardware was in development, and the software team, were supposed to be deciding how we would approach  it. We would have boisterous meetings every monday during which this was the major topic of discussion. Most people agreed that we should rewrite, but nobody could agree on which platform to use. I was the only one in favour of transforming the current codebase to rectify its current shortcomings and meet new requirements: aside from the change of hardware, the new system would have very similar properties to the current one.  Sinclair refused to make any decisions and the arguments went in circles.

Outside of the work at hand, the coffee machine provided the main focus for conversation. Its behaviour was of great interest to us, and morning coffee breaks were almost a formal institution. We would take turns in providing beans for the machine, and the crowd was merciless to anybody who brought an inferior brand.

It was  dead boring. 

I spent a lot of time reading my email and fretting about my lack of productivity, but I just could not find any enthusiasm for the work whatsoever. There wasn't much to learn. Every task was grindingly slow to unfold and utterly unchallenging. I was constantly reminded of why I had left Australia in the first place, and I started to wonder why I had come back.

I was still settling in when my friend Chucky from the States wrote to me asking for a reference for a job, and  of course I said I would give him one. The job would see him working remotely for a company based right there in Melbourne: a startup called Sonar Security.

Vikram from Sonar called me at work, and I gave Chucky a glowing half-hour reference. Vikram seemed surprised that Chucky had a reference from someone local, so I spent a bit of time explaining how I had worked with Chucky before.

I was assigned a defect fix in one of the Python modules to look at. After a bit of investigation I learned that everybody else on the team had tried to solve it and failed, and now it fell to me, the new guy. The defect was almost impossible to duplicate on a high-spec developer machine, but it was apparently preventing the company from selling the module. I didn't know any Python, but I had no choice but to investigate.

I spent a few days poring over the python and trying in vain to duplicate before enlisting the help of tech support. One of the support guys was able to demonstrate the problem on his own machine for me and I noticed that the bug jammed up our server application, not just the module. The bug was in the server. I took this finding to Sinclair. I wanted permission to remote-debug onto the tech support engineer's machine so that I could find out where the issue was, but Sinclair had a better idea: write a program to hammer that part of the server see if that would cause the issue. Bingo. I found the problem immediately: a deadlock. The fix was easy, but I couldn't work out the intent of the code I was fixing. The problem behaviour looked deliberate. I spent half a day looking at it with the Butcher, who had written the code in the first place, and eventually we decided that it was simply an oversight. I shrugged, made the fix and checked it in without any further hesitation. 

A week later one of the owners of the company came to personally thank me for fixing the bug. Now he could sell the module and make more money. I didn't feel like any kind of hero: I'd had to get tech support to show me the issue and Sinclair had found a way for me to debug it. I was still bored.

Meanwhile, Vikram from Sonar called me again. And again. And emailed me whitepapers. And an essay that he'd written for his church group. He wanted over-the-phone advice about how to build his system, and I was too polite to refuse. I admit, I was also starving for interesting technical matters to talk about, and what Sonar wanted to do was thrillingly ambitious... not to mention dangerous. 

On one occasion, Vikram called me at 10pm to ask me to estimate some tasks for him. He would then present my estimates at a meeting at 8am the following day. When I pulled some numbers out of my arse he said "Great; are you prepared to sign off on those?"  "Sure," I replied, hoping it would get him off the phone. I didn't work for him; I'd never even met him. I didn't care.

The next time he called, it was offer me a job.

Wednesday 8 June 2011

Home is the Hangman

I returned home to Australia permanently right before Christmas of 2006.

I took some time to get reacquainted with my homeland, going on some roadtrips, attempting to surf (it had been so long that I had forgotten how poor a surfer I am) and generally getting my life in order. My final manager from ATB soft, Sherman, approached me about working remotely and after I didn't say no, a contract materialized in my email. I hedged and delayed for about six months until he retracted it: I didn't want to work for him anymore.

Soon I started applying for local jobs, and found it to be miserable: there was less work going than when I had left in 2001. The work there was less interesting than before, and salaries had been falling steadily while I was away. Meanwhile, the cost of living in Australia had been skyrocketing. It was ugly out there.

I did some meetings with various people. A friend of the family who wanted to start up a startup, some guys who worked for a bank. The startup was too nebulous for me to take seriously, and the bank guys basically told me I'd be bored stupid (but well paid) if I wound up working there. They described me as a 'technologist', while they themselves were... well, they didn't way what they were. Paycheque Cashologists, I guess.

I sent out some resumes, with little enthusiasm. The job I'd let go for ATBSoft was much more interesting than anything else I saw, but I couldn't bring myself to work for them again. I got some bites soon enough.

The first interview I did was for a big contracting company. I did well on the initial interview, but I flubbed the subsequent testing round: I hadn't done any kind of written test since leaving college and I was unusually nervous. I'd never been into a written test completely unprepared. I have a distinct memory of  opening the booklet with numb fingers and immediately being assailed by vertigo. I couldn't read a word of it! It took me a couple of minutes to realize that I had the booklet upside down. I think it's the only test I've ever flunked.

I did another interview for a small company, Outerlink,  who did most of their business in specialized hardware. The software that ran on top of it was a fairly vanilla client-server RDBMS system, much like the one I'd worked on at my first job, and the people there seemed like nice, competent guys. I did very well on the test and I suspected I would get an offer when the manager decided to show me around the premises afterwards, with special attention given to the coffee machine.

Outerlink soon called me back and asked me to a second interview, so that the owners of the company could meet me. Again, pleasant and competent guys (one technical, one not). The technical one of them became a bit obsessed by cultural differences between working in the US and Australia.  I actually had to give a formal answer to the question: "Do you eat pizza?" Of course I answered "yes." I do like pizza, although it has never been a staple of my diet. I am a meat-and-potatoes man, and pizza is mostly dairy.

I became dispirited with the process, and winter was coming. A vagabond friend of mine persuaded me to travel up to Byron Bay with him for a week of sun, surfing and girl-chasing. On the second day I badly sprained an ankle, which put paid to the latter activities. I was looking lying on the sand, looking out at the waves, and finally starting to relax a bit when Outerlink called me on my cellphone to offer me a job. With a heavy heart I accepted. They invited me to come in and sign the contracts, and the said that I should have a look at the codebase first to see what I was getting myself into. That gave me some misgivings, but I told them I would be in later in the week when I returned to Melbourne.

The contracting firm called me to tell me that I had almost made it, but not quite, and to wish me luck. I told them I had already accepted an offer. I went out to Outerlink and we took care of the contracts. I refused their offer to check out the codebase first: I needed work, and I knew that if it was truly horrible I would have to refuse.

The same day I received a call from a recruiter who had lined up an interview for me with a video games company. This, finally, was an opportunity that I was excited about. New technology, fun projects. The recruiter warned me about long hours and low pay, but I said I was prepared to accept that. And I was.

I went to the interview on a Friday. I would, years later, discover than one of the guys who tested me there as an infamously brilliant and mental boy-genius fixture of the Australian games dev world, but he seemed like an okay guy in the interview. Not only did I do well in there, but I had fun talking to the guys about the process and particularly about the technology, and I think it showed. When they asked me what kind of salary I was expecting, I told them that I had an offer on the table already, and for how much. I knew it was high for a games developer, but it didn't feel particularly high compared to what I had been making in the US and I figured we could use it as a starting point as they bargained me down.

As soon as I said the number it felt as if the air had been sucked out of the room. They thanked me for my time and I was swiftly ejected from the building.

I had the weekend left and then it was back into the trenches: my first day with Outerlink would be the following Monday. I was already bored.

Monday 6 June 2011

Unbound

When I was a kid, I wanted to be a mad scientist.

I didn't particularly want to rule the world, or destroy it... I wasn't thinking about my ambitions that deeply. I wanted to make stuff, and the stuff I wanted to make was spaceships and killer robots and  giant lasers and computers that could think. That left me two options: science fiction author or mad scientist.

I had some other ideas, too, but when I turned ten and I was prescribed spectacles my ambitions to become a fighter pilot were dashed, and after some consideration I decided that I would be satisfied with becoming a recreational SCUBA diver if I got to make stuff in my real job.

I think I was eleven when I asked my mother to enrol me in a computer class at the local community centre. One day a week, I got to sit in a room full of Commodore 64s and learn how to program in BASIC. My recollection is hazy, but I think I was the youngest person in the class. The work itself was very low easy: arithmetical operations, reading input from the keyboard and displaying text on the screen, conditionals and gotos. I learned just enough that I could start writing text adventure games in the mode of ZORK and HITCHHIKER'S GUIDE TO THE GALAXY. None of my games went more than four screens deep. In one of the games, you were a Navy SEAL and in order to complete your mission you had to type in, verbatim, "RETURN TO RECCE SPOT, SET DEMOLITION CHARGES AND SWIM BACK TO RENDEZVOUS POINT FOR EXTRACTION."

After I completed the programming course, I enrolled in an electronics unit. You need hardware to build a killer robot, right? Electronics basically consisted of assembling circuits out of a Dick Smith book. It was fun while it lasted, but the interesting circuits always required components I didn't have, and I found it very difficult to be independently creative with what I learned there. I knew what resistors did, but I couldn't understand why they were necessary. Needless to say, none of the  gadgets I tried to invent on my own ever worked. I think even then it was clear that I was a Software guy.

Not too long after that my father decided it was time we owned a computer. I was puzzled as to why, but delighted all the same. With much ceremony, a man arrived at our house to set up our first system: an IBM PC compatible XT, with a 16 colour EGA monitor, 640 KB RAM and a 10MB hard drive. This beast of a machine was powered by an Intel 8088 CPU that could clock up to 10 Mhz in Turbo mode.

Event hough I hadn't been aware of what an IBM PC was prior to that, I loved the machine, which came fully loaded with all kinds of games as well as boring applications like MS Word and Lotus 123 and Paradox, but I was a little disappointed that I couldn't write BASIC programs on it. The command prompt LOOKED like BASIC, but you all you could do was annoying file system stuff there.

I very quickly decided that I wanted to buy an Amstrad PC-1512. It was even then an old machine, much lower spec than the XT, but I wanted another, different computer to play with... and I wanted it to be exclusively mine. why, specifically, the PC-1512? Because it was cheap and I thought I could get one. I have little doubt that my 'fun' with it would expired within a month. I would then have pulled it to pieces and there would have been no hope of ever putting them back together. I think my parents knew this, too. One day I'm going to own a dog named Amstrad, though. Or, maybe, a goldfish.

I eventually discovered that BASIC was an application you could run on any IBM compatible PC, and in fact I had two versions: GWBASIC and BASICA. I wrote some more text adventure games, and I bought a couple of computer magazines which contained source code for various programs. I spent hours typing in that source code, then hours more getting it to work (most were written for Commodore 64 and wouldn't work. Some wouldn't on any platform.) The resulting programs were invariably lame: the fun was all in making them work despite their puzzling use of GOSUB and the annoying REM statements that didn't do anything besides trying to explain what the program did.

The new PC wasn't all wine and roses. We had hard drive trouble and the poor bloke who sold it to us kept  having to come over to the house to try to work out why it had stopped booting properly and to run Spinrite diagnostic software over it, which would take upwards of 12 hours to examine all 10MB. After a while he replaced the drive, but that wasn't the end of the trouble... because I was now taking an active interest in what was broken and what I could do with it. I don't think I realized it, but I was starting to have more fun learning to fix the machine than I was playing games on it. I remember experiencing quite a bit of excitement the first time I ever saw a virus (Bouncy Ball), and in fact I recall waiting long periods of time sitting in front of the computer, waiting to see if it would manifest.

In year 9 I changed high schools, and we were required to take computer classes at the new school, which had a lab equipped with a couple of dozen BBC Microcomputers--even then, these were outrageously obsolete. I can't remember what we learned to do on the machines, but I do remember enjoying several nerd-a-licious hours hacking into other classmates' accounts and finding some very primitive games like Frak! that were loaded onto parts of the new work that I don't think we were meant to be aware of.

In year 11 and 12 we got to choose our classes, and I chose Information Systems. In this class, held in the new PC lab, we were taught to program in Pascal. That was pretty exciting for me. It wasn't much like basic, and I learned many good lessons there about primitive data types and procedural programming. I still have vivid remember the two Info Systems teachers teaming up to demonstrate arrays to us using a classroom method that I can only describe as Interpretative Dance. As a result of our snickering they refused to teach us about pointers, and as a result of that, we never really produced anything much more interesting than the BASIC programs I had written years prior... but, boring as they were, those Pascal programs were more typesafe and better structured.

We learned SQL, as well. I didn't enjoy it much, but it was easy. It wouldn't be until I started my first job that I would come to realize how important it was. My Info Systems class also spent some time learning a 4GL, but I don't remember which one. I don't remember anything else about it at all, other than that I hated it.

There were no programming tasks in any of the Information Systems exams, and I don't believe there were many in the assessable assignments, either. The subject was easy, but it quickly became a huge drag. I preferred English, Art and Chemistry, which were more more fun or more challenging. I wanted to make stuff, and the stuff I was making in Info Systems was boring. I took mathematics, to, and although I disliked it I was also more interested in it. In my marks it came second only to English.

By this time, if you asked me what I wanted to do when I grew up (I was in year 12, and the question was  frequent), I would have told you that I didn't know. 'Computer programmer' was still on the list, and I did attend the open days of various university computing departments, but by now I was beginning to think that I should be a painter. Or a sculptor. When it came time to choose a set of University degrees to apply for I spent a lot of time making a list, because Mad Science wasn't on offer anywhere that I could see. The result was probably one of the stranger lists that a student with decent marks submitted to the state assessment board. Computer science was on there, but I also applied for a number of fine arts programs. And straight science. And an obscure program in the Medical faculty.

Our results were published, and I did pretty well, without setting any records. I had aimed for what I thought was the maximum score required for any of the subjects on my list, and I beat it by a small margin... but the medical degree went up a slightly bigger one. The program I was enrolled in was one that would see me graduate as an Art Teacher, and the entry criteria were low.

I spent about ten minutes thinking about this before I decided that I did not want to be a teacher of any sort. I'd spent 12 years at school following three years of kindergarten, and I had at least another 3 years of University ahead of me... that was more than enough time spent in educational institutions. Besides, I remembered how we treated the Art teachers.

I changed to a different degree at a different University. This one had not been on my list of preferences at all, and I'm still not sure why I suddenly liked the idea of it... but my marks were more than sufficient to get me into the course and it seemed like a good idea at the time. Computer Science constituted about half of the coursework, with the rest from psychology, logic, philosophy and linguistics. I really had no interest in these latter subjects, but I guess I was hoping that all of them in conjunction would lead to some kind of mad science.

It never did, although there were many times coming during which I would, indeed, question my sanity.

Wednesday 1 June 2011

Shave and a Haircut

First thing in the morning on the first day of my two weeks' notice, I went to my interview at the company Across the Bay.

I had 30 days to find new employment before I was foul of the IRS.

The premises of ATB Software could best be described as 'dingy'. I waited for half an hour before the lady in charge of Human Resources, Marge, was ready to see me. While I waited the receptionist grilled me about various topics. The receptionist's interrogation aside, this was the first and last time I worked at a company where they had a man answering the phones. I knew we were off to a weird start.

Marge was also the first human resources person to interview me. She asked me some general questions about my career and eventually she came around to my visa status: "I see in your cover letter that you mentioned something about a work visa? What, uh... what does that mean, exactly?" My heart sank. Even as I explained what it meant, I knew wouldn't get the job. I figured that Marge's ignorance about the topic was the only reason I'd even gotten an interview at ATB. All the real companies already knew how these things worked and had ruled me out.

Marge shipped me off to the CTO, Judd, and he asked me some more technical questions, but he didn't have a background in development, either. After a while he admitted to me that he was stalling for time--the other programmer, Benjamin, had been delayed on his way back from New York and my real interview wouldn't begin until he arrived. They only had one other programmer? For reals? Judd had an enormous Army of Darkness poster on the wall, and we started talking about this. Another first: I had never worked in a company that had adopted 'nerd culture' the way this one had.

Eventually, Benjamin the Programmer arrived. He seemed like a smart enough guy, but for some reason I just could not communicate with him. The questions he had covered a number of topics which I had no experience in, and I told him so when they came up. "Fine," he said, jumping ahead and leaving a third of the test unanswered. I left the interview with a sense of relief--what a weird place. I was glad I wasn't going to wind up working there.

Back at the office it was madness. The Chosen Few were preparing to visit the north east to see if they could or would move up there. Bashir was not among them: he had been made an offer, but he said that his children suffered from some kind of anemia (I can guess what sort) and they wouldn't fare well in the colder climate. Rumour was that he was about to make tenure at the university.

The rest of us were doing exit interviews and using company resources to look for new jobs. The HR lady was annoyed that I hadn't been available to do my exit interview first thing that morning. She was visibly surprised I told them I'd had a job interview, and even more so when I proceeded to describe what it had been like to work there for the last fourteen months. I was polite, but I saw no reason to mince words.

I went back to my desk and started calling up some competing organizations. I actually got through to some people with the ability to hire because my soon-to-be-former employer's name came up on caller ID. Gavin Ramsay had both said that we had been made redundant, not fired, and were welcome to apply for transfers to any other part of the organization, so I got in touch with the database group from our department (the group who had repeatedly failed to produce anything). The manager I spoke to there was surprised to hear from me, and even more surprised to discover that I wasn't as mentally defective as Bashir and Abhiraj had led her to believe. She asked me for a resume.

Vlad was offered two jobs in quick succession. He took the better one and recommended me to the other, a local contracting company, but they wanted a Visual Basic programmer and I was a C++ guy. I remembered that incident particularly well because of the rudeness of the Irwin, the manager I spoke with. Sure enough, I would cross paths with him again later.

Donna knew an immigration lawyer, so we went to see him. He told me that I had three options: find a new job, get married, or leave. I had thirty days fromt he end of my notice period to get out before I ran afoul of the INS. When I started talking about selling my car Donna burst into tears, so I figured I had better find that new job.

ATB Software called me back and asked for references. I was annoyed that they were wasting my time, but Eric had offered to give me a one (although it was against company policy), so I gave them his details. I didn't know what kind of a reference I'd get from him, and I didn't much care: ATB Software was weird and I didn't want to work there.

Meanwhile, Bashir was supposed to be making arrangements to dispose of the fixtures and fittings. I couldn't have cared less, but enough people were interested in secondhand office gear that a slew of emails about the topic washed up in my mailbox on a daily basis. Bash was evasive: first he said that it would be auctioned off, then he said that some guys from Facilities were coming down from head office to sort it out. The facilities guys duly arrived, went for a liquid lunch with Bash, and left without making any pronouncements on the topic of their visit. Bash instead told us that the furniture was going to be  given to charity. He had every fixed asset tagged and refused to discuss the matter further.

The manager in charge of the database group called me up. She told me, choosing her words very carefully, that she had taken my resume and gone to have a word with Gavin Ramsay. Ramsay had told her, in no uncertain terms, that nobody he had just let go would be hired back into his department under any circumstances.

Our two weeks' notice passed and our access to the building was revoked. The Chosen Few were flown up to Massachusetts for some kind of orientation program. Everyone was out except for my friend Reg, the sysadmin, who had been asked to stay on for an extra week to tear down the IT infrastructure. For this reason Reg was in the office very early in the morning on the first day when everybody else was gone,  and was thus able to witness Bashir roll up to the office first thing in the morning with two rented removal trucks. With the aid of a dozen of his cousins, brothers and uncles, Bash proceeded to fill the trucks with every single one of the freshly-tagged fixed assets that was not in the server room.

Not only had Bashir succeeded in getting his site shut down and the vast majority of the staff under him laid off, but he had then stolen all of the furniture. Of course the company still felt that it could use a guy like that, even after he declined their offer to relocate up to the Massachusetts with the rest of the Chosen Few. A new position was found for him. Bashir was rewarded with a payrise and a promotion.

I received yet another call from ATB Software. They were very interested in hiring me, they said, and I was not to take any drastic action like accepting another job or leaving the country. The only delay they had was in checking my references. Eric was up in Massachusetts undergoing orientation at Gavin Ramsay's main site, and had not been able to receive any calls on his private phone number.

A competitor, also based in the north east, got a hold of my resume and offered to fly me up for an interview. Suddenly I was feeling like a bit of a rockstar, although Donna told me that the man I spoke to there was a toad who was mainly looking to steal trade secrets. I would probably have gone anyway, but ATB Software suddenly made me an offer.

I thought long and hard about it. I was stressed and miserable and I wanted to go home to Australia. I had only planned to be away a year or two, and it was something like 26 months by then. I didn't want to work at the ratbag place where I had undertaken my interview. 

But I didn't want to break up with Donna, and I didn't want to go home defeated. I decided I would give it a try for a few weeks. If I didn't like it, I could still leave... but I would be doing so on my own terms.

I had no idea what I was in for.