memcpy() vs memmove()

Way back when I first started C programming, I wanted to find an easy way to copy one block of memory to another block of memory. The first thing I discovered when digging through documentation was the memcpy() function, which basically does exactly what its name indicates -- copy memory from one location to another. The documentation also talked about a related function called memmove(), which I thought must "move memory from one location to another," so I didn't pay it much attention as I wanted to copy memory, not move it. Yeah, I knew that memcpy() wouldn't behave if the memory regions you were copying overlapped, but I was like "okay, I just won't be stupid and copy between overlapping regions," and, fortunately, the way I used it over the years happened to never result in a situation were those regions would overlap (I think... I've written a lot of code, but don't recall ever debugging an issue due to a bizarre memcpy()-related corruption).

Once upon a time, I applied to work at the NSA. Never again.

Once upon a time, I applied for a job with the NSA...

Hey, I had just been laid off, the economy was in the toilet, it was before Snowden, and I assumed that the NSA focused on targeted intelligence, not broad surveillance.

I managed to get a phone interview with them (along with directions not to mention interviewing with them on any social media). They were even going to fly me down to Fort Meade for an in person interview, but I declined as I got a local job offer I accepted instead.

Given everything that has come to light about mass surveillance and now the FBI wanting to force Apple to backdoor the iPhone, I know I will never want to work for any three letter agency again. In fact, I want to do all I can to make their jobs as difficult as possible, whether it's spreading the word on crypto or contributing to open source tools that make surveillance more difficult.

We're so-focused on the terrorism boogie man that we don't notice the other enemies of freedom under our noses. I for one am not about to give up my liberty to "protect" me from something less likely to happen then getting eaten by a shark.

As Patrick Henry once said, give me liberty or give me death!

TOPS Computation Book Review


First, I'm relatively new to the whole fountain pen thing. I first got into it back in May of 2015 or so, and I didn't really appreciate paper quality at that point either. I mostly just used what I had lying around home or office. Once I started using fountain pens for a bit, however, I started caring more about the types of paper I was using and making sure it was fountain-pen friendly.

My New Passion: Fountain Pens

I recently got into fountain pens for various reasons. Anyway, I don't have time to post any reviews on specific stuff I'm using yet, but I did feel like announcing that you will be seeing stuff about pens, paper, ink, and handwriting here in addition to all the other nerderies.

Assembly: CALLing subroutines without RETurning

I've been doing some assembly level debugging and I noticed this following somewhat weird construct in many locations within the program: