Our blog focuses on sharing our experience and knowledge across a wide range of technologies and industries including hardware and software design, audio, video, internet of things, mobile application and signal processing technologies.
Ben’s Golden Rule for Preventing Memory Leaks
Software Development
By Ben Mesander
As an embedded software engineer, I spend the majority of my time writing code in C and C++. One somewhat-justified knock on these languages is that they both force the programmer to sweat all the details involved with memory management. One particular bugaboo of the C/C++ engineer is the memory leak: Memory that is dynamically… View ArticleDetails
The Cost of an Engineer-Hour
Outsourced Engineering
By Howdy Pierce
As all good project managers know, there are three dimensions to any engineering effort: The features of the product: What does the product do and how does it look? (For sake of simplicity, let’s include “quality” as a product feature.) The schedule on which the product is produced: How fast does it get to market?… View ArticleDetails
The Math Behind Analog Video Resolution
Signal Processing
By Mike Perkins
The world is moving in the direction of HDTV, but NTSC “standard def” signals are still common for many reasons and will remain so. One important reason is that cameras that output NTSC are widely available and cheap! Many applications, including a lot of security applications, simply don’t require the resolution of HDTV — and… View ArticleDetails
On the Importance of Encrypting Video
Video
By Howdy Pierce
This morning brought a front-page Wall St. Journal article that’s a bit of a jaw-dropper: Militants in Iraq have used $26 off-the-shelf software to intercept live video feeds from U.S. Predator drones, potentially providing them with information they need to evade or monitor U.S. military operations. … The potential drone vulnerability lies in an unencrypted… View ArticleDetails
Outsourcing Just the 1.0
Outsourced Engineering
By Howdy Pierce
Seven years into running a services business, we’ve recently recognized a pattern across several of the projects we’ve done. The pattern is that the customer wants to outsource the initial development of a product but also wants to bring subsequent maintenance engineering and feature enhancement in-house. This pattern doesn’t apply to all customers or all… View ArticleDetails
Detecting Well-Focused Images
Image Processing
By Ben Mesander
Our expert discusses how to write a program to automatically determine which photo in a group of pictures of the same scene is in the best focus. The trick is to use a contrast measurement in the passive autofocus algorithm. Details
Noise Floor
Signal Processing
By Mike Perkins
As shown in a previous post, for samples taken from a zero mean i.i.d noise signal, the expected power of the k’th DFT coefficient is given by As discussed in that post, when plotting the power of the k’th coefficient as a function of frequency, the “noise floor” will decrease as N increases… View ArticleDetails
Uploading Kodak Zi8 Videos to Flickr
Video
By Ben Mesander
Recently my mom bought me a Kodak Zi8 pocket HD video camera for my birthday. Thanks, Mom! You know what an engineer likes! I love photography, and I upload my photos to the Flickr photo-sharing site. But I think my mom wanted some more home movies of my daughter. The first day I had it,… View ArticleDetails
IACP Product Introduction
Security
By Mike Perkins
I just spent the last three days at the IACP show in Denver — the annual conference and expo for the International Association of Chiefs of Police. For anyone who was once a 12-year-old boy, IACP is about as cool as it comes because there are all sorts of cop paraphernalia on display — from… View ArticleDetails
GCC’s Unhelpful Error Messages
Software Development
By Ben Mesander
Something must be done about the obtuse error messages issued by the GCC compiler, particularly when using C++ and STL classes. Take this, for example, which is the output I got recently after a one-line change: ‘std::_Rb_tree_iterator<std::pair<const unsigned int, EMMServer::EMM> >’ to non-scalar type ‘std::_Rb_tree_iterator<std::pair<const unsigned int, std::map<short unsigned int, EMMServer::EMMSource, std::less<short unsigned int>, std::allocator<std::pair<const… View ArticleDetails
Why is the Compact Disk Sample Rate 44.1kHz?
Audio
By Howdy Pierce
During a recent conference call discussing audio sampling rates, the question came up: Why do CDs use a sampling rate of 44.1 kHz? The 2 Most Common CD Sampling Rates: 44.1kHz & 48kH First, a little background: When you sample an audio waveform, you have a choice as to how many samples you take per… View ArticleDetails
Working With CUDA
Software Development
By Mike Perkins
We’ve recently been working with a cool technology that is rapidly penetrating scientific and engineering computing, but seems little known otherwise. It’s called CUDA. In a nutshell, it is an SDK to allow you to run parallelizable compute-intensive applications on your Nvidia graphics card instead of serially on your CPU. CUDA is one of a… View ArticleDetails