vivek@techfortalk:~$ ls training/
Professional training in systems software engineering
One-to-one and small-group training in C, C++, embedded systems, and Linux — taught by a published C++ author and embedded software engineer with 24+ years of industry experience. Every course is hands-on, project-based, and tailored to your goals.
Enquire by emailTraining courses
Each course is delivered as structured, practical sessions on real code and real hardware where relevant. For details, availability and pricing, enquire on any course below.
C++ for Finance
Performance-focused modern C++ for financial systems and trading infrastructure. Build the language depth and low-latency instincts that quant, HFT, and fintech roles demand — including targeted preparation for technical interviews.
- Modern C++ (11–20)
- STL & algorithms
- Move semantics
- Concurrency
- Low-latency patterns
- Profiling
- Interview prep
Embedded Systems Development in C/C++
From embedded C fundamentals to professional practice on real microcontrollers: peripherals, communication protocols, debugging on target, and writing firmware that is testable and maintainable.
- Embedded C / C++
- UART · SPI · I2C
- Interrupts & timers
- On-target debugging
- Firmware architecture
- Unit testing
Linux Kernel Development
A practical route into kernel engineering: kernel internals, building and configuring the kernel, writing loadable modules, and the debugging techniques professionals use on production systems.
- Kernel internals
- Loadable modules
- Kernel build & config
- printk · ftrace
- Memory & scheduling
- Debugging workflow
Writing Device Drivers from Scratch
Learn Linux device drivers the way they are written in industry: character and platform drivers built from first principles, wired to real hardware, with device tree, interrupts, and kernel-space debugging covered in depth.
- Character drivers
- Platform drivers
- Device tree
- Interrupt handling
- Kernel–user interfaces
- Driver debugging
Embedded Bootloader Development with STM32
Build a working bootloader on the STM32 Nucleo board using the ST toolchain — STM32CubeMX, STM32CubeIDE, and STM32CubeProgrammer. Understand memory maps, vector tables, application jumps, and firmware update flows end to end.
- STM32 Nucleo
- STM32CubeMX
- STM32CubeIDE
- CubeProgrammer
- Memory map & vectors
- Firmware update
Secure Bootloader Development
Go beyond a basic bootloader to a secure boot chain: image signing and verification, encrypted firmware, rollback protection, and the design decisions behind trustworthy firmware update on embedded devices.
- Chain of trust
- Image signing
- Signature verification
- Firmware encryption
- Rollback protection
- Secure update design
Bare-Metal Development
No RTOS, no HAL, no safety net: start from the reset vector and build up — startup code, linker scripts, register-level peripheral programming, and cross-compilation toolchains. The deepest way to understand what your microcontroller actually does.
- Startup code
- Linker scripts
- Register-level I/O
- GCC cross-toolchain
- Makefiles
- Debug with GDB/OpenOCD
How it works
-
STEP 1
Enquire
Email with the course you’re interested in, your current experience level, and what you want to achieve.
-
STEP 2
Plan
You’ll get a tailored training plan — scope, format, schedule, and pricing — matched to your goals and starting point.
-
STEP 3
Train
Structured, hands-on sessions on real code and real hardware, with exercises and review between sessions.
Your trainer
Vivek Bhadra is a published C++ author and Embedded Software Engineer with more than 24 years of professional experience in C++, embedded systems, real-time software, and low-level development, across industries including IoT, defence, EV charging, networking, consumer electronics, and marine technology.
He is the author of Prompting C++ for Systems Engineering and has provided structured tuition to students, early-career engineers, experienced professionals, and technical-interview candidates.
Frequently asked questions
How is the training delivered?
Sessions are delivered remotely as one-to-one or small-group training. Hardware-based courses use affordable, widely available boards (such as the STM32 Nucleo) that you work on directly.
Do I need prior experience?
It depends on the course. Foundation courses assume only basic programming knowledge; advanced courses such as kernel development or secure bootloaders assume working C experience. Your starting point is assessed as part of the training plan.
What do I need to get started?
A computer capable of running a Linux environment (native or virtual machine). For hardware courses, a development board is required — recommendations and setup guidance are provided before the first session.
How much does it cost?
Pricing depends on the course, format, and duration. Email vivek.bhadra@gmail.com with the course you’re interested in and you’ll receive full details.
Ready to level up?
Tell me which course you’re interested in and where you’re starting from, and I’ll come back to you with a tailored plan and pricing.
Enquire by email vivek.bhadra@gmail.com