news
Programming Leftovers
-
Loura ☛ Hey Loura!
What I’m thinking is to build a personal web desktop, for all the various services I use online that offer API’s I can play with. I’ll start with Micro.blog since I’ve got quite a bit of experience building little side projects with it and using it’s private notes as data storage.
-
Buttondown LLC ☛ Logic for Programmers Turns One
I released Logic for Programmers exactly one year ago today. It feels weird to celebrate the anniversary of something that isn't 1.0 yet, but software projects have a proud tradition of celebrating a dozen anniversaries before 1.0. I wanted to share about what's changed in the past year and the work for the next six+ months.
-
Evan Hahn ☛ How I build software quickly
If you go too fast, your work is buggy and hard to maintain. If you go too slowly, nothing gets shipped. I have not mastered this tension, but I’ll share a few lessons I’ve learned.
This post focuses on being a developer on a small team, maintaining software over multiple years. It doesn’t focus on creating quick prototypes. And this is only based on my own experience!
-
David Mead ☛ CVE-2025-48384: Breaking Git with a carriage return and cloning RCE
If you've ever used an old mechanical typewriter, you know that when you get to the end of the line there's a physical action to to get back to the start of the line. Sometimes this was done through an actual lever on the typewriter, later models had a button. Because this action — the carriage return — was distinct from the line feed, it has its own character. In ASCII this is the character known as "Carriage Return", represented as "␍", character number 13. The "↵" icon, as often seen on the "Enter" or "Return" key on a modern keyboard encodes this action, along with the action of moving to the next line, known as "Line Feed" (␊).
-
Artyom Bologov ☛ Why I Am Stupid
I am a grug-brained developer. I prefer simple solutions over complex ones. I also do hard things and involved architectures sometimes. But overall, I keep things stupid simple.
I have to aim for stupid if I want to be understood. The next reader might be overwhelmed, tired, or in a rush. No monads, no hexagons, no spooky actions at a distance.
Basic code, obvious program flow, spelled out actions. State, if need be. Imperative code, if it’s necessary. Deeply nested blocks, if the logic is ugly. Nothing a stupid programmer like me wouldn’t understand.
-
Andy Wingo: guile lab notebook: on the move!
Hey, a quick update, then a little story. The big news is that I got Guile wired to a moving garbage collector!
Specifically, this is the mostly-moving collector with conservative stack scanning. Most collections will be marked in place. When the collector wants to compact, it will scan ambiguous roots in the beginning of the collection cycle, marking objects referenced by such roots in place. Then the collector will select some blocks for evacuation, and when visiting an object in those blocks, it will try to copy the object to one of the evacuation target blocks that are held in reserve. If the collector runs out of space in the evacuation reserve, it falls back to marking in place.
-
Stuart Langridge: Making a Discord activity with PHP
Another post in what is slowly becoming a series, after describing how to make a Discord bot with PHP; today we're looking at how to make a Discord activity the same way.
An activity is simpler than a bot; Discord activities are basically a web page which loads in an iframe, and can do what it likes in there. You're supposed to use them for games and the like, but I suspect that it might be useful to do quite a few bot-like tasks with activities instead; they take up more of your screen while you're using them, but it's much, much easier to create a user-friendly experience with an activity than it is with a bot. The user interface for bots tends to look a lot like the command line, which appeals to nerds, but having to type
!mybot -opt 1 -opt 2
is incomprehensible gibberish to real people. Build a little web UI, you know it makes sense.Anyway, I have not yet actually published one of these activities, and I suspect that there is a whole bunch of complexity around that which I'm not going to get into yet. So this will get you up and running with a Discord activity that you can test, yourself. Making it available to others is step 2: keep an eye out for a post on that.
There are lots of "frameworks" out there for building Discord activities, most of which are all about "use React!" and "have this complicated build environment!" and "deploy a node.js server!", when all you actually need is an SPA web page1, a JS library, a small PHP file, and that's it. No build step required, no deploying a node.js server, just host it in any web space that does PHP (i.e., all of them). Keep it simple, folks. Much nicer.
-
Linux Links ☛ Uiua is a general purpose array-oriented programming language
Uiua is a general purpose array-oriented programming language with a focus on simplicity, beauty, and tacit code.
-
R / R-Script
-
Rlang ☛ Specialized R packages for spatial cross-validation: sperrorest and blockCV
This document provides an overview of two R packages, sperrorest and blockCV, that can be used for spatial cross validation, but are outside of standard machine learning frameworks like caret, tidymodels, or mlr3.
All of the examples below use the same dataset, which includes the temperature measurements in Spain, a set of covariates, and the spatial coordinates of the temperature measurements.
-
Rlang ☛ ShinyProxy 3.2.0
We’re happy to share that ShinyProxy 3.2.0 is now available. This release
focuses on a range of small but meaningful improvements aimed at making
ShinyProxy easier to use.
-
Rlang ☛ Raw data for domains in the pharmaversesdtm package
-
-
Python
-
Vincent Lammens ☛ Generating RSS feeds in python - Vincent's Site
I added a rss feed to my site, in this post I will go over how the feed is generated
I decided on using feedgen to build my feed, it can be installed with: [...]
-
-
Go
-
Anton Zhiyanov ☛ Concise test assertions with Be
I appreciate Go's verbosity, but not when it comes to writing tests. Endless if statements with t.Errorf not only make tests long, but also obscure their purpose and make them harder to read. For test assertions, I'd prefer something more concise than what the standard library offers.
-