I've worked on a variety of projects in the past few years.
Here are a few selected projects (reverse chronological order):
Professor of Agile/Scrum/Kanban (2020)
Blockchain Projects (2018-2019)
- Universal Wallet
Infrastructure (2015-2018) - Telecom POP Single-Step Deployment
- kdnb (Key Deploy NetBox)
- nbssh (NetBox SSH)
- kui - KR User Info Tool
- statsd2prtg (NetBox SSH)
- krld (KnowRoaming Long Distance)
- Dedicated Hardware to Cloud Migration)
Support Tools (2014-2015)
Professor of Agile/Scrum/Kanban (2020)
I taught the Agile/Scrum/Kanban portion of the Software Development Methodologies course part of the Blockchain Development Program at George Brown College.
Visual instruction and hands-on activities resulted in strong participation and high levels of satisfaction from students.
At BlockX Labs, I helped build more than a few different blockchain projects. These are the public-facing ones that I can share.
For all of these projects, I:
- translated client requirements and feature requests to user stories
- facilitated product roadmap creation, release planning, and sprint planning, as well as inter-sprint ceremonies: daily scrums, demos, sprint review, and retrospectives
- improved products by gathering and implementing feedback from development and user communities
- built product websites, FAQ, and documentation
- designed and built interactive product wireframes (for Enzyme and Universal Wallet) so that development teams would get a clear picture of how products should work.
As a de-facto Release Manager on these wallets and without budget for QA, I took it on myself. But I hate doing manual repeated work, so I wrote macros in Keyboard Maestro to fully automate end-to-end testing.
The first wallet we built. It's a browser-based wallet for Aion Network. Available at getaiwa.com
We incorporated a lot of user feedback from the Aion community during the public beta period.
Browser-based wallet for Polkadot Network. With the experience of building AIWA, we were able to build Enzyme much faster. Available at getenzyme.dev
I designed the UI based on standard Material Design to keep it consistent with other Google designs, as well as allow for speedier development.
Universal Wallet (2019)
The third and final wallet I worked on. Refined the vision of what a multi-cryptocurrency wallet should look and feel like, as well as support more complicated use cases.
Genesis Mobile (2018)
iOS and Android mobile front-end for Radar Relay decentralized exchange. Announced at Futurist Conference in August, 2018. genesisexchange.io
Telecom Point-of-Presence Single-Step Deployment (2017)
Telecom infrastructure is complicated, multilayered, and can be difficult to manage. But nowadays, legacy protocols can be encapsulated on top of IP and hardware can be virtualized.
For roaming customers, having a local point-of-presence (PoP) near where they are traveling is crucial for low latency internet access. I created a system to dynamically spin up an entire virtualized PoP with a single command. Because it was based on Hashicorp's Terraform, it was easy to integrate with both AWS and Azure, easy to upgrade nodes, easy to create the separate subnets, and isolate the types of traffic.
The most important thing was that the development environment could match staging and production. It's hard enough integrating with telecom applications without having mismatched environments.
kdnb (Key Deploy NetBox) (2017)
Developed Python-based SSH key management and deployment system, integrated with Netbox (our IPAM), to simplify tracking of developers’ SSH keys.
Developers were assigned a Netbox profile with their SSH keys uploaded, and access privileges controlled within a custom Netbox setting.
When SSH keys needed to be redeployed, a single command would trigger deployment to all systems with the authorized developers automatically added to the correct servers. And multithreaded/multiprocessed execution sped up deployment by 20x, from minutes to just 20 seconds to deploy to 500 VMs.
nbssh (NetBox SSH) (2017)
Developed a tool to speed up SSHing into servers. Rather than looking up a server in the Netbox interface or guessing the name using DNS, developers could search for a substring of the server they wanted to connect to. The matches would be displayed and the developer could then connect directly. Saved dozens of seconds every time developers needed to SSH into something. Github link.
kui - KR User Info Tool (2016)
Detailed description pending.
In order to feed metrics from a proprietary telecom software package into our PRTG monitoring system, I needed to write a collector. That software output its stats using StatsD, so I wrote a listener that collects the data and periodically POSTed it to our PRTG HTTP API. Github.
krld (KnowRoaming Long Distance) Python Rewrite (2017)
Python rewrite of older PHP-based long distance calling server to support our new telecom network infrastructure and APIs, as well as improve performance and ease of maintenance.
Dedicated Hardware to Cloud Migration (2015)
Implemented redundant, load-balanced web infrastructure. Allowed for website to be deployed to a UAT environment as well as trickling production users onto it with zero downtime.
Developed a custom web-based shipping portal for preparing CSV files for our shipping partners, sending out confirmation emails, and allowing support agents to reference shipping information.