RSSAmplifier

Blog

Home on austin j. adams

Recent content in Home on austin j. adams

austinjadams.comRSS feed ↗23 posts

Latest posts

Survey of Qubit Representations

Because we humans are macroscopic beings who constantly interact with our environment, reasoning about the behavior of individual particles in a closed system — quantum behavior — can be difficult. Even the simplest quantum mechanic systems around, the spin-1/2 systems that people call quantum bits or qubits, aren’t much easier. Folks have designed many ways to represent qubit…

Proofs about Exponentials of Pauli Strings

This post is unfinished, so it may contain incorrect information. The paper “A Game of Surface Codes: Large-Scale Quantum Computing with Lattice Surgery” is a beautiful introduction to surface codes by Daniel Litinski. Figure 4 of the paper presents the following identities for exponentials of Pauli strings: \[ \begin{alignat}{3} &(1)&\quad e^{-i\varphi P’} e^{-i(\pi/4)P} &=…

Dissecting the Bloch Sphere

Learning quantum computing typically involves learning about the Bloch sphere, a representation of a qubit state as a point on the unit sphere. However, most sources don’t dig into how it really works, mathematically speaking. For example, neither the Qiskit textbook nor Mike & Ike attempt to explain the formula for the Bloch sphere to readers, only dumping the formula and saying “have…

Proof of the Expectation Value of Z for a Qubit State

It has been a few years since I wrote a post on this blog, so I wanted to share a fun proof, even if it’s a little trivial.$ \newcommand{bra}[1]{\langle #1 |} \newcommand{ket}[1]{| #1 \rangle} \newcommand{braket}[2]{\langle #1 | #2 \rangle} \newcommand{bramket}[3]{\langle #1 | #2 | #3 \rangle} $ For many quantum applications, you care about $\bramket{\psi}{Z}{\psi}$. That is, the expectation…

Fixing Spotify on HiDPI on Ubuntu

The official “Spotify for Linux” page states: Spotify for Linux is a labor of love from our engineers that wanted to listen to Spotify on their Linux development machines. They work on it in their spare time and it is currently not a platform that we actively support. These brave engineers should be commended …for their incredible eyesight: For those of us with HiDPI displays,…

Acing a C Homework Using Inline Assembly

In courses taught in Java (such as a data structures class), you can build pretty robust autograders for homeworks — after all, the student’s code runs in the JVM, which prevents it from doing spooky things like corrupting memory or branching to weird places. So you can run the grader instantly after submission on a service like Gradescope and boom, they’ve got their grade. But C…

Praise

Here’s a cherrypicked list of the highest praise I’ve received in student evaluations: TAing nothing except maybe less CS humor communist ought to watch more anime This course was not just a disappointing course, but an embarrassment to Georgia Tech. [1400 words omitted] They need to seriously consider restructuring this course. Very childish Having half the class failing under your…

Autograding Gameboy Advance DMA Transfers

In CS 2110 at Georgia Tech, we use the Gameboy Advance to demonstrate how C code can interact directly with hardware. On a high level, students create games by reading button states directly from memory-mapped registers and write directly to a special region of memory called the “video buffer,” which the video controller continuously reads and draws on the screen. But my favorite…

Scanning a Book into a PDF

I’ve always wondered how the shady PDF wizards make those shady textbook PDFs you find online, and I was bored yesterday, so I decided to find out. Preparing the Patient At first, I tried to spreading the book and placing each pair of pages on a flatbed scanner, but that led only to frustration because the pages made poor contact with the scanner. Instead of trying to sort out the blurring,…

Opening .sim files in Roigisim (CircuitSim)

On GNU/Linux, to make .sim files have a Roigisim icon and open in Roigisim, run the following (except replace 1.6.0 with the version you want): curl -Ls https://austinjadams.com/img/blog/open-sim-in-roigisim/roigisim-setup.sh | bash -s 1.6.0 After the script completes, log out and log back in, just in case. This is a copy-paste job of my earlier script for Brandonsim.

Install Debian with debootstrap

A driver on Ubuntu 16.04 was giving me some trouble, so I wanted to quickly install Debian sid on an external hard drive to see if later versions of Debian/Ubuntu fixed the issue. However, I didn’t want to bother with downloading and booting from an installer disc, so took the following chroot approach. This bootstrap-and-chroot process isn’t new and is documented in bits and pieces…

Opening .circ files in Brandonsim

Sometimes you gotta have pretty icons and pretty buttons, y’know? In the case of Brandonsim on GNU/Linux, specifically to give it and .circ files pretty icons which open Brandonsim when clicked, do one of the following: Option 1: Use a Script Download Brandonsim-X.Y.Z.jar from T-Square, put it somewhere permanent (moving it will break the files the script creates), and run the following…

Including a List of Recent git Commits in a Hugo page

When redesigning my website recently, I realized I needed some meat on my homepage. Ideally, instead of a blank space, I could show off stuff I’m working on without having to maintain my show-off list by hand. Two ideas came to mind: recent blog posts and recent git commits. Since I already stored my blog posts in the static site generator Hugo, adding them to the homepage took me only a few…

My Work

Selected publications (for more, see my Google Scholar profile): Austin J. Adams, Sharjeel Khan, Arjun S. Bhamra, Ryan R. Abusaada, Jeffrey S. Young, and Thomas M. Conte. “Qwerty: A Basis-Oriented Quantum Programming Language.” 2025 IEEE International Conference on Quantum Computing and Engineering (QCE ‘25). September 2025. [website] [slides] Austin J. Adams, Sharjeel Khan,…

Defeating dd-formmailer's Weak CAPTCHA

Yesterday, I visited a website that uses dd-formmailer, a Wordpress plugin that provides a form for sending an email, complete with a CAPTCHA intended to prevent automated abuse. Here’s a screenshot: A screenshot of the dd-formmailer form I was bored and curious, so I looked at the CAPTCHA image and noticed it was always served from the same path:…

Counting Strings Recursively in Combinatorics

In my combinatorics class, we covered many neat subjects, some easier and some harder. But one topic performed a near 180° in difficulty once I understood the process: writing recursive functions to count strings meeting certain criteria. Simple Example As an easy example, consider counting nonempty binary strings. Imagine such a string of length $n \in \mathbb{Z}$. We have two possibilities: it…

Setting Up a Java Development Environment on Ubuntu

On GNU/Linux, I suggest using the OpenJDK, a free implementation of Java, and IntelliJ, so this guide will use both. First Steps Getting a Compatible Release You’ll need to install (or upgrade to) a recent release of Ubuntu to install Java 8. 14.04, for instance, has only Java 7. As the time of writing, 16.04 LTS is the most recent, so I’d suggest that. If you have an earlier release…

Unbricking a TP-Link Archer C7 v2 Router

I’m a pro at using things incorrectly, so of course I’d brick my Archer C7 v2 a few hours after I got it. Fortunately, however, I didn’t find flashing working firmware too difficult. Here’s a quick attempt at a guide: Give your machine an IP address of 192.168.0.66/24, stopping any existing network daemons (e.g., NetworkManager). With iproute2 on GNU/Linux: # systemctl stop…

Using a Remote CUPS Printer from Windows and GNU/Linux

In my college dorm, my roommate and I have three machines on the same network: My laptop (GNU/Linux) My roommate’s laptop (Windows) My desktop, a headless GNU/Linux server with my printer connected Because my roommate doesn’t have a printer and I often take my laptop places, I wanted my desktop to act as a print server. Server Setup Install CUPS and if you’re on systemd, and make…

Running Select Applications through a Cisco AnyConnect VPN

This is outdated now. Please see the README of the nsdo GitHub repository instead In an earlier article specific to OpenVPN, I wrote: To isolate VPN applications from applications running ‘bare,’ I use the following method, which involves nsdo. It has the handy effect of putting each instance of the openvpn client in its own network namespace, allowing you to run a bunch of VPNs at the…

Storing Big Directories on a Separate Disk

Don’t tell rms, but sometimes I play Steam games. Fitting a bunch of 10+ GiB games onto a Chromebook with a ~20 GiB disk, however, is practically impossible1. Two solutions came to mind: Buy another drive Expand my storage with external media Option 1 requires hundreds of dollars and, worst of all, effort, so I took the second route using an SD card. Putting Directories on an SD Card…

Using git to Deploy a Hugo Blog... Atomically!

For years, I’ve been meaning to set up a blog, but characteristically I couldn’t muster the effort to even try. Yesterday, however, I found Hugo, a simple but useful static site generator, and finally decided to stop being lazy. Despite the benefits (and despite writing a surprisingly similar tool myself ~4 years ago), I’d never felt drawn to static site generation. Often, I got…

Running Select Applications through OpenVPN

This is outdated now. Please see the README of the nsdo GitHub repository instead Note: I base this method heavily on a great article by Sebastian Thorarensen. To isolate VPN applications from applications running ‘bare,’ I use the following method, which involves nsdo. It has the handy effect of putting each instance of the openvpn client in its own network namespace, allowing you to…