This took quite a lot of finagling, so documenting what worked:

Goals: One certificate-only VPN tunnel for two LANs to access each other, minimizing NAT, etc. Any local IP in subnet A can get to any local ip in subnet B, through the router, without needing to know it is a vpn tunnel. And vice versa.

Both Routers

VPN Type: TUN (TAP seemed overkill for this case)

Protocol: UDP

Match ip/address, port, other non asus-specific openvpn settings

Enable Static Routes in (both?) router settings

When you export the openvpn certificates from the router (as opposed to supplying your own), they have the CN set as ‘client’. …


My employer is a primarily C#/.NET shop, and everything we do is on Windows machines and in Azure. It works out pretty well. Despite being historically bad at commitment, I’ve spent the past year sticking it out going 100% Windows for development.

I like Linux, but dual-booting always felt fragmented. I couldn’t listen to my obsessively cultivated music library with bit-perfect output while coding? …


It was an accident a few months ago… I was standing in my bedroom with my Stratocaster and “Maggot Brain” playing in the background, casually pretending I was Eddie Hazel. I was getting a pretty good sound with fuzz into wah into reverb... EXCEPT that stupid weird clicky alien noise popping up every so often. Ugh.

That was my phone in my pocket, only a few inches away from the single coil pickup of the guitar, with the distortion effects compressing and emphasizing the nuances of the interference. …


tl;dr: try obfuscating your google analytics property ID with JavaScript.

I while ago I learned of a pretty creative and very strange way that spammers have been going at it on the internet. I got a support request for a client’s website who’s google analytics traffic was full of junk. At first I assumed it was just badly behaved crawlers, but it turned out to be a different behavior. Spammers were scraping the GA id from sites and posting straight to google, never even visiting the site. Ghost referrals!

What could be the motivation for this? Looking at the results, it appears to be shady SEO ‘services’ advertising themselves by appearing as top referrals. It seems Vitaly the spammer (owner of many ‘ilovevitaly’ domains) is a bit notorious in the analytics scene. This seems like a lot of work for a few views, but maybe it’s effective for some people. Some of them were just straight up malicious links, but again, people viewing a site’s analytics seems like an awfully small target audience. I found these same hits in my personal site’s traffic too, which is indexed by google but not really present anywhere. …


I left Battlehack Chicago with two prizes, new friends, and a side project I was determined I would take to light. It wouldn’t be abandoned on the side of side project road with all those other ideas. I was going to take it there.

That was almost two months ago. Grndma.io has made progress, but it has yet to make it to alpha. It isn’t ready for my own grandma, who has enthusiastically volunteered to test it.

It has become another member of the nebulous idea-cloud over my shoulder. I think about it every so often, but nothing ever comes of it, and the weeks bleed by. It was in this meta-state that grndma was struck out of this monotony by activity from itself! whoa. My project did something! One of my team members broke through the fog and pushed a commit. Way to go, that’s inspiring. Now I’m motivated to have his back. Solo, this was doomed to taillights on side project road. But with a team, maybe it can happen. Open-source! And I do catch myself thinking of it as “my project”, but it’s definitely not. …

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store