Introduction

Posting this a bit later than usual, but I’ve been busy!

TEALS - Educating high school students in CS

For years I have been trying to find a structured way of giving back to the community in the form of educating youth. Most of these threads ended up running thin, or being profit driven. TEALS ended up being the volunteer organization I was looking for with enough structure, support, and outreach. After going through some basic educator training in the summer, I started helping out with a AP CS A class here in Austin, based around Java. It’s been years since I worked mainly in Java, but teaching it is one way to get requainted with it fast.

The students can be very interested in the details too! I was surprised to forget some details and relearned low level details of how the JVM reuses the same memory for certain things, like string literals. I do hope that early CS education switches towards a less hefty platform like Java. There’s some clear issues with having a good Java developer experience with minimal setup, unlike Python. Maybe someone will make a great Java IDE for Chromebooks and either popular educational laptops.

Salesforce

At my current employer ZeroCater, I took on an auxlixary responsibility of learning Salesforce well. As a company we make use heavily of its out of the box features, in addition to some complex integrations with our Python driven backend. Salesforce as a platform is something that developers tend to shy away from, according to –insert study here–. I’ll admit, from a developer perspective, it is rather difficult to develop for. The experience gets much better with tools like Workbench, and the newer SFDX Toolkit.

The biggest gain I got from immersing myself into Salesforce was a bigger picture. I now know our sales process, leading up into the creation of objects representing actual services, where our custom integrations take over. I am able to empathize with my coworkers who work around inefficiencies within SFDC and give recommendations on how to improve it while keeping in mind the technicalites. I’ve also done a few APEX bug fixes, new complex validation in Visualforce that works in tandem with an improved to our custom integration.

Linux

I decided to switch over to Linux around September of last year. This was a result of many annoyances I had built up over the years over the following problems:

  • I loved the hardware on Macbooks. I bought a Macbook Pro in 2014, and it introduced me to a new world of terminal driven development. But in recent years there’s been many bad design decisions – going 100% USB C, stage-light effect, touchbar, and the notorious butterfly keyboard. I wasn’t willing to pay the Apple Tax for unwanted features and problems.
  • Docker is inefficient on Windows and OS X. The amount of resources and battery drain on Linux is clear as night and day. Let alone there are certain niche problems if you are not running on Linux.
  • I had years of experience developing on both Windows and OS X, but not Linux yet. I’m a sucker for learning, so it’s always intrigued me.

I picked up a Lenovo X1 Carbon (6th Gen) and installed Ubuntu 18.10 on it. I quickly learned that the laptop was not 100% supported by Linux distros yet, and ran into various issues that were quickly being fixed in master branches. Ubuntu started showing its downside; moving slow and steady didn’t win the race for me this time. An old coworker of mine spoke highly of ArchLinux, but I was intimidated. Thankfully, there are graphical installers like Antergos that make the process much easier. Taking advantage of the rolling update philosophy that ArchLinux employs helped me get to near 100% support with all of my laptop’s features (only fingerprint scanner is missing!).

My programming laptop now gets great battery life, performance, and feels great to use! It also feel much better around Linux in general, which I hoping will boost my Devops skill set across the cloud and Docker.

Open Source Contributions

Switching to ArchLinux had me relying on the open-source community to a much greater degree. In turn, this inspired me to get involved with a few small projects, help debug/troubleshoot, and provide solutions.

Google Play Music Segfault

I’ve been a Google Play Music subscriber for a long time (still have the discounted subscription!). While they have a good in-browser player, I’ve always prefered having a desktop music player (I grew up on Winamp!), and the unoffical Google Music Desktop Player has been a common app on my machine since it came out! However, once I tried it during my Linux journey (starting with Ubuntu 18.04), it was crashing. I debugged and ending up coming up with a PR to fix the issue!

Fixing up Pagerbot

We had a “support engineer” rotation at ZeroCater for awhile, so automate some of our pain away from setting up Pagerbot. Unfortunately, the Ruby-based Pagerbot exploded when I deployed it to the latest Heroku Stack in a segfault fashion. After some investigation and debugging, I was able to update Pagerbot to be compatible with the latest stack (Heroku 18)..

The Unholy Alliance, Salesforce Dev In Linux

Salesforce development is one of the most unpopular platforms for developers. In a perceived attempt to combat this, Salesforce recently released a tool called SFDX to improve the developer experience. SFDX, when combined with extensions like ForceCode, allow you to avoid many of the pitfalls of Salesforce development.

I was excited to fix a few APEX based bugs on my employer’s SFDC platform, so I set it up to give it a go! Unfortunately, there was quite a bit of issues with later versions of Linux/GNOME, but by brainstorming in the ArchLinux community, we were able to promote a fix!

NodeJS-based Data Export of Q&A platform.

Answerhub is a platform similar to Stack Overflow. Personally, I find its features to be lacking, and it’s latest version (1.9) at the time did not have a data export. But it did have a REST API. Within a few hours I was able to pull most of ZeroCater’s questions via their REST API. Hilariously, if one question is “bad” or causes an error, it bombs out the whole response. I plan to implement a “safe mode” that uses a page size of 1 and is throttled well for stable downloading of data. [The CLI is functional and currently exports to CSV, you can find the source code here!. I plan to publish on NPM soon.

Guitar

Near the end of 2017 I started taking lessons online from an instructor located in Finland. I had “learned” guitar by self-teaching + a software called Rocksmith, and even dipped my toes into open-source custom song tooling for it. While Rocksmith is pretty amazing and can be accurate and an effective teaching tool, it lacks the ability to judge technique, form, and posture.

Taking lessons for the past year and a half has greatly improved my playing. I found a great instructor who teaches on Skype, all the way from Finland.

In closing

It’s been one of my biggest years for growth across the board. I’m looking forward to what 2019 will bring!