Thought for the Day

If it goes without saying, someone should probably say it. How often has this simple advice saved my bacon! No matter how much we share backgrounds, training, and experience, there will always be things we assume other people understand or think of because it's so natural to us. However, we also know the old saying

Pokemon Go Bots: A Case Study

Pokemon Go is a very popular game, and I don't need to say any more than that. What's truly interesting is the hacking community dedicated to developing third-party applications around it. Around the time of release, several clever people reverse engineered the basic API, allowing for the development of useful maps and a number of

CTags: Lightning Fast Project Editing Made Easy

What's the fastest way to get from a function call back to its definition during the editing process? If you're using something like Notepad or an IDE, the answer is usually to search for the file containing the function, open it, and search your way down to the definition. Unfortunately, if you want to

Rant: Why we need fewer coders

In fifteen years we'll be teaching programming just like reading and writing ... and wondering why we didn't do it sooner. Words cannot begin to describe how angry everything about this poster makes me. First, let me get the subjective part out of the way: I deeply dislike Mark Zuckerberg. Not only does his social

Quickie: Configuration Headers

We all know (or at least we should know) that we can use #define to create macros that replace names with values during the preprocessor phase of compilation. Sometimes, it's very important for us to have the ability to change large amounts of code very quickly, because we have a new size limit for

Patterns for Kids: Clever Elsa

Most of us have at least heard of the Grimm Fairy Tales. The Brothers Grimm travelled through Germany compiling folk tales, which they published into an excellent collection of myths (pattern-conveying stories) that convey simple lessons to us at any age. Today, we'll look at the story of Clever Elsa. --------------------- Elsa was a serving girl who

Tools vs APIs

If you are making a product that will employ unique self-signed certificates and private keys, how would you go about it? The two basic techniques are: Run a tool like OpenSSL's cert tool, either at user discretion or through a script Build the certificate generator directly into your program Let's take a quick look at what each

Patterns: Initialize Everything

malloc(): memory corruption When you look at an error message like that, what could possibly lead you to believe that, a hundred lines up, you didn't properly initialize a size variable? After all, all we know is that this malloc() operation could not complete because the memory it should be able to touch is corrupted. Yes,

Debugging Pro-Tip: Malloc() Errors

On Friday, I spent a number of hours trying to run down an error in a fairly substantial piece of code. All I really knew was that I kept getting an error that said something like: *** glibc detected *** ./my_program: malloc(): memory corruption: 0x0000000002296980 *** When I pushed this piece of code through gdb, I