Category Archives: _Micropost ๐Ÿช

Learning on your own pales compared to spending time with experts

This has become crystal clear to me at my current job. As much as I’ve had success teaching myself things about computers, nothing, nothing, beats spending time with experts and learning from them.

I had never truly experienced this before and was shocked at how much I was able to learn, in such little time โ€” about C++, git, Linux, and more.

It can be a significant price to pay, but nothing beats literally becoming an employee at a company with experts in a field you care about and joining their team. This is ideal from a learning perspective because as a team member, the experts become invested in your growth and are incentivized to transfer knowledge to you. You just need to be ready to receive it.

Once you’ve tasted this, this truth is also bittersweet. You can only work at so many places. If you have many interests, you now have to live with the fact that for most areas, your learning will be stunted relative to what it could be.


My deep gratitude to the experts in my life: STK, DIR, CSK, MKL, RYB, MZA โ€” thank you.

Dimensions of life happiness

On average, what are the primary, minimal set of life dimensions that collectively contribute towards net happiness?

Or put another way, what are the common causes of dissatisfaction with one’s life, due to lack of something?

Here’s what I could come up with:

  • Monetary Wealth
  • Physical Space
  • Fame
  • Power / Leverage
  • Health / Fitness / Beauty
  • Romantic Relationships
  • Family Relationships
  • Friend Relationships
  • Adventure
  • Freedom
  • Personal Fulfillment
  • Skill

Not everyone is expected to want all of these. But, the list should generally represent the primary desires, on average, of people.

For each dimension, there is no fixed amount that qualifies as “enough to happy” โ€” rather, each goes from zero to “however much you desire in your ideal life”. If you have zero dire for fame, and don’t have any fame, then you have fulfilled this dimension. Note that it is possible also to have too much of a dimension (i.e. too much fame).


WIP: I considered “career success” as something, but I left it out. I think it can be covered by others here.

Dimensions of job happiness

I reflected on the qualities of a job that matter to me and here’s what I could come up with:

  • Technical intensity
  • Personal interest in the domain
  • “Sexiness” of the domain / Can laypeople understand it? (Or better yet, find it intriguing?)
  • Deploy at “scale” (leverage/power) (>= 1000 users)
  • Brand recognition & enthusiasm

These build on top of some base requirements of: working with nice & smart people that I enjoy being around, and being a good fit with the overall company future.

Software engineers must learn to write

There is an immense amount of written communication involved in a programming job:

  • Commit messages
  • Bug reports & debugging discussions
  • Design documents
  • User documentation
  • Project documentation, READMEs, internal dev documentation
  • Project announcements
  • Comments & in-code documentation
  • Making complex situations simple for stakeholders
  • Handling support tickets
  • Mailing list discussions

Software engineers must learn to write well in the same way that they should also learn how to stay organized โ€” they avoid doing so to their own detriment.

How I create so much content

Between my two personal projects, I create a lot of content.

offlinemark:

  • Blog – Writing
  • Twitter – Shorter writing, writing meant to be seen more widely
  • Youtube – Educational content, screencasts
  • Podcast – Stories & lessons from my life, more personal

comfort (my music production project):

  • Music
  • Youtube – Educational content, screencasts on music production
  • Twitter
  • Instagram
  • Podcast

I also have a travel blog that I don’t share publicly.

Some of these channels are more active than others, but I have three principles that help me do it all.

1 – Harvest, don’t generate

I try to harvest content from what I experience & learn in my life, rather than sit down, brainstorm, and generate content from nothing.

2 – Respect inspiration

I’m significantly more productive when I’m inspired, so I try to treat moments of inspiration with great respect and get to work when they come. Sometimes this means being awake at 5:18am writing (as I am now).

Rick Rubin talks about this exact concept in “The Creative Act”.

I try to avoid queueing things at all costs; if possible I just sit down and do it now.

3 – Have buckets for everything

Different kinds of ideas naturally have a medium in which they are best expressed. Insights or essays are best expressed in writing. Educational walkthroughs are best done via screencast. Stories are best told via audio.

I try to have “buckets” (media channels) ready to receive ideas in their best form the moment they strike. This helps you harvest as much of your creative potential as possible.

For a long time, I left content on the table by not having a podcast for offlinemark. I regularly had stories I thought of and wanted to share, but simply had no great place for them, so they weren’t shared. Now that I have the podcast, I notice that I fairly regularly have a thought that is suitable for that medium, and can capture it.


Bonus: 4 – Default to public, and iterate

Don’t get tied up polishing content before you publish it. Default to publishing whatever you have, and remember: You can always polish, expand, or re-release content later. Defaulting to in public maximizes the potential for it to be discovered.


Bonus (Dec 2023 ):

5 – Never let an idea slip

If you’re going to create a lot of content, step one is to not needlessly throw away good ideas when you have them. Ensure that you have some system or tools in place for quickly capturing ideas wherever you might have them. I heavily rely on “Hey Siri, remind me…” on my iPhone which lets me quickly record notes to process later. I use Omnifocus as my todo app which integrates with this. Omnifocus and most other todo apps have a “Quick Add” global keyboard shortcut which is useful if you’re already on your computer.

6 – Not all content needs to be long

Not all blog posts or content needs to be long and arduous to write. In fact, it’s better if it’s not.

7 – Minimize friction

My current blogging setup with WordPress feels very friction optimized โ€” I just browse to my blog, click new post, write, and hit publish. No command lines. No writing in a separate app, then copying the post over. In-place construction if you will.

8 – One-shot it

Get in the habit of “one-shotting” content โ€” forcing yourself to “finish” it in some way in the same session of work. It’s incredibly tempting to leave a piece in a half-finished state and say that you’ll come back later. But rarely does that ever happen and adding things to todo-lists/queues adds weight to your life that doesn’t feel good. Plus, forcing yourself to finish is a creative muscle in and of itself that can be exercised and improved at. I’ve noticed improvement with this for me for music making and writing.

I started a podcast

You can find it here: https://podcasters.spotify.com/pod/show/offlinemark/

It’s an experimental home for content which favors the audio medium โ€” mostly non-technical stories & lessons from my life. I will have audio versions of some of the blog posts here.

I was thinking about the growing number of publishing channels I now have and what belongs where. Here’s what I have so far:

  • Twitter: More polished posts that I feel comfortable directly sharing with a larger audience.
  • Blog: Home base for everything.
  • Youtube: Technical topics where screencasting is most natural
  • Podcast: Stories, life & career lessons, more intimate or personal topics

How to be happy

Note to self:

  1. Remember: You are already enough just as you are, right here, right now. You don’t need to achieve or do anything. 1
  2. Remember: The only competition in life โ€” if you must think of it that way โ€” is to know yourself as fully as possible, and act with maximum authenticity towards that truth.
  3. Remember: All things considered, you have it good โ€” many around the world would kill to switch places and inherit every single one of your problems.

It will never be easier than right now

This is a mindset I use to help with procrastination. It first came to me in my senior year on university when I needed to do lab reports. At that point, I had been doing lab reports for 8 years โ€” ever since the start of high school. And throughout that whole time, they were always excruciating.

But I realized that they were excruciating partly because I always waited until the days before the deadline to do them, which was about a week after the actual lab. By that point, the details of the lab were much fuzzier, making the lab report way harder.

It occurred to me that even though all I wanted to do after the lab is forget everything about it and push it off to the side, that exact moment โ€” right after the lab โ€” would be the easiest moment to ever do the report. As more time passes, it will strictly get harder as I begin to lose the context of the lab.

So I sucked it up and started to immediately go to the library right after the lab and simply do the report right then. It worked very well and I only wished I had started the habit years earlier.

I try to remember this lesson and apply it to my life now. If there are situations where I need to do something, and no additional information will arrive that will influence how the job gets done, I try to do it as quickly as possible to take advantage of the context fresh in my brain.

TIL: Debugging microcontrollers may require hardware breakpoints

I was debugging a microcontroller recently and was surprised to see that I was limited to 4 breakpoints. That surprised me because I’m usually only used to seeing that kind of limitation when using watchpoints, not breakpoints. (See my youtube video for more on this).

But it makes sense after all โ€” code running on this microcontroller is different than in a process in an OS’s userspace because the code will probably be flashed into some kind of ROM (Read Only Memory) (or EEPROM). Since the code is unwritable at a hardware level, the typical method of inserting software breakpoint instructions isn’t possible. So the alternative is to use the microprocessor’s support for hardware debugging, which occupies hardware resources and is thus finite.

What cured my writer’s/publisher’s block

I’ve managed to make writing fun again and have been publishing a lot on my blog lately.

It’s due to three reasons:

1 – Having explicit content categories creates the freedom to post things that aren’t highly effort intensive deep dives.

By introducing explicit post categories (i.e. Micropost, Lab Notes, Essay, Deep Dive, etc) I feel much more free to post without the expectation that every post needs to be a time consuming, deeply researched technical post (which are the kind of posts that are popular).

I don’t have time for those lately, but that doesn’t mean I can’t write or post anything! Explicitly tagging something as a micropost or lab notes takes a lot of the pressure off, and makes me much more willing to write and publish.

2 – I stopped sharing on Twitter.

The curse of growing an audience is that posting to that audience has increasing weight as the audience grows, which creates stress and friction about posting. What if I post something that people don’t like and I lose a bunch of followers? What if I’m straight up wrong? What if I want to share something but don’t have time to fully polish it and people judge me? What if I post too often?

It’s also distracting to share on Twitter, and very difficult to not monitor notifications afterwards.

Furthermore, writing on Twitter was actually difficult in that it took extra energy to abide by the character limits, or fit things into threads otherwise. Writing freeform of my own blog is easier in this regard.

Not posting on Twitter removes a nontrivial amount of friction and stress that used to prevent me from sharing.

3 – Using WordPress (i.e. not a static site generator) removes a ton of friction.

The fact that I can click buttons in a web interface, write and post as easily as sending a tweet makes all the difference.

It’s so nice being able to change the website without coding. For instance, I just added a “Popular posts” feature in the sidebar in the last 5 minutes. Turns out Jetpack already has the feature included and I just had to enable it. I don’t even want to imagine what it would have taken to implement that by hand or with a static site generator.

Though not as fast a static site, the blog loads fast enough and I’m more than happy to take the performance hit.

It’s also awesome that I can quickly edit posts to fix typos, even from my phone with the WordPress app. I do this very often.

(bonus reason: It’s also due to the realization that posts don’t have to be long, can be written in one sitting, and don’t have to be absolutely perfect!)