Controlling Desk Height via Elixir Nerves

Background

In summer 2018, I learned of Elixir from one of the principal architects at Netskope, the company I interned at. He gave me a challenge: implement an Elixir application that reads in a CSV and ingests it into a database of my choice. It took a while, but I think the challenge took me no more than a few days. He then told me about Elixir Nerves, a project that aims to leverage Elixir as the “Operating System” for IoT devices such as the Raspberry Pi. From that point on, I was tremendously excited about the language and what it had to offer.1

  1. I use Elixir in everything now! If you’ve ever used my go links, or if you’re an investor at The Hype Advisor, you’ll have seen some of it in action! 

Read On →




Installing Windows Alongside Existing NixOS

Background

I use NixOS as my main OS in everything (from personal laptop to my server), but I was beginning to miss Windows for gaming. (WINE won’t cut it here.) As a result, I went searching for installing Windows alongside an existing NixOS installation, but I couldn’t find one anywhere. I decided to just dive in, and it worked! Here is a high-level list of the steps I took. For reference, I am installing this on an XPS 9550, with EFI.

Read On →




Homelab: Part 2

The hard drives finally came, so in this post, I’ll be documenting RAID (mdadm) and LVM (with lvmcache). I have a Samsung 970 EVO NVMe SSD which already has 3 partitions in this order: boot, root, swap (without LVM). In this post, we will be adding 4x 3TB Seagate Barracuda drives in RAID10 with mdadm, and with LVM top. We will then move the root partition to the RAID10 array.

Read On →




Covid-19 and Game Theory

With the Coronavirus, tissue paper and supplies are flying out of stores. Some argue that it’s a natural human reaction best explained by Game Theory. In this essay, I will explore these claims, as well as how several countries have responded differently, and how their policies can be explained by Game Theory.

Read On →




Homelab with NixOS, Jupyter, and More

For half a year (and more), I’ve been thinking about building a computer to learn and train ML models on, as well as to host my web applications on. Over this past half month, I finally bit the bullet, opting for a Ryzen 3700X paired with an Nvidia 1080 Ti. The full parts list can be found here. I chose to install NixOS, a declarative operating system, and this post outlines the full software-side process, including several hurdles I came across.

Read On →




P/NP and Game Theory

In light of the recent changes of UC Berkeley’s grading scheme to P/NP, it’s quite interesting to examine the problem of grading through a Game Theoretic perspective. Lots of students have proposed that the change to an online format encourages cheating, and that the curves for this semester will change drastically as a result. In this essay, I hope to explore this claim and test its validity.

Read On →




Random Fact #4

Today’s Fact: Foot On Water

Andi came up with an insane question: How wide does a human foot have to be for a human to stand on water? Of course, he came up with something insane, reproduced here.

Read On →




Random Fact #3

Today’s Fact: Linear Discriminant Analysis

Linear Discriminant Analysis, or LDA for short, is an ML model used in classification. Specifically, for a model of d features and n training points, it assumes that the d features are all distributed Normally (Gaussian), with the same variance. More formally, taken from my professor’s cs189 notes, we get:

Read On →




Random Fact #2

Today’s Fact: Temperature, Defined Statistically

TODO

Read On →




Random Fact #1

Today’s Fact: Market for Lemons

Fact 1 Source: Stat 155 Textbook, Game Theory by Anna R. Karlin and Yuval Peres

Read On →




Elixir Deployments and CPU Usage

Background

For the past semester, I have deployed a custom shortlinker service and my personal website on a Google Cloud Compute Free Instance. The custom shortlinker is a rewrite of the CS61A Shortlinker in Elixir, which was a good way for me to learn the new language. Upon deploying the Elixir version, however, I noticed that CPU usage hovered around a constant 100%, even the system was idling. I left it alone for a while, noting that it was responding to requests fairly quickly, leaving me to think that it was likely the BEAM that was idling.

Read On →




EE375: A Coffee Chat

Introduction

Hello! This is a talk I gave at EE375, an introduction to teaching techniques class required at UC Berkeley for first-time TAs. The content is largely based on James Hoffman’s techniques, with inspiration from other famous figures. Since the talk was limited to 3 minutes, I skipped a lot of (quite lengthy) discussions, including coffee grind sizes, water ratios, and water temperature. If you have any questions about the material, feel free to email me!

Read On →




Summer/Fall 2019: Netskope

Background

From May 2019 to January 2020, I worked at Netskope on the Data/Infra team, both in Santa Clara and in San Francisco. I learned a lot – both academically and professionally. I redesigned and partially rewrote a core part of their infrastructure, which eventually broke out into its own component that would be scaled up over time. This infrastructure was written in Go to replace their aging infrastructure in Python.

Read On →