David Howells Created 2026-10-18 Updated 2026-11-05
David Howells is a software engineer who has contributed technical documentation for the Linux kernel. With Paul E. McKenney, he authored a guide to circular buffers, including the interaction between index arithmetic and synchronization.[ref]
Circular Buffers by David Howells and Paul E. McKenney. Author byline and opening summary
Their example separates the producer's insertion index from the consumer's removal index. With one producer and one consumer, memory barriers publish initialized data before an index advertises it as available. This illustrates why a correct data structure needs both an indexing convention and an account of what concurrent operations can observe.[ref]
Circular Buffers by David Howells and Paul E. McKenney. Using memory barriers with circular buffers, The producer and The Consumer
Martin Fowler (software engineer) Created 2026-10-24 Updated 2026-11-05
A software engineer and author writing about refactoring and software design. His short essay Code Smell by Martin Fowler explains the distinction between noticing a symptom and establishing the design problem behind it.
Martin Fowler speaking in 2015
. Photograph by Webysther Nunes, at the Institute of Mathematics and Statistics of the University of São Paulo. CC BY-SA 4.0. Source. Software engineer Created 2026-10-18 Updated 2026-11-05
A software engineer designs, implements and maintains software systems, applying software engineering methods to requirements, interfaces and long-term change. The work can include selecting representations, writing and reviewing code, developing software testing, diagnosing failures and measuring performance. For example, a storage-format change requires reasoning about compatibility and migration as well as a serializer's local correctness. The role overlaps with programming but often includes responsibility for how components behave together over time.
