RSSAmplifier

Blog

Dima's Blog

Hi! I'm a software and research engineer focused on building AI systems. I entered the AI field with a strong background in classical software engineering, s...

dima.us.kgRSS feed ↗10 posts

Latest posts

Getting the SO-101 Robot Arm Up and Running

While I no longer work for an AI robotics company (after more than five years at Waymo , Cruise , and 1X ), edge inference and embedded compute are still very close to my heart, and from time to time I play with them in my hobby projects. In all that time working in AI robotics, my work rarely involved producing the control signals that make a robot move in physical space. So I decided to buy an…

An Agent Is Just LLM + Shell + Filesystem + Markdown + Cron

For decades, the AI world struggled to define "agent." Researchers had theories. Engineers had architectures. Startups had demos. But the definition remained slippery — until it suddenly became obvious in the most humbling way possible: the answer was sitting in plain sight the whole time. Monolithic Dreams To understand why the new answer is so elegant, you have to understand what came before. In…

Learning by Building, Part 3: Caltrain Bot, Local LLMs, and Reality

In the previous post , I mainly focused on software and data engineering lessons from working on the Caltrain bot. In this post, I’ll share how I tried to build a small Raspberry Pi–based device for local-only LLM inference, why I failed, and what I did instead. The post also includes a summary in which I reflect on what else I could do or try, as well as the other interesting possibilities this…

Learning by Building, Part 2: Caltrain Bot, SQL with LLMs, and DSPy

In the previous post , I described what I learned about setting up a Python project and how I plan to set up all my Python projects, including Caltrain, going forward using uv , ruff , and ty . In this second post, I’d like to focus on data and prompting: what I learned while trying to preprocess the Caltrain schedule into a format suitable for SQL queries, and how I learned to "program" LLMs…

Learning by Building, Part 1: Caltrain Bot and the Theory-Practice Gap

Theory-practice Gap & Praxis I often remind myself and my peers that the gap between theory and practice is real and very common. It’s literally called the “theory-practice gap.” Understanding something conceptually and actually being able to do it well are often very different things. In philosophy, this is often discussed in terms of “praxis.” Of course, praxis is a much broader concept, but for…

Rust Is Slowly Winning Me Over

Approximately 85% of my career as an engineer has been spent writing Python. Outside of SQL, Bash, and a few other DSLs, Python has been my primary tool for building systems, prototypes, and production services. Another 10–15% of my work has involved C++. Despite the rise of many newer languages, C++ remains a go‑to choice for robotics and other performance‑critical systems where tight control…

Base, Instruct, and Think LLMs: What's the Difference?

When I was trying to learn more about LLMs, I found terms like pre-training, post-training, base model, instruction following, and reasoning really confusing. I didn’t understand what a base model was or why it needed post-training. In this article, I aim to help readers build an intuitive understanding of base models, instruction-tuned models, and thinking models through several practical…

No More Hand-Waving: How Vector Embeddings Work

You've probably heard about embeddings in the context of LLMs. You've likely even encountered them in discussions of RAG or the famous Word2Vec paper. Almost invariably, people and tutorials will hand-wave the concept, saying something like "Vector embeddings capture semantic relationships and contextual information," while avoiding any deeper explanation—as if it's something highly complex or…

Mathematics for Machine Learning

It might feel like Machine Learning (ML) has been around forever, but ML with Neural Networks (NNs) only became mainstream in the 2010s. A great example is the well-known AlexNet , developed by Alex Krizhevsky, Ilya Sutskever, and Geoffrey Hinton, which won the ImageNet competition by a significant margin in 2012. That was a little more than ten years ago. Back in college, from 2007 to 2009, I…

Brief Detour Into UI Development

As a software engineer with a background in large-scale distributed systems, I've consistently struggled to create user-friendly interfaces for my projects. In fact, I've found myself relying more heavily on Linux command-line tools rather than their desktop alternative. However, I clearly understand the importance of providing users with a simple and straightforward way to use my scripts, apps,…