Chris Guzman

Developer Advocate @ Nexmo. I blog about Ruby and Android findings

Read this first

How I hacked around the Pocket app to cut down on my browser tabs.

I’ve been an app developer for a bit now and I had never published a side project app on my own. So I figured I’d change that! I wanted to solve a problem I had of opening too many tabs in my browser on my phone. Recently I was on a plane and had over 50 browser tabs that wouldn’t load in airplane mode and was frustrated that I hadn’t remember to save any of them to Pocket. I had a bad habit of opening links to read later but not saving them. How could I make it easier to save links to Pocket?

What I wanted was an app that could behave like a browser. I could open links from the Twitter, Facebook and Hacker News apps and then immediately share to the Pocket app. I disliked the current flow of saving links to Pocket:

  1. Click on a link in the Twitter app
  2. Wait for the Chrome app to pop up
  3. Click the option menu
  4. Hit the share button
  5. Wait for the share sheet to finally finish loading
  6. Look for...

Continue reading →

My favorite collaborative tools for working with a remote team

I’m on a fully remote team and there are many challenges we face on a daily basis. To add to our challenges, our team regularly travels to attend conferences and user groups. Often we’re distributed among various timezones and we don’t always have our laptops in front of us during events.

One the biggest problems I face is that often the person I have a question for isn’t online at the moment. At Nexmo we try to respect our team’s offline hours so just contacting them directly after 6pm their time isn’t a choice. To resolve this we’ve followed a common recommendation for remote teams: document everything.

One of the most difficult issues our team faces is how to collaborate while writing code. I think we miss out on the collaboration opportunities that devs at the same office have. It’s not as easy to get another set of eyes on code you’re trying to write. It can also be difficult to...

Continue reading →

Using Doclava and Gradle to exclude classes from your generated Javadocs

At Nexmo I help out with the Java and Android client libraries. Recently I generated Javadocs for one of our Android client libraries. Usually, Android Studio makes this super easy. It’s as simple as using the “Generate JavaDoc” under the “Tools” menu. But I wouldn’t be writing a blog post if the problem I had to solve was so easy.

Our team wanted to exclude certain classes from the generated java docs. The engineers I was working with had already started that by using the @hide annotation at the top of the classes we wanted excluded. But the problem is when you use Android Studio’s built in Javadoc generation tool, you’ll find that it doesn’t respect @hide! So what to do?

The solution I found is to use Doclava (the original repo can be found on Google Code). Though the repo hasn’t been updated in a while, it still works.

There aren’t a lot of instructions out there how to integrate...

Continue reading →

Dealing with TimeZones in Java without Joda Time

I’ve begun working on a java SDK for nexmo’s API. Thanks to the wonders of timezones I had a crappy time (the 24 hour cold I currently have didn’t help).

Mark works in the UK and I work on East Coast time. Only because of our team’s remote nature did we discover that we had failing tests due to timezones. Cue multiple discussions of “I don’t know what’s wrong, it works on my machine!” After noticing the bug we realized the CI didn’t catch it because Travis CI sets the timezones on its containers to UTC time and the bug only appeared off of UTC time.

We want to minimize dependencies so my colleague Mark and I agreed to not use Joda Time. We were definitely asking for trouble. Here’s what I learned today while debugging our tests:

  • java.util.Date.toString() will always print in your timezone
  • java.util.Calendar.toDate() will always print in your timezone
  • java.util.Date doesn’t have...

Continue reading →