I’ve felt great these past two months. I’ve learned a lot, shared knowledge, acquired new tools, and built some useful apps that I find myself using every day. Here is my recap of July and August.
Learning to Teach

It’s important to never give your time freely to those that don’t appreciate it, as it is the most valuable currency you have to give. That said, I’ve taken on the responsibility of teaching two different individuals how to program. What am I getting in return? They are teaching me how to teach. I’ve trained a handful of people throughout my professional career(s). Teaching is a skill of its own, and like all endeavors of learning, I feel I still have a ways to go. Being able to convey information clearly to someone who has no clue what you’re talking about is not an easy task. You must not only provide the definition of a topic, but also purpose based in context.
My goal has been to break down the best way to communicate these concepts and frame them in a way that can lead the student to a better visual of the model I’m describing. I found that when I started to learn to code, I first saw the code written in front of me. While I still see it written as lines of code, how it’s structured in my head is much more visual and modular in nature. Having this constructivist approach towards visualizing programming concepts helps immensely with not only understanding the code’s logic, but also in coming to more creative solutions to problems.
The main topic that I’ve been teaching is basic Java, as well as Git, and use of IntelliJ 2017. While the lessons are certainly Java and type based concepts, there is always room for general computer science knowledge as well. I’ve struggled to implement those concepts into teaching the basics, but I recently encountered a video series on Reddit’s /r/learnprogramming subreddit.
Props to the creator of this excellent series
The series takes a foundational ground up approach to teaching, and I’ve been fascinated with the methods and exercises that the creator has come up with so far. It starts at a low level, and they claim when the series is complete, it will have it’s viewers prepared to become professional software developers.
Kind of a Database

I started a small project to quickly solve a problem of convenience at home. I had made some adjustments to my exercise routine, which was proving slow in its results. The issue I found was that my macronutrient and caloric intake were not well balanced for this new routine. To solve this, I did some research and found what others of my build who were working a similar routine were doing for their diets. Once I had the numbers, I made the adjustment, and within days I saw results. The issue now was tracking a maintaining this new diet while still maintaining variety, and with it, my sanity. With some assistance, I had been inputting nutritional data into a Google spreadsheet in order to build a simple calculator for figuring out my daily macro-nutrient intake.
Of course a Google spreadsheet was too low tech, and felt only marginally more convenient than paper. I ended up writing a parser in Google apps script that takes each column of the sheet and converts it into a JSON field. The collection of fields is then converted into a JSON object for every row up to a hardcoded limit of my choosing. I wrote a simple Android application that displayed a simple list of items, and populated it using the URL that ran the app script as a sort of database endpoint. Voila, I had made my first remote database. Which I’m sure I’ll back on fondly in a “what in hell was I thinking” sort of way. I completed my thought by making the Android app’s list of items interactive in a way that allowed the user to generate a sum of nutritional information.

UX version 0.1 → UX concept sketch → UX version 1.0
Enter Firebase
I shared my feat of database hackery with a colleague of mine, who responded with a long stare and a simple “look into Firebase”. I did as he instructed and quickly realized how out of the loop I’ve been with Google products and news (a not-so-secret shame for this Android developer). It took me roughly one evening of work to get my Google sheets database functioning, and it took me about an equal amount of time to learn about Firebase and implement it into my app. The benefits Firebase has over my sheets/parser should be clear to a professional, but here’s the short list:

- Loads faster
- Crash reports
- Live update (this is awesome)
- Offline database (equally awesome)
- Administrative tools
- Integrates with other Firebase features
So for a database noob like myself, this is great. It wasn’t long before I had added user authentication too. Although for the purposes of backup and testing, I created a debug mode that can be used to switch between the two databases, as well as the ability to transfer from one to the other, effectively keeping my sheets database as a “hardcopy” while I play around with and break Firebase freely. The simplicity of this tool has put me back into a mode of feature development. So I’ve taken some time to sit down and plan out where I’d like this to go. I’m still allowing necessity drive what will be added to it next, which has been ongoing as I continue to refine my diet and exercise routine for best results. The research I did last year on cardio workouts for weight loss is well documented, so that will come in handy as I continue to add to my findings with this new approach.

The golden ratio is a common guide, used here to create a “protein” icon
Closing Summary
Between my job, teaching, physical fitness, dietary research, and developing this app, I’ve been quite busy. Each drives the other, in a way, so discipline has come easily. I’m not certain I’ll be returning to streaming anytime soon, and my goal isn’t quite clear yet with where I’d like to take the app. I have some ideas, but thinking too far ahead has gotten me into trouble in the past, so I’m focusing more on the immediate. Aside from my job, my primary goal is fitness, and secondarily this app to augment that experience and make my life easier. The way I’ve always seen games and applications is that if I’m a use case, there are others, and this has been quite useful so far.
