Links for 2020-04-192020-04-19 #links #hierarchical data #mysql #licenses #commons clause #clojure #generics #configuration #config files #zoom #rust #cli #seo
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.
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.
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.
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!
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
(). 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
<> 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
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.
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.
A short summary of common Unix/Posix/GNU tools written in Rust.
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.