These are some of the projects and the accompanying code I have worked on in the past, both professionally and personally.
- MILO: Machine Intelligence Learning Optimizer: Co-found of an automated machine learning platform built during my fellowship at UC Davis allowing researchers to quickly ingest medical data to build appropriate models for a selected target. MILO focuses on binary classification well suited for the medical field (ICU vs no ICU, cancer vs no Cancer, etc). The architecture used was designed to be scalable and therefor uses a Flask API to communicate with message broker to queue long running tasks which are managed by Celery. The front-end is written in Angular, Angular Material and Ionic and provides a meaningful UI for any screen size, including mobile. Models can be published allowing dedicated URL access to use the model for prediction and also API accessibility for the model.
- Mimeo Photos: Principal engineer for the web application and Apple extension providing customers the ability to print their memories to books, cards, calendars, wall art, blankets, etc. This project extended my work on API development as I now develop the API supporting the web app as well as all future client applications. The API is written in TypeScript using Express and produces rich Swagger documentation and uses JWT tokens for authentication. The web application is built using Angular 9 and Ionic 5.
- Mimeo Digital: Hired by Mimeo to build their hybrid application using AngularJS, Ionic v1, and Cordova to package for Android, iOS and Windows 10. The application allowed viewing of various document types (PDF, images, ePub, Articulate, Captivate, etc) including offline support. The application leveraged the application cache and platform specific meta tags to offer a full offline experience prior to PWA entrance. I also rewrote the application using Angular 5 and Ionic v3 with TypeScript adding full PWA support with service workers (with fallback to application cache). During this process I also setup build environments and deployment projects in Octopus.
- Network Interface Plugin for PhoneGap Build: Started using PhoneGap Build for rapid development and ran into an issue grabbing the device IP. I wrote this plugin to request the WiFi IP address and return it. Currently, this plugin is for iOS only however plans are in place to extend it out. Website can be found here
- OpenSprinkler Mobile Controller: A mobile frontend for the OpenSprinkler irrigation device. Designed to allow manual control, program management (view, edit, delete and add), initiate a run-once program, view status, adjust rain delay, change OpenSprinkler settings and view logs. More information about the app (including screenshots) can be found here
Project is on Github
More information can also be found on Ray’s blog posts here and hereUpdate: Application is now being developed and compiled as a native application (iOS, Android and WP). One of the key advantages is automatic OpenSprinkler detection (based on the plugin discussed above). More information can be found on the product website.
- Security Camera Viewer: This was an app designed to support multiple sites, allow both live and recorded viewing, show motion alerts with corresponding video, and display all cameras in one view. The app was designed to work in low bandwidth situations. I was forced to make this app because the bundled Logitech native application would not work under my low bandwidth environment, charged $80/yr for viewing recent clips, and could not show all cameras in one view. More information about the app can be found here and here
Project is on Github
- Home Networking Overhaul: During my break after medical school and before residency I undertook the task of wiring the home for gigabit. I ended up running cat5e all over the house by pulling old phone/coax lines attached to the new cable. I used this backbone to attach wifi extenders all over the home. I also used the network for the security cameras and media extenders. I locally cache media for several XBMC machines. I also use the network for AT&T Microcell extenders. During the rewiring I also redid the phone network by purchasing an ATA (analog telephone adapter) and having my server handle voicemails (sent via email) and routing of calls. This allows me to route international calls to the cheapest provider while still using the same handset.
- Rossie Rotation Advice (Maps): This is a tool designed to extend the features of the Rossie Rotation Advice search built by parsing the text using Yahoo Placemaker for location information. The information is then used to construct a map with markers on each location. This allows users to geographically fence results. Website can be found here
- Rossie Rotation Advice: Despite the playful name this project provides great utility by allowing a user to search the entire Facebook group. This is required due to a limitation in Facebook’s own search. This was built on top of the import function listed below without the documented time limitation (solved the issue and will document how soon).
Website can be found here
Project is also on Github
- Medical and Pathology Lab Website: Decided to redesign the MPL company website. Went with a very simple theme using the company colors and very light jQuery to do some fading between sections. Website can be found here
- Google Latitude Export/Import Tool:
Allows you to migrate all of your valuable location history into your new Google account!
The page is live at http://albahra.com/latitude/ along with additional information and source code.
Project is hosted on Github
- Facebook API:
Worked with FQL and Graph API for Facebook in order to export group posts/comments to a personal SQL database. Code and description can be found at here
- Picasa Name Tag Sync:
I worked on this for a while after many Google searches showed nothing to aid me in my problem. Before Picasa 3.9 name tag syncing would not work. I found a perl script that did sync tags to PWA however I had to modify it and write my own batch script to get it to work as documented here
- Prebot Service:
In high school, I was on many IRC channels and a member of the scene which allowed me access to FTP sites for downloading the latest movies and tv shows. Eventually, I started offering a service to gain more access in the form of a prebot. This was written entirely in TCL using MySQL as the database. The bot would scrape pres from various sites and on a new race announce the age of the release. This would allow various sites to `nuke` a race meaning it’s too old and the owners will not give credit to the racer for it. Later the bot grew a front end using PHP and AJAX while communicating back to the bot via the partyline on TCL (telnet via PHP). This worked surprisingly well. The code can be found here on Github.
- TI-89 Recovery and Xtreme Viewer:
These are tools I wrote during middle school. The first one recovers deleted files useful for teachers who screen calculators. Xtreme Viewer is a file browser with some extra features such as compression. Both can be found here