I wrote on this topic before but the landscape has changed a lot since then. Skip to the new Qlot workflow . When you work on projects that become even slightly complex it is a matter of time until you run into problems where the specific version of a particular library becomes important. This happens in most, if not all, programming languages. In the Common Lisp environment Quicklisp has become…
Although Verbose is one of few logging libraries that work with threaded applications (See Comparison of Common Lisp Logging Libraries ), I had some trouble getting it to work in my application. I have a Hunchentoot web application which handles each request in a separate thread that is built as a standalone executable. Getting Verbose to work in Slime was trivial but once I built the standalone,…
Sometimes it may be necessary to execute an external command that takes a long time to complete, long enough that the user needs visual feedback while it is running to show that the process is still alive. UIOP provides fantastic tools for running external commands in a portable manner but it was not obvious to me how to show the external command’s output to the user while it was still busy. I…
How to process sub-command style command line arguments is a question that arises more and more. Many of the basic option handling libraries can not handle this at all, or they make it very difficult to do so. One of the newer libraries in the option processing field is Adopt by Steve Losh. It was not designed to handle sub-commands but it is in fact very capable to do this without having to jump…
I was searching for a command line option parser that can handle git-style sub-commands and found a whole bunch of libraries. It appears as if libraries on this topic proliferate more than usual. I evaluated them only to the point where I could decide to skip it or give it a cursory test. The information I gathered is summarised below. If you only need the usual flag and option processing, i.e.…
Index of picking libraries blog series To interact with a database system from your code requires some database driver library. For most database systems there are multiple driver libraries, most of which are stable and work well. There are also options of multi-system and single-system drivers. The multi-system drivers can interface with multiple database systems, usually MySQL, PostgreSQL and…
Index of picking libraries blog series It may be tempting at the start of a new project to create the first database tables manually, or write SQL scripts that you run manually, especially when you first have to spend a significant amount of time on sifting through all the migration libraries and then some more to get it working properly. Going through this process did slow me down at the start of…
Index of picking libraries blog series A big part of a web development framework’s value is that it pre-selects a set of common libraries. If you use the framework as-is you will have a reasonable setup to build on without having to put any thought into it. More comprehensive frameworks express opinions on many more issues in addition to libraries and they often make it difficult to stray from…
Index of picking libraries blog series Picking a database for your web application can be surprisingly time consuming. There are a variety of databases of various types available and Quicklisp has an interface library for many of them. Unless you need a very specific capability from the database and you are acutely aware of this fact, chances are that a standard relational database will be more…
When you make a standalone application intended as a command line tool you may want integration tests to exercise the application through the normal command line user interface. There are tools that can do this testing on OS executable applications but sometimes it is useful to run these tests as part of the test suite without having to first build a standalone binary. The goal then is to test a…