J6d-k_|?0g*iTxrlA`81yTi*i?DGgvw0
z!sqS>g9B_oP=^yNe%X6cs?AREVe095M8b-`K4>nMd@+LT9+0O_Q^P!bb8+qT
zr~pyX`^|jkKH)>WO&PjDml2GrsD6{#6Pg-Sdreky4JpcMC
zcy^O<778HHvKOUqU}DBasXIQG9RFj{h({qiv-YfEy^R;xpc!4casIN$q9HqpYiflq
zYb!=1AsYqEw)wGn)Hr60?y{qLaRRk(2n-&K9S+~ruaP2*`HG~3WSpF5{L+_Z$nV}<
zru`}!h(v~W&WeT{w?rZP@d{ByiN8x`WE@?P^a4sJ)Q-=sgHCPA}OExXcbpyJXPVX&ky@qb`Ld
zzlZdA>Nr32YF?_yvC>tlCZ}Z^1^L`KyhcJM#(~Y_?`&nz102XEia+wRW|49Zo)D>p
zm72;LDO2odV3(y7@4jFkwX#pUy-22;z;>hEvBdj5I5}Bo2{&3I+h*8GeoGx_gt7`T
z{BUbC?G9w(7F`No7i^_yWu-vW>*;D>OKLWmhZn74u8kz^9vZmYtD`E##DEKr0I&bK
zzfLE2^ilpe(vJo4#*Nge(DZ&CJIqe$l1?l)wYH7L`L9*8`0%i7e%diCZqq*}JA4o)
zj=_mxe5^G$6=ik@w@8Vch(In3FTC3NLzqbab;%-$Q^Y|)!1
z_j*I0uE(+bl;N3+feeZFuJMOTV3p9Y&8XkveSreHMS3KN7%9SlpkbE5?{LzrEyEy`
zSmqx@eO*i1Nwcact@Ur=x7M!jCU9zRZ_bD=YY2}z#t;yAX{%vWP6I{%EB@)gxt1j6
zx!8c@nljyuy;=aKVy}u}T!E=fACSXPz-R592>i__3H)Q#fGCnmzqAmp5Q1qF&+{~l
z(3B!I+s%8VVTlRL#A*WNPn`MA(T||V&g#ISZHWM(XxQOB#bKT)z?JK9I-?}+K?<=C
zO>c~Q@%iDjooCXmBCShUg4(dQVmDdPot6Q1@^HDhcIaq~++sopiDj>~8W0r(e08Rk
zv~ucv%6fZceDOv;8SVtb7}DDQ#pNdfaXEMn)462MTw11DSEjq0*b#nIPNt(BiT5k}BgHl*7!rGJ+G3E{UVR(KVuW!WXy>_Rggu%&tRy(8O)i#+U;+3A1
z*8WHV*SD*dNKZ4bpLpRf@VKGTPTDrk_Iw8UnLILmOTSc%HZVeX86GHO+fTIq&zxl?
zfEpe-pPQlN$zznovSWN&=3H9`Hl)@zWe068U-$xf@wr-?hpuMFplXjUQ!xsp=KIjL
zbZl1zJU`7mgsaz&yinBU@Pkn?s-zaqdFVV_a)(Nfr1=D<7J5{|UGJc+R^G!32qoA23gyK>a6
zt0SX#$6(hxw<%3?vlWQ&7MTf7gbP#M3Cvafs=;DhJ?XPp4`z&-whe==
z?ArxjVCMGMi7C~shpFA03-v2-$!}CgsRgz^qfsp*j!v_29K!O+n5C+a$v`5s*1515#l>Kui*xnq8?Oq&g^I&_2&qPlyspHvekR2BD_Z~%z
zkX9ECb_bDzqc>0N0T;pKfd$70b+@7>r-#8^cyM0C3uiQ8@jb1C)~mM6iPZ3Z136)X$x@EM-jbOxX}w@qyt68}jpIJQZlu9CBa)6eZ94-z`;DrYIua4!1g}B%dcGC1AR5au
z9Jvr?ut%_tb=$3=J&<5Vdfqzx)xeK3xTv3Mx*vSPx5UoN^b+c)gQvz0a9?_fkwi19
z*oe0zDJG-?SpI^l28ANW=&TKqMgmaW?*TH
z6C;~N7>&D5ipZck`lq{k&}INcp8;k?VsYU6Xd3Oqb4ru#>!5SaHe6EeHro%d!euSA
zDaC0kA6S>+O4E<(2zDiAw*6lb)yzC~^p^q8Czgjuj9V+B=-Wt-mV7RrNc+V05*OJmh7EZ!Iz-=*!j@i_he_~9Ny$4
zcjl7bPcrrB;d!15Zqq=EJ^Yff?zwEt+O?Ur(i$P0z*UCN=R*hAE?Udh7VUFImpJe@
zxY@Zuir2k{gLwZjdhTnTXDLDmEp0An=XRral5Njq-sVn(O}fW{;nXTtNfX2Y9t@rzU#n$bi9FgXn+o}?zJb~Vyt3{d_LVG
z8J!c)4-Ir(3s^KSP2N^5n#Rse%Q?A6>_S|&&ms*ie_22
zM!mb5PnGWBTS3v89T7x8(5QG#vq!*jlhfTkdLn?(@%b0$kARTe
z!1JiMw>8OYxKkPU7_Snft6e{~)`6fkDTPbw#Rqd<6F89)IoP)Nt?i31TalKqr&()G
zAPjvuk>ogwe23eM7fb_Zx(+CYVGg;7C(%Yb1w#^GW0WIdo9~zOf|TcXdu#f#z<<%f
ze7hHW7!{c-nCu9`duiS76!8q$D&IRCTe=w|??%MS*+(*KFBADy7_jZ5!TTq!-QM0x
z!%_v;mDN&rLZ(J!{ij9$%dB-?lBvatEq<;KmMr1kQrBj=Y7c1uCZ!@x
z$PZ24f9Ca)MD5CL!`AuT!T*`zOKf7O>!Ib$z8Y&z$e5_x87E}K@O#tL9=1&Bsy<$Z$4)Exu#|^`Xz2sDIa4G?f08<1ZoyYZl9bXx1b7$G=TQyEVh^H+P`h6ls#TzMNZ|{>Jrs
zx!ib(zol&t$9w@XnY%vx>@G$AfE%qtVpG6V`!tE+-c5znwbECg-qL$>-D{e6SldJ8
zr$T-u4Q|jpUhG>OAv7*&tre&aI#8|npTlZ&{9@O;hf}p6;lh@bnbwK$sn3!>E2y?c
zZKa8^#J=eI*P2xet7j(`uaA#<{|#$3f@fQj7eZ}qdJpVTdVpQ*<&o`&TM<)GkFjlo#UF;0@R~~v
zBKwxh^p73z@Yem5aaC1jJcOA{?&g$!`>!Uo_KOBNB&&EE{m7VRv8xZ0k3_F9fdt@TZL3w74%Pw
z<=#!&^QD2t!ikdz#!rX17`jrYAdkR2u1#RxIVrJaD0){*x$9Xk>IS{Cm?o9vcdXBO
z&b|BDwd__b1BIq`G>{LiIT$n{8F%aH{@wIKqEArRW>`HnQD!9Kzr2u`+TglSBw;|M
zB0|HdOt(qddrJT;hB0gWt^o;3sLFrj+CsaXvxQoeq}5hn5>n>R5h(Y_h3Pcepf4iH
zQ%XzRtv*GNxxqupn?EC7UtyM7?KD9G*HGjH(*ZBri~qT+^>zTG*02+ZmrPZ-(0eJw
z1N_x|t<@5iUonEp*iKs#HIE)BhUa8iGX5ZE-}i1L_WGj`v(4z-Ymk1)D{K7kBYH;^
z|F17*5e*|8{g-4vcbQn?yQZpKz;wl(w_8SKprmVNIqH{YRU2(2*4ato1+?&7P-C9D
zf9_DPd%&~*^s%6f$IrUt7t%zBO6?^3$hY_jaj{b4f|l~TiZEM;C!GC&s!x+;Q`7vu
zc^VbDee}DK*42si;ROP-2$A`y0p{}TVk?CB*2WW0Fn@E51tS$(1+DLMnOeTCadyPw
z9Hic%;Wcd%NBedq})>@3U?>pCyBUxy)P#}0@q1v;Ae
z)fgD~_1{{wp>w!}Og)R~qFfsHwz^2LuQUD&OrO`A-I
zO@I4e!qwzFz1-fdm7d5Z@nE~kyVJ_4_`_=Ay%ch!*)TkFyXDYEJm{wE5^gpPbDThV
zr-8OPrAk5u*UkCFV{v6~WDB2a^U^JI6-y%?M*BEqYGM?hm}%9LnLJSpPE3AAn6Yfv!mFPh!;V6Bb$-ZJ*XnRI8fsUwH6z)-Et!*vr>#uPQo5^UVI^V=6G$T5{QHcU
z5XpThYaK1s5(|G`RDV_2V_DI{)bnr65XIdRM{x^*URh?mUH0)XXlzT}F6|-k*lDN3
z*!NetVYO=qxQ;$PzSe2jBO90XpasitvV*Lg4TLb82zxMrS`cpIO3{Vq0}a1_BB+>r#|
zXb@Zvm*J=oY03f0r4|+Xd&OPG>nd~4dD{L*l&DH~(uo2XQgfiu0MAJEeF*Oh2$Ovy
zaigY(1j-LczxpCOlP$NTh};srIdAh4lY8vk)f|bg5S?OG4$1Eh8gFj8{ywr4?Ofwu
z9*>v45}clUSgAht*7A?6nIiw3nxIXMyy8*r{c~=~%#lu!Z=Um?@U2(9(|m0N5*Ylh
z+plC5bA1P6n<2_+fPd131pBHU24cJTEAq23rQdOK3)bYYNG0bm?A5aV|QL
zC8ONq^E>@(+cwD1y7!`cdVoCI39xQFytLGR%QEgH|JT?PGTP|Rl|MZyA7%95m085U
z+n{rM@N;$>IyHjUbnmRF3uFaK1~Y09h7NyWrX?`X_;{=t$@nelH19f2iBEl}8kF#9j`FHX77PwM5VG&H^6dH&jywNxtCW)EJ36!8aTj=U7GifQ4}
zQ5@&E)1D5S=X=*1
zdZ$x6mLG(J7VE~Qyh<~f9<75<&IeL>HOgJTO+2I^RJK|JPO-8A>EwJaslm|e+5ygs+%a$8!L-+d)*4{
z%}I|pMPl3+ciWO?F&nb=PMDH>sW)ZCc{HToC_ZBdUU+y)re{B#&zysoE1kvS;swju
zk0I~7w@%x^G4hJYd0j$qVwEa|d1t1WK+)PH2>kYTnig*M?a<_NN?GEyydshYdwm=u
zw<1h7Y_ZO!3jYW1KwC!(NoD?mGqU$7Y04v;TUu9{S+r5UcKuA78>}rIK8F0#Msh0c
zptibc8+~{UdvYw{fUTo#eBqnXl~7fT#@4O9wY>#1GxEyHaL2gEnY6R^pDEL*)7>Zc0Fw5rZ{lrI2Vn+3kLY57w}@1KAgF88MUYba&bk3Di67U81t?-5*d
zloH_gqbQ#+k<3E?qbEDKn}$L_0tm}k9Ta-xmP+;`$3U7NY()o~X;?b(KPw%y`LHRv
z*;#xcis-SzTGfi7zkGIxoA*0-Zl{Six#q@djRU)oI{um**~jzh-mKd}-4eYQEL#G2
zFRxcP4~r&flQ3_zR=|i|zhjpfCQa+8Uv8TpxAz<>VDJgEe&^YNfL1*FW8d2?JPdzB
zcxc*^b~!=)_Gwo@EF`gS`?5{zpWqkM{SUpXQm!@c0SnXll#g#goyhWr7r~yXuWO^O
zK3-1=*L}mWUdedg&i+bXzbj%pf5R;7nSs_}pWUHF=&~};<>Iyp8=6Swc54~YjcHk&
zr3zquL5|Ew&CWN9O4GiHM{qahA2@&KgDoj3Z_Ngq&2Ri!TDvO%9bV~Gf7{Pg9LpB*
zO8@R?ekQ~?J@|QSneEraop_(>fsM0evsw}plOGyRrcj-1yeCb;#W_CMATWQS%gkqK
zhHHheIlbo&vO#Wpy$tqnBzyBCb-iB8=wEv2UqB`F?rxR+nZ|4SsW2ZT`NJ`94dblQ
z0{<4pH-kAR{4g)HDO%^&9#M`-Wp0an7R&c%z%sH|=ozY^vsG@htS8-3;ky%9gaUmcJrhcA<_sW}lTkvW?5?b2C3l3Dh81RmN&h!_8y3jcoF`V)5DW*A?S8Z@ObxuQuGzeB-j
zOjc5fS@ZMKH~Qn&8wMdlWcEFUfW8(+6ok+V@fmhNlBA%3S^8{M^1<-VN$-;33!}#*
z|ISS=KR_hS-+H~8LO8Nfj=Q400*BX+3Y`37#f|R{$~?zS(&o4q^GSB@=?=GTKl`Fm
z4(EUBTxKmhnYWbia(Tot|Aux+&xVGPNNr7eXoJ;o#}71pCp~Crpuc?EgX73%5AGWx
zXtHvU5>>Pr@E(_qo`eSG^tv|(+gt{lLjy_n%S*^~NmTyRgonPRq3Q5Zf2c+E)9IE@;^nRf~lyD;}mdicz)7vdbtA^OAlIPy^X<{8oXoV1(T(j$UV0=P)11XG(zi;hMOUSMZH>CzQA&F1YH7
z4;XR(S_-_N5c?9f8NS>h%`n4n$tKt3$;XIOE-kF3_Urerj2-%;>TXLmBr>1I+5U+&*D76KM~o+j45oIcSM9#Rg$
zJlgvI8&2ZhEA*l!o#G1EA&y6)HfxcK4j2NTS7NdRSEAf}kac782zBy`t8(Bi1!vmuKLBA@2_e%qY(
zYh!8gu7=cH$n?~wuz%t%WEFuCS1|zd99^t`cbv~)sh2eOXR|xL`ru{EDNWJ%{VH|lJ=yVv8d(9j
zS$oKxm0l$xR|m+iNKJHx9$)Hyx;0C)tT8UuWOpOYn9s*Ocx+}I%nlt6#;~nWjNdan
z9fI5MMrn^MRz@iiC(63MQ=9_+U<|g+h?hYDX6`fW9egYr>p|XoR
zsW`UqIaHbchdizfr?J(Vg^vV8n#JT`zJF_V;#-I_ecd~DFXE4X@GT!?TY0^Y)w(n8
z7y$5{g&Opqo4(8S?~I$cbeU%-Js;(xhbWHdk>K*Z&+DAM>WbR1JdasrJtjz{(!YMs
zu&zD|{Z;d~%%40QU9Pw}y1IA^ZnA@_nJo)vcIXy*tav)F3sOcHHrS~!}sX_W0ge}Ab~b8T?Ft4MS!u~D=kwMJrT+1)&ralgK6
zdq|KOTb6D6l%^_l08s@-oIY0DYUIYIex`mi?v|y^=pwsJSb3M(^PwC>o%2KE#;*yt
zk?_T2HzYjssmi}74Q3wsU@rXP_H#l##}5UjxN8w_%<2<;j{vWN0Uc6)xXn3nwT;Uu
zr>23=0oTwF>D}E5ANk6zPVb#HPxVYo2-j$rh@W+snp*D-XH_OgwZ!=SK2fj?l2@A@
zKWqKKwoo-@2tXIxj|CSK`@+Ff26x-&`u;haXK0b=@P0wh7Ey$t)|?>GNM+*mEX8Ap
zI?cR3;ye3XemM@xQXpV&L3dHkW^2kbZY60fm}HY5#t$%lgq~3BB0Y9_h0V{_;$t=L
z{Mz6jF%*k=5YZlZj9KhHEO^2jq#DXB0=(3A0MK=rn13G=JfyLq1`a#Z`g(G3_R(ns
z@RozFa_lzZ-=ZmtsWT&P-+N>?@
zZq>b=03BuGnWbxk9mpF5eeS_s2Z(WwIGe+@8P%c}OW%DU7gaJ64~FDSrcS9aiy-7C
zxCveZGU?lW^oDoFio=ODRl(ZO-~XZvyOt*RZW**`wKa1q{L?$PXiW~xTE{EGxNn=_
zgQi05E!igi!V<&+6?Xz~_(S0WAYFc+H#6hyL-q5*XZc4YKYMV6?1jh$plC
z7&}MFJ=1#)yz_6imrvqPA|e)tkSmBtl_+K{fV2Nw2h(;7nc)1$hk-sjxt5Hz(-ULq
zYq^md(t&AtXKS`VrjB5+sKSE-*NtrP7o^y`S)a61!;iJ(7DidwkU+-GDvTXIEyBQ1hYU{u2ZfE4>Y
zWL}X{+&ux+9zOuE47_US0=DqBagQ-lz3klELMaXk6PSRQn1&e5b8BH?U)P#-2U|~z
zO$yVNF;XrKtM$e((UJ5-;-jBG@YziiZf#`z%;e~R#{CF{(4v+dyyvt=CqUIDY)bSD
zoVHsZb)zR5TrOoR`Z0#0d%c)?(uI1sWYnzT5M0219kNvNj$_b=3AyH}@1&rIUO<3d
zk53bk!cHzrX=
z;Ax8+wh>`B==$?S?dS)X`pUJ$9(>ol4+=q#BCxNUF_A(^+Ncv$unzKn%(fu{#0-Pf
zhF5^=YBM(W1Ks#~VMDzq4>Py)^-S}ByyoG`l^vibeV#QJO4%~CSrSg)ju;}F+Tj#d
zlJb{@1;16^YCCwUz|WzvMom9<0@xCJf?6@2v(LFV
zWEhw7i9mPn4cPzy
literal 0
HcmV?d00001
diff --git a/write/lists/portfolio.md b/write/lists/portfolio.md
index b9b9abb..b5de4a8 100644
--- a/write/lists/portfolio.md
+++ b/write/lists/portfolio.md
@@ -92,6 +92,9 @@ An example scene made for libgarbage, showing most of the primitive shapes avail
==video:"/media/shaders/rm_boxes.mp4"
## cellular automata
### game of life
+`2023-07`
+I also made a web version of this in may 2021, see [gol.crispypin.cc](https://gol.crispypin.cc/?cellsize=10&time=2) or [github.com/CrispyPin/gol-wallpaper](https://github.com/CrispyPin/gol-wallpaper) for the source
+==image:"/media/shaders/game_of_life.png":"Conway's game of life"
### rule 110
`2023-09`
See [Elementary cellular automaton (Wikipedia)](https://en.wikipedia.org/wiki/Elementary_cellular_automaton).