Joined October 2020

‘Traditional Russian spiritual-moral and cultural-historical values are under active attack from the USA and its allies, as well as from transnational corporations and foreign NGOs,’ according to the Kremlin’s new National Security Strategy, published this month. It defines ‘Russian values’ as ‘life, dignity, rights, freedoms’ as well as ‘high ethical ideals, a strong family, prioritising the spiritual over the material, humanism, kindness, justice, collectivism and patriotism’.

Ideology is stressed more insistently than in previous years. But what exactly it all means can be hard to pin down. There’s a wink and a nod to 19th-century Slavophiles, with their idea that Russia is defined through sobornost, collective spirituality and communality, rather than individual freedom. There’s even a mention of the need to resist foreign ‘absolutisation of personal freedoms’. But there are also paeans to ‘rights’ and ‘freedoms’ as somehow fundamental to Russian traditions. Still, whatever Russian values may be, the National Security Strategy is clear they have to be defended with a ‘state information policy’.

This is the place to start making sense of the document. The policy logic does not stem from a coherent set of ideological precepts that require censorship and control to protect them, but the other way round: you want to impose control and censorship, so you invent a sort of ideology in order to justify it. The language of ‘traditional’ values is more useful for this, as it’s easier to justify ‘defending’ something local from outside attacks than something universal.

Read More

Governments must impose a global moratorium on the international spyware trade or face a world in which no mobile phone is safe from state-sponsored hackers, Edward Snowden has warned in the wake of revelations about the clients of NSO Group.

Snowden, who in 2013 blew the whistle on the secret mass surveillance programmes of the US National Security Agency, described for-profit malware developers as “an industry that should not exist”.

He made the comments in an interview with the Guardian after the first revelations from the Pegasus project, a journalistic investigation by a consortium of international media organisations into the NSO Group and its clients.

Read More

This document describes the Oil language from clean slate perspective. Knowledge of Unix shell or the compatible OSH language isn’t assumed. But shell users will see similarities, simplifications, and upgrades.

Remember, Oil is for Python and JavaScript users who avoid shell! See the project FAQ for more color on that.

This document is long because it demonstrates nearly every feature of the language. You may want to read it in multiple sittings, or read The Simplest Explanation of Oil first.

A summary of what follows:

  1. Oil has interleaved word, command, and expression languages.

    • The command language has Ruby-like blocks, and the expression language has Python-like data types.

  2. Oil has two kinds of builtins that form the “standard library”.

  3. Languages for data (like JSON) are complementary to Oil code.

  4. OSH and Oil share both an interpreter data model and a process model (provided by the Unix kernel). Understanding these common models will make you both a better shell user and Oil user.

Keep those 4 points in mind as you read the details below.

Read More

WHO DO YOU ask to find out if the government of Ethiopia has really shut down the internet? If Facebook is blocked in India? Or if Wikipedia is unreachable from Venezuela? For the past few years, the answer to all those questions has been NetBlocks. 

Since its launch in 2016, the London-based outfit has alerted the world to all and every internet incident. Whenever a ruler, junta or strongman tampers with a country’s connectivity, NetBlocks will be tweeting about it, publishing graphs and reports showing how the disruption unfolded. Day after day, crisis after crisis, NetBlocks’s alerts pour in, almost a fixture of the age of internet censorship. 

The group’s rise has been unstoppable. It has over 125,000 followers on Twitter and its posts can rake in thousands of retweets and tens of thousands of likes. Articles citing NetBlocks have appeared in The New York Times (at least 15 articles), CNN (over 150 times), BBC (over 100), and WIRED (at least ten stories). United Nations documents about the scourge of internet censorship include links to NetBlocks, as do working papers by the governments of the UK and the US. Yet, as NetBlocks has attained stardom among internet-watchers, a question has rumbled on: how does it know that the internet is down? 

Read More

Human rights activists, journalists and lawyers across the world have been targeted by authoritarian governments using hacking software sold by the Israeli surveillance company NSO Group, according to an investigation into a massive data leak.

The investigation by the Guardian and 16 other media organisations suggests widespread and continuing abuse of NSO’s hacking spyware, Pegasus, which the company insists is only intended for use against criminals and terrorists.

Pegasus is a malware that infects iPhones and Android devices to enable operators of the tool to extract messages, photos and emails, record calls and secretly activate microphones.

The leak contains a list of more than 50,000 phone numbers that, it is believed, have been identified as those of people of interest by clients of NSO since 2016.

Read More

A lean, statically typed, compiled, general-purpose, procedural, object-oriented, and garbage collected programming language in the Pascal tradition, with support for generic programming…

Only Facebook knows for sure what’s popular on its platform at any given moment. The rest of us, viewing our individual feeds and seeing only how our own posts fare, are left to guess.

Facebook could change that by giving the world real-time windows onto the social network. But it has long resisted doing so — and new reports suggest it’s afraid greater transparency will just make it look bad.

Driving the news: A New York Times column by Kevin Roose describes a debate inside the company over whether to expand CrowdTangle, a tool Facebook offers that provides data on posts’ performance.

  • Roose had long used CrowdTangle, a startup Facebook acquired in 2016, to compile regular Top 10 lists of Facebook posts and share them on Twitter. The lists are almost always dominated by right-wing authors and news outlets.

  • CrowdTangle measures only posts’ engagement — whether people click on or react to them. Facebook regularly criticized Roose’s posts by saying that more accurate lists could be compiled by looking at reach — how many people actually see a post.

  • One problem: Reach data is only available to Facebook’s own staff.

Read More

It is a well-known “fact”, in some circles, that running grep in the C locale is much faster than in UTF-8 locales, the latter being a common default on current client systems.

Indeed, just the other day, a colleague of mine was running something akin to:

grep ‘“event-type-id”:4727’ app.log

where app.log is a multi-gigabyte file of JSON lines1, the goal being to quickly see whether a newly-added type of event is seen. Almost immediately, someone jumped in to recommend running grep in the C locale, instead of the default UTF-8 locale, for Guaranteed Extra Speediness™.

I wondered whether this was indeed good advice. (TL;DR: using the C locale does not help performance in general, or jump to conclusions.)

Read More

I wrote Python for the last 10 years, and I always tend to write code in a “functional” way - map, filter, lambda and so on, it makes me feel clean and happy. Following this warm feeling I decided to try a True functional language.

So I read a couple of tutorials online and went through the famous Learn You a Haskell for Great Good ! It was a long and painful journey - which is not over yet. After some retrospection I wanted to share my own introduction to Haskell based on my python experience. What I wished I had learnt first and what I wished I learnt later down the road.

Read More

Janet is a functional and imperative programming language and bytecode interpreter. It is a lisp-like language, but lists are replaced by other data structures (arrays, tables (hash table), struct (immutable hash table), tuples). The language also supports bridging to native code written in C, meta-programming with macros, and bytecode assembly.

There is a REPL for trying out the language, as well as the ability to run script files. This client program is separate from the core runtime, so Janet can be embedded in other programs. Try Janet in your browser at https://janet-lang.org.

Read More

Neorg is a tool designed to reimagine organization as you know it. Neo - new, org - organization. Grab some coffee, start writing some notes, let your editor handle the rest.

Why do we need Neorg? There are currently projects designed to clone org-mode from emacs, what is the goal of this project? Whilst those projects are amazing, it’s simply not enough. We need our own, better solution - one that will surpass every other text editor. One that will give you all the bragging rights for using Neovim. Here’s how we’ll do it:

  • Revise the org format - Simple, very extensible, unambiguous. Will make you feel right at home. Org and markdown have several flaws, but the most notable one is the requirement for complex parsers. I really advise educating yourself on just how bad markdown can get at times; what if we told you it’s possible to eliminate those problems completely, all whilst keeping that familiar markdown feel?

    Enter the .norg file format, whose base spec is almost complete. The cross between all the best things from org and the best things from markdown, revised and merged into one.

  • Keybinds that make sense - vim’s keybind philosophy is unlike any other, and we want to keep that vibe. Keys form a “language”, one that you can speak, not one that you need to learn off by heart.

  • Infinite extensibility - no, that isn’t a hyperbole. We mean it. Neorg is built upon an insanely modular and configurable backend - keep what you need, throw away what you don’t care about. Use the defaults or change ‘em. You are in control of what code runs and what code doesn’t run.

  • Logic. Everything has a reason, everything has logical meaning. If there’s a feature, it’s there because it’s necessary, not because two people asked for it.

Read More

I’m Linus. In 2019, I made a programming language called Ink. Since then, I’ve used it to build a number of side projects, including a ray tracer, a compiler, an assembler, a Twitter client, a writing app, and some personal productivity tools. I write about Ink, programming languages, and software at large on this blog, which is served by a server written in Ink.

Ink takes after Go, JavaScript, and Lua. Here’s a simple Ink program.

In the major mass media in Germany massive propaganda is being made for tightening the surveillance of telecommunications because of the allegedly widespread child pornography. It increasingly looks like politicians are framing the need to ban encryption to protect our children from sexual abuse. The unnamed aim: To heighten the acceptance for more surveillance among the population.

However, when looking at the actual monitoring orders issued by German courts, the numbers speak a very different language.

Read More

And so if I had to sum up this whole framework in a nutshell, that’s what I’d say the bottom line is. The decisions we make do have objectively right answers. There is an objective morality, which we’re all obligated to follow. And what it says is that we should all act in such a way as to bring the universe onto the timeline-branch that provides the greatest degree of preference satisfaction for its inhabitants. What that means in practice, simply enough, is that the moral wisdom you’ve already heard is true: Love yourself, and love others as you love yourself. You may not always succeed, but all that matters is that you do the best you can. That, to quote Hillel the Elder, is the whole of the law – and everything else is commentary.

Read More

Recently a new article was published in The Chronicle about me running Sci-Hub, a project dedicated to providing free access to academic journals all over the world. The website currently has around 500,000 users daily, most of whom are students and researchers.

There is a well-known trouble in modern science concerning access to academic literature. In the recent 40 years, academic publishing became increasingly controlled by a few big corporations, and as a result, access to research publications became extremely expensive: even richest universities in rich countries started to feel the burden. As a reaction, Open Access movement has emerged by early 2000s, supported many top scientists including Nobel prize recipients such as former NIH director Harold Varmus. They argue that all scientific journals should be absolutely free to read! There should be no obstacles to free communication in science.

Read More

2020 was a bad year at the end of a bad decade for software freedom. This post discusses how software rules everyone’s lives, how bad the situation is for software freedom, why software freedom matters, and explains why I believe that free software developers should direct their efforts toward emerging language ecosystems.