Category Archives: _Micropost ๐Ÿช

Tiny, short thought. Less polished.

I like WordPress

Among programmers, it’s very unfashionable to use WordPress for your blog. (“PHP? Yuck.”) Instead, you should be using the latest minimalist static site generator, hosted on the latest free static hosting.

(A decade ago, this was Jekyll on Github Pages โ€” I haven’t bothered to keep up, but I did put in my time. At various points, my blog was based on Jekyll, Pelican, and Octopress).

In 2020 I decided to restart my blog, but just use WordPress.

Three years, later this has been an unambiguously good decision. I keep running into things that save me significant time, compared to me trying to code this myself, or use a static site generator.

I think the proof is in the pudding. If the goal is to actually publish writing on the internet, consistently, over a long period of time, I’ve done that (or at least am well on my way โ€” see the Archive).

Here are some handy things I’ve found myself needing that were just there for me. I’ll add to it as I run into more.

  • Automatic redirects if you change a post slug
  • Rich plugin ecosystem for nearly everything
  • Extensive documentation, both first and third-party on how to do things. Even ChatGPT can advise.
  • Ability to customize with PHP if absolutely necessary
  • Migrating to a different permalink structure was a piece of case with the Redirects plugin
  • Built in RSS feed
  • Built in Recent post
  • Built in Top posts/pages (via Jetpack)
  • Built in downtime monitoring (via Jetpack)
  • Easy mailing list integration (MailChimp, ConvertKit, etc)
  • Built in grouping and taxonomy features (Tags, Categories)
  • Built in Monthly Archives
  • Built in comments
  • WordPress/Jetpack mobile app for easy editing/moderation on the go
  • One click plugin install to have dark mode for blog
  • Builtin pingback detection if someone links to me

Be your most authentic self (and write about whatever you want)

I love writing about computers, but I also love writing about other topics like creativity, art, and productivity. However, many programmers out there strictly blog about technical topics, which made me feel a bit weird for posting random stuff like poems or my experience with GTD.

This led me to a dilemma: Do I blog all in one place, or do do I perhaps create a separate blog for non-technical content?

My answer is to apply my “golden piece of advice”: Do what feels most authentic to you.

For me, writing about all of my interests is the most authentic expression of myself, so when in doubt, I do this. Curbing this instinct, and making a strictly technical blog just to be like “all the other programmers” wouldn’t be.

It’s totally possible that “all the other programmers” simply don’t feel a desire to write about anything else. So making a strictly technical blog is their maximally authentic expression of themselves โ€” which is great for them! Let’s all do what feels most authentic to us.

Hiding in this case study is a profound lesson about life. The situation applies equally to any other life situation where you feel some pull to act in one way, but feel some hesitation upon observing “everyone around you” seems to act.1

When in doubt, apply the “golden advice”: Do what feels most authentic to you.


I’m very happy with this decision. It feels great to have a single place which all of my thinking, which also has the practical benefit of making it easier for potential followers to submerge themselves in all my content.

I also believe this will win in the long run as it’s more likely to resonate with like-minded people that can respect having a myriad of interests โ€” the kind of people I’m looking to connect with!

Lastly, there’s the non-trivial but subtle benefit that simplicity of infrastructure & accounts actually matters and translated into a lot of time saved.

WIP: Fame is a hamster wheel

Different forms of capital have different benefits and drawbacks. Money has the benefit that it can grow itself over time, with the downside that it is heavily scrutinized and taxed. Fame has the benefit that it is not taxed, but has the interesting drawback in that it requires maintenance, and lessens over time.

To retain your fame, you need to continually be doing things and delivering value to your audience. Otherwise, your audience will naturally shrink as people forget about you, and their attention is diverted elsewhere by others playing the fame game.

So if you think achieving fame will make you happy, be careful. The moment you achieve the fame you’ve been seeking is not the “end” โ€” it’s actually the beginning of a hamster wheel you’ve just stepped onto. You might stop to celebrate, but don’t stop for too long โ€” now you need to worry about maintaining it (or even exploiting it), lest you lose it and become a “one hit wonder”. The only other alternative is to keep running.


(This post was written based on my small experiences obtaining nano-fame with my offlinemark and comfort projects).

3 weeks of GTD

I read GTD (Getting Things Done) a few weeks ago and have been applying it since then.

I can say since implementing it: my stress is lower, I feel much more in control & at peace, and I’m happier overall. So I’d say it works โ€” or at least there’s really something to it.

Concretely:

The process of taking a fuzzy/vague/unpleasant idea of a project and progressively making it concrete by 1. Identifying the specific outcome, and 2. The specific next action has been critical for me. I wasn’t aware of this and would often get overwhelmed by these fuzzy ideas and let them linger (which made them worse). I often find that after doing the 2 steps, the idea is much less overwhelming, and often much easier than I thought (or even can be done trivially).


I was using Omnifocus wrong โ€” I now work out of my Forecast view which I believe is the intended way to use OF and actually works well. OF 4 is great, in particular for how much better the iOS app is (specifically implementing Focus mode).


I find that I make more forward progress on things in general. Adding an action to a list gives me extra “credit” for having done it, because now I can check it off. But the big thing is I’m now aware of things that I can take action on (and how small and simple they often are). Often I get stuck on actions that involve other people (Ask person X this, post on Slack asking for help with X), and having an action be made concrete and on a list can help me power through it and simply send the text or make the call. I’m more aware that I have no answer to the question “So what’s you’re excuse for not taking the action to move X forward?”, and just do the thing.


A physical inbox has been useful. I’ve discovered that having my physical environment be clean is very important for me, and a physical inbox facilitates this by creating a designated, controlled place for clutter.


I’m amazed at how much of GTD and being productive is about writing things down in such a way that will trick your future brain into not being overwhelmed, and actually doing them.

The first part is writing specific, exciting, and inspiring project names (i.e. “Host best friend for a great weekend” instead of “Best friend visit”).

But the second and more important part is realizing how not to name actions. For example, I’ve learned that I shouldn’t write tasks like “Decide A”, or “Problem solve B situation”. My brain will immediately get overwhelmed and resist the urge to even consider this. Breaking those down into even smaller steps is a must. Like “List pros/cons of A decision” (Not too hard – just listing bullets, not “making a decision”), or “Brain dump B situation on whiteboard”).

There’s an art to writing the next action.


Even with GTD it’s still possible to overload yourself and put more into your system than you have capacity for. I’m still struggling with how to manage when I have tasks I constantly postpone week after week.

But I am learning. I’m finding that if something continually gets postponed, there are a few things I can consider:

  • Is it even important? Can I simply delete it?
  • Is it a matter of phrasing? Can I re-word this to be more palatable to my subconscious brain?
  • It is a matter of breaking it down even further to a smaller increment? But not so small as to be meaningless โ€” my subconscious brain sees right through that. (i.e. “Make a google doc” isn’t quite enough for me).

Advice for learning the dark arts

I loved this episode of “My First Million”:

https://www.mfmpod.com/become-a-better-writer-in-60-minutes-masterclass/

It’s about how to communicate effectively for persuasion, which is very useful in business and life.

But I wanted to explicitly state an underlying assumption of their conversation: These techniques are a “dark art”.

These are not general principles for all kinds of writing. It would be mistaken to assume that one must apply these principles in any kind of writing โ€” ie.g. academic, creative, formal. These are techniques to deploy when you have specific goals for your writing, and are writing within specific contexts.

They come with tradeoffs and sacrifices, such as making your writing more “sales-y” or “clickbait-y”, which can decrease credibility or compromise an artistic vision. The exact tradeoffs depend on the context and community, but they exist. That’s why I call them a dark art.

What is mastery?

To use an analogy from cooking:

Mastery is when the chef not only knows how to make oatmeal the “right” way, but is able to answer if you ask “What happens if we use half the water? Twice as much butter? No butter at all? 4x the milk?”. Because they’ve tried all these things before.

A master understands where the canonical solution fits in the greater design space of all solutions, and the tradeoffs involved. They can explain, in depth, what happens if you “do it wrong”, and can provide examples of instances where you might want to.

A master understands when the laws of gravity actually break. 2

Resources for learning systems programming

A note of caution: Be careful of spending too much time doing the easy work of looking for “resources”, rather than the hard work of consistent practice. Have fun ๐Ÿ™‚

Top Recommendations


Textbooks

Websites

University Course Materials

Youtube

Linux/FreeBSD

Linux/POSIX Userspace

  • The Linux Programming Interface: A Linux and UNIX System Programming Handbook

Blogs:

Concurrency & Parallelism

Turtles all the way down

Everything is an app to the layer below it.

  • A web app is an app to the web browser
  • The web browser is an app to the operating system
  • The operating system is an app to the bootloader
  • The bootloader is an app to the boot ROM
  • The boot ROM is an app to the CPU boot sequence

Even if people already know the plot, they appreciate the way you tell the story

This is something my former colleague, Trent Brunson, told me on Twitter once that I’ll never forget. I tweeted earnestly how there were many things I wanted to share, but was concerned that everyone else knows these things already.

Trent’s (now-deleted) reply was:

I can’t think of a single time where I haven’t learned something from you. Keep sharing! Even if people already know the plot, they appreciate the way you tell the story.

So go forth, share freely, and don’t worry if the topic has already been covered, or if people are already familiar with what you’d like to share.


Accept the constraint and deal with the consequences

I deal a lot with decision paralysis and this has been a helpful mental tool. Decisions I might get stuck on:

  • Which product do I buy of these options
  • Which apartment do I move into
  • Which travel itinerary do I book

Decisions are effectively constraints on your life path. At one point, you have N options open to you, but after the (permanent) decision, you now have only one, the one you chose.

The paralysis comes from worrying about making the wrong decision and suffering because of it. But at a certain point, the decision process saturates. You run out of time and energy, and spending more of them doesn’t create a better decision. (It might worsen it in fact as you second-guess a previously good decision.) But even at this saturation point, you still might be unsure what to do.

Here, I find that it helps to just:

  • Recognize that moving forward is more important than making the “best” decision
  • Pick a promising option and accept that I’ll deal with whatever future consequences
  • Move on