In the software literature, sometimes "transparent" means transparent, and sometimes it means opaque. This week, I explore the history behind both uses, and try to find a synthesis: explaining.software/archive/transp…
For the next few weeks, we'll be exploring both sides of this coin. To start, we'll look at the simplicity of keeping things apart: explaining.software/archive/the-si…
This intuition arises from our industry's decades-long treatment of coupling as, at best, a necessary evil. And, in my opinion, it's entirely wrong. Cohesive code doesn't have to be understood all at once. Rather, it's best understood incrementally: explaining.software/archive/the-si…
Almost every discussion of simplicity in the software industry builds atop the coupling/cohesion dichotomy introduced by Stevens et al in dl.acm.org/doi/10.1147/sj…. There, they defined relationships inside functions as "cohesion", and every other relationship as "coupling".
For the past few years, I've been working on a book about software design. Lately, I've been feeling the need to ensure that its core ideas resonate with a broader audience. As such, I've started a newsletter: explaining.software/archive/a-brie…
I recently gave a talk on some ideas from my upcoming book on software design: youtu.be/tHThXQr7wwA. There’s a lot I didn’t have time to cover, but I think it conveys the general perspective I’m taking and some of the central themes.
Earlier this year I went part-time at Microsoft to work on a new book, which will cover many of the same topics as Elements of Clojure, but more clearly and completely articulated, and hopefully accessible to a broader audience.
The tick's model of its environment cannot guarantee a consistent outcome. For any given values of heat and sweat, there are scenarios that lead to success and scenarios that lead to failure. Nevertheless, the tick survives; its simplistic model satisfices.
Self-consistency is necessary, but not sufficient. When evaluating software, we cannot ignore the broader context. We must take advantage of every available perspective. We must be dissatisfied with easy answers. We must be curious.
There are countless resources for creating self-consistent abstractions, but few for creating useful abstractions. This is in part because self-consistency is an objective property, while utility is hopelessly subjective.
In software, we don't have the luxury of ignoring context. We need our models to be self-consistent, but we also need them to be *useful* within our given environment.
Hoare's abstraction function, like the Church numeral, is a mathematical abstraction. It describes a model which has provable qualities and is often described as "correct," which means it is self-consistent. By omission, it deems the context unimportant.
But the cons cell is not timeless; since its invention in the late 1950s, computers have changed. Notably, processor speed has improved more than memory latency, and so the relative cost of following a reference has grown over time.
For a table to be useful, it must avoid conflicts. One way to accomplish this is to keep the table private so it reflects only our vision of how keys map onto behavior. Alternatively, we can extend the table using only private keys so no one else can shadow our behavior.
A reference *conveys* values, and a conditional *decides* based upon values. These are complementary primitives and are present in every modern language. Through their composition, we can create software of arbitrary complexity.
20K Followers 1K FollowingI only X for RTs, DMs & promos. For thoughts & discussion, find me over at https://t.co/muoXTbOj9C & https://t.co/HsnrFljtCo.
4K Followers 3K FollowingProgramming language development, human factors, and a healthy dose of Emacs. Also https://t.co/faGheKDz69 and https://t.co/sqqeQ20uHV
0 Followers 8 FollowingCaught in the brilliance of profane novelty, the Creativity delivers Art with great pretension. CyberPrime is now available at your prehension.
871 Followers 5K FollowingCommunity, App integration @BrightIDProject
Views expressed are through my own being, and no other is response-able for them.
249 Followers 1K FollowingSenior R&D in Energy | Building https://t.co/09Z9GKpACK — Next-gen simulation for tyre/plastic pyrolysis, biomass gasification industrial decarbonization
1K Followers 3K Following🧠 AI Engineer | 💻 Software Architect | 🌍 Ethical Acceleration #ethacc |
Diving deep into the matrix of AI and programming languages. @perarneng.bsky.
523 Followers 4K FollowingThese posts may be a discovery.The question here is why has this not been discovered, it is so simple.What could the reason be.Can you help to find the answer ?
2K Followers 2K Followingbraai/acc. I put the ai in braai. making software for 20+ yrs. BEng E&E w/Comp Sci. #Clojure. EACL AuthZ: https://t.co/8d7whW9IvY. 🤠🎸 @IndianaTunes on IG. 🔥🪵 @BraaiSim