Projects
![bluetooth-lightbulb-alert](/_next/image?url=%2Fimages%2Fprojects%2Fbluetooth-lightbulb-alert.jpg&w=1920&q=75)
bluetooth-lightbulb-alert
💡Turn on a lightbulb when your Mac's camera turns on
![links-awakening](/_next/image?url=%2Fimages%2Fprojects%2Flinks-awakening.jpg&w=1920&q=75)
links-awakening
🔗 Recursively check a website for broken links
![device-width-detection](/_next/image?url=https%3A%2F%2Fvia.placeholder.com%2F1280x640%2F787%2FFFF.png%3Ftext%3Ddevice-width-detection&w=1920&q=75)
device-width-detection
📱Generate dynamic SVG based on device srcset
![doorbell](/_next/image?url=%2Fimages%2Fprojects%2Fdoorbell.png&w=1920&q=75)
doorbell
🛎️ Virtual doorbell to notify Amazon Alexa devices
![cancel-workflow-action](/_next/image?url=%2Fimages%2Fprojects%2Fcancel-workflow-action.jpg&w=1920&q=75)
cancel-workflow-action
⏹️ GitHub Action to cancel previous running workflows on push
![dad-jokes](/_next/image?url=%2Fimages%2Fprojects%2Fdad-jokes.png&w=1920&q=75)
dad-jokes
👨🏽🦰Randomly generate dad-style programming jokes
![rediscovering-neverland](/_next/image?url=%2Fimages%2Fprojects%2Frediscovering-neverland.png&w=1920&q=75)
rediscovering-neverland
🧚♂️Slides from my Tech Talk given on January 23, 2020
![styfle.dev](/_next/image?url=%2Fimages%2Fprojects%2Fstyfle.dev.png&w=1920&q=75)
styfle.dev
👨💻 The source code for my website, built with Next.js and hosted on Vercel
![ypha](/_next/image?url=%2Fimages%2Fprojects%2Fypha.png&w=1920&q=75)
ypha
👩🏽⚕️ Your Patient Has Arrived - replace the legacy Call Button in a waiting room
![tls-check](/_next/image?url=%2Fimages%2Fprojects%2Ftls-check.png&w=1920&q=75)
tls-check
✅ Check the TLS protocol support of one or more web servers
![awesome-desktop-js](/_next/image?url=%2Fimages%2Fprojects%2Fawesome-desktop-js.png&w=1920&q=75)
awesome-desktop-js
🖥️ A list of awesome packages and frameworks for implementing javascript applications on the desktop
![packagephobia](/_next/image?url=%2Fimages%2Fprojects%2Fpackagephobia.png&w=1920&q=75)
packagephobia
⚖️ Find the cost of adding a new dependency to your project
![breaking-changes-web](/_next/image?url=%2Fimages%2Fprojects%2Fbreaking-changes-web.png&w=1920&q=75)
breaking-changes-web
💢 A list of breaking changes to the web platform
![awesome-online-ide](/_next/image?url=%2Fimages%2Fprojects%2Fawesome-online-ide.png&w=1920&q=75)
awesome-online-ide
🌩️ A list of awesome online development environments
![geoslack](/_next/image?url=%2Fimages%2Fprojects%2Fgeoslack.png&w=1920&q=75)
geoslack
📍 Geolocate your team in Slack
![dotfiles](/_next/image?url=%2Fimages%2Fprojects%2Fdotfiles.png&w=1920&q=75)
dotfiles
⚫ My .bashrc .vimrc etc
![magnemite](/_next/image?url=%2Fimages%2Fprojects%2Fmagnemite.png&w=1920&q=75)
magnemite
⏺️ Capture repro steps with this screen recorder for websites, powered by Electron
![exeggcute](/_next/image?url=%2Fimages%2Fprojects%2Fexeggcute.png&w=1920&q=75)
exeggcute
🥚 A node.js module to make executing shell cmds a breeze!
![react-server-example-tsx](/_next/image?url=%2Fimages%2Fprojects%2Freact-server-example-tsx.png&w=1920&q=75)
react-server-example-tsx
⚛️ Boilerplate for isomorphic web app with React server-side rendering in TypeScript
![typed-tmpl](/_next/image?url=%2Fimages%2Fprojects%2Ftyped-tmpl.png&w=1920&q=75)
typed-tmpl
🛡A typed, template module using ES6 Tagged Template Strings with TypeScript
![copee](/_next/image?url=%2Fimages%2Fprojects%2Fcopee.png&w=1920&q=75)
copee
📄 Copy text from browser to clipboard...natively! < 1kB
![The-Harvest-Club](/_next/image?url=%2Fimages%2Fprojects%2FThe-Harvest-Club.jpg&w=1920&q=75)
The-Harvest-Club
🍊A student-designed Contact Management System for connecting volunteers and growers
![Basic-Wars](/_next/image?url=%2Fimages%2Fprojects%2FBasic-Wars.png&w=1920&q=75)
Basic-Wars
🎖️A turn-based strategy game written in pure Java