About Me
Anyone who knows me would tell you that I have a knack for creative innovation— I've always been driven to build cool stuff with a passion for improving both the process and the result. Past work and interests have exposed me to a broad spectrum of technologies and concepts in the realm of computer science and software development.
When I'm not in front of a computer screen, I like to spend my time doing outdoor activities like running, hiking, swimming, and skateboarding. I also enjoy cooking vegetarian meals, listening to podcasts, and discovering new music.
Skills & Knowledge
Languages and Platforms
I'm most comfortable on Linux/Unix/Darwin environments with LAMP and Javascript-based stacks.
Recent Languages
- Typescript/JavaScript/ECMAScript - Including NodeJS and the latest ECMAScript language features.
- HTML/HTML5 - Including static, dynamic, and web app implementations.
- CSS/CSS4 - Including SASS and LESS.
- C/C++ - Including language bindings, CLI tools, low level hardware.
- PHP - Including everything web, OO, APIs, and the ugly parts.
- BASH - Including automation and scripting.
Past Languages
- Java - Including SWING GUI implementations.
- Perl - Including unwieldy RegExps, web services, and bit of golf.
- ActionScript - Including Flash game implementations.
Concepts
Strongly familiar
- Accessible web development
- Class and prototype inheritance
- Code linting
- Data analytics
- Document-oriented databases
- Flux architecture
- Functional programming
- Git and git-flow
- Graph databases
- HTML DOM
- HTML templating frameworks
- HTTP protocol
- Hierarchical clustering
- Linux server administration
- MVC/MVP frameworks
- Memory management
- Mobile-first web development
- Object-oriented programming
- REST/CRUD APIs
- Regression testing
- Regular expressions
- Relational databases
- Responsive web development
- State management
- Static and dynamically typed languages
- TCP/IP protocol
- Test-driven development
- Unix/linux command line
- Web scraping
Still learning
- Computer vision
- Machine learning
Personal Work
My personal projects include a wide variety of subjects that interest me or problems that I wanted to solve. Much of my personal work surrounds data and data processing. Anything from processing data from my car's on-board computer to scraping and analyzing data online. Here are a few examples of things I've done/do in my spare time.
- automation of computer operations and data processing tasks
- building data-oriented web sites with ad-based monetization strategies
- experiment with the latest web frameworks and database technologies
- mining, processing, and analyzing data using regression techniques and clustering algorithms
- programmed micro-controllers to interface various electronic devices with a computer
- programmed micro-controllers to convert various electronic devices into MIDI instruments
- programmed a micro-controller to read, analyze, and display data from a car's on-board computer
- research core protocols and standards for prolific technologies
- trained myself to type using the Dvorak keyboard layout 🤓
- listen to a lot of technology/security podcasts
Open Source Work
This section documents some of the major open source contributions I've made. For a more in-depth look, please visit my GitHub page.
Professional Work
Cosaic (October 2019 - Present)
Position: Software Engineer
During my time at Cosaic, I worked with the core development team to architect specifications and implement features for the Finsemble desktop application product.
Skills Acquired
- Typescript
- Redux framework
- Flux architecture
- Electron framework
- Storybook UI framework
- Enzyme unit-testing
Skills Refined
- React
- Test-driven development
- Accessible web development practices
- Drafting specificiations
- Project planning and outlining
- Engineering leadership
- Product/feature documentation
- Continuous integration
Vibethink (April 2017 - October 2019)
Position: Full-stack Web Developer
During my time at Vibethink, I worked with a small team to develop websites and web apps using various web technologies, frameworks, and CMS systems.
Skills Acquired
- Laravel (PHP)
- React (JS)
- Vue (JS)
- Craft CMS (PHP)
- ADA-compliant web development practices
- Single sign-on (Shibboleth)
- Selenium/WebDriver browser automation
- Neo4j (graph database)
- Cypher (graph query language)
- Leadership on several projects
Skills Refined
- WordPress development
- Twig templating
- SCSS
- CSS animation
- WebSockets
- SOAP APIs
Commercial Product Integrations
These are some of the commercial products I've built integrations for while working at Vibethink.
- Apple News
- Absorb LMS (learning management software)
- BitBucket
- Braintree (payment processor)
- Emma Email
- Jenkins (CI)
- KeePass (open-source password manager)
- MailChimp Email
- Microsoft Web Services (API endpoint)
- GitHub
- Slack
- Stripe (payment processor)
- Shibboleth (Single sign-on)
- Webflow
- WebKiosk and Piction (Museum Collection Management systems)
- WooCommerce
- WooCommerce Subscriptions
Internal / Development Operations
In a addition to planning and coordinating development strategy for new clients and projects, other day-to-day devops activities include:
- Deploy, secure, and maintain web servers and services
- Code review and training to keep the team up-to-date on development best-practices
- Improve page load speed for client sites
- Ensure code performance and efficiency
Some devops projects that I've implemented:
- Automated Jenkins build/test/deploy setup triggered by version control
- GulpJS tasks for building, debugging, testing, linting code
- Slack bot for internal updates and reminders
- Keeping our software dependencies up to date
- Front-end browser test suites using Selenium/WebDriverIO
- Migrated team to KeePass open-source password management
- PHP error logging to JS console including source code excerpts on staging/local
- Chrome extension to sync session for multi-user access
- Setup private NPM repository to handle version-based package management