Monday, August 21, 2017

What if programming languages were accommodation for tourists

Finding good accommodation for vacations is neither easy nor straightforward. It requires some experience and some investigative skills. I was in a good summer mood when planning my own vacations and a thought occurred: What if programming languages were accommodation for tourists?

The internet is full of humorous what if programming languages texts, but couldn't find one for accommodation, so I wrote my own. Summer is a good time for writing funny, lightweight, worthless posts.

Enjoy!

Java

An expensive, luxury 5-star hotel. Everyday you wonder why you pay such money for services you rarely use. If money is not an issue this is the best choice.

JavaScript

A decent bed and breakfast. Nothing more, nothing less. Suitable only if you are outdoors for sightseeing the whole day.

C++

A hostel. You must handle everything yourself: living conditions, transportation, guides, neighbors etc. Recommended only to young and experienced travelers.

Go

A decent 3-star hotel. The personnel is the most kind, helpful and trained you ever met. You will enjoy it but next year you will consider the 5-star hotels.

Ruby

Airbnb. It looks beautiful and cheap on the site but you can never be sure until you see it with your eyes.

Python

Hospitality. You are hosted in a friend's house. Everything depends on how good and close that friend is.

PHP

Apartment. You couldn't find anything decent online so you talk to a friend who has a friend with a friend who rents rooms. Hope for the best but prepare for the worst.

Clojure

A mansion. A well preserved 19th century mansion, located inside a big, beautiful garden and with a path to a private beach. Nature and serenity but where are the people? Recommended to fiction writers or avid readers.

Monday, July 24, 2017

Inspiration and Irritation

Recently I read an excellent post about Claude Shannon the father of the information age. In the post, the author summarizes his approach to problem solving as "Don’t look for inspiration. Look for irritation".

This is an interesting approach. I thought that as an IT professional, there are many things that irritate me. Most of them are personal views but others are generally accepted. The list is not exhaustive as I don't want to sound too grumpy.

Limited Connectivity


Turn on the Wi-Fi at a random place and you will probably see between 10 to 20 networks. Almost all of them are secured, you don't have credentials for either of them and rightfully you don't trust the free ones. So you walk a little until you get to a familiar place with a network you are registered to. Of course there are another 10 networks at this place but you only have access to one. After a while you have to leave this place, your device forgets this network and you must find another one a few meters further. So on the average there are 10-20 Wi-Fi networks at every place, idle most of the time and no user is connected 24x7. This is a total waste of bandwidth and user experience. It happens because network connectivity is not considered a resource but rather a bonus or a benefit like we have free Wi-Fi with your coffee. The equivalent for water would have been bottled water selling machines every 10m and no taps, fountains or pipe network. Of course that would have been unacceptable.

In the European Union Wifi4EU is a project for free Wi-Fi everywhere. It is a good step but it seems like putting bottled water selling machines every 1m. In the US they have a bigger problem to solve as net neutrality is threatened an issue much bigger than 24x7 connectivity.

Networks are resources and should be treated as such. We need free, fast, neutral networks everywhere.

The Digital Dark Age


Nowadays terra bytes of new information are generated every day and all sites try hard to provide real time services. What about the information of yesterday or the previous year or 5 years ago? Well, generally nobody cares. A good article you read and bookmarked last year may be still online, you may be still able to find a video from 2 years and you may still contribute to a discussion thread started some time ago. The issue is that past information becomes inaccessible and eventually is lost. This comes in two flavors:
  • technology: new technology does not try to be fully backwards compatible and we lose artifacts stored using older technology. Read this excellent post by Rob Pike for more details
  • archiving: almost all sites overwrite previous versions when adding new content and do not preserve the previous. Vint Cerf believes that can be solved in a generic way using existing technologies
This is important because it is about our heritage. Something that didn't work in the past may inspire something in the future. Since we have the technology to preserve and index everything we should do it on a continuous base. Nothing should be lost. Notable work towards this is done by the internet archive and the software heritage but it needs to be done globally by every site and provider.

Devices are not interconnected


Laptops, tablets, cellphones  are connected to the cloud and this is very good. Examples of daily and common use are very familiar: I enjoy my coffee and I have a good idea. I put it in google keep and when i open my laptop later at home I find it there. I am at work and a friend sends me a nice video. I can put it in pocket and enjoy it later on my tablet. I start writing a document. I can share it with my colleagues with google docs and check their changes and comments in real time.

However connectivity to the cloud implicitly means usage of only one device at a time. What if I want to use all my devices together? Well, in this case I am alone. I have to move from device to device, open apps on demand and upload/download data continuously, a very bad user experience indeed. Devices cannot cooperate together to give a better environment. This limits our possibilities significantly. Some usage patterns can be:
  • edit a file on my laptop and check urls fr it to the nearby tablet automatically
  • switch view of a video from my tablet to my laptop with just a click
  • see photos from past vacations on my laptop and my tablet automatically search and play music from that period
  • see current photos on my tablet and my laptop automatically generate artistic collages from them or fix them with filters
  • write a document on my tablet and my laptop stream a sound version of it in another language for practicing my skills
  • surf the web on my phone and my laptop generate a visualization of the graph
The possibilities are endless. My hope is that since voice interfaces are becoming common, all devices would hear the voice of the user and each respond differently depending on the task and the topology.

The web is not interconnected any more


The WWW was build and succeeded based on the power of the link. A web page should have references to other web pages. The other web pages need not have similar content and this is the power of the model. It works like the coherence of the human thought. A good book can make you think of paintings. A good song can make you think of travelling. A good article can make you think of politics. The links make the web simple and powerful and help organize and decentralize the information. Unfortunately the web has become a business domain and sites loose money if you leave them for another site, so there are not external links. In the cases that external information is needed most sites prefer to embed it or make a strong hint for it. It has become daily practice to read articles without links, mark interesting text snippets and right-click "search with google" to find additional information.

Extreme cases of limited interconnection are the "silos", sites like Facebook, twitter, Instagram etc. These embed all their content and not only they don't have or support links outside but make it difficult to point a link inside them to target small information snippets.

I loved the early days of the web where surfing was actually a learning process. Following links is like discussing a topic with others. Googling is like a presentation by a teacher. Both are needed but it seems we have lost the former. This excellent post by Hossein Derakhshan is a great summary of the bad situation we are in.

Beautiful web pages are hard to find


The average web page is
  • Bloated It has big overhead compared to the actual information content and if the connection is slow or the hardware a bit slow then the loading lag is noticeable. This happens mainly because nowadays web pages are not documents but rather programs that generate content.
  • Unreadable Few pages take typography, aesthetic aspects and accessibility seriously. Most of them want to include almost everything in the page to facilitate SEO and attract clicks and they make the reader a second priority. If google puts us first we are OK even if the page is badly designed.
  • Annoying Too much advertising and too much tracking. This affects not only the loading speed of a page but the whole user experience since as you surf we carry and see information about your actions on a previous page. A common example is book suggestions from amazon while you read an article on climate change.
I would like to add another aspect, maybe minor maybe not, web publishing for non-IT professionals. It is not easy to create a web site anymore. The requirements for a good site are many and a non-IT user does not have the technical background to cope with them. The solution are site-building sites or sites with predefined templates. They make it easy to publish content but they hide the details from end users. This is not necessarily bad but in the early days it was very easy to learn html and write your own page. I don't like that non-IT people became frustrated from the complexity of the web, stopped coding and started using out of the box solutions. I hope that the rising popularity of static site generators and cloud deployment will bring back people to coding, especially kids.

Operating systems have become irrelevant


During the day we use multiple devices and operating systems. My setup is android, iOS, windows and chrome OS. I use 4 machines daily with 4 different operating systems. Almost mechanically I press "update" when the notification comes and I get the latest version every time. So, what new features I get and in what ways my computing experience has improved? To be honest I can't tell. The computing world is nowadays the applications and they are the same on all devices and OSes. Most OS updates and new features are either shortcuts for common tasks or ports of popular applications to the base OS. New, exciting ways to use the computer are missing.

I think the computer is the most revolutionary machine ever invented and the ways it enhances human productivity and imagination are countless. However to get the best from it you need special coding skills. Out of the box the computers have become difficult and tedious to use. It is the job of the OS not of the application to give a sweet, fast and intuitive interface to the computer and there is a lot of work to be done in this direction. We need better ways to interconnect devices and applications, move and transform data around and make computers work, find and present data to the users proactively rather expecting users to request them on demand and leave for the computer only some decorations for the presentation. I think we must aim high on this like in the movies  and stop considering things like "C-t closes least recent active window" or "file explorer with custom colors" as innovations any more.

Saturday, May 20, 2017

Impressions from Voxxed days Athens

After Voxxed day Thessaloniki, it was the turn of Athens to host the event. The bar was set very high because of the enormous success of the first Voxxed days in Greece. As i walked through the venue and talked with my fellow engineers i could notice that almost everyone was anxious for the talks and had absolutely no concern about the various organizational aspects. They expected everything to be just fine and so it was.

The event was sold out and the venue was full of IT professionals. The sponsors had their own place to present themselves, answer questions and discuss potential collaborations and prospects with people interested in their work. The most impressive was stoiximan  who had an installation of the VR project they made with the Greek football champion Olympiakos. It was really impressive to see it and more impressive to live it. You can see it on youtube

I was very happy to see many Greek colleagues that now work abroad and came to Athens for the event. Looks like Voxxed has become a pan-European meeting place.

The venue was OK for the talks but the rooms for socializing and networking were a bit small and were always very crowded. The food was fine, not as good as in Thessaloniki but honestly no Greek city has better food than Thessaloniki.

And now the interesting part

The talks


There were 3 tracks with a total of 17 talks and also 2 common keynotes, the opening and the closing ones. That way you could attend at most 8 talks. My choices were:

The Art of Visualising Software Architecture by Simon Brown


The opening keynote of the event was a small workshop about notations and diagrams for software architecture. This topic reminds me of a Dilbert strip, obviously inspired from real life


but fortunately the talk had a very solid base also inspired from real life. It discussed various abstractions and notations for modeling the software architecture and presented many examples both good and bad. Architecture Visualization  is very important but most engineers use their own custom notation and not a common vocabulary. This hinter communication, understanding and eventually evolution of systems. Simon also presented his own model of software architecture, called C4 for Context, Containers, Components, Code, and structurizr his tools for expressing and visualizing architecture. You can find his presentations, tools and much more at https://structurizr.com/ A very interesting talk that reminded us the obvious we always forget, that a software system is much much more that the code

Implementing binary protocols with Elixir by Ole Michaelis


I attended the http2 talk by Ole at Voxxed Thessaloniki and i liked his lively presenting style, so i decided to attend his talk. This time he presented an elixir implementation of an http2 request parser. I have a good picture of elixir, mostly by following the blog of my friend Dimitris. I can understand code snippets in elixir but still can't use it. You see the book i bought at Fossdem is still in the bag :-(


Nevertheless Ole explained the features he used each time and it was easy for us to keep in touch with his ideas. He implemented the parser using pattern matching. To oversimplify, it is a mechanism that instructs the compiler to decide at runtime which function to call based on the values of the arguments. With this mechanism he "almost" embedded the http2 request format in the signatures of the functions and the compiler practically unraveled the parser flow during the runtime. It seems magical, and elixir pattern matching is indeed magical. I am not a fan of such exotic features, they are like the songs of the sirens and i prefer explicit function calls. However i really enjoy such talks from hackers to hackers presenting good hacks. I liked this talk and probably i will take the book from the bag.

Security issues and challenges when building novel web applications by Barbara Vieria and Theodoor Scholte


A talk for systems security based on the speaker's experience from auditing and reviewing software systems. They presented common areas of errors, statistics about failures and some of the features of ISO 25010 Then they proceeded to describe a very common system architecture, a typical 3tier with angular.js and mongodb and discussed many of the security errors and pitfalls like unauthorized access, code injection, XSS, output escaping and many more. A very useful talk for engineers without a proper background on software security. The also presented a tool that can help you with code and security. You can find it at https://bettercodehub.com/

Continuous learning of Tech Professionals in an evolving world by Dimitris Livas


One thing is sure in the IT industry: Nothing is steady, everything moves very fast. You cannot rely on today's knowledge to take you very far. Technology evolves with a very fast rate: Tools, practices and even whole platforms that are relevant today may not even exist in 10 years. Industry also evolves with a very fast rate: You cannot predict what kind of jobs will be high in-demand in the future. Business evolves: The business models keep changing. We have witnessed the internet effect and we are now seeing the AI effect. Finally people evolve too: They have ambitions, goals and needs. In such a world continuous learning is a necessity. Dimitris presented a methodology for it that he calls "the scrumification of personal development process". In a nutshell each individual is the product owner of the most valuable product, himself, and he can apply scrum and agile methodologies to evolve personally. The values the process are having a purpose, being adventurous, being agile, respecting colleagues and trust. You can find more about his methodology at the web site of his company, Agile Actors

The topic of continuous learning is a very interesting one. It is not simple however. It always depends on the context. It is very difficult to decide what to learn next and when and to make the decision proactively before you are forced to. It is always better to be prepared for the future that trying to catch up with it. The "scrumification" seems mostly a proposal for IT companies to adapt such a process so that they can evolve together with their personnel. An individual of course can embrace it but it is not clear how it can work in this case. Anyway it was a very nice talk about a very topical issue.

Create a JEE Test Automation Framework with Cucumber.io and Selenium Webdriver by Vangelis Ghiossis


A talk about the internal test infrastructure of Advantage FSE. They develop mission critical systems for banking and payments and it is of great importance to ensure the quality of their deliverables. They presented to us how they test their products. They assembled a stack for testing using maven, gitlab, nexus, ansible, docker, cucumber, selenium, appium and acunetix and configured it for their needs. This stack helps them test quickly and reliable applications on different mobile devices and on different OS/browser configurations. The specifications written in cucumber in a human like language are under QA and version control and the whole stack uses Jira and slack to communicate the results with the engineers. They also made a live demo of the stack testing the voxxed Athens page.

A good talk. Objectively there are many ways to assemble such a stack and each company has it's own variant but it is of great help that companies share such knowledge and in a way teach and urge engineers to build and use them.

Elixir: scaling for the future using 30 year old tech by Manos Emmanouilidis


The second talk about elixir today. This was an 101 talk but the purpose was not to demonstrate the language vigorously. It was an overview of the history of erlang and elixir, the design motivation for the new language and a tour of the features. The goal was to urge the audience to have a look at elixir and expunge the fear of erlang both the VM and the language. A very nice motivational talk indeed.

A language that supports concurrency must be in every developer's arsenal. There are many good choices available like clojure, scala, go (my favorite) and elixir. If you are a fan of ruby you should try elixir right away, it has the same feel.

To get a glimpse of elixir in a real production environment check this blog post by Manos on "Binary data over Phoenix sockets"

Costs of the Cult of Expertise by Jessica Rose


Who is an expert? Who has exceptional skills? Is expertise and skills related? How can we spot them? Can we pass an incompetent for expert and vice versa?


A great talk about managing people and expunging the myths of expertise. The talk had 4 sections:
  1. Definition of expertise and skills in various contexts
  2. Teams and expertise - the part about hiring an expert
  3. Community and expertise - the part about identifying and acknowledging an expert
  4. Individual expertise - how can you become an expert if you already aren't

The talk was full of interesting stories from her experience about geniuses and jerks, experts and incompetents. Moreover the talk was very lively as she talked with the audience for opinions and experiences. Very nice and thought provoking talk. Kudos to Jessica for it.

Numbers by Douglas Crockford


The closing keynote was by Douglas Crockford of javascript and json fame. He made a very interesting talk about numbers, how they evolved historically from ancient Sumerians to Greeks and Arabs. How they served civilization faithfully for many centuries until we integrated them badly in programming languages. Then we started having problems with integer overflows and floating point rounding errors. He believes that the solution is a single numeric type that is always correct. This is his DEC64 project that he presented to us.

An exciting talk about low level computer arithmetic and programming language design. It remains to be seen if his ideas will be accepted by new language designers.

The talk had many historical references and a tribute to great mathematicians of the past. I will only reference Tahuti, the inventor of writing who later become an Egyptian God. As Mr Crockford said, "in a sense we are his children"

Aftermath

Voxxed Athens was a great experience. All the people i talked afterwards liked it very much and renounced the meeting for Thessaloniki. We are very happy because we now have 2 great conferences for developers in Greece and we are looking forward to attend them every year.



Wednesday, February 8, 2017

Reflecting on FOSDEM 2017

FOSDEM 2017


FOSDEM is the largest European event for software developers. The 2017 edition had around 600 talks and almost 12000 visitors. Every community is present there. You can meet people from the projects you are interested in and interesting people from projects you haven't even heard about. You can influence and be influenced in many and often unforeseen ways. An idea or a random thought that you say or hear may result to a single commit or to a new project.

All talks in FOSDEM are streamed live yet all these people choose to come to the event. It is like going to a good restaurant. In the end it is not about the food but about socializing and spending time with interesting people.

The organization of the event was very good, because of the work of many volunteers. There were complaints about full queues for food or full rooms or small rooms but of course in such a scale these are inevitable. No hacker there claimed that he can write an app to improve on the organizational aspects and this is a proof of the good organization. The good mood of the people was not affected even by the rain that kept on for all the weekend. I would say that because of the rain people stayed a bit longer at the stands discussing with the representatives of each one and looking for stickers and t-shirts. 

The Talks


Before the event i made a plan for the talks i would attend. I intended to focus on non-technical talks and hear about software in general, applications and social aspects.  However it didn't go as planned. Sometimes the fatigue, sometimes a full room but more often a change of plan because of an instant inspiration(remember the vibes of the communities), resulted in a much different talks set than intended.  The talks i attended in Saturday, the first day:

Kubernetes on the road to GIFEE A talk on Kubernetes and how it enables consistent infrastructure everywhere. Also a small perusal of the tools offered by CoreOS. A good overview of the above, mainly intended for a less experienced audience.

Software Heritage Preserving the Free Software Commons This is a very interesting project. It views software as a common resource for humanity and builds infrastructure to preserve it and make it easily accessible to everyone. The talk was a presentation of the project, it's goals and it's targets. At FOSDEM they also released an API for data and now they are starting to build the community around it. I think it is a project that must be watched very carefully, it has great value.

What legal and policy issues concerning FOSS need to be systematically researched? A legal talk about FOSS which was mind blowing. There are many issues of critical importance. To name just a few:
  • software procurement
  • data formats, open or close
  • standards and organizations
  • licenses
  • copyright
  • distribution
and many more. I liked this talk very much as it was presented in a very simplistic language and touched all the points. At the time of writing the slides are not published yet. Luckily i have photographs 😉 It is very important to understand, in par with the talk on software heritage that software is much more than code and plays a very important role in our lives. We, developers, tend to focus on technical stuff and easily miss or bypass these aspects which is wrong.

Introduction to A-Frame Build Virtual Reality on the Web A talk on virtual reality for the web. To be honest i went there to see some mind blowing graphics but it was a tutorial of the technology. Well, at least i saw that it is easy to do it yourself but i really wanted to see graphics not markup

From pipelines to graphs A lightning talk about dgsh a shell supporting scatter-gather pipelines. This was a very exciting talk as it demonstrated examples of data flow processing on acyclic graphs that usually are written in higher level frameworks and not in the shell. If this works then we have a very good tool for quickly prototyping such flows. From a first glimpse on the project the documentation is very good and is easy to start with. I will certainly give it a try as i have some very good use cases.

The RocksDB storage engine for MySQL A new storage engine for MySQL. It is supposed to be a replacement for InnoDB, it has good prospects but is not there yet. It was a high level talk. I really wanted to hear about SSTables and disk latencies but as they told me these were presented at FOSDEM 2016 and this talk is the logical continuation. In other word i saw the second half of a big talk.

Don't break the Internet!, Mozilla Copyright Campaign in Europe The EU copyright law is broken. Go to https://www.changecopyright.org and read about it. The new law under discussion is in fact worse. The law makers do not understand copyright in the digital age. The talk was a synopsis of the current state of the new law. Visit the site it contains very useful information

The Go room


The second day, was the day of go and i attended all the talks of the track. For this track i want to talk about gophers not talks. Although go was designed as a systems programming language it is now used in every field. In FOSDEM officially, we saw go for android, go for robotics (with drones flying in the room), go for advanced assembly, go for systems programming and go for monitoring. In FOSDEM unofficially, go was everywhere. There were many people interested in the platform and there were many teams already using it for exceptional things. Most of them passed from the go room to attend. The room was overcrowded for the go1.8 features. It seems without exaggeration that nowadays go is the second most important point of excitement in our industry, the first one of course being AI. But really it is amazing that so many people become excited because a new version of a platform adds a new API for something. My 1p thought is that people have become tired of learning complex platforms and they just want simple and efficient tools to concentrate on their applications. Go is such a tool and the excitement is justified.

Aftermath


FOSDEM is always a great experience and the 2017 edition was not an exception. It is the kind of event that reboots your mind and installs new software. The impressive is that every time the spike is different. It can be an aspiring talk or an impressive demo or just an idea you discussed in the cafeteria with someone you met there. The spike is different but the source is always the same: the people and the communities they form.


Friday, January 13, 2017

Mindmapping an AI talk

Yesterday, Professor Constantinos Daskalakis of MIT gave an interesting talk in Athens about AI. The talk was intended for a general non technical audience and discussed general issues like the definition of AI, its impact and its future.

Unfortunately i was a bit late and couldn't get an invitation for the auditorium so i watched it live from the video wall. While watching i tried to mindmap it for future reference. The final result from paper to iThoughts is:


Friday, December 30, 2016

Thoughts on silversmithing and software engineering


"Yiannena, leader in arms, in piasters and in letters" is a famous Greek phrase that summarizes the status of the Greek city of Ioannina at the end of the 18th century and the beginning of the 19th. Indeed Ioannina, at that time a part of the Ottoman empire and under the leadership of Ali Pasha, were the wealthiest Greek city, had the most schools in the country and were a significant military force.

Ioannina gained a large part of the wealth by trading silver artifacts. The city gathered the greatest silversmiths and they were producing beautiful artifacts and eventually became known as the city of silversmiths. That tradition continued for many years and included many great craftsmen. One of the most famous was Sotiris Voulgaris who eventually migrated to Italy and founded the famous Bvlgari house.

Recently a new museum for silversmithing opened in Ioannina and i paid a visit today. It is housed on a beautifully renovated Ottoman building of the 18th century inside the castle of Ioannina. The museum consists of two levels.

The first level is the technological museum. It demonstrates all the techniques used by the craftsmen to construct the silverware. For each technique there is a showcase with tools, first matters and instructions about it. Next to the showcase is a screen that shows a video of a silversmith that demonstrates the technique to build an artifact. Almost all the techniques require great precision, timing and a very steady hand. Silversmithing is definitely not something you learn by learning a book. It requires years of practice. The most important techniques are: cupellation, hammering, raising, sand casting, filigree, savati and repoussage. Each of them produces a very different type of artifact.

The first level also contains information about the history and tradition of silversmithing in Ioannina, the bios of some great craftsmen and some illustrious clients of them. Also there are important informations about the social impacts. Greek readers should know that the phrases "ροδάνι η γλώσσα" and "ξετσίπωτη γυναίκα" are metaphors for some tools of the silversmiths.

The second level of the museum contains a rich exhibition of silver artifacts. It includes guns, swords, cartridge boxes, lucky charms, belt buckles, candelabras, bible covers, chalices, jewellery and much more. Each one of them is demonstrated in a proper showcase that allows viewing from all sides so that the visitor can fully admire both the piece and the craftsmanship. All these are accompanied by rich information on the social status of silverware through history.

In both floors there are touch screens with additional information and there is also a computer room with applications related to the museum like quizzes, encyclopedia and a drawing program with patterns from the exhibited artifacts.

In a nutshell the new museum is a jewel for Ioannina. It beautifully demonstrates a very important part of the city's history but also succeeds in hooking the visitor into the art of silversmithing. Add to this the beautiful building of stone and you have a very good reason for a visit.

My impressions from the visit should end here but alas i am a software engineer and can't avoid compare this art with mine.

Of course you can make many parallelisms like comparing software maintenance with cupellation (recycling silver), or compare sand casting with reusable libraries and frameworks. You can even go very far and compare filigree (a silver thread) with the flow of a program, or compare working on hot metal with testing on production. All these are valid but the main differences are two in my opinion.

The first one is visibility. A silver artifact is designed to be beautiful and breathtaking. There artifacts will be visible by many people who will admire both them and the skill of the craftsman. You buy silverware to impress. On the contrary, the best software is transparent. Users do not and should not care about the internals of the software but only if it gets the work done. They don't care about scaling they care only to find quickly what they search in the web. They don't care about clustering algorithms, they just want to find the best product to buy in the cheaper price. They don't care about containers they just want their machine to boot fast and never crash. They don't care about filesystems they just want to see the photos in their camera. The internals of software should concern only engineers not users. Although this is a very simple principle it is very often violated in practice. Engineers sometimes fail to properly evaluate the user's needs and they expose everything under the Trojan horse of configurability or as big tables of complex data or forms of colored buttons which is wrong. The correct way is to build it properly. Sometimes they focus too much on technology that software is impossible to be used by casual users.  But the worst thing is that most engineers think that something is good if there is a path to learn it, even if this path is difficult. This is very wrong. Computers and software should help users not vice versa and hence must be very easy to use. If a user has to learn a very different part of the software to do a slightly different job something is wrong. Good software is transparent.

The second big difference is craftsmanship. A silversmith masters his art and creates beautiful artifacts. His artifacts reflect good reputation to him and he gains glory and recognition. He may pass his knowledge to an apprentice if he desires. Well, not in software. We have learned that good software can only be build by teams not individual great programmers no matter how good they are. Also knowledge should be free and distributed quickly through communities. Although this is also obvious it is also very often violated in practice. Still some engineers believe in the legend of the great hacker/craftsman and they work that way. Undeniably they are very good in their work but they don't distribute their knowledge in the team and some times they don't want teammates, they prefer to work individually. But even in the case of a team the knowledge, the skills and the work are not evenly distributed and this causes great problems if the master fails to deliver. The situation is worse for communities as many good engineers don't share experiences and knowledge fearing that they may loose the master badge. Good software can be produced only by teams of uniformly skilled individuals very actively collaborating. Everything else that focuses on individuals and not on teams will fail in the long run.

Silverware is a luxury. A century ago people were buying silver artifacts to increase their social status. Today it is out of fashion as people prefer electronic gadgets and cars. However it may return in the future. But software is not a luxury, it is the engine of the digital age. Every day we rely more and more on software to do simple and complex things. We rely so much on it that it is crucial to be good and working. It is difficult to write such software but at least let not the myths of the craftsman and demonstration hinter us.

Friday, October 21, 2016

Impressions from Voxxed days Thessaloniki

For the first time, voxxed days was held in Thessaloniki, Greece. We, the community, were very excited about this but we were also anxious if it would comply with the high quality standards of the brand. And it certainly did! And it certainly met all our expectations!

I had a great day meeting colleagues and friends and new interesting people to talk with. The topics of discussion were of course the talks delivered during the conference but also and more important the state of the Greek IT which has been hit hard by the Greek economic crisis. But no matter how a discussion between developers starts, even for debt and IMF, it eventually becomes purely technical about microservices and designing for failure.

Thessaloniki is one of the most beautiful Greek cities and a great destination for food lovers, so no surprise that the venue, the food and the pastries were excellent.

Now the talks. There were three tracks: java/devops, big data/methodology and web. There were 2 common keynotes so you had to chose 5 out of 15 talks to attend. I decided to optimize for best practical value and i avoided talks about new technologies and future directions. I unashamedly cared only for the present.

The opening keynote was by Simon Ritter about the upcoming features of JDK9 and project jigsaw which adds modules to java. It was a detailed talk about the language changes and how they affect legacy and new code. Alas I am with those who believe that jigsaw is too late and it will be irrelevant. Developers have learned to live without modules using facilities provided by build tools, frameworks and application servers. I hope that the final release of the JDK9  next year will prove me wrong.

But while jigsaw value is debatable the value of HTTP 2 is not. In a very informative and lively talk Ole Michaelis presented the problems of HTTP 1.1, destroyed the myths about some web techniques that we accept as best practices but actually are limitations of the protocol and presented the next version of HTTP. It is supported on all major browsers and platforms and it can be used right away. I totally agree with him. Let's use better technologies to build a better web. Let's get rid of the asset pipeline that makes our lives bitter. A great talk, i enjoyed a lot.

Next was Stavros Kontopoulos who talked about data streaming engines and used Apache spark as a case study. He presented the design principles of such engines, guidelines for good design of applications that use them and showed examples with spark. It was the kind of the simple straightforward talk that helps you tidy up your concepts and views about the topic and rethink your approaches. Personally it helped me a lot to clarify that an application I maintain is actually a custom streaming engine as it has all the characteristics of them. Now it is obvious how it should evolve.

Most developers hate documentation. They believe the myth that if the code is well written there is no need for documentation. I adore documentation. I even prefer to write documentation than unit tests. Peter Hilton delivered a great talk about documentation and discussed all aspects of it: when to avoid it, when to write it, how to avoid it without harm for the software, how to write it well and many many more. The slides were by itself a beautiful document on documentation. Find them and use them as a manual. This was imho the best talk of the conference.

Now it is time to become technical. Ali Kheyrollahi discussed best practices to write microservices. These are in a nutshell: ActivityId propagator, retries and timeouts, io monitoring, circuit breaker and canary, health endpoints. Although the context was microservices they are applicable to general network programming. The essence of his talk was that distribution is about reliability and in distributed systems everything can fail, so design for failure from day 1. This is of course a big topic but the talk succeeded in making it's point clear.

Dimitris Andreadis from redhat presented the latest versions of wildfly and wildfly swarm. These are JEE application servers for the cloud. Plain wildfly is a classic server on steroids, very fast and extensible. Wildfly swarm is a modular version of wildfly that you can assemble and configure as you wish. It has very small footprint, and has all the functionality of wildfly. This is the version for cloud deployment. JEE is still strong although not as dominant as it used. I really liked the architecture of swarm. Note however that many of the decisions were made to bypass the lack of modules in java and swarm's design is a better foundation for modular apps than jigsaw. Nice project but personally i like dropwizard very much to change it.

The closing keynote was by Sandro Mancuso about career design and development. To be honest, in Greece this is frequently discussed between developers because the environment is generally toxic for good career development. There are good jobs, good companies, good engineers but no full path for career development. We have the dots but we cannot connect the line, to paraphrase a classic talk by Steve Jobs. Sandro gave us valuable advices but most importantly he transmitted positive energy to us. Thanks Sandro.

Voxxed days Thessaloniki finished with good news. Next year  there will be Voxxed days Athens and we hope it will be as good as this one. Greece is back to the map of good IT conferences.

Spyros

PS1 I am writing on a bus without wifi, so i can't provide links. You will find them at the web page of the event but first make a small stop to check the people who organized this. Greece is not back on the map of conferences by luck or accident. People worked hard for it and they deserve our appreciation.

PS2 Outside the venue there was a chess event. I bet nobody figured out that the guest of honor was the girls world champion under 18 which is Greek! Google for her, she will win the women world championship one day.