Suppressing An Appender For A Log4J Logger

Occasionally, a third-party library will balk the log-or-throw exception handling convention. Most recently, I came across this issue with Hibernate's Work API: an org.hibernate.exception.ConstraintViolationException was being logged and thrown when a unique key constraint was violated. To be exact, Hibernate's JDBCExceptionHelper logged exceptions through JDBCExceptionReporter.

A Case Of Leaky State

Leaky state is among the most common artifacts I find in existing applications. It's a symptom of poor encapsulation and/or abstraction and typically tends to unmaintainable code. Such symptoms are typically, but by no means exclusively, seen in an anemic domain model. Controlling state by means of encapsulation and abstraction is a decent way of taming coupling and complexity.

Running Firefox As An Isolated Linux User

A few years back, I decided that the risks of running some Internet-connected programs on my workstation containing personal data was a bigger risk than necessary. After discussing this topic with several colleagues, the general consensus was that I'm too paranoid.

Consider that implementation bugs (i.e. software vulnerabilities) and trojans in user-level applications (normally) have access to all data owned by the executing user. To me, running a web browser with the same user that has full access (whether by accident, malice, or design) to my personal information is simply unreasonable.

Unfortunately, information about acheiving this level of isolation was not readily available. This article pieces together the several components required to run Firefox under a completely isolated user. I have adapted this script to work with irssi, Pidgin, and Claws, so the solution is fairly reusable.

An Experiment

This website exists as a personal and professional experiment. I intend to establish the best use for this website, be it professional, personal, both, or neither.

This website is not quite a journal or diary, thus it is not a blog. However, it may be used in a similar fashion. Similarly, this website is not strictly a knowledge repository or persistent clip board; but, it may be used as one. Simply, this website is an experiment.

Indeed, this experiment will conclude. Should this experiment suggest I have found a viable use of this website, the website shall remain in a similar manner. Otherwise, another experiment will begin. In the meantime, I hope you will find something useful.


1 2