csvkit Updated 2025-07-16
Lots of features, but slow because written in Python. A faster version may be csvtools. Also some annoyances like obtuse header handing and missing features like grep + cut in one go: csvgrep and select column in csvkit.
csvtools Updated 2025-07-16
A fast version of a somewhat subset of csvkit, written in C.
Build failed with undefined reference to pcre_config on Ubuntu 23.04: github.com/DavyLandman/csvtools/issues/18
Unfortunately it is lacking some basic options, like optional header + selecting column by index on csvgrep (though csvcut has it). The project seems kind of dead.
Also unclear if it allows to filter + print only selected columns.
Cuisine Updated 2025-07-16
Cultured food Updated 2025-07-16
Cultured meat Updated 2025-07-16
This is something worth investigating!
Video 1.
Inside the Quest to Make Lab Grown Meat by WIRED (2018)
Source.
Interviews with a few startups in the area, most of the time with Eat Just.
youtu.be/QO9SS1NS6MM?t=217 taught Ciro Santilli something he really appreciated: uncanny valley.
Curie temperature Updated 2025-07-16
Figure 1.
Variation of saturation magnetisation with temperature for Nickel
. Source. This graph shows what happens when you approach the Curie temperature from below.
CuriousMarc Updated 2025-07-16
Mostly on vintage electronics. Lots of focus on microwave, which he has worked a lot with.
Has been going wild with restoration and reverse engineering of the Apollo moon mission.
Video 1.
Inside the WILD Lab of CuriousMarc by Keysight Labs (2022)
Source.
Cybercrime Updated 2025-07-16
Cyborg beetle Updated 2025-07-16
Video 1.
Singapore's Remote-Controlled Cyborg Insects by Vice Media (2018)
Source.
By Dr. Hirotaka Sato from Nanyang Technological University Singapore.
It is a bit rough, but kind of works. Flight control is only left or right though, they don't stimulate the wings directly.
Like all poor countries, Brazil's lack of money and scientific culture severely limit its ability to make technological and scientific advances.
While this sounds obvious, Ciro Santilli has felt it first hand since he moved from Brazil to Europe, and it is just shocking.
In the city of Santos for example, despite being a dream place from the natural point of view, it would be completely impossible to achieve any deep tech technical advance that impacts the world. In Europe however, there are several several places where this can happen.
Anywhere north, including NE and NW: fenlands, i.e. marshes. Quite a few quarries as well. Extremely flat, very uniform, towns often have to be on top of small hills to escape the incessant flooding. Norfolk Coast AONB is beautiful if you take a train ride first, the beaches are very wide and many of them have few people if you avoid a few very busy spots.
East and SE: rolling hills towards Suffolk and the coast. Beautiful county, both Dedham Vale AONB and Suffolk Coast AONB.
South: first one of the hilliest nearby areas around Elmdon and Arkesden, then gently going down to the lush Lee River valley.
Southwest: larger and larger cities as you move towards London. From a train starting point, you can reach the Northen Chilterns, for some serious hills.
West: mostly flat farmland until you hit the River Great Ousse.
WhatsApp Updated 2025-07-16
Video 1.
WhatsApp founder Jan Koum talks about their Journey by Roots (2017)
Source. Good talk, explains how everything happened in the perfect location at the perfect time: unemployed people who knew how to code, bought an iPhone, the next big platform, at its very beginning, they had just release the required push notifications API, and he travelled a lot and knew how much SMS sucked, especially international.
Software with bad user interface Updated 2025-07-16
It is hard to pinpoint why, but the following useful software just feel bad for some reason:
Stockfish CLI Updated 2025-10-14
Most of what follows is part of the Universal Chess Interface. Tested on Ubuntu 22.10, Stockfish 14.1.
After starting stockfish on the command line, d (presumably display) contains:
 +---+---+---+---+---+---+---+---+
 | r | n | b | q | k | b | n | r | 8
 +---+---+---+---+---+---+---+---+
 | p | p | p | p | p | p | p | p | 7
 +---+---+---+---+---+---+---+---+
 |   |   |   |   |   |   |   |   | 6
 +---+---+---+---+---+---+---+---+
 |   |   |   |   |   |   |   |   | 5
 +---+---+---+---+---+---+---+---+
 |   |   |   |   |   |   |   |   | 4
 +---+---+---+---+---+---+---+---+
 |   |   |   |   |   |   |   |   | 3
 +---+---+---+---+---+---+---+---+
 | P | P | P | P | P | P | P | P | 2
 +---+---+---+---+---+---+---+---+
 | R | N | B | Q | K | B | N | R | 1
 +---+---+---+---+---+---+---+---+
   a   b   c   d   e   f   g   h

Fen: rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1
Key: 8F8F01D4562F59FB
Sweet ASCII art. where:
Move white king's pawn from e2 to e4:
position startpos moves e2e4
Then display again:
d
gives:
 +---+---+---+---+---+---+---+---+
 | r | n | b | q | k | b | n | r | 8
 +---+---+---+---+---+---+---+---+
 | p | p | p | p | p | p | p | p | 7
 +---+---+---+---+---+---+---+---+
 |   |   |   |   |   |   |   |   | 6
 +---+---+---+---+---+---+---+---+
 |   |   |   |   |   |   |   |   | 5
 +---+---+---+---+---+---+---+---+
 |   |   |   |   | P |   |   |   | 4
 +---+---+---+---+---+---+---+---+
 |   |   |   |   |   |   |   |   | 3
 +---+---+---+---+---+---+---+---+
 | P | P | P | P |   | P | P | P | 2
 +---+---+---+---+---+---+---+---+
 | R | N | B | Q | K | B | N | R | 1
 +---+---+---+---+---+---+---+---+
   a   b   c   d   e   f   g   h

Fen: rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBNR b KQkq - 0 1
Key: B46022469E3DD31B
so we see that the pawn moved.
Now let's make Stockfish think for one second what is the next best move for black:
go movetime 1000
gives as the last line:
bestmove c7c5 ponder g1f3
TODO:
  • what is ponder? Something to do with thinking on the opponent's turn: permanent brain.
  • understand the previous lines
To make the move it as suggested for black, we have to either repeat the entire sequence of movements:
position startpos moves e2e4 c7c5
d:
 +---+---+---+---+---+---+---+---+
 | r | n | b | q | k | b | n | r | 8
 +---+---+---+---+---+---+---+---+
 | p | p |   | p | p | p | p | p | 7
 +---+---+---+---+---+---+---+---+
 |   |   |   |   |   |   |   |   | 6
 +---+---+---+---+---+---+---+---+
 |   |   | p |   |   |   |   |   | 5
 +---+---+---+---+---+---+---+---+
 |   |   |   |   | P |   |   |   | 4
 +---+---+---+---+---+---+---+---+
 |   |   |   |   |   |   |   |   | 3
 +---+---+---+---+---+---+---+---+
 | P | P | P | P |   | P | P | P | 2
 +---+---+---+---+---+---+---+---+
 | R | N | B | Q | K | B | N | R | 1
 +---+---+---+---+---+---+---+---+
   a   b   c   d   e   f   g   h

Fen: rnbqkbnr/pp1ppppp/8/2p5/4P3/8/PPPP1PPP/RNBQKBNR w KQkq - 0 2
Key: 4CA78BCE9C2980B0
or alternatively we could also use the previous FEN notation as a starting point;
position fen rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBNR b KQkq - 0 1 moves c7c5
Note how the Universal Chess Interface interface is very simple: we just load a state and then decide what to do next for that one state. The engine holds only one and exactly one state at a time, and you can't even modify it differentially without loading new one from scratch.
Let's move white again with our brain with either:
position startpos moves e2e4 c7c5 d2d3
position fen rnbqkbnr/pp1ppppp/8/2p5/4P3/8/PPPP1PPP/RNBQKBNR w KQkq - 0 2 moves d2d3
Set a specific position from fen:
position fen rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBNR b KQkq - 0 1
bit gold Updated 2025-07-16

Unlisted articles are being shown, click here to show only listed articles.