Beyond Printf(): Better Logging Practices for Faster Debugging

All of us who do some programming know that logging is a time-tested way to output messages about the internal state of our code. With varying degrees of adjustable granularity, these messages allow us to keep track of not only the state of the application, but also its overall health. …read more

Continue reading Beyond Printf(): Better Logging Practices for Faster Debugging

Printed It: Print-in-Place PCB Gripper

The goal of Printed It is to showcase creations that truly embrace the possibilities offered by desktop 3D printing. The most obvious examples are designs that can be printed quickly and cheaply enough that they’re a valid alternative to commercially available products. But as previous entries into the series have …read more

Continue reading Printed It: Print-in-Place PCB Gripper

A Beginner’s Guide to Lithium Rechargeable Batteries

Batteries were once heavy, awkward things, delivering only a limp amount of current for their size and weight. Thankfully, over time, technology has improved, and in 2020, we’re blessed with capable, high-power lithium polymer batteries that can provide all the power your mobile project could possibly need. There are some …read more

Continue reading A Beginner’s Guide to Lithium Rechargeable Batteries

Peeking Inside Executables And Libraries To Make Debugging Easier

At first glance, both the executables that a compiler produces, and the libraries that are used during the building process seem like they’re not very accessible. They are these black boxes that make an application go, or make the linker happy when you hand it the ‘right’ library file. There …read more

Continue reading Peeking Inside Executables And Libraries To Make Debugging Easier

Using Valgrind to Analyze Code For Bottlenecks Makes Faster, Less Power-Hungry Programs

What is the right time to optimize code? This is a very good question, which usually comes down to two answers. The first answer is to have a good design for the code to begin with, because ‘optimization’ does not mean ‘fixing bad design decisions’. The second answer is that …read more

Continue reading Using Valgrind to Analyze Code For Bottlenecks Makes Faster, Less Power-Hungry Programs

Using Valgrind To Track Down Known And Unknown Bugs In Your Code

We all know what bugs in code are. We don’t like them when they are in programs we use, and they’re even worse when they are in code which we have written. Clearly, the best code is bug-free, but how do we get there?

This isn’t a new question, of …read more

Continue reading Using Valgrind To Track Down Known And Unknown Bugs In Your Code

How To Get Into Cars: Handling Mods

As a budding automotive enthusiast, you finally took the plunge and scored yourself a sweet project car. After going through it from top to toe, you’ve done your basic maintenance and it’s now running like a top. Now you’re getting comfortable, you’ve set your sights on turning your humble ride …read more

Continue reading How To Get Into Cars: Handling Mods

Write Once, Run Everywhere: Cross-Platform Programming Done Right

One of the goals of programming languages back in the 1950s was to create a way to write assembly language concepts in an abstract, high-level manner. This would allow the same code to be used across the wildly different system architectures of that era and subsequent decades, requiring only a …read more

Continue reading Write Once, Run Everywhere: Cross-Platform Programming Done Right

Learning Morse Code the Ludwig Koch Way

Most countries have dropped the requirement for learning Morse code to become a ham radio operator. Because of that, you might think Morse code is dead. But it isn’t. Some people like the nostalgia. Some like that you can build simple equipment to send and receive Morse code. Others like …read more

Continue reading Learning Morse Code the Ludwig Koch Way