Papers & Presentations
Atoms frequently share what they know in journals, at conferences, and in classrooms.
Presenter First Resources
MVP Graphical User Interface Testing
Open Source
Fair is fair. We use others’ good stuff and contribute our own software tools in return.
Active Projects
Retired Projects
Business Model Canvas Workshop
Routines and Flourishing at Work
Tech Talk for Women in Computing
Job Crafting as an End to the Endless Work-from-Home Debate
Masked Up and Mission Driven: How (And Why) Small Giants Are Returning to the Office
The Atomic Accelerator: Staffing a 100-Year Company
How to Render Twenty Thousand Rows without Crashing Chrome
Writing Code that (Practically) Writes Itself with Typescript
Scaling Your Impact with Shared Ownership
Thinking in SQL: Going beyond “find record 5”
Let's Sort Out Sorting: How to Think About Sorting like a Computer
Amplify Your Culture of Ownership Through Employee Ownership
Mind the Gap: Bringing Design, Management, and Development Practices Together
How to Grow as a Leader
Michigan Celebration of Women in Computing: Panel Discussion
"Tidying Up" Information Architecture
Seeking System Zen with Universal TypeScript
Understanding TypeScript's Structural Type System
The Modern Command-line Tool Stack: Pipenv, Click, and Friends
The Art & Craft of Secrets: Using the Cryptographic Toolbox
Buckets of Testing – working in a multi-project environment
Introduction to Test-Driven Development
Using Higher Order Functions to Build SQL
Security Hygiene for Software Professionals: Lightning Edition
"Ladies First" Women in Tech Conference
How to Make Data Make Sense: Choosing the Right Visualization
The Importance of Diversity in the Technology Industry
When Things Go Wrong: A Toolkit for Handling Harassment
SLICING UP FUN - Testing Out Your Mobile Apps
Command Injection, or How /bin/sh can rm -rf your server
Bringing Functional Concepts to OO Languages
Welcome to the Dark Side: Anticipating Threats with Dark Personas
We’re All Software Companies Now – How Software Can Help Companies Innovate & Serve Markets Better
Atomic's Process and 5 Design Techniques You Can Try Without "Design" Experience
Careers in Software Development
Implementing the Elm Architecture in ClojureScript
Startup Grind Interview with Carl Erickson
Drawing the Performance of your Web App
The Burrows-Wheeler Transform: Better Compression with a Reversible Sort
Craftsmanship as Competitive Advantage
5 Lessons from My First 5 Years in the Industry
"What Is Good Design" A Research-Driven Investigation
Lean IT – Software Development & Deployment (Panel Discussion)
The Intersection of Clients and Design
make and redo for Building and Automation
Configuration Management Testing with Chef
Stage Fright: Don't Be Phased By Compilers
Content Marketing at Atomic Object
Talent in the Tech Industry
The Path to "Software Developer"
Extinguishing the Flame War on Quality and Automated Testing
Introduction to Emmet (Lightning Talk)
Introduction to Machine Learning
Why execution matters for innovation – Integrating software development and Human-Centered Design
Going Mobile: From Idea, to Development, to Final Outcome
Hey, Girl. You know you want to be a software developer.
14 Years of TDD: What We’ve Learned at Atomic Object
Inclusive & Accessible UX Practices – How Low-Fidelity Artifacts Promote Whole-Team Collaboration
The Role of UX and Usability Testing at Atomic Object
Kicking and Screaming: Bringing Agile Practices to the Reluctant
What is Presenter First?
Presenter First (PF) is a technique for organizing source code and development activities to produce fully tested applications from customer stories using Test-Driven Development. Though it can be applied in a variety of settings, it is most often used in GUI applications.
History
The core idea of Presenter First came when Mike Marsiglia and Brian Harleton were working on an application team at X-Rite. The pain they felt on adapting a large GUI application suite to the needs of a major customer drove them to create what later developed into and became known as Presenter First. David Crosby worked with Mike and Brian, wrestled with the problems of triad composition and instantiation, and refined the process and motivations for building Presenter First style. The "Burke Porter Dyno Host project was the first large project done in Presenter First style from inception.
Papers
"BIG, COMPLEX, AND TESTED? JUST SAY 'WHEN'"
Appeared in Better Software, February 2007
Better Software Magazine reprint (PDF)
"PRESENTER FIRST: ORGANIZING COMPLEX GUI APPLICATIONS FOR TEST-DRIVEN DEVELOPMENT"
The definitive technical description of Presenter First from the Agile International Conference, 2006.
Agile 2006 Conference paper (PDF)
Examples
- Simple Java example of Presenter First (PDF) that illustrates the structure of a simple triad; uses jmock and junit for testing.
- C# Presenter First example (ZIP); VS2003 project for a sliding puzzle game
- Objective C/Cocoa Presenter First example (ZIP); Simple contact manager application
- Java Presenter First + Adapter example – Java (ant-only and/or IntelliJ) Swing application that demonstrates the Adapter pattern extension to Presenter First, including how we can use an Adapter to encapsulate the usage of rich GUI library components via their built-in data bindings.
- Source and build files (ZIP)
- Compiled executable jar of the example (JAR) – "java -jar AdapterExample.jar" to run.
- Presenter First in the context of GTK+ and C
- Find the code at pf_gtk on GitHub
- Companion articles describing the project can be found here: original article and updated for 2012
Resources
The original paper on Presenter First (PDF) was not formally published. It describes the core idea and many of the advantages of using this technique.
MVP/Presenter First Video Example by Brian Marick
Video Podcast series with Ron Jacobs of ARCast: Part 1, Part 2, & Part 3
Mocking tools such as NMock, OCMock, JMock, and HardMock are helpful in speeding Presenter First unit testing.
Visual Studio VB macros (TXT) for MVP navigation in C# projects (includes a Test file creator).
Christopher Atkins' approach to PF in ASP.NET: " Presenter First with POA"
Presenter First (MVP) Android Examples – Examples of how to implement the Presenter First pattern in Android based on the code from the book Android Programming: The Big Nerd Ranch Guide (2nd Edition).
Contributed Tools
" A Modeling Tool for the Presenter First Pattern" by Brooke Hamilton of FM Global
"Creating a DSL for Presenter First" – Brooke also provides an interesting write-up on his extension of Presenter First and how to describe the pieces using a succinct DSL