C# and FP – episode 2 – OOP today, (im)mutability.

Now it’s like nobody knows me…

Thomas – The Ogre of Athens (1956)
Image from clickatlife.gr


An object’s state, describes its current condition. If object was a human, this could be their emotional state (e.g happy, sad, angry). To think a bit further, the height value in an object’s field is not a state, but the height’s value help us to define it’s height category (e.g tall, short, average), that is actually the state. And it is the state, based on the context we, as society, have set on defining when someone is considered tall or not.

An OO software system is an objects graph. Objects exchange messages, and based on the message content an object changes it’s state or not. Other objects do not directly read or write the state of another object. The state itself, must never leak out of the object to another. In short, objects do not share any references to state, but instead only report to each other with copies of stateful data. In this fashion, each object is the sole manager of its own state.

But this only half of the story. If we are too strict with the state management, we will not finally have a graph of objects, but rather a strict flow of composition (object B has no meaning or purpose in the system without A) or aggregation (B exists independently (conceptually) from A).

The state will be concentrated to a root object, itself composed by a number of stateful objects, which in turn may be composed of stateful objects. The objects of this hierarchy may pass messages to their immediate children, but not to their ancestors, siblings, or further descendants.

How fragile is the object’s state?

I am sure, that all of us, have worked with source code of a flexible or nonexistent hierarchical pattern at all. We need indeed to be (maybe more) flexible in our everyday work, and the source code is a part of it, but we might end up with objects leaking state.

But a wonderful clean hierarchy is needed when the specifications ask for it. While we organize our objects into a specific hierarchy, the state management is enforced to follow the same pattern. If our business logic is something trivial, probably we will have no trouble at all.

How do we handle use cases that involve multiple objects that are not directly related? One solution could be a common ancestor, other possible solutions is to use the Mediator pattern of the actor model. The larger the software, the more complexity there is, so we have to be really careful with the objects state management. Shallow hierarchies as possible, allow us to successfully manage state [2]. For more information please read here.

Types of immutability


Object itself has no fields or properties that can be changed. This object will remain totally unchanged through its life cycle. For reference types the field must be read only and the type must also meet the immutable guidelines. Types that meet the immutable guidelines, are inherently thread safe. They are not subject to race conditions because they cannot be changed and thus viewed differently between threads [1].

Jared Parsons

Shallow Immutable

The direct contents of this object must be immutable in the sense that they cannot be changed to point to another object. However there is no guarantee that all of the fields are themselves immutable. All of the fields in the object must be read only. For primitive values this is enough to guarantee them meeting the Immutable guidelines and hence Shallow Immutable. For reference types this will ensure they will point to the same object thus doing all that is needed to meet the Shallow Immutable Guarantee. Types with this guarantee are thread safe to a degree. They are thread safe as long as you are accessing the fields with meet the Immutable guarantee. You can also access the references which are read only as long as you do not call any instance methods. For instance a Null check is thread safe [1].

Jared Parsons

Shallow Safe Immutable

Slightly stronger guarantee than Shallow Immutable. For all fields that are read only but not immutable, the type must be thread safe. Types which meet this guarantee are thread safe also to a degree. They are as thread safe as the fields which are guaranteed to be thread safe [1].

Jared Parsons

Benefits and a drawback of immutability

No matter if we decide to use immutability a lot, or enforce it, or use it partially, the goal has always to be the minimization of state usage. Immutability is not a binary decision. It depends on the requirements we have in hand. There is not a specific decision threshold on picking strict immutability or not. The benefits of immutable objects could be summarized to the following (probably incomplete list):

  • Immutability prevents null references
  • Immutable objects are thread safe
  • Immutable objects fight temporal coupling
  • Immutable objects have have failure atomicity*
  • Immutable objects always return new objects and not copies
  • Immutable objects and caching. The cached object is the same with the one in the execution flow. It doesn’t change.

* An immutable object throws an exception, it will never result with the object left in an indeterminate state. This term was coined by Joshua Bloch.

However, if a modified version of an immutable object is needed, we have to suffer the penalty of creating a new object. This must be handled with care in terms of Garbage Collection (GC).

Examples of immutability

Instead of writing numerous examples, I provide you Jon Skeet‘s excellent presentation about immutability. He explains, in details with source code examples, whatever is mentioned, more or less, in this article.

And a bonus video regarding the fundamentals and how data structures affect the way we develop. They effect immutability as part of the big picture.


Immutability is like a big ship. Skills are needed to pilot it, but you have to be careful. A good solid knowledge of OOP is necessary. Try to keep the objects graphs as small as possible, and minimize the dependencies between the objects. We will discuss about the degree of dependency in a future article.

The next episode

In the next episode, we will discuss again about the object’s state and its (im)mutability and its relationship with Inversion of Control and especially with Dependency Injection.


[1]. https://blogs.msdn.microsoft.com/jaredpar/2007/12/04/types-of-immutability

[2]. https://wiki.c2.com/?ShallowHierarchies


Who really appreciates software developers?

Why can’t it be like before? Please don’t go. Stay with me tonight. Let me borrow you.

Bai Ling – 2046 (2004)
Image from patrasevents.gr


Computer science is a relatively young science compared to others, like math, physics, chemistry, medicine etc. Especially computer science, as we know it today, started its development since Alan Turing‘s era and work. And till today a lot of people do not understand, nor appreciate the work we do and the results we deliver.

Think yourself, a software developer, sitting at a table with other STEM people. And suddenly someone comes at your table and ask what do you do for a living. Who do you think will have to provide the most information about their work? The doctor? The chemist? The architect? The mathematician? You got it! The software developer!

Oh you work with computers!

When I was younger, and sometimes even today, I had, and I have, to explain to older people what I do for a living. The concept of a computer device that does almost anything was too big for them. Especially when I told them I program them!

Unfortunately the same thing happens with some (much) younger people. It is uncanny to me that a young person doesn’t know how a computer and internet work, and how a software is developed. No, no, no I am not talking to know in depth the details of our work, but simple general things, like the fact that a programming language allows us to instruct the computer’s CPU to execute some calculations and save the results to the RAM or the hard drive! And no, I am not exaggerating! Unfortunately I don’t keep a diary with all the crazy things I have heard all those years.

The next big thing idea!

Another thing that I don’t like, is people who believe they have the next big thing idea and need a software developer to make it for them. And I feel really sad about the developer who will go down the rabbit hole listening to bullshit from people who think that software is developed with magic and want to underpay. And you end up explaining to them all the fallacies, the limitations, the cost and the human resources needed, they put themselves into the denial domain and return with counter arguments that make no sense! The worse case scenario is that managers and bosses do the same. And if you have to face them 9-5 every day…. oh boy!

Oh come on, you just press some keys

And we come the worse point of human interaction between a software developer and anybody else. The ones that try to humiliate you, to make you feel bad by degrading your profession. Well if our jobs was just to press some keys then everybody would it. And unfortunately this toxic behaviour is not only against software developers but almost any profession. I have seen people bossing and deriding doctors! There is no limit for those people!

Rate my setup!

I really enjoy when people upload their setups at 9gag and ask from the other users to rate their setups. I don’t care if setups are actually their or they do it for points and the comments, but I have seen great setups. And I have been asking myself “Why don’t we see similar setups at the offices?”. Yes, the cost, I know. You can’t buy really good chairs and desks for 20, 50, 100, 500 employees and I can’t accept working seating to a shitty chair and to a horrible desk. Our work, is mental, and this means our body must be relaxed. If it is impossible to seat properly, or after a time my body is pain, I will not be able to as productive as expected.

The open space hell

The original idea of open space offices goes back in the 50s by a team in Hamburg, who thought that this would help the communication among employees.I worked at an open space office, and no it didn’t help at all. 60 people in a huge room, all of us with headset on in order to survive the noise. Add the chit chat, the long conversations, I don’t know how this open space thing helps software developers to be productive. At least it didn’t help me. A prefer working in a small office, three to four people max.

We are invisible

Ask your non software related friends if they know five people. Artists, politicians, athletes and one the names let it be a computer science person. How many do you think they know the CS person? We “know” each other, through blogs, books, magazines, you tube, conferences but we are completely out of the mainstream media. Maybe in the States things are better, but related to what mainstream media show in the 195 countries around the globe, I don’t think we are a priority.

In the end who appreciates us?

In my humble opinion, I believe that we still have a lot of milestones to achieve till people understand us better. TV series like The Big Bang Theory and IT crowd depict the truth more or less. The bottom line is that scientists in general are not appreciated enough, it’s not just us the source code riders. This article could last forever trying to analyze why this is happening, but I leave the rest to you!

The cover letter bullshit!

The animal that threatens us is a “cat”. The most dangerous animal there is. It eats meat, children’s flesh in particular. After lacerating its victim with its claws, it devours them with sharp teeth. The face and whole body of the victim.

The father – Dogtooth (2009)
Image from rp.news


So, what is a cover letter? A letter with additional detailed information about you, on why you are qualified for the job. You should include specific information on why you’re a strong match for the employer’s job requirements. It actually is a sales pitch of yourself and skills.A cover letter usually, accompanies your resume you send out. Possible employers use them as a way to screen you, and determine if they would like to interview you. Cover letter is from the 50s, it’s an old idea that has to be retired.

So if I match or not will be determined by a piece of paper? Yes and no! If you are not included in the next steps of the process, it will be why you failed to impress them with your cover letter, even if they never met you! On the other hand, if you are successful to the next stage and meet you, they might use your cover letter against you, like in the movies: “Everything you say will be used against you….” Even a spelling error might be your failure!

What you should write in a cover letter, and why it’s pointless

A cover letter is to highlight the qualifications you have for the job: Then why is the CV for? Why should’t I add more details into my CV? And by qualifications we mean what? Technical qualifications? Personality qualifications (team player open minded etc?)

Explain why you want to work for the specific company/organization: The answer is simple. I want to work because I have to make a living, put food on the table and pay the bills. If I were a millionaire I would have other priorities. Yes, yes, I know… We have to strive for excellence, to become better professionals and try to work for the best employers like Google, Microsoft etc. Well true, but are you sure that you really fit into their world? But in order to work for them, you would lie for sure!

Add well formed enthusiasm as a selling point: This is true. I have done it. And is the biggest lie you have to write! To be enthusiastic about what? About their code base that I haven’t seen, the colleagues and the managers I never met, the company’s culture that is completely unknown to me? If I have to be enthusiastic about the job description, the big salary (if there is one), the company’s name or the size, I will pass! What is the point of working for a big company and suffer cause of toxic people around you?

Behind the curtains

Are we completely sure that an HR manager, HR team member, recruiter spends time reading a CV and a cover letter of dozens or hundreds of candidates? I believe not! But I am sure that they use the cover letter as leverage to push candidates more. They don’t want the best ones, but the most obedient ones!

One thing I have never understood is that how a HR person/recruiter knows if the candidate writes the truth or lies in the cover letter? How do they verify that? Also, which are their priorities? How do they evaluate their candidates? What is their evaluation process? Do they have one? And if the do, you as a candidate should be aware of it!

The best way to know a candidate, and a candidate knows the company, is to meet and talk! It doesn’t matter if it via Skype or in person, but there has to be a meeting! Cause in the end what you actually hire, is a personality that has to work well with other personalities.

Enough with the recruiters and the HR circus

I respect every profession, from the simplest one the most complicated one, but under one basic criterion. To offer something to our every day life. HR and recruitment, as it is applied today, is a completely abuse to everybody and leads nowhere.

  • What is the point a recruiter with no IT background at all, asking me IT questions?
  • Who writes the job description? A technical person how probably knows their shit, or a recruiter?
  • What is the point talking to a recruiter that works for a completely different company than the one I applied for? I will never see them again, but they decide my fate.
  • Why can’t I just talk with the people I am going to work with? If they don’t have the time to do it at that moment, how can I be so sure they will spend time later to train me, if I am finally hired?
  • How do I know the recruiter is really a professional who do know their job by qualifying the best (that they actually don’t know who they are) cover letters, and not the ones they like based on their personal taste?


Interviews in general suck today a lot! Cover letter is just part of the problem. Another problem is the online coding tests platforms. But this is for another day. In order the companies to find an efficient way screening the candidates, they ended up humiliating them by adding useless processes besides the interview itself.

I totally respect the interview and evaluation process when is done correctly, and by correctly I mean with respect to the candidate. I want to work for a company, that primary respects me as a person, and then as professional. I am not a soldier at a military campus training and being evaluated daily, and I don’t want to be scared at the same time, that if in the end of the day my results are poor, I am going to be kicked out.

New job!


Everything flowsHeraclitus said thousands of years ago. So I decided to find a new job. And I did! Today is the end of the first week. The first impressions are quite positive so far. But this is not the goal of the this piece. The goal is to discuss about life changes and why they happen.

Changing job and emotional adjustment

Changing a job has never been an easy task. It means that you probably came to point and you couldn’t stand a number of situations any more. Even the small “I don’t like my job“, might not be that small in the end.

For me it took me six months to take the step. Not because I couldn’t do it earlier, but because I wanted to do it when all stars were aligned, and I believe I did it on the right time.

But every decision comes with a cost, and one of those is the emotional adjustment. New office, new colleagues, new challenges, new domain, a new kind of stress. And the extra stress if you will be able to handle new reality. Of course this applies to those who care about their jobs. The others… oh well they happily live in their own worlds.

Changing job is always a risk

Changing a job is always a risk. Originally fascinated and impressed by the new offices, the smooth interview, you believe that you are joining a better place. But it goes south. And (again?) you find yourself being a member of toxic workplace. In order to find out if the environment is already toxic, ask as many questions as you can, about everything. If the attitude is a “I don’t know. I don’t care that much” one, then run away!

What’s next?

A few new things are in motion as we speak! Whenever they are ready, I will let you know!

Women as software developers


Although I am trying to avoid commenting politics, I believe it’s better to talk rather than keep my mouth shut. Shutting my mouth is the easy task. The motive I am writing this piece, is Greta Thunberg, and the comments full of hate and sexism (unfortunately), I have been reading against her during her visit in the USA, and her presence at the 2019 UN climate action summit in New York. I will not comment on Greta’s actions on environmental awareness, or the hateful comments about her. The whole thing is just a strong motivation for me to express my thoughts on the “women as software developers” issue, that has been quite strong in the past few years.

Ada Lovelace, the first programmer ever

Image from wikipedia
Image from wikipedia

Augusta Ada King, Countess of Lovelace (née Byron; 10 December 1815 – 27 November 1852) was an English mathematician and writer, chiefly known for her work on Charles Babbage’s proposed mechanical general-purpose computer, the Analytical Engine. She was the first to recognize that the machine had applications beyond pure calculation, and published the first algorithm intended to be carried out by such a machine. As a result, she is sometimes regarded as the first to recognize the full potential of a “computing machine” and one of the first computer programmers.

Wikipedia page about Ada Lovelace

In 1840, Babbage was invited to give a seminar at the University of Turin about his Analytical Engine. Luigi Menabrea, a young Italian engineer and the future Prime Minister of Italy, transcribed Babbage’s lecture into French, and this transcript was subsequently published in the Bibliothèque universelle de Genève in October 1842 [1].

Babbage’s friend Charles Wheatstone commissioned Ada Lovelace to translate Menabrea’s paper into English. She then augmented the paper with notes, which were added to the translation. Ada Lovelace spent the better part of a year doing this, assisted with input from Babbage. These notes, which are more extensive than Menabrea’s paper, were then published in the September 1843 edition of Taylor’s Scientific Memoirs under the initialism AAL [1].

Ada Lovelace’s notes were labelled alphabetically from A to G. In note G, she describes an algorithm for the Analytical Engine to compute Bernoulli numbers. It is considered to be the first published algorithm ever specifically tailored for implementation on a computer, and Ada Lovelace has often been cited as the first computer programmer for this reason. The engine was never completed so her program was never tested[1] .

Between 1842 and 1843, Ada translated an article by Italian military engineer Luigi Menabrea on the calculating engine, supplementing it with an elaborate set of notes, simply called Notes. These notes contain what many consider to be the first computer program—that is, an algorithm designed to be carried out by a machine. Other historians reject this perspective and point out that Babbage’s personal notes from the years 1836/1837 contain the first programs for the engine [1].

Lovelace’s notes are important in the early history of computers. She also developed a vision of the capability of computers to go beyond mere calculating or number-crunching, while many others, including Babbage himself, focused only on those capabilities.Her mindset of “poetical science” led her to ask questions about the Analytical Engine (as shown in her notes) examining how individuals and society relate to technology as a collaborative tool.[1]

In 1953, more than a century after her death, Ada Lovelace’s notes on Babbage’s Analytical Engine were republished as an appendix to B.V. Bowden’s Faster than Thought: A Symposium on Digital Computing Machines. The engine has now been recognized as an early model for a computer and her notes as a description of a computer and software.[1]

So in simple terms, Ada was the first programmer ever. Not like the way we know it today, but she was the first one who designed an algorithm, and had a machine to apply it in order to solve a set of problems. If you want to read more about women in computing start from here.

When things went south, and why?

After Ada, lots of women have been involved in the software development business. But if you ask anyone, no one knows them. Maybe Grace Hopper or/and Margaret Hamilton but that’s it! The rest fall off the radar. And the reason is simple. We never cared to know. But why?

In the sixties and the seventies the computer industry in general, was completely different than today. You had to go at work, to face a huge computer like Harvard Mark 1 or IBM 7090. It was a pure scientific work, the societies were progressing and pushing themselves as far as possible from the WWII sufferings. Of course there were stereotypes, racism, bigotry against women and minorities, especially in the US, but about the software development, it was a scientific job for everybody.

And then we have the eighties! Things changed radically and completely! Computers became cheap and small enough that everyone could have (at least) one at home. So PC companies had to build a marketing strategy. What there was in front of them was a male dominant society, so they decided that PCs are toys for boys and not for girls. Let’s check the following examples:

Commodore Computer Club Magazine 1982 Italy
Yugoslavian PC magazine. Most of its covers are like that. Check here
German computer magazine named “CPU”
CompuServe CB simulator
Radio Shack TRS-80 Color Computer (1980)
Texas instruments ad with Bill Cosby
Osborne 1 ad. The company lasted only five years (1980 – 1985)
The great Isaac Asimov
Two hot bytes. Actually this ad was in 1978
IBM 5110 ad
80s PCcommercial compilation

Do you really need me to explain to you of what is wrong with the images above? I don’t think so. The message is clear!

The hidden figures

The cover photo of this article is from here. About the movie check here.

Women working as so-called “human computers” worked for NASA. In the late 19th century, the Harvard College Observatory employed a group of women who collected, studied, and cataloged thousands of images of stars on glass plates. As chronicled in Dava Sobel’s book The Glass Universe, these women were every bit as capable as men despite toiling under less-than-favorable conditions [4].

Williamina Fleming, for instance, classified over 10,000 stars using a scheme she created and was the first to recognize the existence of white dwarfs [4].

In 1935, the NACA (National Advisory Committee for Aeronautics, a precursor to NASA) hired five women to be their first computer pool at the Langley campus. “The women were meticulous and accurate… and they didn’t have to pay them very much,” NASA’s historian Bill Barry says, explaining the NACA’s decision. In June 1941, with war raging in Europe, President Franklin Roosevelt looked to ensure the growth of the federal workforce [4].

First he issued Executive Order 8802, which banned “discrimination in the employment of workers in defense industries or government because of race, creed, color, or national origin” (though it does not include gender). Six months later, after the attack on Pearl Harbor brought the U.S. into the throes of war, NACA and Langley began recruiting African-American women with college degrees to work as human computers [4].

While they did the same work as their white counterparts, African-American computers were paid less and relegated to the segregated west section of the Langley campus, where they had to use separate dining and bathroom facilities. They became known as the “West Computers.” Despite having the same education, they had to retake college courses they had already passed and were often never considered for promotions or other jobs within NACA [4].

One of those women was Dorothy Vaughan. Dorothy Johnson Vaughan (September 20, 1910 – November 10, 2008) was an African American mathematician and human computer who worked for the National Advisory Committee for Aeronautics (NACA), and NASA, at Langley Research Center in Hampton, Virginia [5].

In 1949, she became acting supervisor of the West Area Computers, the first African-American woman to supervise a group of staff at the center. She later was promoted officially to the position. During her 28-year career, Vaughan prepared for the introduction of machine computers in the early 1960s by teaching herself and her staff the programming language of FORTRAN; she later headed the programming section of the Analysis and Computation Division (ACD) at Langley [5].

Seeing that machine computers were going to be the future, she taught the women programming languages and other concepts to prepare them for the transition. Vaughan became proficient in computer programming, teaching herself FORTRAN and teaching it to her coworkers to prepare them for the transition. She contributed to the space program through her work on the Scout Launch Vehicle Program [5].

Dorothy and the Western computers played a significant role in developing the Solid Controlled Orbital Utility Test system (SCOUT), capable of sending a 175 kg satellite into orbit. Vaughan also assisted the calculations of flight trajectories for Project Mercury, the first human spaceflight program of the United States, responsible for the first American orbiting the earth (John Glenn) and Apollo 11 mission to the moon [6].

Dorothy Vaughan’s Retirement Party, 1971 [7]

Project Emma

Project Emma is a wearable device initially created to help a specific person suffering from Parkinson’s, Emma Lawton, to compensate for the intentional tremors in her hands. Project Emma is named after Emma, who was diagnosed with early-onset Parkinson’s at age 29. This designer and creative director was afraid the diagnosis would mean the end of her career, since drawing and writing were difficult with her constant tremors.


The woman responsible for this success is Haiyan Zhang. She is Innovation Director at Microsoft Research Cambridge. Haiyan has a Masters degree with Distinction in Interaction Design from the renowned Interaction Design Institute in Ivrea, and has a Bachelor of Computer Science (First-Class Honours) from Monash University, Australia [9].

This invention started as part of an engagement with the BBC documentary series The Big Life Fix. Haiyan Zhang, Innovation Director at Microsoft Research Cambridge, was tapped by the show to develop a biomedical device that might help Emma. Her team developed the Emma Watch technology, which has helped Emma regain control of her hand in performing simple drawing and writing tasks [8].

What’s next?

First of all, we must stop behaving like idiots, and start behaving like humans with emotions and manners. Women are as much capable as men, to work as software developers, or at any other field, scientific or not. For logic’s sake it’s 2019! It’s stupid to discuss if women can, equally as men or not these days! YES THEY FUCKING CAN. DEAL WITH IT!

There is no need for excluding women, no need for mocking women or making them feel small. I could write a huge analysis about gender equality, social, financial motives and a number of various reasons why women are not a large percentage of the IT industry. But the information is already out there for anyone who cares to search. I don’t want to give any piece advice to any one, on how to behave to women. I believe that is nowadays is already provided by family, school and society itself.

The only piece of advice I am going to give you is that, if you ever feel, for a number of reasons, that women can’t, just stand in front of a mirror and try to define yourself. Try to define if you are sensitive, kind, open minded, mature enough, not only to women, but to everybody, including yourself.

Bonus! The jackass case

Lyndsey Scott, a Victoria’s Secret Model is also a software developer. Some jackasses mocked here online [10]. This happened:

So those smart asses got the best “you had it coming” answer.


[1]. https://en.wikipedia.org/wiki/Ada_Lovelace

[2]. https://www.tandfonline.com/doi/abs/10.1080/00221546.2016.1257306?journalCode=uhej20

[3]. https://www.wbur.org/onpoint/2016/09/06/hidden-figures-book-movie-nasa

[4]. https://www.popularmechanics.com/space/rockets/a24429/hidden-figures-real-story-nasa-women-computers/

[5]. https://en.wikipedia.org/wiki/Dorothy_Vaughan

[6]. https://medium.com/a-computer-of-ones-own/dorothy-vaughan-space-heroine-a9b7e2d6b1b3

[7]. https://www.nasa.gov/image-feature/dorothy-vaughans-retirement-party-1971

[8]. https://www.microsoft.com/en-us/research/project/project-emma/

[9]. https://www.microsoft.com/en-us/research/people/hazhang/

[10]. https://www.boredpanda.com/victoria-secret-model-programmer-lyndsey-scott/?utm_source=google&utm_medium=organic&utm_campaign=organic

A bit of FIWARE history

Tell me something my friend. You ever dance with the devil in the pale moonlight?

Joker/Jack Napier – Batman (1990)
Image from https://comicbook.com


Actually, this is the article I should start with, but I didn’t. Before talking about the functionalities of the Orion context Broker, we should tell a few words about the whole initiative. 

FIWARE is an open source cloud platform with a collaborative and mature ecosystem of developers, innovation Hubs, accelerators, cities and more than 1000 Small and Medium Enterprises and startups. By 2020, businesses leveraging the FIWARE platform are expected to generate revenues of more than EUR 330 million [1].

FIWARE was born in Europe, from the Future Internet Public Private Partnership (FI-PPP) [1]. FI-PPP, the European programme for internet-enabled innovation, is going from strength to strength. FI-PPP has announced the imminent launch of phase 3 aimed at further accelerating the development and adoption of Future Internet technologies in Europe [2]. It’s goals are:

  • accelerating the development and adoption of Future Internet technologies in Europe
  • advancing the European market for smart infrastructures,
  • increasing the effectiveness of business processes through the Internet.

The European FIWARE Accelerator Programme of 16 accelerators, operating within the programme, has attracted over 8,000 submissions to their open calls. More than 1000 Small- and Medium-sized companies (SMEs) and startups have been part of the FIWARE business acceleration programme. They will be serving at least 1.5 million business customers and reaching a market of more than 20 million consumers [1].

The sectors that FIWARE is involved, are the following: Smart cities, AgriFood, eHealth,
Transport, Energy & Environment, Media & Content, Manufacturing & Logistics, Social & Learning. The European Commision has funded 2 projects to continue the FIWARE Accelerator Programme: IMPACT GROWTH and frontierCities² [1].

The Future Internet Public Private Partnership (FI-PPP)

The FI-PPP’s goal was to make infrastructures and business processes smarter (i.e. more intelligent, more efficient, more sustainable) through tighter integration with Internet networking and computing capabilities  It looked at different sectors such as transport, health, and energy. It defined possible innovative business models for these sectors [1].

The FI-PPP followed an industry-driven, user-oriented approach that combined R&D on network and communication technologies, devices, software, service and media technologies; and their experimentation and validation in real application contexts. It brings together the demand and supply sides, and it involves users early into the research lifecycle. The platform technologies is still used and validated by many actors, in particular by SMEs and public administrations [1].

The FIWARE Foundation

The FIWARE Foundation is the legal independent body providing shared resources to help achieve the FIWARE mission by promoting, augmenting, protecting, and validating the FIWARE technologies as well as the activities of the FIWARE community, empowering its members including end users, developers and rest of stakeholders in the entire ecosystem. The FIWARE Foundation is open: anybody can join contributing to a transparent governance of FIWARE activities and rising through the ranks, based on merit. Founded in 2016 by Atos, Engineering, Orange, and Telefónica, the Foundation is a non-profit organization that encourages the adoption of a common, collaborative and interoperable data sharing framework based on standards and open source technology [3].

Currently as we speak, the FIWARE foundation has 250+ members from 35 countries, 150+ open source projects, 140+ “Powered by FIWARE” solutions, 2,000+ Open source developers contributing code, 100+ Evangelists, 13 FIWARE iHubs, 13 FIWARE Lab Nodes, 10+ Strategic Partnerships [3].

The mission is to develop an open sustainable ecosystem around public, royalty-free and implementation-driven software platform standards that will ease the creation of Smart Applications in multiple sectors. Using FIWARE technologies, organizations can capture the opportunities that are emerging with the new wave of digitalisation brought by combining the Internet of Things with Context Information Management and Big Data services on the Cloud. On the other hand, developers can gather context information at large scale from many different sources. FIWARE also helps to easily process, analyse and visualize managed context information, easing the implementation of the smart behaviour and the enhanced user experience required by next-generation Smart Applications [3].

The FIWARE Community comprises all individuals and organizations contributing achieving the FIWARE Mission. The FIWARE Community is not only formed by contributors to the technology (the Open Source Community working on the FIWARE platform), but also those who contribute in building the FIWARE ecosystem and making it sustainable over time [3].

The FIWARE Technical Steering Committee governs the technical direction of the FIWARE platform and activities of the FIWARE Open Source Community. Governance of the rest of activities carried out by members of the FIWARE Community is organized through Mission Support Committees [3].

The Fiware accelerator program

The FIWARE Accelerator Programme promotes the take up of FIWARE technologies among solution integrators and application developers, with special focus on SMEs and start-ups. Linked to this Programme, the EU launched an ambitious campaign in September 2014 mobilizing up to 100M€, to support 1000 entrepreneurs, SMEs and startups to develop innovative applications based on FIWARE [4].

At this moment, the FIWARE Accelerator Programme is being assembled as a crucial part of the FIWARE Community collaborating with the FIWARE Open Source Community and the rest of FIWARE programmes. Altogether, they will continue their contribution to building the FIWARE ecosystem and make it sustainable over time. Coordination of activities linked to the FIWARE Accelerator Programme takes place in the FIWARE Accelerators Ecosystem Support Committee whose members are encouraged to work together in specific Working Groups [4].

Who is using FIWARE?

SELECT for Cities is based on the notion that cities across the globe are on a continuous search for new and innovative technologies, methods and tools to foster innovation, as well as to create value for both business and citizens, in order to transform into ‘Smart Cities’. The project brings together three cities (Antwerp, Copenhagen, Helsinki) that want to compare different Smart City solutions via an increasing competitive tendering approach. Following the first phase, which is based on the documentation of the architecture and, in some cases, early prototypes, five solutions were selected to participate in the second phase, out of which Engineering, Orchestra Cities, FIWOO, and the Snap4City Platform are using FIWARE components [5].

The IoF2020 project is dedicated to accelerate adoption of IoT for securing sufficient, safe and healthy food and to strengthen competitiveness of farming and food chains in Europe. The IoF2020 consortium of 73 partners, led by Wageningen UR and other core partners of previous key projects such as FIWARE and IoT-A, will leverage the ecosystem and architecture that was established in those projects. The heart of the project is formed by 19 use cases grouped in 5 trials with end users from the Arable, Dairy, Fruits, Vegetables and Meat verticals and IoT integrators that will demonstrate the business case of innovative IoT solutions for a large number of application areas [6].IoF2020 is part of Horizon 2020 Industrial Leadership and supported by the European Commission with a budget of EUR 30 million [7]. 

The Z-BRE4K architecture is designed and developed on the foundations of the AUTOWARE reference architecture and building blocks enabling the convergence of Information Technology (IT), perational Technology (OT), Engineering Technology (ET) and the leveraging of interoperability of Industrial Data Spaces (IDS), for the support of a factory ecosystem. The objective is to develop a highly adaptive real-time Machine (network of components) Simulation platform that wraps around the physical equipment for predicting uptimes and BRE4Kdowns – thus creating intuitive maintenance control and management systems. The AUTOWARE consortium has created a framework based on other existing frameworks (e.g. BEinCPPS, FIWARE, RAMI4.0) and taking into consideration the industrial requirements from several use cases, thereby aiming to be a solution-oriented framework [8].

On, July 9 2019 NEC Europe and its advanced Smart City solution, the CCOC, has recently been certified a “Powered by FIWARE Platform, becoming part of the FIWARE Marketplace of platforms. This certification complements the one received in 2017 as “Powered by FIWARE Solutions”. NEC CCOC manages information at large scale and gather Context Information coming from different and highly distributed sources such as end users, sensor networks and all kinds of information systems, including social networks, processing it in order to perform smart actions, including prediction and prescriptions. CCOC (Cloud City Operation Centre) solution collects both, real-time and long-term data, coming from all city sources, it automates city processes and allows for the swift provision of municipal services, which in turn reduces the workload at monitoring centers [9].

Read more

Please visit the FIWARE website. Here you will find all the necessary information about FIWARE progress.


[1]. https://ec.europa.eu/digital-single-market/en/future-internet-public-private-partnership

[2]. https://ec.europa.eu/digital-single-market/en/news/future-internet-%E2%80%93-public-private-partnership-fi-ppp-0

[3]. https://www.fiware.org/foundation/

[4]. https://www.fiware.org/community/fiware-accelerator-programme/

[5]. https://www.fiware.org/2018/06/04/4-solutions-using-fiware-are-in-phase-2-of-select-for-cities/

[6]. https://cordis.europa.eu/project/rcn/206761/factsheet/en

[7]. https://www.iof2020.eu/

[8]. https://www.z-bre4k.eu/wp-content/uploads/2019/09/Z-BRE4K_768869_Deliverable_D1.3.pdf

[9]. https://www.fiware.org/news/nec-smart-city-solution-is-now-certified-powered-by-fiware-platform/

Internet object

Live without your sunlight, love without your heartbeat

Jareth the Goblin King – Labyrinth (1986)


A small article about the internet object. Internet object is one more format for sending data over the wire. Specifically:

It is designed for transferring data over internet, Internet Object is a new age serialization/data-interchange format. It is human readable, thin, self explanatory, robust and schema oriented. It was developed by Mohamed Aamir Maniar out of frustrations associated with JSON.

by https://internetobject.org

The internet object is separated is two parts: The schema and the values (internet) object.


 age: {
   min: 20
 address: {
 active?: bool,
 tags?: [

Please pay attention to the age part of the template. It has a restriction of minimum twenty years of age. The schema includes it’s own validations. Additionally it explicitly refers to the required types: active?: bool, tags?: [string]



The internet object’s goal are the following

  • Thin & Lightweight: The internet object‘s author, declares that compared with JSON, it reduces the data size to around 40%.
  • Built-in Schema & Validations: Internet Object was designed with a robust schema support in mind. It checks the data and saves developers’ time by providing built-in data validation support at both ends (Sending and Receiving).
  • Well Planned & Designed:Designed after carefully considering the needs; Internet Object encourages the separation of definitions and metadata from data, favors minimalism, supports streaming of large collection and much more“.

    Well, in principle, I support this notion, but we have to see how internet object will be able to handle complex responses objects
  • Simple & Easy: “Internet Object is a minimalistic, text-based, language-independent and human-readable data-interchange format. It is easy on the eyes and quick to start”.

    At least for small objects, this is true.


Based on their benchmarks, we have the following results.

For 1 Record(s) 
IO Data: 495 
IO Data with Header: 671 
JSON: 887 
IO is 44.19% smaller than JSON! 
IO with header is 24.34% smaller than JSON! 

For 100 record(s) 
IO Data: 50862 
IO Data with Header: 51038 
JSON: 89963 
IO is 43.46% smaller than JSON! 
IO with header is 43.27% smaller than JSON! 

For 1000 record(s) 
IO Data: 506234 
IO Data with Header: 506410 
JSON: 897235 
IO is 43.58% smaller than JSON! 
IO with header is 43.56% smaller than JSON! 

Is there a parser?

Yes there is, but is not ready yet. Check their github repository.

How do we got here?

It’s been almost twenty years, since JSON and its derivatives came into our lifes, like JSON-RPC and SOAPjr. Other alternatives are YAML and the oldest of all, XML that was dominant during the SOAP era.

If you want to read more about it, here is and article from internet object’s author. Enjoy!


[1]. https://internetobject.org/

[2]. https://github.com/maniartech/InternetObject-vs-JSON-benchmark