Hi. I’m Joe Walnes 👋
It’s pronounced wornz.
I make software.
I work on experimental projects at Stripe.
I live in the Santa Cruz Mountains, near Silicon Valley in California.
This website loads pretty fast, wouldn’t you say??
2016
2015
2014
2013
2012
- Blink(1) + Google Latitude = “Where’s Daddy?”
- Resistor color codes – now in DuckDuckGo search results
- resisto.rs
- Hello Pi Crust! Connect things to your Raspberry Pi
- My Workbench
- Updated website for Smoothie Charts
- A 3D WebGL GCode viewer, for understanding 3D printers
2011
- Hamcrest: That one weird method
- MSP430 + ShiftBrite
- A Simple Good Looking Context Menu, for jQuery
- A slide-show in 2 lines of JavaScript
2010
2009
2007
2006
2005
2004
- XStream: how to serialize objects to non XML formats
- Looking back at the SiteMesh HTML parser
- Unit Testing Asynchronous Code
- Announcing XStream: Java to XML serialization, and back again.
- OT2004: Mock Objects: Driving Top-Down Development
- How to do Dynamic Proxies in C#
- Inversion of Control and Dependency Injector Pattern
2003
- New Book: Java Open Source Programming
- Tutorial: Using mock objects to drive top-down development
- Design by contract: testing implementations of interfaces
- Maintainability patterns
- Agiledox
- Blogging software
- Google dependence
- Beyond test coverage
- Learning new programming languages
2002
- Blocks (closures) in Java and C#
- Aspect oriented programming in .NET
- NBML: Not Bunk Markup Language
- The Red-Hat Green-Hat game
- Announcing NMock: A .NET mock objects framework
- Extreme Lego Workshop
- CVS tools
- QDox vs XJavaDoc
- Announcing QDox: A fast Java and JavaDoc Parser
- ROI on ORMs
- Mutant Jesters: Test mutation testing
- It’s not too late to add tests
- UI patterns for the web
- Joined ThoughtWorks
- Lexers and Parsers
- First web-log post
- Thoughts on .NET
2001
- Introducing Atlassian: Supporting your world
- Fix that IE6 flash
- Orion Server: Creating custom user authentication
- Orion Server: Configuring Apache Cocoon