Learning to Discern – Quality & Quantity – The W. Edwards Deming Institute Blog
Variation appears in how well the parts are eventually integrated into a system and, how well the system performs, day after day. Once again, quality is about use.
For an introduction to the legacy of W. Edwards Deming, check out Kelly Allan’s Deming 101 presentation.
The Deming Institute is a treasure trove of wisdom. I’ve only started to dive in. I’m sure I’ll have more to share in the coming weeks.
Dr. Russell Ackoff, unpacking systems thinking in twelve minutes:
The system is not the sum of the behavior of its parts; it’s the product of their interactions.
SQLite is one of my favorite pieces of software.
Domenic Denicola, after categorizing async APIs:
Push and pull have distinct, not-very-overlapping areas where they each work well, and saying that we should pick one of the four APIs you mentioned and stick with it, as some people do, is shortsighted and leads to awkward code.
Shriram Krishnamurthi, highlighting what makes Scheme macros efficient in Automata via Macros:
What is the goto-like construct that corresponds to a dereference in a data structure? The answer was given by Guy Steele (Steele, 1977): the tail call.
Sandi Metz and Katrina Owen, explaining the importance of names in 99 Bottles of OOP:
Although the struggle for good names is painful, it is worth the effort if you wish your work to survive to be read. Code clarity is built upon names.
Matt Might once said:
My teaching assumes that to understand is to implement.
So to better understand how JavaScript’s event loop works, I implemented a simplified version (in Go). I only focused on timers; I may add asynchronous I/O later. My implementation combines a priority queue and counter to schedule tasks on the event loop. Calling setTimeout
or setInterval
adds a task, using its delay to calculate the task’s priority. When the task completes, the loop increments its counter to advance time.
Mike Amundsen’s walkthrough of client-side hypermedia is a good demonstration of the Web’s greatest strength: links between things.
Katrina Owen, concluding her dotGo 2016 talk:
Applying the flocking rules systematically, over and over again, allows you to transform code with a series of seemingly insignificant increments.
This is refactoring in practice…small structural cleanups without changing behavior.
Nice reminder from Personal Kanban:
Capacity is an ineffective measure of throughput, and a horrible way to gauge what we can do. It doesn’t measure how we actually work, or at what rate we actually work. Capacity is merely a brute force measure of what will fit.
In Solving the Problem of Fit, Todd Rose and Bob Moesta discuss how no one is average and that individual distinctions matter.
Kevlin Henney does a good job of explanation how to approach testing. It is less about the tool and more about how you use it.
William Byrd, getting nerd chills as he explains The Most Beautiful Program Ever Written. I posted a version of it in Racket here.
A URI Template is a compact sequence of characters for describing a range of Uniform Resource Identifiers through variable expansion.
Lexical Scanning in Go is one of my favorite talks by Rob Pike. In it, he shows that concurrency is a way to structure programs, not necessarily a performance optimization.
Bryan C. Mills, in his talk on concurrency:
In Go, synchronous and asynchronous APIs are equally expressive. We can call synchronous APIs concurrently, and they’re clearer at the call site. We don’t need to pay the costs of asynchronicity to get the benefits of concurrency.
A few people have asked me about my new development setup:
A few weeks ago, I’d started to develop pain in my right wrist. This isn’t the first time it has happened on the job. Given my heavy use of spaces in macOS, I finally stressed my wrist too much with switching from keyboard to trackpad and back.
I spent some time researching which ergonomics changes I could make. I didn’t want an external monitor (I am not a fan). I also wanted something portable enough to carry to coffee shops.
I started with the M570 to reduce the strain from swiping on my trackpad. I added a hot corner to trigger Mission Control for switching spaces. Next, I added the Roost laptop stand. I think this is the biggest improvement because forward head posture is a health risk factor. Yet the most noticeable change is the Planck EZ. It’s a “40%” ortholinear mechanical keyboard, meaning the keys align vertically. It’s a strange choice, but it has one major advantage: less finger travel. typing.io has been great for teaching me to keep my fingers in place while programming.
Overall, I’m satisfied with the setup. I’m less efficient with keyboard shortcuts, but I don’t mind so much. I’d rather move my hand to the trackball ever so often than not be able to type at all.
@pika/web installs modern npm dependencies in a way that lets them run natively in the browser, even if they have dependencies themselves. That’s it.
It’s refreshing to use the Web Platform without a bunch of tooling again.
Moment bio case for iPhone 11
Acme acts as a glue which links together other programs and tools. With Acme the OS becomes your IDE.
Click through for a good list of Acme resources.
Russ Cox, explaining the motivation behind Go’s design decisions:
Software engineering is what happens to programming when you add time and other programmers.