Motivation
There are many motivations for starting a blog. Mine are pretty simple. New and eccentric ideas are worth pursuing, and worth sharing!
I've been reading and learning from tech blogs by people like Julia Evans, Mike Bostock, or Vincent Warmerdam for the past several years. They have consistently inspired and filled me with a new sense of awe for what it means to build and exhibit ideas. I felt it was time to start a blog of my own, about topics I care about, with a theme I find motivating, fun, and interesting.
In this first post I want to set the stage for future posts by going over this blog's overarching theme, goals, and a little bit about the underlying tech.
The Art of Abstraction
"First you learn the value of abstraction, then you learn the cost of abstraction, then you're ready to engineer." -- Kent Beck
Abstractions are tools used to simplify complex ideas. They are a medium to ease our minds from tasks at hand so we don't need to fully digest the deeper underlying concepts, just the higher level idea. An example of this is how to drive a car. Understanding how the car regulates the optimal air to fuel ratio is not necessary to know how to drive. The driver just needs to understand how to turn the steering wheel and push on the gas pedal to go the direction they want.
A steering wheel and a gas pedal is just the tip of the iceberg, as there are countless other abstractions that researchers and engineers spend their whole careers assembling and arguing over.
Abstractions are thrown out, re-evaluated, superseded, then thrown out again, all as part of a process, not an end destination. At the end of the day, abstractions are speculative in their value and normally tend to scratch a specific itch.
How people choose the right abstractions to represent the essence of some underlying process fascinates me. This led me to choose the name and overarching theme, The Art of Abstraction, for this blog. This message boiled down into a simple phrase serves as the best bedrock I can think of for how to link new and interesting topics under a single narrative.
Drafting the right seed goals
When starting any project, it's usually a good idea to establish a "North Star" so it's readily apparent when the project's direction is veering off and how to course correct.
One effective "North Star" is a well designed set of goals. It's important to be aware however, that goals are no different from abstractions. Goals should be crafted with the expectation that they will one day be reshaped to fit the changing circumstances they occupy.
Don't expect these goals to be the bedrock, but instead as the seed for future goals to grow from.
Cultivate a digital garden
The concept of a "Digital Garden" has an interesting history and is a very unique idea (see this or this for more).
"The phrase 'digital garden' is a metaphor for thinking about writing and creating that focuses less on the resulting 'showpiece' and more on the process, care, and craft it takes to get there."
Using the abstraction of the "garden" in this analogy to describe this blog is one I can respect and makes everything feel grounded. Phrases like "pulling weeds," "planting seeds," and "watering" have metaphorical connotations for growing a healthy blog as well as literal connotations for growing a beautiful garden.
This concept emphasizes the journey of the creation process and not any one destination.
Stock OVER flow
For a great overview of this idea, check out these two amazing blogs (tomcritchlow and Robin Sloan) from which this goal has been appropriated.
"Flow is the feed. Itโs the posts and the tweets. Itโs the stream of daily and sub-daily updates that reminds people you exist.
Stock is the durable stuff. Itโs the content you produce thatโs as interesting in two months (or two years) as it is today. Itโs what people discover via search. Itโs what spreads slowly but surely, building fans over time."
Stock over flow imposes the opinion that the content creation process should prioritize the verbose and long lasting, over the immediate and short form "status updates." I believe "stock" content sticks in people's minds longer and provides repeated value. If you put the work into a post that improves the life of others, people will recognize it and share it, reciprocating the value back to you.
This goal is not meant to disregard "flow" and maybe in the future The Art of Abstraction will produce "flow" content. But in these early days it's time to establish a solid base and build "stock."
Show AND tell
Most stories presented in a blog lend themselves to text and images, but there are series of amazing untold stories that would have an elevated and profound impact if told interactively.
Blog posts from places like distill.pub, TensorFlow blog, or fivethirtyeight include interactive portions where users can literally click and play with a post and watch how information changes. Experiences like these bring out the kid in me who goofed off playing Flash games to pass the time in school. Interactivity can create a fun experience and leave people just a tiny bit happier than they were before. I want this for all blog readers.
To clarify, not every post should or can be expressed with interactivity. But future content deserves to have the option. Sometimes just a simple button that does something fun will hopefully bring a smile to a reader's face.
The tech ๐ป
If you want to build any technology-based product, you need to choose the right giants to stand on, and the right stack for you.
After researching how sites were built in the past, then watching lecture after lecture after lecture about how they are being built now, I'm sufficently convinced of these new practices and am now a proponent of subjectively "modern" web development. Reading the philosophy of the JAM stack, the PRPL pattern, and learning about the utility of static site generators (SSGs) has really opened my eyes to a new set of tools for building amazing experiences online. The development principles from other proponents of these ideas consistently line up with my own and make me feel that I'm moving in the right direction.
There are hundreds of blogging engines and SSGs to choose from. Each has its own unique utility or caters to a specific developer community. When finding the right SSG for this site I didn't do any particular pro/con analysis. Instead I simply explored what tools were out there, took them out for a test run, then determined what would be the best "fit" for my particular workflow. After playing with 10 or so SSGs I came to a few conclusions that helped me narrow down the selection.
Markup converters are your friends ๐
Every developer has their favorite markup language, whether that be Markdown, LaTeX, or straight HTML. What's better than a really cool markup language? Really cool markup converters! Tools like pandoc that convert your favorite markup language to the format you need are awesome and should be used more! The right converter is a must if want to stick with your favorite markup language.
It's the quality that counts ๐
Quality of software, like age or number of GitHub stars, is a controversial topic. Some people use older software because it may be stable and well-known. The other side opts to use newer software because it may use best practices, is actively maintained, or all the cool kids are using it.
There are a myriad of other reasons to choose your tools. I believe it's important to constantly re-evaluate and check your own reasoning and not to be swayed by shiny toys. Don't choose software just because everyone else is using it. Don't be a lemming.
The tools for the job
Here is a synopsis of the core dependencies for The Art of Abstraction
"Gatsby is a free and open source framework based on React that helps developers build blazing fast websites and apps" -- gatsbyjs.org
Modern front-end development is overwhelming and hard. In order to have a website feel and behave like a modern web app, there are so many boxes that need to be checked. Gatsby easily checks many of those boxes and is the best shortcut I've found for doing modern web development in an approachable way.
Some amazing features that attracted me to Gatsby are
- Configuration and setup is straightforward
- Integrates with the whole React ecosystem
- Great catalog of OSS plugins
As somone who isn't a front-end developer who is faced with the difficulty of front-end development, Gatsby feels like a breath of fresh air.
"MDX is an authorable format that lets you seamlessly write JSX in your Markdown documents. You can import components, such as interactive charts or alerts, and embed them within your content. This makes writing long-form content with components a blast." -- mdxjs.com
Markdown is an extremely effective document writing format. The syntax is pretty painless, it's easy to write, easy to read, and is a target format for a plethora of other tools. While searching for blogging tools I came across MDX and it was instant chemistry ๐๐ค. After writing and feeling the experience of Markdown+JSX, I knew it was the right choice for writing interactive content in a familiar format.
As an added bonus, MDX is a plugin in Gatsby.
"Org mode is for keeping notes, maintaining TODO lists, planning projects, and authoring documents with a fast and effective plain-text system." -- orgmode.org
I've used Emacs and Org for the past few years for professional and personal work, I'm full steam ahead on Emacs and don't have any signs of switching to another editor any time soon. It works extremely well for my workflow and it's the best highly integrated mess I've ever used.
Additionally, from a portability standpoint, Org can also export to a bunch number of formats, including markdown.
The dev flow:
Org -> MDX -> Gatsby
In search of awe
Humans love to tell stories, and if you believe in Littlewood's Law, there are rare experiences worth talking about. I believe there are amazing untold stories about topics in engineering and math that are worth talking about to the world at large. In future posts I hope to fill readers with a sense of awe for our crazy technical and largely invisible world.
Thanks for reading!
(๏พโใฎโ)๏พ*:๏ฝฅ๏พโง