Jacob Sparre Andersen Research & Innovation

Project samples: Language-server for an on-line game | Analytical model of leveraged equity investment | Efficient, low-impact persistence implementation | PBX and reception management system

My company supplies services in these fields:

Upcoming activities:

Ada User Journal
I am collecting content for issue 36-1 of Ada User Journal.
Ada DevRoom at FOSDEM 2015, Bruxelles (January 31st 2015):
I will give a talk on Contract-based Programming in the Ada DevRoom at FOSDEM this year.
Ada Europe 2015 – 20th International Conference on Reliable Software Technologies, Madrid (June 22nd to 26th 2015):
This year's Ada Europe conference on reliable software will take place in Madrid. The submission deadline for industrial presentations is on February 8th.

Recent activities:

Persistent Containers
I have done some work on persistent containers for Ada 2012 in connection with a paper I have submitted to the Ada Europe 2015 conference. While I expect to keep the interface to the containers unchanged, I plan to change the implementation drastically.
Finding wave-induced cracks
I've published the availability of my software for finding wave-induced cracks in video inspections of sub-sea structures.
Linux Day 2014 in Cagliari (October 25th 2014)
I gave a talk on Contract-based Programming — A Route to Finding Bugs Earlier at Linux Day in Cagliari.
Ada Europe 2014 – 19th International Conference on Reliable Software Technologies, Paris (June 23rd to 27th 2014):
The Ada Europe conference on reliable software took place in Paris this year. I had two items on the programme:
POSIX file descriptors as Ada streams (March 2014):
A few days ago I wrote a small package wrapping a POSIX file descriptor (as declared in the POSIX.IO package from the POSIX Ada API) as an Ada stream. This allows you to stream Ada objects to/from any kind of file opened with the POSIX Ada API using just the standard stream attributes of Ada.
Some bioinformatics tools (February 2014):
I have collected a few of my bioinformatics tools in a publicly available repositories. So far there is a tool for counting base-pairs in DNA sequence files and one used to study the behaviour of mice through force time-series'.
Ada DevRoom at FOSDEM 2014, Bruxelles (February 1st 2014):
I gave a tutorial on contract-based programming in Ada 2012 in the Ada DevRoom at FOSDEM 2014. The FOSDEM team is busy post-processing video recordings from the conference. I hope to be able to provide a link to a recording of my tutorial soon.
Photo blog software (January 2014):
I have started working on some software to replace my current Apache and Bash based photo blog. The project has been an opportunity to evaluate the GNATColl.SQL.ORM system from AdaCore. Unfortunately it doesn't look like it suits my purposes.
LEGO tools (November 2013):
I have extended my LEGO software toolbox with a filter I use when generating drafts for LEGO mosaics.
Build and test setup (November 2013):
I have refined and published my build and test "framework". The repository represents a generalised version of my (currently) preferred arrangement of the building and testing of an Ada project.
Database interfacing with GNATColl (October 2013):
I am spending some time studying and experimenting with the GNATColl database interfacing facilities. So far one of the public results of this is an example of how (not) to link pairs of rows in a table together. The documentation for the gnatcoll_db2ada tool was not quite obvious (for me).
DANSAS'13 (August 23rd 2013):
I gave a presentation titled Contract-based Programming with Ada 2012 - an Experience Report at this year's Danish Static Analysis Symposium.

The 2012 version of the Ada programming language standard includes checked "contracts" and "aspects" for subprograms and types. Some of these are by definition checked at compile-time, while other checks can be postponed to run-time, if a static analysis is unfeasible (or just not implemented).

At AdaHeads, we are currently developing a hosted telephone reception system, where the core component is written in Ada 2012. We picked Ada 2012 specifically to be able to use the contracts and aspects to increase our confidence that the software is correct.

Our experience so far is that GNAT-GPL-2013 (the only generally available Ada 2012 compiler) only implements static (compile-time) checking of contracts and aspects where it is required by the language standard. This means that for now, the big static analysis benefits of using Ada are related to the basic type system, which also existed in earlier versions of the standard, and the major benefit of switching to Ada 2012 at the moment is in the improved run-time checks.

Ada Europe 2013 – 18th International Conference on Reliable Software Technologies, Berlin (June 10th to 14th 2013):
I gave a presentation titled Alice in Adaland at this year's Ada Europe conference earlier today.
Mathematics and Statistics Library (May 24th 2013):
Extended my mathematics and statistics library with an (old) least squares fit implementation from my still unpublished Ada source text collection.
Open Source Days 2013, Copenhagen (March 9th and 10th 2013):
I gave a talk on Parallel Programming Patterns at the conference Open Source Days in Copenhagen.
Published a (partial) UDP-based client/server implementation of the game Tron (March 8th 2013):
As it seemed like there aren't many examples of Ada programs using UDP, I have published an old toy example using UDP to exchange game state between players and game-master in the game Tron.
OpenID client for the Ada Web Server library (AWS) (March 2013):
My AdaHeads colleague Thomas Løcke and I are preparing my port of the Ada Server Faces OpenID implementation to AWS for inclusion in the main branch of AWS.

See also earlier activities.

Curriculum vitaePublication listProductsScienceRSS feeds

Jacob Sparre Andersen Research & Innovation • Jægerparken 5 • 2970 Hørsholm • Danmark