The Shared Journal for Couples
Social media is too public and scrapbooking is too hard. I originally made this app for my girlfriend and I to keep track of our most memorable moments without worrying about how to present it properly for the public eye.
Powered by Google's Cloud Firestore
Real-time account linking and entry updates
Nearly instant image caching and loading for image-heavy feeds
The Digital Jukebox
A digital jukebox for restaurants, coffee shops, or venues of any kind. Owners download the app, link their Spotify account, and allow visitors to vote on what’s next in the music queue from a web app.
Live updates from visitor votes
Interfaces with custom API
Spotify SDK integration for browsing and selecting playlists
Simplifying Scripture Study
Reading Bible commentaries has never been easier. This is a passion project sprouting from my own desire to read biblical literature. Select your book, chapter, and commentary to get started. Coming Summer 2020.
Powered by Firebase Realtime Database
Database cleaned and organized by Node.js helper
Download content into Core Data for offline reading
Who Killed Samarth?
This is the classic party game gone digital. Over 250K players in the popular game of investigation, lying, and killing. Although I joined this project several years after its original release, I was able to contribute to several important features.
Developed by Toast Mobile.
Helped transfer all chat traffic from old API to Firebase
Designed and added custom "roles" overview screen
Contributed to improving the social media sharing experience with images generated by NSImage contexts
Contributed to core gameplay features including shape rotation, movement, snapping, and hints
Challenges included seamlessly transitioning between SKScenes and UIViews
Added "juiciness" in the form of chained SKActions for restarting and completing levels
Share the Story
Learn the Gospel with Friends
Developed the "memorize" view which allows users to adjust what percentage of words are blanked out
Developed algorithm to match blank widths to the width of the replaced word
Refactored the above algorithm until the blanking-out animation was completely fluid
Let's Build Something
I'm interested to hear what you're building. Reach out and we can start planning.
1500 Kirkwood Rd., Austin, TX