2017 Recap & 2018 Goals

Photo by Chinh Le Duc

2017 is over. I didn’t think it was a bad year. We had some great things happen and some terrible things happen. Overall, it wasn’t a bad year. It wasn’t my best year either. But it’s over now and we have 2018 to look forward to.

2017 Goals

I made a number of goals in 2017. I achieved a few of them, but not all.

Half Marathon

My first goal was to enter and compete in a half marathon. I entered into the marathon (paid the entrance fee), but I never competed.

I was training and preparing for this. I was out running several times a week for a few months. But, despite being a year out from my last surgery, I was still having some pain while running longer distances. The last thing I want to do is re-injure anything and need further treatment. Instead of risking that, I abandoned this goal. I didn’t want to, I really enjoy(ed) running. I think I’ll try running a few 5ks before jumping back into a half marathon.

Technical Blog Posts

I managed to make a number of semi-technical blogs posts. One one was overly technical, but I think I got close enough with the others to call this a win.

I posted a rather lengthy post about how to use Charles Proxy for app development and testing. This actually turned into a talk I did last year (to satisfy another goal).

I also started a new series about data synchronization. It’s still a very slow work in progress, but I’m still chipping away at it. Life gets in the way (as always). But I’m determined to make more progress.

Present Something

I presented my Charles Proxy session at a joint iOS/Android meet up during Philly Tech Week last May. I’m not very good with presentations, so I am happy that I went through with this. The presentation went well and I think everyone appreciated it (and maybe even liked it).

My slides from that presentation are available here.

Release a New App

While I didn’t personally release a new app. My company worked on and released a brand new app. We released Boomerang - Best Cartoons last year. It’s a really cool app with a lot of awesome cartoons.

I’m not really sure if this is a win or not. While I didn’t release a new app personally, I did professionally.

2018 Goals

Now that I’ve taken a look back, it’s time to look forward. I haven’t put a lot of thought into what I want to accomplish in 2018. But I do have some personal goals I would like to accomplish.

Run a 5k (or two)

This goes directly to my 2017 goal. While I don’t feel like I could complete a full half marathon, I think I could do reasonably well in a 5k. Baby steps…

Read 20 Books

In 2017, I read 14 books. I enjoy reading. But I don’t do it as often as I want to.

To help accomplish this, I have purchased a new Kindle Paperwhite. Why the Paperwhite? Because it’s only a reading device. I won’t get Facebook or Twitter notifications. It’s just for reading, it’ll keep me focused. It’s also easy enough to carry with me. Ok, so why not the Oasis? Because the Oasis was over $100 more and if I decide that I hate this device, I won’t feel so bad. And if I love the Kindle Paperwhite, I can always upgrade to the Oasis when the next revision comes out.

I’ve also started (re)subscribing to Audible. I love taking walks (sometimes 2-3 times a day) and why not listen to a great book while out for a walk? I used to be a huge audiobook listener. Time to get back into things.

More Blog Posts

I like writing. I’m not very good at it. But I want to get better. I think the best way to do this is to read and write more.

Last year I had a goal of writing more technical blog posts. This year it’s more of anything goes. I would still like about five technical blog posts, but if I limit myself to those, I’ll never write anything.

I’m hoping to write a new blog post every two weeks. This is the first of those posts. I hope a post every two weeks is a reasonable amount. I just hope I don’t post stupid posts just to say I made it.

Present Something (again)

This one is just like last year. I hate presenting things. I need to force myself to do it. I think this has been a goal for myself for the last few years.

The only way to get better at it is to do it. I would really like to present at a conference sometime, but again… Baby steps…

Wish Me Luck

I hope to reach all of my goals. But I guess only time will tell. Wish me luck.

MacBook Pro

Over the Summer I bought a new Mac. This is the first new Mac I’ve bought since 2010. I was overdue.

I bought a 13” MacBook Pro with Touch Bar and Touch ID. I wanted more memory than what came stock and it wasn’t available in store when I ordered it. I had to wait three weeks for the laptop to be built and shipped.

Prior to buying this laptop, I waited for a new laptop for a few years. I was going to get one when the retina displays came out, but held back. Then I was going to get one last Fall when the Touch Bar models came out. But I waited again. When they announced the latest model (with Kaby Lake), I decided it was time.

For more than a year now prior to getting this new MacBook Pro, I had been using an iPad Pro (9.7”) as my primary device. It was perfect for everything except doing iOS development.

My previous laptops have been a bit of an overkill. I always went with the 15” model, fully maxed out. I had even used my last laptop to play (or try) games on. It had a 512MB video card in it (which was a lot at the time). But it turns out that my PC desktop is perfect for games like that.

My old laptop is still alive and kicking. My wife has been using it for over a year now. In about 2012, I had replaced the slow spinner drive with an SSD. It was like getting a whole new laptop.

So far I have been really happy with the new laptop. Previously, I have always had 15” laptops. The smaller screen and form factor is nice and fits on my lap when programming in the living room. I love the color (space gray) of the laptop. I’m not 100% sold on USB-C for power (MagSafe was awesome), but I’m getting used to it.

I am a little worried about the keyboard though. There have been a number of reports about how bad the keyboards are (and having them fixed because of dust). I did buy the extended Apple Care warranty, so I hope that covers this nonsense. But if this ever comes up, I’ll deal with it.

Like I’ve said, so far I’ve been really happy with things. All in all, I’m glad that I waited. I’m not sure I’ll wait 7 years for the next laptop, but we’ll see.

Video Games and Gaming

Photo by Ugur Akdemir

I’ve been playing video games for a long time. I can still remember when we got a Nintendo Entertainment System (NES). My brothers and I played Super Mario Brothers and The Legend of Zelda on it for hours.

Since then, I’ve turned into a fancy adult. Or at least I tell myself that. We’ve usually had all of the gaming systems in the house. But lately, my gaming habits have been changing a bit. Instead of sitting at a console or computer for a bit every day, I play a lot on my phone or iPad Pro.

I would love to spend more time playing console and PC games. But I’ll usually take what I can get.

I spend most of my time playing one of two games. I either play Hearthstone or Star Wars: Galaxy of Heroes. Lately, I’ve also been playing a little World of Warcraft (again) here and there, but I usually play a little bit every year.


Hearthstone is a great game. I started playing shortly after the game launched. What is it? It’s a Trading Card Game (like Magic the Gathering and others). You collect cards and build decks to use against other players.

The game came out in April 2014. Originally, I had played a few times here and there, but never really got into it. My oldest was playing it much more than I was and got me into it around September of 2015. After then, I’ve been playing much more.

I used to play it quite a bit when I worked in Philadelphia and had to commute in every day. I had also written multiple blog posts about Hearthstone in general and beating the various adventures on hardcore. I still play this game quite a bit. But I don’t play it as much as I did when commuting into the city every day. Lately, I’ve been playing just enough to get the monthly card back rewards.

I preferred the adventures to playing against other people. I’ve always preferred solo adventures to multiplayer. Earlier this year, the Hearthstone team announced that they wouldn’t be doing strict adventures anymore. Instead, they would be integrated into the card expansions. This bums me out a bit, but at least there will be some sort of adventures to come. The latest expansion ( Knights of the Frozen Throne ) has an adventure component, but I haven’t done it yet. When I do, I’ll probably post the decks I used to get through the adventure.

If you haven’t tried this game out, give it a shot.

Star Wars Galaxy of Heroes

Galaxy of Heroes is something that I got into just before a surgery in late 2015. I started playing a few days before I went into the hospital and have played just about every day since. It’s a game where you collect Star Wars characters and send them into battle against other characters.

This game came out in November of 2015 and I must have started playing it a few days after release. But since then I’ve been playing it every day.

Since the game originally came out, they’ve added quite a bit to the game. Guilds, raids and plenty of new content. It’s actually a deeper game than it first appears. There’s quite a bit of strategy in the teams you form to battle against other teams. I didn’t realize that for a long time, but since I have, I’ve been doing much better in the game.

I’m in a guild and we play pretty competitively. We’ve managed to do well in the guild areas of the games. Both raids and now Territory Battles. Doing well in the guild has allowed me to collect to level up some of my favorite characters from Star Wars.

My favorite part of the game is collecting characters from the movies and TV shows. I have my favorites.

Recently though, some of the changes in the game feel more like a money grab than anything else. There have been some “panic farms” where you’re forced to quickly level up and gear characters (you don’t typically use) in order to complete events for Legendary characters. I think this is to cater to the “whales” (those who spend a lot of money on the game). I hope they cool it a bit with this, or I may need to take a break from the game.

Don’t get me wrong. I really enjoy the game, even with some of the recent decisions by the game maker. This is another free game if you want to try it out. But beware, they love players who aren’t afraid to put money into the game.


I wish that I had more time to play games. But family (and work) come first. But being able to play these mobile games allows me to get a little bit of a gaming time in here and there.

Data Sync Series - Part 5

This is the fifth blog post in my new blog series on data syncing in an app. Links to all of the posts in the series are at the bottom of this post.

App Update

I’ve pushed up a new revision of ListsApp to GitHub. In this revision, I’ve replaced the in-memory version of the persistence layer with a version that uses Realm.

The app itself hasn’t changed at all. The only thing in the app that has changed is the persistence layer.

I thought about using CocoaPods to do the Realm integration. I’ve used CocoaPods for the last few years. Instead, I went with Carthage. I wanted to try something new and see how Carthage works. So far I am happy with it. The framework compile times are long, but you only do it once per version, which is nice.

One thing of note with my use of Carthage. I only committed the Cartfile and Cartfile.resolved. I did not include the Carthage/Checkouts or Carthage/Build. I’m not quite sure of what the best practice is there. I just decided to go this way. If this is the wrong way of handling the Carthage files, please let me know.

What’s Next?

Ok. Now comes the fun part. It’s time to (finally) start integrating with CloudKit. Finally, I know!

This has kind of been the entire point of this exercise and I’m finally getting to it. This is also the point in my previous data syncing encounters where I decided to work on something else. I really need to power through this. It’ll probably take me longer than I want, but I want to make sure I get it done.


I know I said I would try to speed things up, I’m trying. It’s tough. We have a lot going on.

This update has actually been done for a little while. I have been sitting on it while I decide what I do with my site. The code has been sitting on a branch for over two weeks. I just needed to write this post and move on.

Part 1 | Part 2 | Part 3 | Part 4

Site Update and My Move From Tumblr

Photo by Christopher Burns

It’s been a while since I’ve posted here. I’m sorry about that. I had thought I was going to start getting into a nice cadence for posting content.

Over the past few years, I’ve been using Tumblr as my main blogging platform. I used to really like using Tumblr. Since I started posting on Tumblr a few years ago, not much has changed with the service. The dashboard interface and editor are frustrating to use. I usually spend about 5 minutes searching the site for a feature I want to use.

In the past few years, I’ve also started using Medium. I really like their interface for almost everything. It’s not perfect, but it’s so much better than trying to use Tumblr. Medium also brings me a lot of exposure to my posts that I wouldn’t receive otherwise. I’m also not sure Medium is the appropriate place to post more personal posts like this one.

I had been cross-posting my more technical posts to my personal blog and my Medium site. I think for now I’ll continue to do that.

My Alternative to Tumblr

I’ve been tinkering with several alternatives using Tumblr for the last few weeks. I’ve finally come to the following approach.

I’ve set up a GitHub repo and I am using GitHub Pages to host the pages. It’s an open repository. And I did that on purpose. I don’t really care if you take a look at how I have things set up. Feel free.

GitHub Pages allows you to use custom domains. So I just have my domain (ryan.grier.co) pointing to my GitHub Pages site.

The site is using Jekyll, which is supported by GitHub Pages. The theme I’m using is a modified Lanyon theme. I think this theme the best of the pre-made ones I’ve found, but it’s a little outdated and needed some updates.

Using Jekyll allows me to test the website locally before committing my changes to GitHub and (automatically) deploying them to the site. I can also write all of my blog posts (and pages) in Markdown (using Ulysses).

This setup and process aren’t exactly perfect yet, but I’m working on it.

Added SSL to the Site

One thing I’ve been meaning to do for a while now is to add SSL (HTTPS) to the site. When I originally asked Tumblr Support, they didn’t support SSL with custom domains. They may now, I haven’t looked.

GitHub Pages doesn’t support this out of the box. Instead, you can use Cloudflair to accomplish this. It’s exactly what I did. They have a blog post on how to set this up. They make it super easy to set up and use.


Prior to finding GitHub Pages, I had already started converting my site to use Jekyll. I was going to use that somewhere to host the site. I had imported all of my old Tumblr posts to the new format. Since I had the conversion work taken care of, setting up the GitHub repo and GitHub Pages took about 30 minutes to get up and working.

I am very happy with how this setup is working so far. My opinion may change as I work out the kinks in my posting process.

I hope that this change will get me back to regularly posting content here (and on Medium). I guess only time will tell.