Software development
I have developed backends and tools with Go, Python, Rust, and TypeScript, and web, desktop, and mobile applications with Flutter, React, and Vue. In a team, I can contribute to requirements, technical design, implementation, testing, and deployment, connecting interfaces, services, and data processing into working features. Each project has different needs; I choose tools around those needs and refine the implementation through use.
Technical details
- Business data and form state
- In the Echo demo workbench, I connected profiles, four record types and a timeline, implementing form validation, query filters and follow-up dates. Generated suggestions support recorded outcomes, completed follow-ups and reopened records, covering state changes from data entry through follow-up.
- Content identity and multiple sources
- In the Cairn development preview, I separated content identity from source paths, allowing one content item to reference multiple sources. Documents, photos and music reuse query, selection, tagging and favorites logic, with linked detail views and a music queue.
- Range selection, batch changes and revision checks
- For Cairn’s range selection and batch tagging, mutations include the workspace, target objects and client-expected revision. When a write has an uncertain outcome, the client reads the actual state before proceeding and checks that the visible selection matches the mutation.
- File staging, ZIP export and integrity checks
- In Cairn’s file workflow, I separated staging from confirmed writes and implemented original-file export as ZIP tasks with progress and cancellation. Export checks each file’s length and hash and connects task state to the resulting files.
- React / Vue
- TypeScript
- Go · Python / FastAPI
- SQLite / FTS5
- SSE / WebSocket
- Shared Rust core and cross-platform bridges
- In a collaboration on a file-processing product, I connected a shared Rust core to Flutter, Tauri and Web clients, integrating image, document, PDF, data and media conversion. Clients provide the interface, the core encapsulates conversion capabilities, and mobile clients call it through bridge interfaces.
- PDF rendering and platform-specific processing
- Where mobile lacked the desktop PDF rendering dependency, I selected processing paths by platform and requested output. Mobile uses the system PDF renderer, then passes rendered pages to local processing for image output and scanned-document conversion.
- Local OCR and PDF text layers
- I integrated local OCR with searchable-PDF output: the system renders document pages, and the shared core recognizes text and adds a text layer. For scans without embedded text, OCR results feed into the document-output workflow.
- Dependency packaging and engine availability
- I worked on bundling desktop conversion dependencies and integrated availability checks for the mobile media engine and Rust core. Conversion selects paths according to available capabilities; client integration covers dependency presence, engine calls and returned results.
- Android configuration, state differences and log cursors
- In the ModSpec prototype, I connected a desktop configuration tool to an Android agent. Configuration files describe the intended state; pairing precedes configuration delivery and device-state readback. I implemented change previews, intended-versus-actual state checks and log retrieval resumed from the previous read position.
- Rust / FFI
- Flutter
- Tauri / Web
- OCR / PDF
- Android
- Requirements, code review and delivery checks
- I use AI coding tools for research, implementation and testing, while taking responsibility for requirements, architectural choices, code review, debugging and delivery checks. Actual inputs, execution feedback and outputs inform whether I keep a change, adjust it or investigate further.
- Agent-host integration and workflow state
- In a collaboration on a social-media workflow tool, I integrated existing agent-host sessions with source material, search, drafts, review and publication preparation. External tools perform publication; the interface manages content and operation state, separating frontend state management from execution responsibilities.
- Demo resets, synthetic regression and output checks
- I added demo-data reset to Echo for repeatable workflow checks. In the offline video tool, I wrote synthetic-video regression cases and re-decoded output to check redaction regions and frame counts. Checks match each project’s output and retain inputs and results for later inspection.
- Requirements / Design
- Integration
- Code review
- Debugging / Verification