Introduction
Engineering Culture
A problem I've found with software engineering in various organisations and contexts is people being too busy on project work to have time for personal development. Or, an even more acute example, that so much time is spent on delivering requested features that engineers don't have time to refine the processes, clean up design flaws, implement automated testing that would free up more time for other things including their own development.
At the root of these problems is the organisational culture, and the article by Ron Jeffries below on Scrum scratches that issue a little. But he has gouged into it much more deeply, so do check out his articles tagged "Dark Scrum" to learn more.
In fact, so many of the links in this issue are about the culture of software engineering! Damian Conway tries to convince us to change how we think about regular expressions. Free Software and Open Source cultures feature prominently. The rise and fall of Design Patterns is all about the cultural acceptance or rejection of software engineering ideas.
I'd welcome hearing about the culture in your workplaces, and particularly the stories of changes you have managed to implement. You can email me at grahamlee@acm.org.
Writing
Halloween is Over
This is a letter I wrote to Linux Voice magazine in 2016, but it's interesting how little would need updating today. It's useful in a field that some people try to define by constant technology churn and fear of falling behind, to remember that there are longer-running trends and constants you can use as a starting point for analysis.
Design Patterns On Trial
I revisit the "show trial" for the Gang of Four held at OOPSLA 1999, for the "crimes against Computer Science" evident in their book Design Patterns: Elements of Reusable Object-Oriented Software.
Issue #41: Licensing
This month’s issue of De Programmatica Ipsum is all about licensing: proprietary or freedom-preserving, reasonable or hysterical.
Video
[objc retain]; Episode 36
This episode didn't pan out quite as we expected, especially as I forgot to record the first 25 minutes of it! Whoops! But we ended up with a solid plan for the next year at least of shows, with specific, achievable goals that'll make it easier to port Objective-C Xcode projects to Linux, Windows, and other platforms.
Audio
Episode 49: REST and SOAP
A discussion in a local technology group about which HTTP status was appropriate for a particular request motivated a surprisingly calm and insightful discussion about previous solutions to the same problem.
Around the web
CUPID—for joyful coding
Dan North suggests these alternatives to the SOLID principles. Many speakers have suggested that the SOLID principles are out of date but comparing with CUPID, they are merely out of scope: ideas like Open-Closed and Liskov Substitution can be more succinctly and flexibly described with "Composability", which also makes us think of other ways in which our code designs may be composed. In other words, these are closer to being genuine principles rather than abstracted descriptions of practices ("invert your dependencies!").
Also some of these principles bring tension: what I think of as Idiomatic may not be what you think of as Idiomatic. And my Domain-Based solution might be ripe for reuse in your domain, but my use of domain terminology hides that. But these tensions are good things, because further thought and refined practice will come from them.
Securing open-source software won't come cheap
“Devs and maintainers are getting paid ... though not to concentrate on security” runs the subhead of this article on the vulnerability of open source software. It’s true, in fact some folks actively resist adding security tasks to their projects.
We live in a time where all manner of criminal and otherwise bad behaviour is enabled by computing: fraud, bullying, theft, defamation, drug distribution, human trafficking. When our services aren’t secure, we not only allow these forms of misuse, we hide them. Back in the 2000s a Linux server in my building got compromised and used for hosting “warez”—cracked software downloads. If that would happen today, it would be an S3 bucket, gigabytes of abusive photos—and without good monitoring I’d only observe a small uptick in my hosting bill.
The Fall of Scrum?
Ron Jeffries, one of the Agile Alliance behind that manifesto, used to write about the non-agile practise of Dark Scrum. Now the gloves are off: Dark Scrum is Scrum. I used to think it odd that there has been no advance in methodology in the two decades since Agile. Ron is here implying that’s because we didn’t get around to trying Agile yet.
Understanding and Using Regular Expressions
In this video, Damian Conway explains the computational model of regex. He turns it from “weird sigils we somehow adopted from Perl” into a simple iterative algorithm for computing over strings, which I found made them far easier to construct and use.