Leverage my passion for authentication and software to develop innovative technologies that make life better for humans.
A listing of my work experience, from most recent to least recent:
Learn how, and develop the relevant skills to be a good research scientist. Pitch research ideas, conduct research both independently and as a team, and publish peer-reviewed papers. Communicate clearly via presentations, posters, and technical writing. Critically evaluate academic papers and return uplifting feedback, regardless of acceptance. Support research undergraduates in their research tasks. Teach broadly extemporaneously, and CS 111 in Spring 2023.
Wrote firmware to communicate (over BLE advertising packets) between the motor controller microprocessor (nRF52) and the phone app for IoT smart home blinds. Conducted a security review and fixed design issues in the secure communications protocol, implemented those fixes in the embedded code, and assisted the Android and iOS developers to make the minimal needed changes on their side. Designed a new secure offline pairing system from scratch to meet requirements.
Hired to rewrite PHP accounting and timesheet application in NodeJS without source or spec save some designs. Project changed after a year or so to use deepstream + RethinkDB, then about 8 months later to LoopBack, then was somewhat canceled/shelved. Worked next on a glue app to bind disparate services to replace the PHP code (using express), and also on a UWP (C#/XAML) kiosk display app. When the Kiosk project died, moved to server software for network communications between an app and embedded systems. Continued to maintain the glue app alongside embedded development and after.
Find clients, implement code per requirements, tracking time used and minimizing client costs. Practice new languages, frameworks, and tools.
I worked mostly on the complicated syncing logic behind the Intuiplan system. I worked well with Yii, new to me at the time, and was able to make improvements to the site architecture. Additionally, I taught myself how and implemented many unit tests across the legacy codebase.
I worked on the main Lead Management Platform product in a team of 5 developers for approximately 4 months, then filled a need supporting responseaudit.com for several months, beta testing our internal design framework. I significantly reduced the data entry workload of auditing a company using a bookmarklet, with a significant chunk of domain knowledge to fill in form fields. The bookmarklet was successful enough that the completely automatic web crawler and form filler was shelved, and I was moved over to work with another programmer to pick up our internal management site rewrite. Over 6 months or so we juggled with the code into a fairly readable state, while porting the bulk of the remaining features from the old site over. In the end I was placed in the new R&D department, to help iron out and alpha test the design of another new internal framework.
Maintain zagg.com, access various external APIs (memorably Best Buy's), introduce and maintain new APIs. Wrote and carefully tested a sed script to clean up inconsistent whitespace formatting across our software. Cut one significant file down from 4000 lines to just over 2000 lines of mixed HTML and PHP by careful analysis and understanding, and encapsulating some behavior into a pair of classes.
Architect and implement custom database driven websites for clients. Complete/rescue projects abandoned by outsource programmers. Architect and build new framework for in house social networking product with extensive plugin support, working with a team. Build several new analytics products to sell to customers.
I hate seeing websites go offline - thus I obtained permission to take over Skylords once the university was no longer interested in it. Keep site online, fixing any bugs which develop due to deprecated code. Manage backups, redundancy, hosting costs, etc. Keep in contact with community, implement new features, and improve code structure. In maintenance mode as my focus is elsewhere at present.
Develop and support the SkyLords.com website. Convert a collection of similar flat file databases across 5 CDs into a single relational database.
My research focused on making randomly-generated passwords easier to remember. Courses include Statistical Methods for Research (STAT 511 and 512), Cognitive Psychology (PSYCH 375), a basic Introduction to Teaching course, undergraduate design courses (CS 356 and CS 456), HCI methods (IT&C 555), and readings courses in Security, Usability, and Usable Security.
The Hong Kong University of Science and Technology
Topics covered included IT strategy and management, Project, Workflow, and Innovation Management, Computer and Internet Security, Logistics and Supply Chain management, and Business Strategy.
Elective senior courses in Networking, AI, Machine Learning, Databases, and Digital Signal Processing. Focused on becoming an embedded systems programmer and understanding the foundational underpinnings of modern computer systems and protocols.