Projects

Sunobi

In 2022, I joined the Sunobi team as a back-end developer. However, I quickly started working on the Unity client. Sunobi was an exhilarating place to work, with demanding requirements that were frequently changing as I was writing code. It required the ability to learn quickly, solve complex problems quickly and respond quickly when plans changed.

My Role

Part of a small team of developers

What I did

  • Implemented complex user interfaces in Unity with eye-catching graphs, animations and transitions
  • Created and adapted MySQL and SQL Server database tables as needed
  • Wrote clean, readable C# server code to support the Unity client

What I learned

  • Unity app development – building interactive UIs and animations
  • Protocol buffers and gRPC – implementing efficient client–server communication
  • React – experimenting with modern front-end workflows

Enerflo

In 2020, Enerflo's founder reached out to me. The solar market in the U.S. was exploding, Enerflo was growing rapidly and its users needed integrations between the Enerflo app and existing CRM software and door knocking apps. I took the challenge.

My Role

One-person integrations department, member of the Laravel team

What I did

  • Met with clients to discuss their needs and define integration specs
  • Wrote client-specific code in Laravel to support integrations
  • Built integrations with a wide variety of apps, including Quickbase, Salesforce, Zoho, HubSpot, SalesRabbit, Spotio, utilizing webhooks, complex Zapier workflows and Google Apps Script
  • Maintained existing integrations as setups changed and needs developed
  • Contributed to the Laravel app, navigating highly complex code characteristic of a quickly growing company

What I learned

  • Laravel development
  • Blade syntax
  • Querying a database using Eloquent
  • Interacting with APIs using cURL

Rex

In 2018, I purchased Rex (now OpinionPod), a reputation management application. The software was written in C# using the APS.NET MVC framework. It was backed by a SQL Server database and ran on Azure.

My Role

Owner-operator, sole developer

What I did

  • Made significant changes to the database and existing codebase to increase performance and security and fix functionality that was initially broken
  • Started a WordPress blog
  • Added multilingual support and launched a version in French for the European market
  • Added an API
  • Built a Zapier app from scratch
  • Extended the existing Twilio integration to receive and forward text message replies
  • Added the ability for users to embed online reviews on their own websites as a list or as a widget at the bottom of the screen
  • Migrated the application to .NET Core and moved it from Azure to AWS to save on hosting

What I learned

  • C#, ASP.NET MVC
  • Entity Framework
  • Writing complex Linq queries
  • Asynchronous programming in C# using the async/await pattern
  • Razor syntax
  • SQL Server and how it differs from MySQL
  • Azure app and database hosting
  • Zapier app development

Hercules

In 2013 I started development of Hercules, a translation project management system for small to medium-sized translation agencies.

My Role

Owner-operator, sole developer

What I did

  • Built a complete web application using PHP, HTML, CSS and JavaScript/jQuery
  • Followed best practices for preventing SQL injection and cross-site scripting
  • Implemented a versioning system to facilitate testing and minimize downtime
  • Designed and implemented a MySQL database schema from scratch
  • Optimized complex SQL queries for speed
  • Set up and managed EC2 Linux instances on AWS
  • Created web portals for project managers, clients and freelance translators with login/session management
  • Added multilingual support for the client portal and client-facing emails
  • Built messaging capability using in-app message storage and external emails
  • Implemented FTP file storage/exchange capability using FTP
  • Set up an ownCloud server and added the option to use ownCloud instead of FTP, allowing users to sync files to their computers
  • Added multi-currency support with live exchange rates
  • Built integrations with QuickBooks and other accounting software

What I learned

  • Writing PHP, HTML, CSS, JavaScript/jQuery, MySQL
  • Setting up and configuring Apache
  • Linux server management
  • AWS/EC2
  • Writing and optimizing complex SQL queries
  • Consuming APIs using JSON and SOAP, basic authentication and OAuth
  • Using crontab to automate recurring operations

Small Random Projects

Trados Studio Resource Converter

GitHub

In a previous life, I worked as a freelance translator. Translation agencies typically send a translation memory along with the files to be translated. Many translation agencies favored the translation tool Trados Studio, and distributed translation memories in the proprietary .sdltm format. I resisted using Trados Studio because it was both expensive and unpleasant to work with, opting instead for memoQ. The problem was that at the time, memoQ could not import .sdltm files. To solve this problem, I wrote a file conversion utility in Java. A .sdltm file is really a SQLite database, so I could extract the translation units and convert them to the standard, XML-based .tmx format, which is universally supported.

Later, I added the ability to convert Trados Studio termbases, again to a universal format.

I made my converter available for free on my website. It helped a lot of translators, as it was downloaded over 1000 times.

Converter

Reverse Dictionaries

Just for fun.