Programming Leftovers
-
James Koppel ☛ Abstraction: Not What You Think It Is
As the quoted writers show, people do not even agree what abstraction means. Abstraction seems to stand for a hodgepodge of different concepts involving generality, vagueness, or just plain code reuse. These engineering debates — debates about whether duplications are better than the wrong abstraction or about whether abstraction makes code harder to read — trickle down into heated discussions over code. But this confusion over abstraction's basic meaning makes all such debates doomed.
This situation is particularly sad for me as someone with a background in PL theory. There are a lot of topics in software engineering that are the result of accumulated intuition over decades. But we've had a pretty good definition of abstraction since 1977, originally in the context of program analysis, and — I claim — it actually translates quite well into a precise definition of “abstraction” in engineering.
-
Lev Lazinskiy ☛ Multiline Bash in CircleCI YAML: How I almost invented the slashtag
We talk a lot about push and pray at Dagger but I spent the better part of the last few days saying every prayer I know trying to get my CircleCI config to work properly with multi-line bash commands inside of a single YAML block.
It was particularly painful because this was for a job that only runs on git tags and I was trying to publish a new release, so every time it didn’t work I had to remove the git tag, make the tweak to the yaml file, and then push the same tag back out.
-
University of Toronto ☛ GNU Autoconf is not replaceable in any practical sense
Autoconf can certainly be replaced in general, either by one of the existing and more modern configuration and build systems, such as CMake, or by something new. New projects today often opt for one of the existing alternative build systems and (I believe) often find them simpler. But what can't be replaced easily is autoconf's use in existing projects, especially projects that use autoconf in non-trivial ways.
-
Mat Duggan ☛ Why Don't I Like Git More?
I've been working with git now full-time for around a decade now. I use it every day, relying on the command-line version primarily. I've read a book, watched talks, practiced with it and in general use it effectively to get my job done. I even have a custom collection of hooks I install in new repos to help me stay on the happy path. I should like it, based on mere exposure effect alone. I don't.
-
David Soria Parra ☛ A History of Source Control Systems: SCCS and RCS (Part 1)
Note that this posts focuses on source control systems, meaning systems meant for storing versions of source code. Other version control systems that focus primarily binary data will not be covered. For the purpose of this blog post, I will use the terms source control system and version control system interchangeable. I recognize that source control systems are a subcategory of version control systems.
I have used most of the systems on this list myself at some point in time. For systems that I haven’t used myself, such as SourceSafe and ClearCase, I would love to hear from you about your experience with them.
-
Chad Whitacre ☛ A Vision for Software Commons
The thing we can’t give up is the hacker spirit. If the only real option to make a living in Open Source is to take a job at a megacorp, we will have lost. For companies, Open Source is about cost savings and brand equity. That’s fine. For humans, Open Source is about autonomy, creativity, and free-spirited collaboration within a welcoming community. It’s wonderful when companies employ maintainers, and we need to sustain a significant indie maintainer contingent in the Open Source community. We need to fix the XKCD pic with many more small blocks, not one big one.
-
Uwe Friedrichsen ☛ Software - It's not what you think it is - Part 7
In the previous post, we summed up the misconceptions we discussed in this series and what they mean for the current discussion if AI solutions will replace software developers.
In this final post of this blog series, we will discuss what the misconceptions mean for the humans affected by them and how we could possibly improve the situation. Let us dive in.
-
Daniel Lemire ☛ C++ web app with Crow: early scalability results
Last year, I looked at writing small “hello world” web applications in various programming languages (Go, JavaScript, Nim…). Go, using nothing but the standard library, did well. In these benchmarks, I am just programming an HTTP route that returns a small string (e.g., ‘hello world’).