Introduction: The Road to Seoul When I initially accepted my offer to Coupang (and consequently made the decision to move to South Korea), I had an interesting mix of expectations and anticipations. There was a lot of excitement, mixed with a healthy amount of dread - after all, this would not be my first across-the-world relocation. One of the expectations I had was that I would experience, for…
In 2026, we made a Really Seriously Big Decision to relocate to Seoul, South Korea (let’s see how it goes, but it will be for a couple of years at least). Naturally, having moved to a different country, we resolved to learn the local language (boy, is it hard!) — so being able to type in it is essential. Also, for those who know me, it’s hardly a secret that we are bilingual: we speak…
I am mostly leaving this note to myself for future reference - but maybe someone else will find it useful too. When MassiveGrid decided that right about now is a jolly good time to raise their prices from ~$25 for my VPS to just under $100, I felt that the grand VPS migration I’ve been contemplating for a little while now is actually overdue. To spare you my soul searchings, I went with…
Some of us like to read news. Then again, some of us have to read news for work – specifically, to stay in the loop of what’s going on in the industry. For some industries – like cybersecurity – this means sifting through a goddamn ton of news websites and discarding 99% of what you’ve read. Such is my life. RSS comes to the rescue – somewhat. A carefully curated collection of RSS…
I have a very specific use case for my Onyx Boox Note Air 3: whenever I need to dive into a big topic, I ask ChatGPT or Gemini’s Deep Research to produce a report-style article. Depending on the subject, it can run anywhere from 10 to 50+ densely packed A4 pages of text. Reading that on my computer is, frankly, painful — so I learned to put my e-reader to work instead. One recurring issue, though,…
Over and over again, on X/Threads/Reddit I see debates about why software engineers have to sit through “useless meetings” and Zoom calls instead of focusing purely on writing code. It’s a fair question, and not as simple as it looks. As a Software Engineer at Meta I am very protective of my calendar, and I ruthlessly cut meetings where my presence is not essential. But you…
I’ve just received my Beelink Mate Mini 80 Gbps dock for the Mac Mini M4, and after half an hour of playing with it, I’m really quite impressed. It looks and feels very “native” – it can be positioned strategically on top of, or right below, your Mac Mini. It closely follows Apple’s aesthetic and doesn’t look out of place in the slightest. The most important…
Why Planning Matters (Even When It Fails) I don’t think it will come as a surprise to any of you, but every company, big or small, has to do planning. They often say that any plan [of battle] falls apart at first contact with the enemy - but after going through countless planning sessions, both at Meta and elsewhere, I came to a perhaps counterintuitive realisation: the outcome of the…
This is the third post in my “Meta: 8 Months Later” series. The first one is here . In these posts, I reflect on the onboarding plan I made when joining Meta — and how it actually played out. In the first two posts I’ve been talking about how I’ve been following my onboarding plan , where it came to technical mastery and strategic influence respectively. In this post, I…
This is the second post in my “Meta: 8 Months Later” series. The first one is here . In these posts, I reflect on the onboarding plan I made when joining Meta — and how it actually played out. As a reminder, this was the high-level outline of the plan: Technical Mastery — Gain a comprehensive understanding of the systems, their architecture, and the underlying technologies critical to…
Someone pinged me yesterday, saying they had been reading my posts before joining Meta, and now they’re curious what I would’ve done differently, knowing what I know now. It got me thinking. No plan of operations extends with any certainty beyond the first encounter with the main enemy forces. — Helmuth von Moltke Reflecting back to when I was starting at Meta 8 months ago, I can’t…
It’s been a while since I last wrote about anything vaguely network-related - well, that’s because everything’s been working fine. Until now, that is. Virgin Media decided that randomly going down for a couple of hours is a fine way to spice up their users’ otherwise boring lives. And when it’s up? Why not crank up latency to 500ms a few times an hour, just for…
It’s been a while since I published my original post on how to configure Obsidian LiveSync with self-hosted CouchDB - and many things have changed since then; in particular, I moved away from using this approach in favour of using GitHub - relatively rare merge conflicts are totally outweighted by the fact that I have read/write-able version of my notes in the browser, and can access them…
There were tons of comments on my recent Threads post related to consuming large amount of documentation during onboarding process, and some comments really resonated with me to the point that I decided to put up a summary here. Onboarding - especially in a senior role - often feels like drinking from a fire hose. There’s an enormous amount of information, often hundreds of people to speak…
Those of you who’ve been reading me for a while already know that I’ve joined Meta after 14 years at Google; what’s more, I’ve switched from a senior managerial position (basically, managing managers and sometimes managing managers of managers ) back to the IC role. To be perfectly honest, I knew that I would enjoy it - but I didn’t know I’d enjoy it quite so…
Before I joined Meta, I had a few expectations about the engineering culture here. The most notable being: Move fast and break things (though the “break things” part has been retired for some time now) Meta uses a monorepo (just like Google). But, as is the case with Google, there are actually several monorepos - so yes, it’s technically a misnomer, but that’s just how it works.…
Welcome to the penultimate post of the Safety UX series! In the last post we introduced Safety Center - a unified security surface for all of Android, but the journey didn’t end there. There was a number of problems with this approach and a number of corners to square. To call out the first and the most obvious one - the way it was built was OK for Pixel, but not OK for the entire Android…
Welcome to the series of posts on the foundations of safety UX in Android. This is the 6th post in the series. Among other things, previously we discussed what is Safety UX , how package verification works in Android, how we built Google Play Protect and why we decided we need to keep going . If you remember, we finished the last post by saying that solving the problem of unifying Safety UX in…
Welcome to the series of posts on the foundations of safety UX in Android. This is the 5th post in the series. Among other things, previously we discussed what is Safety UX , how package verification works in Android and how we built Google Play Protect . If you remember, in the last post we finished with saying that while introduction of Google Play Protect was a major breakthrough in user safety…
Welcome to the series of posts on the foundations of safety UX in Android. This is the fourth blog post in Safety UX series. Previously we were talking what Safety UX exactly is and how package verification works in Android. I’ve already mentioned how we came to realisation, that Android’s protections need a face and a name - just having something that sits in the background simply…
Part III - Package Verification in the Android OS This is the third post in Android Safety UX series - you can find the first one right here . In the previous post, we mentioned that Google Play Protect was our first step in the direction of building Android’s safety UX. Google Play Protect is Android’s dedicated anti-malware solution, and is currently the most widely deployed…
This is the second post in Android Safety UX series - you can find the first one right here . Part II - Safety UX: what’s that all about? Previous post was but a teaser for things to come. Here, we will start talking about our journey towards building Android’s safety UX - how we came to the realisation that the work is needed, and what we did to address it. Let me start with a cool…
This post is intended to be the first of the series Android Safety UX series, talking about Google’s journey and findings in the space of keeping Android users safe. So, without further ado… Part I - Perception is Reality or Hidden Challenges in Cybersecurity I wanted to write this post for a very long time - but only realistically found some time to do so when I was in between jobs -…
Recently I’ve been playing a bit with Facebook’s Hack language and HHVM. To be perfectly honest, I did a several attempts to get going with it - and it wasn’t a particularly smooth ride. To get it out of the way - using Hack outside of Facebook is a bit of a pain (then again, using google3 outside of Google is not possible at all, so it’s all relative). The documentation is…
I’ve been using Obsidian for some time now; if this is the first time you hear about - think of Notion, but the one which is local to you - where you control where the files are stored, and what information - if any - is shared with other companies. In the most basic sense, Obsidian is just a nice wrapper around a bunch of Markdown files, stored on your local disk. Introduction and overview…
I am one of those people who are constantly torn between their desire to take physical notes right on the page of the book - and the desire to keep their books pristine and unmarked. Naturally Kindle Scribe (and other e-notes) are pretty much God-sent for me. However, I am also one of those people who are not particularly fond of renting books from Amazon - I’m sure you are aware, that when…
I have a confession to make: I really do hate voice messages. WhatsApp, or Telegram, or Signal is your messenger of choice - I’ll freely and happily ignore anything that is not sent as a text (worst case, as an image). Or, I’d rather ignore it. Some friends and family just choose to continue sending me these voice messages and apparently are fully capable of holding a grudge when I am…
Do you remember 2003? I do, and quite vividly at that. I was in my early 20s, studying at uni, working my first “real” software engineering jobs, and using Windows - hey, mostly everyone used Windows those days! Actually, I’m so old that I used DOS - starting from version 5.0, and I remember how thrilled I was when I got my hands on Windows 3.1. But I digress. Where DOS was…
I did mention before that I’m using dual ISP configuration, with one of them being fast (Virgin, 350/35) and the other is reliable (Andrews & Arnold, 80/20, 24x7, and generally much lower latency all around). I found that sometimes I want some device just to use a specific ISP, and not the other. For example, I want my MacBook to use the reliable (and low-latency) connection for work. USG3,…
I have been using Audioengine HD3 speakers for a while now, and I am very happy whenever I’m using them on Mac or Windows. However, whenever I am about to do some hacking and boot into Linux (Ubuntu 22.04 for me, but seems to be it’s exactly the same across the board), they just refuse to work. Well, not exactly refuse to work - if you happen to have a .wav file ‘formatted’…
Since I started working from home more or less full time, a stable broadband connection rapidly transformed from “I would really rather have it” to “I can’t function without it”. And while Virgin Media has been mostly reliable for me for many years, every now and then hiccups happen (like yesterday, and today for that matter). For a piece of mind, I decided that 40…
Docker has a somewhat complex relationship with arguments. For starters, one has to distinguish between build-time variables (a.k.a. $ARG in Dockerfile ) and runtime variables (a.k.a. $ENV ). Then, there are environment variables that are set at runtime, and there are variables that are set in docker-compose.yml files. Finally, there are variables that are set in .env files. For one of my…
I have a bunch of personal services which I deploy using Docker. One issue I was constantly struggling with is how to know from which Git revision Docker container was built - and how can I go to that revision easily. While in “serious” development you’d use a CI server and some form of release process, for my toy service I ended up hacking together a very simple script that…
I love writing code for hardware. I don’t like hardware per se (must have something to do with me missing electrical engineering classes at uni) - but I find the concept of working at a bare metal level extremely fascinating. So naturally, I gotta love QEMU. For those non-initiated, QEMU is a “A generic and open source machine emulator and virtualizer” - or, in layman’s…
I must have mentioned that I am an avid reader, and with the number of books I’m reading, keeping physical books is simply not an option (besides, all of our many, many bookshelves are already occupied by kids’ books, so there you go). Naturally, many years ago (even before e-ink was a thing I guess) I switched to reading on mobile devices. My first e-reader was - don’t laugh -…
Blogging is hard. To anyone who tells you it’s easy, feel free to punch them in the liver, they are lying to you. I mean, back in the days, when LiveJournal was a thing (or at least a better thing that it is now anyway), blogging was easy and fun - you create a LiveJournal page, and start posting there, making friends, and one day someone will comment your post. Right? Well, not so easy now.…
In the previous blogpost we discussed how to configure PCI passthrough on Proxmox; presuming you’ve done it, it’s now the time to configure graphically accelerated remote access, so on we go! When you boot your instance with PCI-E card available you will immediately notice two things: lspci confirms that you have your graphics card available in the system, and … the graphics is…
Overview For my personal life I am using a combination of a Windows PC, which dual-boots into Debian, which normally works really well. However, every now and then, I don’t feel like booting into Linux, or trying to do something remotely from my laptop - for that I always wanted to created a virtualised development environment (I am running a custom built home server with Proxmox for most of…