Web Development Tools
Bunyan is a NodeJS library that rethinks logging in some really useful ways. I wrote a Java port you can use in your applications.
In particular, with Bunyan, logs are JSON - and Bunyan comes with a great filtering and analysis tool.
The Java port uses some innovative techniques to make logging simple and foolproof - in particular, a use of AutoCloseable to make a logging code simple and...
on Jan 18, 2015
Why you should write small libraries that do one thing well, over on my real blog at timboudreau.com
A response to Eran Hammer's The Fallacy of Tiny Modules.
on Aug 24, 2014
Visual Library is a library in NetBeans, which you can use in standalone Java apps, for doing beautiful, complex, animated layouts. JUNG is a library for exploring graphs of connected data. What if we put those two things together? That's what I did. The result is on GitHub.
Video demo and more info over on my timboudreau.com blog.
on Sep 4, 2013
Have you wanted to do something with asynchronous I/O? I did. After doing some work with Node.js, I wanted to find a way to get some of the goodness of its programming model for Java.
The Acteur project is the result - a framework for building scalable, asynchronous web applications using Netty + Guice - was the result. The programming model is a little unusual - you treat constructors as...
on Apr 7, 2013
My friend Jon writes an interesting blog on the problem of constructors, and how a language might improve on them - and comes to a fairly startling solution.
The major problems with constructors as I see it are
Especially in deep inheritance hierarchies, or when you inherit from a class in a library which could involve incompatibly, it is easy for your object to be called when it is in a not-...
on Mar 31, 2009
I had an interesting thought the other day for a project I'm helping a friend with. Many things we deal with come in key/value pairs (URL parameters for instance). Why not immediately work with objects instead? There's a simple way...
Probably someone is already doing this - there are certainly enough serialization libraries out there. But here's the thought - I was thinking of URL...
on Aug 16, 2008
Here is a simple pattern which you can use to make your
APIs extensible, even by third parties, without sacrificing
your ability to keep backward compatibility.
It is very frequent to create a library which has two
“sides” — an API side and an
SPI side. The API is what applications call
to use the library. The SPI (Service...
on Aug 11, 2008
Where's the state? This is a small but useful question when
deciding how a problem domain gets carved up into objects:
What things have state? What things have values that
can change? When and how can they change? Can the changes be
observed? Who needs to observe changes in state?
These questions make a good start...
on Aug 7, 2008
One thing which I think about often is the design of code,
and APIs. I've been working on
deriving some principles from the things I do intuitively based on
experience. Whether those are useful to anyone else is an open question.
Peer review is the best tool for figuring
out if these...
on Aug 5, 2008