Programming Leftovers
-
[Old] Lewis Dale ☛ Why I don’t write React anymore
Earlier this year I made the decision to stop working in React. I’d just come out of a project using a modern JS tech stack that used Next.js, and I couldn’t get over how complex the whole thing had become, and how little I enjoyed the work.
-
Andrew Healey ☛ Compiling Lisp to Bytecode and Running It
In a recent commit to lisp-to-js, I added the option to compile Lisp code to bytecode and run it in a stack-based VM. My Lisp variant is quite simple (based on Little Lisp). Below, I have a small program and the bytecode it produces.
Note: these examples are shown without optimization, as some optimizations would reduce the bytecode to a single push_const instruction.
-
Rlang ☛ How to Add Prefix to Column Names in Base R: A Comprehensive Guide for Beginners
As a beginner R programmer, you may often find yourself needing to manipulate data frames. One common task is adding prefixes to column names, which can be useful for organizing variables, improving readability, or avoiding naming conflicts when merging datasets. This guide will walk you through various methods to add prefixes to column names using base R functions, complete with practical examples and exercises. Think of this article as a compliment article to yesterdays post on adding a suffix to a column name.
-
Daniel Lemire ☛ Table lookups are efficient
When optimizing small functions, I often rely on a table lookup: I replace the actual computation with table of precomputed values. It is often surprisingly efficient.
-
Evan Hahn ☛ setBigTimeout
In short: JavaScript’s
setTimeout
breaks after ~25 days. I madesetBigTimeout
, a silly module to get around this problem. See the package on npm or the source code.setTimeout
is JavaScript’s way of delaying code. You provide a timeout, in milliseconds, and a function to call after that time has elapsed.1 -
Adam Young: The development cycle
-
Rlang ☛ A Guide to R Package Validation in Pharma
Picture this: a crucial clinical trial is underway, and every data point matters. The pharma industry is increasingly turning to open-source tools like R to handle complex data analysis, drawn by their flexibility, innovation, added value and cost-effectiveness.
-
Open Source Security (Audio Show) ☛ Josh Bressers: The useful uselessness of SBOMs
It’s once again time for the outrage generators on social control media to ask if SBOMs have any value. This seems to happen a few times a year. Probably lines up with the pent up excitement while we wait for the McRib to return. I could dig up a few examples of these articles but I can’t be bothered, and it doesn’t matter. I’d rather spend my time searching for a McRib … I mean, writing this blog post.
I wanted to write down some thoughts, I’m sure it won’t change the constant complaining about how SBOMs are completely useless, and how important it is to tell everyone that, because it’s very normal to remind people about useless things and how useless they are. Nothing really enforces true uselessness like having to spend time explaining how useless something is.
-
Perl / Raku
-
Perl ☛ What's new on CPAN - September 2024
Welcome to “What’s new on CPAN”, a curated look at last month’s new CPAN uploads for your reading and programming pleasure. Enjoy!
-
-
Python
-
Rlang ☛ R and Python consoles + JupyterLite in www.techtonique.net
-
Python Speed ☛ Should you use uv’s managed Python in production?
The uv Python packaging tool provides fast replacements for tools like pip, and a variety of developer experience improvements. Unlike most Python packaging tools, uv doesn’t require Python to be installed to use it. Building on that ease of installation, one of its interesting and useful features is the ability to install Python for you.
-
Pi My Life Up ☛ Installing the Pip Alternative UV on Linux
uv is an alternative to the pip package manager developed by Astral that boasts several significant improvements. One of these key features is that it can be up to 100 times faster at every task than using pip on Linux.
On top of UV being a significantly faster package manager, it also comes with additional tools built-in, such as tools to set up and manage a Python virtual environment.
-
-
Games
-
[Old] Daniel Holden ☛ Propagating Velocities through Animation Systems
There is an alternative approach, which I have not seen used very often, but which can potentially solve many of these issues. The idea is to (as much as possible) propagate velocities though the animation system itself. The goal is to build a system which can directly evaluate the velocity of the character at any point in time, even on frames where the character has been teleported or reset and we have no history of poses. Not just that, but also to have control over how these velocities are computed - meaning we can compensate for the places we know we will break them such as quick blends and instant pose corrections.
And although there can be a performance cost in doing this, a little bit of tricky maths involved, and some edge cases where you need to fall back to finite differencing, I believe it should be able to create systems that are a lot more robust in the long term.
-
-
Open Hardware/Modding
-
Pi My Life Up ☛ Home Assistant Raspberry Pi System Monitor
Home Assistant is a great way to keep track of many devices, including your Raspberry Pis. Following this tutorial, you can view resource usage data for your Raspberry Pi, such as memory, disk space, temperature, uptime, software version, and more.
-
-
Education
-
APNIC ☛ Highlights of AINTEC 2024
I had the privilege of attending the 19th Asian Internet Engineering Conference (AINTEC 2024), held in conjunction with the Association for Computing Machinery’s Special Interest Group on Data Communications (ACM SIGCOMM) at the University of New South Wales (UNSW), in Sydney, Australia.
-
Terence Eden ☛ Collaborative discussions at an unconference
At the recent OggCamp there were a number of brilliant spontaneous talks. But nearly all of them involved one person standing at the front, delivering a message to an audience. That's fine. But there are other forms of unconference sessions. You can have everyone make something, teach people sea-shanties, play games, or - my personal favourite - have a collaborative discussion.
Here are a few that I've run in the past - with some tips on how to get the best out of them.
-