Sign in

Lead Architect at LiquidShare, building a cloud native, blockchain enabled, financial services SaaS platform.

In the previous post we started to look at how to implement a doodle using smart contracts written in DAML. The last code snippet we looked at was the IssueInvites choice, which is used to send out invites to each of the voters. There’s one more detail about the code in that choice that I’d like to point out.

Divulged Contracts

Remember we mentioned that IssueInvites is a preconsuming choice. Exercising it will archive the current version of the contract before executing the choice code. Let’s see why this is important.

If the choice were not preconsuming, the version of the…


In my previous post, DAML Smart Contracts Appetizer, I introduced the DAML smart contracts programming language and runtime and explained why I was so enthusiastic about it. I would now like to get into a slightly more complex example: a Doodle written in DAML.

If you looked up DAML code on the internet and if your previous programming experience is with imperative, object oriented programming languages such as Java or C++, the Haskell style, purely functional DAML syntax may not come naturally for you. …


Introduction

I am very enthusiastic about DAML, and for good reason. DAML has a lot going for it:

  • It’s a strongly typed, functional programming language, based on Haskell
  • The language and its developer tools are open source
  • It comes with a smart contract test framework
  • DAML has private transactions out of the box, controlled using a declarative, easy to understand permissions system, without requiring deployment of extra private transaction management software.
  • Transaction participants are modeled as a native DAML data type (Party)
  • It has a “decimal” data type and can natively do decimal arithmetic which, believe it or not, most smart…


I have recently published a small Java library on Maven Central: written in plain Java, built with Gradle using Gradle’s Kotlin DSL, integrated using GitHub actions and published to Maven Central using Gradle’s “maven-publish” plugin.

Here are simple step-by-step instructions on how to reproduce and automate the process.

Sonatype OSS Project Setup

You will need to open a ticket with Sonatype here and ask them for an open source project.

You will need to sign up for an account if you don’t already have one.

Sonatype are very quick to respond, friendly and very helpful. …


I am building a home climate monitoring system for my house. Active sensors are built around Raspberry Pi computers paired with AM2302 temperature / humidity sensors. The Raspberry Pis read humidity and temperature data from the sensors every minute, add metadata such as home id, room name, tenant ID — yeah, making it multi-tenant because I plan to share the infrastructure with friends — and make a HTTP POST call to an AWS Lambda function written in Java using the Spring Cloud Function framework exposed over the web using the AWS API Gateway. The lambda function will store the climate…


Non — blocking, asynchronous I/O APIs make your applications more resilient, responsive and cost effective. In this blog post we will look at the problems blocking I/O is causing, at how non-blocking I/O solves the problems and then apply these principles to the every-day use case of file uploading.

Synchronous Blocking I/O

Traditional I/O operations are blocking. This means that while data is being transferred between main memory and peripheral devices such as network adapters or storage controllers the thread that has initiated the operation is blocked and the CPU is waiting idle for the I/O operation to complete. …


The proxy based service mesh is an emerging technology that simplifies building distributed micro-services systems by using specialized proxies to provide cross-cutting infrastructure functionality such as service discovery, load balancing, circuit breaking, metrics monitoring, distributed tracing and more at container orchestration level. By eliminating boilerplate code from your service you are free to use any technology and any programing language.

Traditionally, if you wanted to build a distributed micro-services system, you had to find a set of components and frameworks that provide service discovery, load balancing, circuit breaking, then you had to specifically craft your services to work with these…


The Data Warehouse Definition

The other day I was listening to a software engineering podcast.

Don’t remember the exact title, but at some point the host asks the guest: “can you explain the difference between an operational database and a data warehouse?”. And the guest goes: “well, the operational database is the regular database on which your application operates, a data warehouse is a database where data, instead of being arranged in subsequent rows, it’s arranged in columns…

That’s not right is it? So, what is the difference between an operational database and a data warehouse?

The as the guest…


In my previous post, “A case for in-memory columnar data structures”, I used a JMH benchmark to show that if what we need to do is calculate statistical indicators over an object field ( metric ), destructuring data and store successive values of that metric in a continuous array is (much) more efficient than storing the same information in structured POJOs.

Storing the metric variable in a continuous array works well with the kind of computation we’re performing: we race through a continuous chunk of memory and we access successive locations in predictable, in uniform strides. When we access the…


As a java programmer, did you ever wonder if all the fuss about those mechanical sympathy principles is justified? De-structuring your objects and collections, use sun.misc.Unsafe to allocate memory off heap or to instantiate objects inside a byte array, pack related data items next to each other all to achieve spatial and temporal cache locality, is all this worth the effort?

When the requirement is to calculate statistical indicators over a metric in your data set, one effective optimization is to use a columnar store. So what what does this mean?

Suppose your data is modeled in the code snipped…

Emil Kirschner

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store