Elements of Clojure @elementsofclj
A book by @ztellman about the philosophy of software, through the lens of Clojure elementsofclojure.com Joined July 2018-
Tweets275
-
Followers926
-
Following1
-
Likes12
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".
I wrote about why coupling has an unfair reputation in software design explaining.software/archive/coupli…
I wrote about the three-part structure of explanations in software development: explaining.software/archive/the-an…
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.
Elements of Clojure leanpub.com/elementsofcloj… by Zachary Tellman is the featured book on the Leanpub homepage! leanpub.com cc @ztellman
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.
Consider how the world is seen by a tick.
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.
A name is a lexical reference that is dereferenced at compile time. A pointer is a memory reference that is dereferenced at runtime.
Indirection provides separation between *what* and *how*. It exists wherever "how does this work?" is best answered, "it depends."
Peter Strömberg aka ... @pappapez
2K Followers 1K Following Love, Family and Liberty! #AFUERA! Husband. Father of five. Also Love and #Clojure! Creator of Calva: https://t.co/rWdQboGDaF
Kevlin Henney @KevlinHenney
20K Followers 1K Following I only X for RTs, DMs & promos. For thoughts & discussion, find me over at https://t.co/muoXTbOj9C & https://t.co/HsnrFljtCo.
Wilfred Hughes @_wilfredh
4K Followers 3K Following Programming language development, human factors, and a healthy dose of Emacs. Also https://t.co/faGheKDz69 and https://t.co/sqqeQ20uHV
alhazrod @alhazrod
1 Followers 142 Following “That is not dead which can eternal lie, And with strange aeons even death may die.”
braindeer @braindeer86
0 Followers 8 Following Caught in the brilliance of profane novelty, the Creativity delivers Art with great pretension. CyberPrime is now available at your prehension.
Юрий Синици... @USinitcin
4 Followers 240 Following
Diego @dmrq70
65 Followers 408 Following
λ𝑥.𝑥 @bipolarlisp
35 Followers 651 Following
Eugene @doctordatomic
450 Followers 2K Following 🦬 My heart beats faster at the dial up handshake sound.
기린 @jahyun_gu25923
34 Followers 243 Following
यूरेशिय... @xl_aasheesh
24 Followers 107 Following रथवाहक, श्यामवर्णी तथा तन्त्रांशाभियन्ता । कृण्वन्तु विश्वमार्यम् । "स्वाध्यायान्मा प्रमदः"
ORB-NRG @ORB_NRG
32 Followers 479 Following
alper @alperyildrm
66 Followers 691 Following
Nathan Smutz @SmutzNatha77462
5 Followers 9 Following Created this account after my original got hacked. 8/1/2024
Cameron Candelori @CandeloriCodes
10 Followers 132 Following
Renan @renan4241
0 Followers 333 Following
Robert Olivier @RCPOlivier
18 Followers 400 Following
Jules Gosnell @JulesGosnell
59 Followers 82 Following
yalu 🔆 (🤖,🌏) @bitsikka
865 Followers 5K Following Community, App integration @BrightIDProject Views expressed are through my own being, and no other is response-able for them.
Dr Rajesh S Kempegowd... @rajesh_sk76
237 Followers 1K Following Senior R&D in Energy | Building https://t.co/09Z9GKpACK — Next-gen simulation for tyre/plastic pyrolysis, biomass gasification industrial decarbonization
Matt Tuel @RampantPolemics
87 Followers 1K Following You can just do things, and you don't have to be conventional about it.Jan Wedekind @wedesoft
186 Followers 493 Following Web: https://t.co/wMC6BavqMs Nostr: https://t.co/LvJYc6Izrh
𝒫𝑒𝓇 𝒜𝓇... @per_arneng
1K Followers 3K Following 🧠 AI Engineer | 💻 Software Architect | 🌍 Ethical Acceleration #ethacc | Diving deep into the matrix of AI and programming languages. @perarneng.bsky.
lejian xiwen @xmobyyyy
0 Followers 45 Following
Biut Thapa @BiutThapa
281 Followers 3K Following Explorative steps toward what matters most. Writing and/or Building. "Individual Rights including Property Rights".
Tuomo Sahipakka @tuomosa
1K Followers 3K Following Tech entrepreneur & consultant | UNIX/suckless greybeard | Self-host everything, encryption rights, free speech & decentralized options
Jairo Saavedra @rho_high
83 Followers 572 Following Physicist and Software engineer. Born to shit, with the moral obligation to wipe.
Jason Agbebaku @AgbebakuJason
183 Followers 634 Following game dev, product manager/dev rel @Rosebud_AI ✝️
William Roy James @JamesWilli36333
520 Followers 4K Following These 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 ?
Slow Tony @EpistemicPatchy
147 Followers 736 Following a haphazardly put together dumpster fire of convention and prejudice
Aram @AramCandy
7 Followers 91 Following
Turjan of Miir @turjanofmiir
180 Followers 439 Following These are your father’s parentheses. Elegant weapons for a more civilized age.
Vlad A. Barbu @vladddbbb
1 Followers 341 Following
Νέμεσις - Κο... @Sirios1983
2K Followers 7K Following
Damian @sotod
104 Followers 2K Following
zhihong zhang @hellomywd666
0 Followers 99 Following
. @dfwij
2 Followers 510 Following
Overrun @WestUnderAttack
358 Followers 2K Following
Qualibaba @qualibaba
3 Followers 209 Following
braai engineer @BraaiEngineer
2K Followers 2K Following braai/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
🤐 @andrewnimmo
61 Followers 923 Following
nathanwh71 @nathanwh71
1 Followers 114 Following
Michel Oosterhof @micheloosterhof
800 Followers 2K Following ॐ・@google・climber・🚲・🤿・lapsed physicist・#cowrie developer・my opinions are my own・Πάντα ῥεῖ・🇳🇱
Ganesh Rajendran @ganeshrajendran
439 Followers 4K Following Visual artist (Bootstrapped startup - NOT raising funds)









