Android, Software Engineering, <?php

The "New Skillsets" Part 10.3.2016

I'm not really sure what's worse, the fact that I haven't posted anything on here in months or I didn't have a .gitignore for this site's github repository. (Or the fact that I didn't even set up any sort of CMS, seriously, structured MySQL db with some fields for entries, blogs aren't rocket science?) The site is also written using Node, and I've been learning PHP for the past month after developing Android apps for a little over a year. So silly! In any case, I wanted this one to be actually useful, and not just a mantra about house parties.

For most of the Android apps that I've worked on, (and especially the ones that I've started from scratch), we stuck with a pretty common thread of libraries to do the stuff that every app should be able to do. Retrofit for REST calls, Dagger for DI, EventBus to listen for app events, RxJava for everything else. Reactive programming is relatively a new concept for me as a developer, and without it I'm not sure how I would have built such a stable, performant, business-ready production application while also slinging Material Design standards supporting a wide range of OSes and devices in such a short amount of time. (Everyone is Agile right?) The concept of an Observable also doesn't stop at just one platform layer, it expands and makes basic networking concepts easier to communicate to other developers on other native platforms, allowing for greater code quality in the long run generating a reusable core platform that is readable for new developers coming onto a relatively new team. Powerful. /rant Of course, Jake Wharton created a RxAndroid library that gives you access to some useful extensions in Android for threading purposes (subscribing vs observing on a worker thread (io) or the UI thread will come in handy, I promise.) In any case, this all may change in the next few months or so depending on when Android will finally fully adopt OpenJDK and Java 1.8. I'll for sure be keeping my eyes on the Jack Compiler page for updates. Last time I checked, there were still some conflicts with annotation processors (such as Parceler) so still some ironing to do.

Android in general has been a blast, especially with updates such as Constraint Layout and Android Studio 2.2 in production, learning Android development is definitely an eye-opener for me. The community is awesome too, I'm a fan of the Android Developers Backstage Podcast (ADB...I just got that.) along with some others that are built by developers for developers. As an Android user since 2.3 Gingerbread, it's definitely cool to be on the other side. Application layer programming is a huge step (up or over?) in my development as a Computer Engineer after spending some time learning scripting techniques in Python and VBA. Working with datasets is still hugely important, I've found that to be true while learning PHP. PHP? Jeez, man, its 2016. You'd be surprised, PHP7 is actually quite powerful and learning a weakly-typed language has its advantages and its usages, like Java has its usages. (and yes, Swift does too.) Plus, Symfony supports its usage.

(Sidenote, Symfony is a very easy to pick up PHP framework if you're looking to wrap your webapp in something that isn't necessarily as front-end heavy like Drupal but you still want some of the powerful features found in the Drupal framework like out-of-the-box databasing and authentication pieces)

The ability for front-end apps to send in an array of json with all of the unknowns that come with developing apps, it makes a lot of sense for PHP to be the go-to language for backend web. PHP is really good at taking in some data, manipulating it with some variable unknowns, successfully return a response (with some exceptions if necessary), then continuing to execute the code that it needs to in order to provide the data that is needed for front-end systems.

Regardless of the language though, Software Development has opened a new chapter in learning for me at all layers. Check out my Github (link also at the bottom of this page) for some of the stuff I'm getting my hands dirty in within software development. Thanks for reading.