Aloha and welcome. L0j1k is my name, technology is my game. In Master of Orion, I always play Psilon.

In our new apartment, we've got a "fatal funnel" coming up to our front door. That's gruntspeak for a point of entry which is extremely dangerous because you cannot simply go around. Doors, stairs, hallways. Anyway, we're on the second floor and have a nice, private staircase leading to our apartment.

Historically I've always been reticent to set up a camera to record the goings-on near my home. It always just felt a little bit weird. But this time the placement of my laboratory is just perfect for watching anybody coming up the stairs. There's a window directly above the only way into our house.

Since I've been getting into robotics with a hope to push into drone technology as a potential business, I thought it would be an awesome way to get into using the OpenCV library in Python using SimpleCV. I bought myself a book entitled, "Practical Computer Vision With SimpleCV" and a copy for my BFF out in the Sandwich Islands (Hawaii).

Many years ago I had purchased an IP camera for use in one of my SUPER interesting previous hobbies: Ghost hunting. That's a story for another time, but it was extremely fun and left me with a lot of really nerdy and useful electronics such as cameras, thermometers, EM meters, things like this.

I hooked up my camera to my primary home 1U CentOS server and wrote a small Python script to detect movement through the camera. Then I hooked into the Twilio API so I can send myself an SMS with a photo of the visitor attached. This actually works surprisingly well! Mission accomplished.

However, as the days went by, I started to feel a bit strange watching over everything happening outside my apartment. I'm not a control freak and I don't want to be the super-paranoid combat veteran. Ever in search of a new project to throw onto the tens of others laying abandoned around the laboratory, I began complementing my camera script with a small database to attempt facial recognition. Then, the script only sends and SMS when it does not recognize the individual coming up the stairs.

This might sound a little difficult, but our staircase is such that anybody coming up them has to make a button-hook turn to the left to walk up the top half of the stairs. Everyone coming up the stairs looks straight at the little black camera, and I've considered adding a colorful sticker or flag right above the camera to attract the attention of visitors. When they notice this, they will face the camera even more directly, and I will be able to register facial-recognition scans with even greater precision.

So far, I've had pretty good results. My wife and I are pretty easily recognized because of the substantial database of images the script has stored for future identification. Another couple of people that come up the stairs often are the mailman, the UPS dude, and the Fedex guy. The camera has only had a couple of weeks worth of visits to catalog their images, but I'm confident it will get better over time.

Everything else is generally going well. I had a very excellent Fourth of July weekend, except for a strange sickness I got the day before, which was so bad I had to go home and lay down.
July 7th 2014, 06:09:32 UTC

I live in California now, working for an "advertising" company. I use quotes because advertising is the primary revenue stream, and it's the primary problem space. However, it's the hardest problem I've ever had to work on. Why is it hard, you ask?

What I'm tasked with doing is detecting and intercepting all dynamic content being loaded on a page so that information about that content (and the content itself) can be captured and comprehended. "Comprehended?" you say snidely. Yes, sort of.

What this company does is take the content from an end publisher's site and then act as an intermediary between the publisher and end users by A-B testing templates to maximize the revenue through advertising placement. There's no competition, but it's a motherfucker of a hard problem, as you can imagine.

Anyway, they don't track dynamic content (yet), and they need to do this in order to automate the whole process (and get millions of users hopefully, and therefore billions of dollars, hopefully). So they hired me on to solve this problem.

It's the hardest problem I've had to work on so far, but I really, really felt like I needed to take this job in order to bring my skills to the next level.

Most of my work is done in good ole JavaScript, but they're migrating a ton of stuff into Go, so I'll be doing that eventually, as well.

In other news... I live in fucking California again! Wewt! Can you say medical marijuana delivery services? FTW! :D
June 3rd 2014, 01:52:39 UTC

I finally got around to installing a Yubikey authentication server on my LAN, so I'm taking the opportunity to build a completely new infrastructure. I've had a few VPS running the services I've needed previously (proxy, VPN, tor, irc bouncer, etc), but will be nice to finally have all of those things local to my own LAN.

Part of my drive for implementing fresh services locally is to get away from leaving this data out there in the universe. I suppose I'll have some failover stuff hanging out somewhere out there, but what's the point of having a Yubikey if you don't run your own authentication server to keep the fascists out?
April 3rd 2014, 02:33:47 UTC

git clone git://

That will get you a clone of the latest GnuPG source. You'll need a few tools to compile, like automake and autoconf and probably other tools I'm too lazy to track down right now. In g10/keygen.c run a search for "4096" and you'll see a line that looks a little bit like this:

unsigned int nbits, min, def = DEFAULT_STD_KEYSIZE, max=4096;

Change "4096" to "8192", run, then configure && make and voila! 8192-bit keys to keep fascist scumbag terrorists the hell out of your business.
January 2nd 2014, 06:09:46 UTC

So this post is about Bitcoin. I haven't talked about my involvement in the past, even though I've been mining since the first part of 2010. No, I'm not a millionaire. I sold most of my holdings in January of 2012 and then again in April of 2013. Of course I still have a pile of the things, just that what I have won't be getting me onto that Mediterranean yacht into the villa on Formentera as soon as I'd hoped. It's still an attractive number, regardless. Anyways, I've taken to selling small amounts on eBay considering the huge amount of press that's been generated about it.

Mostly what interests me about Bitcoin is Satoshi Nakamoto. I believe his/her/their -- hereafter referred to by the neutered English pronoun "him" -- identity is truly one of the greatest mysteries of our time. I've had some ideas here and there about tracking him down. There exist a number of interesting things to see in the Bitcoin world. The wallet that mined the first block and the very first block of Bitcoin mined, for example. Or the very first post by Satoshi about Bitcoin as a currency, or as a piece of software.

Lately I've been consolidating my effort and grouping it into a "special project" of mine. I'm a big nerd and have special "operation" names with component "project" names that sound like the old atomic weapons or military black project names. As a result, I can't tell you the operation or project name that got me results, but... I've isolated a piece of information that either no one has yet discovered, or at the least no one has yet published. Will I publish it? Perhaps, but only if I end up getting further along the highway in this endeavor. Who knows what the prize is for discovering his identity? A few Bitcoin? His entire wallet? Fame, fortune, and naked women? Or most likely just some street cred with other cypherpunks.

December 1st 2013, 23:31:16 UTC

So I've got a pretty concise and thorough article on using Salt to spin up an AWS EC2 instance as an OpenVPN server. All of the individual instructions are explained alongside justifications for needing to know these kinds of operations from a philosophical standpoint. It also reads well, but I'm biased.

Originally I had written the article for a pretty big name in the Linux world on the advice of someone at the company I work for. However, that opportunity fell through and it looks like the poor thing is now an orphan. It wasn't sent to the editors of the intended publication so it hasn't been vetted (or rejected) by anyone. That being said, I've been published previously and hope it's clear from this website that I can write with something approaching articulation.

I'm going to send this article along to a few other publications in the hopes of seeing it in print. I would also like to see the knowledge spread far and wide, so that every reader learns a healthy amount of antiauthoritarian guerilla network knowhow.

If you're into tech publishing and want to read it, I'd be happy to send it along.
November 25th 2013, 07:32:24 UTC

I know PHP very well. Due to the nature of web development -- and considering my history as a business owner in that particular industry -- knowing the Pre-Hypertext Processor is a requirement. Here's thing: If computer languages are like Santa's elves, PHP would be the slow, fat, retarded one. And I say that with a sense of love. Sort of.

Lately, my duties at work have shifted from systems administrative tasks designed to improve the structure and quality of our internal network, to more regular software development tasks. The previous assignments gave me the chance to gain intimate working knowledge of how our network and resources are put together. Now I am working on tasks more aligned with the development of pfSense, the open source Unix firewall at the center of our business.

This week and last, it meant developing a proprietary pfSense plugin for use by the company I work for in keeping customer licensing and support data aligned with the newest version of pfSense (2.1). Developing a plugin means writing PHP. It also meant working with the UI, which is a tale for another time, since it is built using HTML tables. Anyways, it was the first time in probably a year that I had written anything completely unique in the language, and PHP didn't waste a moment to bare its fangs in the worst way.

My first complaint about PHP is its reserved keyword namespace. Last I checked, there were over 3,300 functions in the primary language namespace. That's three thousand and three hundred functions in the primary namespace! Nobody can convince me that levenshtein() or metaphone() are absolutely necessary in the core PHP language. No sane human being (that isn't a linguist) would devise a language that has functions like these available without even needing to import them into the namespace.

Ignoring the huge fatness of the language namespace, as well as the fact that these functions seem to have been named by cats (Yeah, I'm looking at you, htmlspecialchars() and strnatcasecmp()), there are other issues. For example, filter_var() has several options that are incredibly important, because PHP is one of the premier languages used on the Internet. For example, FILTER_VALIDATE_EMAIL or FILTER_VALIDATE_URL absolutely need to work without a hitch. Surprise! They don't! Several email addresses and URLs that are valid according to the RFCs won't pass this filter.

Another problem that might affect everyday programming is PHP's stupid handling of isset() on any variable. PHP will return a boolean false when isset() tests a variable that exists and is set to null. Hey, braindead language developers! Null-set variables are NOT the same thing as non-existent variables! If you want to redefine null as a value, then do it and say so in the documentation. That being said, something tells me this isn't a language decision, but a function written incorrectly.

Sometimes writing PHP makes me feel angry and betrayed, because for a language so ubiquitous on servers around the world, it's sure got more than its fair share of stupid caveats.
November 17th 2013, 02:29:42 UTC

I've had the great misfortune of causing a stir online about the extremely poor service now offered by ResellerZoom, which is also known as HostingZoom and ModVPS and JaguarPC. It was my very first reseller account years and years ago, probably back in 2004. I've had some problems with being invoiced properly since JaguarPC purchased the company, but it wasn't until the last month or so that the service itself has really completely tanked. DAYS of downtime for various reasons followed by the head of support of the company actually lying during damage control. In the end, I decided that enough was enough and moved my domains the hell off of their service. If you're in the market for any hosting services... DO NOT move forward with HostingZoom/ResellerZoom/ModVPS/JaguarPC. You WILL be making a terrible mistake that you WILL regret.

At work recently I ran into a few problems setting up Dynamic DNS with the DHCP server on FreeBSD 9.1, using TSIG keys with DNSSEC. We have a medium-sized network with a variety of resources that need to play well together. It turns out there were a few small problems working against me. There seems to be a bug or some other fundamental and esoteric problem with getting those update keys to work properly with 'allow-updates' in the individual subnet definitions.

There's a billion other things I'm trying to get working both at the office and on my personal network. I just wanted to put a small update here to let everyone know that I'm still alive. :)

Besides the above, I took my beautiful wife to Nashville to visit my brother and his family and their newest addition. We also went to a Taylor Swift concert, which was actually pretty good. There were a lot of screaming little girls, but beyond that, it was a good concert.

More later...
September 24th 2013, 04:44:30 UTC

Aloha. Sorry about the downtime. I know you were riveted to the refresh button waiting since June for something to pop up. ;) Here it is!

I had used Lunarpages hosting since about 2004. They're a really great provider and I recommend them for fast, cheap, robust shared hosting. My needs (and skillset) have moved beyond shared hosting, and this site (among all of my others) are now hosted on my own private "mad science" network of VPS.

I'm building a couple of open source projects with enthusiasm, and moving to Austin, Texas at the end of this month to start working for a friend of mine. I'm extremely excited about this development, even if my wife will be in Sweden for a month without me.

One of the projects I'm working on is called the Shroud Project. It's a set of browser extensions -- and hopefully someday soon, mobile applications -- designed to take a bite out of the efficacy of the fascist, illegal, unconstitutional NSA catchall surveillance machine that, if left unchecked, will lead us straight into an American holocaust.

Another project I've been working on is a small, commercial, web security and notification product called Site Seal by MediaMoat, one of the companies I lead. I don't expect to make a ton of money off that product, it's just a little something to help the world stay safe and secure in these trying times.
July 7th 2013, 04:14:54 UTC

Oh boy. I had a few friends over last weekend for my wife's birthday party, and one of them reminded me of a strange phone number circling the web about six months ago. We couldn't remember the specifics in our beer haze, but the next morning I got a message with the whole story.

Fast forward a week and I'm wading knee-deep in the abyss. Or wading knee-deep in the ABISM, if that's more appropriate. I can't really explain what OTP22 is beyond "a kind of ARG, maybe, or possibly an old semi-secret government system" ... or something along those lines. You will just have to look for yourself.

In the meantime, I've been drafting the voltage regulator/overcurrent protection circuit design I will need to successfully run eight motherboards on two power supplies. I've also been working pretty diligently on a JavaScript utility for creating graphs. Not graphs that managers want to see in finance reports, but graphs that computer scientists use to study relationships among datasets.

And you have my sincerest apologies if you get sucked into OTP22. Don't say I didn't warn you!
April 7th 2013, 09:23:03 UTC