The best articles by Ciro Santilli Updated +Created
These are the best articles ever authored by Ciro Santilli, most of them in the format of Stack Overflow answers.
Ciro posts update about new articles on his Twitter accounts.
A chronological list of all articles is also kept at: Section "Updates".
Some random generally less technical in-tree essays will be present at: Section "Essays by Ciro Santilli".
Ciro's 2D reinforcement learning games Updated +Created
Video 1.
Top Down 2D Continuous Game with Urho3D C++ SDL and Box2D for Reinforcement learning by Ciro Santilli (2018)
Source. Source code at: github.com/cirosantilli/Urho3D-cheat.
Figure 1.
Screenshot of the basketball stage of Ciro's 2D continuous game
. Source code at: github.com/cirosantilli/rl-game-2d-grid. Big kudos to game-icons.net for the sprites.
Video 2.
Top Down 2D Discrete Tile Based Game with C++ SDL and Boost R-Tree for Reinforcement Learning by Ciro Santilli (2017)
Source.
The goal of this project is to reach artificial general intelligence.
A few initiatives have created reasonable sets of robotics-like games for the purposes of AI development, most notably: OpenAI and DeepMind.
However, all projects so far have only created sets of unrelated games, or worse: focused on closed games designed for humans!
What is really needed is to create a single cohesive game world, designed specifically for this purpose, and with a very large number of game mechanics.
Notably, by "game mechanic" is meant "a magic aspect of the game world, which cannot be explained by object's location and inertia alone" in order to test the the missing link between continuous and discrete AI.
Much in the spirit of gvgai, we have to do the following loop:
  • create an initial game that a human can solve
  • find an AI that beats it well
  • study the AI, and add a new mechanic that breaks the AI, but does not break a human!
The question then becomes: do we have enough computational power to simulation a game worlds that is analogous enough to the real world, so that our AI algorithms will also apply to the real world?
To reduce computation requirements, it is better to focus on a 2D world at first. Such world with the right mechanics can break any AI, while still being faster to simulate than a 3D world.
The initial prototype uses the Urho3D open source game engine, and that is a reasonable project, but a raw Simple DirectMedia Layer + Box2D + OpenGL solution from scratch would be faster to develop for this use case, since Urho3D has a lot of human-gaming features that are not needed, and because 2019 Urho3D lead developers disagree with the China censored keyword attack.
Simulations such as these can be viewed as a form of synthetic data generation procedure, where the goal is to use computer worlds to reduce the costs of experiments and to improve reproducibility.
Ciro has always had a feeling that AI research in the 2020's is too unambitious. How many teams are actually aiming for AGI? When he then read Superintelligence by Nick Bostrom (2014) it said the same. AGI research has become a taboo in the early 21st century.
Related projects:
Bibliograpy:
Video 3.
DeepMind Has A Superhuman Level Quake 3 AI Team by Two Minute Papers (2018)
Source. Commentary of DeepMind's 2019 Capture the Flag paper. DeepMind does some similar simulations to what Ciro wants, but TODO do they publish source code for all of them? If not Ciro calls bullshit on non-reproducible research. Does this repo contain everything?
Video 4.
OpenAI Plays Hide and Seek... and Breaks The Game! by Two Minute Papers (2019)
Source. Commentary of OpenAi's 2019 hide and seek paper. OpenAI does some similar simulations to what Ciro wants, but TODO do they publish source code for all of them? If not Ciro calls bullshit on non-reproducible research, and even worse due to the fake "Open" in the name. Does this repo contain everything?
Video 5.
Much bigger simulation, AIs learn Phalanx by Pezzza's Work (2022)
Source. 2d agents with vision. Simple prey/predator scenario.
Ciro Santilli's Stack Overflow contributions Updated +Created
Ciro Santilli's Stack Overflow contributions have, unsurprisingly, centered around the subjects he has worked with: systems programming and web development, and necessary tooling to get those done, such as Git, Python, Bash and Ubuntu.
His best answers are listed at: Section "The best articles by Ciro Santilli".
Stack Overflow has been the initial centerpiece of Ciro Santilli's campaign for freedom of speech in China, until Ciro noticed that GitHub might be potentially even more effective for it.
In Stack Overflow Ciro likes to:
  • answer important questions found through Google which he needs to solve an actual problem he has right now, and for which none of the existing answers satisfied him, and close duplicates.
  • monitor less known tags which very few people know a lot about and where the knowledge sharing desperately lacking, but in which Ciro specializes and therefore has some uncommon knowledge to share
In practice it also happens that Ciro:
When he gets an upvote on one of his more obscure answers, Ciro often re-reads it, and often finds improvements to be made and makes them.
He doesn't like to refresh the homepage looking for easy reputation on widely known subjects. See also: online forums that lock threads after some time are evil.
The result is that Ciro ends up getting relatively a lot of reputation without much work! The term passive income, much beloved by fake investment gurus, comes to mind. But now it's "passive reputation"! And it is useless! Yay!
For this reason, Necromancer is Ciro's favorite badge (get 5 upvotes on a question older than 60 days), and as of July 2019, he became the 1 user with the most of this badge. Announcement on Twitter.
The number two at the time was VonC (see also: Section "Epic Stack Overflow users"), who had about 16 times more answers than Ciro in total! From this query: data.stackexchange.com/stackoverflow/query/1072396?&Date=2019-07-01&UserId=895245 it can be seen that as of July 2019, 1216 out of his 1329 answers were answered 60 days after the questions and constitute potential necromancers! Compare that to VonC's 1643 potential necromancers out of 21767 answers!
VonC eventually took back the lead in 2022, dude's a machine!!! twitter.com/cirosantilli/status/1546389532014247936
Someone at Ciro's work once said something along:
The more patents a research project generates, the less actually working products it produces.
and this does ring true in Stack Overflow as well. When you are answering stuff, it means that you either didn't know, or that the information wasn't well available, and so your specific application is progressing slowly because of that. Once the generic prerequisites are well solved and answered, you will spend much more time on your business specific things rather than anything else that can be factored out across projects, and so you will get more "directly useful work" done, and less Stack Overflow answers. Of course, without the prior research in place, you can't get the final product done either.
In terms of per year reputation ranks, Ciro was in the top 100 in of the 2018 ranking with 38,710 reputation gained in that year: stackexchange.com/leagues/1/year/stackoverflow/2018-01-01?sort=reputationchange&page=4 (archive). He reached top 50 in 2022. Note that daily reputation is mostly capped to 200 per day, leading to a maximum 73000 per year. It is possible to overcome this limit either with bounties or accepts, and Ciro finds it amazing that some people actually break the 73k limit by far with accepts, e.g. Gordon Linoff reached 135k in 2018 (archive)! However, this is something that Ciro will never do, because it implies answering thousands and thousands of useless semi duplicate questions as fast as possible to get the accept. Ciro's reputation comes purely from upvotes on important question, and is therefore sustainable without any extra effort once achieved. Interestingly, Ciro appeared on top of the quarter SE rankings around 2019-11: web.archive.org/web/20191112100606/https://stackexchange.com/leagues but it was just a bug ;-)
There is no joy like answering an old question, and watching your better answer go up little by little until it dominates all others.
Stack Overflow reputation is of course, in itself, meaningless. People who contribute to popular subjects like web development will always have infinitely more reputation than those that contribute to low level subjects.
What happens on the specialized topics though is that you end up getting to know all the 5 users who contribute 95% of the content pretty soon as you study those subjects.
Like everything that man does, the majority of Ciro's answers are more or less superficial subjects that many people know but few have the patience to explain well, or they are updates to important questions reflecting upstream developments. But as long as they save 15 minutes from someone's life, that's fine.
There is great beauty when you are involved in a programming problem, and you suddenly remember: wait, I answered something related a few years ago! And especially so when you can go back and improve your old answer with new insight. This has great value, because when you were more newbie, you would have typed different words into Google Search than you would now. So by updating posts from when you were a newbie, you are helping other newbies more, as they are more likely to be also searching for those keywords. It is also very nice to have some head start on the answer's upvote count and not have to bootstrap yet another answer from 0 upvotes and have to go through all the competition!
For example, Ciro's most upvoted answer as of July 2019 is stackoverflow.com/questions/18875674/whats-the-difference-between-dependencies-devdependencies-and-peerdependencies/22004559#22004559 was written when he spent his first week playing with NodeJS (he was having a look at Overleaf, later merged into Overleaf, for education), which he didn't touch again for several years, and still hasn't "mastered" as of 2019! This did teach a concrete life lesson to Ciro however: it is impossible to know what is the most useful thing you can do right now very precisely. The best bet is to follow your instincts and do as much awesome stuff as you can, and then, with some luck, some of those attempts will cover an use case.
Ciro tends to take most pride on his systems programming answers, which is a subject that truly relatively few people know about. He likes it when he goes insanely deep into a subject, way beyond what OP had in mind, exposing full root causes and broader causes, see e.g.:
Ciro also derives great joy from his "media related answers" (3D graphics, audio, video), which are immensely fun to write, and sometimes borderline art, see answers such as those under "OpenGL" and "Media" under the best articles by Ciro Santillis or even simpler answers such as:
There is something of greater value in perfectly presented technical knowledge, that goes beyond than simply getting something done. The pleasure of understanding and mastering something, and perhaps of the explanation itself. Sometimes when answering, Ciro feels like a tailor, where ASCII is his cloth. See also: Section "The art of programming", Section "Physics and the illusion of life".
Ciro's deep understanding of Stack Overflow mechanisms and its shortcomings also helped shape his ideas for: OurBigBook.com. So it is a bit funny to think that after all time Ciro spent on the website, he actually wants to destroy it and replace it with something better. There can be no innovation without some damage. It also led to Ciro's creation of Stack Overflow Vote Fraud Script.
After answering so many questions, he ended up converging to a more or less consistent style, which he formalized at:
Like any other style guide, this answer style guide, once fully incorporated and memorized, allows Ciro to write answers faster, without thinking about formatting issues.
Ciro also made a question title style guide: meta.stackexchange.com/questions/10647/how-do-i-write-a-good-title/311903#311903 but for some reason the Stack Overflow community prefers their semi-defined title meta-language to proper English. Go figure.
Ciro started contributing to Stack Overflow in 2012 when he was at École Polytechnique.
Like all things that end up shaping the course of one's life, Ciro started contributing without thinking too much about it.
His first answer was to the LaTeX question: Standalone diagrams with TikZ?, which reflects the fact that this happened while Ciro was reaching his Ciro Santilli's Open Source Enlightenment.
Ciro's first upvote was for his 2012 question: How to run a Python script portably without specifying its full path?
When he started contributing, Ciro was still a newbie. One early event he will never forget was when someone mentioned a "man page", and Ciro commented saying that there was a typo!
When Ciro reached 15 points and gained the ability to upvote, it felt like a major milestone, he even took a screenshot of the browser! 1k, 10k and 100k were also particularly exciting. When the 100k cup (archive) arrived in 2018, Ciro made a show-off Facebook post (archive). At some point though, your brain stops caring, and automatically filters out any upvotes you get except on the answers that you are really proud of and which don't yet have lots of upvotes. The last remaining useless gamed achievement that Ciro looked forward to was legendary (archive), and which he achieved on 2021-02-16.
Figure 3.
Ciro Santilli with his Stack Overflow 100k reputation cup
.
From the start, Ciro's motivations for contributing to Stack Overflow have been a virtuous circle of:
  • save the world through free education
  • It feels especially amazing when people in the real world start taking note of you, and either close friends tell you straight out that you're a Stack Overflow God, or as you slowly and indirectly find out that less close know or came to you due to your amazing contributions.
It is also amazing when you start having a repertoire of answers, and as you are writing a new answer, you remember: "hey, the knowledge of that answer would be so welcome here", and so you link to the other answer as well at the perfect point. This somewhat achieves does what OurBigBook.com aims to do: for each small section of a tutorial, gather the best answers by multiple people.
Ciro feels that his Stack Overflow alter ego is kenorb.
Another one is Aaron Hall, who is also very high on the necromancer list, answers in Python which is a topic Ciro cares about, and states on his profile:
Follow me on Twitter and tell me what canonical questions you would like me to respond to!
so another necromancer.
Way to go.
Ciro also asks some questions on a ratio of about 1 question per 10 answers. But Ciro's questions tend to be about extremely niche that no one knows/cares about, and a high percentage of them ends up getting self answered either at asking time or after later research.
Some fun reactions to Ciro's Stack Overflow activity:
Closed standard Updated +Created
ISO is the main culprit of this bullshit, some notable examples related to open source software:
The only low level thing that escaped this was OpenGL via Khronos, what heroes those people are.
How the hell are you supposed to develop an open source implementation of something that has a closed standard?
Not to mention open source test suites, that would be way too much to ask for, those always end up being made by some shady small companies that go bankrupt from time to time, see e.g. .
Silicon Graphics Updated +Created
This company is a bit like Sun Microsystems, you can hear a note of awe in the voice of those who knew it at its peak. This was a bit before Ciro Santilli's awakening.
Those people created OpenGL for God's sake! Venerable.
Both of them and Sun kind of died in the same way, unable to move from the workstation to the personal computer fast enough, and just got killed by the scale of competitors who did, notably Nvidia for graphics cards.
Some/all Nintendo 64 games were developed on it, e.g. it is well known that this was the case for Super Mario 64.
Also they were a big UNIX vendor, which is another kudos to the company.
Video 1.
Silicon Graphics Promo (1987)
Source. Highlights that this was one of the first widely available options for professional engineers/designers to do real-time 3D rendering for their designs. Presumably before it, you had to do use scripting to CPU render and do any changes incrementally by modifying the script.
Sponsor Ciro Santilli's work on OurBigBook.com Updated +Created
Ciro Santilli is actively looking for donations and contracts so he can continue to work full time on OurBigBook.com sustainably, and develop free hardcore university-level STEM education for all ages!
At 100k USD, I quit my job to work full time on it for one year. During this year I will use my contacts with STEM students of a world leading university near where I live and solve as many of their problem sheets as possible, mostly by referring to OurBigBook.com articles I'll be writing. The goal is to get as much STEM knowledge as possible into the world, and highlight how flawed presencial and sequential Higher Education is, while positioning OurBigBook.com as an alternative way to organize humanity's knowledge. Quite grand.
Status: ~144k / 200k USD reached. 1st year locked in and started 1st June 2024 to 31st May 2025[ref], 2nd year stretch goal open. A second year greatly improve chances of success: year one I solve a bunch of courses, year two I come guns blazing with the content and expand further. Donation breakdown:
  • 2024-03-18: $126,352 (!!!): anonymous 1000 Monero donation to self-custody wallet. Further comments: 1000 Monero donation.
  • 2024-03-13: $1,375: anonymous 10 Monero donation to self-custody wallet
  • 2023-11-20: $14.563: anonymous 100 Monero donation to Binance wallet
  • 2023-09: $810: anonymous 0.032 Bitcoin donation to Coinbase wallet
  • subscriptions up to 2024-01: $143,795
More details: Section "Accounting method"
At 1M USD I retire and work on open STEM education forever.
Note to potential anonymous crypto donors: anonymous donations incur a regulatory risk. I cash out most of such donations and announce it very clearly to the government and banks. For example, at one point Barclays even froze my UK account. But things seem manageable for now. On one hand, such donations serve as a fun test of the financial system. But on the other, if all banks reject my money or if the government decides to take it, I will write off the anonymous donation at zero.
How to give:
  • one time donations:
    • cryptocurrency: note that Ciro is not a regular crypto user, so you might want to make a smaller test donation and confirm that it worked by contacting Ciro before going for colossal amounts (one can dream):
      • Monero address: 4A1KK4uyLQX7EBgN7uFgUeGt6PPksi91e87xobNq7bT2j4V6LqZHKnkGJTUuCC7TjDNnKpxDd8b9DeNBpSxim8wpSczQvzf. Secret view key: 7ccaf885ff5540b0ff18927e6ac5da30130afb1eaee09ad95d3c4536a6337e0f. This is a self-custody wallet on a "clean" dedicated Monero laptop connected the Internet. I check for incoming transactions from my dirty main laptop via a view-only wallet each weekend. The cash out method used is latest simplest thing that wasn't yet blocked in my country on a given week, the last time that was centralized swappers[ref]. The fact that the cash out method changes weekly confirms that Monero privacy hadn't yet been broken by countries and that Monero is still one of the most useful cryptocurrencies: Section "Are cryptocurrencies useful?". For transparency, I announce all non-trivial transactions on social media, and the full list of transactions can be seen by anyone with the secret view key provided. I previously had different addresses, so pre-existing donations on older addresses will not be visible there.
      • Bitcoin address: 3KRk7f2JgekF6x7QBqPHdZ3pPDuMdY3eWR. This is a Coinbase wallet, off-chain transactions with no transaction fees accepted from other Coinbase users. This method has been tested, I have been able to receive funds from this address in 2023. Fees: non-fixed trading fees[ref] + 0% withdrawal fee on top of any Bitcoin network for on-chain transactions[ref]
      • Ethereum address: 0x44cF8C9C015F46d3b2Df730b6492823FD7A91044. Test transaction recommended.
      • Solana address: DjdaGawoVFdqxJEqpBGsSWuR4G4MVFNiNkAEu89HuKcE. Test transaction recommended.
    • TransferWise tag: wise.com/pay/me/cirod3. It shows as "Ciro Duran Santilli" and that's correct. No fees apparently? Love it!
    • PayPal: paypal.me/cirosantilli. Note that dots in Gmail address are ignored, and it is perfectly normal if the email you see has some extra dots in it. Fees: 2.9% + 0.30 GBP[ref].
  • monthly subscriptions of 1$/month or more on either:
    Symbolic 1 dollar/month donation are extremely welcome to signal your interest! This way if a certain critical mass of sponsors is ever reached (~100?), Ciro can start to more actively asking slightly higher amounts to really try to achieve full time self sufficiency.
  • larger grants/contracts from filthy rich individuals or organizations: contact Ciro as mentioned at: Section "How to contact Ciro Santilli" to discuss.
    Ciro is interested in contracts/voluntary work that would be compatible/synergic with the OurBigBook.com project. Some possibilities include:
    • interacting directly with classes of university students to help them learn the class subject, while at the same time spreading the university knowledge outside of the university walls
    • one-to-one mentoring of individuals of any age that are looking to make an impact in the world, and not just pass their exams
    • fixing specific bugs in related projects Ciro has experience in. These could be either via one-off contracts, or on platforms such as:
And if you have a different preferred payment mechanism not listed above, please contact Ciro, and he will set it up.
Ciro's current ambitions require him to remain in developed countries, because Ciro wants to document advanced science and technology by liaising with top universities, and there is not nearly as much high technology in poor countries. Remaining in developed countries is also a required due to family reasons.
If you would like public acknowledgement for your support, Ciro will very gladly give it, just let Ciro know how you'd prefer it. Due to Ciro Santilli's campaign for freedom of speech in China, many supporters have chosen to be anonymous, and that is totally fine, not everyone is interested in politics, or has a situation where going public is acceptable, so we don't have a standard setup yet, let's build it together. A acknowledgement section at the bottom of this page would be a minimum, but I for larger donations we could add a your advertisement in a locations such as:
100k USD/year is a semi arbitrary amount that sounds nice. My last day job total compensation as of 2024 was about 150k USD/year.
Video 2.
OpenGL GPU GLSL fragment shader real time v4l2 Linux webcam computer vision box blur vs CPU
. Source.
Figure 1.
Ciro Santilli playing with a pipette at the University of Cambridge circa 2017
. Although totally disqualified for it, Ciro would really like to understand and explain cool scientific experiments in insane detail much as he does with computer software, related:Maybe if he ever gets enough credibility, such opportunities would actually materialize. It could be a bit like Periodic Videos, but for molecular biology and physics, and backed by OurBigBook text/tree with minimal openly licensed videos. The fact that such opportunities are essentially impossible outside of the boredom of the university system is something we should really change about education.