Browse Category

Annual Reviews

Report Cards (2018 Review)

We are just over an hour into 2019 where I am (Singapore), though it is still 2018 in the UK. For me, the highlight of the year was probably receiving the VCLA Outstanding Masters’ Thesis award in August; the worst part of the year would probably be around April, when I had a month or so of doing primarily reactive tasks and managing technical debt. Nonetheless, every year will have positive experiences (hopefully) and negative ones as well; I’d say my main takeaway from 2018 is that optimisation can be dangerous if one picks the wrong variables.

I set some targets at the beginning of the year. While setting targets without subsequently revisiting them can already spur improvement, it’s useful to consider how one has performed as it informs drafting next year’s goals (in particular, figuring out what is realistic, and what would be too comfortable). The grading system I’m using here is similar to the OKR system – each task receives a score between 0.0 and 1.0, and a straight success (with no extensions or bonuses) scores 0.7. For quantifiable tasks, I usually do a pretty straightforward linear interpolation with zero at 0.0, and 10/7 of the target at 1.0; usually a 1.0 means that the goal either wasn’t ambitious enough, or the relevant area became more important during the year.

A1: Software Engineering: 0.5

Not quantitative. Progress this year, while significant, felt largely incremental (which is maybe unsurprising as I’ve been focusing on similar work in terms of distributed systems and back-end performance).

I’d say most of the “progress” here is in the form of a considerably more principled approach to pursuing performance improvements and building new features. It’s difficult to evaluate improvement in Java skills; I spent some time this year studying Java performance (especially garbage collection algorithms and concurrency). There were a few bugs I remember this year where Java Memory Model knowledge was useful, which I wouldn’t have known as well this time last year.

A2: Logic in Computer Science: 0.9

The original goal here was arguably quantitative, in that it was to present one paper at a logic conference. This was presented – see this AAMAS18 page. I decided to bump the score up from 0.7 to 0.9 as a somewhat related highlight of the year was receiving the VCLA Outstanding Masters’ Thesis award for my work on MCMAS-Dynamic. This was mostly based on past work, though I had to write up a summary of the work that had been done.

This target was intentionally not too ambitious. I do want to finish up one more paper from the thesis – I think four is about the limit of where we can take this (the third paper already had a decent amount of original content) but I don’t anticipate presenting that until possibly 2020.

A3: Innovation in Engineering: 0.7

The goal here was to get two patents in the pipeline, and this was achieved exactly. There might be a third coming from my winter hack-week project, but I prefer not to count things that aren’t done yet.

This goal was conceived as an alternative to the pull-requests goal I had in 2016, as I find a small number of substantive changes to usually be far more motivating than many smaller incremental changes. (A possible danger of this is that I might discount the value of said incremental changes too much!) I’ll probably keep some version of this in 2019, as I find this kind of innovation enjoyable and motivating.

B1: Writing and Blogging: 0.4

The goal was 52 and I think this puts me on 27; I’ll be generous and round up. It seems a weekly schedule is pretty challenging, particularly around holidays and busy periods at work. I do still want to maintain somewhat regular updates here, but a lower target (40, perhaps, to allow for some of these) could be more reasonable.

B2: Travelling: 0.3

The goal was to visit 12 countries, considering the UK as my home base. I’m writing this from Singapore, and have also visited Switzerland, Germany, Norway, Sweden and the US, so this puts me on 6. That would be 0.35 – this rounds to 0.4 by standard conventions, but I’ll round down considering how work-dependent most of these trips were. I do enjoy visiting new places and learning more about them; however spending time with friends and family is also important to me, and in some ways travel allows me to do that. I think some kind of travel-related goal is likely to feature next year, though I’m not sure yet what form that should take.

B3: Walking: 0.7

The goal was to walk an average of 10,000 steps per day. I’m at 10,131 and I can add one more to that average for every 365 steps I walk today. Bumping this to 0.8 would require 213,160 steps today, so I’m fairly confident 0.7 is right.

I commute to and from work by walking most of the time. This provides a form of exercise and also saves money on transport (tube fares in London are expensive). That accounts for around 7-8,000 steps; the rest are accumulated walking around the office, or on weekends exploring. I don’t think this was sufficient in terms of physical fitness.

B4: Music: 0.5

There is some progress; I’m able to hit Bb4 quite a bit more consistently than I used to, but B4 remains difficult and elusive. I came across Meant to Be this year and attempted to sing it – I can just about manage the song (including the female vocal line) which requires consistent Bb4; trying it at a +1 key has not worked. I would not have been able to land consistent A4s even at this time last year, so the improvement could be considered as two semitones out of three.

C1: Gross Savings Rate: 0.8

The goal was a gross savings rate (Savings Rate #1 in this post from Early Retirement Now) of 50 percent, and this ended up at 54.2 percent for this year. I think this is good given that UK taxes can be quite high. This is a difficult chord to play, as one needs to determine how to discount future utility from money put into savings and investments. I think this was slightly higher than expectations.

C2: Minimum Income Standard: 0.8

The goal was to have non-housing expenditures of at least £10,800 for the year; this reached £12,000. This may seem somewhat antithetical to C1, though the issue with savings rate is that higher isn’t necessarily better; I’d prefer a sufficient budget at SR 50% over a tight one at SR 65%. It’s also not impossible to score highly on both goals (by earning more).

D1: Communications and Maintenance: 0.6

This goal is non-quantitative. I think I’ve made reasonable efforts to keep in touch with friends from both Imperial and Singapore. For the most part this has gone well, though there have been some lapses where I haven’t been as responsive as I’d have liked, hence just under the target sounds about right.

Highlights and Lowlights (2017 Review)

I did four reviews at the end of each quarter (see: Q1, Q2, Q3, Q4). Typically, I link each of these reviews to a song I’d been listening to a lot during the quarter. This is usually based on whether I empathise with the singer’s persona, as I find these more ‘sticky’ than merely good instrumentals or well-executed pieces. For a quick recap, the songs were:

  • Q1: “Back from the Edge”, James Arthur
  • Q2: “7 Years”, Ben Schuller (this is a Lukas Graham cover)
  • Q3: “Mercy”, Shawn Mendes
  • Q4: “Back to You”, Louis Tomlinson and Bebe Rexha

This selection makes it seem like it’s been a rather turbulent year. It has been, but looking back on things I think it’s certainly been decent enough too. Of course, variance and volatility don’t necessarily imply growth, but it certainly feels like the problems and struggles I’ve had have been beneficial. Here’s a quick rundown of some of the more notable things that have happened to me this year.

Commuting on Foot

I started walking to and from work instead of taking the tube. In an earlier post, I calculated that I was being paid an effective wage of £27.59 an hour to do this. I think I kept up with this through most of the year; that walk while initially taxing feels quite normal now. It’s a good bit of morning exercise for me to clear my head before starting work, and I find it a convenient time to call home too. Furthermore, the amount of money saved is quite substantial; I’d imagine I’d spend £126.80 a month for the monthly travelcard, but in practice my monthly transport expenses are more in the range of £20, so that’s an extra £1200 per year.

To be fair, I’ve noticed that I’ve worn through shoes much quicker this year (the route is about 2.5 km each way), so maybe depreciation should additionally be factored in to the cost. Even then, I’ve been disciplined about intelligently shopping sales for walking/running shoes; I’ve spent less than £100 on shoes this year, so factoring that in we’re still looking at more than £1000 in savings.

AI Down Under

I took two weeks out in late August to present at IJCAI 2017 in Melbourne, Australia (plus a short holiday, and a stop-over in Singapore). I do have a bit of a soft spot for pure, hard theoretical computer science, and this certainly allowed me to show off some of that. Besides actually giving the LDLK talk, the non-technical programme was also very interesting; I managed to meet quite a number of interesting researchers whom I only recognised from their papers, there were a variety of interesting venues, and there was also an exhibition where some robots attempted to compete in football.

My own non-technical programme was great too – I enjoyed touring parts of Melbourne, the hotel (the Crown Metropol) was very comfortable, and of course returning home was good, even if only for a short while. The 24-hour flight was pretty intense, but there wasn’t really a compelling alternative.

Greed and Fear

Cryptocurrencies are, of course, a highly volatile asset class. I’ve been maintaining modest long positions in a couple of them; the extreme swings have certainly highlighted the presence of these ‘primal forces’; while I did buy into BTC under $5000, there’s a part of me that’s still a bit miffed that I didn’t initiate a larger position then. I extracted my cost basis at $17000 and will probably let the rest ride.

In total, my portfolio gained about 18 percent this year. I’ve never actually been through a bear market (well, at least with a large investment holding). There was the correction in early 2016, but my portfolio is substantially larger now. While I’m of course familiar with Buffett’s well known hamburger analogy – since I’m a net buyer of stocks I should be happy when they go on sale – I’m in a position where I could at least on paper lose half a year’s salary if things get ugly (or even more – during the Great Depression, stocks crashed by roughly 90%).

Cross-Border Connections

It has been more than a year since my cohort at Imperial graduated. The one-year mark is significant for a few of my friends, because one year is a common requirement for intra-company transfer visas (at least in the UK and in the US). I’ve also had friends who started outright overseas (much like what I did). Keeping in touch has been somewhat tricky, especially bearing in mind timezones – but I think it has been going fine.

I’m starting to see what I thought was the most likely scenario as far as maintaining these connections post-university pan out. I got pretty stressed last year thinking that it would be difficult to keep these ticking over. I’m aware I have a tendency to inaccurately amplify small risks, and this turned out to be the case here.


I always had a bit of skepticism about 24-hour hackathons whilst in university (bad work practices, too many flashy demos without actual reasonable implementation); that said, I do like the concept of hack weeks and have participated actively in every one of them that’s been on whilst I’ve been at Palantir. Five to nine days is long enough that people aren’t generally going to be working too unsustainably (though I have certainly felt the burn from pushing hard on these – even then it’s 80 hours a week hard, nothing near 168). I’d definitely classify the hackweek we had in summer as a major highlight of the year, and the one in winter as something nice too.

It’s a nice occasional reminder of the ‘core’ parts of my job I like (that said I do also enjoy interviewing and tech-talks). I enjoy many of the projects I do for these hackweeks because I get to apply fancy CS things that I’ve read about or otherwise worked on while also testing my engineering and rapid-iteration skills. There is a claim that if one wishes to go fast, one should go alone; if one wishes to go far, one should go in a group – and while the hack-week form of many of the things I’ve worked on doesn’t make it into production, the rush of rapid development is exciting and some form of what I work on tends to, indeed, make it to production.

Jeremy’s Annual Review 2016

As mentioned in a previous post, I’ve been using the system of objectives and key requirements (OKRs) to keep track of how I’ve been faring, looking at various metrics. I think OKRs do tell a significant part of the story, but they certainly don’t cover everything; a year is certainly long enough that things can change direction massively. There may be unexpected things that have come along for better or worse.

Why am I doing this? Reviews in general help me to reflect on the direction I’ve been taking, and allow me to consider how I should orient myself in the next period under consideration. I also find that being held publicly accountable is useful in spurring myself to perform better.

I’ll split this into three main sections: what went well, what did not go well and what major lessons were learnt. There’ll be another post to come concerning targets for the next year, though I’m sure some of the information here will feed back into that.

Things that went well:

  1. Academics at Imperial. There is still certainly room for improvement, but scoring 100 percent in the project and a 94.5 average for the final year blew even my best expectations away (95 and 92, respectively). I wasn’t too happy with some of the scores for the modules I took, but I think all things considered this was a very solid finish to four arduous years.
  2. Contracting at Palantir. I think working part-time as a software engineer during the term was great, though I realise the long hours (mainly because context switching became super expensive) had nontrivial costs. The main drivers behind this involved maintaining the currency of my skills as a developer as well as keeping in touch with the team at Palantir, and I think both ends were achieved here.
  3. Friendships. I was expecting the worst after we moved on from Imperial, but I’ve been keeping in touch with a fair few people. It hasn’t always been the easiest thing to do and it’s certainly caused me a lot of stress (unfortunately, it might have also had that effect on said friends), but I find maintaining good communication very worthwhile and I’m happy to have friends who also (at least seem to) believe this is important.
  4. Travels. I don’t mind a small amount of travel, but for various reasons was faced with a London – San Francisco – Palo Alto – Washington DC – New York – London – Singapore – London trip which ordinarily is more than I would like. Nonetheless I broke this down into small chunks and handled each leg of the journey smoothly. Besides the aforementioned trip I also had another visit to Palo Alto earlier in the year as well.
  5. Writing. I think at least over the past three months or so when I started here, I’ve been a lot more disciplined with sticking to a schedule and forcing myself to express my thoughts.

Things that didn’t go so well:

  1. Acquaintances. I’d have liked to keep in touch with more people from uni. I know this goes against the third point above, though that focuses more on the closest friends I had at Imperial whilst this focuses more on quantity.
  2. Working hours. Subsequent to a previous post where I explained how I tracked time at Imperial, there have been spikes above 80 and approaching 90 even, which is something I need to learn to control. I think I tend to have a very strong bias towards action, plus I do know that I can be very determined; but this can lead to such situations.
  3. Shifting standards / “the problem of never settling”. I find that I’m usually able to identify weaknesses and then address them (good), but there will always be more weaknesses to find, and a high quality bar very often has pretty heavy costs too. I’ll spend some time over the next two weeks to clear my head on this. As always there’s the flip side to this which probably leads to my current attitude, that settling for less-than-great performance isn’t ideal as well.
  4. Investments. I’m largely a defensive investor, as Benjamin Graham would call it. I invest every month when my paycheck comes in, and diversify into a portfolio of passive and active funds (this is needed in some cases, such as for access to small-value). Yet there were many occasions this year where the markets kept me up at night or had me worried, when they really shouldn’t. I have a tendency to be very aggressive with these (I bought in after Brexit; not so much after Trump since there wasn’t really a significant drop there once the markets opened).

Key lessons I learned (largely chronological):

  1. “It’s supposed to be hard. If it wasn’t hard, everyone would do it. It’s the hard that makes it great”. (You might recognise this as a quote from Tom Hanks’s A League Of Their Own.) I think I’ve generally liked to put myself through my paces, but this came out of the depths of working with MCMAS-Dynamic. In a way finishing that project gave me some kind of further validation that the 90%+ grades and the strong performance reviews I had were warranted. Sure, it can be painful, but the sense of accomplishment I often get when successfully pulling off something really difficult is great. And even at the end (before the grades) I was still concerned the project was not hard enough!
  2. Sometimes I need to take the first step. I’d say I learned this most clearly in what I call the post-Imperial crash period, when I started realising that a number of my friends would no longer be in London. I was somewhat concerned about how things would go from then on, and this caused me a fair bit of stress. I became considerably more proactive with many of them, and it seems things have worked out better than what I expected.
  3. “If you’re made to wait, it’s for your own good”. Performing high-quality work takes time. During MCMAS-Dynamic I found that after 8 hours or so per day I had difficulty maintaining my concentration; I thus switched my strategy from firing off those 11 or 12-hour days during the term that required comparatively less abstract reasoning to an 8 hour a day 7 day a week model. I was pretty drained out by the end, still. I’d be inclined to think that the pure technical difficulty of MCMAS-Dynamic is higher than anything I’ve had to face so far at Palantir, but I’ve similarly run into seeming brick walls with some of my work (though generally have not been implementing the 7 day a week thing). The quote above was introduced to me by a teammate who was concerned by the hours I’d been working; I think it was intended to be in an outgoing direction (that is, I might be making others wait for their own good), but it could also apply to some extent in the other way (that is, doubling down on effort in an attempt to rush something out is not always a good idea; being forced to slow down might be better).