2023, The Summary

Overview of side-projects and learning resources

This is the 11th edition of an ongoing series of yearly summaries with noteworthy side-projects and self-education. It contains short descriptions of projects and pointers to interesting resources. These posts show I'm practising continuous self-improvement and aim to inspire others to have fun with new technologies.

Previous year: 2022 <---> Next year: 2024 (upcoming)

2023

I managed to spend a little more time this year on side-projects. There was a good mix of physical projects, woodworking, and online courses and books.

TinyML courses

It is possible to run simple machine learning (and deep learning) models on microcontrollers. This is a tremendous challenge since microcontrollers, compared to ordinary CPUs, have orders of magnitude less compute power, memory, storage, and power. Even the most minimal deep learning libraries need orders of magnitude more memory and storage than the entire microprocessor has. Many microcontrollers don't even have (dedicated) floating point hardware. The models themselves generally don't even fit in file storage, let alone in RAM. At the same time, there are orders of magnitude more microcontrollers than CPUs in the world, they're ubiquitous, and they're much less power-hungry than CPUs or even GPUs.

I followed 4 courses on TinyML, which is the discipline trying to make machine learning on tiny electronics happen. The courses include multiple practical projects based on TensorFlow Lite Micro. This library includes a dedicated microcontroller runtime and tools to significantly reduce the size of models. Many of these size reduction techniques are applicable beyond microcontrollers, but for TinyML they are indispensable to make it work at all. I used a Arduino Nano 33 BLE Sense microcontroller to run the projects. Projects include computer vision, voice recognition, and (custom-trained) gesture recognition applications. I also gave a TinyML company talk for which the slides are available here.

I'm very excited about the possibilities here, even though the TinyML field still feels tiny. Support still seems limited or non-existent in ML frameworks other than TensorFlow Lite. Even so, it's now possible to run simple computer vision applications, locally and offline, on a $5/€5 ESP32 (including a tiny camera!).

Fundamentals of Manufacturing Processes (MIT)

I followed this course on manufacturing techniques. Many common manufacturing processes are being explained and demoed in clear videos, including basic calculations on the machines and everyday products that could be created with these techniques.

The survey includes classic machining techniques (laser machining, CNCs, EDM, water jets, cutting tools), injection moulding, thermoforming (deforming plastics with heat), sheet metal forming, casting (mostly metals), additive manufacturing (3D printing), and semiconductor fabrication (wavers, photolithography and related steps, PCB production, and assembly). Some aspects related to manufacturing plants were discussed, such as automation and industrial robotics, clean rooms, scale and cost, quality and variation, monitoring and maintenance considerations, sustainability considerations, and overall assembly line design.

I also bought the accompanying book - Manufacturing Engineering and Technology - and read chunks of it. It was interesting to see the curtain being lifted on manufacturing processes that are used for professional products. As I'm into electronics and physical projects myself, I enjoyed the details of semiconductor fabrication the most. Semiconductors are the most sophisticated components we can make, and more recent technologies bring manufacturing to an unbelievably small scale.

Woodworking course

I did a local crafts woodworking course. The course spanned five evenings and guided us to build a mallet (wooden hammer) from scratch with just classic hand tools. It was awesome to spend some evenings in a professional woodworking shop and to disconnect from modern life to focus on a project that needed craftsmanship.

A short writeup with photos can be found here.

Woodworking resources

Interested in learning more about wood products and the lumber industry behind it, I went through a wood science course. The course walks us through the process from forestation (tree growing), harvesting, and drying, up to wood applications. It covers wood properties and the effect of moisture, engineered wood products, and sustainability considerations. All are accompanied by cool videos showing processes you might not normally see when buying the final raw wood materials.

The course also pointed to the book Wood Handbook - Wood as an Engineering Material, and of course I ended up inside that rabbit hole as well. There's much more information in the book. It covers more details on the anatomy of trees (and thus wood), tree types, trade-offs between natural and heated drying techniques, the impact of moisture on wood properties, all kinds of engineered wood-based materials, adhesives and fastenings, and finishings - including photos of various failures that can occur over time. The book is written by some US state agency aiming to inform wood practitioners, making it very practical to have as a resource.

Recommended Readings

Here are a couple of books I read this year that I can recommend.

Pragmatic Programmer - David Thomas & Andrew Hunt

The Pragmatic Programmer is a classic for anyone in software engineering. I read the 20th anniversary - slightly updated - edition and it's full of practical tips on how to become an efficient and lean programmer.

There are lots of practical tips in the book to help take that ownership to the next level, and to help design well-functioning software that is simple enough to adapt in the future. This includes practising basic principles like DRY and KISS, finding the right balance between decoupling and deduplication, and generally tackling projects with lean practices such as quick iterations. We're blessed to be in an industry where we build new things at a complexity level rarely seen before. Coders can take ownership of their work and have a huge impact on their business as a whole. Help the business shape the requirements based on your technical input. Learn your basic tools and learn them well. Have a positive effect on people around you.

This book contains lots of down-to-earth tips that have stood the test of time. Anyone who has been in the software industry for a while will agree with many of the tips in this book, but it is great to have it all written down in such a concise way so you can hand this book to newcomers and help them get up to speed quicker.

The Software Engineer's Guidebook - Gergely Orosz

I reviewed a draft of this book and provided early feedback to the author.

This book is one of the most extensive books on managing your tech career, covering both the technical aspects and the softer skills such as project and stakeholder management. It's mostly written with large tech corporations in mind - less about startups or consultancy work - and contains lots of productivity tips and hints on how to climb the career ladder.

The book is organised in order of career progression: from early-career developers, medior and senior, up until staff and principal levels. Although precise definitions of these levels differ per company and I would personally assign some competencies to lower levels than they're currently assigned, the overall progression matches my experience. The first few years are best spent focussing on developing technical competencies, but they start levelling off at some point, and career progression becomes more about increasing the scope of your projects and about successfully communicating with stakeholders.

Overall it's a pretty comprehensive book covering many aspects of your career. The only similar book that comes to mind is Soft Skills by John Sonmez, which is even broader in scope - covering everything from personal finances to fitness - but less extensive on careers within companies. Both are worth the read.

Atomic Habits - James Clear

This best-selling book could be seen as the spiritual successor to The Power of Habit, but is written by a different author and is much more pragmatic. One of the core suggestions is to break down habits into tiny habits until they're small enough that you don't feel any resistance to doing them anymore. Those small behavioural improvements add up to significant gains over time: the power of cumulative gains.

But the book is filled with other practical tips: from anchoring desired changes into 'identity-based' habits ("I'm a person that regularly posts on their blog"), to tips for making the classic cue-routine-reward cycle work better, to 'advanced techniques' that take into account your natural abilities and gamification preferences or advice to develop meta habits for reflecting on your habit forming habits. Every decision you make is a vote for the person you want to be. Help yourself vote well by making the desired choice the most obvious, attractive, easy and satisfying option.

Tidy First? - James Clear

A short book - just 100 pages - with practical tips on refactoring. A lot of tips boil down to making the changes small ("tiny tidyings"). This helps to reduce upfront resistance to the time investment and reduces resistance to the actual changes afterwards. Separate tidyings from changes in business logic, and find the best rhythm between the two. The book also contains plenty of advice on how to recognise opportunities for small refactors, and how to go about doing so.

 

        -------------------------------------
        |                                   |
        |           related graph           |
        |          /             \          |
        |       graphs         relations    |
        |                                   |
        -------------------------------------