Programming Leftovers
-
Arjen Wiersma ☛ Build an API with reitit in Clojure
In my previous post I highlighted that I set myself the goal of creating a self hosted comic book collection tool. Before that, in a post about tooling , I reiterated my ❤️ for Clojure as a language. So, this is the start of a series of articles detailing how the development is going, and also as an introduction to the various parts of the tech stack.
Clojure is special to me in that there are hardly any big frameworks in the ecosystem. Clojure is more like Lego, there are countless building blocks of various shapes and sizes. It is up to you as the developer to stick the blocks together to get something usefull. You might guess that I also ❤️ Lego.
-
Buttondown LLC ☛ "Logic for Programmers" Project Update
I released the first Logic for Programmers alpha six months ago. There's since been four new versions since then, with the November release putting us in beta. Between work and holidays I didn't make much progress in December, but there will be a 0.6 release in the next week or two.
People have asked me if the book will ever be available in print, and my answer to that is "when it's done". To keep "when it's done" from being "never", I'm committing myself to have the book finished by July. That means roughly six more releases between now and the official First Edition. Then I will start looking for a way to get it printed.
-
Daniel Lemire ☛ Counting the digits of 64-bit integers
Given an integer in software, you may want to know how many decimal digits it needs. For example, the integer 100 requires 3 digits, the integer 9999 requires 4 digits.
It would be an easy problem if we could compute the logarithm in base 10 of an integer quickly. Unfortunately, our computers work in base 2 and it is faster to use a base 2 logarithm.
-
Rlang ☛ Setting values in R6 classes, and testing with shiny::MockShinySession
Context Recently, we worked on testing a {shiny} app that relies on values stored within the session$request object.
-
GNOME Desktop/GTK
-
GNOME ☛ Tobias Bernard: Re-Decentralizing Development
As I’ve already announced internally, I’m stepping down from putting together an STF application for this year. For inquiries about the 2025 application, please contact Adrian Vovk going forward. This is independent of the 2024 STF project, which we’re still in the process of wrapping up. I’m sticking around for that until the end.
The topic of this blog post is not the only reason I’m stepping down but it is an important one, and I thought some of this is general enough to be worth discussing more widely.
In the context of the Foundation issues we’ve had throughout the STF project I’ve been thinking a lot about what structures are best suited for collectively funding and organizing development, especially in the context of a huge self-organized project like GNOME. There are a lot of aspects to this, e.g. I hadn’t quite realized just how important having a motivated, talented organizer like Sonny is to successfully delivering a complex project. But the specific area I want to talk about here is how power and responsibilities should be split up between different entities across the community.
-
-
Python
-
[Old] Alexander Schoch ☛ Creating a Reaction-Diffusion Simulation
This animation shows a reaction-diffusion system, a system that contains multiple components, such as chemicals or bacteria, that can react with each other and diffuse over the spacial domain. For the simulation in this article, we’ll look specifically at the Gray-Scott model.
-
[Old] Alexander Schoch ☛ Creating a Fourier Transform Animation
If you look at the animation at the top of this page, you’ll see many arrows that rotate in a circle with constant speed. This is the same thing as the animation above, but we look at the arrow in the tt direction. Imagine standing on the RealReal axis label and looking at the arrow from the front. This rotating arrow is our two-dimensional wave function. According to the fourier series, the sum of many of those rotating arrows or wave functions equals our input function almost infinitely well. So, in our final animation, we will omit the time dimension to get these rotating arrows.
-