Latest Articles
Wooden Toy Tug Boats
» Woodworking Projects

wooden toy tug boat

Read More »
Anarchist's Tool Chest
» Woodworking Projects

Christopher Schwarz's Anarchist Tool Chest

Read More »
Cherry Shaker Bed
» Woodworking Projects

cherry queen-sized shaker bed

Read More »
Homemade Wooden Scow
» Woodworking Projects
homemade scow

My son and I built a wooden boat based on plans from The American Boy’s Handy Book, which are similar to the instructions in a Scientific American supplement from 1876

Read More »
Coaster Car
» Woodworking Projects

homemade coaster car

Read More »
Workbench 2.0
» Woodworking Hand Tools

good, fast, cheap workbench

Read More »
Galoot Children's Book
» Woodworking

I wrote a children’s book about woodworking with hand tools.

children's book about hand tool woodworking

Read More »
Using MyBatis to query a large table
» Coding

I was querying a Postgres table with about 4 million rows and writing some of the fields to a CSV. I knew loading the rows into RAM was unacceptable, so I used the MyBatis class ResultHandler to process the records. The code ran fine locally, but in production we were having memory usage issues.

Read More »
Retrieving the SOAPAction in a CXF Provider
» Coding

I was writing a WSDL-first SOAP 1.1 service (server) using Apache CXF. I needed to directly access the XML DOM of the SOAP Header and Body, so I did not want to use the standard JAXB data binding. My solution was to implement a Provider using message mode. However, retrieving the SOAPAction inside the Provider’s invoke(SOAPMessage msg) method was not intuitive to me. The WSDL for this service was produced by a standards body, so I tried to avoid modify it. Each operation in the WSDL specified a soapAction, therefore I assumed I needed the value of the SOAPAction HTTP header to process the message.

Read More »
Permission to ports 80 & 443 with authbind
» Coding

I prefer to not run web applications as root. authbind allows you to run the application as a user other than root, but bind to ports 80 and 443.

Read More »