Category Archives: code-level

In which things are given names

I recently joined in a very interesting discussion with some of my peers on the thorny subject of naming variables in programs. The core question was whether it’s OK to give a variable a temporary name while you’re still working … Continue reading

Posted in code-level | 1 Comment

You say “cave dweller debugging”, I say debug logging

There are still many situations where it’s not feasible to stop a process, attach the debugger, and start futzing with memory. We can argue over whether this is because the industry didn’t learn enough from the Pharo folks later. For … Continue reading

Posted in code-level | 1 Comment

On or Between

The new way to model concurrency is with coroutines (1963), i.e. the async/await dance or (building upon) call-with-concurrent-continuation. The new new way is with actors (1973), and the old and busted ways are with threads (1966), and promises (1976). As … Continue reading

Posted in architecture of sorts, code-level, design, performance, software-engineering | Tagged | Leave a comment

“Reasoning about code” is a scam

Another day, another post telling me to do something, or not do something, or adopt some technology, or not adopt some technology, or whatever it is that they want me to do, because it makes it easier to “reason about … Continue reading

Posted in code-level | 5 Comments

Tiger to Catalina: let’s port some code

Many parts of a modern software stack have been around for a long time. That has trade-offs, but in terms of user experience is a great thing: software can be incrementally improved, providing customers with familiarity and stability. No need … Continue reading

Posted in code-level | 5 Comments

SICPers podcast episode 9

In this episode I talk about Design by Contract. Episode RSS feed – also available in Apple and Google Podcasts. A Discipline of Programming Go to statement considered harmful Z Notation, and Object-Z CocoaByContract, and JavaByContract CLU Programming Language

Posted in code-level, design, podcast | Tagged | Leave a comment

First, Consider no Harmful.

Yesterday, we observed that the goal of considering the go to statement harmful was so that a programmer could write a correct program and have done with it. We noticed that this is never how computering works: many programs are … Continue reading

Posted in code-level | Tagged | Leave a comment

The unreasonable ineffectiveness of considering things harmful

Dijkstra didn’t claim to consider the go to statement harmful, not in those words. The title of his letter to CACM was provided by the editor, Niklaus Wirth, who did such a great job that the entire industry knows that … Continue reading

Posted in code-level | Tagged | 2 Comments

Concurrent objects and SCOOP

Representing concurrency in an object-oriented system has been a long-standing problem. Encapsulating the concurrency primitives via objects and methods is easy enough, but doesn’t get us anywhere. We still end up composing our programs out of threads and mutexes and … Continue reading

Posted in code-level, OOP, performance | Tagged | 1 Comment

Microservices for the Desktop

In OOP the Easy Way, I make the argument that microservices are a rare instance of OOP done well: Microservice adopters are able to implement different services in different technologies, to think about changes to a given service only in … Continue reading

Posted in architecture of sorts, code-level, OOP | Tagged | 1 Comment