RSSAmplifier

Blog

Juho Snellman's Weblog

Lisp, Perl Golf

snellman.netRSS feed ↗10 posts

Latest posts

LLMs are cheap

This post is making a point - generative AI is relatively cheap - that might seem so obvious it doesn't need making. I'm mostly writing it because I've repeatedly had the same discussion in the past six months where people claim the opposite. Not only is the misconception still around, but it's not even getting less frequent. This is mainly written to have a document I can point people at, the…

Web Environment Integrity vs. Private Access Tokens - They're the same thing!

I've seen a lot of discussions in the last week about the Web Environment Integrity proposal. Quite predictably from the moment it got called things like "DRM for the web", people have been arguing passionately against it on HN, Github issues, etc. The basic claims seem to be that it's going to turn the web into a walled garden, kill ad blockers, kill all small browsers, kill all small operating…

A monorepo misconception - atomic cross-project commits

In articles and discussions about monorepos , there's one frequently alleged key benefit: atomic commits across the whole tree let you make changes to both a library's implementation and the clients in a single commit. Many authors even go as far to claim that this is the only benefit of monorepos. I like monorepos, but that particular claim makes no sense! It's not how you'd actually make…

Writing a procedural puzzle generator

This blog post describes the level generator for my puzzle game Linjat . The post is standalone, but might be a bit easier to digest if you play through a few levels. The source code is available; anything discussed below is in src/main.cc . A rough outline of this post: Linjat is a logic game of covering all the numbers and dots on a grid with lines. The puzzles are procedurally generated by a…

Optimizing a breadth-first search

A couple of months ago I finally had to admit I wasn't smart enough to solve a few of the levels in Snakebird , a puzzle game. The only way to salvage some pride was to write a solver, and pretend that writing a program to do the solving is basically as good as having solved the problem myself. The C++ code for the resulting program is on Github . Most of what's discussed in the post is…

Numbers and tagged pointers in early Lisp implementations

There was a bit of discussion on HN about data representations in dynamic languages , and specifically having values that are either pointers or immediate data, with the two cases being distinguished by use of tag bits in the pointer value: If there's one takeway/point of interest that I'd recommend looking at, it's the novel way that Ruby shares a pointer value between actual pointers to memory…

Why PS4 downloads are so slow

Game downloads on PS4 have a reputation of being very slow, with many people reporting downloads being an order of magnitude faster on Steam or Xbox. This had long been on my list of things to look into, but at a pretty low priority. After all, the PS4 operating system is based on a reasonably modern FreeBSD (9.0), so there should not be any crippling issues in the TCP stack. The implication is…

The mystery of the hanging S3 downloads

A coworker was experiencing a strange problem with their Internet connection at home. Large downloads from most sites worked fine. The exception was that downloads from a Amazon S3 would get up to a good speed (500Mbps), stall completely for a few seconds, restart for a while, stall again, and eventually hang completely. The problem seemed to be specific to S3, downloads from generic AWS VMs were…

I don't want no 'wantarray'

A while back, I got a bug report for json-to-multicsv . The user was getting the following error for any input file, including the one used as an example in the documentation: , or } expected while parsing object/hash, at character offset 2 (before "n") The full facts of the matter were: The JSON parser was failing on the third character of the file. That was also the end of the first line in the…

The origins of XXX as FIXME

The token XXX is frequently used in source code comments as a way of marking some code as needing attention. (Similar to a FIXME or TODO , though at least to me XXX signals something far to the hacky end of the spectrum, and perhaps even outright broken). It's a bit of an odd and non-obvious string though, unlike FIXME and TODO . Where did this convention come from? I did a little bit of light…

Juho Snellman's Weblog · RSS Amplifier