Browser Automation with Geb, Spock, and Groovy

22 October 2018

I recently gave a talk and demonstration, Browser Automation with Geb, Spock, and Groovy, at the Capital Area Software Engineers group in Harrisburg, PA. While explaining the whole stack of software, I showed how to:

  • Start a project in Gradle

  • Get the Geb and Webdriver dependencies in place

  • Get started in Spock testing framework

  • Start up a browser for testing

  • Interact with the page content

  • Wait for asynchronous content

  • Abstract away page components into Geb Page classes

The slides and all the code are available in my geb-preso repo. It includes copies of the code I had prepared, the code we wrote live as a group, and my little toy Planning Poker JS app I was testing.


18 September 2018

Months ago, I started setting up LetsEncrypt using certbot on my Debian web server. It hosts multiple virtual hosts, so I setup 2 different sets of certificates: one for and the other for

On Debian, at least when I got started, it was recommernded to have certbot shutdown your apache2 and let it start its own temporary web server to verify the LetsEncrypt setup (--authenticator standalone). The other trick is to register multiple domain names for one certificate by repeating the -d option. I did this with this invocation:

certbot \
    --pre-hook "systemctl stop apache2" \
    --post-hook "systemctl start apache2" \
    --authenticator standalone \
    --installer apache \
    -d \
    -d \

I got it started a couple months ago, but I didn’t know how to setup multiple domain names, so I was always getting errors that this certificate was for a different name: instead of, etc.

That’s all sorted out now, and all my sites should be SSL all the time.

For more information on setup, certbot has a great set of guides based on your OS and web server.

2018-07-24 Podcast List

24 July 2018

Watching for GIMP 2.10.1

13 May 2018

I was seeing the new GIMP 2.10.0 doing bad things with multiple gradients on a transparentl layer, so I logged Bug 795866. They quickly fixed the bug within 48 hours, but now I’m sitting here reloading the GIMP news page to see if they’ve cut the newest release.

Update: GIMP 2.10.2 just hit Debian Unstable!

End of the Make 365

29 April 2018

While I fell behind and caught up a couple times, I caught up one less time, so this project is done.

2018-03-12 Sanding Stick Fix

12 March 2018

The sanding stick needed a little adjustment to be assembled successfully.

2018-03-11 Sanding Stick

11 March 2018

I finally modeled a sanding stick for small sandpaper belts I bought a year ago to kickstart the project.

2018-03-10 Ben on Skates

10 March 2018

Ben on Skates

A post shared by John Flinchbaugh (@johnflinchbaugh) on

2018-03-09 Enfocus for Cheshire Cat

09 March 2018

I added the Enfocus library to my example Cheshire Cat project to handle dynamic markup on the client.

2018-03-08 CLJS HTTP Client in Cheshire

08 March 2018

I added the CLJS HTTP client to my example Cheshire Cat project.

2018-03-07 JS Alert in Cheshire Cat

07 March 2018

I added a JS/Clojurescript alert to my example Cheshire Cat project.

2018-03-06 Ring-JSON in Cheshire Cat

06 March 2018

I switched the cheshire cat project over to use ring-json.

2018-03-05 JSON in Cheshire Cat

05 March 2018

I had the cheshire cat project produce a little JSON.

2018-03-04 Droid Maker Meetup

04 March 2018

Droid Maker Meetup

A post shared by John Flinchbaugh (@johnflinchbaugh) on

2018-03-03 New Feet for the Printer

03 March 2018

2018-03-03 New Feet for the Printer (late)

A post shared by John Flinchbaugh (@johnflinchbaugh) on

2018-03-02 Started Cheshire Cat Project

02 March 2018

I started the cheshire-cat project from Living Clojure.

2018-03-01 Uberjar of Async Tea Party

01 March 2018

I completed the async-tea-party with uberjar support.

2018-02-28 Channels for Async Tea Party

28 February 2018

2018-02-27 Async Tea Party

27 February 2018

I made an initial commit of the async-tea-party project from Living Clojure.

2018-02-26 Serpent Talk from Living Clojure

26 February 2018

I was creating basic Clojure apps with lein, serpent-talk from Living Clojure.

Older posts are available in the archive.