news
Programming Leftovers
-
Thomas Rigby ☛ Translation vs Localisation
From my understanding, there is a subtle but distinct difference; "translation" involves turning the words from one language to another but "localisation" involves rewriting the text for the local market. Some may argue this is the same thing but it isn't — they are distinct tasks. We can see this by comparing a localisation between two countries that speak the same language.
-
Daniel Stenberg ☛ 1,500 curl authors
I have not been a solo maintainer of curl for a long time and I don’t even do half of the commits anymore
-
Pivot to AI ☛ Codeberg bans AI slop software projects
Codeberg is not going to do a mass deletion, a bonfire of the vibes. But if a project’s causing issues, and it’s slop code, they will be asking the vibe coder to find somewhere else.
-
Joshua Barretto ☛ Languages as designed latent spaces
I have been thinking recently about how language is a high entropy latent space and what that means.
Latent spaces are sort of magic: they don’t just reduce the dimensionality of a higher dimensional space, they also constrain it such that arbitrary movement in the latent space maps to some meaningful position in the higher dimensional space. Think about how almost any textual prompt you give to an image generator results in a picture with recognisable shape and form, yet the vast majority of the possible images are basically just random noise.
Language is, obviously, like this. Once you’ve learned to conquer the basic structural rules like syntax, grammar, and basic pattern matching of words with similar semantic clustering, movement within it almost always produces ‘meaningful’ (read: intelligible, not philosophically meaningful) results. Consider how an articulate human being can fairly easily produce passable bullshit in a field with which they have no experience simply by reading a little of the field’s jargon and improvising, but would utterly fail to demonstrate practical ability in the field.
-
Zig by Example ☛ Zig by Example
Zig is a general-purpose programming language and toolchain for maintaining robust, optimal and reusable software. Please read the official documentation to learn more.
Zig by Example is a hands-on introduction to Zig using annotated example programs.
-
Piotr Chmolowski ☛ Nothing Works and Everyone Is Euphoric
As I’m writing this, we’re in the middle of an AI-induced mass psychosis. People are literally token-maxxing themselves into hospital beds, scrambling to capture some of that market value before everything is automated away. I can’t blame them. Models keep getting better, programmers are being laid off left and right. We’ve been repeatedly told that AI will write 100% of the code by the end of the year. Whether that’s true or not, this may not be the best time to sit back.
The widespread excitement around the Agentic Era comes with the promise of greater productivity and higher quality. There’s no denying that these new tools have already revolutionized how we create and use software. They have raised upper management’s expectations for team output. They may have upgraded the average skill set of software teams in a way we have not seen before.
So why does software keep getting worse across the board?
-
Hillel Wayne ☛ We Are Not Special
Debates about traditional versus software engineering revolve around what makes us different. The clichés here come from a different camp than the “what makes an engineer” clichés. The ways people try to define “engineering” often work to marginalize software. Differences like “we don’t have licenses” or “we’re not rigorous” are ways of saying that software is less prestigious, less “good” than traditional engineering. As we saw in the last essay, most of these don’t hold up, and the crossover engineers think the two jobs are much closer in nature than people who have only done one.
When people talk about the fundamental differences, in contrast, they’re usually not aiming to delegitimize software development. Rather, the implicit emphasis is on making software “special”. Making software something that can’t be understood by the narrow lens of engineering.
-
Sebastian ☛ the perils of parsing type inference declarations in c
here's something fun. say that x was declared in an outer scope as a typedef: [...]
-
Dirk Eddelbuettel ☛ Dirk Eddelbuettel: RcppArmadillo 15.4.2-1 on CRAN: Small Upstream Fixes
widely used by (currently) 1293 other packages on CRAN, downloaded 47.8 million / vignette) by Conrad and myself has been cited 710 times according
This versions updates to the 15.4.2 upstream Armadillo release made this week, as well as to included 15.4.1 version we released only to Microsoft's proprietary prison GitHub and r-universe so do not exceed the (roughly) monthly cadence.
-
Python
-
Adam Johnson ☛ Python: spy on function calls with unittest.mock’s wraps - Adam Johnson
Testing terminology distinguishes between different kinds of test doubles, including:
• mocks, which replace the real behaviour of a function.
• spies, which wrap a function, recording calls for later assertions.Despite its name, unittest.mock is not just for mocks: it can also create spies, through the wraps argument of its Mock classes. Calls to such a Mock pass through to the wrapped object and return its real results, while the mock records the calls for later assertions.
-
-
Shell/Bash/Zsh/Ksh
-
Kevin Boone ☛ Command-line hacking: using find, sed, and xargs together for flexible filename transformation
Consider this situation: you have a bunch of nested directories, each containing audio files in M4A format. Each filename ends with the extension .m4a. You’d like to convert every .m4a file in every directory to MP3 format. The new file will have the same name as the old one except for the filename extension which, most likely, you’d prefer to be .mp3.
This is a common enough situation – there are many conversions that need a change of filename. I’m just using the M4A -> MP3 conversion in this article because it’s easy to understand.
-
Filip Roséen ☛ A shell colon does nothing. Use it anyway.
I've written more shell scripts than I can count, but I still stumble upon tricks that honestly blow my mind far too often than I care to admit. Latest thing that blew my head clean off? The shell colon.
-
Tangled Labs Oy ☛ oppi.li/stinkpot at main
stinkpot is a much tinier atuin (https://atuin.sh). i have been using atuin for a while, but i don't use most of its features: the sync server, atuin AI, dotfiles manager, script manager or the KV store. while sync is interesting, my machines have very different setups and i tend to run very different commands on them.
-
-
Java/Golang
-
Redowan Delowar ☛ Supervised fire-and-forget in Go
I’m not talking about jobs handed to a dedicated task queue such as Asynq. In that case, the task system owns the lifecycle of the tasks it starts. I mean smaller, best-effort jobs where it’s super tempting to start a task with go func() and just forget about it. Sending a notification or writing an expensive diagnostic log often falls into this category.
It typically looks like this: [...]
-
-
Standards/Consortia
-
Sebastian ☛ neither gcc nor clang are compliant with standard c++
in c++, function types have a "language linkage" associated with them: this is either "C++", "C", or some other implementation-defined language. and the standard very explicitly states that "Two function types with different language linkages are distinct types even if they are otherwise identical." the idea is that some implementations may have different calling conventions for c++ functions than for c functions, so they can't be intermixed
gcc and clang however, just, don't store language linkage information with the type. so two functions with different language linkages can be identical: [...]
-