RSSAmplifier

Blog

Paradigm Shift

A personal blog to track my technical journey ...

toranbillups.comRSS feed ↗15 posts

Latest posts

Less Magic More Engineering

Early in my career, I followed a Python programmer named Gary Bernhardt. Some of you might know him from the popular WAT talk that made data structures look like an afterthought in JavaScript. I had the pleasure of watching Gary live code as part of "birds of a feather" one night at Pycon 2012 and I was never the same. As most early career programmers do I put Gary on a pedestal. If I'm honest, I…

Embracing Disagreement

For years, I was that engineer who obsessed over the perfect abstraction, the cleanest architecture, the most elegant solution. I'd spend hours refactoring code and building features that were interesting but not valuable. I was optimizing for everything except what mattered most: building products that people actually wanted. This shift from code-centric to impact-centric thinking doesn't happen…

Building BM25 Keyword Search In Postgres

It turns out, you can build a surprisingly powerful keyword search, known as BM25, with just a handful of SQL functions. What follows is my journey including what I've learned, how this algorithm works in simple terms, and how I implemented it without any external dependencies. The Foundation: From TF-IDF to BM25 Before diving into BM25, it's helpful to understand TF-IDF (Term Frequency-Inverse…

Writing the BERT Encoder with Nx

I set out to build a BERT like encoder from scratch this year. But that's not what happened. Instead I spent months stumbling over my inexperience, hitting walls, abandoning assumptions, and ultimately leaning on pretrained weights just to get off the ground. This is that retrospective—every wrong turn, every silent bug, and the hard-won lessons that came from building something I barely…

Adventures with Synthetic Data

After ElixirConf I found myself increasingly immersed in the world of fine-tuning. This curiosity soon led me on a journey to explore various use cases, eventually drawing me into the realm of synthetic data. One pivotal moment in this exploration was a post by Edward Donner that detailed his experience training a language model to mimic his unique texting style. The majority of my time was soon…

Retrieval Augmented Generation Cohort

On November 1st I joined the first RAG cohort from MLOps.Community and went hard for 8 weeks building a proof of concept that combined everything from embedding models , prompting , and retrieval to ranking with a cross encoder to support hybrid search . I want to extend a public "thank you" to Rahul Parundekar for all his hard work ahead of the long journey, the consistent encouragement and the…

Fine tuning language models with Axon

In 2023 I spent a lot of time at the intersection of software engineering and machine learning hoping to uncover the next great opportunity for automation. My talk at ElixirConf US documents my nearly year-long effort to deconstruct deep learning for those who feel overwhelmed by the technical aspects. I started with FizzBuzz because it was a problem most software engineers had some familiarity…

Fine tune Mistral 7B with the RTX 4090 and serve it with Nx

Fine-tuning with Bumblebee is great but large models such as Mistral 7B demand over 100GB of vRAM to fine tune with full precision. To efficiently fine-tune this on a single RTX 4090 with only 24GB of vRAM, I turned to the open source Python project lit-gpt . This approach enabled me to fine-tune locally, providing several advantages including fast feedback and the ability to keep proprietary data…

Install CUDA 12 on PopOS

Yesterday I upgraded to the latest version of bumblebee only to learn EXLA took on the latest XLA which dropped support for CUDA 11.2. Because I was running Pop!OS I assumed it would be something I could `apt install` and call it good. Unfortunately it was more work than my first go round so I wanted to detail it here for anyone who might follow. This is loosely based off the older CUDA 11 install…

Training Axon Models With Nvidia GPUs

A few months back I started a deep dive into machine learning. With all the excitement about Nx I spent the first few weeks building a toy example that solves fizzbuzz, first with Axon and later with Nx . After getting more familiar with Axon I started tinkering with the BERT fine tuning example and found the feedback loop was 45+ minutes. I didn't have a huge budget but I knew a previous…

Empowered Product Teams: ownership and responsibility

Throughout my career I've had the opportunity to blend, extend and adapt well known engineering practices to match the accelerated demands put on product teams. After years of trial and error I've become convinced empowerment is at the core of both better product teams and better software. Truly empowered product teams are given more ownership to learn, adapt and respond to feedback. With this…

A Philosophy of Software Design

Last week I started a new role and ahead of this new adventure I read A Philosophy of Software Design with the specific purpose of gifting the book and a summary of it to each of my engineers. What follows is my paraphrased summary of the first 9 chapters for those who might find the topic interesting. Chapter 1 The greatest limitation in writing software is our ability to understand the systems…

Crucial Conversations

This week I started a new role and for the first time I've put team health at the forefront by re-reading Crucial Conversations with the specific purpose of gifting the book and a summary of it to each of my engineers. What follows is my paraphrased summary of the book, excluding the last 2 chapters, for those who might find the topic interesting. Chapter 1 The ability to talk openly about high…

Elixir And Phoenix Upgrade Adventure

This week I finished an upgrade from Elixir 1.10 to 1.11.3 and more notably Phoenix 1.4 to 1.5.7. To get a sense of the risk I decided to upgrade Elixir first and keep the bulk of our dependencies as-is to measure what I was up against. Thankfully the Elixir upgrade, aside from a handful of compiler warnings, wasn't worth writing about. The downside of this easy upgrade was overconfidence which…

Knowledge Work 3.0

This year I read Shape Up , Team Topologies and a slightly more academic book on the topic of lean called The Principles of Product Development Flow in an effort to learn more about delivery engineering. After weeks of careful study, I combined my takeaways with some practical work experience to produce a talk on the subject.