Founder · IAT Software · 2014–Present

I ship complete products — desktop, server, and the space between.

Twelve years owning a research SaaS used at Oxford, Princeton, and high-school psychology labs. Currently rewriting the 600+ class WinForms client into a clean MVVM WPF application on .NET 10.

  • .NET 10 / WPF
  • Java / Spring
  • WebSockets
  • XSLT
  • MVVM
  • AES-GCM
Michael Janda
Michael K. JandaVirginia Beach, VA
Founded IAT Software
2014
Owning the full stack
12 yrs
Peak client memory
1 GB → 55 MB
WPF rewrite in flight
.NET 10

About

I design and ship production-grade software that researchers actually use. For twelve years I have owned the entire lifecycle of IAT Software — a SaaS platform that lets non-engineers create, deploy, and analyze Implicit Association Tests based on Harvard methodology.

I don’t chase frameworks — I ship maintainable, correct software.
More about me

How I build

The WPF rewrite is not a reskin. It is a set of rules the original client taught me the hard way.

Domain objects stay pure

The test model holds data and Guids. It does not touch the file system, the network, or the display. Side effects live in services. That boundary is the rewrite’s north star — learned the hard way from a WinForms client where god objects talked to everything.

Infrastructure is injectable

WebSockets, packaging, image generation, validation, and dialogs are interfaces registered in DI. ViewModels consume contracts, not implementations. MediatR carries transaction events across that boundary so a handler never needs a window.

Geometry is computed, not guessed

Instruction regions, continue strips, and keyed layouts are derived from the interior and key positions. Designers can override; the calculator still owns the defaults. Previews stay locked to the same aspect as the administered test — one math, two surfaces.

Production means the unhappy path

A socket that works once is a demo. Persistent connections, cancellation, exponential backoff, thread-safe send, and transaction completion without tearing down the pipe — that is production. UTF-8 text frames, not binary, because the Java handler is a TextWebSocketHandler.

Read the approach, with source

Toolkit

Languages
C# · Java · JavaScript · SQL · XSLT · C++ · Assembler
Desktop / .NET
WPF · WinForms · MVVM · CommunityToolkit.Mvvm · .NET 10 · DI · MediatR · FluentValidation · OPC Packaging
Backend
Spring · JPA / Hibernate · Message-Driven Beans · WebSockets · XSD / XJC · MySQL · Linux administration
Web
KnockoutJS · React · SCSS · HTML/JS via XSLT
Systems
Multithreading · AES / RSA · Memory optimization · Polymorphism · Meta-programming

Open to the right role

Senior desktop (.NET / WPF), Java/Spring backend, or full-stack ownership of a complex product. Virginia Beach, VA.

michael@iatsoftware.net