Platforms and backends
APIs that hold when the timetable changes at four in the morning.
Architecture and implementation for API middleware, microservices and internal developer platforms, using Node.js, TypeScript and Java.
High-performance Node.js and Java backends, developer platforms and edge AI for services that need to stay up.






APIs that hold when the timetable changes at four in the morning.
Architecture and implementation for API middleware, microservices and internal developer platforms, using Node.js, TypeScript and Java.
Inference where the data already is.
I wrote the Node.js bindings for Hailo accelerators and Raspberry Pi camera modules, so the model runs next to the sensor and only the answer travels.
The work that keeps the pager quiet.
Kubernetes, CI/CD and observability for services in production, with profiling and migrations guided by the system’s constraints.
Solution architect and technical team lead. Together with the team, we developed API middleware and high-performance applications in Node.js and Java.
tickets.oebb.at
Westbahn corridorA layered middleware boundary gives API composition and individual microservices distinct responsibilities. Across Node.js and Java, that separation makes the request path easier to reason about, profile and evolve.
A Backstage developer portal that gives teams a place to find services.
mercedes-benz.io
Service dependency graphA Backstage portal makes finding a service part of the developer workflow. Teams can start with a shared catalog, then use a conversation for the questions the catalog cannot answer.
Shared data is only useful when the right dataset can be found across departments.
Federated indexStoring a dataset does not make it useful to another department. A discovery layer has to cross the same boundaries as the people trying to find it; that is the purpose of the federated index.
Detection, depth and grasp run on the robot, with no cloud in the loop. The camera cannot see into the gripper’s working pocket. The final approach has to bridge that gap.
Finish the reach from what was seen.
The jaws work between 14 and 24 cm. The arm uses the previously observed target to finish the approach.
Navigation gets the robot close, but its tolerances are wider than the grasp pocket. Inference also takes time. The robot stops for a fresh observation, makes a small correction, and verifies the target before a short, guarded straight approach.
What that adds up to
Production systems, public code and ideas we build ourselves.
Inside the open source
Camera → on-device inference → a useful decision.
01 / Camera
Keep a JPEG stream for people to see and a smaller pixel stream for the model to process. Each gets the detail it needs.
import { builder } from '@nodify_at/picamera.js';
const camera = builder()
.jpeg(1280, 720)
.rgb(640, 360)
.fps(30)
.build(); Camera demo source02 / Inference
Prepare the image for the loaded model, then run it on the Hailo accelerator. The result comes back to the application as model output.
// Model loaded; image prepared.
// inputName comes from model metadata.
const outputs = await device.infer({
[inputName]: resized
}); Inference demo source03 / Decision
The application turns detections into a useful response. Freshness, confidence and the rules of the task decide what happens next.
when a detection arrives
if the frame is stale
wait for a fresh observation
if the target is uncertain
observe again
otherwise
pass the target to the application An example of the rules around a model.
Illustrative flow · Explore the steps to see where each library fits.
Form handling for Svelte with full type inference.
Apache 2.0 nodify-at/gpt-pull-botThe first review pass a human should not have to do.
MIT nodify-at/hailo.jsHailo AI accelerators, without leaving JavaScript.
C++MIT nodify-at/picamera.jsPi camera modules with hardware acceleration intact.
C++MIT nodify-at/redux-mappersState and dispatch to props, without the boilerplate.
MIT All repositoriesIncluding the experiments that never became libraries.
You work with Hasan Özdemir in Vienna, from software architecture to implementation. Nothing sits between the conversation and the commit.
Studio notes 01
dofbot · Perception & control
The camera loses sight of the target before the gripper can reach it. In dofbot’s taught approach, the target is verified while it is still visible, then the base follows a short, guarded straight path.
The final grasp keeps the small position difference measured at that last check. It adjusts the grasp target; the base’s calibrated path stays the same.
The dofbot projectA handoff should preserve the information the next step still needs.
A cosy iOS game about leading small creatures home through a dark wood. Built here start to finish, which is the only brief where we were also the client.