Technical Books
Database Internals: A Deep Dive into How Distributed Data Systems Work
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkx WNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNO WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMMNN000NO00OOONNOOOON0N0NMMNNNNdNMMdNNNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMM0kXXXkXKKlxoxo0cooKOlKcdMMMX0NKXOXKMOMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMMcMWWMoMWloXldO;oXKNcKcdNN0x0WW0;0WNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMMKkXXxdNNXKMdkOxXkKKxKoXKKKxXkk0o0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMMMN00NNMMNNMNNNNNNNNNNNNNNNNNNNNNNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMMNNNNNNNMNNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMM0c,;;;;;lccdMNMMMMMMMMMMMMMMMMMMMMNNMMMMMMMMMMMMMMMMMMM0;;KMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMM: 'llllxl'.'xNMMMMMMMMMMMMMMMMMMK:'ONMMMMMMMMMMMMMMMMM0..oMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMM: ;dMMMMM0d'.;MMMM0OKXXXO00kKM0kc..cXkNMMM0KoxXdNdkdMM0..XOdocxKdMMMMMM0dXlxk0NdkONMMddxcxKdNMMMNdKxcxk00MMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMM: ;dMMMMMMNK..lNNk:.',lc.''.:Mx''..'':OMk,.',l,..' :0M0..:':cc:..,kNMMo..';l,':' cN0X' ;c,..oNNK:.';ll:.:kMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMM: ;dMMMMMMMN' ldX.'x0NNMMk'.:MNNo..OWWNK..xdNMWMd'.:0N0..'X0MMNdl.'d0; .X0MNNOc lN0, :KOWOOMNd'.lNWWNMk'.KNMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMM: ;dMMMMMMNK'.xO, ;0MMMMNNc.:0MMx..dMMd, :0MMMMMNl.'0N0..XWNMMMMM'.oM..xNMMMMMO:.lNNd;:..:;X0Nx .:'','':..;NMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMM:.;dMMNNNOx' ;N0l.'dWMMMNk:.:0MMx..dMMNx .dNMMMNk:.'0N0..;MNMMMMX..kM,.,ONMMMMk..lWNN0M0dX,..0k .xKKKKKdodONMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMM:.'lcccc,..,X0NMMl..;cxcc...:0MMK'.;ll0Mx..,ckll'..'0NO...'cxol, .X0Wdc.'xckc,...lNM,.,oko, :d0l'.,ckkl;'x0MMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMMoxxxxxxxcKdNMMMMMM0oc,,llOoloMMMNOolclOMNOocc;;lKkloMM0xxdKcc;clKMNNWMMdxl,;lo0xxxWNMxlc;lcoMMNNOKlc;clldMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNMMMMMMMMMMMMMMMMMMMMMMNMMMMMMMMMMMMMMNNMMMMMMMMMMMMNNMMMMMMMMMMMMMMMMMMMMMMMMNNMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMMNNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNO0ONMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMO;;X0MMMMMMMMMMMMMMMMMNNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMdc.cNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMM0' ;dMMMMMMMMMMMMMMM0x:;NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO; ldMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMM0' ;dM0kkddkxxk0MMMKo' :KkONMN0KkxxkdMMMMMKkd0dKdMkkddKxckONMMMMNMdkcxkOMKkOM0; ldMNdkXcXdMNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMM0' ;dMX..:'c;,..,dM''. .::lNMx'.,;;,.'XMMd:.':..o0..'',l,..;0MM0l..:cc:.,. XMO; ld0X. ;c;.'oNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMM0' ;dMX..;MNMNK' lNWO,.;NNN0;.:OWWNWK'.cNd: .oONN0..cMNNNd. lN0,.;dMNNNO;..XM0; cdM:.;d0N0ONMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMM0' ;dMX..oMMMMM'.lNMd, lNMMo..''''''''.'MO'.,NNMMM..xMMMMd,.;No..KNMMMMM0. XM0; lONdl'..:cxMNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMM0' ;dMX..oMMMMM'.lNM0, ;NMMd' ,KdKKKdod0N0'.,NMMM0..xMMMMd,.;Nd'.cMMMMMMl..oMO;.lNMNMM0dx:.:OMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMM0' cdMX..oNMMMM'.lNMNc 'clKNK: ;lkXoc'cOMO'.,NMMMM..xMMMMd,.;NNK:.:lXXl:...XMO; cNO;.cokx,.,OMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMMl,x0Md;cKMMMMNx,XNMMMol;loNMNKlc,,,loONM0l,oNMMMOl;KMMMMNo;xNMMMKc;:,ckOlcdMMx;oNN0ol,,,cxMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMMMNNMMNNNNMMMMMMMMMMMNNNNNNNMMMMMNNNMMNNMMMMMNNNNMMMMMMMMMNNNMNNMMMMMNN0NMMMMMMMMMMMN0MMNNNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMMNdONMkOOO0M00M0MO0NNMdMKO0NMMMMM0dMO0ddMMM0NddOXMMMNO0M0Nd0OKKM00dOOOdKO0MMOOkMMM0MdONOOOdOdNddMdNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMMXdk0MkOddXdXkOddOK0OOKMdkOOOXKK0OOd0dKKKOd0NKdOKkOkKKddMNKOOKdOKOdOKOkdddXOXOXkKkKdOdNXdddkKOOdXdkMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMNON00NM00N0000MMKOONNMMM00M00N000N0ONO0MdM0NNO00O00ONO00NMO00NOO00OO0NOM0M00MNM0000MMMMM00NO00MO0M0NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMNOMMNMMNN00NNNMNWNNNNNMNN0NMMNNMNdNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMMO0OdO0dddKddKddKOddOWWKdkKOdMdKOKk0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMNM0OOKMdKdOdOkdOKMOOK0MOdOdOKOdOMdKONMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMMMNNM0MNNNNMMMMMMMNNNMMMNNNNNNMMMMNNNMMMMMMMMMMMNNNNN00000N0NN0O00O0dO000NNNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMN0MKXXolcXxxxxxclcc,ccc;c;c;lxodMN0NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNM0xlc,;;;clc;;lc;,c;;;;,,:::,,,:,,,:lxXxd00NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMN00dXl,;c,,,,lc:cllxclxccc;,;,;;cl,;l;c;;c;,,;,oXdMNNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNMOXc;c;clcc;lx;c,cl,coxl;;lxcXllxo;lllco;c;cc;lc:,ccxkk0NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNOkl:,cl;;l;cxXkoxxl;lclX;lll,,;;c;;;cl;,;;;llllclx;::,c,;okNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMN0kx,,c,lx;xlxxl,okxloo,,ccocloKXkXKXoooXXXokkxcccl;;,c;cc;cl,odNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNOk;,;,;clc,clxKxxox;,codKkXXooxXoxxKXokxo;;;xXoXKXkKooxxlc,;;;cx0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNOl;;;,lxxcx;;Xlxc;coxXXxkXdXKo;,;xXooKKXkX;,:,xkxxXKx,,lXXkox;;;ck0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNMK;,;;;lxclccxkol;;lkKoKxc,cooXkoxxkkkkoxXooxoolXKdokkx,.:;ookX;,,,;xXkok00NMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNWX,,c;xllxxxkklc;ooXookkOxoclXXkXoKoXkkkKdXkddkKkXxXx,,cloXxkoKXx,,,xKoKc,:,cxXdOMNNNMMMMMMMMMMMMMMMMO WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNMo;;;ccx;,xxoxc,xXkXkKKXXdKXoXoXkXoKKkKKkkkkXKXXKKXox,;xkXXxKkXlloc::;,:::,,;c;cc;,ollMMMMMMMMMMMMMMMMO WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMX;c;;clclc;lccoXdlxXkkXkKKOkkkKXoKxKXXkXxXo;lclxXKooc:clcxlxocXokXox;,,cc;oxc;,;c,ck':ldNMMMMMMMMMMMMMO WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMX;,;lxoxxoc,;lokXo,,xdXkXkdKXkdooXxKXkkkXXl,,,:'':,l,:,lxcXkXklxoKXKKooxKokxlo:'lc,xk''xx0MMMMMMMMMMMMMO WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNK;,::;;,clc,ookkkKl;loddkXKKOOKkXXXkXkKkXclc;,,,,;cXX;,oXXXokol;,cXKkKkkXcccXKo,.',,clclx0MMMMMMMMMMMMMMO WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNKcc;c,,llx;cxXxokXkXkkKOdKdXkXkKkkkkXXXoKocll;;,,;;xXo:ckkkooXxcol,lXoXol,,',c;;,':;cl:;lNMMMMMMMMMMMMMMMO WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNKx;;;clcx;,oXoKxclkXokXKdKXXkkkkXXxXoxokxollxc,;;,,:,,,':cclKKXo;xo;;xoXXooc,:::,cXok;,kONMMMMMMMMMMMMMMMMO WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNMo;c;;cooc;oXkkkl;;XxKkoKkkoodXxKkXolxkXkokkxcl;,,,,::,',,:':,;xc,,Xox;:cclxolccoXXX;ckMMNMMMMMMMMMMMMMMMMMO WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNd,;;xxxocloXkkokXKKXXoXKkKkkxc,,:lXKxokKXxkxoc;;,;,':,::Kxo;,;,',:';ckX;;;,c,;;;,;,ckMNMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0xcllllc,cXxkdKkkKddXxXkkdKX;:'.::,KXXkXKoKKkokXocclxcc;looXc;,,:::,;cllxll,,;;:''odMWNMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNXccllxX;xXolcXKdXkXddkkkKXo,::,':,lKXXxodddkXkdkkXXXokxXXokXcccx;,,,,,;c;,,;;,,;XONMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMMMMMMMMMMMMMMMMMMMMMNOl;xclc;okX;,:;XKkkoKkodXococlXloxkddkkkKKokXXdkKXkXkoxKOXkokKkkKkllcc;;,,;:.:kONMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMo,cox;coXkkXlxoXkXXXokoKXKKkooKxKKXXKOkKKkxKkXKkdxcxkKkXKoxkoKokXXkokxloxlc,;dNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMMMMMMMMMMMMMMMMMMMM0o;loc;XXXXkKokXKkKkXXKkkoXKKoXXkoxokoKolkXKKKKXkkk;,lKXkKKddkdooooddXcxkodl,lONMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMMMMMMMMMMMMMMMMMMMNKox;;;xoclXkkXXkXoxkxkkokkklcloKXkKdXXkx,clkoXXXookkokxKkKoKOOkXXdXkx;,,:,,ckMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMMMMMMMMMMMMMMMMMMNMO;cxkxo;:cXokkxlxKdOooXXXkX;:;xKkkoKKkKl;xXkkKXXXKKXkKkXkXXKKXXooXxXKXx,'',l0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMNNO00dO0KKKKKdO00KkdXxooXxXXXdookKxXKoXXKkddOKkXxoKoXXXkKKoKXooXkddXkkkXkkXXXKokkOddkkKKkkxlx,c;:,,kNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMM0xcc;c;c;:,,;c;cxloxXkXllXdKkxoXXokXXkXkXoXXXKOOKoXXXkoKkdXkkKOKddoXXKokkkXxkkkkXolodddXool;,:,kk;,,,cOMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMo;;;;,;,;l;,,,;;oXllxoXxcoXlXXokdXkkkxoc;xXXkKKkOkkoxxkokkdXoXxdXkkXXllkkkkXXKKdXl,:;Kkxc;:,,;cldx,;;,;NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO Wd,;;;,,;;::cc:,;,;cxlKXXxokXXXkkkXkoXXXolcXkKXkKdKXX,:;xxlxKkooXddKKc,,,XxkclkKkkko,;,c,,,,,,;;;xOc;;,;x0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO Wk;,:c,,::cc;::,c,c;xlXxololoXxKo;,,ccxoxlx;;olxlcXokccckoxXdoXokXloll;;;cxllclXc;,,::::;:c,:;;;xNNMKXdONMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WO;,;;,,;c,;l;;;c;lcooxXXxodMON0oc;;lc,c;cc;;cc;;;,;,::;,,;;,;;,:,:,,,,,;;;,,,;,;;cl;,cl::::,,xd0WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO W0x,,;;,,;c;c,:;;,;lllxKO0NMMMMMNOXx;,,;,,ccc:;clxolkcxocxxccccx;llox;ccoXklXo;cc;c,l:,;,:,;lM0NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO MM0c,c;;;,;:::;;,;,lXdMNMMMMMMMMMMMNMOxx;;,,;,:;;cllxclxc;xcXl;cxdloXl;,cclloox;;c;lc,:,;oKMNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMNxcc,;;;;c;;;llkNNMMMMMMMMMMMMMMMMMNN00Kol,,,;c;,;;;,:;;cX;cc,lkkxll;,c;;;ll,:;,,:,lX0NNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMNOdolc;,;coK0NMMMMMMMMMMMMMMMMMMMMMMMMNNN00Oocl,;,;;;,,,;c,:,;;:,;,,,;;:;,,;;;ccodMNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMN00dOO0NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNMMM0Kooll;,;;;,;;,;;;;;,;;;lxoX00NNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNN0OM0Od0X0dKokdddO0MMONNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNMNNNMNNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNMN0NMMMMMMMMd0MMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXXKX0dd000NMOXXoOd0dXMO0OOM00MMMMMMMMMMO WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0oXokKXkoOkx0MdoOOxXXOXXXKKOKkXONMMMMMMMMO WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMONNOON000M00N0MMM000N0O0N000N0NMMMMMMMMMO WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO MNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNd lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllccl
Author: Alex Petrov
How distributed data systems work on the inside: storage engines, replication, and consensus algorithms like Raft and Paxos. Worth reading if you work with databases. I'm big on databases, so this was a no-brainer.
Designing Data-Intensive Applications
dN0OOOOO0Mc,,,;,,;,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;dOOOOOONWO WMMMMMMMMMc,;oxl;lxxxl;xxl;c;;,,l;;x,;x;c;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MMMMMMMMMW WMMMMMMMMM;;dxxXkldOoOXdXockXo;;Kc,Xkdl;c,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,0MMMMMMMMW WMMMMMMMMM;cKc,Xk,dooKcOclckxX;,do;,Kc,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MMMMMMMMMW WMMMMMMMMM;;cllx;;cc;ocxxlcocxxlloxlcc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MMMMMMMMMW WMMMMMMMMNXlxllllxxxxxxxxxxxxxxxxxlxxxxxxxxxllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllloNMMMMMMMMW WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW WMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMMMMMMMMMW WMMMMMMMMNXxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxo0MMMMMMMMW WMMMMMMMMMc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MMMMMMMMMW WMMMMMMMMMc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MMMMMMMMMW WMMMMMMMMMc;;;;oOddOOdkoc;;;;;;;;;;;;;;;;;;;;;coc;;;;;;;;;;;;;;;;;;;;;;;xl;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cMMMMMMMMMW WMMMMMMMMMc;;;;;cdo;;;;oOo;;;;;;;;;;;;;;;;;;;,cXc;;;;;;;;;;;;;;;;;;;;;;;xl;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cMMMMMMMMMW WMMMMMMMMMc;;;;;cdo,;;;;cdX,;;ooool;;;;xXolclcxl;;;loXoxcoocooocxool,;cxoc;cxocloox;;;;coXolcxoc;,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cMMMMMMMMMW WMMMMMMMMM;;;;;;cdo,;;,;;xdc;Okc;lXk;lkXc,cdk;oKx;XKo;cx0KXclkKoc;cdX,;lkk;;XKdc;lKK;,oKxc;XKdl;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MMMMMMMMMW WMMMMMMMMM;;;;;;cdo,;;;;;xdckd;cc;cdlcKoc,;cl;lOocdl,;;;xOl;,od;;;,kd,;;Xk,,cOx;;,xd;xdl,;;;xdc,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MMMMMMMMMW WMMMMMMMMM;;;;;;cdo,;;;;;kk:KkoXooooc,cXXXdKc,lOxlOl;;;;l0l;;ok,;;,kd,;;Xk;;c0l;,,xd;ldc,;;,ldc;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MMMMMMMMMW WMMMMMMMMM;;;;;;cdo,;;;ckk;;kk,;;;;KlxX,,,;Xd;ldx;kk;;;,xdl;;ok,;;,kk,;;Xk;;xdl;,,xd;;kX,;,;XOc,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MMMMMMMMMW WMMMMMMMMM;;;;;lkKdkkkKdxc;;;kdoxxKx,xdXoxkOcckkoc;XkKkKkdl,oKKXl,xdkXookkxxKdkc;lKkX;cKdXkXkdc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MMMMMMMMMW WMMMMMMMMM;;;;;;;;;;c;;;;;;;;;;llc;;;,,;xxc,,,,,;;xo,,,;oO;,,,;,;;;;c,;,;;,,,,,,;,,c,,ol,,,;xk;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MMMMMMMMMW WMMMMMMMMM;;;;;;;;,;;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;cKKXXXdx;,,;;;;;;;;;;;;;;;;;;;;;;;;,ldkooKOc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MMMMMMMMMW WMMMMMMMMM;;;;;loooXXXxl;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ccxoxox;;;;;;;;;;;;;;;;;;;;;;;;,,,;ccc;;;;;;;;;;;;;,l;;;;;;;;;;;;;;;;;;;;;;;;MMMMMMMMMW WMMMMMMMMM;;;;;;lOollxlkKo;;;;;;;;;;;;lc;;;;;;;;;;;;;;;;xOol,,;;;;;;;;;lx;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ckx,,;;;;;;;;;;;;;;;;;;;;;MMMMMMMMMW WMMMMMMMMM;;;;,;cdo,;;;,cKX;;;cccl;;;ckx;,;;,xllx;;;;;;;cdc;;;;,;llc;;;kKc;,;;;xlx;;;;c;;cll;;;;;;ccl,;;c;,;ccc;;,;;,,;cccc;;;;;;;MMMMMMMMMW WMMMMMMMMM;;;;;;cdo,;;;;,oK,cdXxxXOlxkOkox,cdXxxkK;;;;;;cdx;lkOXoxoKX;lOOolc;XKXxoKk;xkdkoxoKX;,XKXxoKd;lkkxdKl,,cKKXlOkxxXKc,;;;;MMMMMMMMMW WMMMMMMMMM;;;;,;cdo,;;;;;ldclx;;,,dk,lko;;;xo,,,,Kk,;;;;cdc,;ldx,;;l0x;ko;;;ldc,,;,kk,cdl;;;ok;,kX;;,;K;;kk;cd;,;;do;do,;;;Xd;;;;;MMMMMMMMMW WMMMMMMMMM;,;;,;cdo,;;;;;Kk,;kkXXXkk,lkl;;;lKoXXk0kckXXocdc;;lOc,;;c0o,kX,;,XdoxxkxXk,cK;;;;lk,;;okKkxc,,Xk;;Xd;,oX,ldXxxxkkK;;;;;MMMMMMMMMW WMMMMMMMMM;;;;,;cdo,;;;,odo,kX,;;;Xk,lKl,c;Ko,;;;0X;,;,;cdl;;lOc,;;c0x,kX,,cXK;;;;;cc,cd;;;;lk,;l;,;;XK;;kk;;;Koldc,l0l,;;;;x,;;;;MMMMMMMMMW WMMMMMMMMM;,;;,lx0occoXkkx;;kKxcxXdKlcKXcKckKcclkdkc;;;lxOoxcXKX;;;oKk;odcXK,kKcc;oOccXdx;;codxcdXl;cKKcxdkc;,ldKX;;,oOocccdo;;;;;MMMMMMMMMW WMMMMMMMMM;,;;,cxxxxxlx;,,;;,lXXxcllc,cooc;;xoox,cxl;;;cxooxolxxl;clxll;lox;,,lxoXo;;cxxlc;clxl;lcxoox,;lxlc;;;xl;;;;;clooxc;;;;;;MMMMMMMMMW WMMMMMMMMM;;;;;;;;;;;;;;;;;;;;;,,;;;,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;;;;,,;;;;;;;;;,,,,,;;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MMMMMMMMMW WMMMMMMMMM;;;;;;;;;,;l;;;;;;;,,,,,;;,,,,,,;;;;;;cl;,;;;;;;;;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cMMMMMMMMMW WMMMMMMMMM;;;;;;;;;;KkX,;;;;;;;,,;;;;;;;;;;;;;;cokl;,okc;;;;;;;;;;;;;;;;;,;;,;;;;XO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cMMMMMMMMMW WMMMMMMMMM;;;;;,,;;XKxdl;;;;,;;;,,;,;;,,;;,,;;,;cdx;;;;,;;;;,;;;;;;;;,;;,;;kK;;;;;,,;;;;,,;;;;;;;;,,;;;;,;;,,;;;;;;;;;;;;;;;;;;;;cMMMMMMMMMW WMMMMMMMMM;;;;;;;,lOc;odc;;okKxKXkko;xkKokkkkXc,;Kl,xKX;,lKOkXKXx;lKkkKKlcoO0XkloKx,;ckKkkko;ckXkKXdKo,;ckdKkkkx;;;;;;;;;;;;;;;;;cMMMMMMMMMW WMMMMMMMMM;;;;;;;,kX,,;Oo,,,oKo,;;ckk,xOX;;;;od;;kx;,xK;lkX,,,ckx;k;,,,odc;Kd;;;,oX;lKk,;;;Xd,cOX,;;cKc,kX;,;;Kl;;;;;;;;;;;;;;;;;cMMMMMMMMMW WMMMMMMMMM;;;;;;;xKdOKOddc,;oO;;;;;oOclOx;;;;xOxckx;,xK;ld,;;;,;c;cXkOOKOl;Kd;;;,oX,lk,;;;;odx;dc;;,lko,;KOXol;,;;;;;;;;;;;;;;;;;;MMMMMMMMMW WMMMMMMMMM;;;;;,xdc;;;;,kO;,oOc,;,,ld;lOc;;;,xOlckx;,cK;ldc;;;;lccdo,;;odl;Kd;;;;oX,lK,;;;,xOxcdc;;;lko,lc,cxXdc;;;;;;;;;;;;;;;;;;MMMMMMMMMW WMMMMMMMMM;,;;;cKk,;;;;;;kk,lkdc;;cdX,lOdc;;;Ko,ckx;;cKc;kk;;;;dllK;;;ck0c;kK,ok,oX;;Ko;;;;dx,cdl;;;xkl,do;;;lKl;;;;;;;;;;;;;;;;;;MMMMMMMMMW WMMMMMMMMM;;;;;Xooo;;;;;kkoXodlXKKXl,;l0XoKdkx,cXXXooXXXc,oKXKXl;,xkXKooXXlloKKcxXXX;;xkKdkl;ckkkX;ckXkxoxokkkx;;;;;;;;;;;;;;;;;;;MMMMMMMMMW WMMMMMMMMM;,;;;;;;;;;;;;;;,,odc;,;;;,,xOx,,,,,;;;;;;;;;;;;;;;;;;,;;;;;;;;;,,,;;;;;;;,,,,;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MMMMMMMMMW WMMMMMMMMM;,;;;;;;;;;;;;;;;xXoXc;,;;;cXoXl;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MMMMMMMMMW WMMMMMMMMM;;;;,;;;;;;;;;;;;;,,,,;;,,;;,,,;;;;;;;,,,;;;;;;;;;,,,,,,;;;;;;;,,,;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;;;;;;;,,,,,,,,,;,;;;;;cMMMMMMMMMW WMMMMMMMMM;;;;;,ccccccccccc;;c;c;;c;cc;cccccccc;;;;ccccc,,cccccccccccccccccccc;;;;;;cccccc;;ccccccccccccccccccccccccccccccc;,;;;;;MMMMMMMMMW WMMMMMMMMM;;;;;;;;;;;;;;;;;,,,,;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;;,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MMMMMMMMMW WMMMMMMMMM;;;;;lllloo,ckoxx,;coxXo,lcl;,koxcxxoxocxccckxocccclcXox,o;;;lcl,cocc;o;ooc,o;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MMMMMMMMMW WMMMMMMMMM;;;;,;;;col,coxcxl;;ollxcxl;x,olxccclx;lllc;xcx,xlxxxxoo;oc;;;xx;cloc,cxXxo;x;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MMMMMMMMMW WMMMMMMMMM;;;;;clccclc;lcl;x;llcllc;;ol;l;llc;c;;c;ccl,lllcx;xc;;;;;;;,,,,;,,,;;;;;;,,,,'::,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MMMMMMMMMW WMMMMMMMMM;;;;;xxooXlx,oKolXxXoXcxxXkkKloXKko;o;;llccllccXcxKxlx;;;;;;;,;,,,;,;,:,xxlokxoxXoXoxxcl;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MMMMMMMMMW WMMMMMMMMM;;;;;;;,;,;;;,,,,,,,;,;,;;,,,,;,,;;;;;;,,,;;;;;;;,,,,,;;;;;;;;;,,;;xolcXKkccooolkdKKKKkoo;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MMMMMMMMMW WMMMMMMMMMc;;;;;;;;;;;,;;;;;;;;;;;;;;;;;;;;;;,;;;;,;;;;;;;;;;;;;;;;;,,,clloxoKdkdXdK;;;lXkxlkoxcllll;,,;,,;;;;;;;;;;;;;;;;;;;;;;;;0MMMMMMMMW WMMMMMMMMM0NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNOOdkXcllllXKKkkkKdKl,ccXKXXl,xooXoXocxKK0NMMMMMMMMMMMNNNNNNNNMMM0NMMMMMMMMW WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNOKdlcllcccoKXKXKxXXXKklllxolxoooXKkKKXXkXxkMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNOKXcoxlxkoxXdXookokXKd00kx;lllooXXXkkooxXoxlkMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNOOKo;,clcxlokkokoXXoooXoOOKXxl,okXXooXxl,,:;XkkKO0NMMMNMMMMMMMMMMMMMMMMMMMMMMMMW WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM00OkkXokx;;llc;oXxkoXkXkklloodd0X;;;codkocc;oxl'cKXkooxoodO00MMMMMMMMMMMMMMMMMMMMMMMW WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNN0OKolXlxxooxl,cclxclKoxXkddkdXxlkKo;,,kKkKkKKXXKddKdOkoXlxxkXoXOMMMMMMMMMMMMMMMMMMMMMMW WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0MdKxXclcc;lxxllllccllxoXokXkKOXKdKkxoKl,;;XookkkdKXdOdddXkkKXkkdXKXkONMMMMMMMMMMMMMMMMMMMW WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNOKkXol;;;clccxllcclxXXokdXXXokkXxkOO0OO0dl:loXoXXXlkokXOOOKkKkkKKXKkooKkkO0MMMMMMMMMMMMMMMMW WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMN000Xdokollxll;;lxxlxxloXxxkXddkkkoodKkdddO0OOO0Xl;;;cXkKoXKdKKkXkxxolllXkXklokkNMMMMMMMMMMMMMMMMW WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMN0KdoKkocxollllllooXXKolxxxokodxkkkKXXookoXXkdOOO00dX,,,xkXXKKxcc;ccxl;xoloxllcXXMMMMMMMMMMMMMMMMMMW WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNM0OdXoxxlooxlllXxlookKkokXdoXokKxlxokKoXxkkkKxxXXXXkKKdKx:;coKkx;:::,,cooxdoxxo0O00NMMMMMMMMMMMMMMMMMMW WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNdkXoxxxlxoxxclxxolokkKkdxkKKkKKdkkllXxXkkXkXXkdoXlXkXKddkk,.',;c,::c,cxxl:;cXkkd0MMMNMMMMMMMMMMMMMMMMMMW WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMOKXXooolookkxlcooooXdKdoxkkxokkkkkdKKolcXkXxXXXxkkkokXdoXXXlcc;clXxKXOKXdM0OMNM0dNNMMMMMMMMMMMMMMMMMMMMMMW WMMMMMMMMMMMMMMMMMMMMMMNNN0NNNMNOolXXxkkoloXkXxxokdokkxkXoXxxooxdKxkokXollllKokxxxXXkXkkXXxoc;cclXoOO0OKkkKK00NNMMMMMMMMMMMMMMMMMMMMMMMMMMMW WMMMMMMMMMMMMMMMMMMMM0KxxoxXkKKXlllloXoloklkkXoXkkKKokokxXXXXoookkxokoxxccxclloKooxooc;lxllxclcxkkkoXXkkoXkXxKoKNMMMMMMMMMMMMMMMMMMMMMMMMMMW WMMMMMMMMMMMMMMMMMMMOKKXKM0Xol:,c;lokoKoxkkXoddKKKdKoKKdKokXxxoxkXokkkxlllllllkKXKoocc;;,;,loxoxxkoooXxXxxcXokXMMMMMMMMMMMMMMMMMMMMMMMMMMMMW WMMMMMMMMMMMMMMMMMMMdxXMNNWdkc;c,clxKxxxoKxKKokdKkoxdkdXXdKxxoXookokkKoxxl;:cllkKXlc;;,;;,;ooooXxkxokxxXoxoXXKXkdONMMMMMMMMMMMMMMMMMMMMMMMMW WMMMMMMMMMMMMMMMMMMMXloNNMOKXo;c;ccKokKkKdKoxxxkKoxxoKKddKKkoxxokdKxokXxlc;lc,;xollkocxXllcoKXkXkXoXkKkokXkKKKOXk;oKMMMMMMMMMMMMMMMMMMMMMMMW WMMMMMMMMMMMMMMMMMMXXlXMMNKkXxo;,clxKdxokddxxXkokkxKKkKKKXdoXkoxkdddKXoxllc;,,;lx,oXkkoKxXKKkXXoXXooollxlooXkKkoXXolk0MMMMMMMMMMMMMMMMMMMMMW WMMMMMMMMMMMMMMMM0KkoKKNNWMdKxc;;,;ckXXdkoxxxXKXXoxoxkkXoxXdkkkkoxxKkXX;;:,;,,,;;llkocxoxxXkkxxooKKk0OOXk0OOkolclxokONMMMMMMMMMMMMMMMMMMMMMW WMMMMMMMMMMMMMMMM0dKXkONMMNddkc;,::;XXXooxxxxXKkXXxxxkkklcloxoKkkddKdoc,,:,,,:,,lccx;l;xlXdXkKkk0NNNMMMMMMMMMMMMNNNMMMMMMMMMMMMMMMMMMMMMMMMW WMMMMMMMMMMMMMMMMMM0dKMNMMMMOKkc,:,;cxoKokxxxXXXKooxoodXl;lclxkxoXooXc,,,,;c,;,;cloXooxkkKKK0MNNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW WMMMMMMMMMMMMMMMMMMMMNMMMMMMMKkc,,,c;xkkooKXkXkkXokXKKdX,,;cl;ckoxlcc;;c;c;c;,xcxdO0000N0MMNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW WMMMMMMMMMMMMMMMMMMMMMMMMMMMN0Xl;,;c,;lkkoXXXkXXXkoXkxkx;;,c;;lxXl:cc;;cclxXxoxoXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW WMMMMMMMMMMMMMMMMMMMMMMMMMMMMKX;;:';c,,xXooXkXXoxkkXKoloxc;c;ccoxlxKxooooKkKMOOOMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW WMMMMMMMMMMMMMMMMMMMMMMMMMNMdx;,;:,l;:;lxkkKXokxKkxXolxk000Kd0MM0dM0ON0ONNNNNNNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW WMMMMMMMMMMMMMMMMMMMMMMMN00XXc;;;,ccccc;oxXXXoKkKkkkloxKNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW WMMMMMMMMMMMMMMMMMMMMMOdOKoddool;llxkXx,,xkoKxKKkXdolkkNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW WMMMMMMMMMMMMMMMMMMNNXkkKkddoXkkxoXdKoc;lokkXokXlXoxXdNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW WMMMMMMMMMMMMMMMMMMNkoXKkKXkkooKkKkOXloKKkkKkkXollkkNNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW WMMMMMMMMMMMMMMMMMNOXXdkkcoO0WMddxXKKXodKkkooxllldONMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW WMMMMMMMMMMMMMMMMNOodKooOONMMKxKXXkoookXkKXxloxkMNNNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW WMMMMMMMMMMMMMMMMXkood0NMMMMXkokkXXXklxooolkK0NNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW WMMMMMMMMMMMMMMMkoXxdNMMMMMkooxkKoxkK0O0MMONMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW WMMMMMMMMMMMMM0kKXok0MMMMMNkkXkkXO0NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW WMMMMMMMMMMMMMMkXXXX0MMMM0dXkkkd0NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW WMMMMMMMMMMMMMNKkkXxkMMMNOOKokdWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW WMMMMMMMMMMMMMOxclxoo0NMKOdokdNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW WMMMMMMMMMMMMMNO0O0OO0NddKkoXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW WMMMMMMMMMMMMMMMMMMMMMNdKkOkxk0NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW WMMMMMMMMMMMMMMMMMMMMMM0dKdoXlXNNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW WMMMMMMMMMMMMMMMMMMMMMMMcoO0kxxx0NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW WMMMMMMMMMMMMMMMMMMMMMMM0XXKKKOKo0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0ONOONNMMN0N0MMMMMM0MMNNNMMNMNNMMMMNMMMMMMMMNMMMMMMMMMMW WMMMMMMMMMMMMMMMMMMMMMMMMNNNMMMMNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMko0ooNKkkOokkXKXMNXkOKKKXKddXOKXkdkKdkKKKkKkdkNNMMMMMMMW WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNkkXKXKoXXOkdoXMXMNkkOKkodXoOXXokXXXdXXoKKMoXKdNMMMMMMMMW WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNN0ONNN0dNNNNNNNN0NNOOddOOd00NNNNNOON0NNNNNMMMMMMMMMW WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW dNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWO
Author: Martin Kleppmann
It's all about data these days. It's the new elixir of life. Covers OLTP vs. OLAP, distributed databases, caching strategies, event-driven architectures, and stream processing. If you don't understand this stuff, you're missing out.
Crafting Interpreters
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNN0MMMNNO0NONWNNN0M0NNWMNMM0000MN0O000NMNMNNOMNNN00M0NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNMxxXxcKOX,xxlKNN0c,XWNMcxooodoX;xokKlxMX,oMNXxONXxxocKWNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNkcMNWkXNloNWkxOWkckcMNM;KWWNNNOxXWWOcoWK:;kWXxOkx0NNXkNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNWkoONNNNNocMOlXNWoxdcKWNcxOdMWWOcXNNOcxWK;Xx0oxOKlOMNMMWNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNWKoOWNNNOoco,dMN0cXOlXWMcxOdMNNOcoNNMcxWX;doooxMKc0OKxlONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNWdc0WWokOolKolMWKcoxxl0McoWNNNW0cXWNWckWk;0Nl,oOkc0NWklONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNMxxolldOooO0lkOlkWN0;dNckNNNNNOxoWW0cx0kc0WKclOMxxoXlxONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNOMM0NNOONWMONO0NNNO0N00NNNNNN00NWN0ON0ONNN00NNN0MOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNWNNNNNNNWNNNNNNNNNNNNNNNNNNWWWNNNNNNNNNNNNNNNNNNNNNWNNNNNNNNNNWWNNNNWNWWNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNWdokNkoON0kdMkoxooXMkoXXoKMXxXxk0NKoXxKMNkxXxXMWKoooXdKkXooXKMkoooX0OooooMNMXlloXMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNK,OWo;XMOokWOOxcOONXcOOOM0lk0OcXWXlKOxoWooO0xoWdxO0O0NOOlkO0OxXOOO0O,K0Kc0K;KMdx0NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNMckWxlcdOokWWNllNNNXxOM0W0ckWMlKWXxO0oxNloNMkxWdcdMONNN0lkWNOoX00MNO:OWK,X0coONWNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNMcXWxodcklkWWWcoNNNXlookMOoxXlxNWXcXoodNockxoONd;xoXONW0lkWWOxlXodWO,oocXMN0kxxKNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNM;0WolWxclkWWWlxNNNXxNWNNMoX0cdWWoxMMNNNoxd;KWNdlMNNNNNMckWWOokWWNWd,dXcMWM0N0dc0WNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNN0d,KWXcNMx;kWNWllNNWXlOMMMMokNo;0WXlONNNNXl0dcKWdcdMM0WNMlkWNMooNNMM0:KMooM0;O0O;OWNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNdxdNdXNNModNNNxKNWWdxoooO0xKWMXdWKX0NNNNdKNNKXNKxoooKWWMXdNNNXxxxxMMoMWMo0NMoXoMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNWWWWNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNW0OM000M0N0M0M0O000MOM000NMMN0MM0000d0OMMM00MON0M0N00NMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNWkokKkX0kkokX0;kOdXodMkX0W0cookOoodKxk00x0KxXldX0kkocX;oNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNKXxXdKkK0odoKoKKKkoKWkKWW0kMlKWk0MkKxdMxM0XkkKkKkdXOdokNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNWWWNNNNNNNNNNNNNNNNWWNNNWNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN0MMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN0Okdkd0kkONWNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMxOMMMMNNN0oxXM0NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMkONMMMkKoooloxxodONNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOkKNNNOcKNNXXkxXoxookXMNNWNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNW0XKKMWOXXXMWMNdKkxclodKKo;XNWWNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMKKOMNN0kMNNWNMMMMOKkkcxcXoKlxNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN0kxXo0MkkOKkkKKOkMMMMMMNOdkKklxoKlok00KXXdMNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMXK0O0NMNNNNxM00NNNNMMMMMNOXkkkkolloKkK0ON0Kl00NNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOkdNNMMN000XXdNNMMMMMMMMMMOkXXkKkXkXoK0NNMMMXolKWNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNW0ddMMNN0koXOO0NNMMMMMMMMMM0OkXxkdkkd0XxNNO0M0KXXKxlO0NNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNdddONNNWklOWNNNNMMMMMMMMMMMMMkxXXXkkKkWKlooXkXxokKkdooXodNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMKMNNMMNdl0WMMMMMMMMMMMMMMMMMMocXooclokOkkcxkXoooddkKddKXlK0NNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNWWWNMKONMMMMMXoNNNNNNMMMMMMMMMMMNOxdMMdkoXclXXoooxookllKdddKdXoocXNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMdOdKKO0WWNNMNMloNWNoKMMNNMMNNNNNNNldNWMNW0Kkkk;cdOkXxXoxoOkdoXXkkX;ONNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOodWNNddKOdddMWOxONWWMKkONNMMW00WM0OkK0M0d0MNMOkkXooxkxKlxXxkoxXklXkl;XNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOXOMWNMOddOkOM0KXkNWWWWWWOXdNMM0dOdkKXXXdKOOxMWWNdxkXXXXx;xKokcXKXxXdXoxxooo NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN0KkONWWWNNWMOd00oXoOWWWWWWWWdXXdMWWWWWWWNdoOWNWWWWWMkkoddKlloklkXckkkdkKXoddkoX NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMkNWWWWWWWMMNMOkoMMxK0MMWWN0kKkkXKkOMWWWWWMXkoXKKd0KXKdKl;lXKXoklxXkKXXXKcXKkdK NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNWOKWWWWWNkXxXdO00WWWWNdKXkdMNN0KXXXKKOWWWWWWWW0MOOolclccxKKXoKckocXoXddkklokKddd NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNWdkNWWW0KlXWWWWWWW0oX0WWWWNKl0WWMkokdKkWWWW0KXlk0MWOkoxokllllccooocXKXkkXckKkkooo NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNWN0XKMWWNxXONWWWWWWWMO0xdNWWWWNXxMWW0XKkXkWWKlX0WMMOokokoxookXXdokooXcXKkKkcXKdkddkd NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNdKOMWWWW0lWWWWWkkooXX0dXdk0OXMNWKxKOKXkXkkOlkNWWWWWWNWM0M0WWWW0KkdXcckkooXlokkokokKK NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNKOWWWWWWKoWWWWMOdKkKkKKKKKK0OKMWNkloKkkXoccodWWWWWWWWWWWWWWWWWWMxcokKkkkxXxokddXKkkK NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNkKWWWWW0lNWWWWKKkKOKKKKOKOKkOKMNoXXckkXccXXoKdWWWWWWWWWWMKd00OMMKKOdd0MM0MKKMM0ddKkk NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNWXKWWWWWWkKWWWWWW0KdO0MWWWWWWWWWWMXXloXKK:xoxXdkkK0WWWWWWWNddKKKkd0kXokkdOOoXkOkdKKXoo NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNdXMWWKXd0KKodk0WWWdXKKOMWWWWWWWWWWWxckkxoockkdKkkXXOMWWWWWWWWWNXOWWWWMkKkkdokoloXXXokk NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN0oNWWWN0O0dX00XNWWWW0KkkXkdWWWWW0MMMXMNddKkXKKKkkkXoxkdWWWWWWWWNXkWWWWKXkkkkXocxKddddkK NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOkKWWWWWWWWWW0xKWWWWWWWOkkoo0WWWWWdkKdXKdKKKXdkX0WOoXoXXkWWWWWWWWNodWWWKXookkKX;KkKXXdKkk NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNWKdWWWWWWWWWWWW0cOWWWWWWWOXkXdOWWWM0XWM0WOMMWdodXkkdXdoX0NWWWWWWMdcdWWWMXxoXkkXXlxddddKkdK NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN0XX0WWWWWWWWWWWWOlOWW00K0XooooXooXXkOMWWWWMOooXKdkdkdddKOWNdKoXkoXOMWWWWMKoXkXxccodxxokkKkd NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNWOo0000MMMMMMMMMWKxMWWMdXXokxXklxXooKK0WWWKlXdMMWWKokddKkKXoxO00WWWWWWWWWWWMKX;oXKddddddKXXkd NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN0XKW0dOOKdddkONKokNWWM0kxccocollkKxKokkMNMlKWWWWNMKXxXdKkxXX0NNWWWWWWWWWWWWWolKdkkKKKkkkokkKk NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNkKkNWWMkXOkkkOKddOkNWOKxdOMOKxXXkXXoXoXdKooXkWWWWNdxXoxoXxkkXkXkWWWWWWWWWWWWWkcNWW0kokkkKkdddkK NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOXKWNNNWWWMM00MWWWXxMNOXMWNNNWOkXooXoXxclkd0NWWWWWMxkMWWWWMKdkkKkkNWWWWWWWWWWMXlMNNNNNdkkkkdkkkdk NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNWMX0NWWNNWMoodKXkKlxxMNNMx0WNWMkoooodk;xkkood0WWWNWNodWWWWWWWWOKkookdWWWWWWMdookk0NNNWWNMKXxkKkokkx NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNWN0OkKdNWOdWNN0kMONNONO0NNNNOxONNNNdkXdkXooKXKKkoOWWWOXxOWNWWWWNN0ddkookMWWWWWOxXMNWNNNNNWWWMdddddddddK NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN0KK0KkMONNNW0XXdkdkKdKXkWNNNNNNOc0WNNNNOKxXxlkXkKkKdONNKlNNNNNWWNNNNNNdKKxxo0NWWOcOWNNNNNNNNWWMKXXoXdkkkKd NNNNNNNNNNNNNNNNNNNNNNNNNWNNOM0OdOkONNWNNNNNNNN0NNNlMWWW00NNNWO0XcdNNNNNNOllcxkxxXkd0NWNNoKWNNWNWWNNNNNNW0MdkxoOWWOxWNNNNNNNNNNNNOkkKKddddKd NNNNNNNNNNNNNNNNNNNNNNNNNNXX00M00ONWNNNNWWMMOddOdXodWWWWWNXXXXKdOMWNNNWdolOKXoxxXKNNNNNNWNxMWWWNN00WNNWMO00MM0dNNNMlOWNNNNNNNNNNWMkXkokkoXkk NNNNNNNNNNNNNNNNNN000OooKkONNNNNWMO0dO0MOKkOOddOMMNNNNNWMoONNM0xokXlxoXXdWWNOoXoXdMNNNWNWMxdWNNMkocKOWdOkkkOkKdONNWKxMNNNNNNNNNNNN00XkKkkkko NNNNNNNNNNNNNNNNN0d00ONNNNNNNM0MXlOdOd0dK0NNNNNNNNNNNNNW0ldMdxk0WNNOOMNNNNNNN00dkkk0NNMM0ooMNNNOKdXkWKddkdkddkkK0NNNdxKM0NNNNNNNNNN0kkXooxll NNNNNNNNWNNNN00XK00NNNNNNNNNOXkkKNNNNNNNNNNNNNNNNNNNNNNNWKkkk0NNNNNNNNNNNNNNNNNN00dKOOXkKK0NNNNWNWWNNOOM0MMMM0000NNNNOkkkdNNNNNNNNNNNN0dKoox NNNNN0OkXKdkkk0NNNNNNNN0NNNNWOXK0ONNNNNNNNNNNNNNNNNNNWNNWNXXMNNNNNNNNNNNNNNNNNNNNNOONWOkkNNNNNNNNNNNNNNNNNNNNNNNNNNN0NOXKNNNNWNNNNNNNNNNNddk NNNNNNNNNNNNNNNNNNNNNN0XX0ddKKXdOdddOkoMNNNNNNKKOKddOd0XKkkKKKOOOdK0O0XKoMNNNNNNNOkkddXKkXkKXdWNNNNNNNNNNNNNNNWKKXdoKKKKkkOdKXkdXKWWNNNNNWMM NNNNNNNNNNNNNNNNNNNNNN00O00M00dO0000d000NNNNNWOOOkO0000OMMO0MMOOMKXOdKkdd0NNNNNNN00X0MM0OMMO00NNNNNNNNNNNNNNNNN0MMOdMM0MdONM0O00O0NNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNWNNNNNNNNNNNNNNNNNNNNWNNNNNNNNNNWWNWWNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNWNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN00000O0NNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN0;;,c,kWNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMxloXXKNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
Author: Robert Nystrom
Most don't care about how their code gets executed, but they should. This book takes you from lexing, parsing, and ASTs to building a full interpreter from scratch. Writing a line that looks like English and making it do things is pure magic. Every programmer should go through that euphoric feeling at least once.
Clean Code: A Handbook of Agile Software Craftsmanship
......................................
......................'':::::::,,,,,,,,,:::''''...................
......................'':,,,;;;;;;;;;;;;;;;;,,,,:'...................
.....................'':,,;;;;;;;;,,,,,,,,;;;,,,,,:'''................
....................':,,,;;;;::;;;;;;;;;::,;;;;,,,,,:'.................
..................''':,,;;;,,:;clooxooxXxll;:,;;;;,,,''.................
....................':,,,;;;,:,clXkKK000OdKKXxc;::;;;,,:'..........cl.......
.' .. . . . .. . .....................'',,,;;;:,cxXdKMNNMMNNMdKKoc;::;;;,,''.......,kxxk,......
.lc:::c,,;;'cc: ,' :l,c:;:,;,,,;,.:,:;,;:;c;:;..................''',,;;;;:;lXXdMWMMMMMMNWKkklc::;;;,,,''.......:..'.......
'.:::'''':..'' .'.. .'''::..''''.' .'''''.:,'','.................'':,,;;;;:;lXKdWWMMMMMMMNKKXlc::;;;,,,''...................
......................................................................''''':::,;;,,;c;clxKOOWNMMMMMWMdkkxl;;c,,,,;::'''''..................
:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:,,,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;cll;ll;,;cccccccc;,llllc;;;;;;;;,,,,,,,,,,,,,,,,,,,,:,,:
.,lcccc..KKk ';lccl: cdO:
'XMNOdd0O.'dMd cONNMddMc xMN;
:0NMl. . :dMd .cccl: 'lcxxl' .lx:;lxl: lMNK' .;lccl' .cclcoMN; :llcl.
oN0l :dMd lMMocdNK. ckccONMl '0MMOKdWMc '0MM' ;ONOxd00K. cMNdkdMMN; ,kMKlX0M,
oN0; :dM0.:MNOccdMNc 'lK0ONMx.'0MM' :0MK. 'NMd. .0MO. xNNx'0MO' xMN;.oMNXoXMMk.
l0Nk, :dMO.;WNOooooo:,NNK;;0Mo.'0MO. '0MK. .KMMx. '0MM' xNNx'0N0' xMN;.KMNXooocl
cMNMdkkKX 'dMd..X0MKlcXc cMNKxXMMo.'0NO. '0NK. :k0NdKkkk; lMNOloMNK. oMNOcKNNN; ;MNOXcxo'
.cxkKKko.'okc ,lkkkkc ckdKcokl .oKx 'Xkc :lkKdKk; 'oKKkx; ,oKKo;ok: 'lXKkkx'
... . . . ... . .. .. . .
'x, c,'x.:.'''..:x:l:..::.':'l,. ::.;l. ,o' ',::,;':. .l:..:.;xc;'''.:',.':.'' .c,'.:.'''o,l'''.':''.':.'''':'o:':.:':
.x;x. x;'x;;l;,:cc:oco'xc,;xl'lxk: 'x:l;' .X;c,c,X;;coc,..:xcx:l;;;;:lxx,;xol'll;.'l:.'c.lx,c.x.;;;,c:x,;X;c'c:c,x.c;;o'x'
. . .. ..'... ..''.''. '. .'...'. .' .. .. ..,;,....'. ''..'. . '...' .'.. .'. ''.. ''.. ..'.. . ...'.. ..'.. ...c'.
... ..
...........................
. ........................................... ''
.. ............................................................... .'. .. .
.................................................................... .
..........................................................................
.. .......................................'.......................................
..........................'''''''''''''''::''''''''................................ .
..........................''::''':::::,:':::cl,:::''''''''''''..........................
.......................''''''''':::,,,,,;,;;;;;;;;;;,,,,,,,,,:''''''''.............':........
.....................'''''''':,,,,;;;;;;;;,,;,,,,,,,;;;;;;;;;;,,,,,,:',,'''....................
....................'''''::::,,;;;;;;;,,,:::;:::;;;;;;,:::,,,,,,;;;;;,,,,,::'''''............'.....
...................'''':::,,,;;;;;;,,,::,;;cccccllllllllccc;;;;;::,,,;;;;,,,,,::''''.................
...................''',;,,;;;;;;,,:::;;;ccllllllxxxxxxxxxxxxllllllcc;;;,:;;;;;;,,,,:'''''...............
................'''':::,,;;;;,,,:,;;;ccllllxxxxooXkkkddddddkkkkkooxxxlllllc;,:,,;;;;;,,:'''''...............
..........''':::,;;;,,,,,;;;;;;clllllxxoooXkkdddKkkkxxxXXxxokkkdddkkooxxllllc;,::,;;;;,,,:''''...............
......:,,;cc;cxXXXXXXxxxxoooooooooooXkKKKKkXXXXXXddddddddddddKXXXokkdKkkooxxllcc;;:,,;;;;,,:''''..............
....':;,clxoodoXKddddddddOOOOOOddOOOOOOOO0000000OOOOOOOOOOOOOO00dddXXXokkkKkXxllllc;:::,,;;,,:'''..............
......'':,;c;;ookKkkdddkkXxxxxxxoXkkdOOOOO000000OKKKKKKKKKKKkKKKKKO0000OddddXKXookXxxxlc;,,,;,,::''................
.........'':,;,cccllxloXKKXXkkkkkkkdOOOOO000000KKKKKKkXkXXkkKKKKKd000000000OOOdddKXkKKXooXxl;;c,,,::''............
.............':::,;;,;;;;;lxXXxXXKKdkKddO0000OKKKKKkXXXXKkkKKKKKKKKO000OOOOddddddddddOOdddKKkooXxc;;,:,:'........
..............''':,,;;;;,::;cccccxxxoooXdkXKKXkkkKdddddddOOOOOOOO000000OOOOOdkkkkkoxXkkkkdOOOOdKXkXXxlc;,,,::'.....
..............'''::,;;;;;,:;cccllxxokKddddkxxxxXkkkkkkkkXXXXXkkXKKKKKKOOOKkkXXXXXXkkkkkkkkkkkXkkkXkol;;;,,;,:'....
................''':,,;;;;,::;;ccllxxokKdKkkoxoXkkdddddkkkkkXxxokkKkkkkollllllllllc;;;;ccccc;;;;,,,:::'''......
.................'''::,,;;;;,:,;cccllxoooXkkddkkoxxxxxXXxxxokkkddkkXooxxxxllllcc;;;:,,,;;;;;,:::'''..........
..................''':,,,;;;;,::,;;cllllxxxxookkkKddddddddkkkkoooxxllllcccc;;::,,;;;;,,:::'''''.............
..................'''::,,,,;;;;,,:;;;;clllllxxxxxxxxxxxxxxxxlllllccc;;,,:,,,;;;,,::''''.................
...................'''''::,,,;;;,,,:::,;;;;ccccccllllllcccc;;;;,::,,,;;;;;,,,,::''''...................
....................''':::,,,;;;;;,,,,,:::;;;;;;;;;c;;:::::,,;;;;;;;,,,,::''''....................
.. .....................''''':::,,,;;;;;;;;,,,,,,:,,,,,;;;;;;;;;,,,,:::'''''........................
.......................''''''',,,,,,,,;;;;;,,;;;;;,,,,,,,,::'''''''........................ ..
.........................'''''''''''':::::::::::::::'''''''''....'...................
.. ...............................'''''''''''''''''''............................. ..
......................................................................... ..:,'.
.................................................................... ..:K0o:.
.......................................................... ..','.
................................................. .. ..
. .'. .................... .
...
'' ' . .'. '... .
'cc;,,o,,;,,;l'.,. ccl;:;,;x:,;;'
.''::',:::''.:. ::.. :,'',,:.':::..
:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;;;;cccccclclllllllllcclllllllllcccccc;;;,,,,,,,,,,,,,,;:
... .............................''':''''.......................
.;oXkx, ..............................................................
:coKXOx. ................,,:'':,::''',';:,;,'':;:',,':''',,'.,:'::',::'':
:;ckll: .. ....... ':':,:;:;;,,,';':,;c':;c;::;,:,',,'.'':,c:,:,:::
':,'. .................................................
.............................................
........................................
..... .......Author: Robert C. Martin
On writing code that is elegant and maintainable. Talks about meaningful naming, reducing dependencies, writing small functions, and avoiding unnecessary complexity. I will continue to write garbage code though.
Design Patterns: Elements of Reusable Object-Oriented Software
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKo::::::::::::::: MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO;;;;;;;;;;;;;;; MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd;;;;;;;;;;;;;;; MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd;;;;;;;;;;;;;;; MMMMMMMMOkookkKdNNMMMMMMMMMMMMMMMM00MMMMMMMMMMMMMMMMMMMMNkKxXKKOONMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd;;;;;;;;;;;;;;; MMMMMMMMMNo;MMNOxK0MMMMMMMMMMMMMNKoOMMMMMMMMMMMMMMMMMMMMMMNcoNNNxl0MMMMMMMN0NMNM00MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd;;;;;;lc;;;;;;; MMMMMMMMMNX;MMMNd;oNMMNMNNMMMMMMNMMMMMNNNNOONMMMMMMMMMMMMMNcoNMMM,o0NNMMMN0kONMMX0MMMNMNMNNMNMNNMMMMMMNNMMMMMMMMMMMMMMMMMMMMd;;;;;olo;;;;;;; MMMMMMMMMNk;MMMMMclNNOXk0M00KK00OkxONNMkKK0xKxXMOOoMNMMMMMN;oNNMK;oOkdk0NOxlOkdXcdOONMdKKNMKxkOdkkxKOOkk0MNdXdONMMMMMMMMMMMMd;;;;;;;;;;;;;;; MMMMMMMMMNk;MMMMMl;OloMNookkNN0KNd,oWdlONkxOWocON0xXNMMMMMN;oM0OxXkxdNllNNolOWNdcMMNOx0Ndl0Mcl0oXOlxMWK,0WXdNMXdMMMMMMMMMMMMd;;;;;;;;;;;;;;; MMMMMMMMMNX;MMMMNl;KckXkXXdcl0M0NO;XWoxNWXcMWocONOcXNMMMMMN;x00ONN00OOlxdNol0NNdcNMNxlkXkoONlXNMMOlXWNO:ONKxXONNMMMMMMMMMMMMd;;;;;;;;;;;;;;; MMMMMMMMMNX;MMNM0;XK,kWNMN0O0xlKNO,XWdoK0kKMNolOMOcXNMMMMMN;oNMMMNOkd0oodNllOM0dcNMOcoNMMNNNcXNNM0lXWWO,O0MNkllMMMMMMMMMMMMMd;;;;;;;;;;;;;;; MMMMMMMMMNX;MMMNdcd0lKNMNdKOWNKoMO,XW0k0M0WMNolOMOlXNMMMMMNcoNMMM0lXNOlxMOolNOKkcNNkxx0MMMMNlkNMMNlXWWO,0Oo0N0kX0MMMMMMMMMMMd;;;;;;c;;;;;;;; MMMMMMMMNMl;dNOOoMNNdlO0O0kk0NdKMK;KNXokoXkOMXc0N0lxONMMNNOco0NNMMoXOOocO0Kld0MOlOOdOo000dMOlk0NNOlXMWO:dOoO00KOMMMMMMMMMMMMd;;;;;ckxx;;;;;; MMMMMMMM0OMM0OONNMMNN0MM0NNN00ON00M0kK0NNNOK0MM00OMMOMMMMO0MMO0NMM000NN00NNO0MNN00ONMN00ON0OMMON0OMMO0MM0O0NO0MNMMMMMMMMMMMMd;;;;;xxlx;;;;;; MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMKMNMMMMkMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd;;;;;cxol;;;;;; MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd00NO00MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd;;;;;xxxx;;;;;; MMMMMMMMNNNNN0NMMMMMMMMMMMMMMMMMMMMMMN0000NMMMMMMMMONMNNNNMMMMMMMMMMMMMMMMMM0OMMMM0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd;;;;;lool;;;;;; MMMMMMMMXo0MOo0M0NNNN0MNdNMNNNNNN0NMOdN0NNMMMMNNN0OMMMKlMkoNN0NNNNMNNN0NMN0NMxN0NOxNNNNNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd;;;;;llXc;;;;;; MMMMMMMMkcOdNoKxOdoXkOXKdx0XOkXoKOxKldkddMMMKk0kkkxMMMdlKK0kXOKdk0NkdkONMMdo0o0OoOx0xkkoMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd;;;;;lXo;;;;;;; MMMMMMMMXxWMMxkxO00okNodNxdxd0dxKMXooK0XoMNNXKNOxkxNMMKo0Xkkod00odMxOKoXkddx0xNOxkoOlK0ONMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd;;;;;clll;;;;;; MMMMMMMMMOM0N0MM0MMMMMdMN0NOOM0dMMOMd00MMMMMMMN0MM0MMMMdNMOMOMMMMOMOd00M0M00dMOMMM00M0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd;;;;;lxol;;;;;; MMMMMMMMMMNNNNM0OMMMNNMMMMMMMMMMMMMMMMNNNNMMMMMNNMMMMMMMMMNMMNMMMMMM00NMMMNNNMMMMMM0ONNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd;;;;;,lXl;;;;;; MMMMMMMMOkdMMdkdcNNN0oNNNNMMNNN00NMMMdKM00kdNMNMKNNNNMMNNN0OMMNNMMNNOoNMMdO0ONNNNMMKOO0NMMMMMMMNNMMMNMNNMMMMMMMMMMMMMMMMMMMMd;;;;;;o;,;;;;;; MMMMMMMN;dMMMOcKlMOoOododOodKNMOc0WN0;0MMM0lkXKXkKXOkdXddXOxdoX0oOk0OXNMNKooMdkMKdox0lkoMKlNK00OXOXXOxd0oMMMMMMMMMMMMMMMMMMMd;;;;;,ccc;;;;;; MMMMMMMNok0NNOxKxNOlkodldMOxKNN0oW0dNxO0NMkKkoMkkXxddOo00lKX0lKMdoxOdxMNMOKdcloM0xXodXOKX0OXOOkOo0XoOlk0KNMMMMMMMMMMMMMMMMMMd;;;;;lool;;;;;; MMMMMMMMNO0MMMNM00MMOxMMO0N00MMW00NMMMMMMMONMMNNON00MN0MMOMMkOKO00dKKd000OdKO0KOKOdOOkdOKOdKOKdd0OOMMM0M0NMMMMMMMMMMMMMMMMMMd;;;;;lxl;;;;;;; MMMMMMMMMMMMMMMMMMMMNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNO0dO000OOOdO0dkkkkXXXXkkkKddddKKKkk0OdddKdM0ONNNMMMMMMMMMMMMMMMMMMMMd;;;;;lXXo;;;;;; MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMN0OdO000000OOdddOO000000000000OOOdO0000KOOOKkkXk00OKKd00NNMMMMMMMMMMMMMMMd;;;;;l;ol;;;;;; MMMMMMMM0OOMMN00MNN0MNMMMMNOOOMMMMMMMMMMMMMMMMMMN0Md0000000000000000000000000000000000O00OK0OdMM0O0NWWWNNOO000M00NNMMMMMMMMMd;;;;;lXxx,;;;;; MMMMMMMMXkKMOMKOOMMkkONMMOXNNMMM0OMOMO0OMdOMMO00X0000000000000000000000000000000000000000d0kXK000ddOOKM0MWNNNWWNNNNMMMMMMMMMd;;;;;lcc;;;;;;; MMMMMMMMkd0MkMkKXWWdX0dNMOxMMOKK0XdkMxMkoddKdKKOoKO0000000000000000000000000000000000000000000OOdMM0ON00OMNNMMMMMMMMMMMMMMMMd;;;;;lcxx,;;;;; MMMMMMMMd0000N0MOM0NM00NMNO0000000d0M0WMM0OdOKdOKKO000000000000000000000000000000000000000000000000OO0OdM0NNMMMMMMMMMMMMMMMMd;;;;;;lXl;;;;;; MMMMMMMMKXK00ONNNNkNNMNNMMNNNNdMMNKNNMKM0O0kO00O00O0000000000000000000000000000000000000000000000000000000Od00NMMMMMMMMMMMMMd;;;;;,;,;;;;;;; MMMMMMMMkkk00KKd0OXMkMOKOdkXKMKNMNxdXdXddKdxOodkdXOO0000000000000000000000000000000000000000000000000000000000ONMMMMMMMMMMMMd;;;;;;lox;;;;;; MMMMMMMMXOdXOkdO0KdNKKkkkkKOd0kMMNk00dKXK00kOX0XOXd00000000000000000000000000000000000000000000000000000000000ONMMMMMMMMMMMMd;;;;;cloo;;;;;; MMMMMMMMNd0NNNNW0MNMNWMNMMNMNWMMNMM0OO0O00O000000dO0OO000000000000000000000000000000000000000000000000000000dOMMMMMMMMMMMMMMd;;;;;coox;;;;;; MMMMMMMMkdKONM0NKM0N00KOd0MNKO0MMOoKd0KKd0d0OO0dOKKdOO0000000000000000000000000000000000000000000000000000O00MMMMMMMMMMMMMMMd;;;;;loxc;;;;;; MMMMMMMMXkkMddKOKMXWdOdOk0MNOKkNdXo0oKX0XkXkKKdkkXKXOO0000000000000000000000000000000000000000000000000000O0dNMMMMMMMMMMMMMMd;;;;;cxoc;;;;;; MMMMMMMMdMM0O00MMNx0000Md0MMdMd0KOd0O0K0OOdd0dOKOOOdOO000000000000000000000000000000000000000000000000000000ONMMMMMMMMMMMMMMd;;;;;cxlo,;;;;; MMMMMMMM0MMMM0KMMMMNMMNM0MMMddOdKOOO0OOOO0k000OO0000000000000000000000000000000000000000000000000000000000OOdNMMMMMMMMMMMMMMd;;;;;loxo,;;;;; MMMMMMMMk0kOdddKKNkOkMNdXN0OKKkOkKOKddkOoKoKkkOOK0000000000000000000000000000000000000000000000000000000000OOMMMMMMMMMMMMMMMd;;;;;l:lx;;;;;; MMMMMMMNX0KdKkX0KOKNkMMMdkOOKKkdKXdKXdXKKKkkdOOkkKO00000000000000000000000000000000000000000000000000OddkdOOOdNMMMMMMMMMMMMMd;;;;;cllc;;;;;; MMMMMMM0MNNNNNNMNNNMNMMMNd00000000OO00000O0O000000000000000000000000000000000000000000000000000000000dWMMNNMNNMMMMMMMMMMMMMMd;;;;;lXlc;;;;;; MMMMMMMMMMMMMMMMMMMMMMMM00000000000000000000000000000000000000OOOdOMM0000OOOOO00000MdMOddOOO00000000dONMMMMMMMMMMMMMMMMMMMMMd;;;;;cKKl;;;;;; MMMMMMMMM0000000MMM000MKKddddddddddddddddddddddddddddddddddKddO0000MMMMMM00O0NNMMMMMMMMMMNNN0d00OOdONMMMMMNNMMMMMMMMMMMMMMMMd;;;;;l;,l;;;;;; MMMMMMMMdXokoxxXkkXXXXxokoxxokkoxxkKxdkoxdxkkoxxxxxxxxooxxxxoxxKkdxxXXXXXoXxcXMMMMMMMMMMMMMMMMMMNNNMMMMMMMMMMMMMMMMMMMMMMMMMd;;;;;cXkl;;;;;; MMMMMMMMkkoxxxXXXXkooxKkxXXl;x;odkdKxdxxxdxddooooookkxkkKokoxodd0KKoxoXXKkdkxXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd;;;;;;xx;;;;;;; MMMMMMMMXdxxxokkcXXoxc,:cXx'..;XkKdXkkkxxxxxxxkkkkO0dKKkxkkkKKk00NkdkkXKdoKkxXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd;;;;;coc,;;;;;; MMMMMMMMXdkkoX:.:;;llol':'.',,:,clc,,:cKXoodKkKkXdMM0MkkKXoXdKkdkMO0KKokXKKdKkMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd;;;;;ckxc;;;;;; MMMMMMMMXdkKok,';coll,,'::cloooXxXX;':xl'.'lXkkKKdKKOOOdKddkKOKKkOKk0OlcddKkKdMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd;;;;;xolc;;;;;; MMMMMMMMoKx;,,'Xlxc..:,;,;,:lX;..:,:...':.kKXkKdKkoKkKXKOdKO00OKKookKKOkOOKdkdMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd;;;;;,;;;;;;;;; MMMMMMMMXKxl,.::;c':lloKo;:.:.::.':,c,xdKx;xKkkddKKXOkkkokXkdKOOKKXoKOdOKXKdoXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd;;;;;coxc;;;;;; MMMMMMMMdodo,cl,..,XlX:.::,:,cxkXxXXxc:xKMMOKKxlOMdkkOKKKXKkddkXKKdkkKXkKkOOkXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd;;;;;;xxc;;;;;; MMMMMMMMdXx,,ol:,:::;,'::lxl;,,o,':lc'lXx''ok,lKX''cdXKKk000MOXlXddMOdKOOkdOKkMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd;;;;;l;;l;;;;;; MMMMMMMMdXdkl:':xkc.'ckKdddx'''...xxc'....XXc:....xOddKKdkoKKdOkdokKddKdKdKkdKMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd;;;;;;XXc;;;;;; MMMMMMMMdXKxcloxkkcooddkokXc::xoK,:lXcokd;:cX;xKk,,lkkXxdoxkkkXkKddddKKdcXOdkKMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd;;;;;;ooc;;;;;; MMMMMMMMdxKolOdOXkxokokxxkKdkdKOdKkddXckddkKOockO0kkdol,KKoXkookKdkkKX;Xxk0KKdMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd;;;;;lokc;;;;;; MMMMMMMMKokK0OKXoKKKKkOKdXddKKKdkkXkXlodo,,Xk;lkX,;oXl;ll'',xkKkoX,coo,,,cKdkKMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd;;;;;;xko;;;;;; MMMMMMMMKokOdlkOKdKxXOdKdKkXXdkddddoc:....xoc:....,;:...'.'ccx,;c,.:oXl,,;K0kkMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd;;;;;clxx;;;;;; MMMMMMNOkdxXKXO0dOdkXdK00O0KKKddOkKKo:loo:;oX:,lx:::c:,coxlll;::'cxlc,;cc,lkXkMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd;;;;;cc;;;;;;;; MMMMMN0OKo0KdkdcXkkKddkkdKdkkdKdWWOOkdKkKMMdKXllKooXl;,:xo':l;'';,ll'.;X;;xckdMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd;;;;;coll,;;;;; MMMMM00ddXdddkkXkXKKMW0d0XkKxdXoKkKKkKKkdKkKdkllk;::l;':'.'.;lx,::;.;xlc':ddddMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd;;;;;;cll;;;;;; MMNMO000KkKX;xOddKKooddO0MkkkXKKkddkoKXXoxxlc.''...;,'.';oXcxc;:c..:;:x:;xkddKMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd;;;;;;lXo;;;;;; MNO00000KKollKkKMWOkKOdOo0KKdONdKKKKkoxooxxoc''coc::;cc,,'xo;.'c:';:':',kkkokKMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd;;;;;;kl;;;;;;; OO000000KxxkxkkxoK0MOKxXXkdKO0O0MONkOXxkkxxxdkkkkxKkdXxx,::'.:''lkoxo:.,XdkxkKMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd;;;;;lolc;;;;;; 00000000KoxxxxxxxoKONOKooKxkxkxokKXdOoxkxxxxddkxxdddddk;'..:lokoKdxdx;xKddkkkKMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd;;;;;ll;l,;;;;; 00000000KkxooxoXoxXkKkkXXoooxxxooxxokkoxxxxxddKxxdddddKoxloXokkkddxxkkddkXXooKMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd;;;;;;;c;;;;;;; 00000000KXkXkXXXoxXXXXoXXkkKdKdOOOddKOKKKdOddOOOOOOOOOOOOOdOKKOOOOdOddKKOdkKKOMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd;;;;;cXxl,;;;;; 00000000OOKdKOKK0d0OddKOKdO0W00O00MWMO00M0MM0MNMM000MWM00O000MW00W0M00M0000000MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd;;;;;xcxl;;;;;; 0000000000000000000000000O0NNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNdNNNNNNNNNNNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd;;;;;lkox;;;;;; 00000000O000000000000000OdNMNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd;;;;;xxxx;;;;;; 00000000OO00000000000000ONNNMk0MdNNNNNM00NONNNNNWM0NNWM0M0MNNMNNMNNd0NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd;;;;;xXox;;;;;; 00000000oOKKdkXkddXKXOk0KdKkOdNNkOOKONNXMNMOd0OdOOkdO0MXddddddOOKdWd0ONMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd;;;;;c;lx;;;;;; 00000000dO00OdddO0OdO0O00O0000N000MONMMMMOM0N0N000NdMMM0M00O0O00ONMM0ONMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd;;;;;;xlc;;;;;; 0000000000000000OOO0OdNMMMMMMMMMMMMNMMMMMMMMMMMMMMMNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd;;;;;;;;;;;;;;; 0000000000000000000OdNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd;;;;;;;;;;;;;;; 000000000000000000OMNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd;;;;;;;;;;;;;;; 00000000000000000OMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd;;;;;;;;;;;;;;; 0000000000000000OMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO;;;;;;;;;;;;;;; 00000000000000OdNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM;;;;;;;;;;;;;;; 0000000000000dMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM;;;;;;;;;;;;;;; 0000000000OOONMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM;;;;;;;;;;;;;;; 0000000000dMWNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM;;;;;;;;;;;;;;; 00000000OdOOddNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMKxKdOdKddNNNMMMMMMM;;;;;;;;;;;;;;; 000000O00MddOMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMkcclcxllllxX0MMMMMM;;;;;;;;;;;;;;; 0000dONNMMMNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO;xlXXoXKKcl0MMMMMM;;;;;;;;;;;;;;; O0dONMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMOkOol.;;,dxoOMMMMMM;;;;;;;;;;;;;;; 0NNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNdkxlxx;cllxX0MMMMMM;;;;;;;;;;;;;;; MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNOX,KddkKXkcKNMMMMMM;;;;;;;;;;;;;;; MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNO0,...'kXlkd0MMMMMM;;;;;;;;;;;;;;; MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0cxklc,;kdKo0MMMMMd;;;;;;;;;;;;;;; MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMkd00OOOOKKOMMMMMMd;;;;;;;;;;;;;;; MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO;;;;;;;;;;;;;;; MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO;;;;;;;;;;;;;;; cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc:...............
Authors: Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides
The daddy of all design pattern books. Introduces concepts like Singleton, Factory, Observer, Decorator, and Command patterns, which still dominate software architecture today. If you haven't read this, you’ve definitely used its patterns without realizing it.
The Clean Coder: A Code of Conduct for Professional Programmers
........................................................
......................'''''::::::''''''.........................
...................''::::,,,,,,,,,,,,,'''.......................
.........................'':,,,;;;;;;;;;;;;;;,,,::''....................
.....................'':,,;;;;;;;;;,,,;;;;;;;;,,::''''..........,c'...
....................'':,,;;;;;:::;;;;;::::,;;;;;;,,::''.......'oXxX;..
..................''::,,;;;;;,;cllxxxxxlc;::,;;;;;,,:'.........:'.:'..
.................'':,,,;;;;:;clXoKKKKkKOool;::,;;;,,,''.................
..................'':,,;;;;,;clXKOOMNWWWOdKkxc,:,;;;,,,''.................
,,''',:'.''',: ::. :,'c.'.';::''' ,:.'..'''''' ....................'',,,;;;:;clXddWNMMMMNWMdKXxc::;;;,,,:'..................
.:,:::c,,l;';': ,:.. ':;';;;,:::;., 'c;c:;.lc::,.......................'',,,;;,:;lxKOOWMMMMMMMWOdkxc::;;;,,,:'..................
.....................':,,,;;;,,cxXdKWMMMMMMNWKdKlc::,;;;,,:'.................
':,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;cc;;;;ccclllxxooXodddddddOkoXooxxlllccc;;;cc;;;;;;;;;;,,,,:::
;xxxxxxx:.xdo :cllx, ;dk. .;lllx: cdX
XKdMMMOdx.XNd. ;0WdkkKX xNM. .. .xdW0kkOc XMd.
.KMK .XMOckko. ';kKk;' cMMl xNM' ckKKo' ld0Kkc. :oXcxkXc KNM, ;okKkl. .ckkxdMd. .;kKkc. ,oc;kc
.KMK .XMNxcNNk.'dMc,xMd' .0Mk. xN0'.KNk;lNd' cccXNNl ;dNOlX00c :MNx .XN0clKWd.'OWdxxMMd.'k0l,xNK'cdNMXc
.KMK .XMK. xNM'xNNKOd0d: XN0' xN0:cNNKOKOO;.XOddMNX.,ONl 'MNx '0Mk. :0No ;NNlxN0' XNd.oNWKOK0d,;dN,
.KMK .XMK. xMM',NMl:::' :ONdx;;;, xNM''0NK:::: xN0;:dNX.;dNl .MNX cMNOc,;;''KMk;:kN0',NNk;cdMd.,NMl:::' ;dN:
.XOk .Xdk lOK. ,oOMM0c .;KdM0dx cdd. 'XdMM0k.'XOMdK0K.:Kd; .dOl 'oK0M00; 'xOMNdX' ;dMMKldk. ,oOMM0c ;dK:
. . . ... . .
.. .. ........
.. ........ .................
. .. ....... .....':'................:.........................
.l: ;''.':.:,c':. .:';c ','.':'::'.'c:..:.';; .X::':c''x;c,::,,dl,,',',:,:,;:,;:';:x::ollc,;,':,,,,';:,,,,:,,:,'::':''
;;c'.c:.:;,,;,cx,' ,:,c: :;'.c:;;'c;,c,l,c;':; 'c,,,lc.:x:'l:l;ok,Xl;lllxllxllo,xcxxl::o:,o,ocxocko:oKxx;x,lc,c;ox;c,';.
.. . . . . . . .. .. . .. ........'....,,,::::':':::',;,:''.:.''''':'.'::;ll;;,:::.'.......... .
.. ...........:;,,,,:..........,;,'..''''...'''',,,,,'::::''.........
.... ......'.';,,'''':,'....'..:;;,'':::''''::,,,,,,,,,,,:,,'.........
. ...........:,,,::''''''':',;,,:lXx,;;;;,::,;,cl,,,,,;;,;,;cc,:'........
..............':,'''.:::'.'':;;,,,llkl,;;;,::;cx;,,,:'::,;,,,,;,:''''.....
..''';l:..'::.'.',,;,::',:..,coXklxxXkxc;:,,;,;c;c,,''':'::,,;,,,,''''.'...
....:::;,,;;,;:',clcc,c,::;;loXKkl;clc;;c,,;;;,,;,cl,':::',,,;,,,,:;;;,::'...
.................,;::',lxllxK0kk;::;,;,;oo,;;c,,;c;;,cl,,;;;;;:'''::,;l,:,:'::,:'......
............'..'..:;;,:,,,,;,;ck0ddx;,':::;,,x;Xko,;Xccx;,,,,:,,,,'''',,;;,,;,'..''.......
..............',,:::c;;,,,,c;;clxodkKKXxl;,,;,;lokoKKlxXcxcl;;,':,:,;;,:::,,;;;:.............
......'...:::..',;,;xkookKkXdkooKo,;cddKKl;;,,cloXkXxdkdx,kXclkl,:::,lkKc;:,cc,,'.............
......''''':,'':,;ooXdOOoxxKXkl;kKl;,;ooXkoXxxkdddXxXo,,;;c;,;xoo;;lcxlc,::,;:,;'.....'.......
.....':,,::,:,;,;,,ddKdOOOXxc;oXc;kOo;cloXdkKkXkddKkXoxxlc;:::cxlokKXXc:'':',;,,,'............
.......::c;;lclx;,::ckKOKkxlxxc;c;cckXkXkkoXKXodkXkXkdooooxoXkXl;,;;;,l;:'''':,:;,,,'''':.....
.......::,clxcclc,,::;xddXc;;;;coXXooXdOXkxKkoXkkOKooKdXoooxlXxxl;,;,llc,''.:,,;c;,,:'''''...
......',;ol,;;;;ccl;;xXdkKXXooXokdookodKkkKoXKkKkokXkXkKkoKolxoXXl,;;cXl,;,::;;ccc;,,'.......
.....''',:;;;,,;,;;;,,lxodkXkKddddkkXXKkd00KkKkkkooKkXKooXXXkKdKkXkKl,;;lxool,,;,,,,,:'.........
......'',,;;;,'''',;;;,;lkxdoXxxKdddXKKdO0KXkdOdddKOKKXkXkddddddkXoKkkKollclc;ox,;,:':,:,:........
. ..........''':;;;,;:::::,;;,oXkooxodddddXdOOOOkKXKN0KkKdOOOOOO0OO00OkXkdkkKoxxl,,':,,:,,,,,,'..........
. ...........'.:''',,,::'...',,,cllololXXkddkKO000OOKkOONOXkKKKKKd00000dXkKdKKKoc;l,'':cc;;;,,,,:...........
......'....':;,,::;:;:;;:''':,;;cooxcl,lkKkxkOO00O0OKKK0NOXkKKKKO0dKkXkkKxXKkl;,,;xocl;,;xc;:::'''........
.............'::::''';;ccc,;,,;cKdOdkKXlclkKkxxXkXXXkO00KK0N0XKO000doKddKXXxxxxl;,xko;,,;;:''..............
.........:.......:,:'::::,ol;cXXKdxkclXkXXKkXXxoXXxoXOOOOKKOOXK0OOkXxkoooxllxooXXkoc;,;,'::,::''...........
......'.',,....':..:'. ....::,xxdKKkKXXxllXdd0d0OXKXd0dOdkKkKd000OddddXXxXkodol,,,c;,,,'';;;,,::'........
.........:::,,:'.........'.. ..',c,;;l;,:;coKkkd0KkkdKOKKkXKKKKkkKd000kookd0dl,,,;c;;;,;,;,;c,:'........
.....'''..',:...........';. ...':'.:;,;,;,;lxKkdOd0KdkkdOOKKKkXXKKKO0OOddXok;,,,;;,;,clc;;;,'''''......
....:'':':,cl'........::........'........:,:,;cxkdxKddXXXXxkXd0KKKKKKKKKOKKXoXloxol:,c,,;,,,,'''.............
....:;,;:,x,;;:'.......,::................'',cookXXXXXkXXoKOOKK0OdKKKdKOO00Kllc,,:;;,;;,;,,,::'..............
...''''::,:lo;:.......'::.:.................':xKXxXXkOkXxkoKOdddO00Odd0dkdddk;,,:'.',,;,;l,'''''''............
....,'....:;,l;,:':':,,;'.........'....,,,''.:cokkdxkKdXoloKkKXokoKddkXXxxoXXXc:'''.',;lc,c,::'...'......... ..
...':'':.':.,xll''''''...'..''''........;;;,,,cXXoxxokxcxkxokXxokkXkdddkXKkXooll;::;:,lo;:,::::...........
. ...''...',:::ll;;;c,:::cc;,:;:....:.....::,'',,oXox,:,;;;oXXxc;c;;;okKXol;c;,,,cc;:,;;;;,;,'';;:'.........
...:ll,::::,c,,,:::,,,,ol;:,c'.....''::..''':,;;KKdlc,;:::,cc;;c,;,lllkX;;;:'..'',,''':,;;;,''::,'........
..:clllxxoXKc,:......'ll,::;,;:',,,,::''''',,,XdNk;,,;,,,,,clxk;;;KxXKXxlxl:...'::'..':,::'':','''........
...''.:,;,:;,;,,::......:;,,:c'....:..'.::.'':cKWd;,,;;;;;llloXc,;ox,;;odkkc:'',,;;'..',;;,:''.''..........
.....,,:'.',:,;c;'':.',,,:',:...............',;O0X,:':;':;,;xllllkoXx;;odKk;;::;,,'':,:,':,,,'............
.....'''..':::;lc,:;;:.';,;,:'':'''.''....'.:;lKKKx,,,;xkx,c;,,;lkkX,,;klxKoc:,,;::,'...':::............ '
.. ..'............;Xc,;c....',lox,,l;,,;,,......,cccXdKXolxXolllc,:;xXkc;,ll;,;lxc,,:'......................
..................'...:'...'....::coxXXc:::'........':;cooxdKollllXxxl;cc;,;c,,,;,,,,''......'.................
........'..............''..:,:':;lo;,c;::...''.......,;,,;;;,,;,x,ccc;;'':,'...':..':':......................
....'.....................';;,;,xx;,,,c,c,,,:'.''.':,:...:::,,cxcl;::'...'''..'....''........'...........
. ..................'...:,,;,;lc,:'.'..,;'.:::;,:;;,''':,'':,;,;;:...''..............................
.... ........'',;;;,;,,:......',:,oxc:'':::.'......;,,,;,....',..........................
.. .........''''';,:':..............''..':.''.'...,,''',,..............
...........'.''..::'.............'''...''':::::'..:,'...''..............
.............................'.....::,,,,,::,,;:......................
... .............'....'::'',;''':'....................
. .......................''..... ... ':'..':. . ... .'. ',.l.. ..''...
....... ................... .. ;c;,,c,:xc;c;; ,' :lcc:;cc,;,c,;.
....... . ..'.'. '.. ' '.. .....'.. ... .
',:,,,,,,,,,,,,,,,,,,,,,,,:,,,,,,,::::::::::::::::::::::,,,,,,,,,,,,,:,,,:::::::::::::,::::,,,,,,,,;;;;;;;;;;;;;;;;;;;;,,::,,,,,,:::::::::::
.. ...........................'..''',:::'''........................
'xxxl:. .....................:c,,,;;;,;;;;;c;:;xc;ccc,,,;';;,,',',,,.
'cokXOK: .........................'::':::,::''',''::':::::::.'':::':::'.
';;kklc' ... .......................:c,;l;l;ccc,,c;,,:;,:,:cc;c',';c;,'
':l:'. ...................::::::::::'...''::'''.'':.''.'....
...............................................
.........................................
............................Author: Robert C. Martin
A call to professional discipline and ethical behavior. Talks about saying "no" when needed, handling deadlines, and taking full responsibility for your work. It changes how you approach the job.
Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNMMMMMMMMMMMMMMMMMMMMMMMMMMMMNMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWNNNMMMMMMMMMMMMMMMMMMMMMMMMMNWWNMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNWWNNNMMMMMMMMMMMMMMMMMMMMNkOMMNWWNMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNWWNNMMMMMMMMMMMMMMMMM0XoKoMMMMNWWNMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNWWNNNMMMMMMMMMMMMMMNMOOKxdMMMMNWWN MMMMNMMMMNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNWWNNMMMMMMMMMMMkdd0MMOodlKMMMMNW M0kkloxXokM;XoXxMoxooo0oddxMMMNc0MMlkNdxMddNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNWWNNNMMMMMNoK0dodOMMMOMdkXKMMM MloMMM0cOM0;kKXlMXlKKkMxk0oMMMN;0MM0cckMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNWWNNNMMMOKX0MMOxkKNMMdKk0Kd0 MklO00oc0M0;N0cKNoo000Mxk0xOOOW;dOOM0,NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNWWNNNMM0OOX00dKok0MMMKkoXX MMMKkkK0MMMkNM0k0dXXXX0dOOkXXX0KXXXOMkMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNWWNNNMM0doKdN0KXKOMMMOdK MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNWWNNNMMMdXdOdNdKOd0MMO MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNWWNNNMM00kkkM0kdMkMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNWWNNNMMNKoXMMMOol0 M0K0MMMMdKMMMMMMMMMMMMMMMMMMMMMMMMMMMOOMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNWWNNNMMMOXxOMMdK Md.cMMMM;.OMMMMMMMMMMMMMMMMMMMMMMMMMM,:MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNWWNNNMMMMdKxNM Md.cMMMM;.OM0kl;cXkxMNloxc;odMM0Xl,lk::M0Xl;lk0MMMMMMMMNko;;lk0MKxox;cl0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNWWNNNMM0dMMM Md..''''..OM::d00k'.0N.'KOd;.dO',dO0o.:Mk.lNdk0OoooooON;'o00K:,0K.:0dd',MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNWWNNNMMMMM Md.cMMMM,.OK.XMMMMl.0N.,MMMc.0X.dMMMN::MMkl,:cOOXXXXXOO.xMMMMo.OK.kMMM,:MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNWWNNNMMM Md.cMMMM,.OMo.lXXc'.0N.,MMMc.00;'xXX;.:MK,xkx.oMMMMMMMMk';Xo;.XMK.kMMM,:MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWNNNM MMkOMMMMdk0MM0kXXOOk0NKdMMMOkMMMOXokOKdMNOXoXOMMMMMMMMMMMdXXkMMM0k0MMMKdMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNWNN MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNW MMddNMMMMMOdMMMMMMMMMMMMMMMMMMMMMdOMMMMMM0XMMMMMMMMMMMMMMMMMMMMMMMMMdMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0kdMMMMMMMMMMMMMMMMMMMMMMMMMMMMMN Md..xMMMNo..kMMMMMMMMMMMMMMMMMMMk.kMMMMMMocOMMMMMMMMMMMMMMMMMMMMMMMo.kMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMOckMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM Md.,';0M,.,.kMNkc,cco;dM0Xc,,ckMk.lc;coMMd;dMxlX;,lKNMMxl;ccKNMMMMMo.kMMMMMOx;,;o0MMMx;,cxclMO,XxcM;cxc;cKMO,XMK,xl,;o0MMkc;;co;dMMMMMMMMMMM Md.cO,:,:KX.kN,'K00d;.XM,:kOOKlOk.,dNd':MX.KM,.d00x.K0:,KOdX.oMMMMMo.kMMMMK.;XOdc.dO'c00Oo.:MO.:kOO.:ONd,.00.lMo.xMNk.lN;'K00Oc.kMMMMMMMMMMM Md.cM0,;MMX.k0.cNMMMx.Xd.xMMMNMMk.kMMM,'MX.KM,'MMMK.kK.,llllxxMMMMMo.kMMMMx.;llllxdX.dMMMM::MO.oMMd.cMMMl.O0.lMo.OMMN.c0';NMMMk.kMMMMMMMMMMM Md.cMMNMMMX.kMX';ooc'.XNX'coo;'dk.kMMM,'MX.KM,'MMMK.kNo'xXX;,MMMMMMo.,cccoM;'xXocxN0;'xoo:':MO.XMMd.cMMMo.O0.lMo.OMMN.cMK:,xoc:.kMMMMMMMMMMM MM0MMMMMMM00MMMMdXk000MMM0dXX0MMM00MMM00MM0MM00MMMM00MM0KXXd0MMMMMM0000000MMMdXk0NMMMMKXdM0OMM00MMM0OMMMM000OMMM00MMNdOM0KKOOMx.KMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMX,:::lKMMMMMMMMMMMM MMMMMMMMMMMMMMKo0MMMMMMOkOMMMMMMMMMMMMkooXONMMMMMMMMMMkX00kKMMMMMMoKMMMMMMMMMMMMMMdk0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMdcOMd;KMMd.oMMMMMMMMMM0::lXo'cMMMMMMMMMMoxMO.lMMMMM0xoMNlcMMMMMMMMMMl.0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMclNMX,oMMX,Od,0l:.:,Kd.,;,'cKMMMMMM',KON0MMMKc,::xdMx;NO.lMMlcO0;xk,..;xMMMMMMMMl.0MMMMNKx,,,oOMNKl::;ocoMk,X;cO,xc,:lkMMMMMMMMMMMMMMMMMMM MMk.k0::.d0',NX.0NK.kNNd.,0MM:'NMMMMMMol;:,x0k.oMM0kkNc.NO.lo'X0Md.cNN',NNkcccccdMl.0MMMMo.kM0O;.0X.X0M0X.lMX.ld0K.,0MM:'NMMMMMMMMMMMMMMMMMM MMN;,x'0;,c'0MX.0MK.kMMd.oMMM;.NMMMM0XMMMMo.Xo.KMMMM0Mc.NO.;;;KMMd.cMN',MM0OOOOO0Ml.0MMMM;.xooolod;.dMMMM.lMX.KMMK.XMMMc.NMMMMMMMMMMMMMMMMMM MMMM'.XMM'.XMMX.0MM':lkd.oMMM;.NMMMMOc.,xl';O0x';cx';Mc.NO.lNk:l0d.cMMc.cXMMMMMMMMl.;lllk0;'coc'oM0;'xcx,.lMX.KMMK.XMMMc.NM,xMMMMMMMMMMMMMMM MMMMO0NMMM0NMMM00MMM0O000MMMMO0NMMMMMMMOOdMMMMMMOOOMMMM0NN0MMM00ON0MMMMMOOMMMMMMMMO00000MMMMOOOMMMMMMOOdN0OMM00MM00MMMMM0Nk.KMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0MMMMMMMMMMMMMMMM M0XkMMNdXOMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXxcoKMMMMMkXXXXXXXdMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMkXXXXXddlkMMMMMMMMMMMMMMMMMMMMMMMM Md.cMO;:KNMMMNNMMMMMMMMNMMMNNMMMMMMMNNMMMMMMMMM':Xkx:OMMMMdkkl.lkkOMMNNMMMMMMMMNNMMMMMNNMMMMMMNNNMMMMMMMNM:'kkkkKK.XMMMMNNMMMMMMMMMMMMMMMMMM Md.co.oMMMMx',,:l0Mx'x:x0x::,,l:lMK,:,:kMMMMMMM':KMMMMMMMMMMMX.kMM0o::;:cOMX:l,,'cOMK;:,'XN0x;'::cdM0',,.d::dddd0K.XMOo::::xO0:cMMx:oMMc,MMM Md.;':OMMM''KddK':Mc.x0M;'KMMNo.cMx.xKONMMMMMM;'l.l0OX0MMMMMMX.kMM,.Kddk:'Mo.XMM0.cMl.xk0NM;.dMM0x.d0.,MMM:.:::,KK.XM,:0MMM,'0X.dO.l.Od.kMMM Md.cMx.x0M''XXXXoX0c.OMM;'0MMMK.cMMdko:,MMMMMX.kM0x.::0MMMMMMX.kMN:.XXXXkXMo.dMMN.lMMdko,:0c'MMMMk.KM.cMMM::MMMMMK.X0',MMMNl.O0:;,;N,;:;NMMM Md cMMK;'kkc'cl;:0Mc.OMM0x',c,;.cNo'll'c0MMMM0;.;;;','KMMMMMMX.kMMOc'lx,'KMo.dMMN.lMo'll:cM0l',;,:XN0.cMMM::MMMMMK.XMOc';l';dMMK..KMK..KMMMM MMd0MMMNddMM00OMMMM0dNMMMMM0OMNd0MM00OMMMMMMMMM00OONM0NMMMMMMMdMMMMMN0OONMM0dMMMMd0MM00O0MMMMM0OMMMMNd0MMM00MMMMMNd0MMM00OMMMMMM00MMM00MMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMO0MMMMMMMMMMMMMMMMMMMMMMMMMMMM0OOONMMMMMMM0MMMMMMMMMMMMMMMMMONM0OOONMMMMMM0MMMMMMNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MdKOONO0dM00d0dMNO0OM000Od0OM0MMM00XO00OMd0ONKM00MMMM0MdNdM0NOMXNM00kOOMONdMMXMdNOM00O0d0MM0MO00dNOM0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM M0dMM0dNXMKNKKOM0KKKM0NKO0NOOMMMMMNkMxMK0KMdMK0ddNMMM0kkNOMdOdMKNMMNXNXkoMMMMkMXWkMKOKdMNdOMMKKOkM0KMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MNO0MNO00M0N0MdM0dMO0OO00MMMO0ONMMN0MO0ONd0ONOMMOddMM000NOMMNOMONMMNONd0MMdMMOMONOMM000dMdM0O0M0MNMO0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMNNMMMMMMN0O0M00MMNMMMMMMMMMMM0MMNNMMMMMMMMMMMMMMMMNNNMMMMMMNMMMMMMMMMMMMMMMMMMNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM M0KMMO0NMNk0x0ON0MdMK0OOKMMXN00O0K00OOMOOK0O0Od0OOMM0OMOd0MOO0MOMO0O0NoMMO0NOOO0dMO0NMMMMMMMMMMMMMMMMMMMMMMMMNNOkooXkMWWNNNMMMMMMMMMMMMMMMMM MdoMKNdOMNX0K0ONdNkMKK0OKMMXNkNKOONo0dOOdK0MoMkOkOK00OOKMMMN0dKdOdMKONXMkOK0ONkMkMKdMMMMMMMMMMMMMMMMMMNdk0kxo;':......;KdOMWNMMMMMMMMMMMMMMM MMKOMKM0MNkkM0OK0N0MOOKKOMMKNOMdMOd0Kk0M0dM0dMKOMkMMMMd0XNMMKdMNk00KdNKOOOON0MOMO0kdMMMMMMMMMMMMMMMMM0od0O0Kc,:''''x:..,kKdKWNMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMN000MMMMMMMMMMMMMMMM0MMMMMMMMMMMMMMMMMM0MMMMMMOMMMMMMMMMMMXKOOo;''':xooox:..lXXdK0NMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO,xOWWN'lWWWWWNMddkkoc,':':cdxc':.. :oXkdKNNMMMMMMMMMMMMMM MMNMNMMMMNMNNMNMMNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0M0l';o;.ckXKKMNKOdx',c';:loOoxo:'' 'coKXOKWNMMMMMMMMMMMMMM M0O0O0dK0KK0KOddOOdKMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0o;,c'''' '.;KOKkOOX.....:.,xOo'.:: ;oXXOKMWMMMMMMMMMMMMMMM MMNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMN0:'''..,lkodXOOc :'..'.'okxx:. loKkdKWNMMMMMMMMMMMMMMM MMMMM0MMNO000MdcKMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMKx:. ,oXKkkdkK, . :xdOdol,: .;oKXOkNWMMMMMMMMMMMMMMMM MMMMKXKocxllxcxXNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMco. 'okoxXOo,. ;KKkdKlc;,. ,cokXOK0WMMMMMMMMMMMMMMMMM MMMMMdOMMMMMMNMKKMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNlc. ,loxONc'....:OXKxl;c;' 'cxXkXOKMWNMMMMMMMMMMMMMMMMM MMMMO0000d0ONdddO0WNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMOxX:',;XKKKdc...'..xkol;::'.:coXXKOdOWWMMMMMMMMMMMMMMMMMMM MMMMdO00dMNKM0OM0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMKKKXkXl',:,c:c:..... . ''lokXXOdOWWNMMMMMMMMMMMMMMMMMMMM MMMMMdd0MMMMMNOddMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNMOokdx:;x;':''',.... 'cokkXddOWWNMMMMMMMMMMMMMMMMMMMMMM MMMMMNOx;coocxkMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMOOk0Kkkkl,''clcxxlxKXX'.. 'lokXOKOWNMMMMMMMMMMMMMMMMMMMMMMMMM MMMM0c;ON0M00MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0dkxXlodOdkKl;.cX,''':;XOdko,.. 'lokXOOMWMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMOMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM000d0dkolc,:'::llll,,:''',KdKXoc'... .coKoOKMWMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMOOdk0MKkx'.:;ll;';:''.'o,:lKOKXXl:.... .,oXoOKMWMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMOOKOMN0dXl,l;':;;lc;''..',okO0dkxl;'..... ,xXKkdOWNMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMdkKk0MM0xccll;l,':;c,'';;'.lKO0OKkoc,'...';cxc. ';oXXddKWNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNd;ok00do;,ox:cxxl:.::llx;;;.,O0kXox;'... 'XddKXc. loKXOKOWNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0d,,xl::c,ccl::lc:';xk0000OddKc:lxll;'.. xdKdkc: :okXOKMWNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMN00MMMMMNdoxXx::cl,;cl:'':,xd0000OdkXXox'..':'. KOKKo, 'xXkdOOWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMKlxOKccXMOkOdx::cx;,Xc'.'xdO00OdkKXoxxll;'.. 'kkKx,..;oKX0kNWMMMOONNNNMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMK.'XMNO: ,KKd,,x;,,:,,',kO0OdKKool,::'.,:. . .:x;xoko:....':cloOOk;,0M0NMWWNMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMN,. :dOOxcXkkcol;o;':c,'kkKkXoxl::.... . ..:;lkXXcl;:...'''......'','',ckKOWWNMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMX. lKkdkol,::cl:;c,...loxcc;... ..,cokXKKdddXc;'.... .''.,Kkod0KXNWNMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMK. ,kMkcxl:.';oO00d'......... ..:,;lkkkKKdd0MWNNWMKKXkox;c:.'....'cod0kOWWMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMXloMNo. .XKkl:.;'coO0OKko,..... . ..:'clkXkkkdKdOOMWNNMMMMNNWWOO0OdKX..XXc;'.cOdKNWNMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMM0Xxcx:.:,.. ';Xlcc,;Xd0KkXkkc'. . .',;loXXKkKddd0OWWNNMMMMMMMMMMMMNNNNNNK'dKOOOdKXdKk0WNMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMNOo.. ....,ol:;X,KOdKkkXkXc'.. . ..:cxXXkKkKdd0OMWNNNMMMMMMMMMMMMMMMMMMMMMMMMWMOOOMWWWWWWWNMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMNc,,,,.'.'lxxc'..:,dKkXkxcllloXkkol. ':,lXkkKKddKOOWNNNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNWWWNMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMNx':X0do:..''';ooc:.. ...coXKkddKl,:lXkkddOMWWNNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMKkXOkKXol,'''.... ....';lxOKKK,'dodOOWNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMkccokXxkXlc'.'... . '':..kKkdOWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM0o;:ll;,:.',:... .. .':':,,,..... .odX0OWNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMNd0KOdKXc'...... ..:,cookkKKkkdk:.''.. .coKkdOWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMM0dOK0OdKkXo' .':;oXXkKkdKdd00OK:..'.. ';oKoOkNWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMM0xxdM0XoXool, .:,:;;XXXKkKKddOOOWWNNNNx.''. :;oXXOK0WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMNKllolxoXkxl;': ..':coXXkKkKKdd0OOWNNNMMMMMMK'''. ';oXXOK0WNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMM0d;xxx:....'' ..':clXXkKkdKdd0OMWWNNMMMMMMMMMM0;'.....,ccKkOKWNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMo,xX;' .:;ckXkKKddOOOWWNNNMMMMMMMMMMMMMMM,''.. ...,xllXkMWNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM dcldc' .,lxkkKKddOOMWNNMMMMMMMMMMMMMMMMMMMMN;:'...''..:lXKOK0WWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM XKX'' .'lxkXkKddOMWNNMMMMMMMMMMMMMMMMMMMMMMMMM0l:... ',,:':;KOkNWNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM Od'.. .,lXXkKddOMWNNMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0l.c,.'lXkkkOdKkNWNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM o;.. ..lokXKOOMWNNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMdcdKdo;:l0OKKOWWWNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM x. :xXkkdKMWNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNWMO000KkkONWWMMMMMMMMMMMMMMMMMMMMMMMMMMMk0MMMMMMMMM0MdMOMMMMMMMMMM0KdK0MNdNMMMMMMMMMMMM . ;oXXddKWNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNWWWWWNMMMMMMMMMMMMMMMMMMMMMMMMMMMkXxMXMdOoOXKkOx0kdOddKXdKMNlMMddOKKo0XKKdKMXdoMM cokXOKMWNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMKx0XkxOodxMlKKkxMoxKKOX0MxMMXKdXkdodX0X0XOXkxMXdM ;okXOKMWNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNMMMNNNNNNMM0NMNMNMN0MNMMNMMMN0NMMM0MNNMM0NMNMNNM .oXkddOWNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM .okX0kWNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM :,:KXdKMWNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM ckxkokKKOMNNNNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM ,'cloocoxXlX0MMMM000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Author: Aurelien Geron
The Swiss Army knife for anyone serious about ML. Takes you from linear regression to transformers with code you can actually run. It goes light on academic math and spends its time on real problems. If you work in AI and haven't read this, you're doing it wrong.
The Staff Engineer's Path
ONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNd MWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWMkXXXOkkkkXNokkd0oKOWWOKWOkMk000WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWXMWWdxWlXklMoXkKMoXKWWdXWWkcdWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWMxkXoMWxMMo0XkkXMXdxkXdokXWkWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMdkdMk0MWW0NMWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWdWWoM0KkKOKNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWdWWKWMdOKd0WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWMOWWWWWWWWWWWWWWWWWWWWWWOWWWMOWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWdkkKKkMWWO0WWWWWWWWWWWWNXKkMMXKKWWWWkkKKKKdWWWWWWWWWWWWWWWWWWWkkWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWkXNWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWMokWWWMMMMXKM0WN0ddMMMN0Ko0M0Ko0OWWWWkoMWWWWWMM0OdONWWN0OdO0M0WM0W0MMOdOOWWW0ddOONWWM0OdOMWWMMN0OMkdO0dOMWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWW0kXKK0MN0XX0OOkO0MdXo0Odod0MkoK0WWWWkoKKKKMWXXKM0ooNMoK0N0XoXWKoW0oKMMKoMMXX0NMdX00XKMNMkXMModOOWWMokMMdNWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWW0WWMMdXOWkKWWoKWWWWdo0WdoNWWdo0WWWWWkoOOOOMWXXWWWMoNKkWWWW0oXWKoW0o0WWOoX0oXkkkXXkkoXkkkKXMMoMWWWWWMkkKdMWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWW0oXO0OkXMWkk0OdXd00kko0WdoNWWdo0WWWWWKoOMMMOWXXWWWMoN0kXd0ddoXWKoW0o0WWOoXMXXdM0ddM0Xo0M0XOWMoNWWWWMk0MOodWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWN00OM0MWWNOM0WNO0000dNWMdNWW0OMWWWWWOddddddW00WWWMdNWM0OO0dokW0OW0ONWWMO0WW0OO0ONWWM0OOM0MWMdNWWWWW0OOMMWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWKoKKKXKWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWNddddO0WWWWWWWWWWWWWWWWW0dMWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMoKdddXXNWWWWWWWWWWMo0WWdoOWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMoMWWWdo0OkXKkkkkWkkokkOdokXkoOMWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMoKkkkkd0XKMWWOXoWWMo0WWdoKWWOodWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMoO00MWW0odWWWNkoWWMo0WWdoOWW0odWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMoMWWWWWWMXkkKkXoWWOkXKMdoOWW0oOWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWOMWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWWWWWNWWW0MMWMMW0MW0MW00WMMM0WWMNWMM0WMMWMMW0MWNWMMMWMWWMMW0MMMMM00M0WMM0WMWM00WMMM0WWMWWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWWWWWxoWXdkcWxl0XXdxdW;KkMxkoxWXXXcodlk0XXodxoocdKkkMKWNxMoOxKlXNl0codolo0lNXXkXMlkxxoKOWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWWWW0kkMdkokKXX0XXdoOWoWkdXOdkWKK0XKXKONKOOOXXNokKkkdXdMoOXkoKdlWXWXO0XoKKXkd0OdKkddkOKNWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWlkkdlOXKOdxX0kxOlMooKXodKWXkMcxOoKkXldOKookxWNxOlXoXKXWl0NlKkkXWxOdxX0xdWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXdOxdkxO0dkkdKkMKWXX0okOoWXKdXdMkdKx0xWMOK0xWKdkXNxKkKWkONo0XoKOdXOXddlMWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW0dKdMdOWMdNOKk0NKWdKWWWOKdOMXdKOd0OWMkW0dNXMWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMXW0kXdOkodXWKXN0KXdWWddkX0o0M0kMdWOKWWOkMWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWKWK0MdOKWddW0dWK0MdMWOMMOMK0d0d000KK0O0KWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWN0WMMMMWWMW0MOMMWM0MWMNOMM0WM0OM0NMWOKMMWWMO0MM0MMWN0MW0OONN0MMWMNOW0O0M0MW0NOM0M0W0MN0W0M0MMWOO000OOMWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWM0OOKOdOdKOO0OddWdOOKNdMMdOKOMddddkWO0dkKdOOMd0dO0WdOKMddMOKOdWO0k0WdMMKdd0d0KOKk0O0XOXKKkWdOW0Mkd0K00WWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMNNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXlxlccclMWWWWWWWWWWWWWWWWWWXxxxxxxxxxxx0WWWWWWWWWWWWWWWWWWOkkkkkkkkkkkkNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWk;;;lc'.....XWWWWWWWWWWWWWWWWWWo;;clxcxl;;;0WWWWWWWWWWWWWWWWWNl,;;;;;;;;;;lWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWKXKkl......'KKKKKkkkkKdddKdOMO;kkoXkkkXKkXdMOOOO0MMMMMMMMdO0XcoxXKKKKXoXoNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWd0KKKdo;::,::::.......';cc:.',:,;;;ckdKddOKXXxc;;;;;;;c;,,c;;loXXKO00000dkKddd0MMMWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWWMMOoollkX;,;clll;,,;,,::::,coxXox:,;;;cclxl,XO00OdXKkoooooXoooXXXkokXdKl;dOddOddXKoXxxxc,;lolXookKd0d0N0WWWWWWWWWM MWWWWWWWWWWWWWWWWWWWMMdXxx;lok0MMkXOKX,:;c;;;;,;;,;;,oX;;lo;,,,,cl;;,:xK000OOO00000000OdddddddOx;:,oxckc,dkXNWWWWWWM0N0OOdKXxoXlxc;,;cxcxxlo MWWWWWWWWWWWWWW0doxl;loKdMWWWWWWW0kOXo,,,;;;,',c,,:,lox:;;xx,,;,:;,;,oKd0OOOO00OO0dKKKdO00000odkcc,lll;:cc;OWWWWWWWWWWWWWWWWWWWWWWWW0M0OOdko MWWWWWWWM0dool,loKdMMWWWWWWWWWWWNkodc::::,;;,::'',:cl,xk;;c;,;;,::c,;,,xlkddOOO0KOdKKOO000OOdx,;lcclccc;,:,cWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWM0dox;;coKd0WWWWWWWWWWWWWWWWWWdokXdkkko;;;,,'.'::',,ddd;;;;;,,;;::,''':xOOO0OKkkxXXxx000k;;c;:;,;clllll;xoOWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWM c;:xokdMWWWWWWWWWWWWWWWWWWWWWWWOlXoXOOOO0d;:,;,''''''o;.;,:,;;:';;''':,;xKOOOOXklxXoxo,k0O0kc;ocllc,;lllllc,;WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWM kMWWWWWWWWWWWWWWWWWWWWWWWWWWWWWxxKXkOO0Ok;,,:,;;,;,;,:..;;:,,,,.''..:,,;coOO0dxoox,;;;,xKkdKKk;;,;;,;;;;;;;;;XWWWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWWWWWWklkxkd00O00X:,;,;,;;,;l,..,;,;,:'...::,,;;kO00dc:ccc,,,;,,;l,oxl;,,;;:;:;:c;ool;0WWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWWWWWNlXokOO00O0OOkxloo;:,;;:,:.';;;:''..'':::::;OOOOOOKolxx,:,,:ll;cl;,::;,,;:::;c;oloWWWWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWWWWWollcxXkoXKd00OdkXox;,;:c;,'.;,,,..',,:'.''''ddO0O00Oxc;;;,;lxc:lko;,,,,,,,;,;,lkockONWWWWWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWWWWKlXc;:cllllXXKOOXl;ccl;cx;,:.'':'.';xox,,,::,,;xXddddd;xxxl;okoXxl;c;;;,,,;:;coXokocc,cXdNWWWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWWWWMOXlXoXc;;cKXc;cxkOdOdkx,cc;,oc...::;dkoox;'...,;cxKKdOOO,xc,;coxlXodclo;,;;,,:,xokXxkXdMOoc:;odNWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWWWWOKx;llXkX;,coXkKXkx:clodOOKo;xdMWK.x':,;;lx;c;cKXx;odO00OOOkX0c,o,;xxxoOdkKKoXXl;;;oKkkookXNWWWNdo;:;odNWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWW0Xl;oK0dxXxl;,,;,kKkkkkXc:kdkXOMWWWX.KWNKookoc;xXoXXXcxloOKkkkNWWNc;0koXXolKdddOKXX,,;XkkkxKkxlWWWWWWWNdo,';odNWWWWWWWWWM MWWWWWWWWWWWWWWMOXc;xdNW0XXX,,;,l,,XkkkkkkkkXcooMWWWWX.dWWWW0XXXkookkkkOXkoKOl:cKWWWWMxx0MXXKKokkkXXXX,lxooooXKoc,oMWWWWWWWWWNdo,',odNWWWWWM MWWWWWWWWWWWNKo;cXMWWWWOxx:'.:ldOdkkkkkkkkkkkXdWWWWWk KWWWWWWokkkkxkKoXddKXOdXMkcNWWWWWk,dWOXXXooxxokx:oxxxxcl;o,:';MWWWWWWWWWWWWNOol,loONWM MWWWWWWWWMol,oKOWWWWWWNlxkkoxKdddkkoclXokKkXxKWWWWWX'kWWWWWWKlOoXoXXkdkdXXkKXNWWcxWWWWWWkcKWNoXoxlooox,oxxcl;,;,,,'.:MWWWWWWWWWWWWWWWNOol:cx MWWWWNdlclXONWWWWWWWWWXcxKxXkKdkkkXkc:':',:x0WWWWWK,KWWWWWWM;OWX;;xkkkXkoXxK0WWWM.dWWWWWWX'KWWdXXxclXxcXl,::;,:,,::..lWWWWWWWWWWWWWWWWWWWNOx MW0oc,oX0WWWWWWWWWWWW0coKkoxl:xkXXXkl,:....KWWWWWo,KWWWWWWW;lWd,,,c;;ooddokkOWWWWo,MWWWWWWK;KWWdlxooooc;;oKkxccllxo:':0WWWWWWWWWWWWWWWWWWWWM l;cxONWWWWWWWWWWWWWWWoxkdXooc.:;olllc':.:'xWWWWWX'dWWWWWWWX:NW0,,;,,,XdKXoklKWWWWM,XWWWWWWWk;kWWK,,;xokXXXxokkkkXkcol,lWWWWWWWWWWWWWWWWWWWWM k0WWWWWWWWWWWWWWWWWWKlkdxkXokoxXo.. '',::',MWWWx:dWWWWWWWM'dWWW;;;:;;;XkXo:.OWWWWWO.MWWWWWWWM,cWWxxxc.,KddddXxl;;;xKolckWWWWWWWWWWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWNlxkkoolXKkXkX:;,':;;;lxdWWx.dWWWWWWWWxlWWWWxc;;l;;coxc,cWWWWWWWx;WWWWWWWWMclkcxoc.kdddd;::'';cXkXxccocxl,;'lOWWWWWWWWWWM MWWWWWWWWWWWWWWWWWWlll,:;;,xXox::c:.ccxc;KWWWx'KWWWWWWWWK'MWWWWl,:,xl;cckc,xWWWWWWWN:kWWWWWWWWMc;Oox.lKKXoo:....';,l;'. .,;:,,,:c;,,xKMWWWWM MWWWWWWWWWWWWWWWWWO;xdxloccxXXX,';';okKo;0WMl'dWWWWWWWWN:kWWWWWlcc,,,,,okx,xWWWWWWWWX,NWWWWWWWWNlxo'lXc:..,x;: .:,oX,. '':;,,,,.::'',XKWWWM MWWWWWWWWWWWWWWWWN;lokcXoxokko:,:,cokkolxWW;.KWWWWWWWWWx;WWWWWM,;;,,::;;'..cWWWWWWWWWcoWWWWWWWWWMl.''';;oclkkX. .'::,xc...,l'''...':::'.oOWM MWWWWWWWWWWWWWWWWoclc;'',cKkkkk,c:;XdXoxKMo,dWWWWWWWWWO:MWWWWWM,,,;,:xKk..,lWWWWWWWWW0:dWWWWWWWWWM;,loxxxl,c,, ..:,xxl,.,;c,::'::,:,,:,OMM MWWWWWWWWWWWWWWWO,lokXllloxkkol;;lxoKoxxdo:KWWWWWWWWWN,KWWWWWWd.::',x,kk;:'cWWWWWWWWWWX;WWWWWWWWWWWdoookkkkx''.....ooooxc,;,,,,,''::::::::lK MWWWWWWWWWWWWWWMc;xkokxoxoXXoXXxo;c;cxxox;KWWWWWWWWWWocWWWWWWWK...olc'lkXc;cWWWWWWWWWWM;kWWWWWWWWWW0cloooooo:,:'...ckooolc,',;lo:..':''...lO MWWWWWWWWWWWWWWK,lxXdcXoxXXxxkdXc;' ,XXolKWWWWWWWWWWd:dWWWWWWWK::c,,::;lxxccWWWWWWWWWWWO'0WWWWWWWWWWkxXokdKkx:,.''xkKoKXoKxcdkKWo':''::,:..c MWWWWWWWWWWWWWM;;xXKKlxxxxokkkKkox;ckkoxKWWWWWWWWWWM,kWWWWWWWWo;looxokXKokxcWWWWWWWWWWWWxlWWWWWWWWWWKkkO00OdKl:::ddOOOXkXoolxWWWK:,,:,,:...' MWWWWWWWWWWWWWl,;lo;c;KkkkkkXoooooxlcllKWWWWWWWWWWWx;WWWWWWWWWXc,ooXXXkxoko;WWWWWWWWWWWWN,KWWWWWWWWWNkXKOOOO0co00dKddO0OdkXXcOWW0xxkX::;,:'. MWWWWWWWWWWWWk;,clooxxoooooooooooo,'.;KWWWWWWWWWWWO'dWWWWWWWWWo;;ooXokkcXxl;WWWWWWWWWWWWWK,NWWWWWWWWWkkXdOOOx:X000000OO00OkXXlNWWWWWWNKXoOko MWWWWWWWWWWWNl,;llooooooooooooooox;,,lMWWWWWWWWWWM;oWWWWWWWWWWc;;:oX;oXcXXc,OWWWWWWWWWWWWWcxWWWWWWWWW0KoKOOOdkoOOdddKdOOOOOXKxKWWWWWWWWWWWWM MWWWWWWWWWWWo;,cloooooooooooxxooooolclkKOMWWWWWWWo,WWWWWWWWWWM::,;,l: clXxc,0WWWWWWWWWWWWWM:dWWWWWWWWNoKxXkkKKkkkkkkkXKddOKXoXlMWWWWWWWWWWWM MWWWWWWWWWWO;,clxoooooxooooxllxoooll;;;':dMWWWWWd.dWWWWWWWWWWM':'':::'',xl;,MWWWWWWWWWWWWWWo,MWWWWWWWWoXdxxxxxxxXXXxxxxXkkkkXkxxWWWWWWWWWWWM MWWWWWWWWWWl;XxkkokoxkkXxoooxooooolc;kl:'X0WWWWMcoWWWWWWWWWWWd.',;,c:'coxlc,MWWWWWWWWWWWWWWN,kWWWWWWWWdlXdkkkokkkoxxxxxkkkkkXkkcOWWWWWWWWWWM MWWWWWWWWWdclkokkXxokkkkXKoooooooxl;XWW0XdWWWWWo,MWWWWWWWWWWWK',:,;o:.coxlc,0WWWWWWWWWWWWWWWd'NWWWWWWWNlxodKdKokdKkoxXXkkXooxdXl;MWWWWWWWWWM MWWWWWWWkc,cXKokoxodkXooooXkkokoxlc,0WWMKOWWWW0,dWWWWWWWWWWWWk,,;coo:.:oxlc,OWWWWWWWWWWWWWWWWocWWWWWWWWolxooXokXXkkXKKkKKKxxoKkx;KWWWWWWWWWM MWWWWWW0:,;xKkkkkkKkXooookXkkXxoklccWWMx:x0WWWcXWWWWWWWWWWWWWx,,,lllc.:xllc,dWWWWWWWWWWWWWWWWN:KWWWWWWWO;lloooooooXooooooXdddkol;,OWWWWWWWWM MWWWWWNc,cxXkddddkXxxooooKKXXoxXodXKWWo,'cMWWk;MWWWWWWWWWWWWW;'':xllc.'ollc,MWWWWWWWWWWWWWWWWWX:NWWWWWWNclxoXXkooXkKKXKdKdKXXooxc,cMWWWWWWWM MWWWWNc,clxkkooooookXXXokooKKkKkXol0WWW0KMWWM:OWWWWWWWWWWWWWWx:,cxllx.'xll;,OWWWWWWWWWWWWWWWWWWcoWWWWWWWXxoXKdKKoXXkkKokXkkkKdXoxc,lNWWWWWWM dMMMM,':,;cccllclloolcccoxxoocooxl;kMMMMMMMM;cMMMMMMMMMMMMMMM,:ccllll'.lcc;:kMMMMMMMMMMMMMMMMMMd'kMMMMMMxcxooxxooxollolxllllxxxllc,,;0MMMMMK
Author: Tanya Reilly
Finally, a book that explains what happens after senior engineer. Covers technical vision, navigating ambiguity, and leading without authority. Essential reading for anyone who wants to grow without becoming a full-time manager. The chapters on "being glue" hit different.
Natural Language Processing with Transformers
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNWWWNNNNNNNNNNNNNNNNNNNNNNWWNNNNN MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNWWNNMMMMMMMMMMMMMMMMMMMMMNWNMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNWWNNMMMMMMMMMMMMMMMMMd0MMNWNM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNWWNNMMMMMMMMMMMMMKxoodMMMNW MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNWWNNMMMMMMMMMMMOOolKKMMMM MMM00MMM0M0MM00M0MMMM00ON0NMMMM0M00NMMMOMdMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNWWNNMMMMMMM0oXM0xKXkMMM 0XxkkkoOxMckkkld0cKkk0dlN,OMMMXkMMKl0XlMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNWWNNMMMMXxXdXMMMxKXXX OxNMMMXoMNclXlx00;XXX0dcN,OMMMXkMMMd;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNWWNNMMNKdxOxXdM0Kkx 0lxKdkcOMNc0MKcM0cddd0dcN,kddOXoddOMl0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNWWNNMMNdXokXo0MOK MMMd00MMMMOMMM0d0OOOOMMONOOOOMdOOOOM0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNWWNNMMNMxKXddMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNWWNNMMNOKlXxM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNWWNNMMMdkoo MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNWWNNMMNNd Md0MMMMN0OMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0XKMMMMMNd0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNWWNNMMM N'.o0MMN.:MMMMMMMMMMMMMooMMMMMMMMMMMMMMMMMMMMMMMMMMMO.,MMMMMN.,MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNWWNNM N'.:,OMN.:MM0XlclXoc0k;.:coMckMMMKcKMocdxkMdXlclKllMO.,MMMMMN.,MMMMMM0olclkxcM0coXlcoKMMMKocllKcXMkcMMMNcXMMMXlcckoc0M0klclXXckMMkxlcoKMNWWN N''M,.XN.:MM:,kOOx'.ddK.;dd0.xMMMX.kM,.;XdK.cK0Ko.:MO.,MMMMMN.,MMMMMk.lK0dl..N0.'d00,.d0,'XO0d,.cMl.MMMN.;Mk.,k0dx..dM:,k0OX:.XM;'k00K';MMNW N''MNk.c.:MX.kMMMMo.dMM.lMM0.xMMMX.kM,.OMM:.NMMMN::MO.,MMMMMN.,MMMMM;.NMMMM'.N0.cMMMX.kO.XMMMMk.cM;.MMMN.;Mc.NMMMM,.dX.kMMMMX.Xd.',,,,:'OMMM N''MMMO,.:MO::oOdo'.dMM.:KO0::kKK,.kM,.dMMX.;k0Kc.:MO.,MMMMMN.'XXXXKX';k0kl..N0.cMMMX.kMl.okkx:.cMo.xKKo.;Mo';X0kx..dM;'xkko'.XM;.oKdkxKMMMM NXXNMMM0XkMMMKxxxXdX0MMdookMMXclXKXOMkX0MMM0oxlxKXXM0XKMMMMMNXXXXXXdM0oxxxKkXMMXKMMMOXOMMdXookK.xMNkxxlkXdMMMXxxlkkX0MNkXoodl.KMNdoclxkMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd',xox'xMMMMMMMMMMMMMMMMMMMMMMK';lxc'oNMMMMMMMMMMMMM NoooooodMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNXx0MMMMMMMMMMMMMMMMMMMMMMMMMMMMNOOd00MMNxxMMMMMMMMoKMMMMMMMMMMOOdOMMMMMMMMMMMMMMMM N'.kkkx.;MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMkXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMkXMMk'kMMO.xMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM N''MMMN;.0x:X,xNk;''';KNMMo;'':;kMO;:::;oMMK,::,oM0x:,:cKMx:NN:,c,':o0MOo,:,;x'oMMMMMc:KMM;'KM0:,Mc:0;'.''KO.,c,',XNMMMMMMMMMMMMMMMMMMMMMMMM N'.ccl,'XMl.xO0o.XMMMX.x0,'dNM0XOk.,000k.;Nc.XOddMd.,dKdMMl.NN.'0MNX.XM:,dNMMc.cMMMMM0.;Mo.,,Mo.oM;.dNk.XNNO.:0MMx.KMMMMMMMMMMMMMMMMMMMMMMMM N'.Kdd0MMMl.NMM,'MMMMM',M.;NMMMNMk.:ccccccM0koc',OM0ox;'oMl.NN.;MMM0.od.;MMMMX.cMMMMMMX.k.od.X.;NM;.dMk.XMMO.xMMMk.XMMMMMMMMMMMMMMMMMMMMMMMM N''MMMMMMMl.NMMO;'xox',OMk',xXl.kMo.;ooc,MNl:oo,'KO'xox.cMl.NN.;MMM0.oMk',olc:.cMMMMMMM;.,0Mx.'0MM;.dMd.,XOO.xMMMk.XMMMMMMMMMMMMMMMMMMMMMMMM MddMMMMMMMO0NMMMMdKXKdMMMMM0kXdMMMMMKXXKMMMN0kXdMMMMdXkOMM00NNd0MMM00MM0dOOOdX.XMMMMMMM00OMM00OMMM00MMMMOKO0OdMMM00MMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0l::,':kNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM Olllllllc0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO;,lMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM 0000'.M00d0NOMMMMdKOM0OMMMMMddMMMMMOKdMMMM:'OOMMM0KO0MMMMMMMOMMMMdO0MMKO0MMMMM0KO0MMMO0MOMMM0K0NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMM:.NMM;.;:K0;',x,:''M0.,,x;.;0Mc'xl'Kd;..;xMl';c,';OMl.c'l0 ::l:',,x,'kMMx';xl'oMM,.;:dO':x,:OMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMM:.NMM;.XMM;'0MMM0.'M0.;MMMx.kM,'oXOMMN',MM;.KMMM0';Ml.kNM0.cMMO.,NMM':M;.lXXXX.;M,.dMMK',xkdMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMM:.NMM;.NMM,.dMMMK.'M0.lMMMo.kN0dKX':NN',MMo.kNMMd',Ml.OMM0.oMMO.,MMM::Ml.lkkkkkKM,.NMM0d0kl.xMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMM:'NMMc.NMM0o':;:;':Md.oMMMX.k0;'c;'oMN',MM0o,',::oMMl.OMMd.oMMO.,MMM::MMx,:l;'cMM,'NMMk::l::kMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMNNMMMMMM0OMMMNMMNNMMMNNMMMMOONMMMMMMMMMM0O0MMMMNNMMMMNNMMMMNMMMNMMMMMNOONMMMMMMMMMM0O0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MXOXM0M00OXM00o0N0O0NOOMMOdMMMON0MOMM0O0NMM0ONN0O000MMMMX0M0O0M0OMKOdM00NOMMd0dMM0M00OMMOMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM Mcdl0cMXdKXdkKolKoOxoKldM0kMMdKoX0kOxKlkd0dKkkxKlKxkKMMkOlNx0xKXOoKdoXO0OdlKlMxXKOKx0oKlKNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MoKddxdXddkKKKoxOKMookkOMOoKMk0XXNddoXKKkdkKdKoXdkddMMMK0KMxKodoOkdOXKddkKxOX0oKkOKXNKddXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMKkK0MMMMMMMMMMM0kkONMMMMMNKKKMMMMMMMMMNkMMOKMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMkM00dMMMMdNMkMMMMMNMMMNMMdMMMMNMMMMK0NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MxOodKoXX0o0lMMoKdcddNxkOoNoOlK0xdxKKxdM0oKOKodoK0xKxMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNOMOOO0ddOMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MkodlMoOo0kNcMMoNMoOoOlXoXMxXdK0oMoKokMM0XMOXodXK0okkMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMKKkxdKXokKxKXxd0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMNNMMMMMMMMMMNNNKOX0oOdMMMMNkOOOMMMMMNMMMNMMNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMKcckxokkdKkXKKxclx0OMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNX,,;c;lxxXXxcxKc:,,kKdMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMk''':;;;;;co;;,l;;,',d0kMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMX....',,;,'.'. .:::':dOOMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl;,'.....'.. .;xl:,:,xdKdMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNMKKoXdKKOkkokKkoc;,,;;.:cclclxx;;,':l0KOMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMOKkXkoXoXXdKkXoxkkxlc,,;c;,:;lloooxc;,,:KOdOMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMOkXoXkxXkKokXoxlclcxcxcx;';,':,;c;c;,;:'c0dk0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMkkxXkxKXkooXxklxx''::;lX.'c,':.':,;::.'':KOkxdMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMdKXooXXXooooxoXl;;c';,:,,''.'.'..'.'.''.:'kdKdXk0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMN0dkXkKoXXkooXxoXlXl,,';:';::,::....''.':.':ckKkXlxodMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0OdkXclKkoXxXxoxoxkX;;::,,'',:''''''...'....:;lc,;,;kXOMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0OXkxkxKookxlkkooXokx,;:';,',:.:'..'...,.':::,:',;;c;lXkNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMOokooooxXXKdkxoXXokXc;:;',::,':':'':'....'''':::::c:,:ok0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMOokxxXlXklokkxxlxocll,;,:''c,,:,::;:'.:'''.'':'',;:,,,,,xMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMdkXXlkX;XXoxoxocxxc;:::'c:,,;,;:::'':.'.,..'':''::,;,,;,XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMKKcdXXkxlkol;Xoclll:':'':,:':::c'':''c,::,::,::::,:,:,;,,cMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0OxoxoXxXllxccoxll,:'.::,,;::,,::;;,::'::'':,,:':,:::;,',;c0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0kx;xkookX;lx;c;c,''.,;,;;;,;.',;:,;:,,:':'::::::':',;,',;xOMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0XxloXXoklcll;c,:'':,::;,,;clcc':c,':::,,.,;':::':,,',,;;,KMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXxloxxXocoo;;,'.:,;;,;;;;c;,;lc;,::;::::,,',:,',;''':,;;;dMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0ookXXoolllc,:::,,cloc;:;c;,,c;;;ccc::',,;;,:,:::',,:,,,lkMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXlol;,;;;:;'.',lckkkkX;c,;cc;ccc;;;lc;;,;cc,:,,c;:ccc:ck0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXoolclllc,:';::xkllkook,,,,,,;,;:;;;cc,;cccc;llclllxKOONMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0oo;lccc,,,'::;cllcoclkoo,,:,,,:,;,,,,,,,:c;,;ll,;xXKONMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMKxcxlcc::c;;kkl;:,xkXoox;::,;:;,,,:;,:,,,;:,;;cXXdMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMOlllc;;,''c,::xoc,,dkkXxl;'',',::,,,,;,:,;;;ck00MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMdxlc,,:'.xxx,;xkdKxldkkdoo,':,'',,,;;':::,ckMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXoc,:'...ccodKxlcl,;olcXkx,:'',;,,':,,xkkKOMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXxc,:'..';,;,,,okkl;;Kkxcl:,',,':,;;ldKXONMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMdx;,,....:xdkXddx;oXl;lXxl,';lk0lxodXlxcoXKMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM00000M0NMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0o;:'...........;kXckklXXc:';xoOM00kkOX;',lxcxOOKKM0OOONMMMMMMMMMMMMMMMMMMMKoooxl,,,;c;clxxKONMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMkc;'..'':'..:''.''oodx':..':lo,:XXXX;..'..'.:;l';,,,:,:;,lll,colxokollclc,cccllXkXXocXoXXXXXxxcclXookkKdOMO0N MMMMMMMMMMMMMMMMMMMMMMMMMMMMM0Kl,'.:,,;,''.''::''':::''':,,',,','''''::::':,',o'c:;,,;;cl;;,;,;cc;:;xcc:;ll;l;;cxKo,klloxoxkoKooxoxKXloooclx MMMMMMMMMMMMMMMMMMMMMMMMMMMMMdo,..cko,,:':,,,,'''''.':;,,,,,:;,:.'''::'':,:,::c.;:;:,:,::;,,:,,:;,;;,;,c:,;c,,,c;;;;ccccc;c;;;clclcl;;oxKXxx MMMMMMMMMMMMMMMMMMMMMMMMMMMMKk,.,KMMk,'':;,;,':,:,,,;;,,;:,,::c':;,,,;,::;;;,c:.l:,:;,::::,;,:,:;,,,,:::,,:,;,,,,;,:,,;,;:,,;;,,;,,,:,;;;,c, MMMMMMMMMMMMMMMMMMMMMMMMMMMdo:'oMMM0o;,;:.':c:,c;,;;,;,,;;:;,,::,;,,;,c;;;,;c;::.ccl;;,;;c;c;;,;;,,:;,,,,,c,xlc:,,;;;;,;;c;;,,;,;;,;,:,;;,,: MMMMMMMMMMMMMMMMMMMMMMMMMMNX:;KMMMMdlc,,:::'':''.::,:lcckokkll:ckkkkkooxooXkXo,;xoxlcc:,;,,clllcc;;,,;;,;cc,;;,lcl;lll;clclcc;,,;c;;;,c,,,;, MMMMMMMMMMMMMMMMMMMMMMMMMMk;oMMMMdKxlc;;,;:,,,,;;,,ckMMMMMMMMMMMMMMMMMMMMMMMMM0MMMMMMMdNMMMMMMNNNN0dddddNNNNMMMMNMMMMMNOOkXXxllll;llxlxll;xx MMMMMMMMMMMMMMMMMMMMMMMMMMd0MMMMdXXclc,';:::;;cllxKdNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMN00KKkoollolclc MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMKXxc;,c,';,,;llxxoKdMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNO0O MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMkoclxx;'':;llxxxokOMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXX;loo;:'.:llxxxxKMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMNKK;cxo;:'::lllxcko0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMKKllox;::,';llxcXd0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNdMMMMMMMMMMMOMMMMMMdkdMMMMMMMMMMM0MMMMMMd0OMM MMMMMMMMMMMMMMMMMMMMMMMMMMMKkcxoo,:,,:,lxxcKOMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMN;MMKXXdoMx0okOxKOMMM;MKMOOkdX0xKOxx0kXkdlOkMM MMMMMMMMMMMMMMMMMMMMMMMMMMdk;xoo;:,,:,coo;K0NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMN,dOlKKKKc0cdXOoxKMMM;MoKXdxMKXKXXdoko0oklOXK0 MMMMMMMMMMMMMMMMMMMMMMMMMMKlooo::;,,:;coooOMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNMNNMMNMNMNNM0MMMMNMNNNNNMNNN0MMNNNNNNNNNKM MMMMMMMMMMMMMMMMMMMMMMMMMKXKol'':;:,c,:;X0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMoNMNOdMMOd00OKOM0d0x0O0OdMMMOMMMMdONddKMMMXMlXMoMOdM0OMOdMdOOMM MMMMMMMMMMMMMMMMMMMMMMMMKlxoc,.:;:,c;:xXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMxNMkXOookNxOx0xMc0KxXKkK0l0MKXXOl0KocNOkMMXodXxXXoOoOoNcOl0KlMM MMMMMMMMMMMMMMMMMMMMMMNko:,,:.',;:lXxXONMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMdddOKdd0KdKMdMOOKdddOM0KddMMMddMddKMKNMdMM0XNNXMMKddMOMKMdddKMM MMMMMMMMMMMMMMMMMMMMMMMo;:;'..,;:',ok0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMKOdMMMdkddOMMMMMMMMMMMMMMMMMMMMMMdM0KMOOMMMMdMKMM MMMMMMMMMMMMMMMMMMMMMMkl;'...,;,',xX0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0;d0NMMMxMkoOkOddkMxdo0X0X0xdxK0MMoNxo0ldXOXMxdoMM MMMMMMMMMMMMMMMMMMMMNk....'.:,,:ckk0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMdXo;OMMMxMkdMxkKdoOkNoMlOXOodKXKMM0,d0cKOkdXMx0kMM MMMMMMMMMMMMMMMMMMMNo....''.c;:cXX0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMNx.....'..cclXdNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMNx....''..'xXk0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM0;..........cMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMc....'.....l0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMx....'.....,MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
Authors: Lewis Tunstall, Leandro von Werra, Thomas Wolf
Written by the Hugging Face team themselves. Covers everything from attention mechanisms to fine-tuning LLMs. If you're building anything with transformers, this is your bible. The world runs on attention now—might as well understand it.