2019, The Summary
This post is part of a chain of yearly summaries of noteworthy side-projects and self-education. I'm publishing these overviews to provide pointers to interesting resources, to show I'm serious about continuous self-improvement, and to inspire others to have fun with new technologies.
After more than two years in Vancouver, I moved back to Amsterdam. Looking back at the year, I didn't complete a lot of projects (although I have a couple still ongoing), but I did get some reading done. Moving countries somehow always takes more time than I hope.
I completed two in-person courses from Amazon's internal "Machine Learning University" program, but these being internal, I can't point to any public resources. Nonetheless, it was interesting to learn more about time series, which is an area of statistics that I'm not very familiar with, despite five years of artificial intelligence education. It was also fun to follow a course on dimensionality reduction, featuring lots of techniques I knew from various applications (from linear algebra tricks to statistics to advanced neural nets and embeddings), but now nicely brought together into one coherent course.
Ongoing (CV and AWS)
A couple of projects got started this year, but didn't get completed. I started reading computer vision papers again, and built some small prototypes to play with new algorithms (meaning, usually, deep learning models). A couple of bigger projects are in the planning phase.
At work - a new team in the FinTech space - the focus was more on software engineering, and I put some solid hours in setting up a dozen or so new'ish AWS services. I set up Spark clusters, refreshed my Scala skills, and got all serverless.
I'll write more extensively about these projects during 2020.
Woodworking: Modular Desk Blocks
I built myself a new desk, but with a twist. The back side contains a long "rails" for replaceable blocks, so part of the desk is changeable with the use of various specialised blocks. Think soldering blocks (iron, solder, wire), monitor stand, power sockets, calibrated stereo cameras, plants, etc.
I wrote about the desk in this blog post.
Here are a couple of books I read this year, and that I would recommend.
The Mythical Man-Month - Frederick Brooks
This classical book on software project management was first published in 1975, with some reflectional notes added in 1995. A whopping 44 years after publication, much of the content is still relevant in today's world of software development. Of course, the examples are a little outdated, but the majority of the book (and, in fact, modern project management) deals with human affairs more than with specific technologies. It covers elements of agility, time estimates, (lack of) silver bullets, software architecture and design integrity, documentation, cross-team communication, software complexity, and some "recent" (1995) productivity boosters such as OOP, microcomputers, and graphical interfaces!
Thinking fast and slow - Daniel Kahneman
An informative book dealing with the many biases in our thinking (that might be wrong). There is a lot in this book, and it partly overlaps with The Power of Habit, The Black Swan, Predictably Irrational, and other books about mostly unconscious habits and biases that control a large part of our behaviour.
The book explains how our brain has limitations on the amount of information it can consciously process; hence, it takes a lot of shortcuts. It's really hard to become aware of the unconscious processes that are going on (at least for yourself). The shortcuts also make us pretty bad at thinking statistically. There are hundreds of pages with examples where our intuition leads us to wrong behaviour or false beliefs, and at the end of the book you start to question how much of our understanding is actually based in reality. The book is a great reminder to be more conscious about the source of your beliefs and actions.
Predictably Irrational - Dan Ariely
Predictably Irrational overlaps partly with the previous book, but has a focus on behavioural economics. With many first-hand experiments, the author shows a wealth of psychological effects that cause us to make bad decisions from a rational perspective, including anchoring (long-standing baselines), arbitrary coherence (seeing patterns where there are none), market norms vs social norms, emotions, Skinner boxes (= email), ownership bias (IKEA effect, software trials), confirmation bias (polarisation), priming, placebos (is everything just placebos, habits, and self-fulfilling prophecies?), and much more. It's a thought-provoking book, and an easier read than Thinking Fast and Slow.
Factfulness - Hans Rosling
This was my favourite book of the year. This uplifting book explains why the world is in a (much) better shape than you think. Hans Rosling, known for his famous TED talks on global health, describes the tremendous improvements in "developing" countries that have been going on during the last ~50 years, and talks about ten cognitive causes of why we are not aware of them. There is no "gap" between rich and poor (neither within nor between countries), and most people are in the middle. We notice bad news more than good, and are sensitive to fear; we overlook exponential (or S-shaped) developments; we should be careful with generalising, and shouldn't fall for simple explanations or appoint clear villains to blame. There is a long way to go bringing everyone at the same level (while keeping a stable/peaceful/healthy/economic global order and climate), but there is plenty of opportunity to celebrate how far we've come already.
The Hardware Hacker - Andrew Huang
If you're interested in starting a hardware startup, or if for any other reason you want to produce electronics projects in larger quantities, this is the perfect book to start. The author walks through the process of hardware production in China, where labour is cheap and production facilities are widely available. Even if you're not planning to actually produce anything, it's a fascinating read on how easy it has become to set up a full production pipeline, and all the pitfalls that might come up when doing so. It also deals with (the lack of) intellectual property law in China, copycats, pricing, quality control, low-level hardware debugging (to detect failures or to check quality), and open-source hardware.
How Buildings Learn - Stewart Brand
Stewart Brand is best known as editor of the Whole Earth Catalog, and this book came as a recommendation as metaphor for software design. However, it is really about architecture and the life of buildings over time. The book contains many anecdotes of changes made to (mostly American) buildings over decades, with photos taken over time. It's a fun read with many comments about the need to architect for change, although it's pretty anecdotal, and I'm not sure how well the examples generalise as practical guidance.
Countdown to Zero Day - Kim Zeiter
A vivid description of a secret campaign by the USA to sabotage Iranian attempts to produce enriched uranium. It's one of the best documented examples so far of cyber warfare, an increasingly important attack vector used by countries to reach their (international) goals.