Saturday, July 16, 2016

Java Multithreading in Google AppEngine

I'm currently working on a security app using Google AppScript.  One bit of functionality the product owner wanted implemented was checking ip addresses against a blacklist.  The original idea was for a self generated blacklist, but before I started implementing that, I wanted to see if there were any blacklists out in the wild that I could leverage.  While there are many blacklists out there (a few of the big ones are on this wikipedia page "Comparison of DNS blacklists"), almost without exception they use a specially formatted DNS query to get results.  This is a huge dealbreaker for a JavaScript app, as there is no way to do a DNS query in AppScript (yeah, node.js does it, but alas, not using node, so...).  So I made the decision to stand up my own Java REST endpoint in AppEngine.

Friday, July 15, 2016

Algorithms Case Study: Dynamic Programming in JavaScript

Several days ago, a civil engineer friend of mine asked me if he could pick my brains.  He'd run into a bit of a problem analyzing a bridge design, and wanted to see if I had any thoughts on how to attack the problem.  So we sat down over Jimmy Johns and he explained his problem to me, and my first impression was that is sounded like a textbook dynamic programming problem.  I told him I would have a look at it, which I finally did today.

Wednesday, July 13, 2016

Setting up a Raspberry Pi 3 (and an Amazon FireTV Stick) as a general purpose media hub

Some months ago, the pc we were using upstairs as a media center took its final, epic dump.  I tried to update Ubuntu from 14.04 to 16.04, and a hard crash midway through made it unbootable.  After struggling for ages with flakey behavior, I decided I'd had enough, so I finally did something I'd been looking for an excuse to do for a while:  I bought a Raspberry Pi.  I got the kit with the case and the cable and the little heat sinks.  I just wanted it to be easy.  And for the most part, it was.