R+D
“Danish know-how, Galician work ethics and Spanish temperament.”

Uniprocess

Description:

A uniprocess is a stateless piece of software that encapsulates a process, seen from a business perspective, of which it is known at all times what data enter and what data comes out of the process.

The main reason the concept of uniprocesses were conceived, was to provide the possibility to comply with the Directive 95/46/EC, General Data Protection Regulation or just EU GDPR, from a technical point of view. For more information on the EU GDPR, please read the Legislation section of the About tab.

The following analogy will showcase what problems are being solved:

In Denmark it is allowed to drive scooters on the bike lane. A requirement is that the speed limit does not exceed 45 km/h for the scooters. All companies that sell scooters in Denmark limit the engine to ensure that they do not exceed that speed (technical measure). If this were not the case, the Danish authorities could fine, very heavily, brands that don’t comply with the law. For officials, in this case the police, it is very easy to inspect if the scooter complies with the law or not, since they have in the trunk of their vehicles a speedometer (another technical measure).

And this is where the concept of uniprocess enter the scene. Using this concept, we can help brands ensure that their applications do not exceed the speed limit while providing tools to the relevant authorities to ensure that the law is followed.

Status:

Released in λ version.

F# Minecraft Client

Description:

Since the founder of this company become a volunteer at Coding Pirates, a Danish non-profit organization that tries to help kids to understand technology so they can create and not just consume.

There are a few challenges that you are going to meet when you try to teach kids to code. Mostly mathematical/logical concepts but also language based (English keywords).

Scratch, developed by MIT, seems to solve these issues but tends to become boring in the long run. It would be fair to say that that coding in Scratch is a bit like reading a picture book.

We seem to face a challenge when we want to transition the children from reading picture books to read books, as many of the technologies used by us grown ups, aren’t that user-friendly as we think they are.

Therefore, we proposed to create something that was easy-to-use, but mainly safe in the sense that it’s very difficult to write erroneous code, just like with Scratch.

Status:

Released in λ version.

Puritas

Description:

This project aimed to provide the F# language with ad-hoc side-effect free code at compile-time (think of it like when using the lazy keyword).

Status:

This project is discontinued. The creator of the F# language showed no interest in adding ad-hoc pure branches to the language as it would remind to much of Haskell.

Sign Sign (sign2x)

Description:

Multi-sign documents locally (privacy) relying on mathematics for security, correctness and to ensure that some, any or all of the signees, comply with the requirements of the documents.

Status:

Not released yet.

.NET SynVer (SemVer)

Description:

The main goal of this project is to be able to get an idea about the semantic version changes based on the surface area changes of a .NET assembly.

Developers should be able to use the tool to give a magnitude of any API changes. This is helpful when pushing NuGet-packages from a continuous integration server. Internally used NuGet packages of a .NET developer organization often focus on delivering on business goals; the versioning is easily forgotten. I.e. we want to be able to use this from TeamCity and others.

When upgrading a package you want to know the magnitude of the changes. In many cases the easiest way right now is to upgrade and look at the compilation errors. Having more information directly in NuGet helps.

Status:

Released in λ version

Elm Blockchain Package

Description:

It’s a pure implementation of the Blockchain database in Elm. It’s implemented as a Directed acyclic graph (DAG) in order to ensure no cyclical references (infinity loops) between Block’s. Default hash function is SHA-256 but others can be used. Hash functions are specified on initiation and can’t be changed afterwards which ensures data consistency.

Status:

Not released yet even though all the underlying packages are released in λ version.