RSSAmplifier

Blog

astrid.tech

website about tech and other shit

astrid.techRSS feed ↗68 posts

Latest posts

Linux is an interpreter

This is a standalone addendum to an earlier four-part series. Reading the previous parts is not required. Links to previous parts, if you are interested: Part 0: curl > /dev/sda Part 1: Swap out the root before boot Part 2: How to pass secrets between reboots The 3rd and final part: The little chicken shed that could Part 5: you are here In a previous article , I left you with this mysterious…

The little chicken shed that could

This is the third and final part of a four-part article series about how to reimage a disk in-place, how to do weird things in initrd, and… well, now I guess it’s about how to build your own Linux distro. Part 0 is located here. Some of you are about to angrily comment or email something like “grrrr! NixOS Anywhere already does that kexec technique you were describing in part 2 and you STOLE it…

How to pass secrets in RAM between reboots

This is part 2 of a four-part article series about how to reimage a disk in-place, and how to do weird things in initrd. Part 0 is located here . At a high level, when a Linux machine reboots, the following things end up happening: Init process shuts down all other processes and all writes are flushed to disk The init process requests that the kernel reboot, so the kernel sends an ACPI reset to…

Swap out the root before boot

This is part 1 of a four-part article series about how to reimage disks in-place. Part 0 is located here . Did you know that when Linux boots, it doesn’t actually mount your root disk at first? It actually runs a mini-me OS that finds the real root disk and becomes it. The official name for this mini-me is the initramfs ( Init ial RAM F ile S ystem), which some people still call the initrd ( Init…

curl > /dev/sda

This is part 0 of a four-part series about doing weird things in early Linux boot. To replace your Linux installation with a new OS, you can download a pre-prepared disk image directly to your disk by running a command like this: curl https://something.example/foo.img > /dev/sda # (or whatever your disk is called) No need to save it anywhere first, just pipe it directly to the disk. Then you can…

A Highly Editorialized Ham Cram FAQ

This is a guide that I made for a local group of people I’m trying to turn into hams. I’ve adapted it here, with some details redacted, for future reference to anyone else who may be interested in becoming a ham and attending a ham cram. This is a living document and subject to be updated. What is ham radio? If you’re familiar with walkie talkies you may have used as a kid, the ones with 24…

ping ff02::1

TL;DR: Link local addresses are great and can be used for lots of things, like: finding and connecting to hosts that didn’t get an address via DHCP transferring files directly between two computers via Ethernet with almost no extra configuration To enumerate every IPv6-supporting device on your LAN, even if the device isn’t DHCP’d or SLAAC’d correctly, you can run a command like this: ping…

Ansible is a Lisp

The Lisp family of languages is unique because code and data have the exact same form, and code is data, and data is code. This property is called homoiconicity . Consider the following Racket program (from The Racket Guide ): (define (extract str) (substring str 4 7 )) (extract " the cat out of the bag ") When evaluated by Racket, it will output “cat”. However, you can also think of it as a pure…

Homelab overhaul: standing up the new server

This is a continuation of my woes in overhauling my homelab. The server, and requirements My server is a HP DL380P Gen9 that I acquired shortly after its end-of-support date, likely from a Bosch datacenter 1 that wanted to get rid of them. Provisionally, I will designate this machine with the hostname boop, because I don’t have any better names for it. I had the following requirements for this…

Homelab overhaul: routing, pxe, and failing at both

So after I set up my VLANs , it was time for me to have my OPNSense firewall route packets between them. Here’s the layer 2 and layer 3 layout of my network before changes: You’ll notice that there are many flaws with it: The wifi devices are being NAT-ed. So nothing in the user space can talk to the wifi devices. This is very bad because none of my ethernet devices can talk to wifi devices.…

Homelab overhaul: layer 1 and 2

In the past week, I have made many changes to my homelab. Here’s a summary of what I did, and the many, many, many issues I had to contend with due to a mix of incompetence and cheapness. State of the homelab, end of 2023 When I moved into the new apartment, I had grand plans for VLAN-segmenting every part of my homelab and ensuring maximal security. I was going to put all the management stuff on…

Fixing a bug with C++'s >>= operator

As someone who has done a bit of functional programming, I have to say that C++ has really strange design choices, like being eagerly evaluated and allowing the user to cause all sorts of weird memory safety issues. But that’s excusable – not all languages can be as good as Haskell. However, there is one thing that cannot be excused – C++ has this weird bug where the >>= operator represents…

Rotating my Linux Microsoft Surface's screen

Suppose you have a Microsoft Surface Pro running Linux with all the Linux Surface patches and IPTS daemon running for your stylus. To rotate the display left, first find your screen by executing xrandr --listmonitors , which will have output looking like this: Monitors: 1 0: +*eDP-1 2736/260x1824/173+0+0 eDP-1 Then, you execute the following (in my case I would use display_name=eDP-1 ): xrandr…

Happy Leap Day!

This post is entirely here to say that I made a post on leap day.

That One Time Hacker News Killed My Website

Hey, remember how I used to blog regularly? Remember how astrid.tech used to get a new post every few weeks? Remember when the last post wasn’t over a year ago? Remember that Blink Mini reverse-engineering series I did 2 years ago that I never ended up finishing ? I thought I would milk a post out of my own technical ineptitude during that era. Please note that I would have placed more images in…

Abusing Conda's YAML comments that are actually Python expressions

I was trying to submit a Conda package to Conda Forge , and I needed a way to mark it as Linux and MacOS only. As it turns out, you are supposed to define something like this in your meta.yaml build configuration file: build : skip : True # [win] What this seems to mean is, “skip the build if we are in windows.” Why is it a comment? I don’t know, but that’s what it is. This package also is a…

Yes, I redesigned my website

This post is the obligatory “look look I changed the website” post. I will go in depth about the technicals of the website redesign – why I did it, how I did it, and what my next steps are going to be. Why astrid.tech? astrid.tech, from the very beginning, was a project in resume-driven development. Sure, I wanted to show off my projects and stuff, and have a nice record of what I have done, but…

Gaming on an Android VM on Linux

I wanted to run Android games (specifically Arknights) on my NixOS box, but Anbox seems to be broken on NixOS. So, I figured out a way to make it work in Libvirt. Other people wanted to do it too, so here’s a guide. Assumptions about you You know how to navigate an Android device You know how to navigate Libvirt You can troubleshoot issues, because this guide is provided “AS IS”, WITHOUT WARRANTY…

Using PRs in Nixpkgs before they actually land in Nixpkgs

Nixpkgs is a very rich package repository, but sometimes it doesn’t have the package that you want. However, if you’re lucky, someone else might be working on adding it right this instant! You can check the current pending pull requests to confirm this. There’s a good chance that their version works; perhaps with some little bugs or kinks, but it still works. If you used it, you could even submit…

A GPU Passthrough Setup for NixOS (with VR passthrough too!)

This week, I built a new gaming PC and got GPU passthrough set up on it! In this article I’ll talk about how I got it working, and stuff I learned about virtualization along the way. Why VFIO? A good chunk of it is that hate Windows and I like the features of Linux a lot more. Windows doesn’t have xmonad or ZFS, and all of my workflows are highly Linux-centric. I’d rather have a Windows guest that…

Blink Mini RE, Part 4 -- Staring into the heart of the binary

Because I had the privilege of obtaining factory-fresh ROMs from the cameras ( as covered in the last episode ), I realized that I could use those to perform some deeper analysis of the ROM’s structure. So, that’s what this post will set out to do. This post was made in a Jupyter Notebook! Loading and visualizing the dumps First, we will start out by loading the dumps into our environment. import…

Blink Mini RE, Part 3 -- Staring into the eye of the binary

This is a continuation of the last post, where I desoldered and dumped the ROM . In this post, I will discuss some of my initial findings from the firmware. I’ll write about more juicy findings in the next post because this one is getting quite long, and the next one deserves a Jupyter notebook. Last time, I got a 2MiB ROM! I discussed a few findings from the firmware, but nothing about how I…

Blink Mini RE, Part 2 -- Desoldering and dumping the ROM

This is a continuation from the post where I disassembled the lil guy . Last time, I couldn’t do anything about this chip because I was waiting for my SPI flash programmer kit to arrive. On Saturday, though, it arrived! Trying to use the programmer kit on Saturday The programmer kit came with a bunch of parts for a bunch of different scenarios. Of course, it included the SOIC-8 clip that I wanted.…

Disassembling an Amazon Blink Mini camera

Strap in kids, this post is about me physically hacking apart Amazon’s Blink Mini to get access to its firmware! No firmware was harmed or modified in the making of this post… yet. Big thanks to Ada and Erin for helping me figure this stuff out! Background I attended the 2022 Cybertruck Challenge a couple of weeks ago, in which I learned about hacking, then proceeded to hack trucks and truck…

Running wireshark live on a remote host

TIL that you can analyze live packets from remote network interfaces in Wireshark with the following command: ssh $ SSH_TARGET " tcpdump -w- -U -i $ REMOTE_INTERFACE " | wireshark -k -i- It’s essentially three commands glued together in a big pipe. On the left side of the pipe, we have the following to connect to the machine and capture packets in pcap format: ssh $SSH_TARGET ... means “SSH into…

How I became a l33t h4x0r by installing Kali Nethunter on LineageOS on a Pixel 3

Do you want to hack your neighbors and disable their Wi-Fi because they’re blasting too much loud music? Don’t, because this is highly illegal and you’ll get into trouble. As my Network Security professor says, “please don’t get arrested.” But if you want to theoretically have the capability to do it from your phone , you might want to install Kali Nethunter on it. This guide is the fruit of a few…

What happens to TLDs when their country stops existing?

EDIT Sun May 15 10:38:34 PM PDT 2022: Hello Hacker News! I’ve made some corrections to this post after Keith Winstein pointed out a small historical inaccuracy. Turns out, ICANN did not exist until it was created by the Clinton admin on September 18, 1998 , at which point IANA was merged into ICANN. So, most of the 90’s decisions around TLD’s were made by Jon Postel and Joyce K. Reynolds at the…

Top 4 shitty Github Actions hacks that I used this weekend

Github Actions is like the free cup of beer you get at chemistry conferences; it sucks, but hey, it’s free. That’s why I use it to build the configs for my homelab . I had some decent CI pipelines set up for it, but unfortunately they weren’t very reliable. So I spent the weekend trying to improve it. Here is a summary of all the horrible hacks I ended up using along the way. For reference, here…

My trip to the ACS Spring 2022 conference

I guess I’m a travel blogger now. Context So I met this girl named Alia Lescoulie at a queer Halloween party last fall and we kinda hit it off; we both used Linux, we both liked programming, and we both knew enough about urbanism to complain about stroads . Anyways, long story short, after getting past the useless lesbian phase, we started dating! She was working on a research project called…

Skeleton Stick, a hardware password manager

I got to choose any security-related project I wanted for my CPE 321 (Intro to Cybersecurity) final project. So, I chose to make a hardware password manager on a Raspberry Pi! Check out the project page for more details on its design, and a link to the design document I wrote about it for class. I implemented it in a total of about 15 hours. It was a very interesting project covering lots of…

Getting NixOS to work on a Surface Pro 6

This post chronicles my experiences trying to get NixOS running on my new Surface Pro 6. Why I got it My older travel laptop, cracktop , was kinda breaking down. The keyboard refused to send keystrokes unless you pressed down really hard on it. Additionally, my gaming laptop, banana , was really heavy to lug around, its battery barely lasted an hour, and it kept waking up from suspend while it was…

I now have a QR code tattoo!

Content warning: this post mentions tattooing and has a small amount of skin peeling. Following up from my last post about temporary tattoos , I finally got it permanently etched onto my skin! Thanks to Kelsey Kansas at Crybaby Tattoo in San Luis Obispo! And yes, it can be scanned. My tattooing experience This was my first tattoo ever, so I suppose this post also doubles as a “my first tattoo…

Installing NixOS with multiple encrypted ZFS pools, decrypted with one password

This article describes how I got a NixOS install working with multiple encrypted ZFS disks. Motivation Skip this part if you don’t care about me. I finally installed NixOS on my (formerly) Arch Linux laptop. Doing so presented a couple of challenges. The biggest one was the fact that it had an interesting combination of drives that I wanted to install ZFS on: 1TB nVMe SSD with existing Windows…

APRS on the trip back for Thanksgiving

I decided to take my radio’s APRS functionality for a spin on the ride home this Thanksgiving break. Unfortunately, there was horrible coverage along most of the trip. It seems I got picked up by the W6DXW-1 digipeater in King City, KI6ETL-10 in San Jose, and WA6TOW-2 in Pacifica while I was in San Mateo, which is extremely puzzling. Perhaps just due to sheer luck. What happened? I have a Nagoya…

Misadventures in configuring an AT-D878UV radio

Last week, because my Baofeng UV-5R’s VHF band appeared to be broken and I wanted to experiment with APRS, I decided to splurge on a Anytone AT-D878UV radio. I received it from eBay today, and I was super eager to try it out! However, I ended up encountering a whole bunch of stupid issues on the way there, and spent approxmiately 5 hours trying to figure out what went wrong. So, here’s an article…

Testing a Raspberry Pi 4 with SPI TFT Screen

Today, my Raspberry Pi 4 and TFT/case bundle came in the mail, so I decided to give it a spin and see how it works. This will be used for an upcoming project that I will not spoil. Assembly The case came with 4 screws to screw the Pi into the bottom of the case. Then, I slotted the TFT screen onto the GPIO pins. Finally, the upper part of the case had a cover (which I assume is for when you don’t…

Hidden posts

My site now supports hidden content about NSFW topics! It’s a bit janky, but if you scroll down to the footer there is a checkbox for that. Do NOT check that box if you are under 18, or are not willing to see such topics. Eventually I’ll make a modal for this content, but I’m too lazy right now.

Massage wand modification

What do you do with a waterlogged massage wand? Mod it into an Arduino-controlled bluetooth vibrator with optional Websocket command relay, of course! I completed this project back in 2020, but never got around to writing about it. So here it is! This article will cover my process of disassembling the original device and modding it with my custom electronics. For more details about the parts of…

Can we turn smartphones into fax machines?

At today’s CPARC meeting, I had an extremely stupid idea. If fax is just audio over phone, what if you had a smartphone app that: converted a PDF into a fax signal dialed a fax machine sent the fax signal over the phone call? But then it gets better. What if on the receiving end, it wasn’t a fax machine, but another phone? So that phone receives the phone call receives the fax signal decodes the…

A horrible workaround for my bootloader deleting itself from EFI

What is this systemd service I have on my computer? ❯ cat /etc/systemd/system/install-bootloader-on-shutdown.service [Unit] Description=Install bootloader on shutdown DefaultDependencies=no Before=shutdown.target reboot.target halt.target [Service] Type=oneshot ExecStart=bootctl install [Install] WantedBy=multi-user.target In short, it’s a horrible workaround for an absolutely stupid problem on my…

astrid.tech's belated 1-year anniversary! 🎉

It’s been a year (and 4 months) since I first brought v0.1.0 of astrid.tech online! Additionally, it’s been just over a year since I published v1.0.0 , which I considered the first “complete” version of my site! (spoiler alert: the site is never complete) astrid.tech has evolved so much since then. You could even make a joke about Theseus’ ship with it, since I’ve changed frontend frameworks and…

I used NixOS for a week

I spent the week using a travel laptop with NixOS installed on it while at school. On that laptop, I fully bought into the NixOS ecosystem, including managing my /home folder + dotfiles using home-manager. 1 Here’s my experience with it so far. Dotfiles Tracking my i3wm in home-manager was slightly unwieldy at first, but I’m getting the hang of it. Home manager actually has a sort of i3…

Why do I put stuff in monorepos?

Monorepos are great, and here’s why like to use them for my personal projects. What is a monorepo? If you have a project with multiple services, like a frontend and backend, you can either put them in separate Git repos, or put them in the same repo but in different folders. The source code for my website is an example of a monorepo with 6 subprojects (specifically, aay_tw_shortener/,…

QR Tattoo Preliminary Testing Results

Continuing from my last post about the QR code tattoos , my package of temporary tattoos arrived from StickerYou on Thursday: So, I eagerly I cut out the tattoos and pasted them onto my skin. Applying the temporary tattoos The instructions to paste them on are quite simple: Cut out your tattoo. Peel away the clear plastic layer to expose the adhesive. Apply the tattoo’s adhesive side to skin.…

Locking Drawing Tablet on Single Monitor

To lock a drawing tablet to a single monitor, the command is xinput map-to-output $STYLUS $MONITOR where $STYLUS is gottten from xinput : ❯ xinput ⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ ... ⎜ ↳ HID 256c:006d Pen Pen (0) id=26 [slave pointer (2)] ⎜ ↳ ... ⎣ Virtual core keyboard id=3 [master keyboard (2)] ↳ ... and $MONITOR is gotten from xrandr : ❯ xrandr --listactivemonitors…

I'm planning to get a QR code tattoo!

I’m already a transhuman trans humanist transhumanist human, so I thought, “why not just go all the way and get a QR code tattoo?” This article is a compilation of basically all of the research I’ve done on this topic. Now, I know what you’re thinking: “what happens if your tattoo goes to a broken link?” It happened to this unfortunate Argentinian football fan , after all. However, unlike him, I…

Connecting to the Cal Poly VPN from a Linux machine

Cal Poly’s VPN uses GlobalProtect , but IT doesn’t support Linux. That sucks, because I use Linux most of the time. Instead, OpenConnect seems to work, with the following command: openconnect --protocol =gp cpvpn.calpoly.edu --user =<user> This may need to be run as root. Additionally, it does not fork, so you may need to place it in a tmux session or something like that. I personally have a shell…

Changing author name and email in Git

Suppose someone who formerly committed code under John Smith <john.smith@example.com> now commits code under Jane Smith <jane.smith@example.com> . All of her commit history is under John, and she wants to change it to Jane. Additionally, she used to commit with a funny email address called foobar@example.com , but she doesn’t like that anymore, and wants everything to be under…

A third redesign?

So we’re already on astrid.tech v2, despite the fact that the footer still says v1. However, I’m feeling like my website is not very flexible anymore, and I want to redesign. Why the hell do I want to redesign my website again? There are a couple reasons. My current setup is inflexible, hacked-together, and shitty. It would be quite a pain to add a new post type, like a note, recipe, or a RSVP, or…

How to set up Dynamic DNS on FreeIPA for your Kubernetes Cluster

I have a FreeIPA server that serves DNS on my home network. I wanted to automatically configure it with my Kubernetes ingresses using ExternalDNS . There doesn’t seem to be much documentation for this specific setup, so I thought to put together this guide! Requirements This guide will assume that you have the following set up already: A Kubernetes cluster running on your network A FreeIPA server…