Bare-Metal Programming: A Great Book to Start with STM32

The last book I read dives into bare-metal programming, which means writing code that runs directly on the hardware, without an operating system. If you’re curious about embedded systems beyond platforms like Arduino or Raspberry Pi, this book is a great starting point.

The book is titled Bare-Metal Embedded C Programming, and it uses the NUCLEO-F411 development board, based on the STM32F411RE microcontroller. It’s a powerful yet affordable board ideal for learning low-level programming.

Who is this book for?

Both beginners and experienced developers will find it useful. It starts with setting up the development environment—installing the IDE, the toolchain, and the software required to upload code to the board.

Although the author works with Windows, I tried the examples on both Linux and macOS without issues.

What’s inside?

Each chapter includes:

  • A theoretical introduction
  • A practical coding section

This structure helps you understand the concepts before jumping into implementation.

What you’ll learn

Throughout the book, you’ll get hands-on experience with:

  • ADC (Analog-to-Digital Converter)
  • SPI (Serial Peripheral Interface)
  • I2C (Inter-Integrated Circuit)
  • And many other low-level features of STM32 microcontrollers

If you want to explore bare-metal embedded development and move beyond high-level platforms, this book is definitely worth reading.

Designing APIs With Swagger and OpenAPI

Do you read books in the field where you think you’re an expert or have years of experience?

I do it just to check if there’s something new in the topic or if I have some bad habits I need to fix.

I just finished this book: Designing APIs with Swagger and OpenAPI (no affiliate link https://tinyurl.com/yxn9r8uw). I think it’s one of the best books on the topic — I highly recommend it to anyone who wants a refresher or is a junior developer.

In fact, you’ll learn how to:

  • design APIs
  • document APIs using the OpenAPI standard
  • use query parameters
  • implement pagination
  • use JSON Schema
  • test your APIs

I think this book is a great complement to Principles of Web API Design: Delivering Value with APIs and Microservices.

Reading both gives you a well-rounded perspective.

Asynchronous Programming with C++

Do you have any technical books that bring back memories or emotions? I recently read this book, which reminded me of when, in the last century, I took my operating systems exam. As part of the final test, I had to demonstrate the differences—using example programs and benchmarks—between kernel-space threads and those created in user space with a C library.

The book covers these theoretical aspects and adds others, such as coroutines, promises, and futures, all complemented by example code. The second part is just as useful, as it demonstrates the use of the Boost library.

Finally, a strong added value is the final section, which focuses on debugging and testing concurrent programs—never an easy task. Perhaps the only downside (though not for me) is that Windows users might find it less relevant, as the book is clearly geared towards Linux and OS X developers.

Books to improve as a software developer

In the past few weeks, a junior developer asked me for some advice about books. I created this list, and I believe they should be a must-read for everyone involved in the software world:

  • The Pragmatic Programmer: Your Journey to Mastery, 20th Anniversary Edition
  • Clean Architecture: A Craftsman’s Guide to Software Structure and Design
  • Clean Code: A Handbook of Agile Software Craftsmanship
  • The Software Craftsman: Professionalism, Pragmatism, Pride
  • Extreme Programming Explained: Embrace Change
  • Release It!: Design and Deploy Production-Ready Software
  • Fundamentals of Software Architecture: An Engineering Approach
  • Head First Design Patterns: A Brain-Friendly Guide: Building Extensible and Maintainable Object-Oriented Software
  • The Phoenix Project: A Novel About IT, DevOps, and Helping Your Business Win
  • Refactoring: Improving the Design of Existing Code (Second Edition)

A bonus: Lean Customer Development: Building Products Your Customers Will Buy.

I suggest this last one because we need to understand our customers. We build software for others.

Summer reflection

Which book reminds you of summer? For me, it’s the one below, and I’ll tell you why. It was the summer of 1991. My uncle, who was on vacation, had left me the keys to his house, so I went there to study and acted as a caretaker. I brought along books on algebra and geometry (matrices, vector spaces, monads, etc.) and the RKM (Amiga Rom Kernel Manual)in the photo. Until 6 PM, I studied algebra, and then I read the RKM. I followed my grandmother’s advice: duty first, then pleasure (sorry, Professor Konderac, but the RKM gave me more pleasure).

Over the years, I’ve realized I often buy books by so-called gurus on how to organize life and be productive. On LinkedIn and Twitter, posts by these super personalities appear, but if I think about it, it’s all already been written or said. The monks’ “ora et labora” is today’s “start the day with meditation”; “eat the frog first” is my grandmother’s way of saying “duty first.” Regarding persistence, we can remember some of Jesus Christ’s words, but surely there is something similar in other religions or philosophies. Why do we need to hear or read the same things in a different form? Have we lost our memories? Maybe these hot nights are getting to me.