Blog

Lambda World 2019

Lambda World 2019 Blog Post

The Spanish town of Cadiz lies outward in the ocean, circled by ancient walls, protected by two castles. Grids of alleys, old houses facing at a short distance across narrow streets, narrow balconies enclosed in windowed structures. Warm, light brown rocks and stone. Old, ancient, historical and yet so filled with sun and sparkling energy.
It is just a heck of a journey to get there to attend the best functional programming conference in the world. You start from your ordinary small northern Italy town, get by car to the nearest airport, fly first to Barcellona, hoping that the turmoils for the recent sentence on the separatist leaders cause no problem with your flight exchange. Wait for a while at the airport terminal, eating a sandwich, then you board on another plane that will carry you to Jerez de la Frontera. There you are up to a ride on the train. Eventually, you reach Cadiz, but you still need to walk to your hotel in the historic downtown. “Walk” because at Cadiz core everything is at a walking distance and most of the streets are impractical to any car.

This is my third year in a row that I manage to get my employer to sponsor my attendance at Lambda World Cadiz. I like this conference, I like the eclectic view of the functional-programming-verse that provides and last, but not least, I like the setting.

Continue reading “Lambda World 2019”

Scala Italy 2019

Scala Italy is the Italian conference of the Scala Language now to the 7th edition – a time to meet old friends, make new friends, talk about programming, and attend high-quality speeches about the Scala language.
This year, following the tradition, started in 2018 🙂 the conference lasted two full days.
Conference videos are published on this Vimeo channel.

Demographics

By a very rough approximation, I counted about one hundred people, organizers included. While the headcount went down (last year we were about 150), the average age went up. Still not at the C++ conferences level, but the number of baby programmers was quite low. Also, the female percentage was very low (on par with C++ conferences).

Maybe Scala is leaving the phase of enthusiast early adopters (usually young programmers, still in contestation years, with a lot of time, curiosity, and energy to invest in something new) and going toward being something too solid and usable to be used for disputing the establishment.
This isn’t too bad and possibly a sign of maturity. Even the content of some talks at the conference seems to confirm this idea.

Continue reading “Scala Italy 2019”

it++ 2019

In Italy, June is usually that period of the year when the weather becomes hot and the Italian C++ conference is held in Milan.

That’s why (the conference, not the weather) on Saturday 15th June, my friend and coworker Francesco and I went to the Milan Polytechnic. As for the other conferences I attended, I wrote quite a large volume of notes. Regretfully, as it happened for the other conferences, reorganizing my notes to make some sense of them and present them in an understandable and useful way is out of reach for my homeopathic level of free time. Also, usually you can find online the slides and videos of the talks well before my post. Therefore I decided for the short format I already used a couple of times in the past – a brief overview describing the conference for what you can’t see in the video e a brief summary of the talks I attended to.

Continue reading “it++ 2019”

*m*zn bye bye

One week ago I received an email from the most successful online store owned by Bezos, telling me that since my site didn’t earn any money in the last 365 days, my affiliation program was terminated. Within a week I had to remove all references to their website from my blog.

Here is the text of the communication:

Il tuo account da affiliato verrà chiuso con effetto entro il termine di sette giorni, entro lo stesso termine terminerà anche l’ Accordo Operativo che lo regola.

Nota – Questa comunicazione riguarda solo l’account elencato nella riga dell’oggetto di questa email.

Perché questa comunicazione?
Perché non sono state effettuate vendite tramite link di affiliazione negli ultimi 365 giorni.

Cosa accade ora?
Dovrai terminare l’utilizzo di ogni contenuto e marchio *m*zon e rimuovere immediatamente tutti i link diretti al sito di *m*zon. Riceverai tuttavia il pagamento per ogni commissione ancora da pagare guadagnata precedentemente a questa comunicazione.

Ti invitiamo tuttavia a candidarti nuovamente in futuro visitando la pagina: https://programma-affiliazione.*m*zon.it.

Ti ringraziamo per la partecipazione al Programma di Affiliazione di *m*zon EU.

*m*zon.it

I sent them two emails, one to the Italian branch and the other to the US headquarters, stating that mine is not an e-commerce website and my affiliation is more a service to my readers to look up books and/or movies if they are interested (in fact is far more than 365 that referral fees sum up to 0). Despite the claim of a reply in less than 24h I got no response.

Basically, I don’t understand why they have to behave like this, the traffic from my website costs them zero. Also, any traffic that would arrive there could be a potential purchase (this is more up to them to be good at marketing on their website). But also it piss me off that I have to remove all links to their website – I had to go through the database of my website (15 years of posts) and manually replace references. And why? Shouldn’t I be free to link anyone I want to link?

So I decided that *m*zn is history, time to look elsewhere. I would like to join the affiliation program of ibs, but I still have some trouble with their affiliation service tradedoubler.

Garbage-Collecting Garbage

Here we go again, another system written in one of the advanced languages that promise to avoid you the burden of memory management, another unavoidable performance issue and yet again another desperate run to move everything out of garbage man hands into a set of dedicated memory pools.

According to Wikipedia, GC (Garbage Collection) was invented back at the dawn of computer science, (ca 1959) for the LISP language. Since its inception, GC made promptly clear that it didn’t play well with time constraints (see Humorous Annedoct in History of Lisp).

Continue reading “Garbage-Collecting Garbage”

Java Magic Trick

One of the (many?) shortcomings of Java is, at least in my humble opinion, the lack of unsigned integers. This may seem a minor problem, but it becomes a real annoyance when you have to deal with bits and bytes.

Consider the right shift. As a good C/C++ programmer you know that right shifting of a signed integer is generally bad. Java defined two bit-wise right shift operators: >> and >>>. The first extends the sign, so that -2 >> 1 evaluates to -1 and -2 >>> 1 evaluates to (-1 & 0x7FFFFFFF), i.e. the left most bit that becomes vacant pending the shift is filled with a 0.

So far, so good. So you may be surprised from the result of the following code:

class Surprise
{
    public static void main( String[] args )
    {
        int result = -1 >>> 32;
        System.out.println( "surprise: "+result );
    }
}

I don’t want to spoil the result, so you may want to take some more time to think… Ready with your guess?

Well Suprise.java prints -1. That’s because the right hand side argument of the >>> operator is masked implicitly by 0x1F (i.e. taking values just between 0 and 31 included).

No warning is emitted during compilation, so you are pretty on your own – either you know or you don’t and trouble are ready to … byte you.

What is in a name?

Here now and then, as a programmer, you have a hard time finding a good name for something. That thingy thing that eludes your wit and skill to name things. And that’s bad because it is hard to reason about unnamed entities. Symbols are deeply embedded in our brainwork and the right word has quite a power to drive thoughts efficiently and reliably.

Continue reading “What is in a name?”

Absolutely

As a programmer, you will be quite familiar with the abs function. I thought I was. In fact, it was filed in my brain drawer with the absolute mathematical function. It takes a number and provides an always positive or zero result. Right? Well, mostly. This morning, while typing in the Scala REPL:
scala> Math.abs(Int.MinValue)
res0: Int = -2147483648
Continue reading “Absolutely”

If the free lunch is over, where can we eat for free?

In the first part of this blog post, I wrote about why FP is mandatory for programmers that work on modern software projects. Summing it up, it was like this – modern hardware scales up by adding cores, therefore, if software wants to scale up and well, then it has to do it by going concurrent, and FP is a good choice to deal with concurrent programming issues.

In this post, I’ll write about some differences between traditional and FP programming and I’ll present one more reason about why FP is a good match with parallel programming.

You can write bad code in any language. That’s a fact. So there’s no magic in functional programming to turn a lame programmer in a brilliant one. On the other hand, you can write pretty good code in the functional paradigm by sticking with the tools provided by functional languages.

So, let’s have a look at this FP thing… First, it is evident that this is not your parent’s FP – map, filter, fold… Just a few of the most recurring spells you’d see in a Scala source and none of them was in the notes I jotted down during my University courses. Even looking at my LISP textbook I couldn’t find any reference to the map operation. (Just to help those with no FP background – map (transform in C++) is an operation that applies a transformation to each item in a collection. In other words, if you have a function that turns apples into pears, then – using map – you can turn your array of apples into an array of pears.)

Continue reading “If the free lunch is over, where can we eat for free?”