How to Build Better Software

How to Build Better Software 2548 1422 KRONOMETRIX

A better way to design software

Companies are pushing lots of updates to fix different vulnerabilities and software defects at an alarming rate. Many developers are focusing heavily on coding, writing software in sprints, based on user stories, using scrum or other agile methodologies but still fail to deliver robust software.

Programming is not coding!
What is the difference and why is it important to know?

We would like to present three main things how anyone can use to learn build better and more reliable software.

Precise Designs

Being agile does not mean you should forget what and how your software should do. These must be written down in a precise form, not based on plain English prose, static diagrams, user stories or some sort of pseudo-code. 

And that means using formal methods, like TLA+ which will help you validate and find very subtle design bugs before implementing or writing a single line of code, not found through any other method or technology. Formal methods are mathematically techniques for the specification, development, analysis, and verification of software and hardware systems.


There are many implementations of formal methods used in industry: TLA+, Alloy, Petri Nets and may other implementations. Several companies are using formal methods. For example TLA+: Amazon Web Services uses TLA+ to design its own products (S3, DynamoDB, EBS), Microsoft (Xbox), Intel (microprocessor design),  European Space Agency (Rosetta spacecraft using OpenComRTOS operating system)

Programming vs Coding

“Coding is the easy part of the programming”. Every time you plan to build a new program, there are three main things involved:

  • first you must decide what the program should do
  • then one should think how to do it, for example what algorithm to use
  • and then do it, by selecting a programming language and start coding

Without thinking very carefully about the first two parts , what and how the program will work, and writing down these into a precise format, what we call a specification, nobody can answer what means for the program to operate correctly. We call these the two main parts, the programming part.

Programming means working on a high level aspect of your program, at the algorithm level rather than the code level.

Coding is the last part of building the program, after the high level designs are in place. This requires to select a programming language and start the low-level part of the program, the implementation.

Scalability Analysis

Last but not least you should quantify the performance of your application. If you can’t quantify it, you will not be able to guarantee it. This means using a mathematical model, like Universal Scalability Law (USL) to validate your performance results and conduct a proper scalability analysis. 

There are two main benefits using USL for our program:

  • Validate our performance test results. Many companies are conducting lots of performance tests without making sure the results are also correct. The USL model helps us on this part
  • Project the application performance for different payloads
The USL model

There are different ways to use USL, from using Excel/OpenOffice, R or any other data numerical application.

At Kronometrix

Building software is not easy. With a small budget we managed to build a robust platform which can operate without human interventions for years, use less electricity vs. other similar solutions. Using USL, TLA+ have helped us to achieve these goals. Get started today with our free Kronometrix data analytics platform. If you have any questions or what to know more about our products and services please contact us!

Prevent Silent Data Corruption

Prevent Silent Data Corruption 1584 1224 KRONOMETRIX

Storage capacities have increased substantially, but their error rates remain unchanged and high

Companies are storing and placing their data on different networks, like cloud storage providers or private, on-premises systems and devices totally unaware of the real danger of silent data corruption – “undetected data corruption, also known as silent data corruption, results in the most dangerous errors as there is no indication that the data is incorrect.”

In the past, using older storage technologies, the probability of data corruption was very small because of the volume of data stored. Today, we store massively more data, from audio, video, numerical data, to documents using private or public social networks, without any ideas how safe our data is.

There can be many error sources beyond the disk storage itself, from loose cables, unreliable power supplies to DMA parity errors, external vibrations or other soft errors. Silent data corruption is difficult to detect and report, usually resulting in “cascading failures, in which the system may run for a period of time with undetected initial error causing increasingly more problems until it is ultimately detected”.

Jeff Bonwick, the technical leader of ZFS stated that, “The fast database at Greenplum, which is a database software company specializing in large-scale data warehousing and analytics, faces silent corruption every 15 minutes. As another example, a real-life study performed by NetApp on more than 1.5 million HDDs over 41 months found more than nearly half a million silent data corruptions, out of which more than 30,000 were not detected by the hardware RAID controller. Another study, performed by CERN over six months and involving about 97 petabytes of data, found that about 128 megabytes of data became permanently corrupted.” (Wikipedia)

Kronometrix Data Integrity

Developed with data integrity in mind, Kronometrix is using OpenZFS technology to detect, correct and prevent silent data corruption errors, supporting:

  • long-term data storage: large datastore sizes with zero data loss
  • data integrity: using hierarchical checksum of all data and metadata
  • native data compression: supports archival years of raw data
Intelligent Fabric

Kronometrix connects to a wide variety of data sources: everything from IoT devices, ICT enterprise to weather and environment sensors. In addition to multifaceted data ingress, the distributed data fabric provides high-speed transport for data consolidation, analysis and visualization in real-time.

Built as a ready solution, Kronometrix contains all needed software components, from data collection, to analysis and visualization, on top of core computing capabilities:

  • multi-processor configurations
  • in-memory processing, supporting RAM or flash memory
  • integrated storage and network capabilities

Please visit Kronometrix Data Fabric for more informations about key features and capabilities. If you have any questions please contact us.

Kronometrix CloudView Managed Service

Kronometrix CloudView Managed Service 17280 11520 KRONOMETRIX

Find out if your applications and services are properly configured and optimised for your business and customers

A lot of organizations are spending considerable time and energy, to detect and correct improper service configurations, which have a direct impact to the main operation and functionality, as poor performance or outages. These activities, many times, continue as a fire-fighting exercise, without a strategy and direction, exhausting everybody and getting very expensive.

Kronometrix CloudView brings all necessarily tools and utilities to build and define a direction, to simplify all these and get the job done.

For example, when we deployed Kronometrix CloudView for Nexetic, one of our customers, we have received several alarms from various parts of the applications and systems. Kronometrix uses a special algorithm, based on sampling the prescribed frequency and duration of trigger events, to eliminate the typical flood of unnecessarily repetitive alarms. Having a relatively high number of alarms was an indication for us, that certain things were not properly configured or correctly set to run.

Using the alarm list, we were able to navigate and detect the most important parts of the system and services which required immediate attention. Working with the devops team, we were able to take one issue at the time, perform changes to immediately improve the performance and ultimately the availability of the service.

How it works

To help you run your business smoothly in the cloud, we continuously monitor your applications, services, and operating system instances: no matter whether it be public, private or a hybrid cloud nor which vendor you have selected to provide the infrastructure. Moreover, when things go wrong or become inefficient, we let you know what the problem is and how best to fix it.Kronometrix Cloudview is an enterprise service, built on top of Kronometrix SaaS designed to track your cloud infrastructure usage and keep you aware of changes before they happen. It includes:

  • Real-time performance analysis of your cloud instances,  operating systems, storage and enterprise services
  • End-user performance and availability of web applications and websites, Internet services
  • Validity of X.509 security certificates 
  • A complete managed services support package, 8×5 or 24×7 for continuous service operations, including incident management and root-cause analysis

The service includes a managed service package, which will allow the Kronometrix Operations team to access and remotely operate your services. Our operators are highly skilled professionals with over 25 years of UNIX/Linux experience. Kronometrix will measure and analyse all your services. In this way we will help you to stop fire-fighting and focus on whatever matters most to your business, by keeping all your critical services running.

If you have any questions or need more information about our service,  please visit Kronometrix CloudView, check out CloudView FAQ or contact us.

Smart Alarms

Smart Alarms 1920 1129 KRONOMETRIX

What are Kronometrix Smart Alarms?

Kronometrix is capable of receiving and processing many different types of data messages from different data sources. Everything from ICT and IoT to weather stations and environmental devices. At the same time as offering extensive data-source flexibility, the Kronometrix Smart Alarms capability can also send alarms if certain predefined conditions pertain. For example:

  • if the data is delayed and does not arrive on time
  • if the data does not meet certain numerical formats
  • if user-defined business logic is violated

Kronometrix Smart Alarms uses a special algorithm, based on sampling the prescribed frequency and duration of trigger events, to eliminate the typical flood of unnecessarily repetitive alarms; the bane of every on-call technical support person.

For example, the Kronometrix operations team was originally receiving around 500 alarms per day. That level of alarms becomes highly irritating noise that eventually tends to gets ignored (thus defeating the purpose of the alarm). After implementing the new Smart Alarms interface, that number was dramatically reduced to less than 20 per day.

How does it work ?

For user based alarms, these are the main important parameters used:

  • Threshold
  • Frequency
  • Duration

The Threshold is a numerical value used to define a boolean condition: true or false. When that boolean is true, a count of that event type is accrued toward triggering an alarm in the future, depending on the settings of the Duration and Frequency parameters.


The frequency is the rate at which events need to occur in order for an alarm to be issued. This rate is defined through two quantities: the number of events and the timebase. For example: to specify that an alarm be issued when three events occur in one hour, the user would enter a 3 for the number of events, and 3600 (seconds) for the timebase.

Screenshot from Kronometrix Smart Alarms User Interface


The event duration is defined as the period during which a set of contiguous data samples meet the user-defined threshold condition. An OVERRIDE value sets the maximum number of alarms that will be issued. Once this number of alarms has been issued, no further alarms will be sent, even if the alarm condition is met in the future. The default value is zero and means the OVERRIDE is disabled so that alarms will always be sent when the alarm condition is met.


1. Send continuous Smart Alarms as soon as the CPU utilization on the database server exceeds 75%, AND there are at least 5 such events, each lasting more than 300 seconds during a moving time-window of 1 hour. If the same situation arises some time in the future, send another Smart Alarm. Otherwise, don’t send any more Smart Alarms. The user-defined settings would be:

  • Number of events: 5
  • Timebase: 3600 seconds
  • Event duration: 300 seconds
  • Override Count: 0, default

In this example, Smart Alarms will send continuous alarms as soon as the conditions are satisfied in each occurrence.

2. Inform me if our service-desk application becomes really slow. Send just a single Smart Alarm if the Response time of the application exceeds 500 ms over a 15 minute period, and there are at least 5 such events in minute. The user-defined settings would be:

  • Number of events: 5
  • Timebase: 900 seconds
  • Event duration: 60 seconds
  • Override Count: 1

In this example, Smart Alarms will send a single alarm during the period when the condition is true.

3. Send me the earliest single Smart Alarm when the air temperature falls below 0 ℃, just once, in a 20 minute window. Beyond that, dont inform me anymore unless the situation has changed. The user-defined settings would be:

  • Number of events: 1
  • Timebase: 1200 seconds
  • Event duration: 1200 seconds
  • Override Count: 1

In this example, Smart Alarms will send just a single alarm until the temperature condition is no longer true.

More information

Kronometrix Smart Alarms are standard feature of  Kronometrix Data Fabric on-premises or SaaS versions. Sign-up today for a 30 days free trial of Kronometrix as a service. If you need more information about Kronometrix products and services don’t hesitate to contact us. Thank you

Ecological Revitalization

Ecological Revitalization 1991 987 KRONOMETRIX

See how Pikanore is using Kronometrix to build sustainable solutions for a clean environment

Weather and environment are essential core components of Kronometrix data fabric. From data messages, summary statistics to UI dashboards and raw data, Kronometrix provides a complete solution to capture, analyze and visualize real-time data, regarding:

  • present weather conditions
  • city air pollution
  • building indoor air quality

Ecological Revitalization

Pikanore Ltd. has selected Kronometrix Analytics to provide continuous weather and environment measurements from their workplaces.

Revitalizing properties for ecological purposes refers to the process of cleaning-up and returning contaminated land to a state that supports functioning and sustainable habitat. This is a very important mission to protect human health and the environment. 

Different technical activities, like excavation and earthmoving equipment can significantly disrupt existing habitat during cleanup. Measuring the impact of these activities is essential to ensure normal functioning of the clean-up process and alignment with current rules and environment regulations.

How does it help?

Kronometrix collects data from different weather equipments, reporting current weather conditions around different workplaces: wind speed and direction, air temperature, air pressure, humidity, precipitation accumulation and offers access to the original raw data to build different other weather reports, if required. Having access to original historical raw data, offers maximum flexibility to build and analyze any weather conditions using our own in house applications. Kronometrix helps us to consolidate and integrate different data from weather to air quality in a simple, and efficient way.

Such way, Kronometrix is helping Pikanore to ensure all their workplaces comply with the current environmental regulations and their clean-up operations do not harm the environment.

More information

Please visit Kronometrix customers to learn more about some of our customers and their success stories, or contact us.

Kronometrix Scalable Design

Kronometrix Scalable Design 960 540 KRONOMETRIX

For Future Datacentres
Clouds and Edge Computing

Kronometrix is a distributed data fabric that is capable to receive and process many types of data messages from different data sources, everything from ICT and IoT to weather and environmental equipment. It runs on a variety of 64bit computer systems, from Intel/AMD x64 to ARM single-board computers, like Raspberry PI.

A number of factors and technologies makes Kronometrix capable to run and support different computer system architectures and configurations:

  • the internal application design
  • Lua, the most powerful embeddable scripting language
  • OpenResty, the scalable web framework
  • Redis, the data structure NoSQL database
  • and the integrations to the 64bit operating system

All these technologies are well integrated and built as a single data layer – the Kronometrix data fabric, a powerful unified and intelligent system, which is easy to deploy and connect to various data.

Future will be different. We believe in powerful computer systems with massive vertical scalability features, using multi-processors and high density RAM configurations on a single board computer. Such systems will drastically reduce the number of racks in a data-centre being capable to handle and process billions of data sources, using less space and energy. For example, the ARM architecture will play a very important role to improve system vertical and horizontal scalability. And at Kronometrix, we will always support this architecture as our main development platform.

Single-node Deployment

The simplest way to install and deploy Kronometrix is to use a virtual machine or a physical computer system for Intel or AMD x64 architecture or ARM Raspberry PI single-board computers. In such setup, all internal modules will run, by default on the same system, without the need to change or configure anything.

Multi-node Deployment

To scale and be able to process more data, different Kronometrix modules can be deployed on separate computing nodes or physical systems. These nodes at the same time, can add more vertical processing power, by adding more CPUs and memory, if required. Such setup, does use horizontal and vertical scalability features, to maximize performance and stay energy efficient.

What’s in it for me?

Making Kronometrix scalable is our top priority. That means we are always trying to improve and make better products than in the past and better than our competition. You should consider running Kronometrix for your business, and here are Why should you run Kronometrix in buy from us and use our technologies:

  • Cost. Pay per data-source, and support type. We have a very flexible and low cost model to run Kronometrix.
  • Flexibility. You can deploy Kronometrix inside data-center, on your office network or at the edge of the network, closer to sensors and devices.
  • Support. 8×5 and 24×7 support types, always get top support from our engineers, no bureaucracy, no hidden costs.
  • Open Data. You are always in control. From data recorders to the data visualization and analytics, get the original raw data to be able to conduct and type of analysis you want or share data with any parties required.

Our products are built entirely on open systems, technologies and standards, bringing innovative ways to consolidate, analyze and visualize data for different industries.

If you want to know more about our product and services, please visit our site or contact us.

City Air Pollution

City Air Pollution 960 638 KRONOMETRIX

Air pollution presents a major problem in modern society, directly affecting everyone’s health

Air pollution presents a major problem in modern society, directly affecting everyone’s health from children to workers, and the elderly, with immediate symptoms or long-term effects. To combat these problems we need to know the air quality in and around our homes, offices, or the city’s environment. If we  don’t measure it, we can’t know it. Kronometrix continuously keeps track of key environmental metrics in order to analyse the quality of the  outdoor air: from carbon dioxide, air temperature, relative humidity, volatile organic compounds, organic or inorganic particulates to gaseous pollutants: ozone, sulphur dioxide, nitrogen oxides, and others.

Kronometrix Data Fabric offers support to measure and analyses data in real-time from different sensors and devices,  reporting:

  • Air temperature and pressure, relative humidity, wind speed and direction
  • NO2 – Nitrogen dioxide
  • CO – Carbon monoxide
  • SO2 – Sulfur dioxide
  • O3 – Ozone
  • TVOC – Total Volatile Organic Compounds
  • PM2.5 – Particulate matter 2.5 microns
  • PM10 – Particulate matter 10 microns
  • count of vehicles moving on the monitored lanes
  • statistics about vehicles classification
  • estimations of vehicles speed and length

Air quality, weather and road traffic conditions, are essential factors to analyze city air pollution

In our complex and rapidly changing modern society, we  need to decide what level of pollution is acceptable to us and act accordingly. Kronometrix helps to understand these and set the correct expectations. Please contact us for more information about our air quality solution for cities.

Aviation Meteorology

Aviation Meteorology 960 640 KRONOMETRIX

Increased precipitation, extreme weather and changing wind conditions are main challenges for air navigation

Kronometrix provides right out of the box all the needed climate reports, updating them as new data streams in. Working as a web application it provides multi-subscription, multi-user, role-based secured access control for your climatology data.

Ready for work

Kronometrix supports a number of weather stations, from  Vaisala, providing weather and meteorological data. It comes integrated with a ready set of objects for aviation meteorology, including the weather metrics, the summary statistics and the time intervals all needed for analysis and reporting. Several built-in applications are offered to get you started to see and analyse your airport data. Additional extra applications are offered from various solution providers, like Starckrom SRL to bring more advanced climatological calculations for airports. We are working with different systems for example, Kronometrix is integrated with Vaisala AviMet®, for aviation meteorology which can receive real-time data and messages from multiple airports, providing an overview of the meteorological situation in the territory. The application is easily configurable according to each airport sensor layout.

It supports basic climatology statistics for example: wind, temperature, humidity, pressure and precipitation accumulation and advanced climatology processes the main operational parameters for the airport: visibility (MOR and RVR), cloud coverage and cloud layers, fog frequency. Extra parameters can be added should the corresponding sensors be available in the system, such as runway surface status, thunderstorm, present weather – and the corresponding climatologic statistics are also calculated.

Basic statistical functions cover the large majority of climatologic computation needs: min, max, mean, last, count, sum, standard deviation, variation and percentile. Advanced statistical functions, such as ‘data binning’ are also built in for the purpose of computing the frequency of occurrence of a certain condition (e.g. frequency of visibility below 300m, relative number of days with thunderstorms in the vicinity, etc). For quick visual analysis, any plot can benefit on the built-in trend line feature, which can either be linear, exponential, logarithmic or polynomial (up to 4-th degree).

Please contact us for more information about Kronometrix for aviation meteorology.

Tuning Java Virtual Machine

Tuning Java Virtual Machine 3000 2250 KRONOMETRIX

Usually Java applications are deployed with default settings not suitable for production usage

JVMTune is a specialised performance analysis and observability service for Java based applications, focused to the Java Virtual Machine configuration: the heap memory usage, the garbage collection statistics and the overall system memory footprint.

In general Java based applications are deployed with default or ad-hoc settings without proper testing and not suitable for production usage. It is important to analyse all these aspects to make sure your applications is good throughput and response time.

The heap memory configuration will be checked, including: Young, Old and Permanent generation sizes. Each generation will be tuned based on the various synthetic load tests and we will ensure that the heap footprint is properly set and the application works properly without errors. A garbage collector will be selected in order to minimise the number of collection activities and ensure the application has a good throughput.

Improper memory settings can cause poor performance and affect overall availability of your application.

We will look for the following goals:

  • throughput – the total time not spent in garbage collection
  • pause time – the time during the application is paused when the collection takes place
  • frequency – how often the collection occurs

Every time your application is changing, you should consider running JVMTune service, in order to ensure the throughput and response time are correct. System developers, devops and architects are directly interested to know how the Java based applications are functioning and performing over time. Avoid outages, maximise application performance with JVMTune.

Turbo charge your Java applications. Get in touch with us for more information about JVMTune and how can you get started.

Get in touch

If you have any questions about our products and services, please contact us.