The short answer… everywhere.
It'd feel weird to just start writing a blog without explaining why. I could just go right into a technical topic, but I think it is important to draw some context into why I want to write. Basically, I want to share my knowledge and maybe some thoughts at times.
I have a wide range of interests. I'm not just an Android developer, I'm not just a backend developer. While I've spent the last five years mostly doing just that, there's a lot of depth that comes with learning and creating solutions.
I'll tend to focus a lot on Android because that's a lot of what I do, but there are a lot of different elements that are almost universally applicable to software development and engineering.
When you build an Android application, you're usually not just putting together a simple Activity that says “Hello World” and then moving on with your life. You're trying to solve a problem, whether the solution is novel, or you're doing it just to learn, it doesn't make much of a difference. You have lots of decisions to make going into a project. Many of these decisions you'll make without even knowing you did, maybe because you already have some experience and know how you like to build your projects, maybe because the documentation or tutorial didn't explore other options, or maybe because of project constraints that you have limited to no control over.
I've had plenty of friends over time ask me how to get started writing Android applications, and the longer I've done worked with Android, or any technology, the more I've realized that I gloss over the simple things that have become second nature to me, but at sometime was not. How do you setup a development environment? How do you choose the OS, IDE, text editor, build system, version control, etc.. How do you launch the app in the Play store? How do people find out about the app? How should the app communicate with external resources?
These might seem like simple problems to someone who has a couple of years experience, but to beginners its overwhelming. So these are part of the experiences I want to share, but of course I'll go into some of the more high level experiences, such has hosting an API proxy over AWS, and writing an Android app in Kotlin with Dagger 2, Retrofit 2, Java/AndroidRx, and all the new libraries and tools you hear from /r/androidDev and Jake Wharton.
Like anything and everything, this will be a work in progress. But I have a roadmap of where I'd like to go, so over the next few weeks, be on the lookout for posts on the following topics:
- Writing a blog with Hugo
- Building CoinWatch, an Android app intentionally over-engineered specifically to demonstrate:
- MVVM
- Dagger 2
- Retrofit 2
- Unit/integration testing
- Interacting with a RESTful API
- Kotlin
- Crash reporting (via Crashylitics on Firebase)
- Deploying to the Google Play store
- Micro tutorials:
- Setting up and using GitLab
- Deploying a server using EC2 on AWS
- Using AdWords