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

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.

Wishing…

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.

Slowpoke

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.

Conclusion

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.

Data Sync Series - Part 4

This is the fourth 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.

Where Have I Been?

I know it’s been a while since I’ve posted anything or done any work on this series. Life has gotten in the way. This Summer has been a pretty rough ride for my family. I thought that I would have this series finished by now. But family is more important than any blog series that I could work on.

Sorry for the delay. I should be able to get back on track now

App Update

I’ve pushed up the initial version of ListsApp to GitHub. It’s a very very bare bones iOS app. It was built with various versions of the Xcode 9 beta and Swift 4.

The app has a series of lists. Each list contains items. You can add/delete lists and items. Very simple, I know. It’s supposed to be simple(ish). I don’t want to complexities of an app to get in the way of the syncing mechanism. But I also wanted the app to be a bit more than something I can store in something like iCloud’s NSUbiquitousKeyValueStore.

The data within the app is all stored in memory, so nothing is persisted. When you restart the app, the sample data reloads. There is also no syncing mechanism in place. Baby steps. I wanted to get the bones of the app in place. Now I can start with the next steps.

What’s Next?

The next step is for me to remove the in-memory data source and replace it with an actual persistence layer. I think I’m going to move forward with Realm for my persistence layer.

I also need to clean up the code a bit. I worked on this code in a very haphazard fashion. I worked on it when I could this Summer. 30 minutes here and there. This means that I could have missed something or committed something that was meant to be temporary (or sloppy).

At some point in this project, I want to add unit testing. I used to be a real proponent of unit testing (back in my enterprise Java days). Since I’ve moved to iOS, Objective-C and Swift I’ve really gotten bad about unit testing. I need to learn how to do this properly.

Realm? Why?

We use Realm at my work for our persistence layer. I’ve used Core Data in the past, but I want to (and should) get more experience with Realm.

I could start down this path and change my mind. Or I could get adventurous and develop multiple persistence layers that you can pick. But if it took me this long to get where I am, I wouldn’t get my hopes up. That’s just a long way of saying I may change my mind.

My Hope

I really hope this next phase takes less time than it did to develop the base app. I feel pretty bad about this series taking this long. But sometimes life just gets in the way.

Part 1 | Part 2 | Part 3