I am an Android developer with practical experience from a bootcamp created in collaboration with Google, a theoretical foundation from a master’s in CS, a logical foundation from a BA in math, plus communication and management skills from nearly a decade of consulting.
I care as much about reducing my colleagues' stress levels as I do about the product we're creating. Whether it's adherence to styleguides and pull request protocols, or just basic time management, my priority is to be dependable and put minds at ease.
This app was a good opportunity to implement some custom Android views for the knobs/dials, use the accelerometer to detect shaking, and use FileProvider to share content to other apps. The user’s etchings are rendered to the screen using Android’s Canvas and SurfaceView APIs.
Features include:
Change colors & line widths
Precision erasing - or shake your phone to erase the whole thing (of course!)
Save your etchings to your gallery
Share your etchings to social media, messaging apps, etc.
For my first game I decided to build a simple game engine from scratch. Every
frame is drawn in 2D using Android’s Canvas and SurfaceView APIs. I managed to
achieve >55 FPS on average on a Nexus 5; newer devices should hit 60 FPS.
Features include:
Two player mode with multi-touch enabled to control both paddles at once
Single player mode against an automated/computer controlled opponent - choose which side you’d like to play on
Bonus balls added after enough volleys
Demo mode is computer vs computer - it’s strangely mezmerizing to watch :)
Don’t Forget is an app that delivers weather, task, and birthday reminders
to users via notifications custom-timed to fit their schedule.
The app is very customizable thanks to a robust set of user-controlled
preferences on the settings screen.
This project was a great opportunity to use some popular third-party
libraries like Retrofit,
Picasso, and
Realm.
It was also a good exercise in multithreaded, asynchronous programming,
using a Sync Adapter to gather data from the
Weather Underground API
and Intent Services to schedule and launch notifications.
Features include:
Weather data is based on device location, or static location if user prefers
Data is gathered via SyncAdapter every 2 hours in the background, and also on app startup if data > 30 minutes old, as well as when user clicks the refresh icon
Weather data is saved to Realm database for offline access and quick loading on app startup
User can easily toggle between Celsius and Fahrenheit; data updates immediately
Tasks can be added with date and one of 4 quick time-of-day options which user can customize to their schedule
User can check off, edit, and delete tasks; all updates are persisted to the database
Birthdays are pulled automatically from the Contacts Provider and can be added/edited right from the app with changes saved to the provider
Notifications are launched at the 4 specified times, providing a weather summary, list of tasks due/overdue, and any birthdays occuring that day
Notifications are scheduled and created in the background with Intent Services and the AlarmManager
Quick Tap was named runner-up in a hackathon sponsored by
General Assembly
and HPE Haven OnDemand.
The app allows users to search for beers by voice, check them in, and order via SMS.
I teamed with 2 other developers and we completed everything within 48 hours to meet the hackathon deadline.
HUD, short for Heads-Up Display, is a quick info card app with news, a
to-do list, and a subway status widget. I built HUD with a team
of three other developers one week as part of General Assembly’s Android
development bootcamp. The news headlines/links are pulled from the
New York Times API.
Set up the SyncAdapter which refreshes web content at regular intervals and on swipe-to-refresh
Saved web data in a SQLite database and used a ContentProvider to notify ContentObservers to refresh the UI
Set up the RecyclerView to display news headlines and link to full article in browser on click
Built the to-do list feature which saves tasks via the ContentProvider then uses the AlarmManger to schedule an IntentService which launches a notification at the date/time selected by the user
Added an MTA status widget in a WebView and modified the back button behavior to work with both the WebView and the Activity
I built this simple email client in just a couple days as a project for
General Assembly’s Android development bootcamp. I used Google’s
Gmail API
as well as their
API Client Library for Java.
Neighborhood Guide is an app that allows users to browse a selection of
local destinations, save their favorites, and add ratings & notes. This
app was built as a project for General Assembly’s Android development bootcamp.
The list of sample locations is stored locally in a SQLite database, along with
user input such as favorite status, rating, and notes. Future versions will
utilize an API such as Google Places
to provide a dynamic list of places based on the device’s location.
Features include:
User can search through the list of places; results are updated on each key press
The multi-criteria search looks for the keyword(s) in place name, location, neighborhood, and category
User can filter results; the funnel icon opens a dialog with a dropdown of place categories
Searches and filters are preserved on device rotation
User can add a place to favorites from the search results or the place detail screen
Place detail screen allows user to add ratings and notes, which are persisted in SQLite
A Shared Element Transition animation is used to provide a smooth transition from the thumbnail in the places list to the header photo on the place detail screen
The favorites screen provides quick access to the user’s favorite places
Skills/languages/tools:
Java, Android SDK, SQLite
Back-End Web Development
Blogging Platform
This project is a blogging platform created for a school assignment.
It was written in Python using the webapp2 framework and Jinja2 templates, and was deployed on Google App Engine.
This project contains the subset of the source code I wrote for a Content Management System (CMS) application created for a school assignment.
It was written in C# using the ASP.NET MVC framework and Razor templating, and the full application was deployed via Microsoft Azure.
Skills/languages/tools:
Python, Google App Engine, C#, .NET, Microsoft Azure
C Programming
Virtual Machine Emulator
This project is a virtual machine emulator which was written in C for a school assignment.
The emulator will interpret and execute assembly code written in a simplified subset of the x86 assembly language.
This project is a virtual machine profiler written in C for a school assignment.
The profiler generates basic block profiles and a control flow graph from a target application’s instruction address stream.
It is intended as a demonstration of a profiling feature that could be added to a hypothetical virtual machine manager.
Natural Language Processing for Album Release Announcements
This project is a Natural Language Processing (NLP) tool created for a school assignment.
The tool automatically extracts key information from press releases announcing the release of musical albums.
It was written in Java using the Jet NLP toolkit.
This is a research project created for a school assignment.
The project explores the optimal topology for interconnection circuitry between cores of a multicore, Network-on-a-Chip (NoC) processor for a given target application being executed on that NoC processor.
The code for the project was written in Python.
I also used the Multi2Sim simulator to test my theoretical hardware topologies.