Perl variable declaration of a string with the value “0 but true”.
Perl variable declaration of a string with the value “0 but true”.

I have spent most of my life coding with JavaScript. For me, it is natural to use, and I know by heart most of its quirks and oddities. I understand many of these are quite strange for newcomers and can generate some aversion. However, recently learnt about one of these things in Perl that makes JavaScript oddities look amateurish.

Perl? What is that?

Perl is a scripting programming language that was quite popular in the early ’90s and lately has fallen in usage, although at the moment of writing it is still in the top 20 in the TIOBE index. It is still widely…


const record = #{ prop: 1}; const tuple = #[1, 2, 3]
const record = #{ prop: 1}; const tuple = #[1, 2, 3]
Records and tuples

One of the misleading use cases for beginners in JavaScript is to create constant arrays and objects. With the introductions of ES6, we got two new declarators: let, for mutable variables, and const, for constants. Many beginners believe that this will make their objects and array immutable, to discover later that they are not. The object or array itself is immutable, but not their content. So far, we have relied on the method Object.freeze to deal with this use case.

// This is supposed to be immutable, isn't it?
const obj = { a: 1 }
obj.a = 2
console.assert(obj.a ===…

Two generic gophers
Two generic gophers
Two generic gophers. Photo by Lukáš Vaňátko on Unsplash

The inclusion or not of generics in the Go language has been a long-standing discussion and cause of drama since the first appearance of the language in 2009. Rivers of ink have been poured in long discussions about if generics are good or bad, and if the language needs to support them or not. Up to this moment, the Go team has decided to leave generics outside the language.

However, with the announcement of the second version of the language, the Go team opened the discussion to add generics to the language. …


Gophers with a wrench by Renee French

One of the most commonly noted upsides of Go is the compilation to a single binary. This makes deployments and dependency requirements easier to handle compared to other languages that require to install in the target system the individual dependencies which can potentially conflict with other software running or require to install duplicated packages.

However, sometimes Go programs not always can be reduced to a single file. Assets like templates or images are not included as part of the binary and they need to manage and deployed independently. …


A gopher moving packages around
A gopher moving packages around
Picture by Ashley McNamara CC BY-NC-SA 4.0

Once upon a time

Go packaging and distribution has been always a problem. Since the earliest versions, Go packaging relies on a directory in the machine where all the code is placed. This directory, stored in a global variable named $GOPATH, it doesn’t only have your source code, but also all the dependencies it uses. Dependencies are added and pulled from control version systems like git using the command go get, and stored for all the projects.

This has several issues: you pull only one global version of the dependency which is shared by all the projects, and because it uses the URL of…


Screenshot of a git tree.
Screenshot of a git tree.
Photo by Yancy Min on Unsplash

Today, discussing at Blue Harvest the new article of Jay Rajani, I found out that the new improvements in usability of Git 2.23.0 are not much spread yet. Releases in established well-known open source projects like the Linux kernel, git or vim usually do not bring much new hot stuff for the common folks, but the changes in the last release of git are really something.

Probably you have heard about the git checkout command. This is a rhetorical question of course, because if you have ever used git, you must have realised that it is literally everywhere.


2nd Generation JavaScript Frameworks & Libraries by Geertjan Wielenga
2nd Generation JavaScript Frameworks & Libraries by Geertjan Wielenga
2nd Generation JavaScript Frameworks & Libraries by Geertjan Wielenga

Last month I had the chance to go to the JS Conf Belgium 2019. The conference was in the city of Brugge, which in total was about 3 hours travel by train from Amsterdam. The venue was located just in front of the station at Howest RSS 1, one of the buildings of the Hogeschool Howest. The location was big but only two rooms were set up for the talks, placed on different floors separated by narrow corridors. There were no sponsors or business stands in the venue, so it was essentially the talks.

This was more an annoyance (I…

Alberto de Murga

also known as threkk. Internet Plumber. https://threkk.com

Get the Medium app

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