Skip to content
Home » About

About

NerdyElectronics is a technical resource for engineers and students learning embedded systems, written and maintained by Vivek Bhageria — a Lead Firmware R&D Engineer with over 12 years of hands-on industry experience.

About Me

I have spent my career building firmware and embedded systems for companies where reliability is non-negotiable. My experience spans automotive powertrain systems at Bosch Global Software Technologies (5 years), low-power, long life IoT wireless products at Denbu Technology, and real-time audio systems on ARM Cortex at MusicTribe Innovation.

At Bosch, I was the global lead for fuel device firmware in powertrain systems, writing device drivers and sensor interfaces for tier-1 automotive programmes supplying major European OEMs. At MusicTribe, I architected real-time audio applications on NXP i.MX RT processors with Bluetooth control — and reduced OTA update time by 50% by redesigning the dual-partition update mechanism.

I am currently a Lead Engineer R&D at Tejas Networks, where most of my work is Linux-side: board bring-up and diagnostics on multi-core SoCs, kernel and driver debugging, and working alongside silicon vendors to get their deliverables to match what the product actually needs. It is a different discipline from bare metal — more moving parts, and many more places for a problem to hide.

Along the way, I have designed the electronics and firmware for a medical device (ArmAble by BeAble Health) whose prototype secured ₹2 crore in government grants, mentored startups in embedded systems and IoT at Manipal Institute of Technology, and led teams of engineers across embedded, IoT, and cloud.

Education & Credentials

  • M.Tech in Software Systems (Embedded Systems) — BITS Pilani, CGPA 8.7
  • B.Tech in Electrical & Electronics Engineering — Sikkim Manipal Institute of Technology, CGPA 8.34

Technical Expertise

Platforms: ARM Cortex (NXP iMX RT, STM32), AVR (ATmega), TI SimpleLink, Raspberry Pi, ESP8266/ESP32

Protocols: UART, SPI, I2C, CAN, RS485, MQTT, BLE, Wi-Fi, Thread (IEEE 802.15.4), UDP

Languages & Tools: C, Embedded C/C++, Python, RTOS, Embedded Linux, POSIX, Git, Keil µVision, TI Code Composer Studio

Connected devices are only half a product, so a fair amount of my work sits on the cloud side too — AWS device fleets, provisioning, MQTT brokers, telemetry pipelines, and the distribution end of firmware updates. Getting a device to run for a year on a coin cell is one problem; getting ten thousand of them to report home reliably is a different one.

Why NerdyElectronics Exists

When I started learning embedded systems, very few resources existed online. Over time resources grew but most of them fall into two extremes: academic textbooks that never show real code, or Arduino tutorials that hide everything behind libraries. There is almost nothing that bridges the gap — practical, register-level embedded programming explained clearly, in C, for engineers who want to understand what is actually happening.

That is what NerdyElectronics is. Every tutorial is grounded in the kind of code you write in industry — bare-metal register manipulation, RTOS task management, communication protocols, power optimisation. The examples come from real problems I have encountered in automotive ECUs, IoT sensor nodes, and audio DSP systems.

What Makes This Site Different

  • 100% C code — no pseudocode, no Java. Every example compiles on real hardware.
  • Structured learning paths — not a random collection of blog posts. Topics build on each other from beginner to advanced.
  • Bad code → good code — lessons show the wrong way first, then refactor. You learn to recognise problems, not just memorise patterns.
  • Written by a practising engineer — not a content writer. The tutorials reflect real industry experience, not textbook theory.

What I Tinker With

Away from embedded work I build automations with n8n and language models. It is the same instinct as firmware, really — take a process someone is doing by hand, work out where it actually breaks, and make the machine do it reliably.

The one I use most is an expense logger. Every bank and card transaction alert that arrives in my inbox trips a workflow that reads the mail, pulls out the merchant, amount and date, and appends it to a running ledger. Bank alert formats are gloriously inconsistent, and a parsing rule per bank is exactly the kind of code that rots, so the extraction goes through a language model instead. That is usually where the judgement lies in this work — knowing which part of a pipeline should stay deterministic, and which part a model handles better. I am currently extending it to WhatsApp, so a cash expense can be logged by sending a message.

Most business processes turn out to be the same shape: someone copying data between systems, following rules that are almost consistent. That is a solvable problem, and the tooling has made it a much smaller one than it used to be.

Start Learning

If you are new to embedded systems, start with the Embedded Systems Learning Path — it takes you from the very basics to professional-level topics in a structured sequence.

If you already write embedded C and want to improve your code quality, the Software Design Principles in C series covers SOLID, design patterns, and code smells — all with C examples.

You can also find me on LinkedIn.

If something here is relevant to what you are building, or you have a question about one of the posts, the contact form is the best way to reach me. I read everything that comes through it.