Browse Category

Reviews

Torrential Storm (Q1+ 2020 Review)

I’m somewhat behind schedule on this one. To some extent, working from home has confused my weekend workflows, in that there isn’t as clear of a separation between work and non-work days. I’ve also been finding writing more taxing than normal, perhaps because I’ve had to do more of that at work for various reasons, both in a professional capacity and auf Deutsch, fur meine Hausaufgabe (in German, for my homework).

I’m still working on AtlasDB and at Palantir. For various reasons Q1 (and I’m extending this review to cover the first two weeks of April) has been tricky in terms of events at work. I think there’s one core paradigm that I used to have as a lead that I had some doubts about at the end of last year, and I’d say has been shaken even more since.

My normal approach to being a lead is to aggressively apply the golden rule – to push policies that I would like or find useful or helpful as a developer, and to reject those that would be unhelpful (allowing for some measure of unpleasantness, but not too much). The problems here come if there are considerable differences in relevant preferences or inclinations: what I find useful as I started out may not be useful for others.

Normally I’d write a section detailing my travels, though of course this was considerably less in Q1 because of COVID-19. I did travel a little bit in the early part of the year (I was in Singapore for the holidays, and made a short trip to Zurich to visit Stan in early March – back when there were just eight reported cases in Switzerland). I was originally slated to go back to Singapore for Easter, though of course that didn’t actually materialise.

We’re entering week 5 of the UK lockdown, and week 8 of working from home for me. Initially, the changes to my routine weren’t particularly serious (I was fortunate in that I had just come back from Switzerland – I normally travel once every 1-2 months, even if it’s just for a short weekend break).

The markets have also been pretty exciting, though I haven’t been thinking of them as much because of coronavirus (and perhaps that’s for the better, given the scale of the drops). I remember the first time I lost a month’s worth of investment contributions, but this was the first time I lost a year’s worth of them (on paper, at least). With increasingly stark economic data prints and forecasts, it’s a healthy reminder that movements in the market are often not about whether business/the economy are doing well or badly, but rather whether they are doing better or worse than expected (so if the consensus estimate is for a grade D and the actual performance is a C-, stocks could do well!).

In terms of logic contests, four Sudoku GPs have occurred, and my performance is probably not too different from last year. I’ve performed worse in terms of absolute number of points scored (I finished last year with 2502, four contests at 1565 would suggest 2347.5 as an overall score), but better in terms of ranking (61-50-74-71, overall 51; I finished 66th last year). I’m not sure if I’ve gotten any faster, really; in terms of strategies I wouldn’t say I could concretely identify a way I’m better now than I was last year. It’s possible the contests themselves have gotten harder, or the test solver pool has gotten faster (points are generally allocated based on how long test solvers take).

Similarly, four Puzzle GPs have been completed. I have been considerably less stable at puzzles; this hasn’t changed from last year, and has probably gotten worse in fact. I did worse in terms of absolute numbers of points scored (I finished last year at 1921, and four contests at 1205 implies 1807.5) and worse in ranking (139-154-71-141, overall 100; I finished 91st last year). I think my bad habits here involve being overly fearful of bifurcation. Puzzle choice is a bigger issue in these rounds than in Sudoku, since there are more options (even the best solvers frequently don’t actually solve everything). I tend to gravitate to number-heavy types like KenKen, Arithmetic Squares, Skyscrapers or Futoshiki because they feel comfortable, even though I’d say I’m fast at the first two but pretty bad at the last two.

Another hobby I’ve been pursuing is learning German. I took my A1 exam in Q1, and got a sehr gut (very good) grade with 100 percent. Perfekte Noten (perfect grades), as one might say. Lessons at Palantir continue and have been useful in ensuring that I have a more proper, structured framework for learning, as well as providing quality feedback on pronunciation and writing.

I started learning about Nebensätze (subordinate clauses) at the very end of last year to beginning of this year, and they’ve substantially broadened the range of things I can talk or write about. Wennals and ob (if/when – though not specifically previously, previously when, whether respectively) are very useful; weil (because) a bit less so since I already knew denn (because), but for some reason I find sentences with weil tend to roll off the tongue better. The practice of ending these clauses with the main verb (e.g. Ich weiß nicht, ob das gute Idee ist, weil ich vielleicht nicht genug Geld habe – I don’t know whether that is a good idea because I might not have enough money) currently requires me to build most of the sentence upfront, but the catharsis of unleashing the verb at the end feels great.

Social distancing has made me look at video games more, both in terms of games to play on my own as well as with friends. Interestingly, the concept of a rogue-like seems to be a common thread in three of the games which I’ve been playing a lot in Q1: Slay the SpireDicey Dungeons and Dead Cells. Games generally consist of individual runs that take from 15 to 60 or so minutes (Dicey Dungeons is probably on the faster end, Dead Cells can be much slower); there is some, but generally limited, progression across runs.

The first two are actually fairly similar in that combat is turn-based; the former involves deckbuilding, while the latter involves arranging equipment to maximise effectiveness of die rolls. The latter is very different and is much more focused on action and reflexes, which can be more appropriate if I don’t want to think as much. Slay the Spire, especially on super-hard modes, is quite a brain-burner.

These games are also similar in that they are reasonably easy at their base difficulty level – I think I had my first win of Slay the Spire on the third run, Dicey Dungeons on the very first run, and Dead Cells on the second run. I think I’d be able to win >95% of games on the easiest mode (Ironclad Ascension 0, Warrior level 1 and 0 Boss Cells, respectively). However, difficulty modifiers can make things very challenging: I’m pretty sure my win rate on Slay the Spire‘s Ascension 20 (max difficulty) is under 10%, and I’ve not completed Dead Cells with 4 Boss Cells (difficulty ranges from 0 to 5, increasing with each additional cell). There’s some evidence that I’ve gotten better at surviving what the game throws at me though, in that when I first started Ascension 20 and 3 Boss Cell mode looked completely impossible. Furthermore, I’d find the base modes mostly boring now, as even clear lapses in my play would be largely inconsequential – I think I enjoy a challenge.

The relative lack of travel also means that I haven’t listened to very much music recently. There are the fast-paced instrumentals that I listen to sometimes when implementing features (as opposed to design) – Destination Relapse is pretty good, even if the 200+ BPM track was written to be a really difficult rhythm game boss. To some extent similar would probably be Chopin’s Etude Op. 10 No. 4 (here performed by Rousseau), which would probably make a good boss song if playing the piano in general was treated as a rhythm game. There’s a kind of unrelenting fury and incessant urgency in the closing streams of Relapse and throughout the Etude that appeals to me, and perhaps reflects a torrent of potentially creative destruction (incidentally, the Etude is sometimes given that moniker as well). For me, that does make sense considering what I’ve been looking at in terms of work.

Burning Lights and Falling Stars (2019 Review)

When I look back on 2019, what first comes to mind are a number of protracted struggles. These spanned a broad range of issues, from work to philosophy and from finance to logic. This was probably either the toughest or the second toughest year I’ve had since I moved to London. It’s comparable to 2016 (with MCMAS and Palantir work in parallel, and then TimeLock): in both cases I think that I’ve grown and learnt quite a fair bit over the course of the year, probably more than in other years, but also that this generally isn’t a long-term sustainable pattern.

Software Engineering

The early part of the year involved finishing up work done last year on Transactions2. This project was generally successful, though more painful than expected. There were a lot of weird bugs that took quite a lot of iteration, and since the previous dev lead with whom I worked with on this project left the team and these involved pretty deep technical knowledge it would have been very costly to ramp anyone else up. Delivery could have been improved with a bit more careful project management/planning, but in terms of technical execution I think I performed at or slightly above my personal bar here.

I became a tech lead in March and then a more general team lead later on. A lot of the year involved me trying to get comfortable with the roles; it was a conscious decision to focus more on that as opposed to further refining technical execution of individual projects.

The former focuses on making architectural decisions, prioritising feature and support work, being a representative of the team at higher-level meetings, and being responsible for communicating thoughts and ideas with other teams. The first two things I think were expected to go mostly smoothly, and did: I already contributed to quite a bit of these while “strictly” an IC, and I definitely consulted the leads at the time and then jumped in on things I thought were more important than the work I was originally planning on doing. I maintain a lot of context on what’s going on on the team and product, and am aware that my input on these is valued quite well. The latter two also turned out to have worked better than I expected, in that feedback has generally been positive with regard to communication and argumentation. I also don’t think I’m where I’d like to be with regards to coming up with ideas for things to do (as opposed to, given a list of features, filter them for feasibility/benefit and then prioritise them) though there are of course support structures for that.

The latter role seems to also involve project management, and developing other members of the team to become stronger engineers. This hasn’t gone as well. I think it’s not so much a question of not wanting to do it or investing in it, but instead not being efficient by making an invalid assumption that others would follow the same growth path as me (which is basically mostly by absorption and from figuring things out as they come up). That by itself is maybe reasonable in terms of expectations (I think it worked very well in my case), but I took a long time to course-correct. It looks a bit ironic that why I took a long time to course-correct was because my bandwidth was strained on a lot more pressing things because I felt I needed to handle them directly, and the antidote to that is scaling myself by investing in team members’ growth.

I continued to work on some technical projects throughout the year, though not as intensely as in 2017 or 2018 probably by design. I’d probably say that the highlights were the two hackweek projects that I did. The Summer project is going into production, and involved careful reasoning through the AtlasDB development stack. The Winter project came with a bit of a pleasant surprise: my efforts on being thoughtful about interviews landed a runner-up for use of tech, which I really wasn’t expecting; I did the project more because I saw a relevant need.

Recreation and Personal Development

A fairly common theme here is skill development – there’s some evidence of this in terms of Sudoku and German, both of which are things I spend a fair bit of my free time on.

Sudoku and Logic Puzzles

I set a goal to achieve a global rank in the top 100 of the World Puzzle Federation Sudoku and Puzzle GPs. This was achieved in both cases: I finished with rank 66 in Sudoku and 92 in Puzzles. The contests run monthly (I think it’s actually every 4 weeks) from January to August.

Each Sudoku contest is basically an exam paper which is marked out of 600, though additional points can be obtained by submitting a fully correct paper before time is up. There are 8 contests, and the overall GP ranking is based on the sum of the six highest scores. I was at around the 350/600 mark at the end of last year, and so was expecting a final score of about 2200 or so (allowing for discards of bad results), but I probably got slightly better over the year and managed to finish with 2504. Puzzles went less smoothly as I missed the first round as I was on holiday and had a really bad round 6 where I chose very tough puzzles to attack, but I still squeaked over the top-100 line.

Deutsch

I started learning German this year. I think I began with Lingvist and Duolingo around May or so, and then started formal lessons in June. I have lessons once a week for 1.5 hours. I was originally hoping to take the A1 exam by the end of this year – this is currently planned for January, though my teacher’s quite confident that I won’t have issues. Nonetheless I do think I’ve made substantial progress.

I hoped to push on towards A2 actually. It’s unclear if I am at A2: while the CEFR descriptors don’t look too hard at that level (I feel I can satisfy almost all of the criteria), I’m aware there’s quite a lot of grammatical knowledge expected at A2 that I don’t know or am not confident about (e.g. irregular verbs in the simple past, passive voice). I’ve tried the Hören, Lesen and Schreiben (listening, reading and writing) sections of various exams aimed at the A2 level, like the telc A2 and UK GCSEs (I’m saving the Goethe papers for when I actually do that exam) and generally have been able to do quite well on them (i.e. above 80% on telc A2, Grade 9s on the GCSE components – maybe not writing), though admittedly Sprechen (speaking) is the part I’m most concerned about.

Travel and Exploration

Travel this year included four trips to Singapore (two were based around weddings). I also visited Zürich multiple times, Japan, Brussels, Boston, Stockholm and Palo Alto (though mostly for work). I did not travel as much as I wanted to outside of work, possibly because of prioritising other goals (I mainly worked on logic puzzles and German on the weekends) though actually they aren’t that incompatible (e.g. a flight is a good amount of time to work on learning German).

I really enjoyed the Japan trip (highlights included the Sankei-en Garden, Shin-Yokohama Raumen Museum and Ginza Tamai), and though the wedding trips were short (just 3-4 days in Singapore each time) I don’t regret them at all. Travelling is interesting: I don’t always look forward to the trips (especially the work ones) but almost always enjoy them. It’s possible there’s some sunk-cost fallacy here, though that’s mitigated by me not directly paying for the work trips in terms of money (still in terms of time, of course).

Financials

I generally looked at my portfolio quite a bit less after Q2, perhaps because I invested more resources in my new role at work and also because there generally was a fair bit of non-actionable stress.

Savings Rate

There are several ways to slice this: Savings Rate #4 from this post is what I normally use. In a UK context, define S_1 as workplace pension contributions, S_2 as individual pension contributions (e.g. SIPPs), S_3 as other savings (ISAs, taxable accounts), C as consumption and D as tax changes derived from taxable benefits. Furthermore, define \tau as the tax rate expected when one withdraws from one’s pensions. Then

SR = \dfrac{\tau(S_1 + S_2) + S_3}{\tau(S_1 + S_2) + S_3 + C + D}

Roughly 55% this year, up two percentage points from last year (looking at it, my expenses did increase quite a lot from last year, but not by as much as the raise I received, so this makes sense). This is in a pretty reasonable spot.

Discipline in Spending

I’ll paste an extract from the essay I wrote on my birthday this year, that captures the major spending increases here:

  • Groceries has had an increasing trend year-on-year, going up by 50% from 2017 to 2018, and another 26% this year. Some of this is because I patronise M&S nowadays; I actually find the food tastes better. The ”three meat or fish items for £10” deals were something I used to scorn in first year at university, calling it absurdly expensive; I now actually use that on occasion.
  • Gifts has increased to 2x over last year. I think this is natural, seeing as my financial position is a bit more stable now. I also definitely recognise that I don’t have infinite time to use this.
  • Travel has increased to 2.5x over last year, as part of a generally increasing trend. This is fine as long as it doesn’t increase exponentially from here. Some of this is also probably because I started thinking about flying slightly more premium cabins (premium economy or even business), and where this is not the case booking extra legroom seats. It seems I also can spend quite a bit when making “bleisure” trips, such as to Boston and Palo Alto. I think that’s okay, though – especially if I’m spending it on interesting experiences (and not tat).
  • Clothing has increased to 2x over last year. I have lumped shoes into clothing and that is certainly a part of the cost, but that definitely doesn’t explain the whole delta. I think it tends to be a large number of items as opposed to individually expensive ones – perhaps it’s a form of retail therapy? I think something actionable here might be to implement a one-in-one-out policy in 2020. £28.74 per week for clothes is concerning. This does cluster (e.g. I spent £250 in the Black Friday and Cyber Monday sales, including on a pair of Nudie raw denim and two pairs of Converse that should hopefully last) but it’s still more than I would expect. I’d view most articles of clothing apart from shoes to generally be luxuries at £28.74, and I certainly don’t feel like I’m buying one such treat per week.

There’s still some discipline, in that my savings rate has increased in spite of these trends, and in most cases (apart from the clothing one) the increases are justified and were made (mostly) thoughtfully. I have to deduct points for the clothing-as-retail-therapy thing though.

Above the Inclined Bar (Q3 2019 Review)

Work has been fine, though I’ve noticed my hours have been growing longer. I guess some of this has been me trying to adapt to and work well in areas that I’m not sure are historically in my wheelhouse (mainly around prioritisation; most of my other work concerns decomp-ing larger features, which I think is something I can do reasonably well especially in the context of AtlasDB). I do appreciate the challenge here though. The theme I’m going for, as it remains, is superlinear growth; which involves enabling others to work more effectively and guiding them as needed. My interactions with the AtlasDB team thus far and comparing notes with others trying to guide teams suggest that I have a tendency to be relatively hands-off with design but strict with reviews, perhaps in both cases more than I should be.

I had two major trips this quarter (Palo Alto for work, and then Singapore with a stopover in Zürich), which feels slightly above average. There wasn’t much in the way of short trips. I think I enjoyed the change of routine each of these trips provided; work has kept me pretty busy, perhaps because I’m pushing for overly tight quality controls, as I’ve been advised.

I’m unlikely to re-qualify for KrisFlyer Elite Gold this year. I’ve been travelling quite a lot, but I’m in this position for two reasons. Firstly, my flights to the US are mostly done on Virgin Atlantic, which when credited to KrisFlyer earns redeemable miles but not the elite miles that count for status credit. I’ve actually flown close to 20,000 miles in this way. Secondly, I’ve been flying Economy with an extra legroom seat instead of Premium Economy, which tends to earn fewer miles. A cheap economy ticket usually only counts for 50% of the distance flown (while Premium Economy almost always counts for at least 100%), and extra legroom seats don’t actually give you any more miles. I did think about doing a mileage run to top off the 50,000 miles, but the gap is probably too large; I anticipate finishing the year on around 37,000. The 13,000 gap is around one round trip to Singapore (!) on a ticket class that earns 100% miles.

Following on from the Q2 review, I have indeed been less interested in the gyrations of the market. I actually wouldn’t be able to give a confident answer as to how my portfolio was doing without looking it up.

That’s actually somewhat better than I expected, especially viewed in the context of the Q1 and Q2 results. The LS80’s performance seems a little weak as I thought the bonds (which performed well) would help, but it seems that the UK home bias worked against it.  I guess the pound falling by just over 6 percent over the last 6 months against the dollar does make the numbers look nicer than they should be. To be fair, I should have seen this coming; my portfolio has increased by more than the take-home income I’ve made from work, which is obviously untenable without market gains.

Spending has been higher than normal this quarter; about 60% above Q2, and 25% above Q3 last year. I think some of this is connected to stress at work, and some with no longer chasing pristine balance sheets in general. I don’t ordinarily think of Q3 as particularly spendy (typically Q4 is the most expensive, but there isn’t a consistent ordering between the first three quarters).

In terms of logic puzzles, the last few contests for the Sudoku and Puzzle GPs for this year are done. In Sudoku, I had a pretty weak-ish round 7 (score 325; rank 98/414) and a rather solid round 8 (score 435; rank 60/420). For Puzzles, I had two fairly normal rounds (7: score 341; rank 82/344, 8: score 312; rank 93/315).

Overall rankings are computed based on adding up the top 6 raw scores across rounds. There are a total of 8 rounds, so participation in an additional round (no matter how poor) will never harm one’s overall raw score. I guess getting an accurate measurement does require some balancing between rounds (e.g. two participants of roughly equal skill may have very different scores, if one has an off day on an easy round while the other has an off day on an excessively difficult one, since everyone might discard the difficult round anyway), but I’m not sure how to do that. The other obvious mechanism (normalising scores, so that the first-place scorer scores 1 contest-point, say, and everyone’s score is scaled to that) is probably too sensitive to the people at the top of the leaderboard having an off day. Maybe some kind of mechanism where the median scorer scores 1 contest-point, instead, could work.

My overall rank in Sudoku was 66/886, and for Puzzles 92/656. I set a target at the beginning of the year to have a top-100 finish in both, though I was more confident in the Sudoku contest. I missed one round of puzzles and had some pretty poor rounds, so I wasn’t sure if I would clear that mark. I finished 428 points over the bar for Sudoku (which is probably just over what I would score in one round on a good day), but just 61 for Puzzles (I’ve solved single puzzles worth more than 61 points). That should be it until next year; people are preparing for the World Sudoku and Puzzle Championships now. I’m sadly not good enough for those (yet!).

German lessons continue; my teacher went on holiday for 5 weeks but lessons have resumed since. I’m making some progress, though the range of things I’m able to discuss still largely lie in the realm of the concrete (like Ich war in Singapur für eine Woche or Ich muss etwas essen and so on, which mean I was in Singapore for a week and I must eat something). I’ve been reading through the Dino lernt Deutsch series – I’m mid-way through Karneval in Köln, the third book. I also worked on some grammar and writing exercises in both the official textbook we’re using (Begegnungen A1) and another book suggested by the teacher (studio [21] A1).

I’m still enjoying learning as well, though there are some concepts that sometimes seem rather arbitrary. One I’ve run into recently is that of separable verbs. For example, waking up is referred to by the verb aufstehen (literally “up” + “standing”; not too different from “get up” in English, to be fair). However, this verb is separable and thus instead of writing or saying something like Ich aufstehe jeden Morgen um 7.30 Uhr (wrong), I would have to write/say Ich stehe jeden Morgen um 7.30 Uhr auf. However, not all verbs that are compounds have this property (e.g. besuchen, to visit, has be- as a prefix of suchen, to search), so something like Ich suche Singapur be would be wrong; determining whether something is separable or not seems to involve memorizing a bunch of seemingly arbitrary prefixes. I think the grammatical rules once one has identified a verb as separable or inseparable (similar to noun genders) make sense, at least.

Grgur introduced me to Spirit Island, a somewhat heavier cooperative board game. Players play as spirits which aim to protect an island from colonial invaders. The invaders explore the island, build larger settlements and then ravage the land (reflecting pollution/damage brought about by their construction); spirits play powers to directly destroy invaders, move them around, or enhance the strength of the indigenous people to fight them off.

The game takes place in turns, and each turn has two phases for powers (one, for fast powers, happens before invaders take actions; the other happens after). Powers are resolved one at a time, but can take place in any order that the players agree on. This often allows for synergistic plays (e.g. gathering invaders into a land and then hitting that land with a powerful power). Interestingly, finding the best powers makes me think about finding the most advantageous serialization of a bunch of database transactions. Some powers have conditions (e.g. invaders must be present/absent, the land must suffer from Blight or not, etc.) but don’t actually change these states of the land, so they are effectively performing a read of that state of that land; others might affect these traits and would thus be writing to such a key.

I do enjoy the game quite a bit. I’ve played a few times in a group and maybe around ten solo games (though usually playing two-handed), and have won games up to a 9 out of 10 on the difficulty scale. I think a good challenge level for me is probably around 7-8; below that, it seemed like winning was never really in doubt, while the level 9 game was a nail-biter and I won on the very last possible turn.

I usually conclude each quarter’s review with some insight into the music that I’ve been listening to, though this quarter has seemed a bit dry. I think finding new music can be hard; flights on Singapore Airlines are usually a good opportunity for me to discover things, as the IFE usually has a good selection – however this seems to be less true on Virgin Atlantic and on Swiss. My more conventional pick here would probably be Jonah Baker’s cover of Ariana Grande’s thank u, next (this was published in November last year, but I admittedly don’t frequently actively seek out new music). The second and third verses in the original worked well and I would say I’m supportive of the general messages there (take care of oneself, have self-confidence). These were mostly retained in the cover (swapping genders and the name self-insert, as reasonably expected). I would say that the main issues I had with the original were some possibly gratuitous swearing and the first verse being too specific – it’s relevant to her circumstances but naturally limits the extent to which listeners can identify with the song. These were addressed here, and the execution was pleasant and enjoyable.

Separately, I’ve been listening to a fair bit of video-game music to power me through long implementation sessions; songs with lyrics tend to be too distracting, and I tend to reserve the classical music or solo piano pieces to times when I need deep focus. I’ve posted about the Touhou 2D shooter game series before, and one aspect of that that I enjoy is the music. These tracks tend to be upbeat and have strong, catchy melodic patterns, which I enjoy; two I’ve been listening to quite a lot have been Golden Hymn ~ Ibis Trismegistus and Tracks of the Snow Rabbit ~ Nowhere but Everywhere. The shooting games often have bullet patterns designed to partly follow the music, but I find that they still work well without context. That said, having played the boss battles where the music was sourced from, I’m not sure how much of the context I can strip from each of these tracks.

17:9 (Q2 2019 Review)

This quarter felt particularly tough for me, for various reasons. I remember being tasked as a 16-year old back in middle school to, for a philosophy class, write an essay on the meaning of life. I don’t remember the content of that essay particularly well; I remember that I took an existentialist approach to the problem. Essentially, it is up to oneself to create some semblance of meaning. I think I found the quarter more draining than normal because I was confronted with situations that made me re-evaluate some of the underlying principles I use to guide my decisions.

I’m still on the AtlasDB team. The transactions2 project I’ve been driving has finally been (mostly) completed. It has been almost nine months since this started, and it’s the largest and probably the most difficult project I’ve done professionally. I see quite a few parallels with MCMAS-Dynamic (though transactions2 is probably theoretically easier but more difficult in terms of implementation). There’s always a bit of burnout after launching these large projects, perhaps because of the substantial time and effort invested in them.

Looking forward, the lead stuff now means that I’m helping with scoping and guiding work on pretty much all the major things the team is doing – which also means that for a change I’m not actually directly leading an individual project. I’ve also continued to interview and (I hope) further refine my skills – I like the debugging facet and have kept plugging away at it.

I normally write a healthy section on finance, but it hasn’t featured as prominently this quarter. I normally update my tracker spreadsheets twice a month, on the 10th and 25th, but I missed the 10th June update completely. It’s perhaps a reflection on the importance of different things; as much as I would like to champion financial responsibility or support the FIRE movement, there are many more important things once one’s affairs are mostly in order. This was a pretty normal quarter in terms of saving and spending – there were many things that felt luxurious as I holidayed in Belgium and Japan, but a good chunk of that was prepaid in Q1. Investments seemed to pretty steadily push their way higher up the charts (I’m up a few percentage points); this is probably in part due to a fall in Sterling, though.

One thing that got more serious for me this quarter was learning German – or, as I should say, Ich lerne jetzt Deutsch. It’s a privilege to take lessons at Palantir and the instructor is excellent; besides that, I’ve also been using Lingvist (a flash-card app) to expand my vocabulary. I’ve found the grammar to be quite challenging; the myriad ways in which nouns and adjectives get declined is not something my past experience with English or Mandarin helps with very much. I often use strange mnemonics to keep track of noun gender (such as little Bobby Tables for der Tisch, a Brutalist town centre for das Zentrum, and Minnie Mouse for die Maus). Ich habe leider keine Konfidenz auf Deutsch zu schreiben – that is, I unfortunately don’t have the confidence to write in German (beyond simple phrases and isolated statements).

I travelled quite a bit this quarter, balanced between work and leisure. I visited Boston for the Palantir puzzlehunt. I also visited Singapore for Daniel’s wedding, and Brussels and Tokyo for holidays. It can be quite expensive, but I’ve been finding I need a bit more relief from the pressures of work and general administration than normal. I enjoyed these trips, to some extent in spite of very packed schedules. The Brussels and Japan trips were mainly food-focused (though the Musical Instruments Museum and Sankei-en Garden, respectively, were also standouts; I think we spent about two or three hours in each of these places, but if I was on my own I could imagine spending the whole day there). Satou Steakhouse (teppanyaki), Ginza Tamai (a restaurant specialising in sea eels, or anago) and even the somewhat more humble Toriyoshi (grilled chicken skewers or yakitori, and fried chicken or karaage) were all excellent. I’d like to go back, schedule allowing; I had a really good time.

This quarter also features a fairly large number of bank holidays in the UK, meaning that I had a number of three-day weekends (and four, in the case of Easter). I’ve started to take more interest in enjoying these extended holidays by trying to do different things (as opposed to focusing on reading, logic puzzles or things along those lines). It seems like I end up going on longer walks, and staring at coffee cups in cafes; past me would have decried this as a waste of money – and while I intellectually can’t deny that it is frivolous, I do still enjoy this.

In terms of logic puzzles, the WPF Sudoku and Puzzle GPs are almost over. The seventh round of the Sudoku GP ended last week, and it felt absolutely brutal (I scraped 325 points and a 98/414 rank). It wasn’t my worst round (that was the fourth round), but in round 4 I made steady progress while breaking a few puzzles while this time I struggled to tackle the puzzles at all. I had two good rounds in between (round 5: 51/502; round 6: 57/476). I had two decent rounds for the Puzzle GP – I’d say I’m weaker there, and I ranked a reasonable 90/384 in round 4 and 83/383 in round 5; conversely, round 6 was an absolute mess for me though and I ranked 207/349, which is my first sub-median score in a good while!

I played a lot of Slay the Spire in Q1 but this slowed down; in fact I haven’t spent very much time at all on computer games this quarter. I didn’t play very much in the way of board games as well, though I distinctly remember a Pictionary session where I managed to guess CURRY off a bunch of lambda expressions, and a few Codenames Duet clues – an AIRBASE, 3 clue for MESS, FLAG and APRON which landed perfectly, and a game which went wrong when I tried to be smart and gave a STEEL, 5 clue for a bunch of vaguely metal-related words not noticing that BEAM was an assassin – or rather, noticing that it was there, but having my mind filled with images of laser or wireless signal beams.

Musically I’m not sure where things were going this quarter. I did listen to more instrumental pieces. A good number of these were piano-focused, both classical (like Liszt’s Hungarian Rhapsody No. 2) and relatively modern (like Rush A and other entries in that series). Some of these also come from video games (like Fantastic Light, Ancient Flowers from the Touhou series). A common theme here might be speed – many of these pieces are very fast. Perhaps I find music to be an outlet for dissatisfaction when things are not going quickly enough.

On the flight back to Singapore, in between rounds of Tetris I listened to Calum Scott’s debut album Only Human. I think I recognised his name from his Dancing On My Own cover, though I really don’t watch much TV or listen to the radio so I didn’t know what kind of music he produced. It was mostly very listenable, though a bit on the heavier side (I guess in my opinion at least this fits his voice much better, though).

I particularly enjoyed three of the tracks on the album, though I think only one of them can reasonably qualify for my song of the quarter. The opener If Our Love Is Wrong is well put together, though more specific to Scott’s situation; the closer Not Dark Yet (a Bob Dylan cover) works well but is a bit too dark for me to enjoy – which is probably the point. My winner is the much more straightforward You Are The Reason; it’s a clean and well-executed piano ballad that seems to carry a certain gravitas. The line in the chorus about fixing what one has broken also appeals to me; I think if I look back at the songs I’ve chosen, failure and subsequent correction is a pretty common theme (e.g. Starting Over, These Days, Back from the Edge). Scott’s vocal line does get pretty difficult to follow, but it makes sense given the subject matter.

Notes from a Nervous Engineer (2019 Q1 Review)

I think the first time I came across the concept of a scarcity mindset (where one approaches problems believing resources are finite) when I was around 14 or so. This was in The 7 Habits of Highly Effective People. To quote Covey:

Most people are deeply scripted in what I call the Scarcity Mentality. They see life as having only so much, as though there were only one pie out there. And if someone were to get a big piece of the pie, it would mean less for everybody else.

Covey recommends its counterpart, the abundance mindset, which is the idea that there are enough resources out there for everyone. That said, I don’t buy in to the idea of abundance being superior, because resources and opportunities often are scarce. I’d bring in the Bruce Lee “I fear the man who has practiced one kick 10,000 times” quote here; bearing scarcity in mind forces prioritisation, and that if done well is really useful. This may be dangerous, but I’d hazard that scarcity can lead to fear that one is stagnating. This, if managed well, can drive one to, to use Covey’s terms, aggressively “sharpen the saw” (pursue self-improvement) as well.

There are sides of the scarcity mindset that are certainly dark. There is a danger of casting things that are not zero-sum games as zero-sum games. Aggressively focusing on scarcity can lead to excessive stress and blind short-term optimisation (manifesting in things like money dysmorphia as described in this Guardian article). I’m also somewhat guilty of this, but it can lead to hoarding. That said, in my experience a scarcity mindset is often unfairly tarred and feathered – it indeed can often be dangerous, but it has its uses.

Software Engineering

Things changed direction; I expected to move off AtlasDB, but instead became the tech lead (admittedly with a bit of dithering and some convincing from other storage experts – and a few non-storage ones too). My responsibilities have changed somewhat in that I have been spending more time maintaining context and reviewing code. I don’t think there are benchmarks, but I suspect the amount of individual development work that I do is still high relative to other TLs (in any case it’s a spectrum – I’ve worked with one in the past who did more work than I did).

I also got started on studying Designing Data-Intensive Applications after recommendation from some engineers whom I respect. Having spent almost two and a half years on AtlasDB, most of the material is not particularly new to me – that said, this would have been an excellent read when I just started on the team. I’d recommend the book for people working with distributed systems (even if they’re not necessarily working directly on distributed systems – e.g. if doing support).

Finances

With Brexit looming, the pound has been extremely volatile. I was a bit of an uneasy Remainer during the 2016 referendum. In any case, the way things have panned out since has sent me very firmly in the Remain direction now. I’d say my exposure to sterling cash is at relatively low levels. I tend to be somewhat risk-averse, and although GBP is probably undervalued, the danger of no-deal is there.

I haven’t been tracking the markets very closely; from what I remember things went up in January (after getting smashed at the end of December) and then have mostly gone sideways. It’s also coming to the end of the 2018/2019 tax year; I’ve seen the ISA ads around, though not so many for ‘use your capital gains allowance’ which is something I should look at this week.

Expenses-wise, Q1 has been awkwardly high; some of this is because of one-off expenses for activities that’ll actually take place in Q2 (travel and holidays). My overall savings rate is still decent, as income was higher because of bonuses.

Travelling

I had just two trips out of the UK this quarter, and interestingly both were to visit specific friends in the context of specific events. I went back to Singapore in January for Isaac’s wedding – that was a very short trip as I only had close to a day or so to actually spend with family. The other trip was to Zurich for a weekend trip in February to meet Stan.

Hobbies

The logic puzzle train has been chugging along. I took part in most of the WPF Sudoku and Puzzle GPs, though I missed one round of the puzzles as I was in Zurich that weekend. I’ve always been stronger at sudoku and it shows – I’m on overall rank 60/774, with rankings 82/599, 139/598 and 47/541 in the three rounds. I thought round 2 went pretty well, though I broke an easy Classic Sudoku and, more significantly, a (I think still easy) Braille Sudoku that was worth a lot of points. Round 3 was good – all three of the ‘weird’ variants at the end were disposed of quickly. For puzzles I’m on overall 167/557, with rankings of 102/434 and 93/405 in the two rounds I participated in. We’ll see how Sudoku Round 4 goes, though I think it went poorly for me.

I’ve been reading a fair bit too – some readers may recognise that the title of this post is inspired by Matt Haig’s Notes on a Nervous Planet. I first came across his earlier work Reasons to Stay Alive randomly in a Popular bookshop in Singapore late last year, when waiting to meet a friend. I found the book pretty captivating, though I didn’t buy it then – instead, I placed an order for the book to be delivered to me in London. Both of the books held my interest; the former was raw and pretty compelling, while the latter is more familiar territory for me and I think I could to some extent identify with his perspectives.

I also found James Clear’s Atomic Habits to be a very practical read; I’ve been following his emails for a while. I appreciated the principled approach the book presents. He first establishes that things that become habits tend to be obvious, attractive, easy and satisfying; he then explores how to influence behaviours to increase or decrease how much they show each of these traits.

General Thoughts

It’s been a stressful quarter; there has been a lot of change at work, unease in my financial situation, and discontent with things in general. Perhaps this is something worth thinking about; there’s a passage near the end of Notes on a Nervous Planet on diminishing returns, where Haig observes that many people have tendencies to repeatedly move the goalposts when successful. For me, “be good at math” became “top my class in math”, then “top my cohort in high school in math” (I failed this one, though unexpectedly got Physics instead), then “get a first at Imperial”, then “get the first at Imperial”… “with a 90 average”… “while running a club and working part time 20 hours per week”. Similarly, “be a good dev”… can quickly spiral into “with patents”, “building large features”, “be a principal engineer” and so on. It’s important to maintain perspective as to whether the repeated escalation of these goals is something one really wants to do.

There’s usually a song I associate with each quarter. This time around I’ve been listening a fair bit to Drunk Me by Mitchell Tenpenny. He’s a country artist and I don’t listen to country very much, but this is pretty much a straightforward pop song. There are some awkward metaphors in there, but generally I find the production pleasant, and the A4s he hits in the chorus are nice enough. The message involves giving up habits that are likely to lead the singer back to his ex, which is a pretty logical response.

I’ve been sober
‘Cause there ain’t no hangover like you girl
“Baby, can you come over?”
I always find those words at the bottom of a hundred proof

I don’t drink much alcohol, though I do drink quite a bit of coffee and chocolate. In a sense, my ‘alcohol’ would be activities or behaviours I find addictive that are likely to lead to ruin or negative consequences. This could include things like obsessive fear over how the markets are doing or how Brexit is going, or spending time procrastinating. I don’t think there is an object of spite here, unlike in the song, but nonetheless the idea that one may find value in cleaning up one’s life is something I can get behind.

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.

2018 in Graphs and Charts, Part 1

When most people think of graphs, they would probably think back to mathematics lessons in middle or high school, where it typically refers to a plot of how quantities change in relation to one another. Graph sketching was for some reason a large part of the university admission process for mathematics and computer science related courses, even if many of the curves that candidates were tasked to sketch could be approached in a rather uninspired algorithmic way.

There is a looser definition, which is closer to what I’d call a chart, which is a graphical representation of data. Some people do say things like “line graph” or “bar graph” (interestingly, “pie graph” is rare).

Moving away from mathematics and data representation, a graph also refers to a glyph or character in terms of typography, leading to terms like digraph for pairs of letters that make a single sound, though I don’t think usage of the term by itself is common.

As a software engineer, there is a fourth definition – a graph is also a structure comprising a set of nodes and a set of edges that connect these nodes. This structure is very useful for modelling many things with network-like structure, such as in communications, path-finding, or reasoning about state machines. You could say the core of my Masters’ thesis about MCMAS-Dynamic was a novel algorithm for exploring certain types of graphs quickly; one of what I’d call my flagship projects at Palantir also revolves around graph algorithms.

There is a risk of shoehorning all kinds of problems as problems solvable with graphs, in this sense (I remember some jokes I had with a couple of friends at university on trees, a specific subset of graphs, applying to everything). Nonetheless, graphs are very useful. I’ll use both the computer-science graphs and the looser ‘graphical data representation’ as I recap some of the things that I did (or happened to me) in 2018.

Travel

There was quite a bit less travel this year, and you could say the destinations involved were maybe a little less exotic (though I still maintain that the trips were good). One thing this map doesn’t quite show is the frequency each route was taken (though looking at this it seems that each path was actually taken once; I’ve made two trips to Singapore, one through Frankfurt and one direct).

I think most of this is just a decrease in travel for work, which was lower than normal. Leisure travel remained about where it has generally been (a total of 32 days this year, though that does include quite a few weekends). I don’t know if this is because of Brexit making my pounds buy less meaning I’m less likely to think about travelling. This could be relevant to the US or Zurich, but not necessarily elsewhere where the cost of living tends to be lower. Writing this, I remember my restaurant-quality six-euro dinner in Croatia…

Going forward, I hope to have a more interesting graph/network in 2019. Hopefully Brexit won’t get too much in the way of that – you might think that as a Singaporean I won’t be directly affected, but I will be. The pound might depreciate, making overseas travel expensive, and the length of the non-EU queues might increase. There is also talk of the Schengen version of ESTA coming up as well.

Logic Puzzles

I joint-set one of the puzzles for Palantir’s 2018 puzzlehunt, and have also been doing quite a few logic puzzles, including sudoku; I placed pretty decently at this year’s UK sudoku championship, and a bit more weakly in the puzzle division. Considering puzzles more broadly, they can be classified into a variety of types. Sudoku probably counts specifically as its own class, but there are also more general ‘number placement’ puzzles – you might have heard of Kakuro. There are other genres – ‘loops’ like Slitherlink; ‘object placement’ like Battleship and ‘shading’ like Nurikabe, among others.

I had the impression I was substantially better at sudoku than most general puzzles (a good chunk of this might just be experience-related), and probably better at number placement too. Conversely, I always struggled a lot with spatial reasoning in school and at Math Olympiads, so I thought my skills with loops would be weak.

One of the sites that hosts these puzzle contests is Logic Masters India. They ran a series of puzzle contests in 2015 that were split by genre. They also have a rating system, to facilitate comparison of skill across contests. A player’s overall rating is an aggregation of rating events; the computation of this aggregation is a little complex, but figuring out the score at an individual rating event isn’t too hard.

  • An event has a raw score, computed from individual puzzles – raw scores are compared to determine overall ranking.
  • Define ranking score (RS) as one’s percentile performance in the contest multiplied by 10. In other words, the top contestant scores 1000, and the median contestant scores 500.
  • Define point score (PS) as the ratio of one’s score relative to the top scorer, multiplied by 1000. The top scorer thus scores 1000; someone who scored half as much as the top scorer scores 500.
  • The overall rating score is a weighted average of the two: 0.75 * RS + 0.25 * PS.

I tried out each of the contests in the set, along with a sudoku contest, and calculated my overall rating scores for each, which are reflected in the graph above. Expectedly, sudoku is strongest (experience, probably). I didn’t realise drawing snakes was considered a genre by itself, though given it is I knew I would be terrible at those as I usually approach those with mainly intuition. I don’t know what the intended standard deviation of ratings are, so it’s difficult to comment on the significance of the differences.

Stock Market

The price over time of a security is a good example of a time series. This naturally lends itself well to a line graph, with price as the vertical axis and time as the horizontal axis.

One can similarly graph the size of a portfolio; the above reflects the value of my workplace pension, re-based to 100 at the start of this year. However, this is for the most part only sampled monthly (or sometimes bi-monthly, depending on whether there were other events that made me look at my portfolio), so the resolution of the data is very limited.

This year has (and it’s good) reminded me why there is an equity risk premium. Consider that a zero-growth environment would mean a straight increasing line, as additional contributions are coming in. Hence, the small decline from January to February or stagnation in October actually refer to periods where the market went down; the steeper-than-normal gain in May and August refer to periods where the market went up. This makes a fair bit more sense if one also looks at the performance of an accumulating world index tracker.

Source: Morningstar. Disclaimer: I do hold as part of my portfolio the Fidelity World Index P fund.

As expected, prices slumped in February and October, while rallying in May and July. Interestingly, there is a rather pronounced late-March to early-April decline that isn’t reflected in our original graph. This is an artifact of sampling – the March reading was taken on the 21st of March, and the April reading on the 23rd of April, by which time prices had already mostly recovered.

That One Thing (2018 Q3 Review)

Monomania refers to a mental disorder where one pathologically focuses on a single thing (naturally, at the expense of others, as one’s attention is limited). To some extent, I may have experienced this in my second year at Imperial, where for some reason I became fixated on my academic performance. I remember studying almost 100 hours per week when preparing for my exams then (typically achieved by a very strict 9am-11pm schedule everyday for about five to six weeks). I’m not sure how I managed at the time. In terms of grades, I think one should aim at 60 + epsilon, 70 + epsilon or 100, and I chose the last of these.

Things have changed since. I now evaluate how things have changed over a variety of facets. Even professionally, the metrics are a bit more multi-dimensional now. I’m not sure if it was the Palantir internship or something else, but in fourth year I made some decisions that clearly weren’t optimal as far as academic performance was concerned (working 15-20 hours a week). At that time, my main goals were get an average of 90% and submit twenty pull requests as a part-time software engineer. After I graduated the metrics became writing papers and pull requests; the latter quickly changed to patents as, all other things held equal, I find developing two or three innovative systems far more interesting and probably more meaningful than fifty rudimentary changes.

In terms of development, I’ve certainly found my recent work to be challenging (which is a good thing!). I’ve been continuing my focus on performance work, though now that many easy wins have been taken the features are getting more complex. I’m also starting to have more clarity on the kind of work that motivates me (and discussing this with my lead and others); having such discussions feels relevant and good.

I presented the LDLK on finite traces paper at AAMAS’18 (and it seems I now have a h-index of 2). It’s unlikely there’ll be another conference paper for a while though, as I’m currently diverting my computer-science energies towards writing a journal paper which summarises and extends the three conference papers to some extent.

A highlight of the quarter was receiving the VCLA award for an outstanding Masters’ thesis as well (Imperial article). In terms of raw computer science difficulty, MCMAS-Dynamic is probably the most complicated project I’ve delivered (there are a couple I’ve done since that I’m also proud of, but I’m pretty sure MCMAS still wins). Some recognition is always nice; too much ego-stroking can be unhealthy, but the odd bit is enjoyable.

In terms of finance, I didn’t really pay much attention to things this quarter. I was aware of the Turkish and Argentinian currency troubles as well as the US-China trade spat, but things on my end are still largely business-as-usual. In fact I thought this quarter was not going to be good, but looking at things it’s largely an effect of recency bias; while performance in September was indeed weak, July and August were actually very good.

Disclaimer: I hold my own portfolio, which includes the Fidelity index, VLS 80, iShares emerging markets fund, the REIT, the inflation-linked gilts fund, BTC and USD.

The high expenses of Q2 have actually snowballed further in Q3, though most of this is explainable by six-month periodic expenses and booking travel for the end of the year. Discretionary expenses have actually fallen a fair amount, which is unsurprising as Q2 expenses included Stockholm travel as well as renewing my web server. Savings rate is down, though still on track to be in a good place this year.

Work on dealing with logical puzzles has continued, and I think I’ve managed to find a source of metrics; Logic Masters India has a good selection of past contests along with a rating system. Based on a few of these, my Puzzle skills are currently around the low to middle 600s, while my Sudoku skills are in the high 700s. Individual contests may vary in difficulty, so normalisation is used. Interestingly, this is done on two axes, comparing both one’s score relative to the top scorer and one’s ranking relative to all participants.

I’ve also started to take an interest in cryptic crosswords, though I’m certainly nowhere as competitive at these; my general knowledge is not sufficiently broad. “Logical puzzles” are designed with the intention of being culture-neutral; these often demand a wide vocabulary (which I think I have) and broad general knowledge (less so). It helps that there is a group at Palantir that attempts these recreationally; I’m not aware of a similar group for general logic puzzles.

When one is investigating a search problem, one typically needs to balance exploration (searching prospectively for additional solutions) and exploitation (locally refining good known solutions). Historically when managing my own decisions I’ve largely been pushing exploitation for quite some time. I first discovered an interest in mathematics when I was around six; while this isn’t quite computer science or software engineering, that was near-by. I started programming at 15, and when choosing my degree looked at CS which I felt balanced my interests, skills and prospects well. When I was at university, I had the aforementioned monomaniac episode; since then I’ve branched out a little.

I’ve been behind the times (the song was released in 2017, apparently), but I’ve been listening to Meant to Be (Bebe Rexha and Florida Georgia Line) a fair bit this quarter. I don’t particularly enjoy the vocals in the original, but it’s been covered well; this one is better polished, while this one has the approach I go for when I try to sing it!

It’s enjoyable for me to (try to) sing along to, including the high vocal line in the chorus; it quickly becomes a question of hitting the tenor Bb4 repeatedly. Listening to the song certainly does make me thing of search space exploration problems, specifically genetic/evolutionary algorithms. The lyrics in the chorus sound very much like evaluating a fitness function on a candidate solution and then deciding whether to accept it:

So won’t you ride with me, ride with me?
See where this thing goes?
If it’s meant to be, it’ll be, it’ll be; baby if it’s meant to be.

The first verse has elements of not being too pressured with exploitation as well, and thematically echoes bits of Good Things Come To Those Who Wait which I looked at last quarter. The second verse reflects a degree of caution after being burned by poor approaches in the past. As I plan for what I might want to try to achieve (God willing) on a timescale of months or years, it’s important to not index too heavily on past experiences or initial reads of how a given path may turn out.

Tactics and Strategy (2018 Q2 Review)

I generally interpret strategy to refer to thinking about broader goals and general approaches for achieving these goals; conversely I think of tactics as finer-grained methods for effectively completing smaller tasks (that hopefully contribute to fulfilling one’s strategic goals). As a software engineer who works with databases, strategic concerns could be “the database should be able to serve requests quickly”, or “you shouldn’t be able to shoot yourself in the foot too easily”; tactics could involve using B-trees or clever data structures, or being careful about what APIs one exposes respectively.

For individual endeavours and also at work, I often need to play both a strategist and a tactician. I’m responsible both for determining what to seek at a high level and for implementing the required steps. There’s some tension in devoting resources towards getting better at either of these; I’d say the skills are certainly distinct (though not independent; good strategic thinking requires knowledge of what may be tactically plausible, and one should implement suitable tactics to optimise for outcomes that one strategically favours).

Strategically things have been a bit foggy this quarter. To some end there has been progress in terms of general quality as a developer, at least by some metrics. Getting better technically is good, though it seems to have been more of a focus than I remember prioritising it to be.

I have to some extent been struggling to find satisfaction in things, as well (there was a very relevant series of sermons on contentment in church – but practical application is often much harder than theory). I think some of this was a change from working with a preponderance of ‘shiny’ features leading to patent applications or other forms of explicit external recognition. I even forgot about some features that were clearly valued by other teams or people until they reminded me that I wrote them when discussing what I’d been working on in general!

Outside of work, also, I need to find strategic direction (there hasn’t been very much). With regard to computer science, I need to think where I go from here. AAMAS’18 in Stockholm is coming up and I’ll be presenting there about model checking LDLK on finite traces. This paper was very challenging to write; differently from the first two, I actually had to develop a substantial amount of novel content. I found myself guilty of excessive handwaving in the original proof presented in the thesis – there was a detail which I claimed to be trivial that turned out to require a full column of argument! I also have one more paper to write. I’ve also not been doing as much independent study of both computer science and software engineering as I would like.

In terms of finance, one of the good things about index investing is that there isn’t that much to do once the system is set up. There’s even less if you’ve automated some of the workflows (as I have)! After that, much return is subject to the random walk of the markets – with the (I’d say justified) belief, of course, that that walk trends upwards. The main ‘action’ required then is to stay the course, which requires patience and persistence.

Markets have been a bit of a mixed bag. Equities have gone up a lot apart from emerging markets, but a good chunk of this is likely to be currency effects as the pound fell hard. The usual table follows:

(Disclaimer: I hold the Fidelity World Index Acc, Vanguard LS80, iShares EM index, iShares property index, BTC, GBP and USD in various quantities, among other things.)

Spending has exploded (well, relatively) this quarter. Some of this is due to periodic expenses with a period greater than three months coming in in this quarter – renewing the servers and domain name for this website and brokerage fees. There is also some (I’d say permissible) lifestyle inflation too – frugality or cheapness to the detriment of daily happiness is usually not something worth doing unless one is forced into that position.

My budget also has a category called ‘Learning and Development’, which includes books for reading and fees for various educational activities (such as conferences, lessons, exams and the like). This swelled in Q2. I haven’t been reading substantially more. Most of this was the fees for AAMAS’18, FLoC’18 (more logic!) and music lessons.

I’ve made a conscious decision to spend more time outside of work on various recreational pursuits (even if the precise details of these aren’t clearly directed). I’ve gotten faster and better at solving logic puzzles and Sudoku; it’s difficult to come up with clear performance metrics, but I’m usually able to score in the 70th percentile or so in online contests, and can occasionally squeak into the 80s in broader contests (where the average skill level is slightly lower). I know that I was in the 20s or 30s when I first started trying these. I ranked 42 of 157 in the UK Sudoku Championship 2018, and less impressively 50 of 141 in the UK Puzzle Championship 2018.

I’ve continued writing here – a bit less frequently than I would like, admittedly. I also had my first vocal lesson in about three years or so – it’s good to be back. To some extent I strive for quality in what I do, even in recreation (I told my teacher “I enjoy sounding good” – I didn’t go as far as “I only enjoy it if I’m sounding good”, though that’s probably more true than I like to admit…)

I traditionally feature a song I’ve listened to a lot over the quarter in these reviews; I’ve done this for about five years now, and it can be interesting to see what I was listening to several years ago. In many cases I liked most of the songs then and I still do now; I tend to select quite heavily for a meaningful message or idea, and I like to think I’m quite resistant to faddish qualities in songs.

I first heard this song on a plane (like many others!) when flying from London to Singapore for a one-week vacation in May. I have listened to a couple of songs by the British boyband The Wanted before. One of their heavier pieces, Warzone (about leaving an abusive relationship) featured in my 2014 Q2 review, where I decided the 90- and 100-hour weeks I worked then were a bit too much of a cost. I also quite like Chasing the Sun, and a couple of their album-only tracks as well.

Unfortunately, the band dissolved a few years ago. They weren’t quite as successful as One Direction, so as far as I know only one member, Nathan Sykes, has continued with a solo career. I didn’t actually know this until I came across his new album Unfinished Business (yes, quite apt). The opening track is titled Good Things Come To Those Who Wait. It reminded me a fair bit of James Arthur’s Back From The Edge both aurally and thematically.

The second verse is relevant to some issues I’ve been thinking about this quarter:

Some people run and fall
They don’t even walk at all
There’s nothing to prove, just to feel you exist

It’s important to balance aggressive implementation (“running”) with careful evaluation of whether what one’s implementing is relevant to what one wants to do – especially if the path ahead is unclear. In some cases, it can be better to move more slowly and carefully.

The last line sounds weird, but in context is a reason why the speaker takes his time with things. The converse of feeling a need to prove oneself to others is understandable. I do fall into that trap sometimes, though I know it can be a dangerous thing to do.

More generally, the idea that good things come to those who wait can be contentious. I think it depends on what kind of waiting is involved – waiting to strike when opportunity arises is great (which I think is the point of the song – “I prefer to stick when the others would twist”), but idle, muddled waiting might not work so well.

As far as the album is concerned, I also found I Can’t Be Mad to be excellent. There were also a number of other good songs; I think it was a reasonably strong offering.

Irreversible Changes (2018 Q1 Review)

When I was a student, the academic year was a rather friendly source of periodicity in doing reviews. The ends of the various academic terms lined up reasonably well with Q4, Q1 and Q2 reviews, and a Q3 review was typically reflection about what I got up to over the summer. I don’t think there has been a single large and direct visible change in my circumstances compared to that a year ago. I can see how under such conditions, days and weeks may all blend together into a mush of time. Of course, one can argue that there are still other distinctive events; there are obviously the seasons in weather terms, and also other cyclic patterns (e.g. college recruiting season with high interview volume, winter holidays).

In terms of development, while quantifying growth is always challenging I like to think that I’ve started to see some distinct improvements this quarter. I’m basically the product owner of a rather small but absolutely platform-critical service, and have also started driving some tasks that involve cross-team coordination. The computer-scientist part of me is also satisfied; a paper on model checking multi-agent systems against LDLK specifications on finite traces received an acceptance at AAMAS18, and there is another patent going into the pipeline. Referencing the goals I set at the beginning of the year, performance is along the lines of 0.7 for growth as a developer, 1.0 for paper submission and 1.0 for patent submission (not achieved yet, but more than on track).

I have been spending quite a lot of time on work, and I noticed that I’ve been sleeping more as well – I’m not sure why, but it’s crept up from about 7 to 8 hours pretty consistently. Some of this might be stress-related and some of it might be owing to the colder weather, though I can’t quite put my finger on it.

In terms of skill development, I’m generally slightly behind my desired pace in the various disciplines I considered at the start of the year:

  • This is the ninth post I’ve written this year (interpolation: 13).
  • I’ve only visited Singapore and Switzerland so far this year (interpolation: 3).
  • I’ve walked a daily average of 9,578 steps per day (target: 10,000).
  • I don’t have metrics for singing. I can sing B4 most of the time nowadays, but haven’t focused my efforts on developing a strong upper range to a song in particular. Interestingly my lower range seems to have weakened a bit – I used to hit E2 rather easily, while now it’s a stretch.

Financially, the markets haven’t been the smoothest.

I guess this is my first significant paper loss. I easily stayed invested and even bought more through both the corrections in mid-2015 and early 2016 (e.g. considering VWRD, a USD-denominated Vanguard world stock ETF, these were drops of 13.8% and 10.9% respectively). This time around, VWRD has “only” shed around 9.5%, so it’s not even a technical correction yet. I don’t explicitly hold VWRD, but it’s likely that my portfolio has fallen by a similar amount – except that that’s actually months of income now. There is a price to pay for that equity risk premium.

In terms of friendships, most things have been ticking over acceptably well; I guess stability here is a good thing, and that for the most part has been the case. Some bumps, but nothing out of the ordinary.

I’m very aware that I’ve been spending a larger than normal amount of time this quarter thinking about philosophy and planning, mainly along what direction I’d like to take myself in. Rather expectedly, I find this more mentally taxing than working through even the nastiest and most technical parts of my Masters thesis. I don’t quite have answers yet – and even if I did, my thoughts might easily shift given a day or two (or suitable events).

This quarter, I’ve been listening to “These Days” (Rudimental with Dan Caplen, Jess Glynne and Macklemore) a fair bit. While there are parts of the song that feel a bit formulaic (the progression in the first part of the chorus, in particular), I nonetheless enjoy listening to it. It’s also fun to sing along to, with a fairly broad vocal range and numerous runs, falsetto flips and tough notes to belt out (the middle of the chorus). The song discusses a failed relationship, though all speakers seem to have accepted its failure, and express hope that they may make the best of the situation going forward.

Three years of ups and downs, nothing to show for it now
And I know it ain’t pretty when the fire burns out

I find that the idea also works well unilaterally – having failed and/or aborted ventures is fairly normal (one could argue that a complete absence of failure correlates well with not setting one’s targets to be sufficiently ambitious). Failure does hurt, especially if one has invested lots of effort in pursuing something. Nonetheless, reaching this point implies coming to terms with one’s failure, which is a very good step.

  • 1
  • 2