open to new-grad SWE roles starting fall 2026·
buffalo, ny ·
—·—:—:—
ET
·graduating spring 2026
hi, I'm
adni onoh.
Distributed systems engineer and full-stack web developer. Currently interning at a healthtech startup writing software that's helping people track and care for their mental health, building a personal project that combines my web and distributed systems experience (see Distributed Microservices Demo Suite ↓), and interview prepping.
For the last four years I've focused on systems engineering (more recently distributed systems in particular) and web development, alongside a concentration in communication.
In this time, I've gotten much better understanding ideas/tasks from a software perspective enough to implement them, without losing my ability to communicate effectively with non-technical people on the same topics. I like to think of it as being bilingual! (most likely cope because I have been unsuccessful at learning any languages other than English)
// status: open to new-grad SWE roles starting fall 2026
degree
B.A. Computer Science
school
University at Buffalo
graduating
Spring 2026
focus
Systems · Full-stack
ls -la work/ # current role
May 2025 — Present
Software Engineer @ Nara Therapy
healthtech · agile · full-stack
Working at a fast-paced startup with an agile team building features to equip people with continuous mental health tools that help before, during, and after a session.
// note:
the bars below are a simple CSS animation demo, a chance to play with transition, transform, and @keyframes. not a claim of skill level. for an honest proficiency picture, see the tags above.
CSS92%
JavaScript68%
HTML81%
Go40%
Python55%
C82%
tree projects/ # 13 entries · filter by category
filter:
// note: OOP principles and Git/GitHub version control applied across all projects. ● current marks projects I'm actively building right now.
Distributed Microservices Demo Suite
systemswebcurrent
Node.js · Go · Python · C · MongoDB · Docker
Building everything I've worked on into one system: independent services in different languages, talking through a secure gateway, health monitoring for services, and graceful degradation when something fails.
Gateway
Single entry point for incoming requests. Routes traffic to the right service and logs request metadata to MongoDB.
Health Node
Watches every other service and works with the Gateway to keep the system honest about what's online and responsive.
Invoice Service
for creating and formatting invoices from raw data.
Performance Monitor
Tracks and reports system resource usage.
On reliability: The Gateway and Health Node are single points of failure in this basic setup. The real-world fix is redundancy; multiple Gateways with instant failover, and a consensus-based Health Node cluster that votes on a leader (directly applying what I learned from the Raft project). Future work will include timeouts and retries, circuit breakers for repeatedly-failing downstreams, and a database fallback so the Gateway keeps running even when MongoDB is down.
Nara's pitch is continuous mental health care. I haven't worked much on the member-facing side of the product yet, but I've contributed across the parts that make it run: the tools providers use to deliver care, the dashboards org admins use to manage it, and the systems the Nara team uses to keep everything moving.
For providers
I added a way to filter AI-chat sessions by client rating so low-rated interactions are noticed immediately, which lets a provider catch a struggling client before the next session. I also flagged high-risk journal entries alongside other risk indicators, displayed client feedback on the provider detail page, and helped the AI chatbot reference user journals, mood check-ins, and gratitude logs to tailor conversations to the user.
For org admins
Plan selection and a default session count on org creation let the dashboard handle both billing models (bulk and pay-per-invite) without manual input. A required organization-type field captures what kind of org is being onboarded, and minimum seats with an adjustable annual fee set baseline billing automatically. I also gated dashboard metrics behind a user threshold so admins don't see misleading numbers before there's real data, and built an in-context feedback popup that centralizes admin feedback into the main table.
For the Nara team
Contact-date tracking shows when an org first reached out, helping the team prioritize warm leads. Deletion controls let admins clean up duplicate or accidental org entries instead of just rejecting them. And a user-type column on the feedback table tags every submission as coming from a member, org admin, or provider, so feedback can actually be routed and patterned instead of treated as one bucket.
// process: all work follows Figma designs and team QA criteria.
UB CSE Scrum Board
webcurrent
Bug fixes · feature work · internal tooling
Contributing to the University at Buffalo CSE department's in-house scrum board. Fixing live bugs and adding new features for an existing user base, which means reading other people's code & documentation first, working within the existing architecture, and shipping changes carefully.
// private repo
Consensus Server Cluster systems
Go · Raft · RPC
Built a Raft-inspired consensus cluster in Go with full leader election, log replication, and crash-recovery. Tolerant of both clean restarts and partial state loss.
Implemented leader election with election timeouts and term-based voting
Log replication with consistency checks across follower nodes
Recovery logic that handles partial state loss on restart
// private repo
Distributed Hash Table (Kademlia) systems
Go · Kademlia · XOR routing · RPC
Built a DHT using a Kademlia-based routing table with XOR distance metrics and k-buckets for node management.
Designed k-bucket structure for efficient node tracking
Implemented RPC-based node communication for iterative lookups
Content-addressing and fault-tolerant data storage across the network
// private repo
Message Service & Failure Detector systems
Go · TCP sockets · Protobuf · channels
Implemented a multi-process message service, then used that service to build a heartbeat-based failure detector.
TCP sockets for cross-network process communication
Go channels for in-process communication and coordination
Protobuf protocol buffers for data serialization between processes
// private repo
Dynamic Memory Allocator systems
C · mutexes · concurrency
Developed a dynamic, concurrent memory allocator using mutexes and locks to manage allocation, deallocation, and reallocation.
Thread-safe allocation, freeing, and reallocation under contention
Optimized for low fragmentation and reuse of freed blocks
A real-time web app for text and video chat, with security as a first-class concern.
HTML injection prevention, salted password hashing, XSRF & auth tokens
Direct peer-to-peer connections via WebSockets so video chat keeps working through server crashes
Secure file uploads with content sanitization and validation
Comprehensive form validation and error handling
// private repo
Fresumes — Free Resume Platform web
Node · MongoDB · JSX · Figma
For the Experiential Learning & Research class at UB. Worked on code documentation, user stories & acceptance tests, Figma wireframes mostly and a few implementations.
Designed key features: multiple resume uploads with automatic resume display, multi-page resume view, resume filters, ad slots, AI interview interface
Implemented real-time multiple resume uploads and integrated a feedback system with automated email routing
// private repo
Simon's Game fun
HTML · CSS · JavaScript
Repeat the sequence of lights and sounds. Built to practice event-driven JS and DOM manipulation. Try beating my personal record of 21 rounds.
There are many things to consider when creating anything. Below are the practices that shaped the building of this website
// process
Somewhat Agile
I did my best to put the skills I learned to practice without being too stiff considering that this is a solo project
Iterative — I shipped features in small, reviewable slices (content fixes → layout → projects → polish). No one giant rewrite.
Feedback loops — most features went through a "build, review, refine" pass before being kept. I was able to get feedback from some faculty and friends along the way (and some usability testing).
Coursework — used agile/scrum practice from UB's Software Engineering Concepts course
// a11y
Making Accessibility a habit
Informed by UB's Applied Human-Computer Interaction and Interface Design course, I picked a few accessibility metrics and made the website comply with them.
Keyboard navigable — try Tab through the page; every interactive element is reachable and has a visible focus ring. / jumps straight to the command input.
Semantic HTML — proper landmarks (<nav>, <main>, <section>, <footer>), heading hierarchy, ARIA labels on icon-only controls.
Reduced motion — if your OS has "reduce motion" enabled, the section fade-ins, status pulses, and shimmer effects shorten or disable automatically.
Contrast & legibility — both themes meet WCAG AA contrast for body text. Skip link at the top of the DOM for screen-reader users.