Links & Learnings: Week #2

November 13, 2022

Summary

This week I have a shorter, random selection of links for you ranging from typefaces aiding reading comprehension, to website speed, to programming tips & tricks and definitions.

🔤 Almost Monospaced Fonts

Almost Monospaced: The Perfect Fonts For Writing

Atom (RIP 🫡) was the first text editor I used extensively for general purpose coding; it was also one of the easiest to theme and customize to my liking, and customize I did. I was happy to discover and adopt Fira Code, which taught me a lot about ligatures, monospaced types, and generally more about fonts than I had ever known; particularly how much the right typeface could impact comprehension and speed for the right subject matter (code). Now, as I try to write more, I'm equally happy to discover more about almost-monospaced fonts that aren't quite as rigid as typically monospaced fonts, allowing the letters to flow appropriately, but also more letter-spaced constrained than a non-monospaced font.

🏎️ Performance Is A Feature

Performance Is A Feature

This is an older post (2011!) by Jeff Atwood, Stack Overflow founder, advising thinking of (website) performance as a top-of-mind concept and competitive advantage, rather than a technical afterthought. Many of the the tactical recommendations have since made its way into popular practice: CDNs by default, just by deploying to Netlify, or Vercel, web frameworks like Next.js have internalized these performance practices, and some of the tools mentioned on this page have evolved into well-known performance tooling today. Despite that forward progress, the page is still highly relevant; systems and continue to grow increasingly distributed and complicated, and performance optimization culture is often not as well defined as product development or resilience engineering. There are still standouts - I'm reminded of this great talk by Johannes Rieken at CovalenceConf 2019 about VS Code's First Second; it's always a breath of fresh air to find a tool or website that's sleek and snappy.

🤝 Coupling And Cohesion

Coupling And Cohesion

As a software engineer, you often need to balance the coupling and cohesion levels of your code. There are many ways to describe the two concepts, the tension between them, how they present themselves in code, and this page's definition is by far my favorite.

Given two lines of code, A and B, they are coupled when B must change behavior only because A changed.

They are cohesive when a change to A allows B to change so that both add new value.

(emphasis mine)

I also love that it acknowledges probabilities; too often advice is given without contextualizing when it is or is not applicable, and I was happy that this addressed the uncertainty that exists when making decisions and that employed patterns and structures should be personalized (organization-alized?) to the organization and track record of previous changes.

📊 Queuing Rule of Thumb

Queuing Rule of Thumb

This is a punchy one. This equation describes the rough relationship between s (number of servers), N (number of requests), r (average time to serve request), and T (time to empty the queue). It's a helpful relationship to understand when dealing with queuing.

s > Nr/T

The examples in particular are quite illustrative.

I write about engineering, technology, HCI and the future of computing. If you like what I have to say, feel free to buy me a coffee and/or subscribe below for updates.