Newsletter Issue 6
I wrote a simple introduction to algorithms and why they're important and a short guide to my current logseq-projects template.
Summary and Reflection 🤔
This week I wrote the first section intro-to-algorithms from the algorithms-boot-camp which focuses on a simple introduction to what algorithms are and why they’re important
For some “brain food” I share some thoughts from my all time favorite tech talk and an interesting paper on AI playing Stratego.
Updates 🆕
intro-to-algorithms
The first section in the bootcamp focuses on introducing what an algorithm is.
This guide is really basic, but I think it’s helpful to start with a really high level introduction.
In computer science, an algorithm is a series of steps written in code that a computer runs to perform a task.
I go through some examples of algorithms, what they can do, and why they’re useful.
Productivity Toolkit 🛠️
In this section, I’ll share a productivity tip I’ve learned recently.
logseq-projects
I manage almost everything I do with logseq-projects . I use them to group tasks across different initiatives, prioritize them, and make progress on them. See this guide for an explanation or jump straight to my logseq project-template
Brain Food 🧠
In this section, I’ll share some interesting articles and “food for thought”
Quote
Simplicity is a prerequisite for reliability.
Edsger W. Dijkstra
One of my favorite tech talks of all time is “Simple Made Easy” by Rich Hickey”. It’s mostly a philosophical talk, it doesn’t have much code in it.
This talk is about the difference between simple and easy, in the context of designing complex systems like computer software.
Many programmers are obsessed with making things “easy” for themselves but we should be much more concerned with making things “simple” so they are reliable and easy to maintain.
Tools focused on programmer convenience may do things you don’t fully understand.
Simple vs Complex
Programmers use the word simple and easy interchangeably. However, they’re two different yet related concepts.
Examining the root word of “simple” and “complex” sheds some light on the difference between “simple” and “easy.”
So the first word is simple. And the roots of this word are sim and plex, and that means one fold or one braid or twist.
And the opposite of this word is complex, which means braided together or folded together. Being able to think about our software in terms of whether or not it’s folded together is sort of the central point of this talk.
We can look at something and see that it’s “simple”. We can’t do the same for “easy”.
Simple vs Easy
“Simple” is a concept we can objectively look at, whereas “easy” is much more relative to the individual.
What’s easy for me may be hard for you and vice versa.
The critical thing to distinguish it from simple is that easy is relative. Right? Playing the violin and reading German are really hard for me. They’re easy for other people, certain other people. So unlike simple where we can go and look for interleavings, look for braiding, easy is always going to be, you know, easy for whom, or hard for whom? It’s a relative term.
We throw these terms around sort of casually saying, oh, I like to use that technology because it’s simple, and when I’m saying simple, I mean easy. And when I am saying easy, I mean because I already know something that looks very much alike that. It’s how this whole thing degrades and we can never have an objective discussion about the qualities that matter to us in our software.
If you want everything to be familiar, you will never learn anything new because it can’t be significantly different from what you already know
Focus on the output of your process
We focus so much on our familiarity with tools and short-term convenience. Let’s focus more on the quality of the product we’re shipping and the sustainability of developing it.
Modern tools and processes are so focused on making things fast and “easy” for those making the software, but these processes often produce “complex” results, which eventually becomes “hard” to maintain long term.
Instead we need to focus on making things “simple” above all else.
Simple may be harder, unfamiliar, and slower at first, but in the long run simplicity is the only sustainable way forward.
Link of the week
AI Masters Stratego Board Game
AI can play Stratego at an expert level now
Stratego is one of the few iconic board games that AI has not yet mastered.
This popular game has an enormous game tree on the order of 10^535 nodes, i.e., 10^175 times larger than that of Go.
I used to love this game growing up. I didn’t realize it was one of the hardest board games in the world.
The reason it’s so difficult is because you can’t see your oppononents pieces. It has “imperfect information” like poker, so you have to infer what’s on the board.
Knowing that it’s a mathematically interesting game renewed my interest a bit, and I’ve been playing it on mobile. It has a great “quick play” mode which randomizes the initial layout which makes it much faster to practice.
Analytics 📈
Still amazed at the res pins
Outro
Check out the newsletter-roadmap to see what I have in mind for future issues. Let me know on twitter @bsunter