Enforcing SSL with GitHub Pages

I have never gone through the trouble of making this website use SSL even though I know it’s the right thing to do. It’s an extra expense and I didn’t want to deal with setting it all up, renewals, etc. Lucky for me procrastination paid off.

GitHub has added support for SSL with Custom Domains! All it took was a quick DNS change and ticking a checkbox and it was complete. On top of that there is an “Enforce HTTPS” option now as well which makes it even easier for end users.

A Fresh iPhone with your Health/Activity Data

Don’t be suprised, I got an iPhone X.

It was always my policy when I got a new phone to start it fresh. No backups, no restores, just login and start downloading the apps and set the settings that I need. This allowed me to essentially clean up the junk that we all get on our devices after using them for a year or two.

The last few iPhone’s that I upgraded to I was forced to do a local iTunes backup and restore for one main item, keeping my Health and Activity data. With the release of the Apple Watch, and a plethora of 3rd party apps, which sends all of it’s data to Health app I have built up an immense amount of data that I dont want to loose. The problem is that with this comes all the old apps and settings from my previous device. A couple days before my iPhone X got delivered I decided to do some homework and see if there was a way around this. Keep my data and send it over to my new device but without the cruft of the old device.

My first option, do everything on the device. I found this writeup on MacStories on an iOS app called Health Data Importer. This seemed like the easy way out. A 3rd party app that just exports everything from the Health database, let’s you save it as a Zip file and then you import that on the new device. I bought the app and the export worked just fine but I could never get the import to work. During the import step it always crashed. My guess, too many data points and it was all trying to be written at once. When the export process was happening it was counting the data points and my count was well over 1,000,000. So with that being a bust I’m back to the drawing board.

The second option I found seemed a lot more promising right from the start. I found an old (2015) writeup on how to only transfer Activity and Health app data to a new iPhone and noticed right away that it was based off of an iTunes backup. What actually happens is that you install a utility, on your Mac or PC, from a company called Decipher Tools. While the sounds like a shady place I figured I would give it a shot. They have a tool called Activity Transfer which uses the iTunes backups on your local machine. Best part, it’s free :)

So with this Activity Transfer tool installed on my Mac the process looked like this.

  1. Do a local, encrypted backup of my iPhone 7 to my Mac. An encrypted backup is needed to make sure the Health and Activity data is there.
  2. Open Activity Transfer and walk through the steps to locate the backup and enter the password to get it unencrypted.
  3. Activity Transfer does its magic and essentially strips everyting about the backup file except the Health and Activity data.
  4. The new “clean” backup it saved back into the iTunes backup location
  5. Plug in the new iPhone and do a restore with the new “clean” backup

After the new iPhone restarts and I completed the setup process I had a brand new iPhone X that had all of the Health and Activity from my iPhone 7 with no other changes from a stock iPhone. Exactly what I was looking for.

Moving to GitHub Pages

Over the past few months I have used GitHub Pages more for other projects and have been pretty impressed. The main reason I didn’t use Pages for this site in the past was my reliance on plugins for Jekyll. Well I now come to find out that there is a whitelist for approved plugins that will run on Pages. Lucky for me everything I was using was already on the list :)

Long story short, I saved myself $5 a month and moved off of DigitalOcean and over to GitHub Pages.

How we make The Dollars and Sense of Westworld

A few months back myself and a few of my friends decided to start a podcast. Little did we know what we were getting into. We had a solid idea for the topic and if you know any of us the talking part was never going to be a problem. But when it was actually time to get things moving we found out all the little tasks and items that it takes to actually get a podcast launched and out the door every week. So how do we do it?

Recording

Let me preface this with the fact that I have never done any audio editing in the past. That being said, lots of reading and research went into how the hell do we actually record something that will sound halfway decent.

The original thought for the podcast was a roundtable. Literally the 4 of us sitting in the same room at the same table and just having a discussion. I had a Blue Yeti that I had used for work in the past that set to the Omnidirectional mode would have done just that. The more and more we got to figuring out scheduling though it was clear that we were going to have to have the ability to record remotely which cut this idea out.

After a bit more reading it was clear that the best way out, and what most good quality podcasts do, is to have each person record their own audio stream. A lot of articles out there talk about using Skype and Call Recorder for this and then just sync it all up in the end during the editing phase. Again, not an audio editor so that seemed complicated. The solution, throw money at the problem and let someone else do the hard work. That’s where Cast comes in.

We use Cast to quickly and easily get everyone into a recording session and start our discussion. No big setups or extra steps to worry about. Just send out the link to everyone, hit the record button and off we go. At the end of the discussion all the audio files are uploaded to the Cast server where they can be downloaded later on for editing.

Location

Like I said before, we wanted to all be in the same room when we record. Sometimes that works, other times not so much. Throughout the run of shows we have actually recorded in 3 different locations and each one has its own challenges.

  • Completely Remote
    • We use Cast as it was intended. All 4 of us are at home and just talking to each other over the Internet. We wanted to have a way to be able to cue to each other that we wanted to talk so we also opened up a Google Hangouts video call. The combination of audio and video worked much better than I think any of us thought it would, even with one of us living in Indiana.
  • My House
    • All 4 of us sitting in my family room. We needed to be spread out to the corners of the room so we didn’t get an echo from each other in our mic’s. On top of that we found that I had to put a bed sheet over the fireplace so we didn’t get any reverb off of tile on the face of it.
  • Chris’ Apartment
    • Again all 4 of us in the same room but in closer quarters. On top of that we had to deal with things like car and train noise which were fun to try and avoid.

Equipment

Being that we have never done this before we were all over the place when it came to recording equipment. After the first few calls that we had with everyone using gaming headsets it became pretty clear that we needed some kind of base line for microphones so we all more or less sounded the same.

Thankfully there are lots of articles out there on “the best” equipment for podcasting. By far the most helpful were the ones from Marco Arment and Jason Snell. They gave great feedback and ideas on how to get started without having to go way overboard when it came to cost and stuff that we really didn’t need.

So, what did we settle on?

  • Microphone - Audio-Technica ATR2100-USB Cardioid Dynamic USB/XLR Microphone
    • Overall its a simple microphone that has both a USB and XLR interface. We were all going to start with USB but its nice to have the XLR expansion capability if we want to upgrade things in the future. This package also came with a USB cable, XLR cable, and a simple stand so overall, it’s a great starter kit.
  • Pop Filter - On Stage Foam Ball-Type Mic Windscreen
    • Nothing fancy here but some kind of pop filter is definitely required. We were going to be moving around a lot so it made sense to get something that just sticks on the microphone instead of a typical wind screen. That would have just been another piece of equipment to carry.
  • Shock Mount - Dophee Condenser Microphone Shock Mount Stand
    • Again, nothing fancy but want to make sure that random taps and ticks don’t make it into the audio.

Getting Organized

We needed to have an easy way to collaborate on documents like notes for when we were recording or putting the actual metadata for the episodes together. No real surprise here, Google Drive.

Editing

This was the big unknown that honestly, I was quite worried about. I had spliced some audio files together in the past for work projects but never did anything of this size. Overall at the beginning I took it as a slow and steady type of project just so I could get used to this new way of working.

We settled on doing a small intro episode which was only going to run 10 minutes. That was a great test bed to make sure I wasn’t over my head. After doing the recording I downloaded the tracks from Cast and imported them into Garageband. It’s free with Mac’s so it was the simple and easy way to get started. I was able to clear out a couple missteps we had and overall, I had a pretty good first attempt. After listening to it a few times though I could tell it was just missing something.

Music

Just about every podcast I listen to has some kind of music. It’s used in the intro, outro and sometimes as bumper between segments. I think it makes things feel just a bit more polished. So, we started brainstorming. The original cut just used the Sweetwater Theme from the show. It was awesome. Just this one change made it feel like a completely different show, more professional. After having the group give it a listen they were sold tha we needed music as well but didn’t want to run the chance of getting a cease and desist letter from HBO. Understandable.

If you watch the show at all you know that the piano in the bar is a huge part of the story. It just so happens to play the right music at the right time. So, with the overall tone pretty much set for us it was time to pick the song. A bit of brainstorming and just throwing idea’s around to see what stuck and someone decided to play off of the name of the podcast. If were talking about a business and the goal is to turn a profit why not Money by Pink Floyd. But how are we going to find a piano version of that? Well welcome to the internet where whatever your thinking someone has already done it.

Just a bit of searching around and we found this video by Ioana Amarita. A perfect cover and it even had close to the same tone as the piano in the show. It was just too perfect. We got in touch with her via Facebook and agreed to purchase a license for the audio track for reproduction purposes.

Upgrading to Logic

While the intro episode was easy to edit in Garageband, when it came to the first full length episode it just didn’t cut it. There were too many little echo’s and things that needed to get cut out in order to clean the audio up. I looked through lots of help articles on the best way to do this in Garageband and the results were not encouraging. Most things that I was reading pretty said move to Logic and use Strip Silence. The major rub with that, Logic costs $200. I tried to stumble my way through using Garageband but it didn’t last long. I swallowed the cost and to be honest it was the best thing that I could have done. The Strip Silence tool is incredible easy to use and makes our audio sound as good as it can be.

Metadata

After you have a good MP3 file there is actually one more step, metadata. Quality podcasts these days include things like album art, descriptions, and even chapters. Some more digging around online and I found Podcast Chapters, a Mac utility that made it super simple to add this information in the MP3 file. It even supports chapter specific album art if you want to get that granular.

Hosting

So now we have audio file ready to go. How do we get it to our listeners? All podcasts are distributed via RSS feeds. Once you establish this feed URL you really don’t want to change it otherwise all your listeners need to re-subscribe so it was important to get this right from the start. We knew that to do this right it was going to cost something so we wanted to make sure we were getting a good solution for the price. We settled on a LibSyn plan that costs $15 a month. They offer a really easy web interface to create new entries in the feed and even offer some nice features like scheduled releases (which have come in handy a few times). On top of that they track and give simple statics for each episode release so we can see how were doing.

Listing/Subscribing

Once you have the hosting completed you need to make sure that people can actually search and find your podcast, most people won’t just take a raw RSS feed. We submitted our feed to Apple Podcasts, Google Play, PocketCasts and Overcast. Being listed in those podcast players should cover 95%+ of all podcast listeners. With Apple Podcasts and Google Play there is an approval process but it took us less than 24 hours to get through that and get listed.

Website/Social Media

The final step, let the world know that a new episode is out there. That starts with a URL for users to go to which means a website. Since we spent money on recording and hosting this was an easy spot to save some cash and use a free service, GitHub Pages. This is a free service that GitHub runs and is based off of Jekyll which is a static web site generation tool. Simply put, it takes simple Markdown files and turns them into webpages. Being that it’s a free service there are some usage limits but they are pretty generous and are mostly soft limits.

After we have created a new episode post on the website it’s time to share it on Facebook and Twitter. We registered specific accounts for this but the 4 of us usually also share/retweet the items from the main account to make sure more people see it.

Wrap-up

When I had the idea for this post I thought it was going to be something that was quick and easy to type up and post. The actions and steps I just ran through have become second nature to me because this is just what it takes. Looking back on it now though I can see how far we have come as a group. Is it easy? Not even close. Is it worth it? Maybe. I doubt we will get a huge audience but going through all of this with my buddies has been a blast and I can’t wait for the next side project that we come up with.

Bike Share Buddy 1.3 Update

Today I am launching a pretty big update to Bike Share Buddy, version 1.3.

  • Added support for over 450 new networks across 45 different countries
  • Bug fixes

Overall there’s not much in UI changes here but the market expansion is huge. This update takes it from 6 networks across 2 countries to really being worldwide. This was done using an API from CityBik.es which is free to use. It seems like they keep adding networks on their own so support for new networks should come for free when the source data changes.

I am actually really happy with this update. Due to the way the application was written it was easy for me to change just the services and some slight changes to the models and the UI layer just worked. It really validated the choices I made when doing the initial design of the application.