ram@debian:~$ pstree
systemd─┬─ModemManager─┬─{gdbus}
│ └─{gmain}
├─NetworkManager─┬─dhclient
│ ├─{NetworkManager}
│ ├─{gdbus}
│ └─{gmain}
├─accounts-daemon─┬─{gdbus}
Arthur C. Clarke said "Any sufficiently advanced technology is indistinguishable from magic".
As a programmer my job is to make my own use of computers seem less of a magic. Let me explain.
Note that I didn't say, I am here to make the use of computers by "everyone" appear less of a magic. I said about /my/ use of computers. That is, as a programmer/engineer, I want to know what is going on in my computer (or data center or whatever is the current definition of a computer) when I run a program. I also want to be in a position to explain what is happening to someone else, say another fellow programmer.
But modern programming (especially programming with the web) seem to make it appear as if it is magic. Let us say, I am a new programmer in a brand new project and we decide to use a particular programming language to implement a web service. The programming language itself is not new to me, but I am new to web programming. So I go about searching the web for blog posts explaining what the other fellow pro
Thesis on consistent hashing: http://dspace.mit.edu/handle/1721.1/9947 | |
Chord: http://pdos.csail.mit.edu/papers/chord:sigcomm01/chord_sigcomm.pdf | |
Kademlia: http://pdos.csail.mit.edu/~petar/papers/maymounkov-kademlia-lncs.pdf | |
Coral: https://www.cs.princeton.edu/~mfreed/docs/coral-nsdi04.pdf | |
S/Kademlia: http://www.tm.uka.de/doc/SKademlia_2007.pdf | |
IPFS: http://static.benet.ai/t/ipfs.pdf | |
http://highscalability.com/paper-consistent-hashing-and-random-trees-distributed-caching-protocols-relieving-hot-spots-world-wi | |
http://www.tom-e-white.com/2007/11/consistent-hashing.html | |
Freenet |
0. Get a VPS machine running Debian on it. | |
1. apt-get install tahoe-lafs | |
2. Create an introducer. | |
mkdir tahoe-introducer | |
cd tahoe-introducer | |
tahoe start . | |
cat private/introducer.furl #note down the long furl string | |
3. Create a storage node on the same VPS machine | |
tahoe create-node | |
edit ~/.tahoe/tahoe.cfg |
- Motivation
I am of the opinion that one should really (at least to a great extend) know what is going on in one's computer. I want less magic happening on my machine and want me to be the master of the system than the system to be a master of me.
When the systems were smaller, it was easy to reason about it at the high level. Unless one reads the code, one can never be sure. Most users don't read the source code even if it is available to them. The latest "shellshock" bug is a good example that "given enough eyeballs, most bugs are shallow" argument proposed by Eric Raymond.
- A simple experiment.
Let us see what disk partitions are mounted on our operating systems.
http://www.thebuzzmedia.com/designing-a-secure-rest-api-without-oauth-authentication/ | |
http://blog.synopse.info/post/2011/05/24/How-to-implement-RESTful-authentication | |
http://security.stackexchange.com/questions/18684/how-to-implement-an-api-key-mechanism | |
API Key based query authentication: http://broadcast.oreilly.com/2009/12/principles-for-standardized-rest-authentication.html | |
http://dev.bitly.com/best_practices.html | |
http://stackoverflow.com/questions/14043397/http-basic-authentication-instead-of-tls-client-certificaiton |
Packages to install | |
0. install nix. remove brew. | |
1. install firefox and privacy plugins (AdBlockEdge, https everywhere, disconnect.me ...) | |
2. vcsh and mr | |
3. git | |
4. Hg | |
5. plan9port | |
6. ghc and cabal - https://ghcformacosx.github.io/ | |
7. emacs - https://github.com/railwaycat/emacs-mac-port | |
8. racket - http://racket-lang.org |
-- if you search for "why fp matters" on google, the first hit is this page | |
-- http://www.cs.kent.ac.uk/people/staff/dat/miranda/whyfp90.pdf | |
-- Unfortunately it has some bugs on page 7 (foldtree function..). This | |
-- has been fixed by the author and republished here: | |
-- http://www.cse.chalmers.se/~rjmh/Papers/whyfp.pdf | |
foldTree f g a (Node label subtrees) = f label (foldTree' subtrees) | |
where foldTree' [] = a | |
foldTree' (subtree : subtrees) = g (foldTree f g a subtree) | |
(foldTree' subtrees) |
- A micromanual for lisp: not the whole truth - http://www.newlisp.org/notthewholetruth.pdf
- Two way string matching - http://www-igm.univ-mlv.fr/~mac/Articles-PDF/CP-1991-jacm.pdf
- On the resemblance and containment of documents - http://gatekeeper.dec.com/ftp/pub/dec/SRC/publications/broder/positano-final-wpnums.pdf
- How can the default font be changed?
- How to create a new user?
- How can I build my own kernel?
- How can I update the OS+applications?
replica/pull /dist/replica/network (to update from the network)
- How can I see the source code changes and why the changes were made (i.e. equivalent of hg/git log)?
- How can I build Python and Hg?
- How can I get Golang?