Draconian Overlord

Oppressing software entropy

Now Organized!

I've written a lot of posts over the years, so organized them by category.

You can also see the full list.

Testing

I'm a big fan of testing, and spend a lot of time thinking about and optimzing the readability and maintability of test suites.
28 Nov 2017 Using Given/When/Then For Tests
30 Sep 2017 Dealing with Selenium API Gotchas
23 Aug 2017 The Futility of Cross-System Integration Testing
26 Jun 2017 The Curse of Webapps Being Visual for TDD
07 Jan 2017 Obsessively Simple Test Values
29 Nov 2015 The Holy Grail of Database Testing
25 May 2014 The Pain of Small Methods
12 Apr 2013 East-Oriented Programming
26 Dec 2012 High Level Assertions
15 Dec 2012 Good Test, Bad Test
23 Jul 2012 Faking at the Right Level

Language Musings

As most programmers, I have obsessed about programming languages over the years, particularly pining for the syntax and productivity of dynamic languages, but with the safety blanket of a static compiler.
28 Jan 2014 Can Java Be Good Enough?
08 Mar 2013 Stay in the Language
17 Apr 2012 Continually Improving Browser Technology
17 Jan 2010 Caller-Side Structural Typing
12 May 2009 Dynamic Keywords
06 Feb 2009 Boojay is Promising

GWT/Tessell

At Bizo, I wrote front-end code, and pre-TypeScript (~2010) so we used GWT. GWT could be a frustrating experience, so I also wrote a framework, Tessell, to make our lives easier.
22 Feb 2014 What I Would Remove from GWT--Basically Everything
30 Aug 2012 Tessell Gets Member Changed Events
23 Jun 2012 CSS Quirk, Collapsing Margins
16 Jun 2012 ErraiUI Initial Impression
10 Dec 2011 todomvc in Tessell
14 Oct 2011 Sane AJAX Testing in Selenium
03 Oct 2011 A GWT Developer's Reaction to Dart
23 Nov 2010 GWT Handler Registrations
30 Aug 2010 Doubting GMail-style Loading Indicators
13 Aug 2010 Collecting User Actions with GWT
07 Jul 2010 GWT Seamless Deployments
28 Jun 2010 gwt-mpv-apt 1.1
07 Apr 2010 GWT View Generation
31 Mar 2010 GWT MVP Tables

Joist

Joist is a Java ORM I wrote in ~2007 that uses code generation to get Rails-ish productivity (no getter, setter, annotation, etc. boilerplate) and avoid Hibernate (on 500+ table enterprise projects, the Hibernate startup time was too slow for TDD).
02 Nov 2012 Joist Execute Class
24 Jun 2012 Joist Snapshots, A 2nd-Level Cache Alternative
29 Mar 2012 Joist Builder Defaults
21 Mar 2012 Joist, the Java ORM for Me
22 Aug 2010 Joist Tip, Fast Database Resets
15 Aug 2010 Joist vs. Hibernate SQL
16 Jul 2010 Joist/ORM Prefetching
14 Jul 2009 Validation with Objects Instead Of Annotations

TypeScript

Lately I've been hacking on TypeScript and enjoy it; I could see it becoming my favorite language.
28 Mar 2018 Stubs in TypeScript using Mapped Types
20 Mar 2018 Variations on a State Machine
16 Mar 2018 Are Classes and Prototypes that Different?

Scala

We wrote a lot of Scala at Bizo. The syntax is great, the compile times are not.
29 Dec 2014 Trait Rules of Thumb
29 Dec 2014 Spark Size Tracking
12 Feb 2014 Spark Report Patterns
22 Jan 2013 What Makes Spark Exciting
29 Dec 2012 Spark Test
14 Dec 2012 Scala Implicit Conversion with Tuples
04 Oct 2011 Why No One Uses Scala's Structural Typing
10 Mar 2010 Lift Templating s/is/was a Joke
10 Sep 2009 Running ScalaTest Spec Tests from Eclipse
13 Jul 2009 Scala Per-Instance Singletons

Java

I've done a ton of Java, for better or worse. I like the fast/rock solid tooling, which pays off for "in-the-large" programming, but not the boilerpate, which sucks for "in-the-small" programming. I also hate how slow it innovates compared to C# and TypeScript.
27 Nov 2015 Using Byteman To Debug Logging
07 Oct 2014 Moving to Gradle
03 Oct 2014 jOOQ Went Commercial
01 Apr 2014 JDK 1.8/1.7 Compatibility Gotcha
29 Aug 2012 Optional Folders in Eclipse
22 Jun 2012 How to Sanely Use Ivy's Artifact Tags
28 Feb 2011 Preferred Build Setup
18 Jul 2010 Publishing to Maven Repos with Ivy
21 Jul 2009 Bindgen 2.0 Released
29 Apr 2009 The IBM JDK is Awesome
23 Apr 2009 Ivy is Useful
16 Feb 2009 Grails Stacktraces
18 Jan 2009 JavaFX Decompiled
10 Jan 2009 War-less Development with Jetty

Productivity

I like moving fast, so am always collecting shell, vi, etc. tips.
03 Mar 2017 Writing Emails Asking for Help
04 Feb 2017 Gmail Filter Tips
16 Sep 2016 The One True Way Of Indentation
09 Aug 2015 MoreUnit Supports Custom Languages
26 May 2014 From xmonad to i3 on Ubuntu 14.04
03 Feb 2014 Copy & Extend, A Great Way To Learn
07 Sep 2013 If you cherry pick, your branch model is wrong
01 Dec 2012 One Click VNC
14 Sep 2012 Screencasts in Linux
24 Mar 2012 Private Static Factory Method Chord
21 Apr 2011 Modern Code Generation Talk
21 Aug 2010 git workshop
05 Mar 2010 Moving an existing git repo into svn
04 Mar 2010 git config
13 Dec 2009 Sprunge And Dropbox
23 Aug 2009 Port 80 to Port 8080
19 Feb 2009 Old School Bell Trick

Todo

I need to find a better spot for these.
15 Jul 2012 Politely Refactoring Code