Programming Leftovers
-
Spaghetti Code Dieting Tips
My chosen IDE when using R is Rstudio, which allows you to insert notes into your analysis scripts using ‘#’ before the text. Four hyphens (‘—-‘) can also be used to specify code sections. Although there are no hard rules for how to organize a script, I’ve found it handy to try and organize analysis across sections designed to correspond with the typical steps of an analysis project: [...]
-
The Reinforcing Nature of Toil
As usual when I discuss systems theory (e.g. information flow or material flow), this article pretends to be about one thing, but is really about a much more general concept. Let’s talk about reinforcing feedback loops!
-
CNET pauses “AI-written stories” (SPAM/Clickbait) because most of them had serious errors.
They decided that they would get rid of paid staff and deploy “AI” to quickly write the articles and then have humans do a little final editing to disguise the obvious flaws, and post them.
It turns out that more than half of them have errors.
-
I should assume contexts aren't retained in Go APIs
Your (my) question is how much does the context passed to ConnectWithContext() cover. It could cover only the work to set up the initial connection, or it could cover everything done with the handle in the future. The first allows fine-grained control, while the second allows people to easily configure a large scale timeout or cancellation. What the Go documentation and blog post tell you to do is the first option. If people using the API want a global timeout on all of their API operations, they should set up a context for this and pass it to each operation done through the handle, and thus every handle method should take a context argument.
-
Software and its Discontents, January 2023, Part 1
Over the last few months I’ve been intrigued by a question: where is the frustration and disillusionment, so prevalent currently in the software industry, coming from? And, as an engineering leader, what can I learn from this discontent and how should it shape my practices?
This is not a topic that lends itself to a definitive answer, boundless and changing as the conditions are, but in talking with other engineering leaders, executives, CEOs, VCs, and a wide variety of practitioners, I found some trends that felt informative to me, and hopefully to you. I found in talking with folks not a single cause, but several interdependent causes. This isn’t a simple conversation, e.g. about remote vs hybrid, but a decade long set of trends contributing to why software engineering has gotten less successful, strains on labor relationships more pronounced, why managers are so fervent that their job has gotten harder, and why we’re having this discussion at this exact moment.
In this blog post, part 1 in the series, I’m going to try to set the stage for the next few parts by laying out the discontent I’m seeing, and what are some of the causes and trends. In particular I suggest that over the last decade we’ve seen: [...]
-
Software and its Discontents, Part 2: An Explosion of Complexity
Talking primarily to engineering leaders, but also CEOs, VCs, ICs, and other practitioners, the most common response to the question of “has something substantially changed?” is that software, counter intuitively, has gotten harder to build. This is counter intuitive because the tools are orders of magnitude better, the amount of work you can cheaply outsource is nearly miraculous, computers are so damn fast and cheap these days, the quality of resources, much of it free, is off the charts, and the talent pool has exploded, and shows every sign of being smarter and better educated than ever. But software has gotten harder to build in one very particular and important way: it’s gotten more complex.
-
Software and its Discontents, Part 3: Rising Cost and Elusive Success
Twenty years later, things have changed. Broadband and smartphone adoption have largely saturated. There are no new customers moving from snail mail to email, the video store to streaming, classifieds to web advertising, or the filing cabinet to online banking waiting to be snapped up. People have largely already adopted computers and the Internet to assist in their personal and work lives. A company starting today isn’t competing against an incumbent from an earlier technology regime, but a savvy technology native competitor. And the current generation of tech giant monopolists have consistently proven themselves extremely effective at avoiding being disrupted by upstarts. (The effectiveness of the current tech giants has also reinforced their technical and cultural practices without the blunting derision of being seen as “dinosaurs’’, a key contributor to the aesthetic of complexity we talked about in part 2, and a general cargo-culting across the industry)
That changing landscape has led the cheap money to search further afield for opportunities that can be tackled with software. Companies have pushed into industries that share very little with the return to scale model at the heart of the Silicon Valley tech salary math. We now see businesses with significant physical costs, and high costs per customer like ride sharing, delivery or hardware businesses. We see businesses with high per-customer licensing costs, like the streaming music companies. We see pushes into logistically complex businesses, e.g. health care, where regulatory oversight raises the cost to scale significantly.
-
Determine durations with monotonic clocks if available
That's an extreme demonstration, but backwards-going wall time happens every time we have a leap second. Granted, we're in a long dry spell at the moment, but it'll probably happen again in our lifetimes. The difference there is just one second, but it could break something if someone relies on that value in a shell script.
-
[Cheatsheet] Fossil version control software
Fossil is a DVCS (decentralized version control software), an alternative to programs such as darcs, mercurial or git. It's developed by the same people doing sqlite and rely on sqlite internally.
-
The 2 Current Major AI Bottlenecks
I’ve been going hardcore on using GPT to create essays, reports, and other kinds of analysis. I’ve had tons of success with it, and it’s given me a clear view of current limitations with the current tech.
Here are the current limitations that I expect to be addressed very soon, and that will multiply utility my orders of magnitude.
-
A simple parser
Acetone is a parser for Chicken Scheme that helps you turn lists into trees.
-
Dirk Eddelbuettel: RcppTOML 0.2.2 on CRAN: Now with macOS-on-Intel Builds
The package was building fine on Intel-based macOS provided the versions were recent enough. CRAN, however, aims for the broadest possibly reach of binaries and builds on a fairly ancient macOS 10.13 with clang version 10.
-
Nothing’s Bulletproof
So hearing what Tyler had to say about his own mileage with AVIF piqued my interest. In general, I like to let other people smarter than me bleed on the edge. Then I catch the second wave and learn from all their cuts and bruises.
-
NIST Is Updating Its Cybersecurity Framework
NIST is planning a significant update of its Cybersecurity Framework. At this point, it’s asking for feedback and comments to its concept paper.
-
5 great Perl scripts to keep in your sysadmin toolbox
Check out five Perl gems that help you work better, faster.
-