Author Archives: Devin Lane

About Devin Lane

Bits. I like em.

Encryption Should not Trump Law Enforcement

TL;DR: Law Enforcement should be able to access individual encrypted devices when properly authorized by court order, as long as the devices are physically in their possession via normal search and seizure. Encryption has long been used to secure communications over public networks, from government secrets to email and commerce. While technological advances provide more privacy to users, Law Enforcement (LE) must be afforded some access to secured devices when authorized by a court. Without this capability, LE becomes incapable … Continue reading

Posted in General | 3 Comments

Fixing Ubuntu SSD Encryption Speed

TL;DR: A default install of Ubuntu 12.04 LTS with an encrypted filesystem will not use the AES-NI features of your Intel CPU for hardware accelerated encryption. I recently found a two year old bug after searching on and off since I started using Ubuntu 12.04 LTS that reports slow SSD speeds when using dm-crypt, even though with AES-NI speeds should be close to unencrypted. Turns out its a simple kernel configuration issue, which the Ubuntu devs have seemingly declined to … Continue reading

Posted in Software | Leave a comment

Understanding Memory: Part 2

In Part 1, we demonstrated a basic memory model and how in order to modify variables, one must know the variable’s address. In this section, we will talk about pointers vs arrays, and introduce the heap and stack. Pointers vs Arrays You may have heard already that pointers are arrays and arrays are pointers. First, consider the difference between value arithmetic and pointer arithmetic: int var = 5; // var is 4 bytes starting at 0x10 var = var + … Continue reading

Posted in Software | Leave a comment

Shifting My Own Bits – Part 3

In Part 2 I explained the central conundrum I’m facing: TL;DR: Participating in life makes me feel like a fraud, but I need to participate in life in order to be happy. I have made some progress in understanding the origins of this position. In late June I read Atlas Shrugged and was fascinated by the prolific discussions of morality. As I pondered, I realized that I don’t have a well-defined moral code. Morality here answers the question of “why … Continue reading

Posted in Self | 2 Comments

Shifting My Own Bits: Part 2

TL;DR: Participating in life makes me feel like a fraud, but I need to participate in life in order to be happy. A year-and-a-half ago I wrote Part 1 of my foray into understanding myself, at the time coming up with several explanations for my attitudes. Unfortunately, knowledge is only half the battle; understanding that my attitude doesn’t match reality doesn’t make it easy to change, to reinvent myself. It’s easy to follow advice and take a step in the … Continue reading

Posted in Self | Leave a comment

Understanding Memory: Part 1

This article is meant for programmers who have some familiarity with writing and compiling simple code in C/C++. It assumes the reader knows basic data types like int and double and how to define and use variables and functions. This article will then expose the reader to a basic memory model, explain how the use of variables interacts with this memory, and introduce addresses and pointers. On a modern platform, memory is presented to a program as byte-addressable blocks. Each … Continue reading

Posted in Software | Tagged , | Leave a comment

Shifting My Own Bits: Part 1

Refactoring plays an important role in the software development lifecycle — an opportunity to incorporate lessons learned, improve code quality, and lay down a solid framework going forward. The entropy decay of code over time that necessitates refactoring plays a role in other places as well, such as our minds. We can apply the principles of science and engineering to ourselves, allowing us to control who we are with rigorous analysis and study. This rather long essay won’t be appealing … Continue reading

Posted in Self | 1 Comment

Enable WordPress Automatic Updates on a Debian Server

I attempted to get WordPress to update plugins automatically on my Debian server today, and found it a bit less than trivial due to the number of configuration gotchas. [Update August 2014: Please create the ftpsecure user with -s /usr/sbin/nologin, otherwise it can log in over ssh!] Assuming you’re running a Debian server (I have 6.0 Squeeze), on which WordPress is installed in /var/www/site/public_html: 1) Install required packages. I used vsftpd. sudo apt-get install vsftpd openssl 2) Configure vsftpd. I … Continue reading

Posted in Software | Tagged , | 9 Comments

When you need std::remove_const

I ran across an interesting case where I needed to use std::remove_const to ensure a template parameter wasn’t const by default. I had something like this: const Matrix<4> m4 = Identity; Vector<3> v3 = project(m4[3]); With the library I was using, TooN 2.0.0 beta8, this resulted in a compile error. The error stated that when the vector returned from project() was being created, the compiler couldn’t invoke assign to a read only location. A simplified declaration of project() looks as … Continue reading

Posted in Software | Tagged , | Leave a comment

Correcting Message Order with Courier

Recently I moved some local messages from my machine (previously downloaded with pop3) onto the server so I could use imap. I used Mail.app on Mac OS X 10.5.8 to do this. For some reason, the messages in this example were uploaded in a way that caused them to be loaded in the wrong order on iOS 5.0.1. Since I run the mailserver myself, I took a look at the message files to see if I could deduce the cause … Continue reading

Posted in General | Tagged , , | Leave a comment