Project samples: Language-server
for an on-line game | Analytical model of
leveraged equity investment | Efficient,
low-impact persistence implementation | PBX and reception management
My company supplies services in these fields:
- Ada User
- I am collecting content for issue 36-3 of Ada User Journal.
- Exhibition at Medical Museion, Copenhagen (August 1st and
- I've made a contribution to an exhibition about using MR scanners for
studying the brain. The exhibition opens August 1st.
- Presentation on
case statements in Ada (video, 12 minutes,
- I've recorded a short presentation on
case statements in
Ada and how the static coverage checking in the compiler helps preventing
- Ada Europe 2015
– 20th International Conference on Reliable Software
Technologies, Madrid (June 22nd to 26th
- This year's Ada Europe conference on reliable software took place in
Madrid. I presented a tutorial on contract-based programming and a talk
on persistent containers.
- Ada DevRoom
at FOSDEM 2015, Bruxelles (January
- I gave a talk on
Contract-based Programming in the Ada DevRoom
- 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.
- 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
The Ada Europe conference on reliable software took place in Paris this
year. I had two items on the programme:
- A tutorial on contract-based programming in Ada 2012.
- A short presentation on privacy leaks in Java classes (abstract).
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.
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
- 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.
tools (November 2013):
- I have extended my LEGO software
toolbox with a filter I use when generating drafts for LEGO mosaics.
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
- 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
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
I gave a presentation titled
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
- Ada Europe 2013 –
18th International Conference on Reliable Software
Technologies, Berlin (June 10th to 14th
- I gave a presentation titled
Alice in Adaland at this
year's Ada Europe conference earlier today.
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
- 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
Faces OpenID implementation to AWS for inclusion in the main
branch of AWS.
See also earlier activities.