Skip to content

European Experiment: Cholesterol & HA1C After Two Months of Living In Italy

I’ve been fighting my cholesterol for a couple of years at this point. This past summer, I lived in Italy for two months, ate whatever I wanted, and my cholesterol dropped by nearly 50% and my HA1C didn’t change. Below is the full story! Background Why even track your cholesterol and HA1C levels? After I was diagnosed with methane-dominant SIBO (confirmed by FoodMarble) in my early 30s, I was motivated to find the root cause. I started paying attention to my bloodwork and discovered I had high cholesterol. Not only was it possible that these were tied to SIBO, but I learned that these elevated levels, if not reduced, could cause many more health issues down the line. That was just enough incentive for me to start owning my health data…

Continue Reading

Learning Caddy Server

As part of setting up my new home server, I decided to learn Caddy. Caddy is a replacement for nginx/apache. With its plugin system, zero-config SSL support, and modern architecture, it’s a good bit more powerful. It’s been a while since I’ve used something that just felt right: well-designed, great abstractions, good defaults, etc. I’m really impressed with what they’ve built. It’s a beautiful piece of software with well-written documentation. It’s pretty easy to use, but I ran into some sharp edges and wanted to share my experience and my example Caddyfile. Caddy Features It’s designed for local development and production usage…

Continue Reading

The Future and AI, Part 1

Introduction I’m in the midst of hunting for the next startup idea, and I’ve been thinking about and playing around with AI nearly every day over the last year. I’ve had a lot of conversations with fellow technologists about how the advances in AI are going to change our world, and I wanted to get some of them down on paper. I’d love to hear critiques and comments on any of these thoughts! I’m still revising my thinking here and would love to hear different points of view. How Will AI Improve? It’s impossible to predict exactly how things will play out, but it’s important to at least define a point of view and think about the categories where AI may or may not improve: Cost. Undoubtedly, inference costs will drop…

Continue Reading

How To Get Things Done

Time is the great leveler. Regardless of where you live, what job you have, how much money you have, or what culture you live in, you have 24 hours in a day. We have a responsibility to cultivate our resources. At the very top of this list is our time. We live in an age when our time is more limited than ever. From big companies (Instagram, Twitter, etc.) to our friends (messaging us all day), every aspect of our culture nibbles away at any minute of spare time that we have. Managing our time well is more important than ever and is a crucial aspect of being a wholesome and effective person. Here’s what we want to accomplish by managing our time well: Integrity. We want to do what we say we will do without being reminded. Clear Priorities…

Continue Reading

Mastering Tmux

Tmux has been one of the best things I’ve added to my developer toolkit. After my initial dive into tmux, I’ve slowly learned more about the system and made some additional improvements to my workflow. Some notes from my tmux learnings over the last couple years: It’s been great that tmux continues to get consistent updates. Mad props to the developer who has maintained this tool for quite a long time without too much funding. In recent versions of tmux, you don’t need reattach-to-user-namespace but you do need to remap default keybindings to use pbcopy. From my research, it wasn’t clear that you still needed to modify your config to use pbcopy, but you definitely do…

Continue Reading

Supercharged Zsh Command History

I’m a big fan of incrementally improving your terminal productivity. I invested in learning tmux a while back and it’s been a game-changer for me in terms of flying through terminal workflows (which is especially important for me since I’m heavily REPL-driven). I’ve wanted to improve my terminal history functionality for a while now and recently found the time to tune up this part of my dev workflow! Fzf-based Shell History I’ve been using fzf based completion for years and it’s awesome. It’s easy to install so if you want something better than the default, this is a great place to start. Removing Entries from ZSH History If you update HISTORY_IGNORE your existing history is not retroactively filtered…

Continue Reading

Building a High-Performance Local Server

It’s been a really long time since I built a custom PC. At least 15 years, maybe closer to 20. Inspired by DDH, the crazy high cost of renting high-performance compute in the cloud1 , and my success with running both an Orange Pi and Raspberry Pi I decided to go ahead and do a custom build to create a high-powered home server box that I could use to play with some higher-compute workloads and get to play with desktop ubuntu at the same time (I’ve only ever interacted with linux via the CLI). Additionally, I wanted to play with self-hosting a wider array of production-related supporting applications: Sentry Windmill Prometheus and other observability tools As a bonus, I’m hoping this will heat my tiny house/office structure in the winter…

Continue Reading

Understanding DNS Requests on macOS

The DNS Stack Here’s a quick overview of how the DNS stack on macOS works. Much of this also applies to linux. cat /etc/resolv.conf contains a list of potential DNS resolvers DNS servers work off of UDP (not TCP) on port 53, but at this point, there are multiple DNS protocols that use different ports and configurations. You can see the DNS resolvers assigned to a specific device using scutil –dns This list is autogen’d and managed by the DNS settings of the current network device Unlike linux variants, this is not managed by NetworkManager and instead uses macOS-specific tooling, much of which is opaque…

Continue Reading

Fast, Local, Written-by-you Code Search

I work with many disparate open-source repos in many different programming languages. I often encounter a problem that I know I’ve solved before, but I can’t remember where I solved it. When I worked at Stripe, we had livegrep. It searched all of the repositories across Stripe in real-time. GitHub has an awesome code search tool now too. I love code search: often, it’s easier to "grep the internet" for obscure usage examples than asking ChatGPT or Google. However, what was missing was a code search tool I could quickly run on the command line to search through local Git repositories that were mostly written by me…

Continue Reading

Notes on the NetSuite CustomerDeposit Record

In the past, I worked a lot with the NetSuite CustomerDeposit record. Like most things in NetSuite, there are many nuances that can waste a lot of your time. Here are some the things I learned: Searching for CustomerDeposits with the _customerDepositNotDeposited status will not return results that cannot be deposited, but it will not return all deposits that can be deposited. When a CustomerDeposit is applied against an Invoice or a CustomerRefund, a DepositApplication record is created. The deposit field links to the CustomerDeposit. There is an applyList which applies the deposit to invoices or customer refunds. When a DepositApplication is created the status of a CustomerDeposit shifts to FullyApplied…

Continue Reading