Downloading an HLS Stream with ffmpeg

June 19, 2023

I recently encountered a video served with an HLS stream that I wanted to have a copy of, but the website did not support downloading it. Trying yt-dlp yielded no results (it was not one of the “common” websites), but I did learn that ffmpeg supports conversion of HLS streams directly to a file. I referenced a blog post on, though I’m sure that the same information is present in many other locations online.

Read more →

Meeting Don Knuth

Everyone has heroes, but not everyone gets to meet them. This past Tuesday, I was fortunate to meet one of mine — Don Knuth. If you are in computer science and don’t know who Don Knuth is, I highly recommend you take a break from this post and do a bit of reading about him. He is most well-known for authoring his (still in progress) Art of Computer Programming, a compendium of all kinds of information on algorithms, but his contributions to computer science and software development reach far beyond that. He invented TeX (precursor to LaTeX), wrote Concrete Mathematics (a great mathematical foundations of computer science book), and received a Turing award.

Me with Don Knuth

Me with Don Knuth

Read more →

Raspberry Pi Default Groups

In setting up my Raspberry Pi for a home fileshare, I noticed the pi user is a part of several default groups. These are:

1pi adm dialout cdrom sudo audio video plugdev games users input netdev gpio i2c spi

(I’m using the 2017-09-07 image of Raspbian Stretch Lite.)

This looked like a lot of groups to me! To make sure my new user only has the minimum permissions needed, let’s look at the what each group is and why it’s there.

Read more →

How to Request a Regrade

One of the highlights of my time at UVA was working as a teaching assistant for the computer science department. In this capacity, I proctored labs and exams, held office hours, created exam questions, and even graded homework and exams. Due, in part, to the large class sizes of our introductory courses and the necessity of multiple graders for each assignment, most professors have a “regrade” policy – if the grader has made an error in grading a student’s work, there is a formal process for the student to request a second look at his or her work.

For CS 2150 (the course I TA’d), I was one of two or three TAs who processed most – if not all – of the regrades for exams in the past two semesters. Although grades are ideally determined solely by the answer’s merit, there are a few simple ways you can make your grader’s life easier. (And that’s always a good thing, right?)

Read more →

A Brief Exploration of a Möbius Transformation

April 18, 2017

As part of a recent homework set in my complex analysis course, I was tasked with a problem that required a slight generalization on part of Schwarz’s Lemma:

Lemma (Schwarz): Let $f$ be analytic on the unit disk with $|f(z)| \leq 1$ for all $z$ on the disk and $f(0) = 0$. Then $|f(z)| < |z|$ and $f’(0)\leq 1$.
If either $|f(z)|=|z|$ for some $z\neq0$ or if $|f’(0)|=1$, then $f$ is a rotation, i.e., $f(z)=az$ for some complex constant $a$ with $|a|=1$.

The homework assignment asked us (within the context of a larger problem) to consider the case when $f(\zeta) = 0$ for some $\zeta \neq 0$ on the interior of the unit disk. The secret to this problem was to find some analytic function $\varphi$ that maps the unit disk to itself, but swaps $0$ and $\zeta$. Then, we may consider $\varphi^{-1}\circ f\circ \varphi$ and apply Schwarz’s Lemma.

Read more →