RSSAmplifier

Blog

Dark Chestnut

Deploying Common Lisp production software.

darkchestnut.comRSS feed ↗10 posts

Latest posts

Dependency hell revisited, updating my Qlot workflow.

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…

Set up Verbose for multi-threaded standalone applications.

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,…

User feedback during long running external processes.

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…

Process sub-command style command line options with Adopt.

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…

A list of Common Lisp command line argument parsers.

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.…

Database drivers for PostgreSQL and SQLite.

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…

Database migration libraries for PostgreSQL.

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…

Web development starter pack.

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…

Picking the database for a web application.

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…

Testing command line interfaces

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…

Dark Chestnut · RSS Amplifier