John Barnes was kind enough to bring us an interesting puzzle again for this year's Ada-Europe conference dinner. The challenge is to write up a 3 digit by 3 digit long product, such that each of the digits 0 .. 9 appears exactly twice. The current edition of the program doesn't print the final result nicely, but it is a pretty simple addition.
It is time to register for the 23rd International Conference on Reliable Software Technologies, Ada-Europe 2018, which will take place in Lisbon in June.
I will give two tutorials in connection with the conference. One on automated testing, and one on writing contracts.
Team Roadrunner (Jacob Sparre Andersen, Allan Ascanius and Per Dalgas Jakobsen) won the prize for best design/effects at this year's edition of DTU Robocup. Roadrunner is a 3D printed, 4-wheel, 4-engine robot car with most of its custom control software written in Ada (there are also a few lines of assembly in the hard real-time camera control).
I gave a course on unit-testing with Ahven in connection with Ada-Europe 2018 in Lisbon in June. Ahven is an Open Source framework for writing unit tests. It is intended to work with any Ada 95 compiler and is regularly tested with several different compilers. The course is focused on testing for projects with less strict testing requirements than DO-178C.
I gave a course on writing contracts in Ada in connection with Ada-Europe 2018 in Lisbon in June. The course is an updated edition of the course Contract-based programming in Ada 2012.
The FOSDEM video team has published a video recording of my presentation Saturday. (Due to a technical glitch, the first couple of seconds of the video are without sound.) The presentation is intended both for software developers, who are considering to try Ada, and for experienced Ada developers, who haven't worked with the newest features for contract-based programming in Ada.
Presentation on how Ada makes it easier to insert assertions in your software. There will live-streaming from the presentation at 14:00 CET 2018-02-03.
The submission deadline for Ada-Europe 2018 in Lisbon has been moved to 5 February. Please submit presentations which deliver value and insight on industrial use of Ada and reliable software technologies in general. Industrial presentations are submitted as one-page extended abstracts. Feel free to contact me, if you have any questions regarding this.
I was in Cagliari for Linux Day 2017. I gave a one-hour crash course on parallel and concurrent programming using Ada for software developers who already know sequential programming. The slides are also available in (a kind of) Italian. Many thanks to GULCh for inviting me to Cagliari.
The Call for presentations for the Ada DevRoom at FOSDEM 2018 is out. Please submit your proposals soon.
It was a pleasure attending AdaCore Tech Days in Paris. I had some good discussions with various AdaCore engineers, and with other AdaCore customers. The only disappointment was that the plans for handling code-generators with
gprbuild don't match the needs of the projects I'm working on at the moment.
I've just gotten word that FOSDEM 2018 will include an Ada DevRoom. The exact programme for the DevRoom will be prepared in the coming weeks.
Next year's Ada-Europe conference on reliable software systems will take place in Lisbon, Portugal. The submission deadline is 22 January 2018.
I gave a presentation at Ada-Europe 2017 – 22nd International Conference on Reliable Software Technologies in Vienna about introducing static analysis to a mature software project. I expect to submit a paper to Ada User Journal on the same topic, but including some of the feedback I got at the conference.
On Wednesday I will give a presentation on introducing static analysis to a mature software project. Mature software projects are likely to contain source text, which violates rules checked by a tool introduced later in the development process. Sometimes this will be because of limitations of the tool. In other cases, it can be regular errors or just bad style compared to the project ambitions. Whatever the reasons, if can be infeasible to resolve all the newly identified issues immediately, so we need a strategy to handle that. My presentation will introduce one such strategy.
It is still possible to register for the conference. Registration just for Wednesday costs 200 EUR.
The submission deadline for Ada-Europe 2017 in Vienna has been moved to 22 January. As industrial chair for the conference, I seek presentations which deliver value and insight on industrial use of Ada and reliable software technologies in general. Industrial presentations are submitted as one-page extended abstracts. Feel free to contact me, if you have any questions regarding this.
A course introducing experienced programmers to
The Ada Way.
I recently gave an interview to the journal of the Danish academics' union about being an academic and running your own company. I don't reveal any big secrets to success, but the photos from the Medical Museion in Copenhagen are nice.
The Ada-Europe 2016 organizers have accepted my tutorial on Ada 2012 contracts in practice as a part of the programme for this year's international conference on reliable software technologies.
The Ada DevRoom at FOSDEM has been a big success. We will need a bigger room next year. The slides from the presentations can be found on the Ada-Belgium website.
The declarations of subprograms in the public part of an Ada package specification can be seen as a declaration of how you are supposed to call the features implemented in the package. So why should I have to write command-line interfaces myself? Why not let a tool translate between the Ada package specification and the command-line interface? [...]
I'm going to present this talk at FOSDEM 2016 (Saturday at 18.00 in AW1.124).
Slides and examples for the presentation are available now.
A course introducing the participants to systems programming in Ada using the POSIX Ada API. An extended version of this course has previously been given as a part of the software engineering education at DMU-Syd.
Slides from my talk on using tools to generate integration tests from use-cases at Driving IT in Copenhagen.
I gave a presentation on semi-automatic test-generation from use-cases at Linux Day 2015 in Cagliari. Slides and examples are available for download.
Thanks to an interesting question on Stackoverflow, I got around to set up a repository for collecting SPARK 2014 examples.
Earlier today the list of DevRooms at FOSDEM 2016 was announced. This includes an Ada DevRoom organised by Ada-Belgium. Please submit proposals for presentations to <email@example.com>.
I just picked up my copy of Ada User Journal 36.3 from my mailbox. I really look forward to read the paper by A. A. Lovelace (even if it appears to be a reprint ;-).
Are you tired of having all kinds of people tracking which links you click, and which pages you visit on the web? My HTTP redirector attempts to solve this problem by providing you with a local, non-logging replacement for some of the trackers out there. The tool is Open Source and written in Ada.
I was pointed to some interesting programming exercises by a fellow Ada programmer. I took a few hours out of the calendar to solve them in Ada. One interesting observation is that the hardest part of the exercises was to make nice terminations of the programs. The actual synchronisation and communication is easy to do in Ada.
I have built a model of a human brain in LEGO for an exhibition at Medical Museion in Copenhagen.
I have created a minimal example showing how SPARK 2014 proofs and Ada 2012 run-time checks of the same contracts can be done. In the example there is a simple increment procedure with a precondition, which either can be checked at compile-time (by a SPARK 2014 prover) or at run-time (by compiler-inserted checks).
An Open Source tool for generating command-line interfaces to Ada packages.
The declarations of subprograms in the public part of an Ada package specification can be seen as a declaration of how you are supposed to call the features implemented in the package. This tool translates an Ada package specification into ready-to-compile command-line interface for the package.
A short screencast introducing the viewers to some of the benefits of how
case statements work in Ada, and how the static coverage checking in the compiler helps preventing errors. The presentation includes some Ada 2012 features and also gives a basic introduction of subtypes (subsets). (Alternative version.)
I presented my tutorial on contract-based programming and gave a talk on persistent containers at the Ada Europe 2015 conference in Madrid.
Coding standards can benefit from a critical review from an experienced software developer. I provide reviews and constructive comments for coding standards for Ada source text.
I have an application for finding wave-induced cracks in video inspections of sub-sea structures available for interested customers.
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 gave a talk on
Contract-based Programming in the Ada Developers' Room at FOSDEM'15 in Bruxelles.
I gave a talk on
Contract-based Programming — A Route to Finding Bugs Earlier:
The Ada Europe conference on reliable software took place in Paris this year. I had two items on the programme:
I can provide a automated detection of privacy-leaks in Java classes using a custom static analysis tool.
A course introducing the participants to contract-based programming in Ada 2012, and giving them some basic rules for using the features of Ada 2012 in a consistent and efficient manner. This course has previously been given as a tutorial at the Ada-Europe conferences in 2014 and 2015.
An Open Source Ada 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.
I can provide critical source text reviews, either during development or as an independent review of a final product before delivery/acceptance.
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.
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).
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.
An Open Source sound library for Ada providing recording and playback support.
An appendix to the book
Understanding Unix/Linux Programming making it Ada-based instead of C-based.
New business use of existing software technology, and development of new programming techniques.
Mathematical models designed to solve problems for your business.
Analysis of and data processing for biological experiments.
Algorithms for pronunciation-aware searches in dictionaries and other databases.
Software development on a consultancy basis. I can provide time estimates and hourly rates, or fixed-price quotes depending on your needs. I have experience in a large variety of programming languages, among others: Ada, C, C++, Python, Oracle PL/SQL, Pascal, SPARK and Fortran.