synicalsyntax
Back
AttentivU Mobile
Swift, Python, Flask, Socket.IO

AttentivU Mobile is a centralized suite of applications allowing users to monitor their engagement levels (the degree of mental focus on a task) while wearing EEG devices. It consists of three components: AttentivU Data, AttentivU PyWS, and AttentivU Notif.

AttentivU Data is an iOS app interfacing with Bluetooth devices, including the Muse EEG headband. When connected to a device, the app streams values gathered from the device's Bluetooth characteristics (one for each electrode on the headband) in real-time to AttentivU PyWS, a Flask webserver, through the Socket.IO WebSocket engine. AttentivU PyWS then processes the data stream into an EEG signal. The signal is then processed into frequency bands for alpha, beta, and theta waves to calculate the engagement level of the user.

AttentivU Notif is an accompanying iOS app allowing users to monitor data collected from a specific EEG device, allowing them to monitor the engagement level of its user real-time. When a moderate or high levels of engagement is detected for a specific device, AttentivU PyWS sends a push notification to all AttentivU Notif apps subscribed to the device to alert them about the higher level of activity.

AttentivU Mobile has potential applications with individuals afflicted with neurodegenerative diseases such as ALS, which would allow immobile patients to call the attention of their caretakers by triggering a notification on their mobile devices when they raise their mental focus.

Zulip
Python, Django, Tornado

Zulip is a powerful, open source group chat application that combines the immediacy of real-time chat with the productivity benefits of threaded conversations. The main web application server is implemented with Django, and Tornado runs the server-to-client real-time push system; however, many other technologies compose Zulip's architecture. Zulip is used by open source projects, Fortune 500 companies, large standards bodies, and others who need a real-time chat system that allows users to easily process hundreds or thousands of messages a day.

Having been a member of the Zulip core team since 2016, I've opened 242 pull requests and contributed 969 commits towards improving frontend, tooling, accessibility, and user documentation, making me the 8th most prolific contributor across all Zulip repositories. I've also participated in the PyCon 2017 community sprints with Zulip and interned with Kandra Labs (Zulip's parent company) in 2018.

zulipbot
Node.js, Express

zulipbot is an automated bot manages issues and pull requests in GitHub repositories to address workflow limitations faced by open source contributors due to GitHub's binary permissions and notifications systems. It aims to improve project productivity by democraticizing the open source workflow.

For example, it allows anyone to perform issue triage (self-assigning and labeling issues), not just the core contributors trusted with full write access to the repository (which is the only model that GitHub supports). Additionally, zulipbot monitors the activity of issues and pull requests, notifying contributors about new merge conflicts, continuous integration build results, inactivity, and more. Finally, zulipbot is fully configurable and open source, allowing any open source organization to modify and deploy their own instance of zulipbot tailored to their specific needs.

Although I originally developed zulipbot for the Zulip developer community, I've had the pleasure of seeing other organizations like ODK adopt this tool after mentioning the project in various conference talks.