2022 Week 51

in retro

Merry Christmas!

This year we are celebrating Christmas in my friend's house in California. It's so much warmer here than in Seattle. Our kids are around the same age, so they are playing together all the time. It's a great time for us wrap up the last week of work in 2022 and relax a little bit together.


I think a lot about my career path this week, and thus a lot of the reading is around career development.

Like I said last week, in 2023 I plan to be more mindful about my time. I am expecting a baby and I need to become more efficient, both in work and in life. At the same time, I don't think I have done a great job in visibility at work. So here's the challenge, I want be become much better in work while expect to have less time available.

And here's the plan: Get your work recognized: write a brag document by Julia Evans. From day one, I will maintain a "brag document" that lists everything I can refer to in the performance review season. It will list accomplishments, and more importantly, build a narrative explaining the big picture of my work. To implement this idea, I plan to follow Writing Down What I Do — In Obsidian and Just Write Down What You Do: I keep track of what I do in a daily note, which then can be rolled up to a weekly/monthly/quarterly/yearly note. How do I make sure my work is visible? shows an interesting idea about share your weekly highlight as a newsletter, but I think that works better for a manager/director role. Maybe I'll give it a try for a non-temporary, cross-team project.

I also binge read Will Larson's blog as I am cleaning up my RSS feed. Here are my favorite quotes from the posts I read this week:

Lessons not worth learning.

My point is not that these lessons are wrong, they certainly are not wrong in many cases. That said, I think you should choose the beliefs that help you live a meaningful, ethical life. Don’t get too caught up on what’s real or true, you’ll never know for certain anyway.

Time and energy.

I’ve already learned many times, but still manage to forget: when I’m tired, the cure is usually adding something joyful to my life, things rarely improve when I try to strip my life down towards its foundation.

Company, team, self.

People are complex, and they get energy in complex ways. ...folks will accomplish more if you let them do some energizing work, even if that work itself isn’t very important.

Leadership is getting to the correct place quickly, it’s not necessarily about walking in the straightest line.

Career narratives.

While an important part of setting your goals is developing areas you’re less experienced in to maximize your global success, it’s equally important to succeed locally within your current environment by prioritizing doing what you do well.

With all of this in mind, take an hour and write up as many goals as you can for what you’d like to accomplish in the next one to five years. Then prioritize the list, pick a few that you’d like to focus on for the next three to six months, and share it with your manager to discuss at your next one-on-one.

Writing Is Magic talks about why writing is a great way to get better at communication, extend influence, and drive consensus. I agree completely with what the article says, it's just a matter for me to get better at writing itself. I do like the shower example and I am glad to know I am not the only one who does that.

I find, more often than not, that I understand something much less well when I sit down to write about it than when I'm thinking about it in the shower. In fact, I find that I change my own mind on things a lot when I try write them down.

How to become a CTO of a company - A career path is a good read for climbing the tech ladder to CTO.

Why climbing up? Because you can have a bigger impact on the company.

A team lead can change more things than a developer usually, a head of development more than a team lead. The ultimate tech position is that of the CTO and therefor has the biggest leverage, so I needed to become a CTO.

As for how to grow, my main takeaway is the mindset: don't simply be a software engineer, be a problem solver, especially for the business.

The first rule of good promotions is the boss of your boss needs to know you by name and what you are doing and that you are great...People will promote you if you are a problem solver.

(As a CTO)...the CEO will value your business understanding and translating business strategy into technology advancement

I become interested in Postgres extension after reading about PostgresML's post last week. And I find out Supabase is doing a lot of interesting work in this area.

Supabase Wrappers, a Postgres FDW framework written in Rust is Supabase's latest framework to connect Postgres to external systems. Currently it supports Firebase and Stripe, and support for Clickhouse, BigQuery, and Airtable and under development. It advocates "on-demand" ETL with the goal to avoid the cost to build and maintain data pipelines. But it also mentions that, for better performance, it can run external queries in the background, and materialize the data into a local table. "Push down" is under development to achieve better performance.

Foreign Data Wrappers have a concept of "push down". This means that the FDW runs the query on remote data source. This is useful for performance reasons, as the remote data source can often perform the query more efficiently than Postgres. Push down is also useful for security reasons, as the remote data source can enforce access control. Limited push-down support has been added as a Proof of Concept, but this will be a key focus of Wrappers.

pg_graphql v1.0 allows you to query your database with GraphQL.

As of 1.0, overhead introduced by pg_graphql is sub 300 microseconds per request on free-tier hardware. When executed from SQL we see ~1060 queries per second per connection (no parallelism). If we include the entire Auth + HTTP stack, free tier can handle ~645 requests per second. On larger instance the stack handles upwards of 10k requests / second.

In What's new in Postgres 15?, what catches my eyes is the performance speed-up.

...increasing speed up to 4 times of both in-memory and on-disk sorts in version 15 is one of the main reasons to upgrade.

Postgres: Safely renaming a table with no downtime using updatable views describes a zero downtime way to rename a table by using RENAME..TO and CREATE VIEW with transactional DDL so that they happen atomically.

Drowning in AI Generated Garbage : the silent war we are fighting raises a good point on generative AI: the content it generates will feed into the machine learning algorithms on social networks. What will happen if the generated contents dominates the algorithms?

Why you shouldn't use ENV variables for secret data points out why are environment variables are prone to be exposed accidentally. It's implicitly available to the process and its children, and it's easy to accidentally log it. The author uses Docker to describe what's needed for a desired secret management solution:

  • Secrets are always encrypted, both in transit and at rest.
  • Secrets are difficult to unintentionally leak when consumed by the final application.
  • Secrets access adheres to the principle of least-privilege.

The unreasonable effectiveness of f‍-‍strings and re.VERBOSE shows you can combine f-strings and r-strings to make your regex more readable in Python.

Some really cool (programming) tech that I think are underrated... is a good list of tools and libraries that I haven't heard of before.