I wanted to share this question posted by Chris Sevilleja on Twitter.
I answered his tweet and he has recommended resources to pursue what I have listed.
This post is a long-form version of what I have shared on Twitter. I only listed three (3) on Twitter to fit the short-form content.
Create a self-compiling compiler
A self-compiling compiler is a compiler that can compile its own source code. The process involved in accomplishing this kind of thing is not new. This technique is called boostrapping, something that has been used even before the '80s. A few examples of modern programming languages that have a self-compiling compiler are the following: Go, Rust, TypeScript, etc.
When creating a new programming language, you need to create a compiler. The initial version of the compiler will be written in a different (existing) programming language. Once you have a compiler you can use it to rewrite the compiler into the intended language and compile subsequent versions of that compiler.
If there is such a thing, I am trying to hit multiple birds with one stone.
- Learn Go towards having advanced knowledge of its constructs
- Write an interpreter and a compiler to understand how the code we write gets transformed so that the computer will be able to execute it
- Learn programming paradigms that I have never encountered before and implement it. This will pave the way in opening new neural pathways in my mind.
To achieve this I am following books written by Thorsten Ball: Writing an Interpreter in Go and Writing a Compiler in Go. In my opinion, these books are very concise, clear and short. It explains complex concepts without being too academic. The author doesn't use any third-party libraries or frameworks, just the standard Go library. Thus, you may follow this book in any programming language you are comfortable with. It also progresses step-by-step in a test-driven manner of implementing the pieces of the interpreter/compiler.
Website Development Workflow
Do you know the feeling of being professionally competent at something but unable to offer your expertise to friends or other people due to reasons?
I have been developing websites my entire career but I cannot compete against a web development studio's speed in delivering something of value to a client.
This doesn't mean that I just can't. The stuff I do at work is not about spinning company websites all day. I am also distracted what to use when it comes to building a website for someone. I do not have a clear workflow on how to spin up a website from zero to production.
When you are building a content-based website, you have to think of three (3) people: the developer, the content creator, and the audience.
You need to have good developer experience so that you could easily hand over the website to another developer. You should also make it simple for the content creator to use. The content creator should never need the developer to create content or any kind of reasonable customization.
Thinking of your audience, you should consider that people should be able to view the website on different devices. You need to factor in accessibility and user experience.
Being part of several non-profit organizations, I have been genuinely wanting to help them create their websites. I also want to help small entrepreneurs to have their businesses online.
To achieve this, I am currently exploring The Power of Serverless for Frontend Developers and the JAM Stack.
Get Confident with Algorithms
My Impostor Syndrome is at its strongest when the topic of algorithms comes into play.
I have a Computer Science background and have even joined ACM competitions in the past. Still, I don't see myself acing any algorithm interview any time soon.
I have somehow convinced my self that learning algorithms is important and I am currently consuming the following resources:
- Alogrithm Design and Techniques @edX
- JavaScript Data Structures and Algorithms
- Grokking Algorithms An Illustrated Guide For Programmers And Other Curious People
- The Impostor's Handbook
- Interview Cake - having second thoughts on trying this.
How about you? What dev thing haven't you done that you feel like you should have by now?
Top comments (3)
Invented "the next ${previous_big_thing}"
Make and publish tutorials