Categories
Uncategorized

Adding Error Monitoring to Rails on Heroku with Airbrake

Once you start running web services on a test, staging, or production server, it’s important to keep an eye on errors and exceptions.

Several solutions exist for this – your choices depend on which technology stack you use, and where you host. I prefer to host my Rails applications on Heroku, as it’s very easy to update the servers from my command line. Heroku has add-on partners in its ecosystem, so that you don’t have to set up separate accounts and billing with each and every provider. Looking through the options, I decided to try Airbrake, as they had a reasonable free tier plan I could use for development and testing.

I followed the instructions on Heroku’s DevArticle – the only thing that didn’t work was the next to last step:

rails g airbrake

The Rails generator for Airbrake was supposed to load my project configuration information from Heroku’s config, but that didn’t work.

I had to manually specify my Airbrake Project ID and API Key:

rails g airbrake <project-id> <api-key>

So try that out if you have issues following the install – it was easy enough to figure out, and the instructions on Airbrake’s site also worked for me, by showing the command line arguments.

I’ll follow up on this post once I see more of how it works on Heroku – I may end up sticking with Airbrake, or trying something else out.

Categories
Uncategorized

Useful Skills for Junior iOS Developers

I’ve taught seven years of a mobile apps development class at the University of Texas. Computer science students form teams with journalism students, create a mobile app, publish it on the App Store, and then show it off at the end of the semester to a panel of judges. We tie it all into a sort of agile/scrum format, but that’s hard to really pull off in a class that meets for 75 minutes twice a week.

This has been one of the most rewarding things I’ve done in my career – students come back after graduating and tell myself and Robert Quigley, the other instructor, that this was one of the best classes they took during their college careers. They learn how to work with team members who aren’t like them, whether they are journalism majors or CS majors. They have to ship something – for those of you in the software world, you know that’s a hard skill to learn. And it’s all their work – I debug Swift, answer Firebase questions, give advice, and offer suggestions, but it’s their projects, and they can take it or leave it.

Still, no matter how much I mention these things at the beginning of the semester, I always see at least one or two teams stuck on them! Here’s my list of things that junior iOS developers need to know to ship an app to the App Store:

  • Testing on all iOS phone sizes, including the iPhone SE/iPad – Apple’s reviewers use an iPad, which won’t show as much of the app as the iPhone 11 Pro Max it’s easy to design your app for in Storyboard.
  • Multiple storyboards and storyboard references – Apple’s XML format for storyboards does not work with source control. End of story. Breaking your huge storyboard into one storyboard per view controller isn’t too hard, and helps with source control.
  • Pull requests and git branching – if you don’t have a strategy for working on features in branches and merging to master, it’s going to be really hard to work as a team.
  • Understanding asynchronous calls and closures. Coming from other programming languages or environments, where everything happens in order, moving to a world of networked API calls, blocking on the UI thread, and closures can be difficult. You’ll end up with weird race conditions, code that never executes, and it will all be really hard to debug.
  • Speaking of debugging – the Xcode debugger isn’t that hard to use – breakpoints are straightforward, inspecting local variables is easy unless they are subclasses of subclasses, and there is a command line to interact with your app. Definitely a skill worth learning.
  • Bringing in crash reporting and analytics tools (like Firebase). Once you release an app, even to TestFlight, it’s really useful to find out if users can reach parts of your app, if it crashes when people use it, and what devices your audience uses.

This is my first take on a list – there are lots of other things I could add, but these tend to be what I spend time on in class. That said, I’ve noticed that every year the level of development talent increases – maybe there’s more tutorials and better documentation, or their other classes are teaching them these skills.

Have anything you would add to the list? Let me know at jlinwood (at) gmail.com. Thanks!