2015-04-22 - Header

Exclusive Membership

I still have to catch up with a few posts rattling in my brain; had a fun 24-hour challenge at work last week that I need to write about, and this week has left me with some thoughts to put to paper* as well.

But for now… I just have to share the awesome team I am a member of.

2015-04-22 - Blackbeard

We are Team Blackbeard!
(named for our fearless(?) team captain)

*Please print out this post before reading, for the sake of accuracy.

2015-04-09 - Header

Campaign Monitor – 8 Weeks In

I can’t quite decide whether to say “I cannot believe it’s only been 8 weeks” or “I cannot believe it’s been 8 weeks already”. Both interpretations have merit.

The change was unbelievably effortless. One week in I felt at home, two weeks in I felt like I could do something to add value, and three weeks in I was throwing all my crazy first ideas into the ring without regard for what people might think. It is liberating in the most wonderful way.

Despite diving in the deep end of the Web Technology pool, learning all the required AngularJS, ASP.NET, and how-to-order-my-coffee-online has felt somewhat effortless as well. I should have gone head-first into Web 2.0 long ago; the first four weeks at CM got me further along than two years of miscellaneous dabbling in my own time.

And the first four weeks flew by; I was holding off for the longest time fearful of the draining commute to Sutherland, but I think I probably should have made the call sooner. Alas, that is the nature of Unknown Quantities; even things that look great on paper are a little scary when they require getting out of one’s comfort zone. Had I known how much I was going to enjoy the work itself (to the point of dabbling and studying quite significantly in my own time as well), I would have given it a second thought.

And then, we moved to the CBD and things got better still.

2015-04-09 - In The Clouds

Cozy offices turned into a spectacular office. It is easy to get a bit blase about the view 38 floors above Sydney. The first week I’d take a few minutes to admire the view before starting work, but now that tends to come later in the day. At some point my mind will briefly not be stuck with a problem and I’ll catch the view, and then it catches me.

The view over Hyde Park and the Harbour are strangely disorienting. The perspective does strange things to my sense of distance. I could swear Darlinghurst is but a brief stroll away from Hyde Park by the look of it from up here. And everything looks like a game of The Sims. It feels like I somehow should be able to control the weather. Maybe there’s a switch I haven’t found yet. I should ask the OPS team.

The days go by in a pleasant productive rush. After some experimenting, I’m finding an early commute in and out most comfortable. I get up at 6:50am, have a quick shower, get dressed, 7:05am when I feed the cats, 7:15am I am stepping onto a train to work at the station.

That may sound like a rush, but I genuinely have little to do before heading out. Breakfast and lunch are both catered, so I have really nothing to prepare for.

I walk into the office at about 8:15am, boot up the laptop and have a quick look around the HipChat rooms for anything interesting, and go through any overnight emails. By about 8:20am the internal coffee ordering system comes on, and I punch in my large cappuccino.

Breakfast is 8:30am, featuring bacon and eggs, and whatever else our amazing chefs throw into the mix. This week I have been unable to resist the pancakes with poached plums. Between 8:40am – 9:10am I get back to whatever problem I left behind the previous evening.

Why 9:10? … well… that’s when we have our daily 10 minute stand-up with the team. A quick run around of what we did the previous day and what we will work on today. A chance to keep the team in the loop and to ask for help or clarifications where needed with broad input.

Then 9:20 through 12:30 rushes by faster than I can believe. A mix of learning and programming, leaning more and more towards the latter.

It is easy to tell when 12:30 comes around because by 12:35 the floor is almost empty. Many rush to try and beat the lunch queue.

Catered lunch is amazing. More amazing than I could have realised. It obviously saves some money (more or less depending on a propensity to buy lunches otherwise). But more than that, my lunch has never before been this varied. I’m probably eating healthier even if it is a tad more than I perhaps should… more gym for me.

And that is not uncommon either; there are various groups of employees that go running together or see a trainer before lunch, etc. On the flip-side, there is a page on the Wiki that chronicles the weight-gain that people experienced upon first starting at Campaign Monitor. The chefs are hard to resist.

Then, after lunch, more programming till about 16:45 which is my cut-off to make it on the last not-completely-packed train back home. Soon I will start experimenting with taking a gym class in the city before going home so that hopefully I can catch a train after the peak eases off again on those days. Luckily there is a lot of flexibility in the hours, as long as I make the 8-a-day excluding lunch, and I am available for all the important meetings.

Somewhere around 14:00 there is another round of coffee orders, and most days there is some kind of pastry or dessert on offer as well. Today was an apple crumble that did full honour to its name; I forgot my cutlery and it resisted my attempts to eat it most valiantly.

2015-04-09 - Hyde Park Below

Four more weeks and I’ll hit my 3-month review point.
But I am sure the 6-month mark will arrive in just another blink or two as well.

Everything about what the job demands and gives back just fits together perfectly to keep me energized and motivated, and feeling on top of the world in all the senses possible.

2015-03-30 - Header

The Dutch and Chocolate

Today a parcel arrived from the Netherlands. Which means it must be Christmas, in a way. My parents send out a shipment of Dutch goodies once a year, and sometimes it gets here in December, but usually it is easier to aim for another less-postally-congested month.

2015-03-30 - Step 1

Chocolate features heavily in the parcel.
There are some reasons for this.
Not good reasons, but… good enough for me.

2015-03-30 - Step 2

I have no idea where historically/culturally our predilection for starting the day with “beschuit met hagel” (crispbakes with chocolate sprinkles) comes from. But I dare you to find a household in the Netherlands that doesn’t have at least one pack of hagelslag somewhere in a cupboard.

2015-03-30 - Step 3

It used to be very difficult to get hagel in Australia. It is getting a little easier, even if the cost if extravagant compared to back “home”. And it always takes people aback when I explain it is a breakfast topping. My parents have been sending annual care packages with hagel for forever, but since it has started becoming available here too, I tend to get sent the more luxury flavours, like Mocha and Extra Dark.

2015-03-30 - Step 4

But the chocolate most directly tied to Sinterklaas (the Dutch equivalent of Christmas) is the chocolate letter. The Chocolate-Initial-Complex is a force unto itself in the Netherlands.

2015-03-30 - Step 5

And those that know me well, know exactly what happens when chocolate letters arrive. I really have no trouble leaving chocolate be, as my former experiments with The Chocolate Drawer have shown at my previous job.

2015-03-30 - Step 6

But when it comes to initials, the only way to consume them is all in one go.
That’s my story.
And I’m sticking with it.

…Back Again

I was looking forward to my Body Attack class for Tuesday evening, right up until Marayong on the train. I pick up my laptop backpack and have a telltale twinge in my back that I’ve come to respect as a sign to straighten up and pray it’s not too late to avert certain doom.

Although the evening takes a different course from the one I had planned, I don’t think anything more of it. Two episodes of House, M.D. – “It’s not Lupus”, and a failed attempt at doing some work (dev environment in some inconsistent state I couldn’t figure out right then), and feeling very weary by 9:30pm. I go to bed early.

I spend an hour doing that thing where you have audio playing that you think you’re actually listening intently to, staving off sleep… but then you startle awake and realise you’ve missed the first two questions-and-answers of the Writing Excuses podcast, and you just cannot bring yourself to fiddle with the controls to reset it to the start. I take it as a sign I should actually sleep and turn the audio off altogether.

At 3am, I know I am going to be in trouble. I wake up flat on my back, and my back has seized up completely. I have a 15 minute internal dialogue with myself about what to do next. I consider staying flat, but my back is feeling very uncomfortable. I consider rolling over but am dreading the feeling of using my shoulders to push myself around. I consider getting up to go to the toilet; damn, bladder full as well, just what I need.

No matter the circumstances, I almost never forget to think ahead.

I swing my legs over the side of the bed, and somehow manage to swivel myself into a sitting position with minimal use of my back or shoulders. First, I switch off the alarm on my phone, because I doubt I’ll wake up at 6:30am this morning, and even if I do, I know I’m not going to be nimble enough to dive for the alarm in a timely fashion when it eventually rings. Then, I go to the toilet and seriously consider whether I can sleep upright to limit the tension in my back. Clearly 3am is not a time for reasoned arguments.

For the remainder of the night, I alternate rolling onto my left and right sides with long stretches on my back. Each time waiting until the discomfort grows to a level where it overcomes my fear of the twinges that’ll run through my back when I go for a roll. Adding to that, putting my top arm in front or behind my body is immediately punished with stabs along my arm and shoulder blade, and it makes for an interesting night of careful balance in a half-sleep-state.

I don’t even consider going to work when I finally get up at about 7:15. I leave a message to my team-lead and start working out what I can do to speed my recovery up.

Luckily, it turns out the place I get my massages has a free slot at 10am still, so I book that in first, and then head to the doctors’ office down the road after a shower that takes me to their opening hours.

I bring my Kindle to try and read, but holding it up hurts my shoulder, and balancing it on my knee hurts my neck. I uncomfortably read half a chapter by holding it resting on the top of my knee with my neck slightly tilted and my eyes rolled down. I’m sure I look like a bad version of the Mona Lisa. It feels odd. It still feels uncomfortable.

Luckily the waiting room is practically empty. I try to look at the people in the waiting room with me, but my head doesn’t want to turn further than 45 degrees either side. I stare at the morning shows on the television. I stare through the inane dialogue.

I get a prescription for rest and some Panadeine Forte.

I head out to my massage and arrive 30 minutes early, so I read uncomfortably some more, after taking 2 tablets. Three-quarters through the chapter my head feels swimmy and it feels like reality is my imagination. Deep breath. I fail to read further and listen to a podcast instead.

Getting a massage with Codeine in my system proves an interesting experience. I can feel all the knots, but none of the pain. It is surreal, but far from unpleasant.

I feel relaxed and less sore right now, still a little detached, and absolutely determined to take carrying my backpack properly more seriously. It occurs to me that all those times I traveled to Melbourne and had back aches afterwards probably had little to do with the hotel beds, but everything with the fact I carry my luggage on my right shoulder only. It doesn’t feel heavy to my brain, but clearly my muscles privately have a different opinion. I’ll listen to them more from now on.

2015-03-15 - Header

Agility

I joined Blackbeard only recently.

I was looking for a new challenge, and I found it in the Inn where he was resting his party with Friday beers and cheese platters. He was looking to take on an Epic quest, and could use all the skilled hands he could get.

His party was an unfamiliar mix of classes to me, which has something to do with agility and sprinting. I cannot argue with the results of a mixed party I have seen so far.

It is still early days, and I joined well into the current campaign. But the Stories of our Epic goal are enough to inspire a renewed sense of purpose in me.

I’m part of Team Blackbeard, our quest is bringing flawless E-Mayl to the masses.
(I think it’s a precious stone or something. I’m not entirely clear yet.)

2015-03-08 - Header

Checking confluence with pythons

Heaven and hell.

Being a new starter at my new job, eager to absorb as much information as I can in as short a time span as possible, my attention immediately gravitated towards the Confluence Wiki with its plethora of pages (1800+) as a starting point.

There is a lot of information there, but the organisation of it could be better, so in line with the take-the-ball-and-run-with-it culture, I did.

First concern: how to improve things without making them worse?
Broken links suck.
Broken links I created, suck even more.

Sadly, and inexplicably, Confluence to this day does not include any tools to check for broken links, beyond the basics of “Orphaned pages” and “Links to new pages that haven’t been created yet”.

A quick search on the internet found a tool by an Atlassian employee that seemed promising: BustedStuffReport. Point it at a Wiki and it will scan all the pages and do some regex-magic to heuristically determine if all is in order.

Sadly: it only works on public Wikis, it does not follow any links to check them, it seems to target a somewhat older version of Confluence, it uses Python 2.

Having most of a solution already there, I decided I could hackimprove it to make it useful enough. Just let me get the Python language reference out and see what happens!?

After a week of playing around after work and in between tasks, I have a mostly rewritten script that is converging on the target I want to hit. I’ll post on Sciurus with the full details once I get there.

In the mean time, the experience has taught me the following:

  • The XML-RPC API to Confluence is very rich and regular, and reaches into almost all the corners I need (Yay!)
  • This XML-RPC API was deprecated in favour of REST,… while the REST API has not yet reached functional parity (D’oh!)
  • Confluence very helpfully does *some* classification of links through CSS classes… no idea why this isn’t visually represented by default (Huh?)
  • Python makes it incredibly easy to access the XML-RPC (Yay!)
  • Python still makes my skin crawl with its lack of type-safety, and no, I don’t want to write unit tests for a small tool like this (Boo!)
  • List comprehensions are awesome (just like LINQ is (double-Yay!))
  • Why do I need to end my conditional statement lines with a colon? I guess I can live with this, but for a language that strives for visual sparsity it seems like an odd requirement (*shrug*)

I think I can see why people love Python for scripts. But I’m still not convinced the productivity gained by the flexible typing system isn’t overshadowed by the extra test-cases you’d need to code in a non-trivial application. So, that leaves trivial for now, for me.

2015-03-01 - Header

Culture

Great corporate culture is easy to spot; just count the happy employees. I’m sure there are studies into the benefits of a positive culture, but I doubt you need studies to be convinced anyway.

Creating a great culture can be incredibly hard though. And regaining it after losing it is just as hard itself. It is like exercise; the amount of effort it takes to regain condition after sitting on your ass for a month disproportionately overshadows the effort it would have taken to maintain the routine for that same period. It’s rolling that boulder back up-hill.

So, I guess the first rule of Culture Club is: maintain culture for all it’s worth.

What makes culture hard is that you cannot afford words and actions to become misaligned. Intent alone is not enough, because perception beats intent every day; if employees don’t believe it, you’ve lost already.

Which means that the second rule of Culture Club is: make sure you pick a culture you are prepared to stand behind with every action, pick the culture you mean, be specific… platitudes do more harm than good. Everyone wants to be the “company full of smart empowered and pro-active individuals”, but just don’t say it unless you’re prepared to live by it.

I mean, look at McDonalds… there are manuals and procedures for everything. No need for anyone to be empowered or pro-active. But at least everyone is on the same page regarding what McDonalds culture is like. Which means that nobody ends up complaining about it. It Does What It Says On The Label.

And there are many stops along the spectrum from completely running on process* to completely running on people*, so pick the spot that is right for your organisation and live and breathe it.

And that would be the third rule of Culture Club: once you have a culture that is realistic for your organisation, everyone has to work at keeping it there. You have to look for things slipping and nudge them back where your culture says it belongs.

I suspect that may well be one of the biggest purposes that the playful decor at a place like Google has in maintaining their culture. It’s not a direct part of the culture, but it serves as an overt reminder not to take things too seriously. Breaking traditional corporatey-officey rules in the way you decorate immediately makes clear not to make assumptions about how things work around the place.

And I couldn’t be happier at Campaign Monitor; it comes with a great built-in culture close to the People-based end of the spectrum. And I’ll actively be doing my bit to help keep it there along with everyone else.

Just a little ongoing maintenance is all it takes.


* It is almost impossible to maintain a culture that is purely process-based or purely people-based. The more process-based a culture, the better it is to have a publicly acknowledged “why” for each rule and process; it helps the “people”-people. The more people-based a culture, the better it is to make clear that not being sure of how to handle something is okay, and a process to follow to find the right person to help; because you’re going to have “process”-people as well.

Why Driving Sucks

I could write a whole lot more about my job at the end of my first week, but I have more interest in talking about what happens before and after that work.

I have time-shifted, so I drive 6:30am – 7:30am and then 4:00pm – 5:00pm.
This is as close as I think I’ll get to the optimistic Google estimate of 53 minutes.
And that’s okay.

For the past eternity, my 5-10 minute commute exposes me to a bad driver or two every once in a while. With a daily 60 minute commute each way, every day is my “lucky” day. And I wanted to just record some of these blessings so I do not forget when the time comes to gripe about occasional public-transport mishaps.

Ending Lanes – there are a couple of places on my commute where 2 lanes merge into 1, with the left lane disappearing. Most drivers are perfectly polite and do not push in all the way at the end of the merging lane. Sadly, when they do, they merge in as little distance as possible, which usually encourages the small minority to overtake in the left lane… and push in at the very front, which then slows down the right lane even more, encouraging even more assh*les to push in front. Every once in a while you’ll even have someone ducking from the right lane into the left, push to the front and re-merge… because… entitlement.

This is actually the easiest to fix, and when I find myself in the left lane, I start indicating to merge early and when a space opens up, I move over half-way to claim the spot while keeping the left lane blocked. If this feels awkward, indicating and just keeping pace with the open space will work too. This usually makes both lanes flow better because now there aren’t any pushing-in cars causing confusion and uncertainty to the drivers at the end of the merge.

Overtaking Lanes – there is a long windy single-lane stretch in my commute, which occasionally widens to 2 lanes for a stretch to allow overtaking before merging back together. It is inevitable on the single-lane portions to get stuck behind a car going below the speed limit. On a 100km/h stretch there’ll be a car doing 90km/h. I wait patiently. Then the overtaking lane comes. I get into the second lane and speed up to 105km/h to get past quickly… and now suddenly the granny turns into Taz, going 108km/h and pulling away from me!?

Theoretically this can be overcome by speeding up till you inevitably go faster, but I don’t really want to see how far that game of chicken would take me. I do not know why people do this. It is anti-social… if you know the car behind you for the last 5km clearly wanted to go faster than you are going, can you not hold back when the overtaking lane comes around? Heck, slow down to 80km/h briefly to make it easier, and then go back to 90km/h; everyone’s happy!

Hanging Right – this is a variant of the last one… most of the way to work doesn’t exceed 2 lanes. The slow traffic is on the left. The fast traffic is on the right. Everyone thinks they are fast traffic. They want to go faster than the slow car they are behind. 85km/h on a 100km/h stretch!? No way! So, they pull in front of me to overtake… at 90km/h… for ki-lo-me-tres.

When I notice a fast driver approaching behind me, I find a way to get back into the left lane, even if I still want to get back in the right lane right afterwards to keep overtaking myself. Even if the car coming up is doing an illegal 120km/h, because I’m not the Police, and I’m not here to stop them from doing anything wrong. It’s usually best to have extreme speeders and Tetris drivers as far away as possible anyway.

Anyway,…
… Future-Jerry…
… That train you are hating so much right now, is really not so bad…
… It is usually moving. It isn’t beholden to the whims of other traffic…
… It may be a bit full, but you can read a book and be blissfully ignorant of those few idiots on the road…