Logo with initials

Things I don’t know

──── 3 mins

It’s the 2018 Christmas break. Dan Abramov, a respected engineer in the web community, wrote a blog post that I loved. The title was Things I Don’t Know as of 2018.

The idea was “we can admit our knowledge gaps without devaluing our expertise”. Since then, many coders wrote their own versions of the blog post, sharing their own gaps. It was a collective effort to help junior developers feel more comfortable.

I didn’t have a website then. With the role of front-end engineers getting more ambiguous by the day, it’s time for me to do my part. Here are the (coding-related) things I don’t know, as of 2021.

Terraform and other Infrastructure as code (IaC) tools
My experience with configuring servers is something like “How powerful is it? Does it Scale? How does it scale?” I reach for an SRE otherwise.

I can make my app run in a Docker container on my computer. I can expect it to behave (roughly) the same way in other computers. When it comes to getting that container to talk to other containers in a coordinated manor, I can’t help you.

Eigenvalues and Eigenvectors
That’s the limit of my linear algebra. I have a rough idea of how eigenvalues and vectors relate to a transformation. I’ve not yet understood how to use them in practice.

Functional languages
I never touched Haskell or F# and don’t get the hype around Clojure. And don’t get me started about other ML-style “compile-to-js” languages. Monads and functors look like spelling mistakes to me.

Signal processing
That’s a field in and of itself, but managing audio is an important part of Game Development (my first love). Maybe I used Discrete Cosine Transforms for textures once? Oscilloscopes, oscillators and waveforms are mostly painful memories of boring physics classes.

98% of AWS
AWS offers more than 100 services. I’ve used Lambdas (serverless functions), S3 (file storage), EC2 (servers), and Cloudfront (caching). I can tell you that there are a few “AI-oriented” services that will do stuff like text-to-speech, or handwriting recognition. I probably couldn’t name 20 of those services.

To me, clang is an onomatopoeia for metal hitting the ground. For C++ people, that’s a compiler. I can probably use the modern version of C++ in a tool like OpenFrameworks. I don’t know anything that relates to binaries or make code run across compilers.

Go and Rust
Which programming language I’ll learn next changes every week. I’m excited about both. I like that Go has strong conventions and a comprehensive standard library. I love that the Rust Game Development community is very active. Lots of wonderful command-line tools and engines are coming out in Rust.

grep and sed.
I know my way around xargs and wrote a series of articles about my favourite command line tools. Yet the syntax of these two commands is undecipherable to me. I tried but grep "e$" logs.txt | sed 's\*(.*\)/\2, \1/' just doesn’t work. Also, what does a “streaming text editor” even mean?

There are more, no doubt. But these have come up at various points in my career/learning journey.

If you’re a developer/designer/doctor and think Imposter Syndrome is a problem in your industry, share your list too. Humility is underrated.

539 words