Recently I was working on getting a Circle CI build up and running for an Android project, and ran into a bit of trouble getting it to work with my gradle.properties file. Here’s an overview of the issue I experienced, and how I solved it.
If your app has any secret credentials like API keys or other authentication data, you should never check this information into version control where somebody else can access it. You should instead keep it secret by only referencing it via a local file. In Android development, this is typically stored in a file named gradle.properties, which lives in your ~/.gradle/gradle.properties directory.
Early this year I made my debut on the thoughtbot blog Giant Robots Smashing into Other Robots! For my first post, I chose to write about how Android developers can make their development process more efficient.
I am beyond thrilled to announce that I have been selected for the Denver Business Journal 40 Under 40 for 2016! I’m so honored to be listed along so many phenomenal & brilliant leaders in our community.
As I mentioned in my annual recap post, 2015 was a big year for me! I did lots of stuff that I thought was scary, and it really paid off. 🙂 It was awesome, but I did do **a lot**. One thing I really super don’t want to do is get burned out, so for 2016 my mantra is “Be Intentional.” I want to do awesome things, but I don’t want to go off the deep end and regret it. I want to have a really good reason for each thing I do, and I want to approach each day with meaning, instead of floating through it. Outside of my main mantra, I’ve also chosen a few specific goals for the year:
New International Speaking Engagement
I’d like to visit a new international city via speaking at a technical conference. I love traveling, seeing new places, and meeting new people.
I’m super excited to say that I was invited on Android Dialogs last week to chat with Huyen Tue Dao about Android! She was an excellent host and interviewer, and I had an absolute blast chatting with her. Thanks for having me! 😀
This year I tried more than ever to “do things that scared me,” and boy did it really pay off. I really spread my wings with technical public speaking, and loved every second of it. I had so much fun visiting new cities, sharing my knowledge, and learning from and getting to know brilliant people all over the world.
I’ve also had a lot of fun sharing my knowledge with people all over the world via my blog. Its been really fun to watch my daily visits slowly climb up and up this year. My most popular posts in 2015 were:
This year has been quite a busy one for public speaking, and I closed it out by talking about accessibility at AnDevCon Santa Clara.
I arrived at the conference Tuesday around noon, where I got to attend a lunchtime keynote about Gradle improvements by Hans Dockter. It was a great talk, but since I was eating I couldn’t take notes. 🙁 Luckily, he was giving another Gradle talk later during the conference.
After lunch I jumped into the second half of Karim Yaghmour’s Android Internals day long tutorial session. I recently purchased his book Embedded Android, and have been slowly making my way through it when I get time, so I was *really* excited to sit in his class! I was bummed to miss the first part, but still absorbed so much from the second part. If you get a chance to see him speak, don’t miss it. Not only is he very knowledgable, his content was really well organized and well delivered.
I was super fortunate to speak at Droidcon UK this year in London, and I had an amazing time!
Even though I’ve given the “same” talk on accessibility before, my talk actually changes every time I give it. This is because (1) Android is always changing, and (2) I am always learning new ways to improve accessibility. Before this talk I had some coding work to do, to upgrade my sample app to support Marshmallow. I also decided to pull in the new design compatibility library so I could use the official floating action button (FAB) and remove the 3rd party library I had previously been using. It is really important to me that my accessibility repo doesn’t get stale, and can always be a resource for the latest and greatest in Android accessibility.
I decided to go the extra mile and add in some information about Snack Bar from the design compat lib to my talk. I figured that it would be a pretty simple addition, but it didn’t work out that way! Apparently, Snack Bar has a few big accessibility issues, as documented in my recent post Accessibility of Material Design. After battling Snack Bar for quite some time, I decided to add to my talk some information about why Snack Bar wasn’t accessible. Unfortunately, this put my talk way over the time limit. Ugh. After all that, I decided to just not add Snack Bar to my talk. I was glad I’d done my homework, though, because I ended up having several great conversations about it with people at the conference.
With the launch of Material Design at I/O 2014, Google made a bold statement that beautiful Android design is here to stay. As a user I was excited to see some beautiful designs come to my platform. As a developer, I was excited to see designers get excited about Android designs independently (vs designing for iOS and ‘porting’ to Android). However, as I began to dig into coding Material, I soon found that not all of the design paradigms are accessible. Here are the top offenders, from least bad to most bad.
Animations are a huge part of Material Design. The design docs break animation into 4 main categories:
Recently I learned about a SUPER awesome little library that you should consider adding into your projects: The Percent Support Library.
This library allows you to specify a percentage value for layout width and height when you are using RelativeLayout or FrameLayout. Yipee!!!! Gone are the days of switching everything over to a LinearLayout when you realize halfway through coding that you really need weights in your layout.
First step is to pull the library into your project. Just add this line in your app level build.gradle:
Now you can use percents in your XML layout files. The library defines a new layout type called PercentRelativeLayout, which inherits from RelativeLayout. Here is a basic example on how to use it: