Skills, stories, and software every dev should know - 123dev #48
Posted on November 30, 2021 • 3 minutes • 615 words
Comments
Logic
How people think has been on the mind of philosophers for ages. Aristotle had the most famous works on logic for around 2000 years. In the 1600’s Gottfried Leibniz attempted to improve on Aristotle’s logic by simplifying it and representing it in mathematical notation.
Two hundred years later George Boole further simplified Leibniz’s logic and notation into what we know today as Boolean algebra. Every introduction to computer science will teach you AND, OR, and NOT which are the foundational components of human logic.
In the 1930s Claude Shannon realized that he could apply Boolean logic in circuits using gates in what he called “switching algebra”. It didn’t matter if the circuits were made of wires with electrons or water with dams. Before Shannon no one connected the ideas that you could build circuits (e.g. electricity, telegraph networks) with any type of logic in them. Of course this thought later evolved into transistors and computer chips.
It’s amazing how much we take for granted in our education and career. We have the benefits of all the people who simplified complex ideas into teachable, concrete “facts” that are obvious in hindsight.
Movements
The spirit of a movement is in its founder.
This applies to movements, technologies, and companies. You can tell a lot about what a community values from the people who cultivate it. Sometimes, you can’t identify individual creators for movements, but companies are much easier. In some cases you can even tell what founders are like by looking at what they’ve created.
Links
If you want to learn more about the history of computing and some of the people involved, this article was a good summary. It’s a fairly long article, but does a decent job summarizing many books written on the same subject.
How Aristotle Created the Computer - The Atlantic — www.theatlantic.com The philosophers he influenced set the stage for the technological revolution that remade our world.
I haven’t had a chance to use earthly yet but I like the idea of it. Usually, for build systems I’ve had Makefiles which execute different commands in containers. This is great for portability, but often requires more make
logic than I want or more bash
than is maintainable.
Earthly combines them by essentially making dockerfiles with targets. I could see this solving some problems and would love to see it implemented as a custom Dockerfile syntax.
About the only thing I don’t like about Earthly is the BSL license which would make me hesitate using it in any company setting and potentially limiting its usefulness.
Earthly — earthly.dev Earthly - The world deserves better builds
Git is a barrier when learning how to code and commonplace once you’ve been developing for a while. It doesn’t mean it’s easy and even after years of using it I still learn new tricks, aliases, and functionality.
Conditionally setting your commit email depending on what folder you’re in is a nice trick if anyone does development professionally and personally. I wish this could easily be set on a per-clone basis but it’s still nice to have a top level way to configure it.
Conditionally set gitconfig Personally, I try to keep my development environment as convenient to use as possible and with the advent of BeyondCorp-style zero trust, more internal services are thankfully available without a VPN required. This makes it easy to access tooling from your mobile device and other places but it can also mean the line between work and personal blurs a little bit. A lot of my custom work-related configuration has been deprecated (utilities for wrangling VPNs and proxies) and I basically don’t maintain anything more than what was already open sourced.