# nick=readmemyrights # description=Readmemyrights on software: a lot of it. # url=https://nslisica.neocities.org/sw/wall.txt # link=Website https://nslisica.neocities.org/sw/ 2024-07-20T19:29:19+0200 Hello, world! 2024-07-29T00:33:49+0200 I have just started working on a little lua module for parsing simple key=value files using lpeg. It's been a blast working on it, it goes very fast and hopefully it will continue at the same pace. I'll certainly write more about it later, and about the interactive stile of development in general. You can find the source code here: , and about lpeg here: 2024-07-30T18:57:31+0200 I just wrote a page about my experiences writing ndb.lua, focusing on interactive programming in particular. You can read it here: . 2024-08-13T17:27:37+0200 I just wrote an article discussing what software I avoid and why: 2024-08-20T13:19:20+0200 * The born shell had only one type, the string.
 If the programmer wanted to treat it like a number,
 which was surprisingly rare,
 He had to use utilities like
 *test*(1) or *expr*(1), etc.
 Arithmetic substitution and native integer types came later,
 with ksh and shells since.
* AWK supported arithmetic operators itself,
 and transparently converted between strings and integers as necessary.
 This was to make things like summing columns of commands like *ls*(1)
 not require any special code.
 Remember, AWK "programs" were usually only a few lines long,
 and used either once or once within a bigger script.
* Perl inherited this behavior from AWK, and has switches to work much like awk,
 see `-n` and `-p` and `-e` in *perlrun*.
 Perl eventually started to be used for bigger programs however,
 which made features like this very possible pitfalls.
 In particular, the string `"0"` was falsy in perl.
 This was the main reason for `use strict`.
* The most executed high level programming language today, Javascript,
 has inherited many of these features, taken out some and somehow gaining more.
 While researching for this I found out that,
 `if("0") print("yes")` prints,
 but `"0" == false` returns true.
 This has become such a problem most js stile guides
 require the use of the strict `===` equality operator
 and there are now multiple projects bringing strong static typing to js.

The reason why flexibly handling numbers like with sh and awk
doesn't work in perl and javascript
is because of the way those languages are used,
how they are invoked, how they get data,
and many other factors.
It's worthless talking about whether dynamic or weak typing is good or bad
unless we're also looking at who uses the programming language and how. 2024-09-16T16:42:48+0200 Circles and ellypses made my angry or something. 2024-10-19T09:51:42+0200 It's been a while, and I have to switch to a computer. It's time to have a cry.