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…
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…
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…
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…
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…
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…
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…
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…
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…
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.…
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…
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…
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…
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…
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…
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…
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…
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…
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…
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…
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…
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.…
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…
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…
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…
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…
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…
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…
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…
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…
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…
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…
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…
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…
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…
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.
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…
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…
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…
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 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…
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/,…
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.…
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…
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…
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…
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…
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…