Links for 2020-04-19

Managing Nested Data in MySQL, The Commons Clause License, Clojure, A Look into Compilers, No <> to Generics, Configuration Files, Zoom Fiasco, Rust CLI tools, SEO.

Managing Hierarchical Data in MySQL

A bunch of tips on how to manage nested/hierarchical information in MySQL. While the storage format could be used in any database, it seems the insertion part in the post is MySQL specific.

Curious, nonetheless.

The Commons Clause will destroy open source

While I don't agree with Drew in some points (mostly the things he rants about), and while I don't think, on the surface, that the Commons Clause may destroy open source, his words are a cautionary tale about picking the right license1.

Guide to starting with Clojure

It's been too long since I saw a very detailed introduction of a language like this. Explaining installs, IDE/Editor configuration, a short description of the language, a toy problem and a way to build and deploy the result.

Really complete -- and, on the plus side, it's Clojure!

The Svelte Compiler Handbook

While related to Svelte -- the JavaScript templating language -- what it describes is pretty close to what every compiler do, in a high level, even if some do more stuff, like Rust having two more steps before the code generation, for optimization.

Language Design: Stop Using <> for Generics

Let's get into some controversy, shall we?

One the major points of Clojure is exactly how it pick one single pair for each different aspect, contrary to Lisp, which used parenthesis for everything.

So, what is being described here is to use [] instead of <> for generics. But wouldn't that clash with array access? Sure, that's why array access should be (). But wouldn't that clash with function calling? Sure, that's why function calling should be... should be what again? Nothing? So we let it clash?

"<> is hard for compilers to parse". Oh, poor compiwer, it is weaving a bad time? Newsflash, the job of a compiler is to take the hard work and leave the simpler thing to users; the harder it does its work, the easier it is for their users. If the users can clearly see generics with <> -- because it is different from everything else -- then it is good.2

Your configs suck? Try a real programming language.

Another controversy, just for fun.

Ok, so config formats are bad 'cause you can't replicate some stuff -- I can agree with that, imagine having to copy and paste the same value over and over?

But the problem is: Using a "real programming language" for configuration may also have a problem: you need to cut a lot of stuff. Django uses Python itself as a configuration -- and, again, I can agree with that, 'cause it allows one to have a default configuration and just import it and override things for your local execution -- but it doesn't block running anything. Worse, because you can import things into the configuration file, one project that gets compromised will always run the code.

Again, I agree with a lot of points, including the fact that the current formats for configuration files are bad, but using a programming language for it is not the solution. Besides, it is possible to overcome those problems with better configuration settings themselves than the format; as hard as it is.

Security and Privacy Implications of Zoom

While articles about the raise of Zoom and its problems popping everywhere, but Bruce Schneier, the father of internet security, made a post with all its problems, from privacy to security.

My tools are going Rusty

A short summary of common Unix/Posix/GNU tools written in Rust.

How SEO Ruined the Internet

Yes, everybody knows how the current trend of creating content focused on producing better search results -- instead of, say, better quality content that should be indexed due its quality -- basically made the internet a terrible place.

This post describes some of the effects of this focus on the general internet content.


This was weirdly timed with a presentation I finished talking about licenses -- it's in Portuguese, and I haven't present it yet, but at some point there will be a companion post for it, even in English.


Personally, using Scala as an example of "doing right" feels really wrong. Scala does a lot wrong, I don't freaking care how much you like Scala. Also, saying Python uses [] for generics is wrong 'cause Python does not have generics.