221 results for "":

Thumbnail for More ELF relocations

More ELF relocations

In our last installment of “Making our own executable packer”, we did some code cleanups. We got rid of a bunch of unsafe code, and found a way to represent memory-mapped data structures safely.

But that article was merely a break in our otherwise colorful saga of “trying to get as many executables to run with our own dynamic loader”. The last thing we got running was the ifunc-nolibc program.

Happy stay with us day

I didn’t really know what to do for “World Suicide Prevention Day 2014”.

First off, I didn’t know it existed at all. Like, c’mon, know your audience, if you have a party like that, I want in!

Second, it’s a terrible name: I hereby propose “stay with us day” in place. Nevermind the “world” part because, hey, we’re on the internet, the “suicide” part because, well, avoiding that is just the very start of a long uphill battle, and let’s keep the “day” part because, honest, if we can attract people’s attention for even a single day per year, it’ll be nothing short of a miracle.

Thumbnail for Extra credit

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

Thumbnail for Reading files the hard way - Part 1 (node.js, C, rust, strace)

Reading files the hard way - Part 1 (node.js, C, rust, strace)

Everybody knows how to use files. You just open up File Explorer, the Finder, or a File Manager, and bam - it’s chock-full of files. There’s folders and files as far as the eye can see. It’s a genuine filapalooza. I have never once heard someone complain there were not enough files on their computer.

But what is a file, really? And what does reading a file entail, exactly?

Thumbnail for Day 5 (Advent of Code 2020)

Day 5 (Advent of Code 2020)

Time for another day of Advent of Code 2020.

For Day 5, we’re going to have to do…

Cool bear

Let me guess: more parsing?

Amos

Correct!

So there’s an airline that uses binary space partitioning when referring to seats - there’s 128 rows and 8 columns. The first 7 characters are either F (Front, for the lower half) and B (back, for the upper half), and the last 3 are L (Left, for the lower half) or R (Right, for the upper half).

Thumbnail for Cut for time

Cut for time

This series has to end somewhere, so let’s end it here!

However, here is a list of some things I’d like to come back to:

Bundling & TypeScript

Using a bundler like Parcel so I can write some of the client-side logic in TypeScript, have it take care of building the SCSS, etc.

I do that to great effect in another project of mine and I’d like to show you how I did it!

Android development with rock 0.9.5

rock 0.9.5 is out! It’s the meanest, slimmest, baddest rock release yet.

To update, run git pull && make rescue as usual. To install from scratch, clone the repo, cd into it, and run make rescue from there - it’ll download the latest bootstrap, compile itself from C, then recompile itself from ooc.

Running rock -V should print this happy little version line:

Thumbnail for ELF relocations

ELF relocations

The last article, Position-independent code, was a mess. But who could blame us? We looked at the world, and found it to be a chaotic and seemingly nonsensical place. So, in order to blend in, we had to let go of a little bit of sanity.

The time has come to reclaim it.

Short of faulty memory sticks, memory locations don’t magically turn from 0x0 into valid addresses. Someone is doing the turning, and we’re going to find out who, if it takes the rest of the series.

The best way to learn

“The best way to learn is to just go out and make stuff, collaborate with people who are better than you at different things, and experiment.”

“That’s what I’ve found, at least. Just be around people who are awesome and learn off them. Trade ideas around and try stuff.”

“Everything I do, I’ve learned from friends, collaborators, people I look up to, and personal experiments. Just going out and trying stuff.”

Thumbnail for The case for sans-io

The case for sans-io

The most popular option to decompress ZIP files from the Rust programming language is a crate simply named zip — At the time of this writing, it has 48 million downloads. It’s fully-featured, supporting various compression methods, encryption, and even supports writing zip files.

However, that’s not the crate everyone uses to read ZIP files. Some applications benefit from using asynchronous I/O, especially if they decompress archives that they download from the network.