Monthly Archives: April 2017

FastMail Programming Woes

Published / by Andrew

I went through a headache today when I discovered that emails were no longer being sent from Threadstr. I couldn’t figure out what had changed because I haven’t actually touched it in quite awhile. Both my local development and threadstr.com had stopped working and with the same error message: “Error: Invalid login: 535 5.7.0 Incorrect username or password.” I had changed no settings since the last time it was working on either, I had made no changes to the domain registration, and the username and password were correct.

Well, it turns out that something changed on FastMail’s side. I’m not exactly sure specifically what they did, but they no longer let you programmatically send mail using the same password that you use to log in to the frontpage. You now need to create a new password specifically for your application.

It’s actually a good idea, but I sure wish they had let me know about this before they implemented it, because it completely broke Threadstr functionality. I can’t even find an announcement for it– I had to dig through the settings in a wild madcap adventure to find something, anything that could have caused the service to suddenly stop working.

(Irritated as I am, I’m making no plans to change to another email provider, because they’ve still been great so far.)

At any rate, I thought I’d make a post in case this helps anybody else. If you can’t get FastMail to work with something like NodeMailer or PHPMailer, or if it suddenly stopped, it could be this. Below are screenshots of the FastMail settings that will solve the problem.

Use the password generated here instead of the regular password in your application, and you’re golden.

Some scripts to easily make a private VPN server.

Published / by Andrew

I spent my weekend learning about OpenVPN and how to set up a DigitalOcean droplet to act as a VPN server. This was inspired by recent congressional actions and the anger and frustration that followed from citizens. The short version is that you can use OpenVPN to hide your browsing history from your ISP, so they won’t have anything to sell. Additionally, though, you can use a VPN to protect your data while you’re using a public network to prevent man-in-the-middle attacks, like a coffee shop or a hotel network. Traveling professionals have been doing this since at least the 90s, and my goal, at the moment, is to make this accessible to pretty much any human being that uses a computer.

This is why I wrote two BASH scripts to automate the instructions given by DigitalOcean. These scripts should let you have a fully-functioning, private VPN server up and running in about twenty minutes. This is not you handing information over to a third-party VPN service that you don’t know if you can trust– This is your own VPN server, that you control, running on the highly-trusted DigitalOcean cloud.

I also created a YouTube video series to give an example of it being set up. As I say in the videos, I want a private VPN server to be as easy to make as a peanut butter sandwich.

If you’re interested in setting up a VPN, I hope this is helpful.

Patience, coffee, and naps

Published / by Andrew

There’s probably a morality tale somewhere in here.

A BASH script wasn’t working in the VM I was testing it on, and I thought sure the tutorial I was using was wrong. (I was getting a little bit irritated, in fact.)

I wrote out a question for Stack Exchange, but decided to sleep on it before posting it.

I looked at it the next day and I immediately saw what I did wrong. It was kind of obvious, actually. Stack Exchange would have been a waste of other people’s time.

I’m not exactly sure what the lesson here is, but it does remind me of something that I used to say when I was in grad school: The three most important things in math are patience, coffee, and naps. Patience because you’ll be able to understand something better if you take it slowly. Coffee because, well, coffee. Finally, naps because sometimes, as one of my teachers used to say, your brain can get full, and you just need to take a step back and take a break before coming at it with a fresh mind. I think this applies to programming as well as it does mathematics.