Senior Software Developer2007 - PRESENTMade to Order Software Corporation
- Handled many Drupal installations and created our own Drupal service.
- Created many PHP modules to extend Drupal 6 and sold them on Made to Software eCommerce website.
- Built a module to prevent the pounding of a website that happened several times. It would keep track of the IP address of clients, and if too many hits were received in a short period of time, it would block further access to the website immediately.
- Implemented a module to accept eCommerce payments with PayJunction. This included REST API commands and required encryption.
- Built websites for customers, including a radio station, a private school, and a digital office system.
Go and C++ Expert2019 - 2023Spotify
Technologies: C++, Go, Java, Kubernetes, Ubuntu
- Worked on an implementation of the MP3 encoder and decoder in a multithreading environment, accelerating such processing by up to 24× on large files (1h long audio). (C/C++) Also worked on the ad server with VAST support in Go.
- Used Jira, Confluence, Coda, Google Docs, GitHub (GHE), Backstage, CircleCI, Kubernetes, New Relic, PagerDuty, and a few others.
- Worked on MP3 code. When the MP3 code above was first published, it helped add several million ad prints per month. A later version, which had the full support of any format as input, again increased the number of ads served by ten of thousands.
CIO2018 - 2018Virtual Entertainment Video Wallpaper
Technologies: OpenGL, UDP, TCP, C++
- Wrote a patent describing the technologies behind the video wallpaper.
- Drew figures for the patent using OpenOffice.
- Tested various settings to handle a high volume of video streaming using TCP and UDP.
- Tested various real-time image manipulations.
- Communicated with other C-suite personnel to ensure the patent filing deadline was met.
Full-stack Developer2016 - 2017ExDox
- Developed full-stack features. The project includes a watchdog, firewall (we automatically block IP addresses we view as dangerous), email management, multi-computer lock, cluster manager, and backup.
- Created a watchdog that verifies that the system is running smoothly and sends emails whenever it detects problems such as the need to upgrade system packages, high memory usage, disk drives being full, a process using 100% of the CPU, etc.
- Built a multi-computer lock that starts once there is a quorum of computers available (if N is the total number of computers, the quorum is N / 2 + 1). With a quorum, it can elect three computers as the computers that will allow locking through the cluster. Then the three computers use a bakery algorithm to handle the locking. This makes it very stable as any one of those three computers can go down (i.e., maintenance requiring a reboot) and the locking mechanism continues to work as expected.
- Developed a snapfirewall that adds (and removes) IP addresses to the iptables under Linux on all the computers of the cluster. So if we detect a client trying to access a page which we do not have (says /phpmyadmin) we immediately broadcast that IP address on our cluster and all computers will have it blocked for a year. Remember that hackers will have all your front-end computer IP addresses so they all need to be protected at once to avoid black-hat hackers from taking over.
- Worked with a CSS3 compiler (csspp) which allows me to compress CSS from C++ using the libcsspp.
Senior Embedded Software Developer2007 - 2016Volcano Corp/Philips (Healthcare Company)
Technologies: Networking, Assembly, OpenGL, C++
- Converted the FFR from the DSP-based version to a full software version accessing an FPGA instead of the DSP. This was with Visual C v6.
- Fixed the library setup so we could use ONE set of flags to compile the entire environment (about 40 projects). This helped streamline the testing processes.
- Integrated the FFR with the IVUS so it can run on the same computer: you can switch between both technologies with a single click.
- Made the IVUS output work on an embedded device (it uses a processor similar to a smartphone computer) using assembly language because the OpenGL driver could not do it fast enough. I used the Intel SIMD 4.2 instruction set to reach the goal.
- Implemented an on-screen keyboard with support for all existing keyboards (as defined in Microsoft Windows.) To the users, it looked like they were receiving key events as if they were using an external keyboard, making it very easy to use.
- Worked on fixing many bugs to improve the stability of the system. This included very difficult-to-find bugs involving multiple threads, hardware, and slightly changing timings between systems (which would happen on upgrades).
- Ported the system from Windows 98 to Windows 7. Rewrote the installer completely, switching the database from Microsoft SQL Server to MySQL.