Tag Archives: Techie

Network Routing and Automation Fun with pfsense, Wireguard, and Tasker

Last year, I asked about some very specific home network routing ideas over on reddit, with the goal being to securely access home network resources from my phone while away from home while maintaining some coverage from my 3rd party VPN provider, Mullvad. The faster and more automated any network switcheroos are, the better.

This post is… very long. Here’s a table of contents in case you only care about parts of it:

  1. Reqs and Specs
  2. Prerequisites
  3. Wireguard In, Wireguard Out
    1. Basic Interface Structure
    2. Mullvad Wireguard Tunnels
    3. Gateway Group
    4. Interface Group
    5. Firewall (Routing)
    6. Test!
  4. At-home Mullvad Wireguard on Android
  5. Tasker
  6. Open Issues
    1. Detecting Wifi Disconnection in Tasker
    2. pfsense/Mullvad Instability
  7. What’s Next

Continue reading Network Routing and Automation Fun with pfsense, Wireguard, and Tasker

Migrating G Suite to Gmail

Have Google Home and a G Suite account and wish your calendar was accessible? Good luck waiting for Google (2+ years) or messing around with external services to bridge the gap. 

An alternative is to switch back to Gmail and get it to send/receive using your personalized domain. Ugh. Unfortunately, Google seems to be sticking to the idea that G Suite is now for businesses, not personal use, so there are a few things G Suite users are being denied.

I have a Google Apps for Domains account (now G Suite) for irrsinn.net, and have for years. A lot of stuff to tied to it–OAuth, Hangouts history, voice personalization, keyboard personalization, etc. I wanted to move as much as I could to my (even older) gmail account.

I really, really liked Christopher Hamilton’s “Migrate G Suite account to a Personal Google Account“, and it got me 85% of the way to completion. Definitely follow that. There are some places where things were different for me or I found solutions that original author didn’t. This post is an extension of Hamilton’s, not a replacement.

Email

The original article mentions going away for a couple of hours while email imported. Eight years of not-pruned-enough email took a couple of days, so beware. Start the import early if you have tens of thousands of emails, and work on all the other parts of the conversion while it’s happening.

Also, clean up your damn email as it’s migrating into Gmail. Just delete all that shit under “Promotions”–you can’t use a 2015 coupon from your local nursery anymore.

DNS/Domain registration

This domain isn’t registered or hosted through Google Domains, so this step from the guide didn’t line up. Instead, my hosting provider has MX records for G Suite. Once all emails have finished importing to your Gmail account and you’re ready to flip the switch, reset your MX records and email hosting to defaults with your hosting provider (presumably that they host your email), and forward all emails to your Gmail address.

Chrome settings

Bookmarks are easy (although I moved my bookmarks to a self-hosted Shaarli instance when I switched to Brave on my phone), but I couldn’t find a way to migrate history, extensions, etc. I had about 65 tabs open, and I just went one by one and closed ’em or moved them into my new Chrome profile that syncs to the Gmail address. Bai, settings.

I store very few passwords in Chrome–mostly those for stuff that logs me out approximately every 10 seconds anyway (*looks at nhl.com*). Everything goes into 1Password, including sites using OAuth. I continue to recommend Nathan’s excellent piece, “On Digital Identity, Technology Dependents, and Death“, although I’d do things a little differently these days with 1Password’s online service.

Hangouts

One of my biggest concerns was whether people could IM me at my “good” email address, and the answer is “yes”.

Unfortunately, if they already had a conversation with my “good” address, they can’t start a new one that reaches my Gmail account. Even if they archive the old one, a new one goes to the old G Suite account. Hangouts also doesn’t seem to be updating the email address on that old account, so no one is getting the clever joke in it.

Le sigh. I love Hangouts. I was also really bummed to not be able to migrate my history smoothly, as Chats can’t be forwarded like emails. I used Google Takeouts to get a JSON download of my Hangouts chats (500 MB of text!), but I’m not sure what I want to do with it.

It’s not very immediately readable/searchable, so I’m toying with tools like hangouts-reader to get a different format. I may very well write a command line parser to side-step the issue of browser memory. 

In short, Hangouts is something of a trash fire. This and Google Play are the primary reasons I even need to stay logged in as the G Suite user.

YouTube channel

You can, if you wish, download and re-upload all your videos. You’d lose view counts, URLs, comments, etc. 

Or you can follow a merry path to change the ownership of your channel. Assuming you’re a normal casual YouTube user rather than someone who knows that “Brand Accounts” are even a thing, follow links from that support page to create a Brand Account, move your channel to it, then transfer ownership to your Gmail account. I then migrated the channel to my Gmail account directly, but you could also just keep the Brand Account and enjoy the flexibility it provides. (I was just sick of having so many things with the same profile image floating around.)

It turns out that subscriptions are tied to your channel, not your account, so my 235 subscriptions followed along like little ducklings, although I lost statuses of what I had watched. (This was an open question on the original article.) 

Google Fit

Nope. Couldn’t find a way to do it. I just let my Gmail create a Fit account, then shifted all my app connections to point to the new account. MyFitnessPal and my scale app have the most important information anyway. (Also, can we talk about this new design that makes it near-impossible to have a damn step goal?!)

Google Play, Google Books

Nope. Can’t migrate any of it. Anything that might be considered a “purchase”–even if it’s free or you uploaded it, in the case of a book–is pretty locked down. I understand the security aspect of that, but I’m still sad. I have an export of my book notes/marks anyway.

OAuth

In case you aren’t sure what “OAuth” is, it’s when you log in using the “Sign in with Google” or “Sign in with Facebook” buttons instead of a username and password. It’s a great way to avoid being on the list of folks with exposed passwords, since you don’t give every rando web developer a password. It’s unfortunate when you decide that Facebook is the devil or that you need to change Google accounts.

In addition to the original article’s note to check the “connected applications” list, also leverage your third party password manager of choice for anything you’ve marked as using OAuth instead of an actual password.

Lastly, if you keep your G Suite account open with a changed email address (e.g., deadass@irrsinn.net) to make your main email address available, OAuth connections on that G Suite account still work. You’ll just login to Google with that fake address. You probably have to keep the G Suite account around for Google Play anyway, so it’s not the end of the world.

A Note on Google Takeout

A suggestion you’ll see all over the place is to use Google Takeout — that sounds great, but a lot of those exports can’t be re-imported. That’s not a migration, that’s an archive, and they even call it that. If you’re willing to go into a hunt for a conversion tool (like I mentioned for Hangouts), then feel free, but don’t get your hopes up about anything Google-provided.

Did I miss anything?

I think the original article plus this one makes for a pretty complete picture, but there are plenty of Google services that I don’t use and probably haven’t heard of.

Eight years of G Suite entrenchment is tough to work through, so don’t take this on casually, folks.

Long-awaited Granny Squares Design Going Live

Years, folks. Years. That weird fabric texture background is finally going away.

Ever since I’ve thrown myself full-tilt at Future Proof Games, I’ve let my older side projects run as they are with no updates from me unless something was catastrophically wrong.

A lot has changed on the web since Granny Square Colors got a major update from me, though: tablets and smartphones are even more popular among the GSC user base, Internet Explorer isn’t the worst thing to develop for anymore, and I’m a way better architect and coder than I was a handful of years ago.

Continue reading Long-awaited Granny Squares Design Going Live

Image Generation on Granny Squares

It’s been a while since I’ve done anything significant on my Granny Square Pattern Generator (GSC), and since I’ve already contributed to a game release this week, I figured I hadn’t quite checked enough “public-facing actions” boxes this week until I did some work on GSC.

Biggest missing feature (and biggest complaint!) is that blankets weren’t printable. Now they are!

Log in with something like Facebook or Twitter, generate a blanket, and save the blanket. When you look at the details of the blanket, you can now get it as a printable image, and toggle between the two styles of seeing the blanket.

My next task is to make authentication more seamless.

Techie Bits

Continue reading Image Generation on Granny Squares

Deploying “The Whispering Thing”

After the shenanigans of getting that site pushing, building, testing, and deploying from git to Jenkins to DreamHost, I was able to get deployment for “The Whispering Thing” in place while I slept.

Seriously, Jira says I clocked 90 minutes, and that’s with versioning (details below) and using a new service–DreamObjects.

Twine (what “The Whispering Thing” is written in) produces a single HTML file with all CSS and JS right in the file. A dream for deployment–just put it somewhere.

DreamObjects is–from my perspective–like S3, but doesn’t require me to start the clock ticking on Future Proof Games’ free tier status with Amazon Web Services. DreamObjects is API-compliant with S3, so I can use boto and just change the host name to point to Dreamhost.

I use fabric for deployment scripts, and I wanted this to run through Jenkins so that pushes to the “develop” branch push to a staging location, and pushes with tags to the “master” branch release to prod. This is in alignment with git flow.

The tagging, though–ugh. I must be doing this wrong. The shell command git describe --abbrev=0 --tags --exact-match will get a tag that is on the current commit only. Future commits after that one won’t return the tag. I want that strictness to ensure that only intentionally versioned commits to master go live.

But if there isn’t a tag, the exit code on that command is some error code, which makes fabric stop the deployment and Jenkins fail the build. If you use “warn_only” to prevent that failure, you still have to check for that failure and set the version to something defaulty.

It’s awkward. The function looks like:

def set_version():
  with settings(warn_only=True):
    env.current_version = local('git describe --abbrev=0 --tags --exact-match', capture=True)
 
  if env.current_version.failed: #fabric creates "succeeded" and "failed"
    env.current_version = 'staging'

This is slightly cleaner than what’s currently in my FPG.com deployment scripts, but it’s ugly and not robust.

Also, pushing tags is a pain in the ass. To get Jenkins to properly have both tag and branch when it runs, you have to do the following on the master branch:

  git merge --no-ff release-1.1.1
  git tag -a 1.1.1
  git push --tags
  git push

Jenkins won’t build just for a pushed tag change (grr!), so the tag has to be out before the commit it’s attached to. And the current version of git doesn’t have a way to push both commits and tags simultaneously. It feels awkward and clunky.

Complaints about stank versioning aside, deployment is fast, smooth, and easy. Twenty seconds of Jenkins’ time, including setting up virtualenv with boto.

Then, less than 48 hours after I get deployments working,