Summary
Cloud software & infrastructure specialist with 5+ years' experience developing and deploying resilient microservice systems in telecommunications and telehealth. Proficient in server administration, with an extensive programming background and strong collaboration and communication skills.
Skills
- Web development: Javascript, Typescript, HTML/CSS, Node.js
- Scripting: Python, Ruby, Bash
- Systems programming: Go, Java, C/C++, Rust
- Functional programming: Racket, Elm
- Other programming: Swift, Objective-C, Kotlin, C#
- Frameworks: Svelte, Tailwind, SwiftUI, Spring
- UI/UX: Designing and implementing user interfaces
- Databases: PostgreSQL, MongoDB, Supabase, PocketBase, Cloud SQL
- Networking tools: HAProxy, Nginx, Traefik
- Automation tools: Ansible, Jenkins, Gitlab CI/CD
- Infrastructure tools: Docker, Packer, Vagrant, Terraform
- Cloud platforms and providers: Openshift, Openstack, GCP, AWS
- Linux server administration: managed environments with 100+ hosts
- Languages: English, Arabic, Russian
Experience
OSF Management
2023–Present
OSF is an unconventional capital management company that uses superior technology to power crypto hedge funds to exceptional risk adjusted returns.
Backend Developer
Typescript DevelopmentPostscriptions Inc.
2021–2023
Postscriptions [1] is an online pharmacy I first prototyped in 2019. While my co-founder managed the pharmaceutical and regulatory aspects of the startup, I handled the technical requirements. By September of 2021 – with the goal of leading our stack to a comfortable level of maturity and autonomy – we had the vision, timeline and funding for me to work on this project full-time. We currently operate out of a location in Toronto, offering prescription delivery all over the GTA.
Founding Engineer, Chief Technical Officer
Full Stack Development- Took ownership of technical business requirements including planning, implementation and release
- Designed and built iOS client application in Swift/SwiftUI, allowing patients to manage prescriptions and coordinate deliveries
- Captured larger user base by migrating iOS app functionality to cross-platform SvelteKit web application
- Built custom user interface to allow pharmacists to automate domain-specific tasks
- Maintained low operating costs by leveraging credits and free tiers offered by cloud providers
- Reduced development and iteration time by migrating from Java Spring prototype to Golang and Node.js stack
- Supplemented Google Cloud SQL with in-memory cache to reduce unnecessary accesses
- Adapted to technical requirements and limitations relating to data storage laws with creative, cost-effective solutions
- Supported self-hosted tools relating to pharmacy operations, both for our own security practices and for PIPEDA-compliance
- Implemented login methods such as magic links, one-time codes, OAuth and WebAuthn to balance convenience and security
- Developed notification system to reach out to patients over text message and email
- Improved continuity in pharmacist-patient communication by integrating our text message service with our internal chat platform
Bell Canada
2017–2021
After graduating I was recruited by a fairly new Agile team at Bell to help deliver on an ambitious project with a tight, government-mandated deadline. In response to the CRTC's updates to the wireless code of conduct – which all telecommunications companies must follow – my team made sure Bell was the first in the country to meet the new requirements without delay, and we were recognized for our quick execution. All this was achieved while we implemented new features and phased out legacy system components, replacing them with a new microservice architecture supported by the geo-redundant infrastructure my team also built and managed. Later, I transferred to a remote, high-performance team responsible for Bell's rollout of 5G, where I supported our adoption of and migration to Kubernetes.
DevOps Engineer
Infrastructure & Pipeline Automation- Supported a nationwide geo-redundant online charging systems (OCS) capable of withstanding sustained loads of upwards of 800 TPS
- Built and configured our team's first development Docker swarm, along with several staging and production environments
- Independently trialled, introduced and rolled out what would eventually become several of our team's key infrastructure and development tools
- Created and took ownership of highly referenced pages documenting environment details, troubleshooting steps and best practices
- Reduced incidence of errors and sped up deployments by developing multi-stage pipelines which run automated integration tests and deployments
- Performed capacity planning & cost estimation to forecast required hardware budget requirements
- Collaborated with our RDBMS specialists and Mongo's on-site support team to optimize automated geo-redundant MongoDB deployments
Software Developer
Java Spring Development- Implemented, tested and documented new microservice features and APIs within a cross-functional Agile team
- Quickly adapted to code review feedback and contributed to new and existing codebases with minimal guidance
- Wrote and took ownership of deployment scripts for setting up development and production environments
- Improved developer workflow by implementing and distributing scripts to recreate local versions of our production environments
- Presented training sessions on development environments, automation and general productivity enhancements with tools such as tmux and vim
- Sped up delivery iteration cycles and enhanced developer and QA experience by tracing blockers and performance hogs
- Gave presentations to directors and to other teams promoting organization-wide “open-source” development practices to minimize repeated work
University of Toronto
2016–2017
Teaching Assistant
Introduction to Computer ScienceEducation
University of Toronto
2014–2019
Honours Bachelor of Science (HBSc) with Distinction
Computer Science Specialist Program- CSC209 Software Tools and Systems Programming
- CSC236 Introduction to the Theory of Computation
- CSC258 Computer Organization
- CSC263 Data Structures and Analysis
- CSC300 Computers and Society
- CSC301 Introduction to Software Engineering
- CSC302 Engineering Large Software Systems
- CSC309 Programming on the Web
- CSC318 Design of Interactive Computational Media
- CSC324 Programming Languages
- CSC343 Introduction to Databases
- CSC369 Operating Systems
- CSC373 Algorithm Design, Analysis and Complexity
- CSC384 Introduction to Artificial Intelligence
- CSC401 Natural Language Computing
- CSC404 Video Game Design
- CSC418 Computer Graphics (Audited)
- CSC458 Computer Networking Systems
- CSC469 Advanced Operating Systems (Audited)
- CSC488 Compilers and Interpreters
Open Source Projects
Ansible
During my time at Bell, our team made heavy use of automation tools like Red Hat's Ansible. During one of our runs, the tool misbehaved in a consistent way, so I opened an issue [2] outlining the problem. In the meantime, I was able to pinpoint the code responsible for the problem and submit a fix that handled my use-case. Though my particular fix [3] was not merged, my report was acknowledged and a similar fix was employed.
Lockwise
I tracked down a user interface bug in Mozilla's iOS password manager app, Lockwise, and submitted a fix [4] which was merged!
boop [5]
An experimental information capture and recall system I created as an open-source alternative to a commercial product [6] with similar offerings. Annotated text-based submissions (called boops) are transmitted to the system over web interface, SMS, or email (or, just for fun: over DNS) and indexed, providing lightning-fast information storage and retrieval.
Passkey-based authentication
I have taken a keen interest in WebAuthn – the new-ish standard for logins on the web – and have implemented my own passkey authentication [7] in Go and Javascript for various services I manage for friends and family. My current goal is to bring native passkey authentication support to backend frameworks such as PocketBase [8], which currently only supports popular login methods such as email and OAuth.
Lie to Me – A Wikipedia Game [9]
Variation of a game called Balderdash. Players in a lobby are each given a random Wikipedia article to read within some time limit. At the start of each round, an article title is randomly selected from the pool of articles, and the guesser is tasked with testing each player's knowledge on the topic in order to intuit who had originally been assigned that article. Points are awarded to guessers who correctly guess the player to whom the article was assigned, and bonus points to players who manage to convince the guesser that they had read another player's assigned article.
I encountered a number of technical challenges during this project that were new to me, such as implementing Jackbox-style game lobbies [10], which require two-way client/server updates, and which I was able to achieve with the help of WebSockets. Certain limitations also forced me to come up with creative workarounds. For example, the random article selector had initially exhibited noticeable latency when pulling articles from Wikipedia. After trying a number of solutions, I significantly reduced the delay by implementing a reverse-proxy rule on the Nginx server hosting the game.
- [1] https://postscriptions.ca
- [2] https://github.com/ansible/ansible/issues/32906
- [3] https://github.com/ansible/ansible/pull/32909
- [4] https://github.com/mozilla-lockwise/lockwise-ios/pull/1102
- [5] https://github.com/abedef/boop-go
- [6] https://www.tatatap.com
- [7] https://genieindex.ca
- [8] https://pocketbase.io/
- [9] https://github.com/abedef/wikigame
- [10] https://www.jackboxgames.com/how-to-play/