216 results for "":
One funny way to bundle assets
There’s one thing that bothers me. In part 1, why are we using
hyper-staticfile
? Couldn’t we just use file:///
URLs?
Well, first off: showing off how easy it is to serve some static files, even in a “scary” language like Rust, is just not something I could pass up.
But also: think about distributing salvage
as a tool. Will we want to
distribute all those HTML/CSS/JS/font files alongside it?
Day 4 (Advent of Code 2022)
Part 1
Let’s tackle the day 4 challenge!
In this one, we get an input like this:
2-4,6-8
2-3,4-5
5-7,7-9
2-8,3-7
6-6,4-6
2-6,4-8
Each line has two ranges: the first line has ranges containing 2, 3, 4, and 6, 7, 8. We must count how many pairs have ranges where one fully contains the other.
In Rust, we can express this with “inclusive ranges”
(std::ops::RangeInclusive),
and those implement Iterator
, so we can do:
Day 11 (Advent of Code 2020)
Another day, another problem.
This time the problem looks suspiciously like Conway’s Game of Life, or, I guess, any old Cellular automaton.
We have a map like so:
L.LL.LL.LL
LLLLLLL.LL
L.L.L..L..
LLLL.LL.LL
L.LL.LL.LL
L.LLLLL.LL
..L.L.....
LLLLLLLLLL
L.LLLLLL.L
L.LLLLL.LL
And for each iteration:
L
symbols turn into#
if there’s no#
in any of the 8 adjacent cells
oocdoc, Part 1 — NaturalDocs
Documentation in ooc land has sucked for quite some time. The standard response is pretty much: “use the code, Luke!” — which is fine when doing small projects that don’t matter much, but not so when you want to get serious.
So when a newcomer, beoran, asked how to generate documentation, and later told us he got NaturalDocs to work, naturally, I had to see for myself how well it worked.
Making a dev shell with nix flakes
In the previous chapter, we’ve made a nix “dev shell” that contained the fly.io command-line utility, “flyctl”.
That said, that’s not how I want us to define a dev shell.
Our current solution has issues. I don’t like that it has import <nixpkgs>
.
Which version of nixpkgs
is that? The one you’re on? Who knows what that is.
Also, we haven’t really seen a mechanism to use .nix
files from elsewhere.
Extra credit
We’ve achieved our goals already with this series: we have a web service written in Rust, built into a Docker image with nix, with a nice dev shell, that we can deploy to fly.io.
But there’s always room for improvement, and so I wanted to talk about a few things we didn’t bother doing in the previous chapters.
Making clash-geoip
available in the dev shell
Fine, we'll relocate our own binary!
Welcome back to the eighteenth and final part of “Making our own executable packer”.
In the last article, we had
a lot of fun. We already had a “packer” executable, minipak
, which joined
together stage1
(a launcher), and a compressed version of whichever executable
we wanted to pack.
What we added, was a whole bunch of abstractions to parse ELF headers using
deku, which we used from stage1
to be able to
launch the guest executable from memory, instead of writing it to a file and
using execve
on it.
A short (and mostly wrong) history of computer networking
When I launched my Patreon, I vowed to explain how computers work. But in 2019, computers rarely work in isolation. So let’s take the time to write a few articles about how computers talk to each other.
The history of network protocols and standards is long and complicated. Starting with a comprehensive review would prove quite tedious, especially if such a review was done in isolation from modern use.
Building poppler for Windows
I know what you’re thinking: haven’t we strayed from the whole “content pipeline” theme in this series?
Well… fair. But compiling and distributing software is part of software engineering, and unless you’re in specific circles, I see that taught a lot less than the “just write code and stuff happens” part.
Technically it’s release engineering, but who’s keeping track.