Building as inquiry
Development
Small tools built with, and for, teachers.
My book Teachers as AI Developers argues that teachers should be makers of educational AI, not only its consumers. This page is where I try to practise that argument: small, working tools for teaching and assessment, built in the open where possible and always with the teacher’s judgement kept at the centre.
In developmentNursing communication training (nursing2)
An AI virtual patient for nursing students to practise clinical communication.
A bilingual web platform in which nursing students in Hong Kong rehearse patient intake and wound-care conversations before clinical placement. After a short knowledge pretest, students hold a spoken dialogue with a simulated patient who responds in Cantonese, English or Mandarin; recordings are kept for instructors to review and give targeted feedback.
It is designed around a simple belief: practice should be safe to fail in, and the teacher stays in the loop.
In use · open sourceareview
A local-first workstation for reviewing manuscripts, with AI kept on a short leash.
Peer review means handling other people's unpublished work, so this tool keeps manuscripts on the reviewer's own machine. It parses PDFs and reference lists locally, checks cited works against open bibliographic sources (Crossref, OpenAlex, Semantic Scholar), and can use a local language model for drafting support.
Each journal project carries its own AI policy (none, local, or remote), and every AI call is written to an audit log with its exact payload, so the reviewer can always see what was sent where.
In use · open sourcePoster Grading
A local, AI-assisted tool for marking student work, where the instructor decides.
Built for grading academic posters and in-class presentations against a rubric. AI suggests marks and drafts feedback from de-identified content only; every mark and every sentence of feedback is confirmed or edited by the instructor, and both the AI suggestion and the final decision are logged so they can be compared.
Assignments are configuration rather than code: a new rubric is a single YAML file.