I love living in the city, but my heart yearns for nature. When I first moved to the city, I got my fix by making it out to Beacon or Cold Spring, but I got tired of doing the same manicured hike for the fifth time. Backpacking has brought back my love of being in unfiltered nature - unfortunately, guides on how to do it are few and far between!
I normally cook by feel, but that doesn’t work with an Instant Pot. This is a working document for my own reference. All recipes are on high pressure. Check Amy and Jack for more detailed recipes. Item Active Time Natural Release Time Chickpeas (unsoaked) 50 min 10 min Chickpeas (soaked) 5 min 10 min Black beans (unsoaked) 30 min 20 min Carnitas (2 inch cubes) 40 min 15 min Jasmine white…
My friend told me that you can request a download of all your listening activity from Spotify! I got Claude to one-shot creating an artifact to do this. You can view it right here! I’ve also got my own listening data you can use while you wait for your data to come back. I juiced this base artifact up a little using Cursor chat, and now it looks much better! View it here.
Most people believe our education system is broken, but in my experience, it’s not common that two people actually have the same gripe with the system. Complaints vary from teacher pay to content practicality to poor standardized tests. I don’t think any of those are the main problem (although they may be upstream of my personal complaint). I think the core issue is the model in which…
Growing up, I thought of myself as a bad writer. That’s not to say I couldn’t write - I could always pump out a 5 paragraph essay. 1 intro, 3 body, 1 conclusion. 5 sentences each. It felt, though, like some people had something I didn’t. I could follow the formula and make a point, but I struggled to go beyond that and break the mold. I just couldn’t find my voice.
I do basically all of my interesting work through prototypes. In particular, when trying to make a complex change or build out a new system, I start by building out a shit-quality MVP that simply proves the thing I want to do is possible. The code that I write in this process will never see the light of day, but it’s the foundation for the rest of my work. This style of work is foreign in a…
The greatest lesson I ever learned was that I could do so much more than I thought. I was taught this by Jon, my boss at a small datacenter I worked at in high school. Jon constantly pushed me out of my comfort zone, and I’ll forever be grateful for the lessons he taught me. As a 16-year-old being given the opportunity to do network engineering part-time, I was just grateful to have a job…
I’ve spent a lot of my life getting good at broadcast-style instruction, specifically lecturing and technical writing. These are both difficult skills because you have to learn to build DAGs. When teaching, you have to understand the delta between your understanding and your student’s understanding. When doing broadcast-style instruction, you do this for many students concurrently.…
I turn 24 today which means I’ve spent half my life writing code. When I started, I didn’t think this was the yardstick I’d be measuring my life against, but sometimes the cookie crumbles in ways you don’t foresee. When I think about that 7th grader booting up the Codecademy Javascript course, all I can do is remember the joy of those early days. I remember building my…
Recently, I wanted to share my Syncthing config across multiple NixOS hosts, and I couldn’t find any good information on it online. I hope this helps someone. I have the following config that’s parameterized only by the username of the syncthing user - everything else stays the same: services.syncthing = { enable = true; user = user; configDir = '/home/${user}/.config/syncthing';…
In order to understand a given concept, there are a set of “dependent concepts” that are required. Learning multiplication requires an understanding of addition. Learning how to cook a steak requires an understanding of temperature control. Learning Kubernetes requires an understanding of containers. In my head, I model these relationships as a DAG. Each node is a concept, and concepts…
The world of programming content is a shitshow. From courses promising to get you jobs to influencers preaching the glory of FAANG, it’s so hard to find anything worth paying attention to. The hard part here is that I think it’s super important to stay up to date on things! It’s probably a good idea to keep track of the LLM space, but it’s so hard to avoid the flood of…
I came across one of my favorite quotes ever sampled in a song, and I had to share it here. If you’re starting to trying to be a musician or artist—something like that—because you wanna make money, because you wanna do a job, that’s- that’s the wrong way. You have to do this because you love it. And it doesn’t matter if you broke, you still gon’ do it. I mean, I go…
I don’t understand why today’s LLMs are so large. Some of the smallest models getting coverage sit at 2.7B parameters, but even this seems pretty big to me. If you need generalizability, I totally get it. Things like chat applications require a high level of semantic awareness, and the model has to respond in a manner that’s convincing enough to its users. In cases where you want…
Let me preface by saying, NixOS running on Asahi is the best Linux experience I’ve ever had. Every time I’ve run a Linux distro, I always end up hand-jamming config everywhere and forgetting about it. Over time this config builds up, and after ~1 year, a full wipe is in order. NixOS has basically solved this problem for me - all my configuration is versioned as code, so skew is…
The Asahi project is a set of projects & people focused on building out support for ARM Mac devices in the Linux kernel. Asahi can technically work with any distro, but the “officially supported” (insane levels of air quotes here) is the Fedora Asahi remix. I ran this for a while and had a really excellent experience. It was the smoothest out-of-the-box Linux experience I’ve ever…
Nix is a tool for building reproducible environments. It excels in situations where it can have a full view of the world - where every package and piece of configuration is managed by Nix. One benefit in practice is that it’s a really good package manager. Nixpkgs has a ton of packages, and it remains relatively stable even if you follow its “unstable” branch. Smarter people than…
Ollama is a tool for running LLMs locally, inspired by the DevX of Docker. It has a model hub with the big-name models. You can run models very simply: $ ollama serve & $ ollama run llama2:latest >>> say whatever you want to say to llama The real magic, though, is in how easy it is to define new model types with different system prompts and parameters: $ cat Modelfile FROM llama2:latest…
I don’t really care if people use Vim, even if I love it. I care a bit more about if people use “vim motions”. In my (extremely dogmatic) opinion, vim motions are the only good way to move around code. They make it so easy to move and manipulate text without moving your hands too much. I don’t use Spacemacs, but I feel the same way about it. The way it uses Vim motions to…
I’ve had a lot of fun playing with LLMs recently. I think they get a lot of coverage in applications where they play the role of an agent, but I’ve had pretty mixed results building these kinds of tools. In particular, I’ve had trouble getting the LLM to reliably make multiple function calls in serial. While one call may be exactly what I’m looking for, there’s a…
I recently moved into an apartment which means I get to have something I’ve missed for the last four years: a homelab! After hearing about the homelab, my roommate asked me “Would it be possible to get network-wide golinks?” After some thinking and looking at a similar project I worked on, I decided to build them! How Golinks Work The goal of a golink is to allow the user to…
Right before my junior year of high school, I hit a very lucky break and got the opportunity to work at a datacenter part-time during school. Considering that I worked a horrendous tutoring job at the time, this was the opportunity of a lifetime for me. The Work As soon as I started this job, I immediately loved the work. I latched onto networking and sysadmin work in a way that I had never…
NOTE: This post was cross-posted from the Penn Labs blog! Check it out over there as well and stay around to see some of the cool work the team does: https://pennlabs.org/blog/spot-postmortem Over the past month, our infrastructure has had some intermittent issues, so we wanted to drop a quick postmortem describing what the problem was and how we fixed it so we can solve these problems more…
I’ve tried to write this blog post many times before, but I always get stuck at the prose here. In the interest of actually writing this blog post, I’m going to skip it and get straight down to the good stuff. Maybe I’ll come back and write a story here. I probably will not. Intro The key idea of these thighs is that we want to end up with bulk pre-cooked chicken that can enjoyed…
NOTE: This post was cross-posted from the Penn Labs blog! Check it out over there as well and stay around to see some of the cool work the team does: https://pennlabs.org/blog/building-icarus As of recent, we’ve moved our infrastructure away from Dokku and onto Kubernetes. Especially for an organization with high turnover (nature of being a club), you have to carefully consider the…
NOTE: FaunaDB the company died, so this approach no longer is in use. I work for Modal now, so I re-implemented the backend using Modal. Sadly I lost all my data, so please give me kudos if you like the articles! When diving into WebRTC recently, I ran into this great article on the limitations of WebRTC, particularly related to its unreliability in doing NAT traversal. At the end of the article,…
For about 2 years now, I’ve been very interested in learning Kubernetes and potentially using it in my homelab, but there’s always been one main thing holding me back: the complexity. To get Kubernetes up the first time, I had to spin up a bunch of VMs manually and then put tons of binaries on each one of them. Even if I could get a cluster spun up, there was no chance I could…
🎉 We made it! 🎉 After 6 months of work, Caplance is finally at MVP. The brief release notes can be found here. To get to MVP, I had to implement the following functionality: Logging Config file parsing Combining all the previous updates, we get the following feature set for the MVP: Packet listening Packet forwarding over UDP Direct reply from backends, allowing the load balancer to only have to…
I’m back! Over the past few weeks, I’ve had much more time to work on Caplance than I had in the prior months, so, naturally, a ton of work has gotten done in these few weeks. Specifically, I’ve implemented the following functionality: Backend registration The following controls from the backends: PAUSE DEREGISTER RESUME HEALTH caplancectl to tell a running client process to…
While working on my load balancer, Caplance, I ran into a very strange error when trying to establish a connection between a client and a backend. Before I go to deep, though, let me give a quick intro into how TCP connection establishment works. Types of Message When establishing a TCP connection, there are 4 possible packet types you could see: SYN (S in tcpdump) - Always the first message sent.
Recently, I moved from writing my Go in VSCode to writing it in Neovim. I did this for two main reasons: Ubiquity I use Neovim for writing pretty much all my other code (except Java), so it was weird to use VSCode for this one purpose. Terminal Integration I hate the VS Code terminal. It doesn’t have the character support I want, and it overrides a bunch of keys (for example, Ctrl+f for fish…
After countless hours spent reading the GoDocs, googling “gre packets golang”, and staring at the term SIGSEV, I’ve got an update! I’ve made pretty significant progress on the actual load balancer, implementing most of the base functionality. So far, the load balancer can: listen for and ingest whole IP packets select the backend for a packet based on a combination of IP…
From Sunday, 3/10/19 to today, Tuesday 5/21/19, I’ve been working on improving. During that time, I decided on a single, small improvement to make each week, and I tried to execute on it. Each week, I’d outline the motivation behind my decision, the tools I’d be using, and the rules I’d have to follow during the week. The next week, I’d write a short reflection on how…
For about 2 years, I built and led the NEAT Rack Project, a program meant to teach high school and college aged students network engineering. In this program, we covered things as basic as introduction to Linux and as advanced as firewalling or dynamic routing with BGP. This program was well-run, well-written, and it overall did a solid job of giving students an introduction to technology…
When reading Google’s SRE book, I came across the section on load balancing. The book breaks up load balancing into three levels: DNS level Network level/Virtual IP level Datacenter level While I was familiar with the Datacenter level (aka reverse proxy load balancing) and DNS load balancing (achieved partially through round robin DNS), I had never looked at network-level load balancing.…
Over the past few years, I’ve started to see a multitude of online videos/articles about the weakening value of college, particularly in the area of computer science. Whether it’s Devon Crawford talking about how he dropped out of school or Mashable writing an article trashing CS degrees, the popular view on the internet seems to be “Eh, just learn it on your own.”…
Recently, my family has been playing Farkle, a simple but difficult-to-analyze dice game. Farkle has the following rules: At the start of the turn, each player must roll the 6 dice. After rolling, the player sets aside all the dice that scored. The player can then choose to roll again to potentially get more points or to take the points they have already scored. If the player rolls and scores no…
VPLS is extremely useful in allowing multiple sites to be connected to a single bridged domain. Unfortunately, VPLS networks are typically implemented with proprietary technology like a Cisco router. OpenBSD lets us break free of the typical restrictions of proprietary technology and use 100% free software to make a full-fledged VPLS network. Why VPLS? With VPLS, you can deliver a layer 2 circuit…