About
The origin story of a data engineer who's convinced rubber ducks are polyglots, suspects semicolons are part of a vast punctuation cartel, and insists that the best architecture ideas emerge over steaming cutting chai. Also: why compilers make more loyal friends than most humans.
Hey, I’m Vitthal 👋
- Look, I write code that sleeps at night. Yours and mine. If something can blow up at runtime, I make it fail earlier - while I’m still on cutting chai, not at 3 AM during a production incident. That’s the job.
- Master of Motion: Time & Torque. Seiko on the wrist, Ford Freestyle 1.5 TDCi underfoot. Japanese automatic precision. American manual muscle. Indian roads and Indian jugaad. Works.
- I’m the engineer who builds pipelines that refuse to lie, spins type systems into treaties of safety, and treats runtime errors like mosquitoes - annoying and preventable.
- I’ve shipped ~50 public repos (mostly Scala, some Python) - automation, compile-time contracts, AI apps that behave, clean pipelines, and more.
- I’ve bled in enterprise trenches - ugly scripts, giant jars, last-mile ETL, production firefights. That’s where opinions are earned, not Googled.
- I map my geography - Mumbai hustle, Goa resets, Karnataka loops, Konkan coastline - into stories, food, drive routes, and architectural metaphors.
- On the side: watches that don’t lie, playlists that time-travel, whisky that argues with your expectations, wines by curiosity, and random obsessions with language, culture, and code.
If you scroll down further - you’ll see the scars, the philosophy, what I actually build, and (yes) the spicy bits about tax, interiors, travel, and how I refuse to code without sleep.
In short: bring chai, bring curiosity, bring bad jokes - we’ll talk data, torque, and what in the world “compile-time” really means.
What I actually ship (and why)
Since 2011 I’ve pushed things into the wild: ~50 public repos as of today. Mostly Scala/Java, some Python/Jupyter where it earns its keep. Themes repeat: compile‑time data contracts, type‑safe builders, pure transforms with effects at the edges, Spark/Flink engines, and lately - sane LLM apps with Scala discipline.
- flowforge - pipelines that refuse to compile when contracts drift. The build breaks before your weekend does.
- compile‑time‑data‑contracts - prove schema compatibility with policies (Exact/Backward/Forward). Green bar or no deploy.
- llm4s - AI apps that behave like proper programs, not a bundle of side‑effects in a trench coat.
- abortable‑bytes - when uploads get interrupted, they stop cleanly instead of corrupting data.
- datapipelines‑essentials‑python - the practical starter folks keep starring (because day one shouldn’t hurt).
- spark‑spring‑boot - the “ship something useful by Friday” base a lot of teams quietly copy.
Why? Because I like sleep. And because type systems can be kind. I design and ship type‑safe data systems that don’t wake you at 3 AM. Think “catch it at compile time, or it doesn’t ship.” I ship openly and often; you’ll spot the good stuff.
Enterprise trenches (where the scars/opinions came from)
Big‑company data. Real users. Real deadlines. I’ve done the Windows truststore dance, packed fat JARs, written runbooks thick enough to door‑stop, and moved data that actually matters. Shell scripts that restart jobs, Spark apps with clean packaging, Sqoop accelerators that spared teams a month - scars earned. That’s where the “compile‑time or bust” habit was forged.
India 🇮🇳, inside‑out (India is huge; only my home turf regions)
Look, maps are fine. Timing and appetite matter more. Maharashtra is home turf; the rest are friendly cousins.
- Mumbai: Local hustle like
debugging; Irani cafés forsystem designon napkins; vada‑pav opinions that correlate suspiciously withcode quality; chai that fixesarchitecture.
If you ever find yourself in Mumbai after work, itching to explore when the city’s in full nocturnal swagger, here’s the late‑night itinerary I recommend (field‑tested, Mumbaikar‑approved):
My unofficial guide to post-9 PM Mumbai - because software & data architecture isn’t the only thing I design.
Without private vehicle (train / taxi / feet):
- Logout ~9:00 PM - clear momentum so your brain feels lighter tomorrow.
- Ring up friends (if they’re off or can sneak out).
- If you’re hungry, head toward Bandra - stop by Janata Lunch Home (Bar & Restro) in Pali Naka, or swing into PJ’s Gymkhana (SAISA, Pali Hill, Bandra West) - club + food + drinks, with a relaxed flair.
- Otherwise…
- Take the local train to Churchgate / Marine Lines.
- Walk to Marine Drive.
- Take an open-deck bus ride around South Mumbai (45 minutes; not available after ~11:30 PM).
- You can also do optional late-night café / dosa spots (Matunga’s filter coffee joints) & night cycle tours.
- Back to Nariman Point - sit, relax, enjoy the breeze, chit-chat.
- If you haven’t eaten/drunk yet: go to Gokul Bar & Restaurant (food + drinks + music till ~3:30 AM), or just food at Bademiya till ~3:30 AM.
- Walkable clusters: CSMT & BMC HQ, High Court, Press Club, Bombay Hospital, St. Xavier’s, Liberty, Metro Cinema, Western Railway HQ, Churchgate, INS Vikrant Circle, SBI HQ, Ballard Estate, Kala Ghoda.
- If you’re bold, take a taxi through Grant Road / Kamathipura - low profile, gaze out the window.
- Return to Nariman Point, lie down for 1-2 hours.
- Wash face & head to Kyani & Co. or B. Merwan & Co. - bun maska or omelette + tea.
- Catch train from Churchgate / CSMT back home. Sleep.
With Car (drive Mumbai-style):
- Logout around 9:00 PM - push today’s extra tasks so tomorrow is lighter.
- Call up friends (from other offices or wherever).
- If you’re hungry early, drive into Bandra - options: Janata Lunch Home (Pali Naka) or PJ’s Gymkhana (SAISA, Pali Hill, Bandra West).
- Otherwise, drive via Sealink to Nariman Point.
- Sit, chill, take in the breeze + skyline.
- If dinner / drinks are pending: head to Gokul Bar & Restaurant or slip into Bademiya (food till ~3:30 AM).
- Next: drive toward Lonavala. If not Lonavala, take coastal drives: Worli Sea Face → Haji Ali → Juhu → Versova → Bandstand loops.
- Optional: a late run up to Malabar Hill / Hanging Gardens for quiet night views.
- Off-season: catch sunrise at Lion / Rajmachi / Tiger points. Rainy season: mist, fog and moody roads.
- Breakfast at Buvanchi Misal.
- Drive back home. Sleep.
Mumbai after dark isn’t just a city; it’s a debugging session for the soul. Try it once - you’ll never look at “city that never sleeps” the same way again.
- Pune: bun‑maskā briefings, FC Road book raids, Puneri patyā literacy, and ghat loops that reset any
design. - Goa (Konkan neighbour): dawn drives, seafood shacks, kokum‑pink solkadhi, and beaches when the
thread poolneeds a break. - Karnataka: Nork Karnataka rants, NH48 rituals, Belagavi/Hubballi/Dharwad food stops (aalepaak, girmit, peda), coastal stretches that feel like a clean
refactor.
Maharashtra, properly
- Kolhapur: tambda/pandhra rassa diplomacy, Mahalaxmi temple, Panhala detours, leather chappals that outlast sprints, and kushti vibes - spice and wrestling both pack a punch.
- Nagpur (Vidarbha): Orange City with Zero‑Mile bragging rights; winter legislature, summer furnace; Saoji rassa that humbles bravado; Tadoba whispers for weekend safaris.
- Nashik (wine country): Godavari curves, Trimbakeshwar faith, and India’s wine capital - vineyards, tastings, and harvest season that rewards people who taste with intent.
- Solapur: Siddheshwar calm, mills and the famous chaddar, and jowar bhakri with rassa that resets priorities.
- Marathwada: Ajanta-Ellora rock lessons near Aurangabad (Chhatrapati Sambhajinagar); Paithani looms in Paithan; Nanded’s Hazur Sahib for perspective.
- Konkan: Alphonso (Hapus) summers, Malvani masala, solkadhi cool‑downs, sea forts like Sindhudurg, and Ganpatipule when you need a sandy reset.
- Khandesh: Jalgaon banana belt, Bhusawal rail memory, thecha that negotiates on your behalf; rustic plates that slap and soothe.
- Western (Pashchim) Maharashtra: Satara-Sangli-Kolhapur sugar belt, cooperative legends, temple towns and fort loops that double as endurance tests.
Festivals & flavour: Ganesh Chaturthi (public celebration is our invention), Learning to be abstract from maai-baap Vitthala, Gudi Padwa optimism, Sankranti’s tilgul “ghyā, god‑god bolā,” dhol‑tasha crescendos, Lavani stagecraft, Powada fire, and the dry, surgical humour of Marathi that lands without emojis.
Time x Torque (watch guy, diesel heart)
HMT Janata, Pilot and all HMTs day‑date charmers. Seiko SNX and Seiko 5 - honest automatics that take scratches like stories. I’ve stacked up three‑plus dozen over the years. Swiss? Not yet. Value killers on wrist, grin in third gear.
- Seiko SNX and Seiko 5-bulletproof automatics that take scratches like stories. Not a spec sheet hobby; this is serviceable, honest timekeeping. I’ve stacked up 3‑plus dozen pieces over the years-scratches and all. Swiss will happen when it happens. For now, value killers on wrist.
- Short gears, long memories. Diesel pull when you need it, calm when you don’t. Clutch foot happy, highway manners tidy, and that torque curve is therapy after a gnarly schema migration. Japanese wrists, American gearbox, Indian roads. Nice combo.
Music & mood
My playlists are a time machine: Kishore, Rafi, Lata, Asha, Mukesh, Manna Dey, RD Burman, Jatin‑Lalit, Nadeem‑Shravan, Rahman, Udit, Alka, Sonu. Ghazals on rain days (Jagjit, Ghulam Ali, Mehdi Hassan). And a raag‑samay habit: Bhairav mornings, Todi late mornings, Multani afternoons, Yaman evenings, Darbari after hours. Coding with Darbari hits different. Spotify’s a mess of playlists; ask and I’ll share.
Whisky 🥃 notes (value per ₹, not posters)
I’m a value-per-rupee person: peat when the mood demands it, sherry when dinner deserves it, and age statements only when the liquid actually earns them. City pricing vs duty-free vs festival spikes - I chart that terrain like a whisky cartographer.
Here’s how I see various whisky regions - with my biases fully on display:
Scotch (Scotland)
Some folks treat single malt Scotch like a holy relic. I’m skeptical. The range is fascinating - fruity Speyside, smoky Islay, and all the rest - but hype often inflates the price of “premium” bottles. A 30-year Scotch can still be meh. Still, a well-balanced peat or sherried dram can make you sit up in your chair.
Irish (Ireland)
Triple-distilled, smooth, diplomatic - the “Jameson school of diplomacy.” Irish whiskey doesn’t elbow its way into your senses; it slides in politely. Scotch purists may scoff, but if it tastes great without giving your sinuses PTSD, I’m on board.
Bourbon & American styles
Corn, vanilla, oak, caramel - think fireworks in a glass. If Scotch is a layered novel, Bourbon is the blockbuster action movie. Big, bold, sometimes a bit loud. For the ₹ you spend, many bourbons deliver more punch per rupee than some hyped imports.
Japanese & new-world whiskies
Quiet, precise, elegant - like a well-written library you don’t brag about. These don’t always depend on age to impress. Some Japanese whiskies outperform expectations, proving you don’t need decades to make something great.
My verdict
Scotch isn’t overrated - it’s worshipped too much. Irish is underrated (quietly formidable). Bourbon brings swagger. Japanese sneaks in class. I’ll pay for barrels that sing, not for labels that shout.
Wine 🍷🍾
Almost wine scholar, gunning for WSET L2/L3, then FWS/IWS. I’d love to study by the producers & their bottle, then test it in the wild.
- Burgundy: base in Beaune, learn limestone and nuance; cellars that teach more than they sell.
- Loire: Vouvray/Montlouis for Chenin, Chinon/Bourgueil for Cab Franc, Saumur for stills and crémant - breadth in one region.
- Reims/Champagne: the big houses are fun once; the growers teach you terroir.
- Before cellar visits I pick a Burgundy and a Loire bottle, taste with intent, then compare on‑site. Education, not postcards.
Taxes, money, and sanity (India edition)
I’m not a CA - I’m the friend who gets your assessment season under control. Clean, legal optimisation; zero drama.
- Salaried + consulting: 80C/80D and ask me all sections sanity, squeeze every
₹from HRA that actually computes, capital‑gains timelines, advance‑tax reminders. - Year‑end checklists, proof folders, and a filing rhythm that survives scrutiny.
- Tricks? Sure - the clean kind. Inside‑out understanding, on paper and above board.
- No shady stuff. Smart, legal optimisation and clear paperwork.
Build/interiors without middle‑men
Yes, you can save ~60% money if you own the scope.
- Rule 1: Start with BOQ/BOM - make every vendor quote the same thing.
- Rule 2: Direct factory buys where quality is measurable (plywood, laminates, hardware).
- Rule 3: Stage payments to milestones; snag lists before release.
- Rule 4: Site supervision cadence that catches mistakes early.
- Rule 5: Be honest about the real cost - your time and coordination.
Languages
Marathi, Hindi, Kannada, English daily. Understand Gujarati, Bengali, German. Very basic French and Spanish.
Origin story (the real one)
I took radios and TVs apart as a kid. Then PCs: motherboards, PSUs, thermal paste, POST beeps, cable management - the works. I repaired and assembled machines for years. That curiosity turned into a career where I still ask, “What’s actually happening under the hood?” and refuse to ship guesswork.
brew/apt-get/yum tells (if you’re into that)
- Typed core, fast feedback, serious tooling: Scala 2.12/2.13/3.x, sbt, JDK 17/21, Spark, Flink, Maven, Hugo (this site), ripgrep/jq/gh for the terminal, Docker when it’s messy, IntelliJ and VS Code, iTerm2 on macOS with the usual helpers.
- You can tell a lot about an engineer from their
brew list. Mine says “type safety, speed, and no drama.”
P.S. If you made it this far, you deserve a Vadapav 🍔 (snack). Or at least a properly typed data structure.
- Monadically yours Vitthal
PS: If you want to talk data, diesel, or Darbari, I’m around. Bring chai.
The story behind the code
How I got here? (The definitely-not-boring version)
I’m that kid who took apart every electronic device in the house just to see how it worked. Growing up in Bagalkot/Belgaum, Karnataka, India, I’d spend hours with broken radios and old TVs, then Desktop PC computers much to my parents’ horror. “Vitthal, why is the TV in 47 pieces?” became a regular family conversation.
That curiosity about “how things actually work under the hood” never left me. Fast-forward through engineering college (where I definitely spent more time debugging code than attending thermodynamics, economics and\or environmental studies lectures), and I found myself in the delightfully chaotic intersections sql, java, data, programming, algorithms, data structures, designs and eventually where enterprise data meets functional programming.
Turns out, when you’re moving terabytes of any Fortune 500 company’s data, “it works on my machine” stops being a valid life philosophy real quick.
What actually drives me (Warning: contains strong opinions)
The type safety obsession 🔒
I have a confession: I get genuinely excited when code fails to compile. My colleagues think I’m weird. My compiler thinks I’m adorable.
When your data pipeline catches a schema mismatch at compile time instead of at 3 AM in production (again), you start developing a very healthy relationship with error messages. It’s not academic purism - it’s survival instinct.
When Any company’s supply chain depends on your pipeline, “YOLO, let’s deploy and see what happens” isn’t exactly a career advancement strategy.
The “make complex things simple” mission ✨
There’s something deeply satisfying about taking a gnarly business problem involving millions of records and reducing it to clean, composable functions. It’s like Marie Kondo for code-does this function spark joy? Does it have exactly one responsibility? Good. Keep it.
My secret weapon? Functional programming principles applied to real-world data engineering. I build tools that make other engineers’ lives easier. When someone can generate a complete data pipeline with proper testing and monitoring using just a few configuration lines (thanks, flowforge!), that’s my version of a perfect day.
The current reality distortion field 🚀
By day, I design & implement data systems currently at Walmart that handle mind-boggling scale. By night and weekends, I’m usually:
- 🤖 Tinkering with type-safe data pipelines & AI/LLMs - Building llm4s because someone needs to prove that AI applications can be as reliable as your favorite functional programs (spoiler: they can!)
- ⚔️ Fighting the good fight against runtime errors - FlowForge and compile-time data contracts are my weapons of choice
- 🛠️ Writing code that cancels gracefully - Abortable Bytes, because interrupted uploads shouldn’t corrupt your data (revolutionary concept, I know)
- 🎤 Explaining monads at meetups - Yes, they’re actually useful, and no, you don’t need a PhD in category theory (though it helps with the jokes)
My technical philosophy (Translation: my hill to die on) ⛰️
“If it can fail at runtime, it should fail at compile time” Runtime errors are just bugs we were too lazy to catch earlier. The compiler is your friend, not your nemesis. Embrace the red squiggly lines.
“Pure functions are predictable functions” When a function always returns the same output for the same input and doesn’t secretly update some database in Bangladesh, debugging becomes way less painful. Revolutionary, I know.
“Share everything, hoard nothing” The best code I’ve written is open source. The best solutions come from collaboration, not competition. Also, GitHub stars make me irrationally happy.
“Rubber duck debugging works in multiple languages” I literally explain complex problems to a rubber duck on my desk. It’s surprisingly effective. The duck speaks fluent Scala and beginner-level Haskell.
What I actually think about (when not debugging) 🤔
- Why do we keep rebuilding the same data validation logic across every project? (Seriously, it’s 2025!)
- How can we make schema evolution as painless as API versioning?
- Is there a way to make large language models as predictable as database queries?
- Why does enterprise software have to be so… enterprise-y? (Looking at you, XML configuration files)
- Can we build data systems that developers actually enjoy working with?
The random human bits (Plot twist: I’m not actually a robot) 🎭
I debug in multiple spoken languages - Marathi for the really tricky problems, English for documentation, Hindi when I’m frustrated with Maven dependencies, and Kannada when the build system decides to have an existential crisis.
My IDE setup is ridiculous - Custom themes, vim keybindings, and about 47 plugins that make IntelliJ barely recognizable. My coworkers refuse to use my machine. I consider this a feature, not a bug.
I have strong opinions about semicolons - They’re optional in Scala for a reason. JavaScript developers, take notes. Fight me. (But politely, over Chai.)
Cutting chai code reviews - Some of my best architectural decisions happen in Mumbai’s Irani cafes, complete with napkin sketches and caffeine-induced epiphanies. The ratio of cutting chai-to-code quality is directly proportional.
The Great Vada Pav Wars - I have Very Strong Opinions™ about which tapri makes the best vada pav in Mumbai. It’s a surprisingly accurate predictor of code quality standards. Ashok Vada Pav vs everyone else isn’t even a fair fight.
What I’m curious about right now 🔬
- Type-safe AI pipelines - Can we bring the same compile-time guarantees to machine learning workflows? (Spoiler: yes, and I’m working on it)
- Effect systems in practice - ZIO and cats-effect are fascinating, but how do we make them approachable for teams without functional programming PhDs?
- Developer productivity tools - What would data engineering look like if we optimized for joy instead of just performance?
- The intersection of boring and beautiful - How to make enterprise systems that are both reliable AND delightful to work with
Beyond the computer (Plot twist: I go outside sometimes) 🌍
When I’m not wrestling with the Scala compiler or explaining why immutability matters to yet another Java developer:
- 🎤 Conference talks - I love sharing what I learn, especially the spectacular failures that led to better solutions (they make the best stories)
- 🎓 Mentoring - There’s something magical about watching someone’s first “aha!” moment with functional programming. It’s like watching someone discover fire.
- 🍛 Exploring Mumbai - Best cutting chai spots, legendary Irani cafes, and yes, I have strong opinions about vada pav quality and will defend them vigorously (Ashok Vada Pav supremacy!)
- 📚 Reading everything - From programming language theory papers to terrible sci-fi novels. Quality is optional, entertainment is mandatory.
- 🏠 Perfecting the work-from-home setup - Because the right chai-to-code ratio is a science, not an art
The slightly embarrassing truth 😅
I once spent an entire weekend optimizing a build.sbt file. For fun. My friends were concerned. My compile times were grateful.
I have a collection of programming language mascots on my desk. They’re excellent at rubber duck debugging and judging my life choices.
My git commit messages are either poetry or complete gibberish. There’s no middle ground.
Want to chat about functional programming, data engineering, or why your data pipeline keeps failing at 3 AM?
I’m always up for a good technical conversation. Bonus points if you can explain monads using food analogies-I collect those like other people collect stamps.
Double bonus points if you can debate the merits of different cutting chai brewing methods while discussing effect systems. That’s peak Mumbai engineer right there.
XKCD: X
- Perfectly captures my relationship with variable names

🔗 Let’s connect (I promise I’m more fun than this page suggests)
- GitHub - Where the real magic happens (and occasionally, dark magic)
- LinkedIn - The professional facade (featuring less rubber duck content)
- Email - Always up for technical discussions and cutting chai recommendations
- Twitter/X - Hot takes on programming languages and cutting chai quality
- YouTube - Very rare deep dives into scala and the existential crisis of data engineering
- flowforge - My open-source baby for type-safe data pipelines (she’s beautiful)