Bookmarks: Difference between revisions

From miki
Jump to navigation Jump to search
 
(351 intermediate revisions by the same user not shown)
Line 11: Line 11:


== AI / ML ==
== AI / ML ==
;See also
* [[ChatGPT]]

;Bookmarks
* [https://www.youtube.com/watch?v=tCPzYM7B338 Guppies, an evolving neural network].
* [https://www.youtube.com/watch?v=tCPzYM7B338 Guppies, an evolving neural network].
* [https://blog.insightdatascience.com/the-unreasonable-effectiveness-of-deep-learning-representations-4ce83fc663cf The Unreasonable Effectiveness of Deep Learning Representations].
* [https://blog.insightdatascience.com/the-unreasonable-effectiveness-of-deep-learning-representations-4ce83fc663cf The Unreasonable Effectiveness of Deep Learning Representations].
Line 23: Line 27:
* [https://learningtopredict.github.io/ Learning to Predict Without Looking Ahead:World Models Without Forward Prediction]
* [https://learningtopredict.github.io/ Learning to Predict Without Looking Ahead:World Models Without Forward Prediction]
:Nice animations. Looks simple to understand...
:Nice animations. Looks simple to understand...
* [https://artbreeder.com/ Artbreeder]
:Generate new images (portraits, landscapes, album covers...) by mixing together images to generate new ones.
* [https://www.thisworddoesnotexist.com/ This word does not exist]
:New word invented and defined by an AI, using GPT-2.
* [https://distill.pub/ Interactive examples on machine learning]
:Suggested on [https://news.ycombinator.com/item?id=23702552 HN].
* [https://magenta.tensorflow.org/lofi-player Lo-Fi Player]
: An interactive room where you can build your own custom music.
* [https://nlp.stanford.edu/~johnhew/rnns-hierarchy.html The Unreasonable Syntactic Expressivity of RNNs]
* [https://nullprogram.com/blog/2020/11/24/ You might not need machine learning]
: Beyond the subject, what I like is the nice animations, and the simple explanation.
* [http://tylerneylon.com/a/lsh1/ Introduction to Locality-Sensitive Hashing] ({{file|lsh_post1.pdf}})
: Very nice article on how to use projection-based hashing to very quickly find neighbours in a dataset
* [https://laion.ai/laion-400-open-dataset/ https://laion.ai/laion-400-open-dataset/]
: The world’s largest openly available image-text-pair dataset with 400 million samples. There is an online browser: https://rom1504.github.io/clip-retrieval/. Enter any query (<code>a bicycle in the wood</code>), and it returns relevant pictures.
* [http://tom7.org/lowercase/ Uppestcase and Lowestcase Letters]
: A ML experiment to generate "lowest" and "uppest" case letter from standard pairs of lowercase / uppercase letter. The ML engine is trained to generate the corresponding lower or upper case letter from any letter. Using that engine we can generate the lowercase variant of an already lower case letter, giving a "lowestcase" letter, etc ;-)
:* Other examples of crazy lettering: [https://art-by-kaine-shields.tumblr.com/post/643105913844154368/fun-fact-about-me-is-that-when-i-was-a-kid-id crazy lettering].
* [https://www.samdickie.me/writing/experiment-1-creating-a-landing-page-using-ai-tools-no-code Experiment #1: Creating a landing page using AI tools + No code]
:Using various AI tools to make a website (ChatGPT, MidJourney...).
* [https://oneusefulthing.substack.com/p/my-class-required-ai-heres-what-ive My class required AI. Here's what I've learned so far]
:Several approaches to making several prompts: Minor variations, letting the AI do the work (poor results) &mdash; Adding restrictions and user knowledge (good but lot of variation) &mdash; Co-editing. The last approach is the one giving the best result, and also help mastering the subject.
* [https://viper.cs.columbia.edu/ ViperGPT: Visual Inference via Python Execution for Reasoning]
:Using AI to analyze a problem / image, produce a Python program to solve it, and execute it.
* [https://saulcosta.com/the-role-of-ai-in-accelerating-skill-development-a4831311f0db The Role of AI in Accelerating Skill Development]
:A detailed investigation on how to use ChatGPT to learn new skills (here macroeconomy), by creating example scenarios, detailed queries...
* [https://ds-fusion.github.io/ DS-Fusion: Artistic Typography via Discriminated and Stylized Diffusion]
:An incredible pipeline that produces artistic fonts using some prompts (e.g. making 'R' letter looking like a dragon). Results are amazing and very stylized.
* [https://aisnakeoil.substack.com/p/gpt-4-and-professional-benchmarks GPT-4 and professional benchmarks: the wrong answer to the wrong question]
:An interesting analysis of the capability of ChatGPT-4, in particular about the risk of cross-contamination when evaluating its capabilities. Evaluation methods from less to more useful: Comparison on contaminated exam benchmarks / Comparison on exam benchmarks / Comparison on real-word tasks / Quantitative studies of professionals using AI / Qualitative studies of professionals using AI.
* [https://about.sourcegraph.com/blog/cheating-is-all-you-need Cheating is All You Need]
:An explanation of why AI will become dominant as code assistant. Title is a reference to landmark paper from Google Brain team [https://arxiv.org/abs/1706.03762]. Explain the importance of the "cheat sheet", ie the context that is passed to the AI to generate good response about the current code base.
* [https://www.emergentmind.com/ EmergentMind]
: AI News, Curated and Explained by AI. Also contains list of prompt / queries to ChatGPT.
* [https://oneusefulthing.substack.com/p/how-to-use-chatgpt-to-boost-your?ref=emergentmind How to use ChatGPT to boost your writing].
* [https://www.youtube.com/watch?v=kCc8FmEb1nY Let's build GPT: from scratch, in code, spelled out.] (YouTube)
:A must-see video about building a GPT ourselves in Python.
* [https://arxiv.org/abs/2303.12712 Sparks of Artificial General Intelligence: Early experiments with GPT-4]
: A 154-page paper from Microsoft research team evaluating GPT-4 in many domains. Must read.
* [https://www.semianalysis.com/p/google-we-have-no-moat-and-neither Google "We Have No Moat, And Neither Does OpenAI"] (also printed as PDF)
: Leaked Internal Google Document Claims Open Source AI Will Outcompete Google and OpenAI
* [https://www.alignmentforum.org/posts/N6WM6hs7RQMKDhYjB/a-mechanistic-interpretability-analysis-of-grokking A Mechanistic Interpretability Analysis of Grokking]
: A detailed article on how NN learns complex algorithms.
* [https://fastsdxl.ai/ Fast SDXL]
: Real-time image generation with SDXL Lightning
* [https://felixreda.eu/2021/07/github-copilot-is-not-infringing-your-copyright/ GitHub Copilot is not infringing your copyright]
: An interesting analysis about the issue of CoPilot and copyright. Act of reading / scraping is no copyright infringement (the same way if I read a book in a store). Only issue is that such act requires temporary digital copy. Machine-generated code is not derivative work.


== Mathemathics ==
== Mathemathics ==
Line 41: Line 92:
* [https://github.com/anvaka/fieldplay Fieldplay - A vector field explorer]
* [https://github.com/anvaka/fieldplay Fieldplay - A vector field explorer]
: A very fast web application showing particle movements in force field. Very fast. See [https://anvaka.github.io/fieldplay/?cx=0.0017000000000000348&cy=0&w=8.543199999999999&h=8.543199999999999&dt=0.01&fo=0.998&dp=0.009&cm=1 example].
: A very fast web application showing particle movements in force field. Very fast. See [https://anvaka.github.io/fieldplay/?cx=0.0017000000000000348&cy=0&w=8.543199999999999&h=8.543199999999999&dt=0.01&fo=0.998&dp=0.009&cm=1 example].

* [https://mathoverflow.net/questions/366070/what-are-the-benefits-of-writing-vector-inner-products-as-langle-u-v-rangle/366118#366118 Desirable properties of mathematical notations]
: Answer from Terrence Tao about properties of good notation systems (taking dot/scalar product as example).
* [https://github.com/connorferster/handcalcs handcalcs: Python calculations in Jupyter, as though you wrote them by hand.]
: Rendering equation (LaTeX) in Jupyter, with value substitution. Nice examples, and lots of features.

* [https://dyno-might.github.io/2020/09/17/making-the-monty-hall-problem-weirder-but-obvious/ Making the monty hall problem weirder but obvious]
: A nice explanation on the Monty Hall problem (2 goats and one car behind a door, pick a door, have presentator pick another one with goat, and ask whether to switch or not)

* [https://stopa.io/post/269 What Gödel Discovered]
: A nice detailed explanation of the Gödel proof regarding consistency and completeness.

* [https://daniel.lawrence.lu/blog/y2016m02d08/ Implicit plotter]
: A javascript plotter using random sampling to plot solutions of any f(x,y)=0, including pathological ones.

* [https://isabelle.in.tum.de/ Isabelle] is a generic proof assistant].
:Here some [https://lawrencecpaulson.github.io/2022/05/04/baby-examples.html Some baby examples]

* [https://iheartla.github.io/ I❤️LA] is a novel domain specific language for linear algebra.
:The I❤️LA code written with rich Unicode symbols visually resembles chalkboard math, while still being a semantically well-defined programming language compilable to various target languages: LaTeX, MATLAB, Python, C++.

* [https://erich-friedman.github.io/packing/index.html Erich's packing center]
:Solutions to problems of packing figures inside figures, covering figures of figures, etc (eg. how many triangles in a square).

* [https://www.math.cmu.edu/~jmackey/151_128/bws_book.pdf Everything You Always Wanted To Know About Mathematics]
:A book about mathematics, proofs...

* [https://infinitedescent.xyz/ An inifinite descent into pure mathematics]
:An introductory pure mathematics textbook (under creative common, and including LaTeX source!).

* [https://grossack.site/2023/11/08/37-median.html A truly incredible fact about the number 37]
:37 is the median of the second prime factor of any random integer, that is, if we pick an integer at random, the second prime factor of that integer has 50% chance to be lower than 37. This post gives a nice demonstration, which is simply based on counting the probability that the second prime factor is 2, 3, 5...

* [https://www.quantamagazine.org/entropy-bagels-and-other-complex-structures-emerge-from-simple-rules-20240227/ Entropy Bagels] and [https://www.quantamagazine.org/the-quest-to-decode-the-mandelbrot-set-maths-famed-fractal-20240126/ Mandelbrot]
:Interesting discussions on the Mandelbrot set, entropy bagels... to read in details some day.

* [https://lcamtuf.substack.com/p/is-the-frequency-domain-a-real-place Is the frequency domain a real place?]
:A great article about Walsh-Adamard transform and matrices, and how to generate / use them.

* [https://en.wikipedia.org/wiki/Baum%E2%80%93Welch_algorithm Baum–Welch algorithm]
:Interesting algorithm to find the unknown parameters of a hidden Markov model.

* [https://www.rahulilango.com/coloring/ A puzzle to learn about map coloring]
:Include a zero-knowledge proof on how to demonstrate a map only needs 3 colors, without revealing the solution; and a proposal to transmit information by the number of primes that an integer has (properties: '''revealing''', '''hiding''', '''unique decoding''').

* [https://mathforlove.com/2024/09/the-centrality-of-stupidity-in-mathematics/ The centrality of stupidity in mathematics]
:Say student they are not stupid, but that it is normal to feel stupid.


== Sciences ==
== Sciences ==
* [http://rosalind.info/problems/locations/ Rosalind: Learn bioinformatics by programming it]
* [http://rosalind.info/problems/locations/ Rosalind: Learn bioinformatics by programming it]
: Many exercices in Python on the theme of bioinformatics.
: Many exercices in Python on the theme of bioinformatics.
* [https://www.sciencemag.org/careers/2016/01/how-read-scientific-paper How to read a scientific paper]
: The 10 phases you go through when reading a scientific papers. More [https://www.sciencemag.org/careers/2016/03/how-seriously-read-scientific-paper tips to read these papers here].
* [http://www.av8n.com/physics/maxwell-ga.htm Electromagnetism using Geometric Algebra versus Components]
: All Maxwell equations in a single space-time oneliner (see also [https://en.wikipedia.org/wiki/Bivector WP]).
* [https://jsomers.net/i-should-have-loved-biology/ I should have loved biology (James Somers)]
: Many interesting facts about biology, that we should be amazed at. Many links, in particular to [https://www.youtube.com/channel/UC6QYFutt9cluQ3uSM963_KQ Ninja Nerd Science]. Often times more interesting to study the methods than the facts.
: Interesting fact: As an example, if only 0.02% of a typical eukaryotic cell’s surface has a receptor for p, the cell will be about half as efficient as if the entire surface were coated with receptors for p.

== Quantum computing ==
* [https://arthurpesah.me/blog/2023-05-13-surface-code/ An interactive introduction to surface code]
:A detailed explanation about surface code, which can be used to reduced noise in quantum computing.


== Tools ==
== Tools ==
Line 54: Line 163:
* [https://meet.jit.si/ Jit.si], an open-source videoconferencing service.
* [https://meet.jit.si/ Jit.si], an open-source videoconferencing service.
* [https://www.mumble.com/ Mumble], an open-source VoIP solution (alternative to TeamSpeak and Discord).
* [https://www.mumble.com/ Mumble], an open-source VoIP solution (alternative to TeamSpeak and Discord).
* [https://github.com/hofstadter-io/jumpfiles/blob/master/README.md Jumpfiles], a framework to setup jumpfiles in Shell, to quickly record/edit/recall long commands with shorthand equivalent.
* [https://github.com/christianvoigt/argdown Argdown]: A simple syntax for complex argumentation, a kind of extension of MarkDown.
* [https://github.com/onekey-sec/unblob unblob]: Extract files from any kind of container formats (more tools [https://news.ycombinator.com/item?id=34434249 here])
* [https://github.com/akavel/up up] The Ultimate Plumber tool, allows to build complex pipe shell commands.
* [https://sw.kovidgoyal.net/kitty/ Kitty] ([https://github.com/kovidgoyal/kitty github]) A powerful terminal with hyperlink / image support
* [https://starship.rs/ starship] The minimal, blazing-fast, and infinitely customizable prompt for any shell!
* [https://opensource.googleblog.com/2024/02/magika-ai-powered-fast-and-efficient-file-type-identification.html Magika] ([https://google.github.io/magika/ github]), Google AI-powered file identification tool with >99% recognition rate.

== Services ==
* [https://www.guerrillamail.com/ Guerrilla Mail], a service to create easily temporary mail addresses for use on (untrusted) web site for registration, etc.
* [https://www.carsized.com/ carsized], a comparator of car sizes.
* [https://archive.is/ Archive today], a website that keeps copies of new site, and can often be used to bypass paywalls.


== Apps ==
== Apps ==
* [https://krita.org/en/item/krita-4-0-0-released/ Krita 4.0 released], Krita is a professional FREE and open source painting program.
* [https://krita.org/en/item/krita-4-0-0-released/ Krita 4.0 released], Krita is a professional FREE and open source painting program.
* [https://www.draw.io Draw.io] &mdash; a free alternative to Visio, very powerful and that integrates nicely in many online platforms (GitLab...). Available offline, and as stand-alone executable as well.
* [https://www.draw.io Draw.io] &mdash; a free alternative to Visio, very powerful and that integrates nicely in many online platforms (GitLab...). Available offline, and as stand-alone executable as well.
* [https://github.com/excalidraw/excalidraw Excalidraw] &mdash; A nice drawing tool, making handwriting-like drawings. Nice for presentations.
* [https://mermaid-js.github.io/mermaid/#/ Mermaid] &mdash; lets you create diagrams and visualizations using text and code (flowchart, sequence diagram, gantt diagram, class diagram, git graph) (also [https://github.blog/2022-02-14-include-diagrams-markdown-files-mermaid/ discussed here])

== Games ==
* [https://github.com/arcataroger/awesome-engineering-games A curated list of engineering-related video games rated Very Positive or higher on Steam.]
:For when I'll be retired...
* [https://github.com/fearedbliss/Cactus A Modern Version Switcher, Character Isolator, and Mod Manager for Diablo II (Original, Not Resurrected)]
: Also explain how to install Windows 10 w/o network connection and activation issue (ie. fully isolated Win10). Used <code>Win10_22H2_English_x64v1.iso (2023 Update)</code> with hash <code>bbb1b234ea7f5397a1906ee59187087c78374f35</code>.


== Books ==
== Books ==
Line 66: Line 195:
* [https://practicaltypography.com/ Practical Typography]
* [https://practicaltypography.com/ Practical Typography]
:Online digital book on typography from Matthew Butterick, including tips to learn typography in ten minutes.
:Online digital book on typography from Matthew Butterick, including tips to learn typography in ten minutes.
* [http://math.hws.edu/graphicsbook/index.html David J. Eck, Introduction to Computer Graphics, Version 1.2, January 2018]

:OpenGL, WebGL, 3D, Blender...
Recommended books for development (source [https://news.ycombinator.com/item?id=21016664 HN]):
* [https://yurichev.com/writings/Math-for-programmers.pdf Mathematics for Programmers]
* The Practical Programmer,
:prime numbers, probabilities, logarithms, graph theory, gcd/lcm...
* Code Complete,
* Recommended books for development (source [https://news.ycombinator.com/item?id=21016664 HN]):
* Design Patterns, from the Gang of Four,
:* The Practical Programmer,
* Refactoring, from Martin Flower,
:* Code Complete,
* The Practice of Programming, from Kernighan and Pike’s,
:* Design Patterns, from the Gang of Four,
:* Refactoring, from Martin Flower,
:* The Practice of Programming, from Kernighan and Pike’s,
* [http://matpalm.com/blog/cool_machine_learning_books/ my updated list of cool machine learning books]


== Dev ==
== Dev ==
Line 117: Line 250:
* [https://web.stanford.edu/class/ee384m/Handouts/HowtoReadPaper.pdf How to Read a Paper]
* [https://web.stanford.edu/class/ee384m/Handouts/HowtoReadPaper.pdf How to Read a Paper]
: Explain a three-pass technique to read scientific paper (1st intro and conclusion and sub-section titles, 2nd read deeper but skip details like proof but pay attention to graphs, 3rd virtually redo the paper).
: Explain a three-pass technique to read scientific paper (1st intro and conclusion and sub-section titles, 2nd read deeper but skip details like proof but pay attention to graphs, 3rd virtually redo the paper).
* [https://www.stevestreeting.com/2010/09/04/work-2-0/ The interruptible programmer]
: Some advices on how to accept and deal with breaks. Maintain a continuous context in notes (at least every 30min). Focus on one current task, other are distraction. Current task must be clearly identified. Plan next task using negative priority (don't include every task, only consider the one with worst consequence if not included).
* [https://github.com/Droogans/unmaintainable-code/blob/master/README.md How To Write Unmaintainable Code]
: An anti-coding style guideline.
* [https://phauer.com/2020/wall-coding-wisdoms-quotes/ The Wall of Coding Wisdoms in Our Office]
: Several wise quotes about coding. Some of them:
:* Premature optimization is the root of all evil. Donald Knuth
:* Rules of optimization: 1. Don’t! 2. Don’t… yet. 3. Profile before optimizing. Michael Jackson
:* As a programmer, never underestimate your ability to come up with ridiculously complex solutions for simple problems. Thomas Fuchs
:* Get your data structures correct first, and the rest of the program will write itself. David Jones
:* The #1 rule of distribute computing: Don’t distribute your computing! At least if you can in any way avoid it. DHH (David Heinemeier Hanson)
:* Scalability. The #1 problem people don’t actually have but still solve. Eberhard Wolff
:* Shared + Mutable = Danger! Andrey Breslav
:* Prefer duplication over the wrong abstraction. Sandi Metz
:* Compassionate Tech Values: Ego < Humility. Elitism < Inclusion. Competition < Cooperation. Being Smart < Learning. Being a Rockstar < Being a Mentor. April Wensel
/* KISS > DRY
* [https://begriffs.com/posts/2020-08-31-portable-stable-software.html?hn=3 Tips for stable and portable software]
: Pick a stable language (C, Ada...). Avoid/wrap compiler language extensions.
: Use / learn the standard library (see [https://begriffs.com/posts/2019-01-19-inside-c-standard-lib.html here] for C std lib), and know the gotchas.
: Use POSIX (must define <code>_POSIX_C_SOURCE</code>).
: Deal with OS extras (use <code>config.mk</code> in <code>Makefile</code>. See link for example of <code>configure</code> script to test compiler features). Wrap OS functions behind our own.
: Deal with third-party libraries. Use <code>pkg-config</code> to find and deal with dependency libraries (or create your own). Use POSIX <code>search.h</code> for simple collection libraries, or [https://fragglet.github.io/c-algorithms/ C Algorithms] for a small and clean library. See also [http://troydhanson.github.io/uthash/index.html Uthash].
: For user interface, there is [https://tiswww.case.edu/php/chet/readline/rltop.html readline] [https://invisible-island.net/ncurses/ ncurses] and [https://www.libsdl.org/ SDL2].
* [https://pointersgonewild.com/2018/02/18/minimalism-in-programming/ Minimalism in Programming]
: Define your Minimal Viable Product. Don't fear refactoring, we cannot avoid it (too many unknowns). Minimize your dependencies (external libs)
* [https://daniel.haxx.se/blog/2020/11/09/this-is-how-i-git/ This is how I git]
: Detailed but clear explaination on how the lead maintainer of Curl uses git everyday. No merge but rebase. Commit rewrite. Scripts for release note. CI. We should do the same.
* [https://simonwillison.net/2022/Nov/26/productivity/ Coping strategies for the serial project hoarder]
: Recommended practices from someone who atively maintains 200-ish python projects. 1/ Change one thing at a time, 2/ Write a test (use template project so that all projects come with test framework included), 3/ Embed documentation in project, and update the documentation. Use github issue as extra temporal documentation: background, state-of-play beforehand, links to things (documentation, StackOverflow...), decisions, screenshots, code snippets... Scripting for releases.
* [https://twasink.net/2004/03/30/dtsttcpw-what-does-it-mean/ DTSTTCPW – What does it mean?] &mdash; aka. Do The Simplest Thing That Can Possibly Work.
: Three words: '''do''', '''simplest''' (aka not complex), '''work'''.
* [https://verdagon.dev/blog/first-100k-lines How To Survive Your Project's First 100,000 Lines]
:Some tips from Vale compiler on how to development an application efficiently (assertion, commenting, testing...)
* [http://number-none.com/blow/blog/programming/2014/09/26/carmack-on-inlined-code.html John Carmack on Inlined Code]
:Avoid making function that are called only once. If a function is called several times, see if we can call it only once, possibly with a flag. Mainly for game dev or alike with a tic function.

=== Productivity ===
* [https://kadekillary.work/posts/1000x-eng/ become a 1000x engineer or die tryin']
: A set of command-line script to interface with ChatGPT / GPT4 (hey gpt, data gpt, image gpt, code edit). See also [https://news.ycombinator.com/item?id=35356054 HN comments].
* [https://omakub.org/ Omakub] &mdash; A complete setup to turn Ubuntu into working web environemnt.
: Very neat environment, using Neovim (lazyvim), Alacritty + Zellij (for tiling), nice tiling window manager (with kbd shortcuts), nice integrated color themes, using Flameshot (for screenshot) and Ulauncher (app launcher).


=== Learn ===
=== Learn ===
Line 133: Line 307:
* [https://observablehq.com/@mitvis/introduction-to-d3 Introduction to D3]
* [https://observablehq.com/@mitvis/introduction-to-d3 Introduction to D3]
: An interactive page to learn using D3.
: An interactive page to learn using D3.
* [https://scrimba.com/scrim/cww679T9 Scrimba demo] - Scrimba is a platform to teach coding
* [https://www.youtube.com/watch?v=GLuPJzl_Nv4 React Workout: Intro to useState and useEffect with Cassidy Williams]
: Cassidy Williams is a well-known dev with lots of quality screencast. Here teaching React, using [https://codesandbox.io/ codesandbox.io] as a platform.
* [https://codesandbox.io/ codesandbox.io]
:An instant IDE and prototyping tool for rapid web development.
* [https://stackoverflow.blog/2020/10/05/play-the-long-game-when-learning-to-code/#comment-1092625 Comment on Play the long game when learning to code]
:Interesting comment on how to learn to code, making a difference between learning to code and learning a programming language. Refer to http://htdp.org/ How To Design Program, a subsest of Racket, and the 34 paradigms and 18 concepts identified by Pr. Peter Van Roy (UCL) in http://www.info.ucl.ac.be/~pvr/paradigms.
* [https://learntocodetogether.com/learn-python-the-hard-way-free-ebook-download/ Learn Python the Hard Way]
:(link to the book in PDF) A set of exercises once available on a website, teaching Python. Recommended on HN.
* [https://linuxjourney.com/ LinuxJourney - Learn the ways of Linux-fu, for free]
:A set of lessons. Recommended on HN. Do 1 lesson a day.
* [https://gitlab.com/slackermedia/bashcrawl Learn Linux commands by playing a simple text adventure.]
:An adventure game to learn the linux commands.
* [https://codeamigo.dev/ Codeamigo]
:Learn languages interactively.
* [https://ncase.me/joy/#examples JOY.js make happy little program]
:Nice engine to make nice little program in js, with animation, etc.
* [https://www.redblobgames.com/ Red Blob Games]: Interactive visual explanations of math and algorithms].


=== Web ===
=== Web ===
Line 139: Line 331:
* [https://www.debugbear.com/blog/performant-front-end-architecture Performant front-end architecture]
* [https://www.debugbear.com/blog/performant-front-end-architecture Performant front-end architecture]
: A detailed post on some techniques to make front-end web apps load faster and provide a good user experience.
: A detailed post on some techniques to make front-end web apps load faster and provide a good user experience.
* [https://staticman.net/ Staticman]
: Bring user-generated content to static sites.
* [https://blog.greenroots.info/10-lesser-known-web-apis-you-may-want-to-use 10 lesser-known Web APIs you may want to use]
: Fullscreen API, Clipboard async API...
* [https://news.ycombinator.com/item?id=25357862 HN Comment on how to make a website fast]
: No need for a long post ;-)
* [https://alexbeals.com/projects/colorize/ Colorize]
: A search engine to find colors best corresponding to word or sentence.
* [https://github.com/kripken/emscripten emscripten] and [https://github.com/copy/v86 V86], that provide a compiler and x86 virtual machine to Web Assembly, that allows running x86 machine in the browser!!!
: See [https://blog.benjojo.co.uk/post/interactive-x86-bootloader-tutorial x86 assembly doesn’t have to be scary (interactive)] for a demo, and nice write up on x86 asm.
* [https://github.com/niespodd/browser-fingerprinting Avoiding bot detection: How to scrape the web without getting blocked?]
: Set of tools, services, solutions to allow scraping content from the internet without being detected (including proxy services...).
* [http://cend.me/ Cend.me &mdash; Direct file transfer]
: This uses WebRTC. See [https://news.ycombinator.com/item?id=29224220 HN comments]. Alternatives are https://wormhole.app/, https://www.sharedrop.io/, and https://file.pizza/.
* [https://gohugo.io/ HUGO], A fast and lightweight static web site builder.
: Advertised on [https://ounapuu.ee/posts/2022/02/09/hn-stats-analytics/ this page], which also shows nice way to make analysis / analytics of web engine (nginx, using <code>goaccess</code>).
* [https://tailwindcss.com/ tailwindcss]
: Rapidly build modern websites without ever leaving your HTML. A utility-first CSS framework packed with classes like flex, pt-4, text-center and rotate-90 that can be composed to build any design, directly in your markup.
* [https://x.st/spinning-diagrams-with-css/ Spinning Diagrams with CSS]
: Using CSS to animate mathematical formulas, without javascript.


=== Network ===
=== Network ===
Line 145: Line 357:
* [https://alexpareto.com/scalability/systems/2020/02/03/scaling-100k.html Scaling to 100k Users]
* [https://alexpareto.com/scalability/systems/2020/02/03/scaling-100k.html Scaling to 100k Users]
:Clear, simplified explanation on how to setup a server when facing more and more users (split out DB, split out client/API, add load balancer, add CDN, add database cache and read replica). More discussions on [https://news.ycombinator.com/item?id=22248325 Hacker News].
:Clear, simplified explanation on how to setup a server when facing more and more users (split out DB, split out client/API, add load balancer, add CDN, add database cache and read replica). More discussions on [https://news.ycombinator.com/item?id=22248325 Hacker News].
* [http://www.moserware.com/2009/06/first-few-milliseconds-of-https.html The First Few Milliseconds of an HTTPS Connection (2009]
:Detailed but clear description of the handshake at the start of HTTPS, including crypto details, etc.
* [https://anderstrier.dk/2021/01/11/my-isp-is-killing-my-idle-ssh-sessions-yours-might-be-too/ My ISP Is Killing My Idle SSH Sessions. Yours Might Be Too.]
:A detailed analysis of how NAT works and impact on connections like SSH. Provide some tools to inverstigate such as tcp-send-test, tcp-recv-test and tcp-keepalive-test. Setting <code>ServerAliveInterval</code> fixed his problem.
* [https://brianchristner.io/how-a-single-raspberry-pi-made-my-home-network-faster/ How a Single Raspberry Pi made my Home Network Faster]
:Using PiHole, installed in a Docker container.
* [https://levelup.gitconnected.com/content-delivery-network-cnd-explained-in-simple-words-674e971b06c3 Content Delivery Network (CDN): Explained in simple words]


=== Game ===
=== Game ===
Line 170: Line 389:


* [http://piqnt.com/stage.js/ Stage.js -- 2D JavaScript library for cross-platform HTML5 game development]
* [http://piqnt.com/stage.js/ Stage.js -- 2D JavaScript library for cross-platform HTML5 game development]

* [https://medium.com/acolytefight/elo-sucks-better-multiplayer-rating-systems-for-smaller-games-8ca588ee652f Elo sucks – better multiplayer rating systems for smaller games]
: Interesting blog about alternative ranking system than ELO/Glicko/TruSkill, that gives less complaints from user. [https://news.ycombinator.com/item?id=23908560 HN comments].

* On multi-player game design:
:* [https://www.gabrielgambetta.com/client-server-game-architecture.html Client-server game architecture (Gabriel Gambetta)]
:* [https://gafferongames.com/ Glen Fiedler's articles for this topic].
:* [https://mrelusive.com/publications/papers/The-DOOM-III-Network-Architecture.pdf Write-up from JMP Waveran].
:* [https://www.youtube.com/watch?v=EtLHLfNpu84 Call of Duty developer] discussing not only methods they use to transmit game states between client and server, but also some interesting ways that they measure true perceived latency. See also [https://www.youtube.com/watch?v=4GnKsqDAmgY this video].

* [http://www.roguebasin.com/index.php/Dijkstra_Maps_Visualized Dijsktra map visualized]
:* These maps are very useful for pathfinding algorithms. There are several [http://www.roguebasin.com/index.php/The_Incredible_Power_of_Dijkstra_Maps powerful use of these maps] for various game use cases (here illustrated for roguelike game Brogue).

* [https://www.boristhebrave.com/2023/11/19/how-does-cave-glade-generator-work/ How does Cave/Glade Generator Work]
:* Explains the different steps in the cave / map generator written by [https://watabou.itch.io/cave-generator Watabou]. Procedural generation using several simple rules effectively.


=== CVS ===
=== CVS ===
Line 184: Line 418:
* [https://pygame-zero.readthedocs.io/en/stable/introduction.html Introduction to PyGame Zero]
* [https://pygame-zero.readthedocs.io/en/stable/introduction.html Introduction to PyGame Zero]
: A Python library to write games with zero boilerplate.
: A Python library to write games with zero boilerplate.

* [https://crypto.stanford.edu/~blynn/haskell/ Haskell Fan Site]
: Many pages on Haskell on different subjects.

* [https://ianthehenry.com/posts/janet-game/the-problem-with-macros/ The problem with macros]
: Some advanced stuff on Lisp I need to read someday when I retire ([https://news.ycombinator.com/item?id=28845971 HN comments]).

* [https://cs.lmu.edu/~ray/notes/syntaxdesign/ Syntax Design]
: Interesting discussion on various syntax style, and how to represent language constructs.

* [https://iheartla.github.io/ I❤️LA] is a novel domain specific language for linear algebra.
:The I❤️LA code written with rich Unicode symbols visually resembles chalkboard math, while still being a semantically well-defined programming language compilable to various target languages: LaTeX, MATLAB, Python, C++.


=== Design ===
=== Design ===
Line 209: Line 455:
* [https://stripe.com/au/blog/accessible-color-systems Designing accessible color systems]
* [https://stripe.com/au/blog/accessible-color-systems Designing accessible color systems]
: Accessibility rules require a minimum contrast ratio of 4.5+ for small text and 3.0+ for text. It can be very difficult to design a color palette that fits these requirement, while still keeping rich and vivid colors. Color systems like RGB or HSL don't integrate human color perception. In this post, authors explained how they designed their own tool to define the best palette with accessible colors.
: Accessibility rules require a minimum contrast ratio of 4.5+ for small text and 3.0+ for text. It can be very difficult to design a color palette that fits these requirement, while still keeping rich and vivid colors. Color systems like RGB or HSL don't integrate human color perception. In this post, authors explained how they designed their own tool to define the best palette with accessible colors.

* [https://aosabook.org/en/index.html The Architecture of Open Source Applications]
:Four books on open source programs (500-line example programs, performance, architecture). Very clear.

* [https://pkolaczk.github.io/in-defense-of-switch/ In Defense of a Switch]
:Comparing <code>switch</code> with polymorphism regarding extensibility / flexibility (and readability), and also performance, on Scala. Turns out switch is more flexible and more performant.

* [https://jgthms.com/web-design-in-4-minutes/#header Web Design in 4 minutes]
: Focus on '''content''', then ''center'', ''font family'', ''spacing'', ''color & contrast'', ''balance''... See also [https://jgthms.com/css-in-44-minutes-ebook CSS in 44 minutes] (44-page pdf]

* [https://anthonyhobday.com/sideprojects/saferules/ Visual design rules you can safely follow every time]
: Some design rules to follow...

* [https://blog.datawrapper.de/beautifulcolors/ How to pick more beautiful colors for your data visualizations]
:* Use saturation and lightness.
:* Avoid pure colors

* [https://owickstrom.github.io/the-monospace-web/ The Monospace Web]
:* A stylesheet to render web pages using monospace fonts only. Looks cool.

=== Graphism ===
* [https://surma.dev/things/ditherpunk/ Ditherpunk — The article I wish I had about monochrome image dithering]
: An interesting dive into '''dithering''' techniques, with examples and code.
* [https://www.slynyrd.com/blog/2022/11/28/pixelblog-41-isometric-pixel-art Pixelblog - 41 - Isometric Pixel art]
: A tutorial on how to make isometric pixel art. See also more blog entries there!
* [https://soegaard.github.io/blog/metapict/ Metapict – TikZ like figures using Racket (soegaard.github.io)]
: Nice library to draw figures in Racket.
* [https://jojozhuang.github.io/tutorial/mermaid-cheat-sheet/ Mermaid cheat sheet]
: A language to make drawings (flow charts, sequence diagram...)
* [https://www.mayerowitz.io/blog/a-journey-into-shaders A journey into shaders]
:A nice interactive introduction to programming shaders. A shader is a function that transforms a coordinate into a color.
* [https://penrose.cs.cmu.edu/ Penrose]
: Create beautiful diagrams / graphs just by typing notation in plain text. Many examples available.


=== Tools ===
=== Tools ===
Line 219: Line 498:
* [https://beginners.re/RE4B-EN.pdf Reverse engineering for beginners]
* [https://beginners.re/RE4B-EN.pdf Reverse engineering for beginners]
: A free book on reverse engineering, more than 1000 pages!
: A free book on reverse engineering, more than 1000 pages!
* [https://stedolan.github.io/jq/ jq - command-line jq processor]
: jq is to json file what sed is to text file. Example of use [https://prithu.xyz/posts/unix-pipeline/ here].
* [https://ncona.com/2020/06/create-diagrams-with-code-using-graphviz/ Create diagrams with code using Graphviz]
: A nice summary of how to use Graphviz to produce diagrams from code.
* [https://github.com/vinayak-mehta/present Present]
: inal-based presentation tool with colors and effects.
* [https://www.usehaystack.io Haystack.io]
: A resilient, scalable tracing and analysis system for SW development. Report various metrics. Seems quite powerful.
* [https://www.vidarholen.net/contents/blog/?p=904 Use echo/printf to write images in 5 LoC with zero libraries or headers]
: A simple application of '''netpbm''' library to visualize easily some data using only printf/echo command.
* [https://juliu.is/ditch-your-version-manager/ Ditch your version manager]
: About a general package manager called '''Nix'''. Looks very powerful. Crystal clear post.
* [https://ninja-build.org/ Ninja]
: A build system with focus on speed.
* [https://the.exa.website/ Exa]
: An alternative to ls with better defaults, to list files in the terminal.
* [https://healthchecks.io/ healthchecks.io]
: A simple and effective cron job monitoring. Provide dashboard and notifications when period jobs are not completed. Seems very easy to use.
* [https://github.com/NginxProxyManager/nginx-proxy-manager nginx-proxy-manager]
:A docker image to easily deploy nginx proxy, to protect self-hosted application (from [https://noted.lol/what-are-your-most-used-self-hosted-applications/ here]).
* [https://github.com/sissbruecker/linkding Linkding]
:linkding is a simple bookmark service that you can host yourself. It's designed be to be minimal, fast and easy to set up using Docker (from [https://noted.lol/what-are-your-most-used-self-hosted-applications/ here]).
* [https://feather.wiki/?page=about Feather Wiki]
:Feather Wiki is an app for creating personal non-linear notebooks, databases, and wikis that is entirely self-contained and runs in your browser.
* [https://justine.lol/redbean2/ redbean 2.0]
:redbean is a webserver in a zip executable that runs on six operating systems.
* [https://direnv.net/ direnv]
:direnv is an extension for your shell. It augments existing shells with a new feature that can load and unload environment variables depending on the current directory.
* [https://ntfy.sh/ ntfy - Send push notifications to your phone or desktop via PUT/POST]
:A free tool to send notification to Android / PC.
* [https://thume.ca/2023/12/02/tracing-methods/ All my favorite tracing tools: eBPF, QEMU, Perfetto, new ones I built and more]
:A list of powerful tracing and visualising tools, including [https://ui.perfetto.dev/ perfetto], Chrome built-in json format, perf and perftrace, [https://easyperf.net/blog/2019/08/23/Intel-Processor-Trace Intel Processor Trace]

; Shell tools
* [https://tylercipriani.com/blog/2017/08/14/offline-spelling-with-aspell/ Offline spellcheck]
:A shell function for fuzzy spell checking, with clipboard support.
* {{deb|dict-gcide}}
:webster 1913 dictionnary, available from the command line, eg <code>dict obfuscate</code>.
* Shell tools


=== Functional programming ===
=== Functional programming ===
* [https://typeslogicscats.gitlab.io/posts/functor-applicative-monad.html Functor, applicative and monad]
* [https://typeslogicscats.gitlab.io/posts/functor-applicative-monad.html Functor, applicative and monad]
: Detailed post on the differences between ''functor'', ''applicative'' and ''monad'' (using OCaml and Haskell).
: Detailed post on the differences between ''functor'', ''applicative'' and ''monad'' (using OCaml and Haskell).
* [https://www.stephendiehl.com/posts/exotic03.html Exotic Programming Ideas: Part 3 (Effect Systems)]
: An overview of koka, a research language that tries to formalize effects (exception, divergence). Discussion over composition, monads, etc. See also this [https://www.microsoft.com/en-us/research/uploads/prod/2020/11/perceus-tr-v1.pdf article (perceus)] about advanced reference counting.


=== Concurrency / multi-threading ===
=== Concurrency / multi-threading ===
Line 229: Line 549:
* [http://www.rossbencina.com/code/real-time-audio-programming-101-time-waits-for-nothing Real-time audio programming 101: time waits for nothing]
* [http://www.rossbencina.com/code/real-time-audio-programming-101-time-waits-for-nothing Real-time audio programming 101: time waits for nothing]
: More advices on real-time programming techniques.
: More advices on real-time programming techniques.
* [https://randomascii.wordpress.com/2020/11/29/arm-and-lock-free-programming/ ARM and Lock-Free Programming]
: The danger of not using locks. Compiler are free to '''reorder memory access''' because of the [https://en.cppreference.com/w/cpp/language/as_if as if] rule. Some CPU are also allowed to reorder these accesses. <code>volatile</code> cannot be reordered, but only versus other <code>volatile</code> access. Using lock-free programming is usually not portable. We can use <code>MemoryBarrier()</code> in VC2005, or <code>_ReadWriteBarrier</code>, but they are expensive. Better solution is to use C++11 <code>std::atomic</code>:
<source lang="c">
// Producer thread:
Data_t g_data1, g_data2, g_data3;
std::atomic<bool> g_flag // Look at this!

g_data1 = calc1();
g_data2 = calc2();
g_data3 = calc3();
// g_flag = true; // Indicate that the data is ready for consumption.
// ... or better:
g_flag.store(true, std::memory_order_release);

// Consumer thread:
if (g_flag.load(std::memory_order_acquire)) {
DoSomething(g_data1, g_data1, g_data2, g_data3);
</source>
* [https://randomascii.wordpress.com/2012/06/05/in-praise-of-idleness/ In Praise of Idleness]
: Busy loop is usually very bad: wasted power, live lock, CPU starvation, CPU or GPU perf loss, increased cache usage.
:* If busy waiting: cap it, do normal read, and use <code>YieldProcessor()</code>.
:* Don't use <code>sleep(0)</code>.
:* Don't use smalllock.
:* Use a CRITICAL_SECTION, a futex or a lightweight mutex such as [https://preshing.com/20120226/roll-your-own-lightweight-mutex/ benaphore].
* [https://mirrors.edge.kernel.org/pub/linux/kernel/people/paulmck/perfbook/perfbook.2022.09.25a.pdf Is Parallel Programming Hard, And, If So, What Can You Do About It? (kernel.org) (PDF)]
* [https://tontinton.com/posts/scheduling-internals/ Scheduling Internals]
;* Nice visualisation of scheduling, and how to make lightweight servers that can serve millions of requests.


=== Algorithms / libraries ===
=== Algorithms / libraries ===
* [https://skerritt.blog/timsort-the-fastest-sorting-algorithm-youve-never-heard-of/ Timsort — the fastest sorting algorithm you’ve never heard of]
* [https://skerritt.blog/timsort-the-fastest-sorting-algorithm-youve-never-heard-of/ Timsort — the fastest sorting algorithm you’ve never heard of]
:Detailed explanation of how TimSort works, why it is so fast on real arrays with natural runs.
:Detailed explanation of how TimSort works, why it is so fast on real arrays with natural runs.
:* More discussions on sort algorithm [https://news.ycombinator.com/item?id=34378013 here], including reference to a new sort algorithm: '''GlideSort''' (FOSDEM 2023).


* [https://github.com/leeoniya/uPlot uPlot]
* [https://github.com/leeoniya/uPlot uPlot]
Line 239: Line 587:
* [https://observablehq.com/@jobleonard/symmetric-nearest-neighbour-all-the-things Variations on symmetric nearest neighbour smoothing]
* [https://observablehq.com/@jobleonard/symmetric-nearest-neighbour-all-the-things Variations on symmetric nearest neighbour smoothing]
:Amazing '''interactive''' page demonstrating the effect of a picture smoothing algorithm, with detailed explanation and variations, with running code (observablehq.com).
:Amazing '''interactive''' page demonstrating the effect of a picture smoothing algorithm, with detailed explanation and variations, with running code (observablehq.com).

* [https://douglasduhaime.com/posts/visualizing-tsne-maps-with-three-js.html Visualizing TSNE Maps with Three.js]
: Very nice introduction to Three.js, a WebGL-powered visualization library. Very powerful library, for 3D rendering in browser, in javascript, and generating WebGL.

* [https://github.com/ocornut/imgui Dear ImGui - Bloat-free graphical user interface library for C++]
: a library for designing GUI in C++, with support of a variety of platforms.

* [https://github.com/nothings/single_file_libs Single-file public-domain/open source libraries with minimal dependencies]
: A list of '''single file libraries''' in many different categories (AI, argv, audio, compression, crypto, data structures, debugging, math, pictures, video...).

* [https://github.com/pdclab/peregrine Peregrine - A Pattern-Aware Graph Mining System]
: Efficient, single-machine system for performing data mining tasks on large graphs. Presentation is very cool, with nice animations.

* [http://extremelearning.com.au/unreasonable-effectiveness-of-quasirandom-sequences/ The Unreasonable Effectiveness of Quasirandom Sequences]
: An impressive study on how to generate random-looking sequence with better sampling properties than uniform distribution while less regular than lattice.

* [https://github.com/wangyi-fudan/wyhash wyhash and wyrand are the ideal 64-bit hash function and PRNG respectively]
: An efficient hash / PRNG function.

* [https://skanthak.homepage.t-online.de/division.html Donald Knuth’s "Algorithm D", its implementation in "Hacker’s Delight", and elsewhere]
: Analysis and implementations of Knuth Algorithm D, on unsigned integer division.

* [https://github.com/treeform/pixie Pixie - A full-featured 2D graphics library for Nim]
: Pixie is a 2D graphics library similar to Cairo and Skia written (almost) entirely in Nim.

* [https://code.visualstudio.com/blogs/2021/09/29/bracket-pair-colorization Bracket pair colorization 10,000x faster]
: A very detailed blog on how the VSCode team managed to make a bracket colorization extension 10,000x faster, using advanced algorithms, [https://en.wikipedia.org/wiki/2%E2%80%933_tree (2,3)-Trees], [https://en.wikipedia.org/wiki/Recursive_descent_parser recursive descent parser], [https://en.wikipedia.org/wiki/Abstract_syntax_tree Abstract Syntax Tree], with detailed complexity evaluation.

* [https://davidkoloski.me/blog/intelligent-brute-forcing/ Intelligent brute forcing &mdash; Solving NP-hard puzzles with the oldest trick in the book]
: A nice write-up in Rust on how to solve NP-hard problem efficiently, using algorithm techniques like '''State tracking''' (don't scan the same state twice), '''Entropy reduction''' (identify states that are symmetric, and scan only one of them), '''A* Search''' (scan next states according to an heuristic, which gives an estimate of the minimum distance to a solution but never overestimate it), and implementation techniques like '''reducing allocations''' (avoid allocating objects on the heap), '''profiling''', '''container pre-sizing'''. Also it is recommended to benchmark the optimization regularly to evaluate the real gain.
: Other mentionned algorithms are [https://en.wikipedia.org/wiki/Linear_bottleneck_assignment_problem Linear bottleneck assignment problem], and [https://en.wikipedia.org/wiki/Assignment_problem Assignment problem].

* Use [https://unicode-org.github.io/icu/userguide/datetime/ ICU] libraries that deal with all [https://yourcalendricalfallacyis.com/ subtleties!]

* [https://www.farside.org.uk/201311/encoding_n_choose_k A maximally-dense encoding for n-choose-k]
:A compact way to encode n-choose-k on the minimal binary form. This uses the [https://en.wikipedia.org/wiki/Combinatorial_number_system Combinatorial Number System]. It practically means to assign an index to each possible choice, and decode the index for the given n (recursively). A dense formulation of the method is available on [https://news.ycombinator.com/item?id=31442706 HN]:
0. set y = 1. set x = 0.
1. How many possible choices are there _given what we've picked so far_? Call it N.
2. Pick one of them. Call it 'a'.
3. set x = x + a * y. set y = y * N.
4. Repeat steps 1-3 until the number of choices drops to be less than 2.

* [https://research.swtch.com/sparse Using Uninitialized Memory for Fun and Profit]
:Implementation for sparse arrays.

* [https://thenumb.at/Hashtables/ Optimizing Open Addressing]
:Discussion about using multi-list hash tables or single-table hash tables.

* [https://hllmn.net/blog/2023-04-20_rsqrt/ Revisiting The Fast Inverse Square Root - Is It Still Useful?]
:A fast <code>sqrt()</code> function, taken from Quake III arena, and analyzed.

* [http://www.numberworld.org/y-cruncher/internals/multiplication.html Y-Cruncher &mdash; Large Multiplication]
:A bignum library with several multiplication algorithms (FFT, NTT...). Interesting discussion on calculatoin error probability.

* [https://www.cameronmacleod.com/blog/how-does-shazam-work abracadabra: How does Shazam work?]
:A nice explanation of the Shazam algorithm, using spectrograms, maximum filter, hashing using (f_A,f_B,delta_T), finding matching songs, finding how hashes line up in the song.

* [https://en.wikiversity.org/wiki/Reed%E2%80%93Solomon_codes_for_coders Reed–Solomon codes for coders]
:Detailed analysis of error-correction code, QR code structure, etc.

* [https://buttondown.email/hillelwayne/archive/a-brief-introduction-to-interval-arithmetic/ A brief introduction to interval mathematics]
:The problem of doing calculus with uncertainty on numbers. Also mentions ''universal numbers'' (aka ''unum''), which look like much better than floating point. Also, see flaming debate comparing floats and unums [http://www.johngustafson.net/pdfs/DebateTranscription.pdf here]

* [https://www.chiark.greenend.org.uk/~sgtatham/quasiblog/findloop/ Possibly all the ways to get loop-finding in graphs wrong]
:Analysis of wrong graph loop finding algorithms.


=== Testing ===
=== Testing ===
Line 244: Line 657:
: A library in Haskell to generate test patterns automatically based on logical properties that a function should fulfill. Equivalent libraries are available for other languagues.
: A library in Haskell to generate test patterns automatically based on logical properties that a function should fulfill. Equivalent libraries are available for other languagues.
: Alternatives: [https://hypothesis.works/ Hypothesis].
: Alternatives: [https://hypothesis.works/ Hypothesis].
* [https://chrismorgan.info/blog/make-and-git-diff-test-harness/ Using make and git diff for a simple and powerful test harness]
: Generate tests automatically from output of any program / scripts, for comparing again later, using git and make.
* [https://metacpan.org/pod/distribution/Test-Simple/lib/Test/Tutorial.pod Test::Tutorial from Perl] (from [http://testanything.org/testing-with-tap/perl.html TAP - Testing with Perl])
: A nice tutorial showing how to use the [http://testanything.org/ Test Anything Protocol] for unit testing.
* [https://phauer.com/2019/modern-best-practices-testing-java/ Modern Best Practices for Testing in Java]
: Lot of recommendations for writing unit / integration tests in Java, but also applicable to other language. Worth a read when writing tests and having no idea how to proceed. Summary: write simple and clear tests (all main test elements must be clearly visible), use meaningful naming ("actual", "expected"...), KISS > DRY, avoid overuse of variables, don't mock too much (favor integration tests), favor composition over inheritance (wrong abstraction), use (parameterized) helper functions to reduce repeat...
* [https://course.ece.cmu.edu/~ece642/lectures/10_koopman_public_toyota_talk.pdf A Case Study of Toyota Unintended Acceleration and Software Safety]
: A detailed analysis of car crash caused by SW, and the required level of quality needed by safety critical application (also covers Fault Containment Regions).


=== System ===
=== System ===
* [https://michael.stapelberg.ch/posts/2020-01-21-initramfs-from-scratch-golang/ distri: 20x faster initramfs (initrd) from scratch]
* [https://michael.stapelberg.ch/posts/2020-01-21-initramfs-from-scratch-golang/ distri: 20x faster initramfs (initrd) from scratch]
: An interesting post detailed the inner working of RAMFS and boot sequence on Linux / kernel.
: An interesting post detailed the inner working of RAMFS and boot sequence on Linux / kernel.
* [https://jvns.ca/blog/2020/04/29/why-strace-doesnt-work-in-docker/ Why strace doesn't work in Docker]
: An interesting investigation post on an issue in Docker, to understand a bit better how docker works. Also relate to some docker zine, that might be interesting to read.
* [https://flak.tedunangst.com/post/probing-my-ssds-latency probing my ssd's latency]
: Example on how to use kernel tracepoints, [http://man.openbsd.org/dt.4 dt], [http://man.openbsd.org/bt.5 bt], [http://man.openbsd.org/btrace.8 btrace].
* [https://vermaden.wordpress.com/2020/09/07/quare-freebsd/ Quare FreeBSD]
: An overview of the nice feature of FreeBSD (stable unique base system, '''ZFS boot environment''', simplicity...)
* [https://klarasystems.com/articles/easily-migrate-from-linux-to-freebsd/ Easily Migrating from Linux to FreeBSD]
: AN overview of the main differences between Linux and FreeBSD, useful commands, architecture, etc.
* [https://github.com/mhx/dwarfs dwarfs - A fast high compression read-only file system]
* [https://linuxcontainers.org/lxd/introduction/ What is LXD]
:LXD is a next generation system container and virtual machine manager. It offers a unified user experience around full Linux systems running inside containers or virtual machines (keyword: docker).
* [https://danluu.com/why-ecc/ Why ECC]
:A very detailed post analyzing the need for ECC in server, reacting to a post from Jeff Atwood. Turns out ECC is pretty much needed...
* [https://qsantos.fr/2024/08/25/linux-pipes-are-slow/ Linux Pipes are Slow]
:Interesting analysis of linux pipes. Speed comes from cost of locking + usage of non-vectorized code for copying (would require saving / restoring SIMD context which costs). Alternatively, use <code>vmsplice</code> as suggested in [https://mazzo.li/posts/fast-pipes.html fast pipes].
* [https://tookmund.com/2024/09/hibernation-preparation Linux's bedtime routine]
:Detailed description of Linux suspend / sleep / hibernation sequence.

=== Benchmarks / optimisation ===
* [https://nikic.github.io/2020/05/10/Make-LLVM-fast-again.html Make LLVM fast again] ([https://news.ycombinator.com/item?id=23137345 HN])
: Nice detailed post on how to track performance evolution across multiple commits to locate regressions in build/compilation time.
* [https://travisdowns.github.io/blog/2019/11/19/toupper.html Clang-format Tanks Performance]
: A detailed performance analysis of <code>toupper</code> in standard C or C++, which turns out to be a "feature" in the compiler headers. Nice ''Jitter Performance Scatter Plot'', that shows the importance of collecting many many data points when doing benchmarks. Post is very clear, and many things well explained. Use a '''static website''', but with [https://staticman.net/ staticman] to support user comments.
* [https://travisdowns.github.io/blog/2019/05/22/sorting.html#fn:danmethod Beating Up on Qsort]
: Impressive optimization of QSort implementation.
* [https://blog.royalsloth.eu/posts/it-takes-a-phd-to-develop-that/ It takes a PhD to develop that]
: Story around a bug report on Windows Terminal slowness, and how someone could make 100x - 1000x faster on a couple days work. [https://www.youtube.com/watch?v=hxM8QmyZXtg], [https://www.youtube.com/watch?v=99dKzubvpKE]. Very interesting to learn fast the basic working of a terminal renderer.
* [https://codegolf.stackexchange.com/questions/215216/high-throughput-fizz-buzz/236630#236630 A FizzBuzz implementation that runs at 50GB/s!]
: Incredible implementation of FizzBuzz on codegolf, where all data exchange is mostly done in CPU cache.
* [https://scotthelme.co.uk/when-pwned-passwords-bloom/ Benefits of Bloom filters - pwned password database example]
: An example to show incredible performance delivered by Bloom filters, which can test whether an element is in a set, with definitive no and probable yes.
* [https://github.com/google/benchmark Google benchmark]
: A framework to measure performance of code snippets. See [[Google benchmark]].
* [https://linus.schreibt.jetzt/posts/qemu-9p-performance.html]
:A nice story on how to profile perf issue in QEMU, using [http://poormansprofiler.org/ Poor's man profiler] (a very simple profiler using gdb), [https://github.com/yoshinorim/quickstack quickstack], [https://www.brendangregg.com/FlameGraphs/cpuflamegraphs.html flamegraph], and dealing with Linux namespace using <code>nsenter</code>.
* [https://mazzo.li/posts/fast-pipes.html How fast are Linux pipes anyway? (2022)]
:A detailed analysis on how to implement fast pipe in Linux, including explanations of page allocation by the Kernel.
* [https://voidstar.tech/code_duplication/ Faster code by duplication]
:Example of making faster code by duplicating code, by testing special value and giving more local information to the compiler and opportunities for optimization. Also an example of advanced template (using <code>variant</code> template and inlined lambda).

=== Multimedia ===
* [https://nullprogram.com/blog/2017/11/03/ Render Multimedia in Pure C]
: Generate simple PPM video and separate WAV audio in a file. Easy to play with mplayer / mpv / vlc. Simple but powerful. Audio generation.
* [https://observablehq.com/@makio135/creative-coding Observable & creative coding]
: An impressive set of examples on how to generate very nice SVGs.
* [https://www.getrevue.co/profile/shift-happens/issues/moire-no-more-688319 Moiré no more]
: A method to get rid of the Moiré effect by patching the image in the frequency domain (using FFT).
* [https://blog.rtrace.io/posts/the-linux-audio-stack-demystified/ The Linux audio stack demystified]
: Interesting article about how humans hear sound and the history of the Linux audio stack.
: Link to a WONDERFUL video on [https://yt.artemislena.eu/watch?v=cIQ9IXSUzuM D/A and A/D | Digital Show and Tell (Monty Montgomery @ xiph.org)], explaining why 16 bit audio is the max you need, how digital/analog conversion works, etc.

=== 3D ===
* [https://raytracing.github.io/books/RayTracingInOneWeekend.html Ray Tracing in One Weekend]
: Step-by-step training on how to build a raytracer. Nice explanations.

* [https://www.youtube.com/watch?v=8--5LwHRhjk&feature=youtu.be Painting a Selfie Girl, with Maths]
: The incredible design of an amazing-looking portrait of a girl taking a selfie, in amazing 3D, only with mathematics formula. See more [https://iquilezles.org/www/articles/raymarchingdf/raymarchingdf.htm raymarching distance fields]. Code available [https://www.shadertoy.com/view/WsSBzh here].

* [https://shahriyarshahrabi.medium.com/gentle-introduction-to-fluid-simulation-for-programmers-and-technical-artists-7c0045c40bac Gentle Introduction to Realtime Fluid Simulation for Programmers and Technical Artists]
: Building up equations from a simple fluid case, towards Navier-Stoke equations.

* [https://www.youtube.com/watch?v=K9yrtyLKysA Encore MIEUX que le RAY TRACING ? (Ray Marching)]
: Excellent introduction to ray marching, technique using a shortest-distance function.

* [https://larswander.com/writing/spectral-ray-tracing/ Spectral Ray Tracing]
: Detailed explanation of the impact of the spectrum nature of light on ray tracing and visualization of colors.

=== Debug ===
* [https://www.downtowndougbrown.com/2021/01/tracking-down-a-segfault-that-suddenly-started-happening/ Tracking down a segfault that suddenly started happening]
: segfault due to name conflict between dyn. linked library (<code>socket_send</code>, available from libusbmuxd but also samba library). Show usage of ldd, readelf, lddtree.
* [https://github.com/osandov/drgn drgn (pronounced "dragon") is a debugger with an emphasis on programmability]
: Uses python for scripting, developed by Meta.
* [https://developers.facebook.com/blog/post/2022/11/22/hermit-deterministic-linux-testing/ Hermit: Deterministic Linux for Controlled Testing and Software Bug-finding]
:Hermit is the first practical deterministic operating system. It is an emulation layer on top of the Linux kernel. Similar to Wine, Hermit intercepts system calls and translates them from the Deterministic Linux abstraction to the underlying vanilla Linux OS.
* [https://netflixtechblog.com/debugging-a-fuse-deadlock-in-the-linux-kernel-c75cd7989b6d Debugging a FUSE deadlock in the Linux kernel]
:Some advanced signal debugging stuff. Nice to see the process of thoughts, and the tools used.

=== Visualization ===
* [https://github.com/cxli233/FriendsDontLetFriends Friends Don't Let Friends Make Bad Graphs]
: A set of advises on how to better represent data, including different ways to represent statistical distributions. Include several scripts to rework data before representing them.

=== Dev - Miscellaneous ===
* [https://medium.com/analytics-vidhya/converting-boolean-logic-decision-trees-to-finite-state-machines-180ad195abf2 Converting Boolean-Logic Decision Trees to Finite State Machines]
: Example of how to evaluate quickly firewall kind-of rules (rule combining <code>type:value</code> pairs with '''or''', '''and'''... operators), using dynamically-generated FSM. To be compared with [https://en.wikipedia.org/wiki/Binary_decision_diagram Binary Decision Diagram].
* [https://fasterthanli.me/series/making-our-own-executable-packer/part-1 What's in a Linux executable?]
: Very clear, practical and detailed description of the Linux executable.
* [https://faculty.washington.edu/ajko/papers/Li2019WhatDistinguishesEngineers.pdf What distinguishes great software engineers?]
: A large survey about the qualities of great SW engineers.
* [https://georgestocker.com/2021/03/28/no-one-gives-a-shit-what-programming-language-you-use/ No one gives a shit what programming language you use]
:It's how the software will be used that is important. Performative craftmanship elitism is bullshit. From HW, "toxicity of a culture of elitism and a fetishizing of language purity". See also other post from same author about fascism [https://georgestocker.com/2020/09/14/ubm-and-a-lament-for-the-software-industry/], and some recommendation regarding BLM [https://tatianamac.com/posts/white-guyde/].
* [https://news.ycombinator.com/item?id=28848858 Showing GUI from shell scripts (HN comments)
:A list of tools to show a GUI from a shell script ([https://sixtyfps.io/blog/showing-guis-from-shell-scripts.html Sixtyfps.io], [https://bottlepy.org/docs/dev/ bottle (py server)]+[https://alpinejs.dev/ AlpineJS], [https://help.gnome.org/users/zenity/stable/ Zenity], [https://github.com/v1cont/yad YAD], Tcl/Tk...)
* [http://xn--rpa.cc/irl/term.html everything you ever wanted to know about terminals]
:Tutorial on terminal ANSI codes, and advanced / recommended techniques to make a modern TUI out of them (without using ncurses).
:Here an alternative to ncurses, [https://github.com/dankamongmen/notcurses#readme notcurses]. See also [https://news.ycombinator.com/item?id=31415937 HN comments].
* [https://github.com/carlini/printf-tac-toe printf-tac-toe]
:A c implementation of tic-tac-toe in a single call to printf. Written for IOCCC 2020. Nice explanations.
* [http://fileformats.archiveteam.org/wiki/Category:File_formats_by_extension File Formats wiki from Archive Team]
:Detailed information on various file formats.
* [https://www.hezmatt.org/~mpalmer/blog/2024/05/14/is-this-project-still-maintained.html Is this project still maintained]
:Example text to clarify expectation regarding maintenance of an open-source project

=== Dev - Examples ===
* [https://stripe.com/blog/globe To design and develop an interactive globe]
: Example on how to design a 3D globe in WebGL, with dotted texture and animations. Very detailed analysis.
* [http://aosabook.org/en/500L/a-pedometer-in-the-real-world.html A pedometer in the real world]
: Example on how to design a pedometer, with lot of explanation on how accelerometers work, the mathematics behind, etc.
* [https://github.com/tmoertel/practice Tom's Practice Repo]
: Many coding problems and solutions from coding sites or interviews, mostly solved in Python. A must read!
* [https://github.com/TheMozg/awk-raycaster A FPS game, Wolfeinstein 3D, in AWK]
* [https://github.com/jaroslov/knuth-plass-thoughts/blob/master/plass.md Knuth-Plass algorithm]
:Some explanation on the line-breaking algorithm used in LaTeX to produce optimal-looking paragraph, using some "dynamic programming" and tricks to run the algorithm in linear time instead of quadratic.

;Game of life
* [https://copy.sh/life/?gist=f3413564b1fa9c69f2bad4b0400b8090&step=512 Conway's Game of Life digital clock]
:a digital clock implemented as game of life FSM! See also [https://news.ycombinator.com/item?id=35626736 HN comments] for more WTF. From [https://codegolf.stackexchange.com/questions/88783/build-a-digital-clock-in-conways-game-of-life/111932#111932 here]
* [https://oimo.io/works/life/ Life in life in life]
:A simulation of game of life in the game of life... all the way down! Can zoom in and out, it's all game of life. This is just absolute WTF madness.
* [https://www.youtube.com/watch?v=eMn43As24Bo The Game of Life (EGO)]
:Travel in the game of life, from the small to the bigger, to the WTF.

;Other
* [https://linusakesson.net/scene/a-mind-is-born/ A Mind is Born]
: A 256-byte short movie program

=== AI-assisted ===
* [https://gwern.net/tla CQK Is The First Unused TLA]
:Using GPT-4 to find the first unused three-letter acronym in Wikipedia. Mention the case of '''blind spot''' where GPT-4 refuses to see an error even if prompted.
:The whole site is an amazing resource.
* [https://www.rainforestqa.com/blog/building-reliable-systems-out-of-unreliable-agents Building reliable systems out of unreliable agents]
:A write-up about tips and tricks on using AI agent to do some works. Many useful links. [https://news.ycombinator.com/item?id=39984209 HN comments].


== Security ==
== Security ==
Line 254: Line 806:
* [https://latacora.micro.blog/2019/07/16/the-pgp-problem.html The PGP problem]
* [https://latacora.micro.blog/2019/07/16/the-pgp-problem.html The PGP problem]
: Summary of issues around PGP, and alternatives (Signal, Whatsapp, [https://github.com/warner/magic-wormhole magic wormhole], [https://www.tarsnap.com/design.html tarsnap]).
: Summary of issues around PGP, and alternatives (Signal, Whatsapp, [https://github.com/warner/magic-wormhole magic wormhole], [https://www.tarsnap.com/design.html tarsnap]).
* [http://thesecretlivesofdata.com/raft/ RAFT - protocol for distributed consensus]
: A nice animation to explain how RAFT works, which is a protocol to establish distributed consensus.
* [https://signal.org/blog/secure-value-recovery/ Signal - Secure Value Recovery] (from [https://signal.org/blog/signal-pins/ Signal PINs])
: Some very complex mechanism to allow recovery of the signal app data from a small PIN. Not sure this works / is reliable nor if it is going into the right direction, but it refers to some interesting security technologies (Intel SGX, Raft...).
* [https://github.com/Penetrum-Security/Security-List Open source security tool list]
* [https://en.wikipedia.org/wiki/Underhanded_C_Contest Underhanded C Contest]
: Goal is to hide a backdoor in SW while pretending it is a genuine bug.
* [https://security.stackexchange.com/questions/269507/is-ram-wiped-before-use-in-another-lxc-container Is RAM wiped before use in another LXC container?]
:A detailed explanation on how memory allocation works in Linux Kernel.
* [https://haddadi.github.io/UKOSBOpenletter.pdf Open Letter from Security and Privacy Researchers in relation to the Online Safety Bill]
: On the impossibility to build cryptographically secure solution with backdoor, and on robust client-side monitoring.

== Hacking ==
* [https://fotoforensics.com/ Fotoforensics]
:A tool to analyze image files. Can for instance reveal [https://www.hackerfactor.com/blog/index.php?/archives/894-PNG-and-Hidden-Pixels.html hidden pixels] in files.
* [https://arxiv.org/abs/1906.12029 A Neural-based Program Decompiler]
:Paper on decompiling binaries using neural networks.
* [https://telescope.ac/petazzoni/the-hash-monster-esp32-tamagotchi-for-wifi-cracking The Hash Monster: ESP32 Tamagotchi For WiFi Cracking]
:A small device to collect WiFi PCAP captures, for latter cracking. Uses <code>aircrack-ng</code> and [https://github.com/brannondorsey/naive-hashcat/releases/download/data/rockyou.txt rockyou dictionary file].
* [https://nee.lv/2021/02/28/How-I-cut-GTA-Online-loading-times-by-70/ How I cut GTA Online loading times by 70%]
:A very clear explanation on how to profile the performance of a game startup sequence, reverse it and patch it. Use [http://lukestackwalker.sourceforge.net/ Luke Stackwalker] for profiling closed source applications. Using IDAPro to disassemble (however speaks of [https://ghidra-sre.org/ ghidra]). Use [https://github.com/glmcdona/Process-Dump Process-Dump] to dump the content of code being executed, after it has been deobfuscated. Dump some dynamic data from execution using [https://x64dbg.com/ x64dbg]. Using [https://github.com/TsudaKageyu/minhook minhook] to hook a DLL in a code. The slow-down was due to parsing JSON with <code>sscanf(p, "%d")</code> that happens to call <code>strlen</code> a lot repeatedly, and using a useless hash table (useless because no duplicates).
* [https://fmentzer.github.io/posts/2020/dictionary/ Reverse-Engineering Apple Dictionary]
:An interesting post on how to reverse some binary file, using <code>import zlib</code> in Python.
* [https://github.com/ReFirmLabs/binwalk BinWalk]
:Binwalk is a fast, easy to use tool for analyzing, reverse engineering, and extracting firmware images.
* [https://gtfobins.github.io/ GTFOBins]
:A curated list of Unix binaries that can be used to bypass local security restrictions in misconfigured systems (eg. by issuing <code>!/bin/sh</code> in pager (less) when doing <code>apt-get changelog apt</code>).
* [https://overthewire.org/wargames/ OverTheWire Wargames]
:Practice security concepts in the for mof fun-filled games.
* [https://github.com/stong/how-to-exploit-a-double-free This bug doesn’t exist on x86: Exploiting an ARM-only race condition]
:A nice write-up on exploiting a double-free bug on ARM (due to weak memory model in ARM, that allows reordering of store, which is not allowed on x86]
* [https://a13xp0p0v.github.io/2022/05/24/pwn-fuchsia.html A Kernel Hacker Meets Fuchsia OS]
:Another nice write-up on analyzing Fuchsia, an open-source OS from Google, how to use it, compile it, run it, debug it, fuzz it, exploit it.
* [https://github.com/radareorg/radare2 Radare2 The Libre Unix-Like Reverse Engineering Framework]
:Powerful reverse tool, all in terminal. See [[Radare2]].
* [https://microcorruption.com/ Microcorruption]
:A CTF about microcorruption using debugger. Example of writeup [http://msinilo.pl/blog2/post/microcorruption-writeup/ here].
* [https://pwn.college/ pwn.college]
:pwn.college is an education platform for students (and other interested parties) to learn about, and practice, core cybersecurity concepts in a hands-on fashion.

== Management ==
* [https://digitaltonto.com/2012/the-leaderless-organization/ The Leaderless Organization]
: Mission is the boss. Refer to [https://en.wikipedia.org/wiki/Ricardo_Semler SemCo], a company whose young CEO promoted decentralized and collaborative management.
* [https://www.mckinsey.com/featured-insights/leadership/how-leaders-kill-meaning-at-work How leaders kill meaning at work]
: Trap 1: Mediocrity signals (e.g. promotove innovation but focus on cost down). Trap 2: Strategic ‘attention deficit disorder’. Trap 3: Corporate Keystone Kops. Trap 4: Misbegotten ‘big, hairy, audacious goals’
* [https://critter.blog/2020/11/26/5-second-feedback/ 5 second feedback]
: How to feedback as a manager to a direct. 1. Ask (“Can I give you some feedback?”). 2. State the behavior (“When you X…”) 3. State the impact (“…the result is Y.”) 4. Encourage effective future behavior (“Keep it up!” for positive feedback or “Can you change that?” for negative feedback).
: Don't: Don't feedback if you are angry. Don't feedback on the past. Don't feedback if you can't let it go.
: ... reality is maybe not that simple, [https://news.ycombinator.com/item?id=25221812 HW comments].
* [https://critter.blog/2020/11/27/future-focused-feedback/ Future-focused feedback]
: Stop arguing about the past! We recommend that you give in when a direct argues or gets defensive. Don’t get drawn into a discussion about what happened. That’s unrelated to the future you want to focus on.
: Once you’ve given the feedback and the direct has pushed back, pause, smile, apologize, and walk away. You’ve made your point. Don’t let the direct try to win her argument simply because you’ve shown her the courtesy of letting go.
* [https://jacobian.org/2021/oct/20/simple-pm-tricks/ Simple Product Management Tricks]
:* Perform an effort/impact analysis &mdash; make a 3x3 matrix 'impact' vs 'difficulty'. Implement easy but strong impact first, and avoid hard with low impact, and do a couple of the middle ones. Very useful for planning.
:* Timebox hard-to-estimate work &mdash; for instance, work for a task for two weeks and see how much progress is done. Or allocate a part of worktime on some task (like 1d/wk on PR solving).
:* Write playbooks before automation &mdash; that means first write small procedure for '''humans''' first, possibly completed with some source code for scripts, etc.
* [http://habitatchronicles.com/2004/04/you-cant-tell-people-anything/ You can't tell people anything]
:A post about the limit of communication that, despites best effort, people often don't ''get'' what you tell them.
* [https://behdadesfahbod.medium.com/on-a-great-interview-question-aea168279942 On a great interview question]
:A discussion about a technical problem used by Google, using a [https://en.wikipedia.org/wiki/Trie Trie] (a data structure for fast lookup of strings in a dictionary). Interesting problem but most [https://news.ycombinator.com/item?id=35545817 comments on HN] are negative. Recommendation is to use a simplified but actual problem that occurs at work, or at the position the interviewee will have.

== Life hack ==
* [https://observablehq.com/@tomlarkworthy/hacker-favourites-analysis Most favorited Hacker News posts of all time (on Hacker News)]
: Life hacks, ebooks, resources, learning...
* [https://news.ycombinator.com/item?id=18588727 Ask HN: What are your “brain hacks” that help you manage everyday situations?]
: '''The 10/10/10 rule when taking a decision''': what would you think about the outcome in 10 minutes from now, in 10 months from now, in 10 years from now?
: ''Suspension of (value-)judgement'', ''awareness of the mode of thinking''...
: ''Keeping one's mouth shut''
* [https://www.collaborativefund.com/blog/a-few-rules/ A few Rules]
: '''Tell people what they want to hear''' and you can be wrong indefinitely without penalty. '''Most fields have only a few laws.''' ...
* [https://guzey.com/advice/ Every thought about giving and taking advice I’ve ever had, as concisely as possible]
: An example of "getting things done", about giving advices.
* [https://kiramclean.com/blog/what-i-use-now-instead-of-google/ What I Use Now Instead Of Google]
: Impressive list of tools / things to do. Buy your life back.
* [https://www.markozivanovic.com/screw-it-ill-host-it-myself/ Screw it, I’ll host it myself]
: Detailed post about how to host everything yourself, how to preserve your privacy, quit Google, etc. Very nice write-up.
* [https://castel.dev/post/lecture-notes-1/ How I'm able to take notes in mathematics lectures using LaTeX and Vim (Gilles Castel)]
: Another example of high-quality notes by [https://adamkelly.me/ Adam Kelly].
* [https://noted.lol/noted-is-self-hosted-heres-how-i-did-it/ Noted is Self Hosted - Here's How I did It And Why]
:A detailed description of self-hosting various applications, web servers, blogging app... securely and in virtual environment.
:* [https://noted.lol/what-are-your-most-used-self-hosted-applications/ What are your Most Used Self Hosted Applications?]
:: An interesting list of applications that can be hosted as docker container (sometimes even on Raspberry Pi). Link to [https://github.com/NginxProxyManager/nginx-proxy-manager Nginx Proxy Manager], [https://github.com/sissbruecker/linkding Linkding], [https://www.proxmox.com/en/proxmox-ve proxmox VE].
* [https://grifel.dev/decentralization/ Self hosting in 2023]
:Another self-hosting example on Pi 4. Using [https://vpn.net/ Hamachi] to work around dynamic IP address (using DDNS).
* [https://taskwarrior.org/ TaskWarrior]
: An alternative to [[Todo.txt]]
* [https://stevelosh.com/blog/2012/10/a-modern-space-cadet/ A Modern Space Cadet]
: A review of various keyboards, and advanced tweaking tips for typing. Nice tips include how to use SAME key for TWO different actions depending on whether it is PRESSED or HOLD (eg. CAPSLOCK key), and also how to teach correct usage of LEFT / RIGHT SHIFT keys.
* [https://meet.jit.si/ Jitsi Meet]
: A free and opensource video conferencing system. Works very well under Firefox (and Chromium). Video, chat, screen sharing... Escape Teams and Zoom ;-)
* [https://fs.blog/reversible-irreversible-decisions/ Reversible and Irreversible Decisions]
: Some rules about making decision. fast Ffor reversible, as late as possible for irreversible. Late according to STOP, LOP, KNOW.
* [https://www.prettygoodhouse.org/ Pretty Good House], a set of guidelines to build "good houses".
* [https://github.com/laurent22/joplin Joplin]
: Note taking app, todo-list with sync (apparently also works with syncthing). [https://news.ycombinator.com/item?id=36611355 HN]
* [https://math.stanford.edu/~vakil/threethings.html The "Three Things" Exercise for getting things out of talks]
: When going to a talk, write down at least three things, and scratch one if getting a fourth one. Exchange them between peers.
: Interesting things:
:* a definition you want to remember (e.g. "a K3 surface is...")
:* a theorem you want to remember ("the moduli space of polarized K3 surfaces is smooth")
:* a motivating or key example ("a quartic is an example of a K3 surface")
:* a motivating problem ("why are all moduli spaces of polarized K3 surfaces the same dimension?")
:* a question you want to ask the speaker ("why is that hypothesis in your theorem?")
:* a question you want to ask someone else (a definition, motivation, a question about a connection etc.)
:* anything else of a similar flavor: something specific that made you think. Something vague ("I liked the part where she talked about groups") does not count as a "thing".
* [https://electronics.stackexchange.com/questions/623358/wouldnt-charging-a-lithium-battery-to-80-only-defeat-the-purpose-of-putting-th Wouldn't charging a lithium battery to 80% only defeat the purpose of putting the battery into longer use in the first place?]
: Ideal: keep battery between 30-80%, and reload as often as possible (4x more energy txfed). For laptop, I guess the tradeoff depends on whether the laptop is often disconnected or not...
* [https://mango.pdf.zone/i-give-you-feedback-on-your-blog-post-draft-but-you-dont-send-it-to-me I give you feedback on your blog post draft but you don't send it to me]
:* Some advices on how to write good blog posts, on how to write in general.

== Resources ==
* [https://news.ycombinator.com/item?id=15602538 Ask HN: Where can I find high-end stock images for a website?]
:;photos:
:* http://pixabay.com/
:* https://stocksnap.io/
:* http://www.free-images.cc/
:* https://unsplash.com/
:* https://www.pexels.com/
:* http://librestock.com/
:* http://skuawk.com/
:* http://www.sitebuilderreport.com/stock-up
:* http://finda.photo/
:* http://foodshot.co/
:* http://growthtext.com/free-stock-photos/
:* https://www.stockified.com/
:* https://www.negativespace.co/
:* https://everypixel.com/
:* http://startupstockphotos.com/
:* https://foodiesfeed.com/
:* https://picjumbo.com/
:* https://www.stockio.com/
:
:;icons and fonts:
:* http://cssicon.space/
:* https://fontawesome.com/
:* https://thenounproject.com/
:* http://ionicons.com/
:* https://zurb.com/playground/foundation-icon-fonts-3
:* http://s-ings.com/typicons/
:* http://fontello.com/
:* https://useiconic.com/
:* https://material.io/icons/
:* http://brick.im/fonts/
:* https://fonts.google.com/
:* https://www.nerdfonts.com/
:
:;svg icons:
:* https://feathericons.com/

* Free stuff for the developpers: https://freestuff.dev/
:* [https://unsplash.com/ Unsplash] Beautiful, free images and photos that you can download and use for any project. Better than any royalty free or stock photos.
:* [https://www.flaticon.com/ FlatIcon] Download Free Vector Icons and Stickers for your projects. Resources made by and for designers. PNG, SVG, EPS, PSD and CSS formats

;Books / musics / movies / torrents /
* [https://en.wikipedia.org/wiki/Library_Genesis Library Genesis (libgen)] &mdash; file-sharing shadow library for books, scholar papers...
* [https://standardebooks.org/ Standard ebooks] &mdash; Free and liberated ebooks, carefully produced for the true book lover.

;Cliparts
* https://creazilla.com/


== Science & Tech ==
== Science & Tech ==
Line 267: Line 978:
* [https://science.nasa.gov/science-news/news-articles/solar-minimum-is-coming Solar minimum is coming]
* [https://science.nasa.gov/science-news/news-articles/solar-minimum-is-coming Solar minimum is coming]
: Great video on the cycle of the sun regarding the number of spots and magnetic activity, how it does protect us from galactic radiation, and how it influences on space debris around earth.
: Great video on the cycle of the sun regarding the number of spots and magnetic activity, how it does protect us from galactic radiation, and how it influences on space debris around earth.

* [https://ciechanow.ski/lights-and-shadows/ Lights and Shadows]
: Amazing page detailing how lights and shadows work, with interactive models we can play with. More interesting stuff on the [https://ciechanow.ski/archives/ archives] page. See [https://news.ycombinator.com/item?id=23702552 HN].

* [https://ciechanow.ski/cameras-and-lenses/ Cameras and Lenses]
: From same author, amazing explanations on how cameras and lenses works, with many scientific details on light propagation, etc.

* [https://backreaction.blogspot.com/2020/08/do-we-really-travel-through-time-with.html Do we really travel through time with the speed of light]
: Comes from the definition of distance in the Minkowski spacetime, ds=sqrt((c.dt)^2 - dx^2 - dy^2 - dz^2), where c is the speed of massless particle. ds=0, invariant for all observers, gives that speed c is a constant. If an observer does not move in space coordinates, the speed he computes gives that he's moving at speed c in time. See also [https://news.ycombinator.com/item?id=24328617 HN], also speaking of four-vectors, and in particular the four-velocity, which has always a constant magnitude (equal to the speed of light).

* [https://www.lesswrong.com/s/Kqs6GR7F5xziuSyGZ/p/7FSwbFpDsca7uXpQ2 Quantum Explanations] by Eliezer Yudkowsky
: An explanation on quantum physics, trying to debunk confusing myths (in particular confusion between the existence of separate classical world and quantum world).

* [https://gravityandlevity.wordpress.com/2009/04/08/why-cant-i-go-faster-than-the-speed-of-light-hints-from-electrodynamics/ Why can’t I go faster than the speed of light? Hints from electrodynamics]
: A nice explanation on why we can't go faster than the speed of light, based on the fact that moving charge sees a magnetic force, whereas a non-moving one doesn't.

* [https://arxiv.org/pdf/1907.04178.pdf Lectures on Faster-than-Light Travel and Time Travel]
: A 25-hour course on faster-than-light physics within the context of currently established science.

* [https://www.cantorsparadise.com/it-took-me-10-years-to-understand-entropy-here-is-what-i-learned-b2d51e8ccd4c It Took Me 10 Years to Understand Entropy, Here is What I Learned.]
: Entropy S is defined as the measure of the number of possible microscopic arrangements (microstates) Ω of a system that comply with the macroscopic condition of the system (observed macrostate), e.g., temperature, pressure, energy. So entropy is a measure of '''hidden information'''. 2nd thermodynamic law states that ''When a thermally isolated system has passed from one thermodynamically equilibrium state A to another thermodynamically equilibrium state B, increase of its thermodynamic entropy S is greater than or equal to 0.'', which means that entropy is only well defined in thermodynamical equilibrium. But it emerges naturally from the [https://en.wikipedia.org/wiki/H-theorem H-theorem] reasoning, stating that ''A system will spend most of its time in its most probable state, i.e. the ones compatibles with the highest number of possible microstates''.

* [https://graphics.pixar.com/pbm2001/pdf/notesg.pdf Course on rigit body simulation, from Pixar]

* [https://ricktu288.github.io/ray-optics/ Ray Optics Simulation]
: An open-source web app to simulate the reflection and refraction of light. Suitable for education and demonstration. Nicely written.

* [https://ciechanow.ski/bicycle/ Bicycle]
:A detailed explanation on how bicycles work, with many force diagrams, deformation, stabilization. Incredible.

* [https://en.wikipedia.org/wiki/Tennis_racket_theorem Tennis racket theorem]
:An interesting theorem showing that rotation of an object around its first and third principal axes is stable, while rotation around its second principal axis (or intermediate axis) is not.


== Success stories ==
== Success stories ==
Line 275: Line 1,018:
* [https://broadcast.listennotes.com/the-boring-technology-behind-listen-notes-56697c2e347b The boring technology behind list notes]
* [https://broadcast.listennotes.com/the-boring-technology-behind-listen-notes-56697c2e347b The boring technology behind list notes]
: Example on how to deploy / develop a successful web application, by one person.
: Example on how to deploy / develop a successful web application, by one person.
* [https://skerritt.blog/make-popular-open-source-projects/ 3 Tips For Making a Popular Open Source Project in 2021 (Ultimate Guide)]
: Many short tips on how to build a successful project / how to write README / how to pick the problem to solve / ...
* [https://www.lennysnewsletter.com/p/how-duolingo-reignited-user-growth How Duolingo reignited user growth]
: Make a model on how user base evolve, telling that CURR (Current User Retention Rate) had the most important impact; using gamification as base mechanic (leaderboard, streaks); use limited notification...
* [https://docs.emailengine.app/how-i-turned-my-open-source-project-into/ How I turned my open-source project into a business]
: How someone turned his open source project into a business. See example of licenses, CLA during PR, API key (see also [https://news.ycombinator.com/item?id=39522348 HN comments about sect239k1]).


== Miscellaneous ==
== Miscellaneous ==
* [https://pavelkosenko.wordpress.com/2015/08/13/what-is-good-color/ What is good color]
* [https://pavelkosenko.wordpress.com/2015/08/13/what-is-good-color/ What is good color]
: A detailed explanation about color harmony, what makes some painting rich in colors...
: A detailed explanation about color harmony, what makes some painting rich in colors...
* [https://refactoringui.com/previews/building-your-color-palette/ Building Your Color Palette]
: Tips about creating a custom color palette.
* [https://nerdfonts.com/ NERD fonts] ([https://github.com/ryanoasis/nerd-fonts github]).
* [https://nerdfonts.com/ NERD fonts] ([https://github.com/ryanoasis/nerd-fonts github]).
: A repository of fonts patched with lots of glyphs (icons). Include patches for ''Fantasque Sans Mono'', ''Iosevka''...
: A repository of fonts patched with lots of glyphs (icons). Include patches for ''Fantasque Sans Mono'', ''Iosevka''...
Line 326: Line 1,077:
* [https://www.rdegges.com/2020/the-only-type-of-api-services-ill-use/ The Only Type of API Services I'll Use]
* [https://www.rdegges.com/2020/the-only-type-of-api-services-ill-use/ The Only Type of API Services I'll Use]
:A discussion on the best pricing scheme for API services, which is usage-based pricing with automatic volume discounts, and why other schemes are bad.
:A discussion on the best pricing scheme for API services, which is usage-based pricing with automatic volume discounts, and why other schemes are bad.
* [https://www.fieggen.com/shoelace/ianknot.htm Ian's knot]
:The fastest and best shoelace knot on the planet.
* [https://www.gnu.org/fun/jokes/error-haiku.en.html Error message in Haiku]
:Fun error messages in Haiku.
* [https://workmanlayout.org/ The Workman Layout]
:A new (2010) keyboard layout that shows better stats than Colemak (and much better than Dvorak) when comparing finger movements, and in particular lateral movement. Nice stats.
* [https://en.wikipedia.org/wiki/Trolley_problem Trolley problem]
:A thought experiment where a trolley on railway tracks with five people on the rails ahead, and a lever to change the trailway course to another rail where only one person lies.
* [https://en.wikipedia.org/wiki/Four_Horsemen_of_the_Infocalypse]
:The imagery of internet criminals: drug-dealers, money-launderers, terrorists, and pedophiles.
* [https://datagenetics.com/blog/july12020/index.html Fireworks explained by a rocket engineer]
:Some nice explanations on how rockets and fireworks work.
* [https://www.attejuvonen.fi/money-out-of-thin-air/ Banks create money out of thin air, but it's less impressive than it sounds]
: Banks does not create money, but "IOU" (I Owe You), ie promise that some debt can be redeemed at some given time. Also explain the role of the Central Bank, which allows banks to settle their exchange accounts when money are transfered between accounts from different banks, avoiding the need to send the real cash at each transaction, or even daily. Only the Central Bank can create money.
* [http://www.cs.cmu.edu/puzzle/index.html The Puzzle Toad]
:List of some puzzles, riddles, problems and their solutions. New problems published regularly.
* [https://adamfaliq.wordpress.com/2020/10/28/write-well/ How to Write Well: 4 Steps to Improve Your Writing]
: (1) Good writing is clear. Tell it like a story, with characters and actions (verb). Don't use nominalisation too much. (2) Good writing is cohesive. Focus on one concept at a time. (3) Good writing has emphasis. Prefer closing the sentence with the emphasis, rather than in the middle of the sentence. When introducing new technical term, locate them at the end. (4) Good writing is concise. Compress what you mean into the fewest words. Don’t state what your reader can easily refer.
* [https://tomtalks.blog/2019/06/where-in-the-world-will-my-microsoft-teams-meeting-by-hosted/ Where in the world will my Microsoft Teams meeting be hosted]
: A very interesting and detailed explanation of the network infrastructure behind Teams. Teams mostly rely on MS own private infrastructure, the 2nd biggest in the world.
* [https://github.com/nbeaver/why-linux-is-better Objective reasons to prefer Linux to Windows]
: Many objectives reasons on why Linux is better than Windows.
* [https://textvis.lnu.se/ A Visual Survey of Text Visualization Techniques]
* [https://www.johnluxford.com/blog/apples-15-percent-deflection-tactic/ Apple's 15% Deflection Tactic]
: On the unfair competitive advantages of Apple/Google/... market places.
* [https://zoomquilt.org/ Zoomquilt]
: Also http://zoomquilt2.com/, and http://arkadia.xyz/. Impressive and beautiful journey in the zoom world.
* [https://www.youtube.com/watch?v=sYd_-pAfbBw 16 Sorts - Disparity Dots]
: An amazing and hypnotising visualisation of 16 sorting algorithms, where distance to center indicates how far from being sorted each element is, with color and sound. See also https://nullprogram.com/blog/2017/11/03/.
* [https://scholar.harvard.edu/files/mickens/files/thesaddestmoment.pdf The Saddest Moment]
: On distributed systems conference, there is always talk about Byzantine fault tolerance, that are saddening, because mostly irrelevant.
* [https://www.bbc.co.uk/news/uk-northern-ireland-45789759 Ashers 'gay cake' row: Bakers win Supreme Court appeal]
:A ruling about bakery that didn't want to produce a cake with a particular message (pro-gay marriage message). Bakery was finally found right because it was not discriminatory to the customer himself. Issue isn't that the customer was gay (bakery did serve him already in the past), the issue was the bakers didn't want to make this particular cake for anybody.
* Illusions:
:* [http://www.ritsumei.ac.jp/~akitaoka/index-e.html Akiyoshi's illusion pages]
::Interesting illusion. Note there was also another site with lot of categorized illusions, also found via HN.
:* [https://nautil.us/blog/12-mind_bending-perceptual-illusions 12 mind-bending perceptual illusions]
:: More incredible illusions. See also [https://github.com/Matsemann/impossible-objects impossible objects], [http://illusionoftheyear.com/], [https://www.livescience.com/confetti-munker-white-optical-illusion.html].
:* [https://youarenotsosmart.com/wp-content/uploads/2017/07/103-desirability-bias.mp3 103-desirability-bias podcast]
:: A podcast containing (at the beginning) a short noise audio snippet, then later a cue telling how to make sense of the noise. Once the cue is heard, the brain will always make sense of that noise snippet forever. This is an illustration of confirmation bias, and the podcast also covers the advantage of it from an evolution perspective.
* [https://jrs-s.net/2016/05/02/zfs-copies-equals-n/ zfs: copies=n is not a substitute for device redundancy!]
:An example on how to use qemu / zfs.
* [https://www.monolisa.dev/ MonoLisa]
:A monospace font for developers that looks cool, but costs >50€.
* [https://rubjo.github.io/victor-mono/ Victor-mono]
:A monospace font a bit like MonoLisa, and free ;-)
* [https://www.programmingfonts.org/ Programming fonts]
:To compare various programming fonts...
* [https://news.ycombinator.com/item?id=31308423 “I don't know the numbers”: a math puzzle (alexanderell.is) - hacker news]
: Discussion on the puzzle "I don't know the numbers" [https://alexanderell.is/posts/numbers-game/], and several implementations, and links to '''other puzzles''' (including the famous blue eyes puzzle [https://slatestarcodex.com/2015/10/15/it-was-you-who-made-my-blue-eyes-blue/ a funny one]).
: [http://jdh.hamkins.org/cheryls-rational-gifts/ Another puzzle with rational numbers].
: [https://scottaaronson.blog/?p=2410 A discussion on common knowledge]
* [https://paulbutler.org/2022/the-problem-with-bitcoin-miners/ The problem with bitcoin miners]
: Interesting financial analysis of the profitability of bitcoin miners, linked to fact that mining equipment are depraciated using a straightline when actually they should be depraciated as a curve. Lack of profitability is currently hidden because BC are also gaining value over time, but in truth investing directly in BC would have been equally if not more profitable.
* [https://kk.org/thetechnium/better-than-fre/ Better Than Free]
: 8 things that are better than free, than cannot be freely copied: (trust), immediacy, personalization, interpretation (like support, docs), authenticity, accessibility, embodiment, patronage, findability.
* [https://www.techdirt.com/2023/03/22/book-publishers-wont-stop-until-libraries-are-dead/ Book Publishers Won’t Stop Until Libraries Are Dead]
: Discussion about the legality of the Internet Archive, and the action of publishers that try to destroy it. Copyright law explicitly gives the rights to libraries to make copies, and book scanning itself is fair use for the libraries.
:* [https://www.techdirt.com/2007/02/15/saying-you-cant-compete-with-free-is-saying-you-cant-compete-period/ Saying You Can't Compete With Free Is Saying You Can't Compete Period] &mdash; explaining that competiting with free is same as competing on any products in a competitive market (where price of goods are pushed to marginal cost).
* [https://blog.plover.com/lang/anagram-scoring.html I found the best anagram in English]
:A method to find the best anagrams in English. The best is actually <code>14 cinematographer megachiropteran</code>.
* [https://vitalik.ca/general/2023/08/16/communitynotes.html What do I think about Community Notes?]
:An explanation of the community notes algorithm used on Twitter (X) to display corrective notes. use machine-learning (gradient descend) to modelize a user/note matrix, and define the note usefulness, versus possible polarization of either notes or users (trying to be as neutral as possible). The algorithm is open-source.
* [https://hidden-3d.com/ Hidden 3D]
: The world of stereograms, ie hidden 3D images.
* [https://www.bitsaboutmoney.com/archive/the-waste-stream-of-consumer-finance/ The waste stream of consumer finance (credit card debt collection)]
: Story and tips to counter debt collector bad practices. Make sure your rights are respected (no legal threats, etc). Ask to produce the contract associated with the debt (most don't have, only a CSV file). If called in court, always show up (and ask then to get a copy of the contract).
* [https://nothinghuman.substack.com/p/the-tyranny-of-the-marginal-user The tyranny of the marginal user]
: A story on the fall of OKCupid and the reason behind it. Company focus on increasing the DAU (Daily Active Users), and as a result focus more on the wishes of the new users than on existing ones.
* [https://service-manual.nhs.uk/content/numbers-measurements-dates-time Content style guide - Numbers, measurements, dates and time (NHS)]
:A set of recommendations when using numbers in content (to made it easier to the reader). Use <code>1st, 2nd, 3rd...</code>. Use numbers <code>1, 2, 3...</code> instead of words (except common sense situation like <code>the last one</code>, <code>another one</code>...).
* [https://blog.demofox.org/2023/10/22/how-to-make-your-own-spooky-magic-eye-pictures-autostereograms/ How To Make Your Own Spooky Magic Eye Pictures (Autostereograms)]
:Some explanations on how to build autostereogram images. See also https://github.com/Atrix256/Autostereogram.
* [https://www.improbableisland.com/coc.php Improbable Islands - Code of Conduct]
:A detailed list of rules, advises in online community, covering abusive behaviour like harassment, manipulation, etc.
* [https://www.youtube.com/watch?v=kUYzuAJeg3M Brennan's self-balancing monorail train (YT)
:An amazing design of a monorail train that balances itself with two gyros.


== Greta Thunberg ==
== Climate Change ==
* [http://worrydream.com/#!/ClimateChange What Can a Technologist Do About Climate Change?]
: A very detailed page, with lots of infographics.
* [https://nautil.us/issue/86/energy/why-birds-can-fly-over-mount-everest Why birds can fly over Mount Everest]
:A nice write-up on how birds / dinosaurs got their lung, and on the origin of fossil fuel, and the impact of current climate change.

=== Greta Thunberg ===
* [https://www.youtube.com/watch?v=H2QxFM9y0tY The disarming case to act right now on climate change &mdash; Greta Thunberg]
* [https://www.youtube.com/watch?v=H2QxFM9y0tY The disarming case to act right now on climate change &mdash; Greta Thunberg]
:Impressive talk from 16-year old Greta Thunberg on the urge to act now to face the climate crisis.
:Impressive talk from 16-year old Greta Thunberg on the urge to act now to face the climate crisis.
Line 467: Line 1,301:
* [https://egghead.io/courses/getting-started-with-redux Getting Started with Redux]
* [https://egghead.io/courses/getting-started-with-redux Getting Started with Redux]
:Teach you how to manage state in your React application with Redux. Recommended [http://pranay.gp/how-to-learn-things-at-1000x-the-speed here] as a good introduction to ''functional programming''.
:Teach you how to manage state in your React application with Redux. Recommended [http://pranay.gp/how-to-learn-things-at-1000x-the-speed here] as a good introduction to ''functional programming''.

* [http://www.avabodh.com/cin/cin.html C Internals]
: A detailed course on how C is translated to assembly.

* [https://explorabl.es/ Explorable explanations]
:A set of interactive course on various subjects.

* [https://github.com/RayTracing/raytracing.github.io Raytracing in one week-end]
:Several books on ray-tracing. For when I'll be retired, or dead.

* [http://brendanfong.com/programmingcats.html 18.S097 Programming with Categories]
: Course on category theory, mathematical tool to organize key abstractions, using Haskell.

* [https://www.lightnote.co/ How Music Works - Interactive Music Theory Lessons]
: Harmony, when waves are simple fractions of each other.
: Pentatonic scale, five note scale that always sound nice.
: Chromatic scale, 12 note scale, richer, but not always sounding nice. Note that the frequency of starting note does not matter, and that all melody can be shifted up or down on a scale also.
: Chords (major, minor, diminished), 3 notes that play together nicely.
: Keys, group of notes (seven in the twelve) used in a song and that play nice. Turns out that the C major key are simply the 7 white keys on a piano.
: ... premium course available.

* [https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-172-performance-engineering-of-software-systems-fall-2018/ Performance Engineering of Software Systems]
:An impressive course from MIT Open Course. Must see.

* [https://github.com/srush/Tensor-Puzzles Tensor Puzzles]
:Set of tensor puzzles, meant to learn the tensor language as used in PyTorch / Numpy.


== Talks ==
== Talks ==

Latest revision as of 05:08, 16 October 2024

Show how many times frustrated Linux kernel developers have put four letter words into the source code.
An online tool to provide custom-sized placeholder images of Bill Murray! http://fillmurray.com/200/300.
I like the humor and layout of the page. Images are superb.
Check also PlaceCage (Nick Cage Filler Images) and Steven SeGALLERY (Steven Segal Filler Images) :-D
An amazing video from A Capella Science on biology science. Amazing song. More to see on the YouTube channel.

AI / ML

See also
Bookmarks
Student's post about replicating OpenAI's GPT2 1.5B dataset, and is about to release it, and long explanation why. GPT2 generates very interesting samples. Humanity success is more because of collaboration / trust, than intelligence, and our ability has human to identify trustable information. If we have a system charged with detecting what we can and can’t trust, we aren’t removing our need to invest trust, we are only moving our trust from our own faculties to those of the machine.
A book praised by HN [1].
Amazing page detailing the mathematics behind gaussian processes.
A report on how fly brain compares and processes different colors, and solves the problem of locality-sensitive hash. Very clear and simple explanations.
Nice animations. Looks simple to understand...
Generate new images (portraits, landscapes, album covers...) by mixing together images to generate new ones.
New word invented and defined by an AI, using GPT-2.
Suggested on HN.
An interactive room where you can build your own custom music.
Beyond the subject, what I like is the nice animations, and the simple explanation.
Very nice article on how to use projection-based hashing to very quickly find neighbours in a dataset
The world’s largest openly available image-text-pair dataset with 400 million samples. There is an online browser: https://rom1504.github.io/clip-retrieval/. Enter any query (a bicycle in the wood), and it returns relevant pictures.
A ML experiment to generate "lowest" and "uppest" case letter from standard pairs of lowercase / uppercase letter. The ML engine is trained to generate the corresponding lower or upper case letter from any letter. Using that engine we can generate the lowercase variant of an already lower case letter, giving a "lowestcase" letter, etc ;-)
Using various AI tools to make a website (ChatGPT, MidJourney...).
Several approaches to making several prompts: Minor variations, letting the AI do the work (poor results) — Adding restrictions and user knowledge (good but lot of variation) — Co-editing. The last approach is the one giving the best result, and also help mastering the subject.
Using AI to analyze a problem / image, produce a Python program to solve it, and execute it.
A detailed investigation on how to use ChatGPT to learn new skills (here macroeconomy), by creating example scenarios, detailed queries...
An incredible pipeline that produces artistic fonts using some prompts (e.g. making 'R' letter looking like a dragon). Results are amazing and very stylized.
An interesting analysis of the capability of ChatGPT-4, in particular about the risk of cross-contamination when evaluating its capabilities. Evaluation methods from less to more useful: Comparison on contaminated exam benchmarks / Comparison on exam benchmarks / Comparison on real-word tasks / Quantitative studies of professionals using AI / Qualitative studies of professionals using AI.
An explanation of why AI will become dominant as code assistant. Title is a reference to landmark paper from Google Brain team [2]. Explain the importance of the "cheat sheet", ie the context that is passed to the AI to generate good response about the current code base.
AI News, Curated and Explained by AI. Also contains list of prompt / queries to ChatGPT.
A must-see video about building a GPT ourselves in Python.
A 154-page paper from Microsoft research team evaluating GPT-4 in many domains. Must read.
Leaked Internal Google Document Claims Open Source AI Will Outcompete Google and OpenAI
A detailed article on how NN learns complex algorithms.
Real-time image generation with SDXL Lightning
An interesting analysis about the issue of CoPilot and copyright. Act of reading / scraping is no copyright infringement (the same way if I read a book in a store). Only issue is that such act requires temporary digital copy. Machine-generated code is not derivative work.

Mathemathics

Correlation is not causation.
  • Tangente n°182, p34-35, "Les excès de la corrélation".
Nous allons vers un changement épistémologique majeur. S'en remettre à ce type de calcul traduit un renoncement aux ambitions de la raison moderne, qui liait les phénomènes à leurs causes. Ces ambitions de la raison permettaient d'envisager la prévention, d'agir sur les causes pour changes les effets. Au lieu de cela, on se dirige vers un système de pures corrélations. [...] On ne cherche plus à comprendre l'environnement, on cherche à le prédire. Notre rapport au savoir change, mais aussi notre rapport au monde: on se focalise davantage qu'auparavant sur les risques. "Voir et comprendre" sont supplantés par détecter et prévenir". On passe d'une civilisation du signe, qui était porteur de sens, à une civilisation du signal, qui est une donnée qui ne signifie rien en soi..
How to cut fairly a cake in three (and more) pieces.
The evolution of trust — a fun lecture for understanding game theory in a broader context.
Interesting post about big numbers, including Ackerman series (tetration, etc), and Busy Beaver function (maximum number of steps than a valid n-state turing machine would execute -- that is roughly the execution time of the most complex machine excluding non-halting ones). Updated post here and also discussion on HN.
A very fast web application showing particle movements in force field. Very fast. See example.
Answer from Terrence Tao about properties of good notation systems (taking dot/scalar product as example).
Rendering equation (LaTeX) in Jupyter, with value substitution. Nice examples, and lots of features.
A nice explanation on the Monty Hall problem (2 goats and one car behind a door, pick a door, have presentator pick another one with goat, and ask whether to switch or not)
A nice detailed explanation of the Gödel proof regarding consistency and completeness.
A javascript plotter using random sampling to plot solutions of any f(x,y)=0, including pathological ones.
Here some Some baby examples
  • I❤️LA is a novel domain specific language for linear algebra.
The I❤️LA code written with rich Unicode symbols visually resembles chalkboard math, while still being a semantically well-defined programming language compilable to various target languages: LaTeX, MATLAB, Python, C++.
Solutions to problems of packing figures inside figures, covering figures of figures, etc (eg. how many triangles in a square).
A book about mathematics, proofs...
An introductory pure mathematics textbook (under creative common, and including LaTeX source!).
37 is the median of the second prime factor of any random integer, that is, if we pick an integer at random, the second prime factor of that integer has 50% chance to be lower than 37. This post gives a nice demonstration, which is simply based on counting the probability that the second prime factor is 2, 3, 5...
Interesting discussions on the Mandelbrot set, entropy bagels... to read in details some day.
A great article about Walsh-Adamard transform and matrices, and how to generate / use them.
Interesting algorithm to find the unknown parameters of a hidden Markov model.
Include a zero-knowledge proof on how to demonstrate a map only needs 3 colors, without revealing the solution; and a proposal to transmit information by the number of primes that an integer has (properties: revealing, hiding, unique decoding).
Say student they are not stupid, but that it is normal to feel stupid.

Sciences

Many exercices in Python on the theme of bioinformatics.
The 10 phases you go through when reading a scientific papers. More tips to read these papers here.
All Maxwell equations in a single space-time oneliner (see also WP).
Many interesting facts about biology, that we should be amazed at. Many links, in particular to Ninja Nerd Science. Often times more interesting to study the methods than the facts.
Interesting fact: As an example, if only 0.02% of a typical eukaryotic cell’s surface has a receptor for p, the cell will be about half as efficient as if the entire surface were coated with receptors for p.

Quantum computing

A detailed explanation about surface code, which can be used to reduced noise in quantum computing.

Tools

  • oclif, an open source framework for building a command line interface (CLI) in Node.js.
  • Mosh, a mobile SSH client.
  • Live Chat online typing test
  • Warp, create self-contained single binary applications.
  • Goosh.org, an unofficial Google shell.
  • Jit.si, an open-source videoconferencing service.
  • Mumble, an open-source VoIP solution (alternative to TeamSpeak and Discord).
  • Jumpfiles, a framework to setup jumpfiles in Shell, to quickly record/edit/recall long commands with shorthand equivalent.
  • Argdown: A simple syntax for complex argumentation, a kind of extension of MarkDown.
  • unblob: Extract files from any kind of container formats (more tools here)
  • up The Ultimate Plumber tool, allows to build complex pipe shell commands.
  • Kitty (github) A powerful terminal with hyperlink / image support
  • starship The minimal, blazing-fast, and infinitely customizable prompt for any shell!
  • Magika (github), Google AI-powered file identification tool with >99% recognition rate.

Services

  • Guerrilla Mail, a service to create easily temporary mail addresses for use on (untrusted) web site for registration, etc.
  • carsized, a comparator of car sizes.
  • Archive today, a website that keeps copies of new site, and can often be used to bypass paywalls.

Apps

  • Krita 4.0 released, Krita is a professional FREE and open source painting program.
  • Draw.io — a free alternative to Visio, very powerful and that integrates nicely in many online platforms (GitLab...). Available offline, and as stand-alone executable as well.
  • Excalidraw — A nice drawing tool, making handwriting-like drawings. Nice for presentations.
  • Mermaid — lets you create diagrams and visualizations using text and code (flowchart, sequence diagram, gantt diagram, class diagram, git graph) (also discussed here)

Games

For when I'll be retired...
Also explain how to install Windows 10 w/o network connection and activation issue (ie. fully isolated Win10). Used Win10_22H2_English_x64v1.iso (2023 Update) with hash bbb1b234ea7f5397a1906ee59187087c78374f35.

Books

A book on algorithmic problem solving, the art of formulating efficient methods that solve problems of a mathematical nature.
Online digital book on typography from Matthew Butterick, including tips to learn typography in ten minutes.
OpenGL, WebGL, 3D, Blender...
prime numbers, probabilities, logarithms, graph theory, gcd/lcm...
  • Recommended books for development (source HN):
  • The Practical Programmer,
  • Code Complete,
  • Design Patterns, from the Gang of Four,
  • Refactoring, from Martin Flower,
  • The Practice of Programming, from Kernighan and Pike’s,

Dev

Crystal-clear tutorial on how to use strace, lsof and gdb to debug inter-process issues on Linux.
open source Python graphing library, with Javascript interaction.
An optimization guide for assembly programmers and compiler makers By Agner Fog. Technical University of Denmar.
Nine reasons why Lisp and Racket are good programming languages. From Matthew Butterick, author of the book Practical Typography and of Pollen, a digital book publishing system.
Don't reinvent the wheels. Reference solutions to common problems in *many* languages.

Rust

Many interesting comments on RUST, and how to write / debug programs with concurrency/performance in mind.

Methodology

5 reasons not to rewrite an existing code.
About the mistake of full rewrite (Netscape 6, Borland Quattro Pro). Instead refactor, rename,
Instead of rewriting, write a strangler application, that will progressively replace the old system.
Tesler's Law, also known as The Law of Conservation of Complexity, states that for any system there is a certain amount of complexity which cannot be reduced.
About Semantic Versioning and tips / pits to introduce new functionality, and fixing security bugs.
Don't build technology unless you feel the pain of not having it. Then: First make it possible. Then make it beautiful. Then make it fast. Use cases are everything in suffering-oriented programming.
Nice write-up from a designer at Uber on why simple and clean design is better than applying patterns or using architecture tools.
Many nice quotes:
  • "I no longer think about code lines as an asset to be accumulated, but rather as an expenditure to be avoided."
  • Edsger Djikstra: If we wish to count lines of code, we should not regard them as “lines produced” but as “lines spent”: the current conventional wisdom is so foolish as to book that count on the wrong side of the ledger.
  • Bill Gates: "Measuring programming progress by lines of code is like measuring aircraft building progress by weight."
  • Old military saying: “Slow is smooth, and smooth is fast”
  • A mom / Lewis Caroll: "The hurrie(de)r I go, the behinder I get!", aka "more haste, less speed".
  • Motorcycle racing: "a fast rider has slow hands".
Explain a three-pass technique to read scientific paper (1st intro and conclusion and sub-section titles, 2nd read deeper but skip details like proof but pay attention to graphs, 3rd virtually redo the paper).
Some advices on how to accept and deal with breaks. Maintain a continuous context in notes (at least every 30min). Focus on one current task, other are distraction. Current task must be clearly identified. Plan next task using negative priority (don't include every task, only consider the one with worst consequence if not included).
An anti-coding style guideline.
Several wise quotes about coding. Some of them:
  • Premature optimization is the root of all evil. Donald Knuth
  • Rules of optimization: 1. Don’t! 2. Don’t… yet. 3. Profile before optimizing. Michael Jackson
  • As a programmer, never underestimate your ability to come up with ridiculously complex solutions for simple problems. Thomas Fuchs
  • Get your data structures correct first, and the rest of the program will write itself. David Jones
  • The #1 rule of distribute computing: Don’t distribute your computing! At least if you can in any way avoid it. DHH (David Heinemeier Hanson)
  • Scalability. The #1 problem people don’t actually have but still solve. Eberhard Wolff
  • Shared + Mutable = Danger! Andrey Breslav
  • Prefer duplication over the wrong abstraction. Sandi Metz
  • Compassionate Tech Values: Ego < Humility. Elitism < Inclusion. Competition < Cooperation. Being Smart < Learning. Being a Rockstar < Being a Mentor. April Wensel

/* KISS > DRY

Pick a stable language (C, Ada...). Avoid/wrap compiler language extensions.
Use / learn the standard library (see here for C std lib), and know the gotchas.
Use POSIX (must define _POSIX_C_SOURCE).
Deal with OS extras (use config.mk in Makefile. See link for example of configure script to test compiler features). Wrap OS functions behind our own.
Deal with third-party libraries. Use pkg-config to find and deal with dependency libraries (or create your own). Use POSIX search.h for simple collection libraries, or C Algorithms for a small and clean library. See also Uthash.
For user interface, there is readline ncurses and SDL2.
Define your Minimal Viable Product. Don't fear refactoring, we cannot avoid it (too many unknowns). Minimize your dependencies (external libs)
Detailed but clear explaination on how the lead maintainer of Curl uses git everyday. No merge but rebase. Commit rewrite. Scripts for release note. CI. We should do the same.
Recommended practices from someone who atively maintains 200-ish python projects. 1/ Change one thing at a time, 2/ Write a test (use template project so that all projects come with test framework included), 3/ Embed documentation in project, and update the documentation. Use github issue as extra temporal documentation: background, state-of-play beforehand, links to things (documentation, StackOverflow...), decisions, screenshots, code snippets... Scripting for releases.
Three words: do, simplest (aka not complex), work.
Some tips from Vale compiler on how to development an application efficiently (assertion, commenting, testing...)
Avoid making function that are called only once. If a function is called several times, see if we can call it only once, possibly with a flag. Mainly for game dev or alike with a tic function.

Productivity

A set of command-line script to interface with ChatGPT / GPT4 (hey gpt, data gpt, image gpt, code edit). See also HN comments.
  • Omakub — A complete setup to turn Ubuntu into working web environemnt.
Very neat environment, using Neovim (lazyvim), Alacritty + Zellij (for tiling), nice tiling window manager (with kbd shortcuts), nice integrated color themes, using Flameshot (for screenshot) and Ulauncher (app launcher).

Learn

From Xv6, a simple Unix-like teaching operating system
All participants spent most of their time studying examples, rather than reading the language documentation.
Illustrate the Shlemiel the painter’s algorithm when concatenating C strings where performance is n^2 because of the lack of efficient strlen() operator.
With lots of links, recommended books, languages (Racket, C, Javascript...), discrete mathematics...
A technique to learn complex concepts in record time, retain knowledge, and study more efficiently. First, write the name of the concept. Second, write out an explanation of the concept, as if explaining to a layman. Then pinpoint gaps into the explanation, and go back to source material, and repeat previous step. Finally, put the editor's hat, and rewrite the whole (filter wordy / confusing / complex language).
The fastest way to learn a new language from example code. Has course for MANY languages.
An interactive page to learn using D3.
Cassidy Williams is a well-known dev with lots of quality screencast. Here teaching React, using codesandbox.io as a platform.
An instant IDE and prototyping tool for rapid web development.
Interesting comment on how to learn to code, making a difference between learning to code and learning a programming language. Refer to http://htdp.org/ How To Design Program, a subsest of Racket, and the 34 paradigms and 18 concepts identified by Pr. Peter Van Roy (UCL) in http://www.info.ucl.ac.be/~pvr/paradigms.
(link to the book in PDF) A set of exercises once available on a website, teaching Python. Recommended on HN.
A set of lessons. Recommended on HN. Do 1 lesson a day.
An adventure game to learn the linux commands.
Learn languages interactively.
Nice engine to make nice little program in js, with animation, etc.
  • Red Blob Games: Interactive visual explanations of math and algorithms].

Web

Delay non-critical task to idle thread, while forcing their execution if some user event depend on that task being executed first.
A detailed post on some techniques to make front-end web apps load faster and provide a good user experience.
Bring user-generated content to static sites.
Fullscreen API, Clipboard async API...
No need for a long post ;-)
A search engine to find colors best corresponding to word or sentence.
  • emscripten and V86, that provide a compiler and x86 virtual machine to Web Assembly, that allows running x86 machine in the browser!!!
See x86 assembly doesn’t have to be scary (interactive) for a demo, and nice write up on x86 asm.
Set of tools, services, solutions to allow scraping content from the internet without being detected (including proxy services...).
This uses WebRTC. See HN comments. Alternatives are https://wormhole.app/, https://www.sharedrop.io/, and https://file.pizza/.
  • HUGO, A fast and lightweight static web site builder.
Advertised on this page, which also shows nice way to make analysis / analytics of web engine (nginx, using goaccess).
Rapidly build modern websites without ever leaving your HTML. A utility-first CSS framework packed with classes like flex, pt-4, text-center and rotate-90 that can be composed to build any design, directly in your markup.
Using CSS to animate mathematical formulas, without javascript.

Network

Every byte of a TLS connection explained and reproduced.
Clear, simplified explanation on how to setup a server when facing more and more users (split out DB, split out client/API, add load balancer, add CDN, add database cache and read replica). More discussions on Hacker News.
Detailed but clear description of the handshake at the start of HTTPS, including crypto details, etc.
A detailed analysis of how NAT works and impact on connections like SSH. Provide some tools to inverstigate such as tcp-send-test, tcp-recv-test and tcp-keepalive-test. Setting ServerAliveInterval fixed his problem.
Using PiHole, installed in a Docker container.

Game

Detailed explanation on how to make a fast tile-based game engine. Tricks used:
  • Use LEA instruction, most efficient to move bytes, but requiring modifying the stack pointer.
  • Pre-process the tiles to cancel effect of fast rendering loop
  • Reverse display order to cancel graphical corruption when interrupt occurs and load registers on the stack.
Detailed explanation on 2D game optimization for a Super-Mario-like game. Various tricks are explained about fast scrolling, fast sprite handling...
  • Background is generated by a LEA-field, basically a sequence of code generated by the game engine, and when executed, draw pixel to the screen buffer. The LEA-field is organized into sequence of code, each drawing a given scanline.
  • Scrolling is obtained by a different offset in the scanline.
  • When scrolling, the code in leftmost/rightmost columns of the LEA-field must be updated. This update is done by a code, which is also generated by the engine. This column-update code is generated to avoid duplicate register loading (typ. occurs when the scene has many duplicated pixels, like a blue sky).
  • Sprite is also generated by a code, generated from sprite data.
A very fast tile engine for the Apple IIGS, using advanced techniques to achieve 1 pixels every 1.25 cycles.
Amazing tutorial on how to create light & shadow effect in 2D games.
A detailed review of how Another World was ported on different platform, here on Amiga (original port) and IBM PC. On Amiga, this explains the essential features of the blitter to reach the 20FPS. On PC, it explains how the VGA latch registers are used to perform masked copy, and allow a 4x / 8x speed up.
Interesting blog about alternative ranking system than ELO/Glicko/TruSkill, that gives less complaints from user. HN comments.
  • On multi-player game design:
  • These maps are very useful for pathfinding algorithms. There are several powerful use of these maps for various game use cases (here illustrated for roguelike game Brogue).
  • Explains the different steps in the cave / map generator written by Watabou. Procedural generation using several simple rules effectively.

CVS

Explain how to obtain perfect patch using digle (directed graph file) instead of files, as used in pijul, with some mathematical background.

Languages

A Scheme/Lisp language.
A language for pipe-based programming. Amazing master thesis, clearly written!
A Python library to write games with zero boilerplate.
Many pages on Haskell on different subjects.
Some advanced stuff on Lisp I need to read someday when I retire (HN comments).
Interesting discussion on various syntax style, and how to represent language constructs.
  • I❤️LA is a novel domain specific language for linear algebra.
The I❤️LA code written with rich Unicode symbols visually resembles chalkboard math, while still being a semantically well-defined programming language compilable to various target languages: LaTeX, MATLAB, Python, C++.

Design

  1. Contrast — Elements of your design (colour, size, weight, style) should be either exactly the same, or significantly different.
  2. Consistency — Make sure similar elements appear in similar ways.
  3. Occam's Razors (aka Reduce Visual Noise) — The fewer the number of elements you use in your design, the better.
  4. Space — The way things are positioned sends a meta-level message about their meaning. This deals with proximity (= relatedness), with negative space, and with importance and order.
What’s faster, incrementing a std::vector of uint8_t or of uint32_t? This is analyzed carefully, with surprising results. It turns out that uint8_t is much slower because of pointer aliasing issues that prevent the compiler to use vector instructions. To fix it, one much avoid any reference to std::vector data in the loop:
for (auto i = v.begin(), e = v.end(); i != e; ++i) {
    (*i)++;
}
Or another solution is to use keyword __restrict.
"Good design is as little design as possible." - some German motherfucker
Google product director: "obvious always win." Example: explicit bottom navigation menu better than hamburger button; segmented control menu better than toggle menu; text better than icon. Also, copying does not guarantee obvious design.
Accessibility rules require a minimum contrast ratio of 4.5+ for small text and 3.0+ for text. It can be very difficult to design a color palette that fits these requirement, while still keeping rich and vivid colors. Color systems like RGB or HSL don't integrate human color perception. In this post, authors explained how they designed their own tool to define the best palette with accessible colors.
Four books on open source programs (500-line example programs, performance, architecture). Very clear.
Comparing switch with polymorphism regarding extensibility / flexibility (and readability), and also performance, on Scala. Turns out switch is more flexible and more performant.
Focus on content, then center, font family, spacing, color & contrast, balance... See also CSS in 44 minutes (44-page pdf]
Some design rules to follow...
  • Use saturation and lightness.
  • Avoid pure colors
  • A stylesheet to render web pages using monospace fonts only. Looks cool.

Graphism

An interesting dive into dithering techniques, with examples and code.
A tutorial on how to make isometric pixel art. See also more blog entries there!
Nice library to draw figures in Racket.
A language to make drawings (flow charts, sequence diagram...)
A nice interactive introduction to programming shaders. A shader is a function that transforms a coordinate into a color.
Create beautiful diagrams / graphs just by typing notation in plain text. Many examples available.

Tools

Inline tool to analyze / compare the assembly code produced by many compilers in many languages.
Nice and very detailed write-up on how to use GitHub actions, that can trigger on various events (push, issue creation). Using Typescript, YAML, Node.js...
Amazing web integration platform built for developers. Develop any workflow, based on any trigger. Workflows are code, which you can run for free. No server or cloud resources to manage. Very easy to develop.
A free book on reverse engineering, more than 1000 pages!
jq is to json file what sed is to text file. Example of use here.
A nice summary of how to use Graphviz to produce diagrams from code.
inal-based presentation tool with colors and effects.
A resilient, scalable tracing and analysis system for SW development. Report various metrics. Seems quite powerful.
A simple application of netpbm library to visualize easily some data using only printf/echo command.
About a general package manager called Nix. Looks very powerful. Crystal clear post.
A build system with focus on speed.
An alternative to ls with better defaults, to list files in the terminal.
A simple and effective cron job monitoring. Provide dashboard and notifications when period jobs are not completed. Seems very easy to use.
A docker image to easily deploy nginx proxy, to protect self-hosted application (from here).
linkding is a simple bookmark service that you can host yourself. It's designed be to be minimal, fast and easy to set up using Docker (from here).
Feather Wiki is an app for creating personal non-linear notebooks, databases, and wikis that is entirely self-contained and runs in your browser.
redbean is a webserver in a zip executable that runs on six operating systems.
direnv is an extension for your shell. It augments existing shells with a new feature that can load and unload environment variables depending on the current directory.
A free tool to send notification to Android / PC.
A list of powerful tracing and visualising tools, including perfetto, Chrome built-in json format, perf and perftrace, Intel Processor Trace
Shell tools
A shell function for fuzzy spell checking, with clipboard support.
  • dict-gcide
webster 1913 dictionnary, available from the command line, eg dict obfuscate.
  • Shell tools

Functional programming

Detailed post on the differences between functor, applicative and monad (using OCaml and Haskell).
An overview of koka, a research language that tries to formalize effects (exception, divergence). Discussion over composition, monads, etc. See also this article (perceus) about advanced reference counting.

Concurrency / multi-threading

Clear description of locking issues (incl. priority inversion), and tips on concurrency when using an audio thread: Don't lock, don't call lib with unbounded exec time (like malloc), use only (aligned) byte/half-word/word assiment (which are atomic), use lock-less data structures (eg. TPCircularBuffer). And a goodies: Billy Joel and Jimmy Fallon Form 2-Man Doo-Wop Group Using iPad App.
More advices on real-time programming techniques.
The danger of not using locks. Compiler are free to reorder memory access because of the as if rule. Some CPU are also allowed to reorder these accesses. volatile cannot be reordered, but only versus other volatile access. Using lock-free programming is usually not portable. We can use MemoryBarrier() in VC2005, or _ReadWriteBarrier, but they are expensive. Better solution is to use C++11 std::atomic:
// Producer thread:
Data_t g_data1, g_data2, g_data3;
std::atomic<bool> g_flag // Look at this!

g_data1 = calc1();
g_data2 = calc2();
g_data3 = calc3();
// g_flag = true; // Indicate that the data is ready for consumption.
// ... or better:
g_flag.store(true, std::memory_order_release);

// Consumer thread:
if (g_flag.load(std::memory_order_acquire)) {
  DoSomething(g_data1, g_data1, g_data2, g_data3);
Busy loop is usually very bad: wasted power, live lock, CPU starvation, CPU or GPU perf loss, increased cache usage.
  • If busy waiting: cap it, do normal read, and use YieldProcessor().
  • Don't use sleep(0).
  • Don't use smalllock.
  • Use a CRITICAL_SECTION, a futex or a lightweight mutex such as benaphore.
  • Nice visualisation of scheduling, and how to make lightweight servers that can serve millions of requests.

Algorithms / libraries

Detailed explanation of how TimSort works, why it is so fast on real arrays with natural runs.
  • More discussions on sort algorithm here, including reference to a new sort algorithm: GlideSort (FOSDEM 2023).
μPlot is a very fast and memory-efficient time series chart based on Canvas 2D (javascript).
Amazing interactive page demonstrating the effect of a picture smoothing algorithm, with detailed explanation and variations, with running code (observablehq.com).
Very nice introduction to Three.js, a WebGL-powered visualization library. Very powerful library, for 3D rendering in browser, in javascript, and generating WebGL.
a library for designing GUI in C++, with support of a variety of platforms.
A list of single file libraries in many different categories (AI, argv, audio, compression, crypto, data structures, debugging, math, pictures, video...).
Efficient, single-machine system for performing data mining tasks on large graphs. Presentation is very cool, with nice animations.
An impressive study on how to generate random-looking sequence with better sampling properties than uniform distribution while less regular than lattice.
An efficient hash / PRNG function.
Analysis and implementations of Knuth Algorithm D, on unsigned integer division.
Pixie is a 2D graphics library similar to Cairo and Skia written (almost) entirely in Nim.
A very detailed blog on how the VSCode team managed to make a bracket colorization extension 10,000x faster, using advanced algorithms, (2,3)-Trees, recursive descent parser, Abstract Syntax Tree, with detailed complexity evaluation.
A nice write-up in Rust on how to solve NP-hard problem efficiently, using algorithm techniques like State tracking (don't scan the same state twice), Entropy reduction (identify states that are symmetric, and scan only one of them), A* Search (scan next states according to an heuristic, which gives an estimate of the minimum distance to a solution but never overestimate it), and implementation techniques like reducing allocations (avoid allocating objects on the heap), profiling, container pre-sizing. Also it is recommended to benchmark the optimization regularly to evaluate the real gain.
Other mentionned algorithms are Linear bottleneck assignment problem, and Assignment problem.
A compact way to encode n-choose-k on the minimal binary form. This uses the Combinatorial Number System. It practically means to assign an index to each possible choice, and decode the index for the given n (recursively). A dense formulation of the method is available on HN:
0. set y = 1. set x = 0.
1. How many possible choices are there _given what we've picked so far_? Call it N.
2. Pick one of them. Call it 'a'.
3. set x = x + a * y. set y = y * N.
4. Repeat steps 1-3 until the number of choices drops to be less than 2.
Implementation for sparse arrays.
Discussion about using multi-list hash tables or single-table hash tables.
A fast sqrt() function, taken from Quake III arena, and analyzed.
A bignum library with several multiplication algorithms (FFT, NTT...). Interesting discussion on calculatoin error probability.
A nice explanation of the Shazam algorithm, using spectrograms, maximum filter, hashing using (f_A,f_B,delta_T), finding matching songs, finding how hashes line up in the song.
Detailed analysis of error-correction code, QR code structure, etc.
The problem of doing calculus with uncertainty on numbers. Also mentions universal numbers (aka unum), which look like much better than floating point. Also, see flaming debate comparing floats and unums here
Analysis of wrong graph loop finding algorithms.

Testing

A library in Haskell to generate test patterns automatically based on logical properties that a function should fulfill. Equivalent libraries are available for other languagues.
Alternatives: Hypothesis.
Generate tests automatically from output of any program / scripts, for comparing again later, using git and make.
A nice tutorial showing how to use the Test Anything Protocol for unit testing.
Lot of recommendations for writing unit / integration tests in Java, but also applicable to other language. Worth a read when writing tests and having no idea how to proceed. Summary: write simple and clear tests (all main test elements must be clearly visible), use meaningful naming ("actual", "expected"...), KISS > DRY, avoid overuse of variables, don't mock too much (favor integration tests), favor composition over inheritance (wrong abstraction), use (parameterized) helper functions to reduce repeat...
A detailed analysis of car crash caused by SW, and the required level of quality needed by safety critical application (also covers Fault Containment Regions).

System

An interesting post detailed the inner working of RAMFS and boot sequence on Linux / kernel.
An interesting investigation post on an issue in Docker, to understand a bit better how docker works. Also relate to some docker zine, that might be interesting to read.
Example on how to use kernel tracepoints, dt, bt, btrace.
An overview of the nice feature of FreeBSD (stable unique base system, ZFS boot environment, simplicity...)
AN overview of the main differences between Linux and FreeBSD, useful commands, architecture, etc.
LXD is a next generation system container and virtual machine manager. It offers a unified user experience around full Linux systems running inside containers or virtual machines (keyword: docker).
A very detailed post analyzing the need for ECC in server, reacting to a post from Jeff Atwood. Turns out ECC is pretty much needed...
Interesting analysis of linux pipes. Speed comes from cost of locking + usage of non-vectorized code for copying (would require saving / restoring SIMD context which costs). Alternatively, use vmsplice as suggested in fast pipes.
Detailed description of Linux suspend / sleep / hibernation sequence.

Benchmarks / optimisation

Nice detailed post on how to track performance evolution across multiple commits to locate regressions in build/compilation time.
A detailed performance analysis of toupper in standard C or C++, which turns out to be a "feature" in the compiler headers. Nice Jitter Performance Scatter Plot, that shows the importance of collecting many many data points when doing benchmarks. Post is very clear, and many things well explained. Use a static website, but with staticman to support user comments.
Impressive optimization of QSort implementation.
Story around a bug report on Windows Terminal slowness, and how someone could make 100x - 1000x faster on a couple days work. [3], [4]. Very interesting to learn fast the basic working of a terminal renderer.
Incredible implementation of FizzBuzz on codegolf, where all data exchange is mostly done in CPU cache.
An example to show incredible performance delivered by Bloom filters, which can test whether an element is in a set, with definitive no and probable yes.
A framework to measure performance of code snippets. See Google benchmark.
A nice story on how to profile perf issue in QEMU, using Poor's man profiler (a very simple profiler using gdb), quickstack, flamegraph, and dealing with Linux namespace using nsenter.
A detailed analysis on how to implement fast pipe in Linux, including explanations of page allocation by the Kernel.
Example of making faster code by duplicating code, by testing special value and giving more local information to the compiler and opportunities for optimization. Also an example of advanced template (using variant template and inlined lambda).

Multimedia

Generate simple PPM video and separate WAV audio in a file. Easy to play with mplayer / mpv / vlc. Simple but powerful. Audio generation.
An impressive set of examples on how to generate very nice SVGs.
A method to get rid of the Moiré effect by patching the image in the frequency domain (using FFT).
Interesting article about how humans hear sound and the history of the Linux audio stack.
Link to a WONDERFUL video on D/A and A/D | Digital Show and Tell (Monty Montgomery @ xiph.org), explaining why 16 bit audio is the max you need, how digital/analog conversion works, etc.

3D

Step-by-step training on how to build a raytracer. Nice explanations.
The incredible design of an amazing-looking portrait of a girl taking a selfie, in amazing 3D, only with mathematics formula. See more raymarching distance fields. Code available here.
Building up equations from a simple fluid case, towards Navier-Stoke equations.
Excellent introduction to ray marching, technique using a shortest-distance function.
Detailed explanation of the impact of the spectrum nature of light on ray tracing and visualization of colors.

Debug

segfault due to name conflict between dyn. linked library (socket_send, available from libusbmuxd but also samba library). Show usage of ldd, readelf, lddtree.
Uses python for scripting, developed by Meta.
Hermit is the first practical deterministic operating system. It is an emulation layer on top of the Linux kernel. Similar to Wine, Hermit intercepts system calls and translates them from the Deterministic Linux abstraction to the underlying vanilla Linux OS.
Some advanced signal debugging stuff. Nice to see the process of thoughts, and the tools used.

Visualization

A set of advises on how to better represent data, including different ways to represent statistical distributions. Include several scripts to rework data before representing them.

Dev - Miscellaneous

Example of how to evaluate quickly firewall kind-of rules (rule combining type:value pairs with or, and... operators), using dynamically-generated FSM. To be compared with Binary Decision Diagram.
Very clear, practical and detailed description of the Linux executable.
A large survey about the qualities of great SW engineers.
It's how the software will be used that is important. Performative craftmanship elitism is bullshit. From HW, "toxicity of a culture of elitism and a fetishizing of language purity". See also other post from same author about fascism [6], and some recommendation regarding BLM [7].
A list of tools to show a GUI from a shell script (Sixtyfps.io, bottle (py server)+AlpineJS, Zenity, YAD, Tcl/Tk...)
Tutorial on terminal ANSI codes, and advanced / recommended techniques to make a modern TUI out of them (without using ncurses).
Here an alternative to ncurses, notcurses. See also HN comments.
A c implementation of tic-tac-toe in a single call to printf. Written for IOCCC 2020. Nice explanations.
Detailed information on various file formats.
Example text to clarify expectation regarding maintenance of an open-source project

Dev - Examples

Example on how to design a 3D globe in WebGL, with dotted texture and animations. Very detailed analysis.
Example on how to design a pedometer, with lot of explanation on how accelerometers work, the mathematics behind, etc.
Many coding problems and solutions from coding sites or interviews, mostly solved in Python. A must read!
Some explanation on the line-breaking algorithm used in LaTeX to produce optimal-looking paragraph, using some "dynamic programming" and tricks to run the algorithm in linear time instead of quadratic.
Game of life
a digital clock implemented as game of life FSM! See also HN comments for more WTF. From here
A simulation of game of life in the game of life... all the way down! Can zoom in and out, it's all game of life. This is just absolute WTF madness.
Travel in the game of life, from the small to the bigger, to the WTF.
Other
A 256-byte short movie program

AI-assisted

Using GPT-4 to find the first unused three-letter acronym in Wikipedia. Mention the case of blind spot where GPT-4 refuses to see an error even if prompted.
The whole site is an amazing resource.
A write-up about tips and tricks on using AI agent to do some works. Many useful links. HN comments.

Security

Detailed description of Trinity, a fully chained exploit for the PS Vita consisting of six unique vulnerabilities, describing how it works, how it was found and built.
Summary of issues around PGP, and alternatives (Signal, Whatsapp, magic wormhole, tarsnap).
A nice animation to explain how RAFT works, which is a protocol to establish distributed consensus.
Some very complex mechanism to allow recovery of the signal app data from a small PIN. Not sure this works / is reliable nor if it is going into the right direction, but it refers to some interesting security technologies (Intel SGX, Raft...).
Goal is to hide a backdoor in SW while pretending it is a genuine bug.
A detailed explanation on how memory allocation works in Linux Kernel.
On the impossibility to build cryptographically secure solution with backdoor, and on robust client-side monitoring.

Hacking

A tool to analyze image files. Can for instance reveal hidden pixels in files.
Paper on decompiling binaries using neural networks.
A small device to collect WiFi PCAP captures, for latter cracking. Uses aircrack-ng and rockyou dictionary file.
A very clear explanation on how to profile the performance of a game startup sequence, reverse it and patch it. Use Luke Stackwalker for profiling closed source applications. Using IDAPro to disassemble (however speaks of ghidra). Use Process-Dump to dump the content of code being executed, after it has been deobfuscated. Dump some dynamic data from execution using x64dbg. Using minhook to hook a DLL in a code. The slow-down was due to parsing JSON with sscanf(p, "%d") that happens to call strlen a lot repeatedly, and using a useless hash table (useless because no duplicates).
An interesting post on how to reverse some binary file, using import zlib in Python.
Binwalk is a fast, easy to use tool for analyzing, reverse engineering, and extracting firmware images.
A curated list of Unix binaries that can be used to bypass local security restrictions in misconfigured systems (eg. by issuing !/bin/sh in pager (less) when doing apt-get changelog apt).
Practice security concepts in the for mof fun-filled games.
A nice write-up on exploiting a double-free bug on ARM (due to weak memory model in ARM, that allows reordering of store, which is not allowed on x86]
Another nice write-up on analyzing Fuchsia, an open-source OS from Google, how to use it, compile it, run it, debug it, fuzz it, exploit it.
Powerful reverse tool, all in terminal. See Radare2.
A CTF about microcorruption using debugger. Example of writeup here.
pwn.college is an education platform for students (and other interested parties) to learn about, and practice, core cybersecurity concepts in a hands-on fashion.

Management

Mission is the boss. Refer to SemCo, a company whose young CEO promoted decentralized and collaborative management.
Trap 1: Mediocrity signals (e.g. promotove innovation but focus on cost down). Trap 2: Strategic ‘attention deficit disorder’. Trap 3: Corporate Keystone Kops. Trap 4: Misbegotten ‘big, hairy, audacious goals’
How to feedback as a manager to a direct. 1. Ask (“Can I give you some feedback?”). 2. State the behavior (“When you X…”) 3. State the impact (“…the result is Y.”) 4. Encourage effective future behavior (“Keep it up!” for positive feedback or “Can you change that?” for negative feedback).
Don't: Don't feedback if you are angry. Don't feedback on the past. Don't feedback if you can't let it go.
... reality is maybe not that simple, HW comments.
Stop arguing about the past! We recommend that you give in when a direct argues or gets defensive. Don’t get drawn into a discussion about what happened. That’s unrelated to the future you want to focus on.
Once you’ve given the feedback and the direct has pushed back, pause, smile, apologize, and walk away. You’ve made your point. Don’t let the direct try to win her argument simply because you’ve shown her the courtesy of letting go.
  • Perform an effort/impact analysis — make a 3x3 matrix 'impact' vs 'difficulty'. Implement easy but strong impact first, and avoid hard with low impact, and do a couple of the middle ones. Very useful for planning.
  • Timebox hard-to-estimate work — for instance, work for a task for two weeks and see how much progress is done. Or allocate a part of worktime on some task (like 1d/wk on PR solving).
  • Write playbooks before automation — that means first write small procedure for humans first, possibly completed with some source code for scripts, etc.
A post about the limit of communication that, despites best effort, people often don't get what you tell them.
A discussion about a technical problem used by Google, using a Trie (a data structure for fast lookup of strings in a dictionary). Interesting problem but most comments on HN are negative. Recommendation is to use a simplified but actual problem that occurs at work, or at the position the interviewee will have.

Life hack

Life hacks, ebooks, resources, learning...
The 10/10/10 rule when taking a decision: what would you think about the outcome in 10 minutes from now, in 10 months from now, in 10 years from now?
Suspension of (value-)judgement, awareness of the mode of thinking...
Keeping one's mouth shut
Tell people what they want to hear and you can be wrong indefinitely without penalty. Most fields have only a few laws. ...
An example of "getting things done", about giving advices.
Impressive list of tools / things to do. Buy your life back.
Detailed post about how to host everything yourself, how to preserve your privacy, quit Google, etc. Very nice write-up.
Another example of high-quality notes by Adam Kelly.
A detailed description of self-hosting various applications, web servers, blogging app... securely and in virtual environment.
An interesting list of applications that can be hosted as docker container (sometimes even on Raspberry Pi). Link to Nginx Proxy Manager, Linkding, proxmox VE.
Another self-hosting example on Pi 4. Using Hamachi to work around dynamic IP address (using DDNS).
An alternative to Todo.txt
A review of various keyboards, and advanced tweaking tips for typing. Nice tips include how to use SAME key for TWO different actions depending on whether it is PRESSED or HOLD (eg. CAPSLOCK key), and also how to teach correct usage of LEFT / RIGHT SHIFT keys.
A free and opensource video conferencing system. Works very well under Firefox (and Chromium). Video, chat, screen sharing... Escape Teams and Zoom ;-)
Some rules about making decision. fast Ffor reversible, as late as possible for irreversible. Late according to STOP, LOP, KNOW.
Note taking app, todo-list with sync (apparently also works with syncthing). HN
When going to a talk, write down at least three things, and scratch one if getting a fourth one. Exchange them between peers.
Interesting things:
  • a definition you want to remember (e.g. "a K3 surface is...")
  • a theorem you want to remember ("the moduli space of polarized K3 surfaces is smooth")
  • a motivating or key example ("a quartic is an example of a K3 surface")
  • a motivating problem ("why are all moduli spaces of polarized K3 surfaces the same dimension?")
  • a question you want to ask the speaker ("why is that hypothesis in your theorem?")
  • a question you want to ask someone else (a definition, motivation, a question about a connection etc.)
  • anything else of a similar flavor: something specific that made you think. Something vague ("I liked the part where she talked about groups") does not count as a "thing".
Ideal: keep battery between 30-80%, and reload as often as possible (4x more energy txfed). For laptop, I guess the tradeoff depends on whether the laptop is often disconnected or not...
  • Some advices on how to write good blog posts, on how to write in general.

Resources

photos
icons and fonts
svg icons
  • Unsplash Beautiful, free images and photos that you can download and use for any project. Better than any royalty free or stock photos.
  • FlatIcon Download Free Vector Icons and Stickers for your projects. Resources made by and for designers. PNG, SVG, EPS, PSD and CSS formats
Books / musics / movies / torrents /
Cliparts

Science & Tech

The most complete and detailed description on how our eyes perceive colors.
Just wow.
A nice dynamic periodic table of elements.
Great video on the cycle of the sun regarding the number of spots and magnetic activity, how it does protect us from galactic radiation, and how it influences on space debris around earth.
Amazing page detailing how lights and shadows work, with interactive models we can play with. More interesting stuff on the archives page. See HN.
From same author, amazing explanations on how cameras and lenses works, with many scientific details on light propagation, etc.
Comes from the definition of distance in the Minkowski spacetime, ds=sqrt((c.dt)^2 - dx^2 - dy^2 - dz^2), where c is the speed of massless particle. ds=0, invariant for all observers, gives that speed c is a constant. If an observer does not move in space coordinates, the speed he computes gives that he's moving at speed c in time. See also HN, also speaking of four-vectors, and in particular the four-velocity, which has always a constant magnitude (equal to the speed of light).
An explanation on quantum physics, trying to debunk confusing myths (in particular confusion between the existence of separate classical world and quantum world).
A nice explanation on why we can't go faster than the speed of light, based on the fact that moving charge sees a magnetic force, whereas a non-moving one doesn't.
A 25-hour course on faster-than-light physics within the context of currently established science.
Entropy S is defined as the measure of the number of possible microscopic arrangements (microstates) Ω of a system that comply with the macroscopic condition of the system (observed macrostate), e.g., temperature, pressure, energy. So entropy is a measure of hidden information. 2nd thermodynamic law states that When a thermally isolated system has passed from one thermodynamically equilibrium state A to another thermodynamically equilibrium state B, increase of its thermodynamic entropy S is greater than or equal to 0., which means that entropy is only well defined in thermodynamical equilibrium. But it emerges naturally from the H-theorem reasoning, stating that A system will spend most of its time in its most probable state, i.e. the ones compatibles with the highest number of possible microstates.
An open-source web app to simulate the reflection and refraction of light. Suitable for education and demonstration. Nicely written.
A detailed explanation on how bicycles work, with many force diagrams, deformation, stabilization. Incredible.
An interesting theorem showing that rotation of an object around its first and third principal axes is stable, while rotation around its second principal axis (or intermediate axis) is not.

Success stories

With good tips about launching new business online.
The success story on how a grad student and his professor worked together to write a 500p text book, and the tools and methodology they used.
Example on how to deploy / develop a successful web application, by one person.
Many short tips on how to build a successful project / how to write README / how to pick the problem to solve / ...
Make a model on how user base evolve, telling that CURR (Current User Retention Rate) had the most important impact; using gamification as base mechanic (leaderboard, streaks); use limited notification...
How someone turned his open source project into a business. See example of licenses, CLA during PR, API key (see also HN comments about sect239k1).

Miscellaneous

A detailed explanation about color harmony, what makes some painting rich in colors...
Tips about creating a custom color palette.
A repository of fonts patched with lots of glyphs (icons). Include patches for Fantasque Sans Mono, Iosevka...
... animated for the internet.
Beautiful animated pages explaining how various things work, like sewing machine, engines, human eye, lcd screen...
Amazing set of interactive pages to learn how synthesizers work.
Example: shop with one cashier, 10 min processing time, 5.8 job/hour will have an average waiting time of 5 hours! This document explains why and tips to improve. And explains why it is very hard to use the last 15% of anything (wait time double at 50% capacity, and double again at 75%, and so on).
A phonic-based reading method, with direct instructions. Much more efficient than whole-word system, at least on kids of all backgrounds [8].
Elegant Python programs to generate 3D objects in SVG.
An alternate floating points representation, claimed to be better than IEEE 754 [9].
On how Netflix and Disney are reproducing the old schema of consolidation that happened before with movie studio, and that we should go again for a split into separate production, distribution, and retailing.
The idea is that there is lot of overlap with previous users. But some concerns on HN.
All tags in the browser are editable with attribute contenteditable="true".
Some insights from someone at Uber who've been building and operating a large distributed system (basically: monitoring not average but 99% percentile, monitor *business* metrics, mitigate first and fix later...)
A mere wrapper around Google, but the only website that returned as 2nd hit the correct song matching paradise "you and me" (ie. Gangsta's Paradise from Coolio).
Article on using statistics in medicine / police investigation. On average, every human has one breast and one testicle! Besides looking at statistical significance, we must also look at the size of the effect (Like save 1 in 130 lives with p=0.001, high significance but risk of adverse side effects may compensate occurence of the wanted effect)
Nice posts about the problem of text rendering and editing issues (style change mid-ligature, emoji, sub-pixel and caching, text animation, caret positioning and movement).
A small but impressive demo in Javascript that renders 3D graphics using text in a terminal.
A piece of Chopin explained by a music conductor. Some important quotes, like "It's one of the characteristics of a leader that he not doubt for one moment the capacity of the people he's leading to realize whatever he's dreamer", "success is measured by the number of shining eyes around you", "I will never says anything that couldn't stand as the last thing I ever say".
Small book on tips on how to better price your products. Clear and concise.
Some ideas on how to apply moderation in forums using hierarchical whitelists, shared between participants.
An interesting approach on how we make sense of the world. First we have first and second order facts (1st = immediately relevant to a narrative, high = influence an opinion about subject). Then we have first and second order thinking (1st = correlations, ie. given a fact what argument can be made via correlation, high = causation, ie why facts emerge). Then we have four options: 1st fact and 1st thinking = Utility, 1st fact and high thinkng = Wisdow, high fact and 1st thinking = manipulation, high fact and high thinking = conspiracy theory.
Excellent write-up detailing how to analyze the network activity of a device using WireShark (no success because of https), then Burp Suite (with custom TLS cert and adding Burp CA cert to PC trusted certificates).
More excellent write-up from the same author:
A discussion on the best pricing scheme for API services, which is usage-based pricing with automatic volume discounts, and why other schemes are bad.
The fastest and best shoelace knot on the planet.
Fun error messages in Haiku.
A new (2010) keyboard layout that shows better stats than Colemak (and much better than Dvorak) when comparing finger movements, and in particular lateral movement. Nice stats.
A thought experiment where a trolley on railway tracks with five people on the rails ahead, and a lever to change the trailway course to another rail where only one person lies.
The imagery of internet criminals: drug-dealers, money-launderers, terrorists, and pedophiles.
Some nice explanations on how rockets and fireworks work.
Banks does not create money, but "IOU" (I Owe You), ie promise that some debt can be redeemed at some given time. Also explain the role of the Central Bank, which allows banks to settle their exchange accounts when money are transfered between accounts from different banks, avoiding the need to send the real cash at each transaction, or even daily. Only the Central Bank can create money.
List of some puzzles, riddles, problems and their solutions. New problems published regularly.
(1) Good writing is clear. Tell it like a story, with characters and actions (verb). Don't use nominalisation too much. (2) Good writing is cohesive. Focus on one concept at a time. (3) Good writing has emphasis. Prefer closing the sentence with the emphasis, rather than in the middle of the sentence. When introducing new technical term, locate them at the end. (4) Good writing is concise. Compress what you mean into the fewest words. Don’t state what your reader can easily refer.
A very interesting and detailed explanation of the network infrastructure behind Teams. Teams mostly rely on MS own private infrastructure, the 2nd biggest in the world.
Many objectives reasons on why Linux is better than Windows.
On the unfair competitive advantages of Apple/Google/... market places.
Also http://zoomquilt2.com/, and http://arkadia.xyz/. Impressive and beautiful journey in the zoom world.
An amazing and hypnotising visualisation of 16 sorting algorithms, where distance to center indicates how far from being sorted each element is, with color and sound. See also https://nullprogram.com/blog/2017/11/03/.
On distributed systems conference, there is always talk about Byzantine fault tolerance, that are saddening, because mostly irrelevant.
A ruling about bakery that didn't want to produce a cake with a particular message (pro-gay marriage message). Bakery was finally found right because it was not discriminatory to the customer himself. Issue isn't that the customer was gay (bakery did serve him already in the past), the issue was the bakers didn't want to make this particular cake for anybody.
  • Illusions:
Interesting illusion. Note there was also another site with lot of categorized illusions, also found via HN.
More incredible illusions. See also impossible objects, [11], [12].
A podcast containing (at the beginning) a short noise audio snippet, then later a cue telling how to make sense of the noise. Once the cue is heard, the brain will always make sense of that noise snippet forever. This is an illustration of confirmation bias, and the podcast also covers the advantage of it from an evolution perspective.
An example on how to use qemu / zfs.
A monospace font for developers that looks cool, but costs >50€.
A monospace font a bit like MonoLisa, and free ;-)
To compare various programming fonts...
Discussion on the puzzle "I don't know the numbers" [13], and several implementations, and links to other puzzles (including the famous blue eyes puzzle a funny one).
Another puzzle with rational numbers.
A discussion on common knowledge
Interesting financial analysis of the profitability of bitcoin miners, linked to fact that mining equipment are depraciated using a straightline when actually they should be depraciated as a curve. Lack of profitability is currently hidden because BC are also gaining value over time, but in truth investing directly in BC would have been equally if not more profitable.
8 things that are better than free, than cannot be freely copied: (trust), immediacy, personalization, interpretation (like support, docs), authenticity, accessibility, embodiment, patronage, findability.
Discussion about the legality of the Internet Archive, and the action of publishers that try to destroy it. Copyright law explicitly gives the rights to libraries to make copies, and book scanning itself is fair use for the libraries.
A method to find the best anagrams in English. The best is actually 14 cinematographer megachiropteran.
An explanation of the community notes algorithm used on Twitter (X) to display corrective notes. use machine-learning (gradient descend) to modelize a user/note matrix, and define the note usefulness, versus possible polarization of either notes or users (trying to be as neutral as possible). The algorithm is open-source.
The world of stereograms, ie hidden 3D images.
Story and tips to counter debt collector bad practices. Make sure your rights are respected (no legal threats, etc). Ask to produce the contract associated with the debt (most don't have, only a CSV file). If called in court, always show up (and ask then to get a copy of the contract).
A story on the fall of OKCupid and the reason behind it. Company focus on increasing the DAU (Daily Active Users), and as a result focus more on the wishes of the new users than on existing ones.
A set of recommendations when using numbers in content (to made it easier to the reader). Use 1st, 2nd, 3rd.... Use numbers 1, 2, 3... instead of words (except common sense situation like the last one, another one...).
Some explanations on how to build autostereogram images. See also https://github.com/Atrix256/Autostereogram.
A detailed list of rules, advises in online community, covering abusive behaviour like harassment, manipulation, etc.
An amazing design of a monorail train that balances itself with two gyros.

Climate Change

A very detailed page, with lots of infographics.
A nice write-up on how birds / dinosaurs got their lung, and on the origin of fossil fuel, and the impact of current climate change.

Greta Thunberg

Impressive talk from 16-year old Greta Thunberg on the urge to act now to face the climate crisis.
Greta receiving a prize and calling celebrities for action.
Another powerful speech by Greta Thunberg. In presence of UN Secretary General António Guterres, Arnold Schwarzenegger and a great number of heads of states.
Interview of Greta Thunberg by Democracy Now! during the 24th U.N. climate summit, explaining a bit how she came aware of climate changes issue. We are also joined by her father, Svante Thunberg, a Swedish actor.
Speech of Greta at the UN summit 2019.
Greta urging MEPs to “start panicking about climate change” rather than “waste time arguing about Brexit”.
Another great interview with Greta and how she deals with criticisms.
Great speech, also about the opposition Greta's movement is getting by some people not liking her.
Greta at EU saying EU ‘sweeping their mess under the carpet for our generation to clean up. [...] If you say we are wasting valuable lesson time, let me remind you, our political leaders have wasted decades through denial and inaction and since our time is running out we have started to take action.’
News on The Guardian, where Greta also answers a few questions.
An interview describing the life of Greta, how she started the movement...
20190927 - Summary of various speeches Greta made.
Greta joining strike in Canada, and answering a few questions from the media.
Interview in New York by Scandinavian talk show Skavlan, covering her last speech at U.N, how she lives...
Interview follow up with Michael Moore.
16 year old climate activist Greta Thunberg explains why her Asperger's is helpful in her fight to save the world.
Greta's speech during the global climate strike in New York, Sep. 20th 2019.
Greta's speech during the global climate strike in Montreal, Sep. 27th 2019.
This is the year 2019. This is not the time and place for dreams. This is the time to wake up' — Here's every statement Greta Thunberg made during Climate Week.
Speech from Greta at Davos (January 2019)
Short interview of Greta about the movement started (March 2019).
Interview with Greta and climate scientist, by Democracy Now! (December 2018)
Millions around the world took part in a global climate strike, all following the lead of 16-year-old Greta Thunberg. The Swedish teenager spoke to Kelly Cobiella before she sailed to New York City. “When a child says, ‘You are stealing my future,’ then people feel very guilty,” Thunberg said.
May 2019 - Upon realizing her generation won’t have a future unless the world’s politicians act now on climate change, then 15-year-old Greta Thunberg skipped school in August 2018 to protest outside the Swedish parliament. What started as a one person strike soon gained global momentum.
Dec 2018 - Fifteen-year-old activist Greta Thunberg talks to CNN's Fareed Zakaria about her speech at the UN climate change conference, her protest at the Swedish parliament, and what she is planning to do going forward.
Apr 2019 - Yet another (short) documentary on Greta Thunberg.
Feb 2019 - Speech from Greta at event "Civil Society for rEUnaissance" on 21/02/2019.
Sep 2019 - There is a natural solution to the climate breakdown: protecting forests. Climate activist Greta Thunberg and writer and climate activist George Monbiot explain.
Apr 2019 - The 16-year-old Swedish climate activist Greta Thunberg and Anna Taylor from the UK Student Climate Network join the Green party MP, Caroline Lucas, and the Guardian's Zoe Williams to discuss how to address the climate crisis and where to go from here for Guardian Live
Mar 5, 2019 - Interview of Greta by Luca Jahier, President of the European Economic and Social Committee.
Sep 2019 - Greta Thunberg est devenue, en très peu de temps, un symbole de la lutte contre les changements climatiques. Comment est-elle perçue chez elle, en Suède? Que pensent ses compatriotes de cette ascension extraordinaire? Le reportage de notre envoyée spéciale Alexandra Szacka.
Oct 2019 - Global climate activist Greta Thunberg spoke during the strike for a "Town-Gown Climate Accord" hosted by the Iowa City Climate Strikers on Friday, Oct. 4, 2019.
Sep 14, 2019 - Interview with Greta, Although more Americans than ever are worried about climate change, less than 40 percent expect to make “major sacrifices” to tackle the problem. But according to Greta Thunberg, a Swedish teenager and climate activist, drastic action is exactly what's needed to address the problem.
Aug 29, 2019 - Following weeks of anticipation, Swedish climate justice activist Greta Thunberg arrived on the shores of Lower Manhattan Wednesday afternoon after a 15-day voyage across the Atlantic Ocean in an emissions-free yacht. She was welcomed on land by hundreds of supporters at the North Cove.
Sep 20, 2019 - Interview of Greta by USA TODAY.
Sep 20, 2019 - Greta's interview at Good Morning America, “I think this is something very big that is growing, and it will not stop.” (interview).
Apr 24, 2019 - Speech from Greta at UK parliament (bad audio quality however).
Feb 15, 2019 - Nice original interview from GMB, with original photos. Some students in the UK are set to miss school today as they strike in a fight against climate change. The protest is inspired by 16-year-old Swedish schoolgirl, Greta Thunberg, who speaks to GMB about the story behind her activism.
Sep 13, 2018 - Greta announcing that after 3 weeks striking, they'll keep striking every friday in front of the Swedish parliament.
Feb 18, 2019 - Via a live video link from Stockholm to Melbourne, Greta Thunberg was the opening speaker at a sold-out Great Debate event at the National Sustainable Living Festival in Australia on 8 February 2019.
feb 22, 2019 - Another version of Greta's speech at EU. With some nice intro.
Apr 22, 2019 - (Greta's speech in UK) Greta Thunberg, 16, was greeted with chants of "we love you" as she took to the stage in front of thousands of people at the rally in Marble Arch.
Apr 22, 2019 - Greta's interview before her speech in front of the Marble Arch in UK, recommending a book to read, James Hansen's Storms of my Grandchildren (interviewer suggested Joanna Macy's Active Hope).
Apr 23, 2019 - Nice excerpts from Greta's speeches all around the world. Greta Thunberg is a 16 year old Swedish climate activist who is a role model for worldwide environmental activism.
Jun 23, 2019 - Another brilliant speech from Greta at a conference.
Greta's full speech at the COP24 in Katowice 2018.
Sep 14, 2018 - Probably the first interview of Greta when she started her movement in front of the Swedish parliament.
Sep 20, 2019 - Greta's interview before the strike in New York.
Sep 21, 2019 - part of Greta's speech during New York strike, seen from someone in the crowd, including cut scene due to situation in the crowd due to the hot temperature that day.
Sep 16, 2019 - Swedish teen climate activist Greta Thunberg receives the Amnesty International Ambassador of Conscience award at George Washington University in Washington, D.C.
Jun 29, 2019 - Original interview with Greta Thunberg on how she started the movement, how it was at the beginning.
Sep 13, 2018 - Clip showing Greta the last day of her three week strike, with lot of people. I will go on with the school strike. Every Friday as from now I will sit outside the Swedish parliament until Sweden is in line with the Paris agreement.
Jan 26, 2019 - Press interview after Greta's speech at Davos.
Feb 21, 2019 - Press conference with all the young activists from Belgium, Germany... (38 min).
Oct 25, 2019 - Greta's speech in Vancouver friday strike.

On Greta Thunberg:

Secretary Hillary Clinton saying Greta Thunberg is one of the gutsy women who impressed her the most.
Oct 8th, 2019 - Awesome remix of Greta's speech at UN.
Dec 14th, 2019 - Containing video of Greta calling for strike after her speech at COP24, and students striking in Poland, singing Michael Jackson's song "Earth" - Great video on Gret'a https://democracynow.org - Fifteen-year-old Swedish climate activist Greta Thunberg has called for a global climate strike today to protest inaction at the U.N. climate summit. Greta made international headlines after she refused to go to school in August and began a School Strike for Climate. Greta made the call for today’s strike in a video posted on Twitter.

On Extinction Rebellion:

Presentation of the climate change crisis and the Extinction Rebellion movement.

Music ft Greta Thunberg:

Courses

Learn jQuery. Recommended here.
Teach you how to manage state in your React application with Redux. Recommended here as a good introduction to functional programming.
A detailed course on how C is translated to assembly.
A set of interactive course on various subjects.
Several books on ray-tracing. For when I'll be retired, or dead.
Course on category theory, mathematical tool to organize key abstractions, using Haskell.
Harmony, when waves are simple fractions of each other.
Pentatonic scale, five note scale that always sound nice.
Chromatic scale, 12 note scale, richer, but not always sounding nice. Note that the frequency of starting note does not matter, and that all melody can be shifted up or down on a scale also.
Chords (major, minor, diminished), 3 notes that play together nicely.
Keys, group of notes (seven in the twelve) used in a song and that play nice. Turns out that the C major key are simply the 7 white keys on a piano.
... premium course available.
An impressive course from MIT Open Course. Must see.
Set of tensor puzzles, meant to learn the tensor language as used in PyTorch / Numpy.

Talks

Talk from Joe Armstrong, co-author of Erlang language, about the complexity of SW and how to fix it.