Programming Leftovers
-
A Browser Approach To Parsing
There are few rites of programmer passage as iconic as writing your first parser. You might want to interpret or compile a scripting language, or you might want to accept natural-language-like commands. You need a parser. [Varunramesh] wants to show you parser combinators, a technique used to make practical parsers. But the demonstration using interactive code cells in the web page is nearly as interesting as the technique.
-
Relative Importance Analysis in R
A statistical method called relative importance analysis (RIA) is used to assess the relative contribution of independent variables to the variance of a dependent variable.
-
[Repeat] Maybe Software Engineers could learn something from Linguistics
Unlike most languages, Alloy has two notions of subtyping: a type (or “signature”) can be extended, which is exclusive, or they can be in, which are stackable. In this example, the source can be generic, a database, or a file, but not all three. The Step can be generic, an extraction step, a load step, or both:1 [...]
-
0037: dynamic mutable value semantics, interior pointers, uninterning, functionless effects, papers, books
I worked through a simple implementation of mutable value semantics here (tree-walking interpreter, no optimizations). The main difference from swiftlet/val is that it's a dynamic language - demonstrating that nothing about MVS requires static typing.
-
A Journey through Arrow in R
Apache Arrow is a software development platform for building high performance applications that process and transport large data sets. It is designed to improve the performance of data analysis methods, and to increase the efficiency of moving data from one system or programming language to another.
In this community call moderated by Stephanie Hazlitt, our speakers, Nic Crane and Jonathan Keane, will lead us through the Arrow R package.
-
Developing Custom Software is Probably a Bad Idea
This post is the culmination of years of accumulated professional frustration. It will not be well received by some. That's okay. If you make it to the 25 year point of your dev career and you spent most of that time writing custom software for clients and you still disagree, feel free to write your own take and send it along to me. I will afford it my due consideration.
That isn't me gate keeping or trying to make an argument based solely on an appeal to my own authority. I'm just pointing out that I have watched a lot of clients break themselves against the rocks of custom software development and over time the accumulated weight of their trials, tribulations and in some cases, overt failures, has begun to weigh upon my soul. The purpose of this post is to discuss some of this at a high level and explain why I now believe custom software is not a good option for most.
-
Python Array length
In Python, the length of an array can be obtained using the len() function.
-
Belatedly remembering to use the two expression form of Python's assert
Today I confessed on the Fediverse that I had somehow mentally overwritten what I once knew about Python's assert with a C-like version that I wrote as 'assert(expression)' (which I apparently started doing more than a decade ago). What caused me to notice this was that I was revising some Python code to cope with a new situation, and I decided I wanted to fail in some way if an impossible thing turned out to not be as impossible as I thought. This wasn't an error that should be returned normally, and it wasn't really something I wanted to raise as an assertion, so adding an assert was the easy way.
-
Navigating Directories Like a Pro with Bash pushd and popd
If you answered yes, then it’s the perfect time to learn two more bash commands: pushd and popd. In this article, you’ll learn how pushd and popd work, as well as a couple of alternative commands. By the end of this article, you’ll have added two more useful commands to your repertoire.
-
Read File Line by Line in Bash
You may find yourself in a situation where you want to use a shell script to read files line by line.
-
Tim F. Brüggemann: (Almost) Bi-weekly GSoC Update: FlatSync GSettings Integration
This post is going to cover the latest progress on FlatSync as well as my absence from bi-weekly updates and the project.
# Absence From Blog and Project
Normally, I'd write bi-weekly blog post updates regarding GSoC and FlatSync, but both my mentor and I have been very busy with university work in this month's first week, and after that, I've been ill and bed-ridden for a little over a week. As a result, development stagnated in this period, so there was just nothing to write about. I'm somewhat back on my feet though, so you can expect regular updates again.
# Progress on FlatSync
We were thrown behind quite a bit on schedule, but luckily, the still-open, expired milestone we wanted to catch up on turned out to be less work than originally planned, and we were able to fulfill it quite easily.
-
PostgreSQL compile times: Meson review
In a recent article, I compared the compilation times of PostgreSQL using different compilers. In the comments, I was asked for numbers for the new Meson build machinery. Let’s do that now.
(Of course, when we are testing the compilation step, we are not really using Meson much but rather Ninja operating on build description files produced by Meson.)
We have to consider how we can make both build systems build approximately the same set of files, to make this a fair comparison. I’m going to use make world-bin on the make side, which builds the same things as meson compile on the meson side (that is, core, contrib, but not documentation). Also, I’m configuring with plain configure without options and with meson setup --auto-features=disabled, in order to get approximately the same build configuration. Finally, I’m running the configure and make build in a separate build directory, to match the meson build, just in case that matters. Beyond that, the methodology is the same as in the previous article.