Rishabh Rahul
← Back to all posts
August 2017. Eight months of handwritten map routing logic pinned to a wall.

August 2017. Eight months in. No Stack Overflow thread for this. Just paper, pins, and a problem I couldn't let go of.

I've Been Figuring Things Out Since 2016. Still Am.

I want to write one of those clean "about me" pages where I list my skills, mention a couple of impressive projects, and end with a call to action. But I'd be lying, and I'm bad at lying.

So here's the honest version.


I started coding in 2016, where the internet existed but finding the right thing on it was a skill nobody taught you. Type "roadmap" into Google and you'd get career advice. Type "how maps work" and you'd get geography homework. The algorithms, the papers, the real stuff. You had to discover the right keywords first. That took months sometimes.

English didn't help. I remember spending a confused afternoon because "syntax" and "Sintex" sound identical, and one of them is a brand of water tank that's in every Indian household. Programming has a lot of words like that. You just quietly figure out which one applies and move on.

My first real project started the way a lot of things do. Some free time, a lot of feelings, and nowhere better to put the energy. The idea was a travel app. You enter a time, a budget, some places you want to visit, and it figures out a route.

I was exploring Android SDK and Android Studio at the time, mostly through Google's documentation and YouTube videos, just seeing what was possible. Before writing much code, I did some rough math on the API costs. Every time a user added or removed a destination, that's a Google Maps call. Users are indecisive. The numbers didn't work. So I killed it early, which is either good engineering judgment or the universe telling me to go touch grass.

But the routing problem stuck with me. I had no idea what I was getting into.


I tried GraphHopper. I tried OSRM. Both would happily route you down a highway on foot if the data wasn't tagged correctly. Technically correct. Practically useless. So I went deeper.

I found GIS Stack Exchange, where people asked very specific questions about maps and coordinates and spatial data, and other people answered them with the kind of detail that felt like finding water in a desert. I downloaded real map data from Geofabrik. Started with the smallest city in Germany, 18MB of raw OSM XML. Tried to parse it with Python on my laptop. My laptop disagreed. Froze completely. I moved to Spark on Databricks just to unpack the XML into something workable.

Along the way I read a research paper by Jun Feng on indexing and querying road networks. I didn't fully understand all of it. But I understood enough to see the shape of the problem. You can't run pathfinding on a full map at query time, so you preprocess it into something smaller. Keep the important nodes. Throw away the noise. Run bidirectional search on what's left.

It maps almost perfectly to how electricity flows through a circuit. Two roads, two directions. Traffic is resistance. Current finds the path of least resistance. Your router finds the fastest path. I don't know if that analogy holds up at every edge case, but it held up enough for me to build a mental model I could work with.

I spent four years on and off thinking about this. I never shipped a map engine. I understood one, which felt like enough at the time.


Meanwhile I was doing all of this on Fedora Linux because a friend said Linux was better and I picked the one with the fewest users, apparently. I spent a significant portion of 2016 to 2018 fixing sound drivers, trackpad issues, display problems, and packages I copy-pasted from the internet without fully understanding. Every fix taught me something. Most things I broke first.

A friend mentioned decompilers once. I spent the next week decompiling everything on my laptop. Didn't find anything groundbreaking. Did learn that most production code is just vibes and hope, which was oddly comforting.

My final semester project was a Reinforcement Learning system using OpenAI Gym. I picked RL without being sure it was even possible as a college project. Google Colab kept freezing. I moved to Paperspace. I used some code from a YouTuber as a base and spent weeks understanding what it was doing before I changed any of it.

I'd been following OpenAI since the one-legged hopper videos. The cheetah running in the physics simulator. Those early papers where you could feel them figuring things out in public. It felt familiar.


I've been working as a software engineer for 5 years now. I've learned that the scariest moments in engineering aren't the loud crashes. They're the silent ones, where everything looks fine until the math stops making sense.

I'm not the engineer who knows everything before they start. I'm the one who finds the right question, eventually, and doesn't stop until it makes sense.

This blog is where I write about what I've been figuring out.

Life outside the editor