Archive for the ‘Uncategorized’ Category

Consider the following example – this is valid JavaScript! But just by looking at it, that seems unlikely… Try copying the code portion into a browser console and see for yourself.

$ cat redef-keywords.js
if‌ = isNaN;

if‌ (NaN)
    console.log("This line will never be printed.");
$ node redef-keywords.js
This line will never be printed.

Read Full Post »

Edit again: after shuffling around a bit, ES5+ should now be possible, at least in theory.

Edit: change from ES5+ to ES6+ for technical reasons.

j8t is a project I created which efficiently translates any generic JavaScript program (ES5+) into one which uses only 10 unique characters. Why 10 and not 8 or 6, like other projects? Simply put, it’s about following the rules to the letter.

It is based on the idea that individual characters can be formed by abusing various features in the language. For instance:

> +[]
> +!![]
> (+{}+[])[+[]]


I am taking this way too seriously when I say that similar projects I know of are all cutting one or more corners. As far as I know, 10 characters is the minimum if you want to do it “properly”. So I set out to do that. In the process, I also made various optimizations that makes it possible to convert large programs, and do so efficiently, or indeed convert j8t itself. I’m not aware of any other project that can do the same.

So, what is this good for?

Short answer: nothing! If you’re still reading at this point, you should have known that.

Long answer: it’s a bizarre form of entertainment, and at the same time it is possible to learn a lot when pushing things to the limit.

Read Full Post »

Recently a code of conduct for Linux kernel developers was adopted. The full text is also included below (except for headings), interspersed with my comments and with emphasis added. In the interest of (hypothetical) brevity, I am focusing on what I perceive to be the major issues with it, therefore I am refraining from commenting on at least a few lesser issues.

I don’t know how this document will be enforced of course. That is precisely the problem. Some leeway is understandable. This is just absurd. It is not just vague, but opens up more avenues for abuse than if there was no document at all.

It is relevant context that this document – except for some cosmetic changes relating to where reports should be made – is based word for word on the contributor covenant, a document written by Coraline Ada Ehmke, who as you can see on that page is a self-proclaimed “Social Justice Warrior”. This screams of a political power grab.

Let’s go through the Linux version:

In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone,

Stop, stop, stop. This sounds innocent enough at first, but who defines harassment? The Cambridge Dictionary includes the following definition: (emphasis added)

behaviour that annoys or upsets someone

If a maintainer says: “we appreciate your considerable investment in this code, but we are sad to say we will not include it because of X, Y and Z”, would it perhaps be considered annoying by the person receiving that feedback to see all their sweat and tears go to waste? If this aspect of the code of conduct is ridiculous enough to never be enforced, why is it included in the first place?

So: we’re not even a full sentence in, and we can already interpret the document as follows:

As a Linux kernel maintainer, you pledge to never reject anyone’s code, if you suspect it might annoy them.

It gets worse.

The sentence continues:

regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.

I thought the word everyone was pretty precise and inclusive. What is this doing here besides making an ideological statement?

Next come some “recommendations” of how to behave:

Examples of behavior that contributes to creating a positive environment include:

* Using welcoming and inclusive language

Let me guess – prefixing a mail to a group of people with “guys” is not “inclusive”? Basically: type like a bureaucrat, or we’ll come after you for not being inclusive. But if you do type like a bureaucrat, we’ll come after you for not being welcoming!

* Being respectful of differing viewpoints and experiences

Respect is earned.

* Gracefully accepting constructive criticism

How about just receiving constructive criticism? It may or may not be accepted.

* Focusing on what is best for the community

Who decides what is best?

* Showing empathy towards other community members

So if you have empathy but – according to someone else – don’t show it, that doesn’t count? A lot of the Linux kernel communication goes through e-mail, not exactly the best medium to show empathy. And what does that mean anyway? Do what you feel is right, but in a nicer way? Or do what you feel is wrong, just so that someone else might avoid taking offense?

Examples of unacceptable behavior by participants include:

* The use of sexualized language or imagery and unwelcome sexual attention or advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment

Who defines what an attack is?

See comment at the top regarding harassment.

* Publishing others’ private information, such as a physical or electronic address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a professional setting

Who decides what is inappropriate?

Maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.

So here’s where attack and inappropriate get defined I suppose. Isn’t this what is really setting the stage here? How about if the entire code of conduct is replaced with this single sentence instead of all this mumbo-jumbo?

Maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.

Never mind, here the “appropriate”, “fair” and “clarifying” part go out the window as well, as does the code of conduct itself. Now we’re talking about “other behaviors”! So now you can get into trouble based on the particular mood of a particular maintainer on a particular day.

This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.

More mumbo-jumbo. This does not put any effective limits on what “representing” means. We might as well assume that anything you do in your life could be considered “representation” if it somehow comes into contact with a Linux kernel developer.

Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the Technical Advisory Board (TAB) at <tab@lists.linux-foundation.org>. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The TAB is obligated to maintain confidentiality with regard to the reporter of an incident.

I.e.: you can get accused by someone who wants to be anonymous, without having the chance to defend yourself against that person or persons. Otherwise the TAB would be breaching their obligation to maintain confidentiality.

Further details of specific enforcement policies may be posted separately.

Maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project’s leadership.

This Code of Conduct is adapted from the Contributor Covenant, version 1.4, available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html


  • What “representing” the project or community means can be defined at any time, to mean anything.
  • “Inappropriate” behavior can be defined at any time, to mean anything. At a miminum, annoying someone on a single occasion qualifies.
  • You can get accused anonymously, without a chance to confront that person.
  • You can get banned for “inappropriate” behavior while “representing” the project or community.


If you, as a Linux kernel developer, anywhere in the world, at any time, in any context, whether you realize it or not, behave in some way that, directly or indirectly, results, at any time in the future, in some anonymous person, justified or not, claiming to feel at least slightly uncomfortable, be warned that you may be permanently banned from contributing to the Linux kernel.

Read Full Post »

Yesterday, the European Parliament voted in favour of the infamous “link tax” and to build more firewalls on the Internet, obsessed with censoring any material that might infringe on copyright. In so doing, perfectly legal uploads would most certainly become collateral damage of the nearsighted robots that are supposed to enforce this.

The EU is quick to point out that this will not affect “small” companies, in practice meaning ones with fewer than 50 employees. That is hardly any comfort, and WordPress.com for instance has 779 employees at the time of writing this. Should everyone with a blog now start looking over their shoulders?

Mozilla (the folks behind Firefox) has more details on the situation before the vote, and where we are after the vote.

As for Sweden, here’s how the voting went: (Socialdemokraterna form the current government here, together with Miljöpartiet)


Name Group in the European Parliament Group in the Riksdag
Aleksander GABELIC S&D Socialdemokraterna
Jytte GUTELAND S&D Socialdemokraterna
Anna HEDH S&D Socialdemokraterna
Olle LUDVIGSSON S&D Socialdemokraterna
Marita ULVSKOG S&D Socialdemokraterna
Soraya POST S&D N/A


Name Group in the European Parliament Group in the Riksdag
Fredrick FEDERLEY ALDE Centerpartiet
Jasenko SELIMOVIC ALDE Liberalerna
Cecilia WIKSTRÖM ALDE Liberalerna
Kristina WINBERG ECR Sverigedemokraterna
Malin BJÖRK GUE/NGL Vänsterpartiet
Lars ADAKTUSSON PPE Kristdemokraterna
Anna Maria CORAZZA BILDT PPE Moderaterna
Christofer FJELLNER PPE Moderaterna
Gunnar HÖKMARK PPE Moderaterna
Max ANDERSSON Verts/ALE Miljöpartiet
Jakop DALUNDE Verts/ALE Miljöpartiet
Linnéa ENGSTRÖM Verts/ALE Miljöpartiet
Bodil VALERO Verts/ALE Miljöpartiet

Abstentions: none.

Appears not to have been present:

Name Group in the European Parliament Group in the Riksdag
Peter LUNDGREN ECR Sverigedemokraterna



Read Full Post »

Thanks to excerpts from Secular Talk, I learned of an Intercept interview where Ralph Nader addresses the decline of the Democratic Party in the USA, sharing his deep insight in great detail. While the poor performance of the Dems is most obvious in recent years, he traces its roots to the 1970s.

As illustrated in the interview, the fundamental flaws of US politics today are difficult to root out. There are many lessons to be learned here, in the US and elsewhere.

One quote of many: (deliberately out of context – read through the article!)

[A] soft tone, smiling … You can say terrible things and do terrible things as long as you have [that] type of presentation.


Read Full Post »

Feral Interactive released their port of DiRT Rally for Linux this week.

Clearly this is an advanced and major title, so in my mind this settles the question whether Linux is an alternative for people who want to play car games.

Read Full Post »

Strange bookshops

(For the record, the following does not relate to anything in the real world – not IT, not operating systems, and it’s not even remotely related to installation procedures for software. The metaphors are completely fair and accurate, thus they do not necessarily reflect my personal opinion; I’m not making any subjective statements or suggestions.)

Shop 1

D: Hi Gene, can you get a book for me, please?
G: Hold on.

[Ten minutes later.]

G: Yes?
D: Oh, you know my style. You take a pick.
G: Moment…

[One minute later.]

G: OK. Maybe the one over there?
D: Great. I take it then.
G: Actually, the pages are blank. I need to fill them in first.
D: Uhhhhh, OK…

[One hour later.]

G: Here you are.
D: There’s only one chapter here!
G: Oh, I’m sorry, I got confused. Try the other one in the shelf, it’s a mass-produced copy.
D: Why didn’t you just tell me?!
G: You didn’t ask!

Shop 2

D: Uberto! Hi, I need the Hitchhiker’s Guide to the Galaxy.
U: I’m sorry, I’m not in the mood.
D: I don’t understand what you’re saying, but I really need it.
U: OK, whatever.


U: Yeah, well, you know, I was getting some other books for you right now, and I would just mix everything up.
D: So do it after that!
U: I don’t know what you mean.
D: …


D: Are you getting the book or not?
U: Oh, I just finished with the other stuff. Sure thing, man.

Shop 3

D: Good morning, Winnie. How do I go about finding some books?
W: I have no idea.
D: What?!
W: Find them yourself!
D: Hmpf!

[Some time later…]

D: Here it is – YOU & NICK’S HATERS Handbook.
W: Oh, I like that one! It’ll be 50 Euros.
D: What?!
W: Per year.
D: …
W: Well?
D: I could get a very similar book for free elsewhere.
W: No, no, they’re no good. You must use this one.
D: Mrrff… Bah, I don’t care anymore, it’s not me who’d pay anyway…
W: Good. But any book can be dangerous, you know? Are you sure you want it?
D: I just paid for it!
W: Right. Here’s a few pages of rules about using this book.
D: OK, but I know nothing about this. Why are you showing this to me NOW? I already gave you some money, just let me read it!
W: I’m sorry, you need to study this thing closely before reading the book.
D: There, I put it in the tr… I mean, I got it.
W: Right. In which room do you want to read it? In the kitchen, the living room, the bedroom…?
D: Are you nuts?!
W: What do you mean?
D: Just. Give. Me. The. Book.
W: I guess you’re OK with having it in the living room then?
W: Fine. Do you want some bookmarks with it?
D: NO!!
W: Here you go. See you soon!

Read Full Post »

%d bloggers like this: