Check out Cast Control Desktop đź“ş beta

Portfolio

R&D Analyzer Logo
R&D Analyzer Logo

Images: 1

R&D Analyzer

As a remote full-stack engineer, I developed web applications for a startup in the financial space.

Highlights include building an admin interface that allows the business to manage their clients, a WebSockets-based interface that updates changes made by clients in real-time as remote representatives walk them through the onboarding process, and a cryptographically secure password-less authentication feature that allows logins via magic links.

Collaborated with technical and non-technical partners in order to plan, develop, and modify new and existing features.

Ghostwritten article on Python's relative growth in industry.
Ghostwritten article on Python's relative growth in industry.

Images: 1 2

Technical Writing

Wrote documentation, tutorials and articles on software development as a technical writer.

Topics range from computer science concepts to software engineering and Linux system administration.

You can read a few of my articles here [1], here [2], here [3], and on my blog and notes.

Screenshot of this site in 2020

Images: 1

Blog & Portfolio

A static site built with Jekyll, and developed on Docker. Pages are automatically generated from Markdown, Liquid templates and YAML data files. A CD pipeline is set up between GitHub and Cloudflare to deploy changes as they’re pushed. The site itself uses native lazy-loading to load front end assets.

Cloudflare handles caching, certificates, DNS and some routing. Forms are handled by serverless Cloudflare Functions and Cloudflare D1.

Premium Calculation and Fee Table
Premium Calculation and Fee Table

Images: 1 2 3

Premium Calculator

Built a premium calculator with JavaScript ES6+ and React for a title agency.

Tweets Over Time
A line graph displaying the number of tweets containing a viral phrase over time.

Images: 1

Data Mining & Visualization

Analyzed over 300,000 posts and comments to visualize the spread of viral news content on social media networks.

Fixed, ported and customized Python 2 libraries to Python 3.

Drop Down Menu
Screencast of the menu plug-in running on a client's site.

Images: 1

CMS Plugin

Wrote a front end library that generates menus dynamically based on content retrieved from a CMS REST API.

Application Menu
Main menu of the Android application.

Images: 1 2 3

Android Application

Built an Android application to notify teachers about potential leads on 3rd party job aggregators.

Job View
Job confirmation page with map option

Images: 1 2

Web Application

A web application that will notify teachers about potential leads on 3rd party job aggregators. Back end integrated with Google Cloud Messaging to send push updates to users.

Images: 1

Data Mining

Collected and analyzed dating profiles for university research projects.

Projects

Plasma Desktop's Media Player widget displaying information supplied by cast_control.
Plasma Desktop's Media Player widget displaying information supplied by cast_control.

Images: 1

Chromecast Desktop Integration

Cast Control is a daemon that allows you to control your Chromecast from your computer using your favorite media controller of choice.

Play, pause, skip, fast-forward, rewind, seek and control the volume of remote Chromecasts from your desktop.

An MPRIS interface on Plasma Desktop.
An MPRIS interface on Plasma Desktop.

Images: 1

Desktop Integration Framework

mpris_server is a framework for integrating MPRIS support into applications and media players. MPRIS is the standard media player interface used by desktop environments on Linux and *BSD, and this library allows developers to publish information to that interface via D-Bus.

cast_control uses this library to control Chromecasts from the Linux desktop.

CampFS Icon
CampFS Icon

Images: 1 2

CampFS

A cross-platform media utility that allows users to explore, stream and download music from Bandcamp through a virtual file-system on their desktop.

Listen to music and discover new artists using the file browser, or other file manipulation utilities. Easily save streams and download high quality music releases instantly.

MusicFS on macOS
MusicFS on macOS

Images: 1 2

MusicFS

MusicFS is an app that allows users to browse play, and download their Google Music collection easily from their desktop.

Use any application to stream and download music from Google Music, because your music library will appear as files on your desktop.

DupeBot's Homepage
Screenshot of Reverse Image Search Engine

Images: 1

Reverse Search and Image Similarity Search Engine

DupeBot Reverse Search is a reverse image search and image similarity search engine, that indexes 400,000+ images, videos and Reddit submissions. It enables users to use a source image to quickly and accurately search for similar and derivative images. The image similarity search algorithm is optimized to search for similar images using a source image in O(log n) time.

Brightness daemon

Images: 1

brightness

Brightness is a daemon that dims Mac displays using facial recognition.

Before dimming or disabling the screen, quickly check to see if there is a human in front of it. If there is, don’t turn off the screen. If there isn’t, turn it off.

I reverse engineered undocumented macOS APIs while building this daemon.

DupeBot's Avatar
Screenshot of DupeBot's Reddit avatar

Images: 1 2

Duplicate Content Bot

DupeBot uses computer vision to determine if an image submitted to Reddit is a repost, even if the image was modified.

This is the companion to a reverse image search engine built to detect similar and derivative images.

I built a binary classifier for “cursed image” memes using PyTorch and this bot.

Images: 1

screenshot

Automate screenshots from the macOS command-line.

Screenshot is a utility that enhances the built-in macOS screencapture command. This utility allows the user to capture images of specific windows by supplying an expression that matches the application name or window title. I use this to programmatically generate screenshots from the command-line.

Images: 1

save_skype

Recover chats and logs from Skype, even if they were deleted.

This is a digital forensics utility that will recover deleted data from Skype’s metadata. Chats and logs output in a human-readable format.

Images: 1

HtmlWrapper

HtmlWrapper is a small and fast drop-in replacement for BeautifulSoup4. It can be 10x to 100x faster than BeautifulSoup4 itself.

HtmlWrapper translates a subset of the BeautifulSoup4 API into XPath selectors, then uses a much faster lxml-based back end to parse HTML.

I use this when I need an order-of-magnitude faster HTML parsing in a project that is web-scraping heavy, by simply dropping HtmlWrapper in.

Contributions

Project Page
Project's GitHub page

Images: 1

Node.js Application

Added several features to a Node.js application that talks to Chromecasts and updates D-Bus with playback information.

This was an influence for the creation of mpris_server, which is a library meant to integrate any media player with D-Bus, and Cast Control which integrates Chromecasts with the Linux desktop.

Plug-in Screenshot
Search pane of plug-in displaying results for an artist query.

Images: 1

Mobile Application Plugin

Created a search plug-in for Transdrone, a BitTorrent application for Android.

This plug-in allows users to search private BitTorrent trackers, displays available content and lets users download it.

Separator line art