How to decide if an ORM is good? Updated 2025-07-16
How to decide if an ORM is decent? Just try to replicate every SQL query from nodejs/sequelize/raw/many_to_many.js on PostgreSQL and SQLite.
There is only a very finite number of possible reasonable queries on a two table many to many relationship with a join table. A decent ORM has to be able to do them all.
If it can do all those queries, then the ORM can actually do a good subset of SQL and is decent. If not, it can't, and this will make you suffer. E.g. Sequelize v5 is such an ORM that makes you suffer.
The next thing to check are transactions.
Basically, all of those come up if you try to implement a blog hello world world such as gothinkster/realworld correctly, i.e. without unnecessary inefficiencies due to your ORM on top of underlying SQL, and dealing with concurrency.
From the abstract:
Much money, his student went on to say, is spent by various Governments in attempting to discover those people whose thorough education may be expected to bring in a return of value to the State, and the question how best to discover latent genius is an eminently practical one. After cogitation, Prof. Ostwald came to the conclusion that it is those students who cannot be kept on the rails - that is, who are not contented with methodical teaching - who have within them the seeds of genius
Ciro Santilli couldn't agree more... notably students must have a flexible choice of what to learn.
How to exit from repl in rshell? Updated 2025-07-16
Ctrl + X. Documented by running help repl from the main shell.
Because it is considered the less interesting step, and because it takes quite some time, this step was done by the event organizers between the two event days, so participants did not get to take many photos.
PCR protocols are very standard it seems, all that biologists need to know to reproduce is the time and temperature of each step.
We did 35 cycles of:
Figure 1.
Marshal Scientific MJ Research PTC-200 Thermal Cycler.
Source.
We added PCR primers for regions that surround the 16S DNA. The primers are just bought from a vendor, and we used well known regions are called 27F and 1492R. Here is a paper that analyzes other choices: academic.oup.com/femsle/article/221/2/299/630719 (archive) "Evaluation of primers and PCR conditions for the analysis of 16S rRNA genes from a natural environment" by Yuichi Hongoh, Hiroe Yuzawa, Moriya Ohkuma, Toshiaki Kudo (2003)
One cool thing about the PCR is that we can also add a known barcode at the end of each primer as shown at Code 1. "PCR diagram".
This means that we bought a few different versions of our 27F/1492R primers, each with a different small DNA tag attached directly to them in addition to the matching sequence.
This way, we were able to:
  • use a different barcode for samples collected from different locations. This means we
    • did PCR separately for each one of them
    • for each PCR run, used a different set of primers, each with a different tag
    • the primer is still able to attach, and then the tag just gets amplified with the rest of everything!
  • sequence them all in one go
  • then just from the sequencing output the barcode to determine where each sequence came from!
Input: Bacterial DNA (a little bit)
... --- 27S --- 16S --- 1492R --- ...

|||
|||
vvv

Output: PCR output (a lot of)
Barcode --- 27S --- 16S --- 1492R
Code 1.
PCR diagram
.
Finally, after purification, we used the Qiagen QIAquick PCR Purification Kit protocol to purify the generated from unwanted PCR byproducts.
Once you have crated something awesome, you have to advertise it, otherwise no one will ever find it.
This means:
  • whenever you walk into a classroom, give students a link to the material
    Then ask them if they want to talk about anything.
    Then leave the classroom and go produce more good material instead of wasting your time there :-)
  • whenever someone asks as question on an online forum, answer it, and link to the section of your material that also answers that question.
    The material will answer many of their future questions.
  • after you've done something awesome, Google possible relevant keywords that should hit it.
    This will lead you to other websites that talk about the same content.
    Then, leave comments on those pages linking to your stuff, or email the authors of those pages.
    It is borderline spam, but if the subject is closely related, it is a win for everyone.
Eventually, people will find you on the front page of Google searches, and then you will know that you've truly made something useful.
There is only one thing that can truly motivate you to make good materials: becoming famous.
Strive for that. Make good materials. Publish them. Get good reviews. Loop.
This generates a virtuous loop, which makes you produce better and better material.
As you would expect, not much secret here, we just dumped a 1 liter glass bottle with a rope attached around the neck in a few different locations of the river, and pulled it out with the rope.
And, in the name of science, we even wore gloves to not contaminate the samples!
Figure 1.
Swans swimming in the river when during sample collection
. Source. Swam poo bacteria?
Figure 2.
Tying rope to bootle for river water sample collection
. Source.
Figure 3.
Dumping the bottle into the river to collect the water sample
. Source.
Figure 4.
Measuring the river water sample temperature with a mercury thermometer
. Source.
Figure 5.
Measuring the river water sample pH with a pH strip
. Source. The strip is compared with the color of a mobile app that gives the pH for a given strip color.
Figure 6.
Noting sample collection location on the water bottle
. Source.
Video 1.
Dumping the bottle into the river to collect the water sample
. Source. That was fun.
With all this ready, we opened the Nanopore flow cell, which is the 500 dollar consumable piece that goes in the sequencer.
We then had to pipette the final golden Eppendorf into the flow cell. My anxiety levels were going through the roof: Figure 4. "Oxford nanopore MinION flow cell pipette loading.".
Figure 1.
Oxford nanopore MinION flow cell package.
Source.
Figure 2.
Oxford nanopore MinION flow cell front.
Source.
Figure 3.
Oxford nanopore MinION flow cell back.
Source.
Figure 4.
Oxford nanopore MinION flow cell pipette loading.
Source.
At this point bio people start telling lab horror stories of expensive solutions being spilled and people having to recover them from fridge walls, or of how people threw away golden Eppendorfs and had to pick them out of trash bins with hundreds of others looking exactly the same etc. (but also how some discoveries were made like this). This reminded Ciro of: youtu.be/89UNPdNtOoE?t=919 Alfred Maddock's plutonium spill horror story.
Luckily this time, it worked out!
We then just had to connect the MinION to the computer, and wait for 2 days.
During this time, the DNA would be sucked through the pores.
As can be seen from Video 1. "Oxford Nanopore MinION software channels pannel on Mac." the software tells us which pores are still working.
Figure 5.
Oxford Nanopore MinION connected to a Mac via USB.
Source.
Video 1.
Oxford Nanopore MinION software channels pannel on Mac.
Source.
Pores go bad sooner or later randomly, until there are none left, at which point we can stop the process and throw the flow cell away.
48 hours was expected to be a reasonable time until all pores went bad, and so we called it a day, and waited for an email from the PuntSeq team telling us how things went.
We reached a yield of 16 billion base pairs out of the 30Gbp nominal maximum, which the bio people said was not bad.
How to teach / Give examples Updated 2025-07-16
Keep the example/theory ratio high, very, very high.
For natural sciences, add as many reproducible experiment images/videos/descriptions as you can.
Tell students to:
  • make suggestions to the course material themselves, since you have used text and published your source.Review their suggestions, and accept the best ones.
  • answer the questions of other students on your online forum. Let them work instead of you.
Praise those that do this very highly, and give them better grades if you have that superpower.
This is part of a larger concept Ciro Santilli holds dear: don't just consume, but also produce.
Whatever you do, even if it is playing video games: if you manage to produce related content that will interest other people, and possibly allow you to get paid, it will much much fun to do that thing.
How to teach / Use the Internet Updated 2025-07-16
If you give a course in a classroom, you reach 10 people (the others were sleeping).
If you make a perfect course online, and answer questions online, you reach 10 thousand.
Not doing things online is a waste of time.
You are a highly trained professional, and your time is extremely valuable.
Even if it takes twice as long to create the material than giving course, you are still more efficient by a factor of 500.
It is as if there were 500 little copies of you working full time. It is a superpower.
Ciro Santilli is actively looking for donations and contracts so he can continue to work full time on OurBigBook.com sustainably, and develop free hardcore university-level STEM education for all ages!
For 300k USD I will quit my job or not get a new job and work on OurBigBook full time for a second year to try and kickstart The Higher Education Revolution. Status: ~44k / 300k USD. At 2M USD I retire and work on open STEM forever.
I first quit my job 1st June 2024 to work on the project for 1 year after I reached my initial 100k goal mostly via a 1000 Monero donation. In this first year I improved project tech, but didn't go and solve university courses to create super targeted content, and didn't obtain a single contributing user except myself, see a summary at Section "OurBigBook Project Update March 2025".
For a followup, it would be an interesting experiment to spend on year full time solving as many courses as I can from a world class university in the city where I live in the UK, and adding that as content to the platform to see if that would attract interest, and reaching out directly to course takers at their university environment to try and help them. I intended to do that in year one but my got distracted by tech. It is quite possible that no one has ever done that before in history: a highly motivated technical person with the time and opportunity to do one single thing: help top university students learn their STEM courses better and have more fun doing so. I have in particular identified one course where this would be particularly feasible: the mathematics course, given that much of their course materials, and also their building are quite open. I do sometimes wonder if doing this would be just a waste of my life. But part of me tells me it could generate big interest and is worth a try. It would also be fun for you to watch me continue to commit career seppuku.
For a second follow up year, I increased my requirement to 300k USD to give me more peace of mind. So the total donation so far is 244k, and if I reach a total of 300k USD, then I'll work on the project for a second year.
At 2M USD I retire and work on open STEM projects forever. At these timelines, I can't guarantee it will be specifically on education technology specifically all the way, but I guarantee that whatever it is it will be open and extremely well explained as usual.
It's necessary to be slightly underemployed if you are to do something significant - James Watson
Total donations to date ~244k USD. Donation breakdown:
More details: Section "Accounting method"
How to give:
And if you have a different preferred payment mechanism not listed above, please contact Ciro, and he will set it up.
Ciro's current ambitions require him to remain in developed countries, because Ciro wants to document advanced science and technology by liaising with top universities, and there is not nearly as much high technology in poor countries. Remaining in developed countries is also a required due to family reasons.
Note to potential anonymous crypto donors: I live in the UK, and after some messy back and forth that included freezing my account at one point, Barclays finally decided that they do not allow me to receive anonymous donations. And I'm pretty sure that the same would happen on any other British bank sooner or later. Therefore, while I continue to accept anonymous donations, they will not count towards my "if I get X I do Y"-type donation goals, since I can't reliably spend that money. If you want to donate in crypto, and clearly give me your real identity and an explanation of how you got the money, then that is fine, it can count. Just be warned that I will need to give that information to my bank and clear it with them beforehand, and if they are still not happy with it, I'll just give it all back. Your identity does not have to be publicly disclosed, only the dates and amounts. But my bank has to know.
If you would like public acknowledgement for your support, Ciro will very gladly give it, just let Ciro know how you'd prefer it. Due to Ciro Santilli's campaign for freedom of speech in China, many supporters have chosen to be anonymous, and that is totally fine, not everyone is interested in politics, or has a situation where going public is acceptable, so we don't have a standard setup yet, let's build it together. A acknowledgement section at the bottom of this page would be a minimum, but I for larger donations we could add a your advertisement in a locations such as:
100k USD/year is a semi arbitrary amount that sounds nice. My last day job total compensation as of 2024 was about 150k USD/year.
Video 1.
Intro to the OurBigBook Project
. Source.
Video 2.
OpenGL GPU GLSL fragment shader real time v4l2 Linux webcam computer vision box blur vs CPU
. Source.
Figure 1.
Ciro Santilli playing with a pipette at the University of Cambridge circa 2017
. Although totally disqualified for it, Ciro would really like to understand and explain cool scientific experiments in insane detail much as he does with computer software, related:Maybe if he ever gets enough credibility, such opportunities would actually materialize. It could be a bit like Periodic Videos, but for molecular biology and physics, and backed by OurBigBook text/tree with minimal openly licensed videos. The fact that such opportunities are essentially impossible outside of the boredom of the university system is something we should really change about education.
Definition, anywhere on article, likely ideally as the first usage:
<ref name="myname">{{cite web ...}}</ref>
And then you can use it later on as:
<ref name="myname" />
which automatically expands the exact same thing, or using the shortcut:
{{r|myname}}
To cite multiple pages of a book: en.wikipedia.org/wiki/Wikipedia:Citing_sources#Citing_multiple_pages_of_the_same_source, the best method is to define and use the reference without adding the p or location in cite as:
<ref name="googleStory">{{cite book |title=The Google Story}}</ref>{{rp|p=123}}
Do not set the page in cite, otherwise it shows up on the references. Instead we use the {{rp}} template. And then use the reference with the {{r}} template as:
{{r|googleStory|p=456}}
or for multiple pages:
{{r|googleStory|pp=123, 156-158}}
Circa 2023, the feed is an unbearable list of stupid suggestions, never-ending idiotic memes, and you just end up missing posts you actually care about from people you actually follow.

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