(-:
This is a smiling face. Does it look upside-down? If you look at it a few more times (say, a hundred), it probably won’t.
I started keying reverse smileys sometime in 1999 or 1998. Somebody annoyed me by putting a lot of closing parens on their smileys, so I decided to provide enough opening parenthesis to sustain a balanced smiley-using net. Actually, that isn’t what happened. But it makes me look like a philantropic idiot, so I tell people this story. The other version makes me look like a lazy-ass geek, but it’s the truth, after all.
What really happened was that I used a reverse smiley once in a joke, then noticed that they are much easier to type, and then the habit stuck. I just can’t stop.
Sorry for the inconvenience. If the reverse smileys annoy you, please ignore them.
Some Trivia
Born in 1982, connected to the global TCP/IP network since 1996. Also known as asf@boinkor.net (GPG key ID 1526E64EDCAFCB0B for personal email) or antifuchs on IRC. Beware: I use Reverse Smileys (aka left-handed smileys).
What is Andreas Fuchs doing right now?
To learn what I’m up to as it happens, read my weblog. Here’s a summary: I used to work for a database startup company in the New York City. Before that, I worked at a financial tech company, and before that I was consulting on lispy problems. In my spare time, I enjoy hacking in Rust, Nix, Common Lisp, building robots, listening to music, listening to and reading and watching good stories being told.
asf on the web
My identities are all gathered on keybase.io/~asf. Here are a couple that are interesting:
- I toot as @antifuchs@weirder.earth and as @antifuchs@recurse.social. An @ reply is the preferred method for commenting on this site.
- My public projects are on my github account.
- Find out What google knows about me
This site was generated with Hugo from this source code. My site uses the anubis theme. Building, hosting and SSL provided by netlify.
If you want to know more, ask me at asf@boinkor.net.
Here’s some stuff I’ve been working on (github has the most recent & up-to-date info):
Current stuff
These are some of the things that I am currently working on:
- tsnsrv - A reverse proxy that exposes services on your tailnet (as their own tailscale participants)
- deploy-flake - A tool for deploying nix flakes to remote systems
- gearbox-maintenance - Perform ongoing maintenance on a transmission instance
- flac-tracksplit - Tool to losslessly, quickly & accurately split CUE+FLAC files into multiple tracks
- governor - A rate-limiting library for Rust (f.k.a. ratelimit_meter)
- o - Ring-buffers in go without interface{}
- chars - cha(rs) is a commandline tool to display information about unicode characters
- zpool-exporter-textfile - A tool to export zpool metrics as prometheus metric textfiles
- gotest-ui-mode - Ergonomic output for your go test results in emacs
Watch history unfold at my github account and this blog’s category Hacks.
Historical stuff
Common Lisp
- Once upon a time, I did some administrative work for the SBCL project
- Actual code: a gdbinit for SBCL
- I helped resurrect iterate from the CMU AI repository. Joerg Hoehle and Attila Lendvai are taking good care of it now.
- I wrote a UBF encoder/decoder for Common Lisp when I was bored. (see)
- I wrote Autobench to burn CPU cycles on this box.
- A VT100 screen scraper I wrote during my time at SILVER SERVER Gmbh was released as Open Source software.
See also my blog’s category Lisp
SBCL cvs->arch synchronisation is turned off. The last version is 0.9.17.17. You can use the official SBCL git repository now! I don't update this page any more. See This blog entry for details and updates.
Introduction and Health Warnings
This was a (pretty stable) beta version of what an Arch archive of the current SBCL CVS repository would look like. The archive is no longer synched with the SF.net developer's CVS.
Warnings (do no longer apply)
- The CVS sync did not really happen every hour. Sometimes, there were ssh key exchange troubles, which prevented a successful sync from happening. If you wanted to check out something that went into devel CVS an hour (or two) ago, but it wasn't present in the arch archive, chances were that there were ssh key exchange troubles.
- The CVS sync also stopped when it detected a possible file move (i.e. a remove and an add in the same commit) and required manual intervention from me. This didn't happen very often, though.
Checking things out from the archive
If you can't tell from the past tense and the note at the top: The CVS->arch synchronisation service is turned off. Use git. If you still want the arch archive, do this:
- Get baz (bazaar version 1) and install it.
- Run
baz register-archive http://sbcl.boinkor.net/sbcl@boinkor.net--2005/
- Then, check out a revision into the directory "sbcl--main" (you can change the destination directory, of course). I'll assume that you want to get the latest revision in the 0.9 (current) branch:
baz get sbcl@boinkor.net--2005/sbcl--main--0.9 sbcl--main
For further information about arch, see the Arch introduction for CVS users and the Arch tutorial.
Statistics concerning the archive
When I turned syncing off, SBCL, as hosted on http://sf.net/projects/sbcl, consisted of 3176 revisions. The arch archive's size is 190MB (containing only the MAIN branch). A greedy, non-sparse revision library for the entire archive was ~2.5GB or more, depending on the file system.
SBCL CVS->Git mirror is no longer active
The SBCL cvs->git mirror repository is no longer active, as there is now an official SBCL git repo.
For historical reference, here’s the old information about that repository:
Outdated information
(If you were redirected here while looking for SBCL in Arch, my apologies. It has been turned off.)
This page describes the current state of the SBCL Git repository.
There is a gitweb presentation of the repostitory here: gitweb for SBCL.
You can clone a full copy of the SBCL repository with this command line: git clone git://git.boinkor.net/sbcl
Administrative details
The repository is synchronized with upstream CVS through the Sourceforge rsync service. This means that commit propagation will be delayed by up to ~1 hour. The archive contains all commits on all branches in SBCL’s past. A partially unpacked repository is 68MB in size. Typically, cloned repositories will be 47 or so MB in size.
Some useful commands#
- To create a branch (off the current branch’s head revision) to which you can commit, use
git branch your-branch-name HEAD
- To update your tree, use
git pull
- To commit to your repository, use
git commit
All the git commands have a --help
switch.
I used to do a bunch of stuff on the SBCL project, but they have a ton of healthy other volunteers that take care of this stuff now. Here’s a list of stuff:
- Benchmarks of the current & of old versions of SBCL (a.k.a. boinkmarks):
- turned off, see the retrospectivehttp://sbcl.boinkor.net/bench/
- Used to host The SBCL manual and the SBCL internals manual here, but that’s auto-built from the release process now.
- (outdated) The SBCL git repository
- (outdated) the SBCL arch archive: SBCL in arch
An extensible vt100 terminal emulator for Common Lisp
From the README:
This is an extensible telnet/vt100 screen-scraper for lisp. By rendering unreadable vt100 control sequences into an array of strings (lines), It allows you to interact with a character-based menu interface and keep your sanity.
How to get it
You can get it from http://boinkor.net/lisp/screen-scraper/screen-scraper-current.tgz
Who is responsible for it / What’s the licence?
SILVER SERVER Gmbh kindly allowed me to release this under the BSD licence, sans advertisement clause. If you use this (and/or find it useful), please let me know!
Your Privacy on This Website
Like any other person on the internet these days, I have to provide a privacy policy and imprint here. Here’s a link to a pretty permissive (but accurate) privacy policy and imprint that I generated on iubenda: Privacy Policy.
If any lawyers come knocking, this is the policy that is current & applies to this site.
Some less hollow privacy promises
Unfortunately for you and me, this policy gives me way more permission do to stuff with your data than I’m comfortable with. So here’s the exact things I additionally do to keep away from your personal data:
- I configure hugo with fairly strict privacy settings - here’s the config file:
- No tracking via google analytics or other services. I don’t care very much about visitor numbers or where you came from.
- No automated embeds at all - I have disabled twitter, instagram and youtube embedding (unsure if I’ve ever even had any of those).
- This site doesn’t set cookies.
If you discover that your browser should have set any tracker bugs from a visit to this website, I consider this a security bug. Please report it against the git repo for this blog and I’ll fix it urgently.
More information about how you’re accessing this site
This is a statically generated website and I host it on Netlify; I believe their CDN is further served by CloudFlare. I do not get access logs for this site, but they do. Here’s the GDPR statements for those folks - please review them if you’re interested in how your HTTP requests get handled:
Hope that’s all, folks!
I am not sure I got all of this right. I’d appreciate a bug report if I didn’t.