-
Journaling for work-life balance
When writing about snippets at Google earlier this week, I omitted a fairly important bit: how lists and journaling help me create distance between work and life. This became especially relevant in the pandemic, as I had to work with my therapist on being able to mentally disconnect.
I wrote about my strained relationship with ToDo lists before: all the way back in 2014. Back then I focused on moving away from a monolithic ToDo list, and focusing on just a few major things Iād like to accomplish each day. I continued to do this, but with some changes to my philosophy.
Iām back to keeping a ToDo list, but itās a bit more complex than a single list I used to keep. I split things I care about by days, weeks, and months, and I review these lists regularly.
Last year I learned about bullet journaling, often shortened to āBuJoā. Akin to artisan coffee and avocado toast, this hipster friendly and highly marketable approach has a solid foundation. At its core bullet journaling consists of two parts. First is a consistent and simple notation for tasks, notes, and events: some simple guidelines on how to document what happened, what will happen, and what you need to remember. Second part is a rule set on organizing these lists: daily and monthly notes, custom logs, and so on.
I rigorously keep daily notes about work, meeting annotations, records of important thoughts and ideas, and things I need to do (or have already done). This helps me leave work at work ā or more precisely leave work in a journal. Once itās closed - Iām done for the day. Everything I need to think about is written down, and thereās no need for my mind to wonder back.
Some weeks I omit note taking, and the contrast in my well-being is jarring. My mind wonders back to the events of the week, and I even have trouble sleeping some days. And no one wants to dream about work ā Iām sure as hell not paid enough for that.
Another technique I picked up from the bullet journal keeps me from getting overwhelmed and keeping focus. BuJo advocates for regular migration of ToDo items ā meaning that you should be crossing out and rewriting the same thing over and over again, day by day, week by week. At some point it becomes either to either do something about those ToDos, or choose not to do them altogether. Either way, itās a huge weight off my shoulders.
And this is where the aforementioned snippets come in. At the end of the week, all I have to do is go through the weekly set of notes, and transcribe noteworthy bullet points. Thatās the time I take to look back at my week, migrate tasks I choose to revisit at a later date, or cross off tasks I choose not to do.
-
Communicating via snippets
Iāve learned a lot of cool things during my tenure at Google.
One of those things are snippets. Google (and from what I hear other Silicon Valley giants as well) utilizes a system of snippets: a transparent and widely accessible set of weekly notes. Itās not mandatory, and some groups use it more often then others. Sounds ordinary, but I think itās a lot more interesting then that.
Communication and visibility is one of the major challenges in any paid creative work, but itās especially important in software engineering. Engineers often settle on tasks they know nothing about: tasks are hard to measure and estimate. This makes it even harder to communicate progress broadly.
There are ways around this communication barrier ā regular standups or periodic reviews come to mind. But thereās a better (although not necessarily exclusive), more asynchronous way to communicate and increase visibility. Enter snippets - a condensed list of what happened with you and your colleagues last week, delivered straight to your inbox.
Every Friday, an email notification reminds you to fill in weekly snippets. These snippets might look something like this:
- Project X
- Authored a design doc (link), sent for a review
- Discussed roadmap with stakeholders A and B (notes)
- Debugged issue Z, to no avail (link)
- Project Y
- Cleared backlog for the past 6 months
- Attended a summit about G
- Had 1:1s with C, D, E, and F
On Monday, an email goes out compiling our teamās snippets in a single digest. Skimming through snippets covers any communication gaps from the past week, and raises visibility on what everyone is working on.
This system has many benefits:
- Transparency: you know what everyone around you (including higher ups) is up to.
- You actually remember what youāve done a month from now.
- All the important documents, events, and notes are linked from snippets. Snippets are are time bound, which makes these documents easy to find.
- Teammates and managers can always check snippets to get an idea of progress on certain efforts.
- You manager (whoās hopefully your biggest ally when it comes to career development) has a great idea of what youāre up to.
- Itās easy to find artifacts and proof during performance reviews.
- Higher visibility of glue work (all the little things you do to keep the place running).
This doesnāt have to be a particularly complex system. A running doc with notes could suffice, although email notifications remove a lot of the overhead needed. Even if the organization doesnāt follow the model, I find it worthwhile to keep snippets, and to share them with my manager and team.
- Project X
-
Accessing retirement funds early
As Iām reentering a society after the pandemic, I had the pleasure to chat with a family friend about early retirement strategies. One of the many topics that popped up was about accessing age-locked retirement funds - namely 401(k)s and IRAs. Conventional wisdom is that these account stay locked until you hit a certain age, but funds from these accounts are accessible as long as youāre ready to jump through some hoops.
I put together this post to test my understanding of the subject, so please let me know if thereās something I misunderstand. I used the IRS and the United States Code websites as the sources of truth, and I link to each throughout this piece. The links are likely to get out of date within a few months to a year though, so donāt hold your breath for those.
This article is for retirement accounts in the United States only.
Tax-advantaged accounts
There are 5 tax-advantaged retirement vessels that Iām somewhat familiar with:
- Traditional 401(k)
- Roth 401(k)
- Traditional IRA
- Roth IRA
- HSA
These are not the only tax-advantaged accounts out there for different employment situations, but I think these are fairly common. Hereās a quick reference for each with some stats as of June 2021:
Ā 401(k) Roth 401(k) IRA Roth IRA HSA Employer-sponsored? Yes Yes No No Sometimes Allows for employer match? Yes Yes No No Yes Tax-advantaged contrib. limit $19,500 + match $19,500 + match $6,000 $6,000 $3,600 Total contrib. limit $58,000 $58,000 $6,000 $6,000 $3,600 Contrib. increase at age 50+ $6,500 $6,500 $1,000 $1,000 $1,000 (55+) Taxation Deferred Exempt Deferred Exempt Exempt/free Withdrawal timeline 59 1/2 59 1/2 59 1/2 59 1/2 or 5 years Qualified/65 Mandatory withdrawal 70 70 72 N/A N/A Early withdrawal penalty 10% 10% 10% 10% 20% I dig into each a little bit more below.
Traditional and Roth 401(k)
401(k) is an employer sponsored plan: it allows you to invest in a choice of funds selected by your employer. 401(k) often comes with an employer match, which allows the employer to contribute additional amount on top of the tax-advantaged contribution limit. At age 50, you can contribute additional amount in ācatch-up contributionsā.
There are two limits for 401(k) plans: the tax-advantaged contribution limit (at $19,500/year in 2021, not including employer match), and the total contribution limit (at $58,000) (IRS website). You donāt get any tax benefits from contributing to your total contribution limit, but itās primarily used for ā401(k) megabackdoorā - to funnel money into a tax-advantaged Roth IRA. The limits are shared across Traditional and Roth 401(k).
From what I understand, Roth 401(k) also requires the employer match to be contributed to a Traditional 401(k) account.
Traditional 401(k) is tax-deferred, meaning you donāt pay taxes on the amount contributed, but you pay taxes on withdrawal ā this includes paying taxes on the principal (the investment income). In contrast, Roth 401(k) is tax-exempt. You pay your taxes in advance, and investment income or withdrawals are not taxed.
Early withdrawal penalty of 10% applies if you attempt the funds before age 59 1/2, but keep on reading to learn how to get around that. You must begin withdrawing from your 401(k) by age 70.
Traditional and Roth IRA
IRA is an individual plan which allows for tax-advantaged investments. Direct contribution limit is at $6,000, however rollovers are not capped. Meaning the above mentioned 401 megabackdoor funds donāt follow the limit. At age 50, you can contribute additional $1,000 a year. The limits are shared across Traditional and Roth IRAs.
Thereās technically an income limit on Roth IRA contributions (MAGI of $140,000 single or $208,000 married), but Traditional IRA contributions can be rolled over into Roth IRA (IRS.gov), effectively nullifying the limit. This is referred to as āIRA backdoorā.
Just like with 401(k), Traditional IRA is tax-deferred: you get a tax refund for contributing to it, but youāll have to pay back those taxes on withdrawal. Roth IRA front loads the taxes, making earnings and withdrawals tax free.
Traditional IRA can be accessed at age 59 1/2. Roth IRA can be accessed either immediately upon reaching age 59 1/2, or after holding IRA account for 5 years. Thereās a 10% withdrawal penalty otherwise, and you must begin withdrawing Traditional IRA contributions by age 72 (Roth IRA doesnāt have the mandatory withdrawal period).
HSA
Health Savings Account is another tax-advantaged investment, but itās not tied to the employer (however employers might choose to offer an HSA plan). HSA contribution limit is at $3,600 for 2021, which includes employer match if employer offers any. This can be increased by $1,000 if youāre over the age of 55.
HSA is effectively tax-free, meaning that you donāt pay when you contribute, nor do you pay when you withdraw (but there are caveats). HSA can be withdrawn to pay for qualified medical expenses without a penalty. Reimbursing for expenses does not have an expiration date, as long as the expense was incurred after your HSA was established. You can also withdraw HSA without qualified reasons once you hit the age 65 (which is higher than 59 1/2 used for 401(k) and IRA).
Early withdrawals
Now that the basics are out of the way, letās discuss early withdrawals from each of these accounts.
Traditional and Roth IRA
Letās look into IRAs first, since the most common way to access 401(k) funds early leverages IRA peculiarities.
5-year rule
Iāve also heard the 5-year rule referred to as a āRoth conversion ladderā.
The most obvious candidate for early access is Roth IRA. Roth IRA contributions (money you put in), can be accessed at any time without a penalty or paying additional taxes. Roth IRA distributions (aka the principle, or the money youāve earned) can be accessed using whatās referred to as a ā5-year ruleā.
There are confusingly three 5-year rules when it comes to IRAs, and even more confusingly we care about two of them (the third rule deals with beneficiaries).
The first 5-year rule lets us access Roth IRA distributions within 5 years of owning the Roth IRA account. Simply enough, if youāve had Roth IRA account for more than 5 years, you can access both the money you put in, and the money youāve earned.
The second 5-year rule covers rollovers. Rollovers from Traditional IRA or Roth 401(k) need to marinate for 5 years (per transaction) before being accessible. So if you converted between your Traditional IRA and Roth IRA twice ā in 2021 and 2022 ā youāll be able to access the money in 2026 and 2027 respectively.
This means that Roth IRA can be accessed if you hold the account for at least 5 years, and Traditional IRA can be converted to Roth IRA (a taxable event) and accessed penalty-free after 5 years.
For example, if you opened a Roth IRA account in 2015, and itās now 2021 ā you can access all the funds at any time without paying taxes.
In a more complex example, youād convert the Traditional IRA to Roth IRA, and access the resulting money after 5 years:
- Convert a certain amount from Traditional IRA to Roth IRA
- Pay taxes on the transaction
- Wait 5 years (for each transaction)
- Withdraw transaction amount + earnings
This works out similarly for Roth 401(k) to Roth IRA conversion (but with less steps and without taxes):
- Convert any amount from Roth 401(k)
- Wait 5 years
- Withdraw transaction amount + earnings
72(t) SEPP
72(t) SEPP (Substantially Equal Periodic Payments) can be used to sign up for a payment plan from your Traditional IRA (technically youāre able to use SEPP for your Roth IRA as well, but this will incur double taxes). This is quite a commitment, and youāll be receiving periodic payments from your IRA until you hit the age 59 1/2 (or for 5 years, whichever is longest).
For a Traditional IRA example, you can sign up for SEPP to receive $5,000 annually. This means that each year (until you turn 59 1/2 or 5 years passes ā whichever is longest) you will pay taxes on those $5,000, and withdraw the difference.
Additionally, IRA can be used to pay for large medical expenses (within the same year), high education expenses, home-related expenses ($10,000 lifetime limit), and a few more niche cases.
10% penalty
10% penalty sounds large, but itās really not a terrible choice if the other options donāt work (although I donāt see why they wouldnāt). Given the tax-advantage growth that these assets have been enjoying, 10% penalty is not a steep price to pay. Although understandably loss aversion kicks in, and either a 5-year rule or the 72(t) SEPP sound preferable to paying the penalty.
In case with the Traditional IRA, the penalty would have to be paid in addition to paying taxes on withdrawn amount. Roth IRA only imposes a penalty if you didnāt wait for 5 years since the account creation or the rollover transaction.
Traditional and Roth 401(k)
401(k) can be accessed early (before the required 59 1/2 age) in multiple ways. Both the 5-year rule (aka the Roth conversion ladder) and the 72(t) SEPP can be used to access 401(k) funds.
Roth conversion ladder leverages the ability to rollover Traditional 401(k) to Traditional IRA, and subsequently convert Traditional IRA to Roth IRA (a taxable event). Within the 5 years of that second conversion, you should be able to access the money.
For example, when getting ready for retirement, you may convert all your Traditional 401(k) balance to Traditional IRA. Then each year, you could do the following (this may look familiar from the above):
- Convert $5,000 from Traditional IRA to Roth IRA
- Pay taxes on the transaction ($5,000)
- Wait 5 years (for each transaction)
- Withdraw transaction amount ($5,000)
This works with Roth 401(k) to Roth IRA as well. Itās simpler too, as Roth 401(k) to Roth IRA conversion is non-taxable. Convert Roth 401(k) to Roth IRA, wait 5 years, and withdraw at your own leisure.
HSA
As you may have guessed, HSA balance can also be accessed before the age 65. But it does come with a caveat.
You see, HSA allows you to pay for qualified medical expenses tax-free. No taxes on withdrawal, tax-free growth, and no taxes when paying out. However, these qualified medical expenses donāt expire. As long as you had an HSA account at a time of medical expense occurring, you can get a refund on that medical payment.
This is something that weāre doing ā banking medical receipts (which isnāt hard, given the overpriced American healthcare system) to cash in at a later date.
Thereās a number of ways to access retirement accounts in the United States. Be it through Roth conversion ladder, 72(t) SEPP, or even by using old medical receipts. And now I have somewhere to look back to once I inevitably forget how any of this works.
-
How I write
I donāt blog consistently, and Iām still struggling to find my voice. I find writing difficult for many reasons, especially when it comes to identifying topics worth writing about. I want to bring a combination of passion, expertise, and a fresh perspective into a topic ā which makes finding a theme to cover challenging. To top it all off, English is my third language. Getting the content to flow well is difficult, and I donāt always have the ear for it.
In contrast, I find it straightforward to write once I know what to write about. In part due to the volume of writing I have to do for work: as a technical lead at Google I routinely use extensive design documents to communicate my ideas. I also wrote a book once.
I found a set of techniques that work well for me. I donāt know if these techniques help me write higher quality material ā youāll be the judge of that. But these techniques help me express ideas from my head and onto paper. Hopefully in a digestible and entertaining format.
I never took journalism 101. Like with many things in live, I found my own way of doing things: why take an easy path, when a difficult one could work just as well?
I break down writing process into a set of distinct steps. I start with some preliminary research, write an outline, do my in-depth research, write a wine draft, turn that into a coffee draft, and finally proofread the result. I try to take breaks and get some distance from whatever Iām working on in between these steps.
Preliminary research
This is a step zero, although it might not apply to everything I write about. This is a breadth-first, āopen as many tabs as computer can handleā type of research. Thereās no in-depth reading at this point, and only high level information is consumed.
I picked up this approach from my wife, who is an indisputable queen of online research. I find it tempting to dig into the first source I find. Stopping myself from digging too deep helps me understand the information landscape.
For instance, when writing about financial independence in Cote dāIvoire (a topic I know nothing about) my preliminary research consisted of: a brief review of countryās history, a list of major geopolitical events, investment landscape, and identifying trustworthy sources which could tell me more about currency stability or tax situation.
Iāve also looked for existing sources on the subject, but there wasnāt any.
Outline
This post started with an outline. An outline is crucial to pacing and identifying areas of focus. Chapter summaries in a book, outlining headings in technical documents, or putting together a bulleted list for a blog post ā you name it.
Outline only needs to make sense to you, and you donāt have to use complete sentences. I started with the following outline for this post:
- I write a lot
- Quantity doesnāt mean quality
- I donāt publish most things I write
- A lot of practice with technical docs
- Outline
- Wine draft
- Coffee draft
An outline is not final, and it evolves as I write. For instance, by the time I wrote the bulk of this post, an outline evolved ā something was removed, and a whole lot of things were added:
- I write a lot
- Double down on how bad I am at writing
- Quantity doesnāt mean quality
I donāt publish most things I write- A lot of practice with technical docs
- Double down on how bad I am at writing
- Preliminary research
- Write an outline (youāre here now!)
- In-depth research
- Write wine draft
- Write coffee draft
- Proofread the result
I like to keep an outline on the screen as I write, as it reminds me to write in context. I often jot down a brief outline when I have ideas about writing something: this way I donāt have to start from scratch when I sit down to write.
In-depth research
This is where I actually read through dozens of tabs I opened during the preliminary research. This is where I spend the most of my time for topics I donāt feel particularly comfortable with.
I make a point to time box research tasks. Itās easy to go down a rabbit hole when researching a topic, and thereās always more to learn the more you understand the subject. Putting a time limit on each research topic helps me stay on track.
Wine draft
Step 4 out of 6: this is when I start writing.
I found it near impossible to write without separating creative stream of conciousness from the editing process. The āwine draftā is the first attempt at filling in the blanks. The grammar can be all wrong, and the sentences donāt always have to make sense. Itās not necessary for the content to flow or read nicely.
This is where the outline really helps, because writing top to bottom is generally very difficult. Filling in the blanks under the outline however is much easier. I often find myself jumping between different headings and writing a little bit here and there under each heading.
Prioritizing cadence during this step helps, as a stable writing rhythm helps me enter the state of flow. To stay in the flow, I have a wine draft authoring rule: no sentence-level editing. Moving paragraphs or headings around is fine, but changing sentences is generally not.
Thatās the goal - get as much content out as possible, no matter how much the language rules get abused. I find it easier to edit down a boatload of content, rather than struggle to come up with the missing pieces when editing.
This is the stage when I decide if the content is not worth publishing ā many of my wine drafts never see the light of day.
I find accompanying wine mandatory, but whiskey or tea works in a pinch.
Coffee draft
After the wine draft is complete, I take a break. Often couple of hours is enough to create a distance between me and the text. A coffee draft requires more focus and attention. This is when the messy draft takes shape and becomes (hopefully) readable. You tell me.
I make my way down, sentence by sentence, turning ramblings of a madman into a coherent narrative. I rearrange sentences, correct syntactic and grammatical errors, and liberally remove what doesnāt contribute to the narrative. If the wine draft is particularly incoherent, I simply rewrite each paragraph one by one.
This is when I add illustrations if need be. A coffee draft is nearly the final result, barring typos and minor mistakes.
Coffee helps here, but, unlike with a wine draft, is not required.
Proofreading
The final step involves good old proofreading (unless you have a proofreader: it was great having one when working with a publisher).
I try to proofread in a different software suite, or with different fonts and colors: it helps create further distance between the content and I. For instance, I write this post in Vim using Markdown, but I proofread by reading the final preview using my blogās visual theme.
It often helps to read things out loud too: anything you can do to change up the way you perceive the text.
And finally itās ready to be published: ta-da! This method hasnāt failed me yet, be it for writing Mastering Vim, technical design docs at Google, or blog posts like this one. Fingers crossed itāll continue working well for me.
- I write a lot
-
Abandoned project showcase: Hikaya
Roguelikes are once niche, but an increasing mainstream video game genre. The genre is named after 1980 āRogueā - a procedurally generated dungeon crawler. Rogue and games inspired by it often include simple ASCII graphics, feature procedural generation of the world, and include āpermadeathā: the game is over once you die.
Many games were heavily inspired by it - like Ancient Domains of Mystery and Nethack, or more recent Cataclysm: DDA and Caves of Qud. Modern games bring a lot of fantastic fusion into the genre too with like The Binding of Isaac or Hades. But I digress.
A few months ago I was struck by a bout of inspiration. Iāve tried countless times before, but never produced a complete video game ā this was meant to be the time! Iāve significantly reduced the scope, came up with a plan of action, and started coding!
I codenamed the game āHikayaā, which means āa fairy taleā in Tatar - my native language (although I think the word itself has been borrowed from Arabic). I planned to make a fairly straightforward roguelike, without too many bells and whistles.
Iāve found a wonderful tutorial on rogueliketutorials.com, which introduces
libtcod
ā a library to simplify the mundane: drawing on screen, handling input, field of view and lighting, pathfinding. Iāve struggled through all of the above before, and knew that getting deep into the mechanical details would slow me down.Alas, I didnāt finish the game. Iāve gotten maybe half way there, before my focus slipped away from the project. But not before getting some screenshots and documenting some interesting ideas I had!
The only contains a dozen dungeon levels, with a short story being told through item descriptions. The player is an adventurer whoās sent by their village to a nearby cave to retrieve the last flame - a placeholder MacGuffin.
Every item and monster posses a fantasy-sounding name, contrasted with a short, but colorful description hinting at a science fiction nature of the objects. Think magic scrolls with touch screens, or injectable health potions.
Each monster type has a unique behavior - with goblins running away and regrouping, ogres snacking on goblins to restore health, and so on.
As the player descends down the dungeon, they encounter multiple bosses guarding the staircases. The bosses drop unique armor pieces, which tell a story of a group of adventurers descending into the dungeon, but succumbing to traps, greed, and treachery.
Finally, a dragon guards the last light on the final floor. The game ends with the player becoming a dragon, and a cycle becomes anew.
I know, I know: edgy, uninspired ā but I enjoyed the premise.
The combat is focused on tactical movement and avoiding damage, and the player unlocks new moves ā like kicks, jumps, or faints ā as they progress through the dungeon.
I wanted to experiment with the health system. Inspired by FATE tabletop roleplaying system, I attempted to use health pools. The system was meant to keep combat dangerous and entertaining throughout the game by making even the goblins dangerous throughout the game.
My biggest experiment came from a health system. Inspired by FATE tabletop roleplaying ruleset, the health consists of multiple pools (as opposed to a single bar). The goal of the system is to make combat deadly, and create a sense of danger even for trivial encounters, while still leaving room for error.
Let me try to explain. For example, a player might have three health pools - for 1, 2, and 3 hit points each. Each time a player takes damage, the smallest pool is used to absorb that damage. For instance, a 2 damage hit voids the 2 hit point pool. A second 2 damage hit clears out the 3 hit point pool. A third 2 damage hit is fatal.
You can see the voided health pools marked as red on the screenshot below, and the full health pools in green:
To complicate thing further, I give players some leeway by slowly draining partially damaged pools over time. For instance, if the player uses their 5 hit point pool to absorb 2 points of damage, Iāll slowly drain that pool over the next three turns. This would let the player take another 2 damage hit (or a few 1 damage hits) āfor freeā immediately after being hit. You can see those hearts marked as yellow on the screenshot above.
Needless to say, the system turned out to be very convoluted to explain in game (and on paper too ā I donāt think the above is clear enough). I still think itās a great idea, but it desperately needs better user experience design to make it accessible. In fact, FATE itself got rid of confusing health pools in itās latest āFATE Condensedā release, simplifying health down to binary hit markers.
Despite not finishing it, putting together Hikaya was a fun experience. Iāve had a great time working on the prototype: Iāve learned a lot, and maybe Iāll lead my next video game project to completion given everything Iāve learned!