SSH Daemon (NCCU)
Threaded, modular C# service handling ATM and transaction management, secured with SHA-256.

At a glance
- Role
- Software engineer
- Sector
- Financial-services transaction infrastructure
- Constraints
- Always-on service, legacy compatibility, and modular extensibility
- Stack
- C# · SSH · SHA-256 · Multithreading
- Result
- A secure, modular service still handling ATM and transaction management tasks in production, extensible without redeployment.
Context to result
The solution followed the shape of the problem.
A compact project map showing what constrained the work, what changed, and the useful outcome.
Always-on service, legacy compatibility, and modular extensibility
Built a threaded, modular SSH daemon in C# where each transaction/ATM task runs as an independent module, authenticated with SHA-256, so new task types can be added without touching the core service.
A secure, modular service still handling ATM and transaction management tasks in production, extensible without redeployment.
01 · Context
What was getting in the way
The National Cooperative Credit Union needed a secure, always-on service to handle ATM and transaction management tasks independently of the main banking application, with strong authentication and the ability to add new task types without a full redeploy.
02 · Decision
What changed and why
Built a threaded, modular SSH daemon in C# where each transaction/ATM task runs as an independent module, authenticated with SHA-256, so new task types can be added without touching the core service.
03 · Evidence
A secure, modular service still handling ATM and transaction management tasks in production, extensible without redeployment.
Technology used
- C#
- SSH
- SHA-256
- Multithreading
More work

GOCD Budget Web Application
Reduced the ministry budget import, reporting, and printing stage from three days to a few hours.

Fire Alarm Panel Alert Emailer
Serial/COM bridge to a Honeywell fire alarm panel, pushing email and SMS alerts to off-site staff.

Flash → Webcam HTTP Server
Replaced a sunsetting Adobe Flash component invisibly to users — no change to the teller UI.
Your version of the problem
Have a workflow that has outgrown the workaround?
Show me where the process slows, repeats, or loses information. We can shape the right intervention from there.
Describe the workflow