Featured Articles

Continuous Documentation: Hosting Read the Docs on GitHub Pages (2/2)
Introducing BusKill: A Kill Cord for your Laptop
WordPress Multisite on the Darknet (Mercator .onion alias)
Hardening Guide for phpList
previous arrow
next arrow


With each passing day, it's becoming more and more obvious that Internet users are transitioning to cloud-based storage. Between (1) My home workstation running Arch Linux, (2) my laptop dual-booting in Ubuntu Linux and Windows 7, (3) my netbook running eeebuntu, and (4), public-access PCs at my University, I need a way to open the latest version of our files from any geographic location on any OS.

A few years ago I built a multi-TB storage solution which hosted my personal, online Subversion repository. But power is expensive, so this box ended up getting turned off. In response, I fell into the bad habit of storing my source code merely as files on the cloud without version control.

Several years ago (assuming your file was small enough) this meant emailing an attachment. Or, more recently, uploading it to Google Docs. Then people started using DropBox. Finally, if you cared about the privacy of your data, you moved to Wuala.

But Wuala tends to corrupt my files as I'm editing them in gvim, so I started storing my files locally again--which rocked the boat and convinced me to finally get around to learning git. Git has always been on my to-try
. . . → Read More: Github

UCF Wifi in Ubuntu

This month (September 2011), UCF officially killed the "UCF" SSID to be replaced by "UCF_WPA" and "UCF_WPA2." Configuring Ubuntu Linux to connect to the UCF WPA2 network is neither trivial nor documented by UCF.

To aid other UCF Ubuntu users, I created a Wireless article on the unofficial UCF wiki. This includes links to the official UCF certificates and instructions on how to connect to the UCF_WPA2 network in Ubuntu.

Michael Altfield

Hi, I’m Michael Altfield. I write articles about opsec, privacy, and devops ➡

About Michael


UCF Wifi Rant

While I frustratingly waited to connect to the UCF Wifi after a recent change to their system, I typed up the following email complaint to the UCF DoIT Manager. If *you* have also had issues with unstable/dropped connections, slow bandwidth, latency, or the inability to connect to the UCF Wifi, I urge you to also contact the UCF Department of Information Technology via:

cst@ucf.edu = General bob.yanckello@ucf.edu = Bob Yanckello (UCF Chief Technology Officer) lou.garcia@ucf.edu = Lou Garcia (UCF Network Manager [responsible for wireless services]) chrisv@mail.ucf.edu = Chris Vakhordjian (Information Security Office) tim.larson@ucf.edu = Tim Larson (ERP Consultant) jim.ennis@ucf.edu = Jim Ennis (Enterprise Systems & Operations) andy.hulsey@ucf.edu = Andy Hulsey (Telecommunications [includes Network Services]) aaron.streimish@ucf.edu = Aaron Streimish (Project Performance & Management Office)

Email below

While I understand the benefit of encrypted wireless communications, UCF's decision to require all student wireless clients to use WPA without preparing to sufficiently upgrade the wireless infrastructure has rendered the UCF Wifi *unusable*.

Allow me to provide a brief log of my Internet Experience this afternoon (2011-09-15).

12:02 - attempt to connect to WiFi - fail for 9 minutes 12:11 - connected 12:11 - google 'email ucf department of information technology' 12:12 - disconnected
. . . → Read More: UCF Wifi Rant

RegEx 2 DFA in Python

For my Discrete Mathematics II course at UCF (COT4210), I had to do some implementation with Finite State Machines. My favorite of our tasks (though the most difficult) was to convert a Regular Expression (RE) to an equivalent Deterministic Finite Automata (DFA). And since our professor let us use any language, I tried to branch out from Java & C (which are annoyingly overused in Academia). I decided to teach myself Python. And it turns out, it was a good choice too--considering it's wonderful built-in functionality for Lists, and the heart of this program is a huge 2D array defining the automata's transition function. Also, I miss scripting languages--especially when I'm writing a program as a learning experiment as opposed to trying to make it as efficient as possible.

So, without further Ado: here's my code. It reads a RE in postfix notation from input.txt. Two cautions about postfix REs:

You must explicitly state concatenation The Kleen Star is already a postfix operator in REs, so it doesn't really work to use a mathematical infix2postfix library, as it treats the kleen star like an infix multiplicative operator. I treat it as an operand and throw it directly into the
. . . → Read More: RegEx 2 DFA in Python

New GPG Key

I went to send an email the other day and I was halted when I discovered that my key had expired. I can't believe that I've been using GPG for 6 months, but the time had come to generate a new keypair.

This post outlines the process to gererate a new keypair once your old keypair has expired.

Michael Altfield

Hi, I’m Michael Altfield. I write articles about opsec, privacy, and devops ➡

About Michael

. . . → Read More: New GPG Key

Resolved: OpenVPN

Jesus. It's only the second week of school and I've already pulled my first all-nighter. This time, however, it was not for school. I was determined to get my OpenVPN server properly setup so that I could finally browse the web securely from the dorms. I only expected this to take a few minutes, but I ended up spending over 7 hours of research, troubleshooting, and configuration changes.

This post will contain a slew of information about smoothwall, zerina, openvpn, and iptables. I'm mostly just going to throw all of my findings here without much of any logical flow.

Michael Altfield

Hi, I’m Michael Altfield. I write articles about opsec, privacy, and devops ➡

About Michael

. . . → Read More: Resolved: OpenVPN

Study Software

My senior year of high school, I was preparing for probably the hardest exam I'd ever have to take: my Anatomy and Physiology final exam. In order to make an A in the class, I had to make >92 on the exam. Our teacher gave us a pool of 500 questions; of those 500 questions, she would pick 100 to make up our exam. So, I set to work on memorizing the answers to those questions backwards and forwards.

Instead of using note cards (writing the question on the front and the answer on the back), I spent just as much work (maybe less) in writing a small PHP script that would import a list of 'note cards', prompt me with a random side (front or back) of a random card, hesitate (allow me to think of the answer), give me the answer upon my request, and allow me to mark whether or not I got it correct. At the end of this process (2 prompts (one for each side) * the # of cards = a long ass time), it gives me a list of the 'note cards' that I got wrong so that I can re-study them and
. . . → Read More: Study Software

Re: The problem with wikipedia

Alright, I've been working on my research paper (an attempt to document the history and differences, and an overall comparison between the Microsoft DirectX API and the SGI OpenGL API), so I've been caught in the inevitable wikipedia trap. Here was my path:

Michael Altfield

Hi, I’m Michael Altfield. I write articles about opsec, privacy, and devops ➡

About Michael

. . . → Read More: Re: The problem with wikipedia