Not everything is perfect.
One big problem of many big open source projects is that they are contributed to by separate selfish organizations, that have private information. Then what happens is that:
- people implement the same thing twice, or one change makes the other completely unmergeable
- you get bugs but can't share your closed source test cases, and then you can't automate tests for them, or clearly demonstrate the problem
- other contributors don't see your full semi secret important motivation, and may either nitpick too much or take too long to review your stuff
Another common difficulty is that open source maintainers may simply not care enough about their own project (maybe they did in the past but lost interest) to review external patches by people they don't know.
This is understandable: a new patch, is a new risk of things breaking.
Therefore, if you ever submit patches and they get ignore, don't be too sad. It just comes down to a question of maintenance cost, and means that you will waste some extra time on the next rebase. You just have to decide your goals and be cold about it:
- are you doing the right thing and going for a specific goal backward design? Then just fork, run as fast as possible towards a minimum viable product, and if you start to feel that rebase is costing you a lot, or feel you could get some open source fame for cheap, open reviews and see what upstream says. If they ignore you, politely tell yourself in your mind silently "fuck them", and carry on with the MVP
- otherwise, e.g. you just want to randomly help out, you have to ask them before doing anything big "how can I be of help". If I propose a patch for this issue, do you promise to review it?
Writing documentation in an open source project in which you don't have immediate push rights is another major pain due to code reviews. Code code reviews tend to be much less subjective, because if you do something wrong, stuff crashes, runs slower, or you need more lines of code to reach the same goal. There are tradeoffs, but in a limited number. Documentation code reviews on the other hand, are an open invitation to infinite bike-shedding, since you can't "run" documentation through a standardized brain model. Much better is for one good documenter person to just make one cohesive Stack Overflow post, and ping others with more knowledge to review details or add any missing pieces :-)
- HyperCard: we are kind of a "multiuser" version of HyperCard, trying to tie up cards made by different users. It is worth noting that HyperCard was one of the inspirations for WikiWikiWeb, which then inspired Wikipedia
- Semantic Web
- NLab
- physicstravelguide.com/ Nice manifesto: physicstravelguide.com/about by Jakob Schwichtenberg.
- OpenStax
- www.ft.com/content/5515ec3e-0040-4d90-85a9-df19d6e3ebd2 (archive) Twilio’s Jeff Lawson: an evangelist for software developersYou can never be first. But you can have the correct business model. That company's website must have gone into IP Purgatory, and could never be released as an open source website.As a student at the University of Michigan, he started a company that made lecture notes available free online, drawing a large audience of Midwestern college students and, soon enough, advertisers. At the height of the dotcom bubble, he dropped out of college, raised $10m from the venture firm Venrock and moved the company to Silicon Valley.His start-up drew interest from an acquirer that was planning to go public early in 2000. They closed the acquisition but missed their IPO window as the market plunged, and by August the company had filed for bankruptcy. Stock that Lawson and investors in his start-up received from the sale became worthless.The website was called stubhub.com/, as of 2021 the domain had been sold to an unrelated website.He might actually be interested in donating to OurBigBook.com if it move forward now that he's a billionaire.
- Knol: basically the exact same thing by Google but 14 years earlier and declared a failure. Quite ominous:
Any contributor could create and own new Knol articles, and there could be multiple articles on the same topic with each written by a different author.
- leanpub: similar goals, markdown-based, but the usual "you own your book copyright and you are trying to sell your book" approach
- nature Scitable
OK, just going random now:
Publishes through the Fermilab YouTube channel under the playlist "Fermilab - Videos by Don Lincoln"
Some insights, but too much on the popular science side of things.
Section type:
sh_type == SHT_SYMTAB
.Common name: "symbol table".
First the we note that:
sh_link
=5
sh_info
=6
For
SHT_SYMTAB
sections, those numbers mean that:- strings that give symbol names are in section 5,
.strtab
- the relocation data is in section 6,
.rela.text
A good high level tool to disassemble that section is:which gives:
nm hello_world.o
0000000000000000 T _start
0000000000000000 d hello_world
000000000000000d a hello_world_len
This is however a high level view that omits some types of symbols and in which the symbol types . A more detailed disassembly can be obtained with:which gives:
readelf -s hello_world.o
Symbol table '.symtab' contains 7 entries:
Num: Value Size Type Bind Vis Ndx Name
0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND
1: 0000000000000000 0 FILE LOCAL DEFAULT ABS hello_world.asm
2: 0000000000000000 0 SECTION LOCAL DEFAULT 1
3: 0000000000000000 0 SECTION LOCAL DEFAULT 2
4: 0000000000000000 0 NOTYPE LOCAL DEFAULT 1 hello_world
5: 000000000000000d 0 NOTYPE LOCAL DEFAULT ABS hello_world_len
6: 0000000000000000 0 NOTYPE GLOBAL DEFAULT 2 _start
The binary format of the table is documented at www.sco.com/developers/gabi/2003-12-17/ch4.symtab.html
The data is:which gives:
readelf -x .symtab hello_world.o
Hex dump of section '.symtab':
0x00000000 00000000 00000000 00000000 00000000 ................
0x00000010 00000000 00000000 01000000 0400f1ff ................
0x00000020 00000000 00000000 00000000 00000000 ................
0x00000030 00000000 03000100 00000000 00000000 ................
0x00000040 00000000 00000000 00000000 03000200 ................
0x00000050 00000000 00000000 00000000 00000000 ................
0x00000060 11000000 00000100 00000000 00000000 ................
0x00000070 00000000 00000000 1d000000 0000f1ff ................
0x00000080 0d000000 00000000 00000000 00000000 ................
0x00000090 2d000000 10000200 00000000 00000000 -...............
0x000000a0 00000000 00000000 ........
The entries are of type:
typedef struct {
Elf64_Word st_name;
unsigned char st_info;
unsigned char st_other;
Elf64_Half st_shndx;
Elf64_Addr st_value;
Elf64_Xword st_size;
} Elf64_Sym;
Like in the section table, the first entry is magical and set to a fixed meaningless values.
ECDH has smaller keys. youtu.be/gAtBM06xwaw?t=634 mentions some interesting downsides:
- bad curves exist, while in modular, any number seems to work well. TODO why?
- TODO can't find this mentioned anywher else: Diffie-Hellman key exchange has a proof that there is no algorithm, ECDH doesn't. Which proof?
Can be calculated efficiently with the Extended Euclidean algorithm.
Composed mostly of the Virgo cluster and the Local group.
There are unlisted articles, also show them or only show them.