diff --git a/content/about-treehouse.tree b/content/about-treehouse.tree index 9188d39..2f807a3 100644 --- a/content/about-treehouse.tree +++ b/content/about-treehouse.tree @@ -145,7 +145,7 @@ + ### the treehouse is a mostly statically generated website % id = "01H89RFHCQ2GWJPTAKTRGS1QAC" - - weird poems and philosophical talk are over, it's time to focus on the tech. + + weird poems and philosophical talk are over, it's time to focus on the tech. % id = "01H8V55APDEF8WTQ3KFC7E9HWB" - call this an overview, Defense of Design, or what have you @@ -170,14 +170,14 @@ - (yes, I know that website is super old, but I still find it incredibly funny :hueh:) % id = "01H89RFHCQRA4BBBWDC8K68BB0" - - if you wanna browse the source code, feel free to [check it out on GitHub][def:treehouse/repo] + - if you wanna browse the source code, feel free to [check it out here][def:treehouse/repo] % id = "01H89RFHCQFWC2FWBAE9PVNC08" - as I alluded to [here][branch:01H89RFHCQ3EAP0F6PRSEK7S1T], treehouse is built to decay gracefully as you take away the fancy parts. % id = "01H8V55APDMPF3WFTNTFSYBQRF" - - you will be able to read it just fine without JavaScript, just that it'll be a little + + you will be able to read it just fine without JavaScript, just that it'll be a little less pleasant. % id = "01H8V55APD1RSSRMDZ3CEE9S9C" @@ -220,7 +220,7 @@ janky, but the content should still be fully readable. % id = "01H8V55APDWN8TV31K4SXBTTWB" - - myself, I'm writing this content in a bespoke format called `.tree`. + + myself, I'm writing this content in a bespoke format called `.tree`. % id = "01H8V55APDGX4EYV8W7ECXZ6FP" - the structure of `.tree` files is extremely minimal. there are only a few syntactic features to speak of. @@ -229,7 +229,7 @@ - here's a taste of `.tree`: % id = "01H8V55APD5686J8GTXP118V8E" - - ``` + - ```treehouse % id = "root" - this is a branch @@ -276,10 +276,10 @@ - …actually, that's a lie. see that code example above? Markdown code fences \`\`\` are handled specially to let embed `.tree` source code blocks within `.tree` files. that's all. % id = "01H8V55APDVQB6AD23Y6PZPPB8" - - you may have noticed in that code example above that almost every branch has an `id` attribute. + - every branch in the treehouse has a globally unique ID. % id = "01H8V55APD4H5JT8NTYCCTN77G" - - this is because I want every branch to be individually linkable and quotable. + + this is because I want every branch to be individually linkable and quotable. % id = "01H8V55APDPSZNP9AK7QRK62BG" - if you ever want to link anything I said in an argument online: hover over a branch, right-click that little _permalink_ icon that's on the right side of the screen, and _Copy Link_. @@ -288,7 +288,7 @@ - but manually coming up with ids for branches would be quite the nuisance. % id = "01H8V55APDXV0KRVEF9PTA72J7" - - that's why with the power of Tools Programming™, I built a tool that fills out all the ids for me. + + that's why with the power of Tools Programming™, I built a tool that fills out all the ids for me. % id = "01H8V55APD8VG7WE6JX5JBDJEC" - I chose [ulids](https://github.com/ulid/spec) for generated ids, for a few reasons: @@ -324,10 +324,20 @@ - which is cool because it's much denser while avoiding ambiguous characters - `0`, `O`, and `o` are all interpreted as `0` (zero). % id = "01H8V55APDXT064G9PA78JW0CM" - - noticed how fast the treehouse restores your state? there's basically no delay. + + noticed how fast the treehouse restores your state? there's basically no delay. % id = "01H8V55APDGS626M5Y6DDAS9ZE" - - this is because it restores your state _as it's loading in_, by using [Web Components](https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_custom_elements). + + this is because it restores your state _as it's loading in_, by using a [`MutationObserver`](https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver). + + % id = "01J09E55GTGHTGJP3JQN1SY4BM" + - initially the treehouse used Web Components, but for Webkit compatibility reasons, I had to switch that out to a more bespoke solution. + + % redirect_here = ["01H8V55APD4V54M2EKQKQ4GNP8"] + id = "01J09E55GTFSQW46JSG3T3SSMQ" + - elements such as linked branches are implemented using _spells_, which are a custom framework for composing behaviors on top of existing elements. + + % id = "01J09E55GTHJXWRG0P9MADASRQ" + + in addition to that, many things on the treehouse are Web Components, which are another awesome API that lets you prepare the DOM as soon as everything is ready. % id = "01H8V55APD73AG65NP2VGX6169" - despite many people calling that API extremely low-level, I beg to differ. it's actually pretty easy and pleasant to use. @@ -335,20 +345,17 @@ % id = "01H8V55APDDHYNRZXQDEG0A242" - most importantly it lets me enhance vanilla `
  • ` elements with custom behavior executed on load, which I use to restore your reading progress as the page is loading in. - % id = "01H8V55APD4V54M2EKQKQ4GNP8" - - linked branches also use Web Components by the way. - % id = "01H8V55APDKY0HYEJM2C1CJHEG" - - while not strictly a technical topic, I'd like to shout out [Recursive](https://recursive.design) for being an awesome font :ralsei_love: + + while not strictly a technical topic, I'd like to shout out [Recursive](https://recursive.design) for being an awesome font :ralsei_love: % id = "01H8V55APD88JCQBQ4SHVCYR97" - (not to be confused with [Font Awesome](https://fontawesome.com/), which I do not use here. icon designs are my own.) % id = "01H8V55APD0S00ACN0YY7Y9MSW" - - being a variable font, I can tweak the text's look and feel on many different axes. + + being a variable font, I can tweak the text's look and feel on many different axes. % id = "01H8V55APDRG88JRV74MMDTV4J" - - the one that I wanted to shout out in particular is `CASL`, which lets me make it look a lot more happy and playful. + + the one that I wanted to shout out in particular is `CASL`, which lets me make it look a lot more happy and playful. % id = "01H8V55APDMP5FE9ZCMRACH18W" + almost like Comic Sans, but without all the stigma. @@ -363,7 +370,7 @@ - not everyone runs Windows or macOS, so just assuming the reader has Comic Sans installed isn't ideal. % id = "01H8V55APD2BPGQXEK7JARYJ9H" - - ~~in particular the variant on my website is 100% casual (`CASL`), and -2.0 slanted (`slnt`).~~ + + ~~in particular the variant on my website is 100% casual (`CASL`), and -2.0 slanted (`slnt`).~~ % id = "01H8V55APDXZJE3HHH5AQ8ZQHF" + that little bit of slant makes it look just a little more like handwriting. @@ -384,4 +391,4 @@ - not to mention I'd have to handwrite a lot of text, and *then* either use OCR or type it all out again for accessibility. yeah, no thanks methinks. % id = "01HRD97CSJSQN78SGM691B6PNQ" - - UPDATE: not slanted anymore. `slnt` is 0. + - NOTE: not slanted anymore. `slnt` is 0. diff --git a/content/about.tree b/content/about.tree index 7c7c0c4..b4aa5b8 100644 --- a/content/about.tree +++ b/content/about.tree @@ -1,192 +1,169 @@ %% title = "who that! (about me)" -% id = "01H89P3CH836K8WKQ9BPR6RE3C" -- hello! I am liquidex +% id = "01J09B2BZXJ989S2SGWBNZ397C" ++ hello! I am **liquidex**. - % id = "01H89P3CH8YZY1MTZS3DZGGFKX" - + also known as… + % id = "01J09B2BZX54T2GSP8H3D62S6J" + + also known as **liquidex** - % id = "01H89P3CH8GAHS8DDW1HHEWA3P" - - **liquidex** (just including this here for linking sake) + % id = "01J09B2BZXQ31FV1M3PMM6Q0GX" + - this is [the identity function](https://en.wikipedia.org/wiki/Identity_function) applied to my nickname - % id = "01H89P3CH8ER0M5WZBXQ292A2N" - - **liquidev** on various [programming-related platforms][def:social/github] + % id = "01J09B2BZX0R0AX5QHND6EBRFE" + - also known as **liquidev** on [various programming platforms][def:social/github] - % id = "01H89P3CH8943QGT52K7MRW12Q" - - **lqdev**, before I realized that name is taken. since then I use liquidev but you may see - this older name in some places + % id = "01J09B2BZXT6AAJNPEQ044KCDR" + - also known as **lqdev**, before I realized that name was taken. + you may notice this older name in some places. - % id = "01H89P3CH81FTHTQ552N7N1S3A" - - **daknus** [on SoundCloud][def:social/soundcloud] + % id = "01J09B2BZXBS2K6MRQYXFH43PW" + - also known as **daknus** [on SoundCloud][def:social/soundcloud]. + I use this as my music making alias. - % id = "01H89P3CH8PB76G26M4T8P6QDZ" - + **limiter** sometimes jokingly on Discord + % id = "01J09B2BZXAD196RA16JTY3K3T" + + also known as **limiter**? - % id = "01H89P3CH8Z4MXQ0C9EWV01DPX" - + **limitre**, which is British for limiter + % id = "01J09B2BZXNRYX758J5S00EZRG" + - or **limitre**, which is British for limiter. - % id = "01H89P3CH8P7HAGDJVGVWD96K7" - - y'know. like centre is British for center, metre is British for meter? :hueh: +% id = "01J09B2BZX25TN31D0F18YQPB2" ++ I'm a *he/him*-type cat person doing various stuff with computers - % id = "01H89P3CH8FA0JTX1TPRZV4BFM" - - before you ask, pronouns are _he/him_ + % id = "01J09B2BZXWB695M9XYF7CZ2ZF" + - > you said cat person, does that mean you don't like dogs? - % id = "01H89P3CH8A12NYRT3SC324Y2M" - - I'm a programmer from Poland + % id = "01J09E55G0QWS7X0YNBWRW222X" + - I prefer cats myself. though foxes are canids and I consider them pretty cute :smile: - % id = "01H89P3CH8VN1MPKS4RQFFW778" - + I work in the game industry + % id = "01J09E55G0MZ0WFQ3WC98YDDGT" + - > unless by *cat person* you mean… - % id = "01H89P3CH88PKW82498V91VZ4W" - + somehow my skills brought me to work as a game programmer at CD PROJEKT RED + % id = "01J09E55G0YWYMAP62Q7AM18BE" + + what? :clueless: - % id = "01H89P3CH8SPX5RZDWR00CZ436" - + not sure how that happened still so don't ask + % id = "01J09E55G09K80E6YE1T4E3KJJ" + - > y'know… like a *furry*? - % id = "01H8YJDNJFB2BGT0ASDNM8S4JJ" - - impostor syndrome going hard right now + % id = "01J09E55G0F5TVAK2MT80H598M" + + :clueless: - % id = "01H89P3CH8QSQY1M7TZVH1FYQM" - - but that game programming thing is just coincidence, in reality I love toying with - computers in general + % id = "01J09E55G0WS63QCFBPP12EMRM" + + … - % id = "01H89P3CH8TACWXWWZGGHQD2MK" - - so you may see me doing other random and weird stuff + % id = "01J09E55G0H58Q8V8NV23QSQGC" + - huh. you're still here? :ahyes: - % id = "01H89P3CH89P2Q9XGQD7BCF0R6" - - perhaps [compilers][def:stitchkit/repo] are one of those weird things + welcome to the club! - % id = "01H89P3CH8DYZHMQTGZDAEBNXN" - + or [audio][def:dawd3/repo] + unfortunately I've got no fursona to show off at this moment, please come back later. - % id = "01H89P3CH859AAGFEABN8EANSJ" - - my favorite part of that is blowing my own eardrums out with my math skill, which is rather *underdeveloped* so to speak +% id = "01J09B2BZX9QV3PM9YWPS628PJ" ++ I'm a game developer by trade :rarog: - % id = "01H89P3CH8R9WKSMMQVY0XARSF" - + heck even web development out of all things. I mean you're reading _my_ website right - now after all + % id = "01J09B2BZXNE1H2SXW9KSZK7Z5" + + I do various developer productivity-related stuff at CD PROJEKT RED, mostly focusing on the DX of delivering breathtaking games using the Unreal Engine. - % id = "01H89P3CH88M1GZ3WN3RXCW1NN" - - like truly *my my* website with *my own* backend, static generator, and all that + % id = "01J09B2BZX00X6A8Z6H4R16BDS" + - technically I don't really love *playing* big and serious games, but making one is a whole other challenge - a challenge of *scale*. + which is what really gets me going! - % id = "01H89P3CH8CFBVXBF5W3GYA70X" - - none of that pre-built stuff, this baby is generated from the *purest* samples - of Uranium-235 I could source +% id = "01J09B2BZXQKWYHC51D7QCJ6PF" +- other than game development, I program various other things… - % id = "01H89P3CH8HYM5XZRH56880TP5" - - … wait you're saying building your own nuclear reactor at home is illegal? UHHHHHHHHHH + % id = "01J09B2BZXRE1VPASMR52RWNTH" + - [compilers][def:stitchkit/repo], - % id = "01H89P3CH8EGD14MHJEET6MJ27" - - who knows at this point + % id = "01J09B2BZXYXA16X95H2JKDJNK" + + [audio][def:dawd3/repo], - % id = "01H89P3CH8RFRCTC500059H5G8" - - apart from programming I also take interest in other various things + % id = "01J09B2BZXY51P9D4BM8AADGYW" + - my favorite part of that is blowing out my own eardrums with my math skill, which is rather *underdeveloped* so to speak, - % id = "01H89P3CH864VWM4JXQ0N5C1YV" - - like video games + % id = "01J09B2BZX2P7XDH81BJ079PCP" + + [websites](/), - % id = "01H89P3CH8WK8F2XKBXFVE8KNX" - - yeah those are pretty great aren't they + % id = "01J09B2BZXN6GWK2JPC7YGT0E1" + + after all the treehouse is *my* website, with *my* own backend, static generator, *my* own design, [an only partially stolen color scheme](https://github.com/ayu-theme/ayu-colors), and most important, lots of fun stuff hidden underneath the surface. - % id = "01H89P3CH817HEVWCFHGJEGQHR" - - my faves are: + % id = "01J09B2BZXZAEPD36XG495WYFH" + + like have you wondered just how deep the rabbit hole goes? + I'm sure you can find some rather interesting easter eggs in there if you look hard enough. + who knows what you may find? - % id = "01H89P3CH8MHZMYKRFV30GSYWC" - - [A Hat in Time](https://hatintime.com) + % id = "01J09B2BZX0M925RBXR023XM6X" + - - % id = "01H89P3CH8G625Q1NQVT8CJ3K1" - - [DELTARUNE](https://deltarune.com) + % id = "01J09B2BZXX2R1TH10GGZC25KG" + + you name it. as long as it poses a cool and fun challenge, I'll be on it :verified: - % id = "01H89P3CH89TQ3SFG2Z40J29HX" - - they're pretty great you should check them out + % id = "01J09B2BZX5WED9XE2RAADFW8M" + - there's probably only one thing I *don't* like and it's backend web development. where did all the simplicity go? - % id = "01H89P3CH8AJATQ5DJBBFXJ1NH" - - or [music][page:music] + % id = "01J09B2BZXQQMPDYQJ052131GT" + - obviously treehouse is a very simple website with a very simple backend, but. seriously. + why do people have to make websites be so complicated. and slow. - % id = "01H89P3CH8XQ59YZD3RFRYQ2BM" - - various genres from electronic through jazz and even rock +% id = "01J09B2BZXS6NZKYS6CTWMG1QY" +- and other than programming, I do various other things… - % id = "01H89P3CH8V8H7BVWYTFHYQQTZ" - - in that order of priority + % id = "01J09B2BZXX9PFV33J591B3C9K" + + like video games! those are pretty great, aren't they? - % id = "01H89P3CH8ZMVBKS6CXGRB8QHB" - - electronic definitely leaning toward the more um, _eccentric_ side + % id = "01J09B2BZXDB8CZK0X6JMRMNR1" + + my favorites are :hueh: [A Hat in Time](https://hatintime.com) and :nap: [DELTARUNE](https://deltarune.com). + if you haven't played them yet, I highly recommend checking them out! - % id = "01H89P3CH836WYRR77815D8HCH" - - all you have to know is I listen to Venetian Snares pretty regularly + % id = "01J09B2BZX9CM8B5G42E2KYDBT" + - (you may wanna check out [UNDERTALE](https://undertale.com/) before you play Deltarune though.) - % id = "01H89P3CH8C719GX9CTK36FXXN" - + if you don't know what that means then good for you + % id = "01J09B2BZXYCRJDVJAVYT1P50P" + + [music][page:music] is also cool. + did you know I listen to a lot of [music][page:music]? + and I mean, [a lot of ][def:social/listenbrainz][music][page:music]! - % id = "01H8V55G7M7KEKBYX2D2RP9QQE" - + but if you so insist… [you have been warned](https://www.youtube.com/watch?v=BB7ExLcUuH0) + % id = "01J09B2BZX5C2KBA2ZC0X0YYD6" + - - % id = "01H8V55G7MWC7MQ9YQVDDFZ9QV" - - (this is one of the more crazy ones anyways. he makes some [more normal stuff](https://www.youtube.com/watch?v=IuI6MMUtNdU) too if you care) + % id = "01J09B2BZX39FGP634BM5HJ0FD" + + did I mention [music][page:music]? + I also ~~aspire to~~ [make ][def:social/soundcloud][music][page:music][ sometimes][def:social/soundcloud]. - % id = "01H89P3CH8XP6ZA1RWYVZWRXN3" - - jazz and rock I don't really know as well but I've been trying to broaden my - horizons a bit + % id = "01J09B2BZXGG5HYVYDNPVFRKY1" + - I say aspire because I'd really like to be better at it, but *time*, man… - % id = "01H89P3CH8EYKDYN83VPQQ088C" - + I really like artists who merge them with elements of electronic music + % id = "01J09B2BZXY6AN3242DYECK74Z" + + from time to time I also try to draw things, but *time*, it's killing me, man… - % id = "01H89P3CH8G5CFPME3Z88GNDD8" - - ~~while the music corner is under construction I can recommend [Elaenia by Floating Points](https://floatingpoints.bandcamp.com/album/elaenia) - as a good example of that~~ the music corner is no longer under construction. go [check it out][page:music]! + % id = "01J09B2BZXN3263NEHCKQ931TS" + - I'm sure one day you'll see the results of my practice, (unless you've already seen them :ralsei_wave:,) but for now I keep them largely to myself. - % id = "hello" - - feel free to come up to me and say hi! +% id = "hello" ++ if all that sounds like an interesting bunch of words, feel free to come up to me and say hi! - % id = "01H89P3CH823H89YQJKH9DWMW9" - - I would love to make some new friends :ralsei_love: + % id = "01J09B2BZXEVKP4AM4NJ0ZY8VJ" + - I'd love to make some new friends :ralsei_love: - % id = "01H89P3CH8ZQ11ABP0YW86APN7" - - in person I'm pretty much exactly as on this website lol + % id = "01J09B2BZXMMYDQG3SD6KK8M5H" + - you can reach out to me via - % id = "01H89P3CH8DHJC5BJMHVBMDAXS" - - like this website is literally meant to be a reflection of my personality and a literal braindump + % id = "01J09B2BZXZQSRXV8EHT68YE7M" + - Discord - username is [this][branch:01J09B2BZX54T2GSP8H3D62S6J] - % id = "01H89P3CH80XYPAHXH1QZJ9SMZ" - + so I type here like I would type on some chat platform. but it's a tree, just like Reddit! + % id = "01J09E55G1DB0RCJ2Z0DND38KF" + - Matrix - username is [this][branch:01J09B2BZXT6AAJNPEQ044KCDR] - % id = "01H8V55G7MS3NBPFFFKYE8YGFK" - - except on chat I don't capitalize "I" so if that pisses you off you may wanna brace yourself (or just tell me, I'll do my best to adapt) + % id = "01J09E55G1VQ1K14BZ1QW1X2CA" + + email - for people, it's under this domain and is `hi` - % id = "01H9DAJRZDNS9MSC9SK6HTEX2Z" - - and Reddit sucks! + % id = "01J09E55G1AE9HZZYV2A7S8FR7" + - if you're not a person you can, I dunno. + what do robots like doing? - % id = "01H89P3CH8CD28KGX9GVRFK60E" - - anyways you can find me on + % id = "01J09E55G1AGZ51ZV5ZGFMF78H" + - listen I'm trying to ward off spam with this weird wording, but I bet you can figure out my email adddress from this pretty easily. - % id = "01H89P3CH8EMM31JEMJRVRAKF4" - + Discord - username is [this][branch:01H89P3CH8GAHS8DDW1HHEWA3P] + % id = "01J09E55G1XKF12N27Y8TCMQPY" + - if not then my email is not that hard to find in other places. - % id = "01H89P3CH89HHDVHGB9GE287TR" - - I'm most active there so you'll have the best chance of getting a reply - - % id = "01H89P3CH8FBBJ6FKDCYDMD3T5" - - you'll know it's me if you see a profile with a fluffy boy avatar - - % id = "01H89P3CH8WTBKXP0GGN0HYQK2" - + Matrix - username is [this][branch:01H89P3CH8943QGT52K7MRW12Q] at gacko.pl - - % id = "01H89P3CH832E4GK0NJ77KED06" - - I try to be as active there as on Discord but my availability may be a little more - limited - - % id = "01H89P3CH8A31GJE0A0JTMK00B" - - just don't forget to wave at me when you do! I need to tell you apart from bots somehow - - % id = "01H89P3CH8R323RCDZAG6Y6C1X" - - my email for people is under this domain and is `hi` - - % id = "01H89P3CH8TAC5AB4QVA3E2Z0E" - - if you are not a person you can, I dunno. what do robots like doing? - - % id = "01H89P3CH8QTANJJ5F1E4GCBNK" - - listen I'm trying to ward off the spam with this weird wording but I bet you can - figure out my email address from this pretty easily - - % id = "01H89P3CH80QR285WFDTK5X5VF" - - if not then look at my GitHub it also has an email address + % id = "01J09E55G1T4PPVBXH7PSR8ZNY" + - just don't forget to wave at me if you do - I need to tell you apart from bots somehow! diff --git a/content/about/v1.tree b/content/about/v1.tree new file mode 100644 index 0000000..abf0848 --- /dev/null +++ b/content/about/v1.tree @@ -0,0 +1,192 @@ +%% title = "who that! (about me) (version 1, archived 2024-06-13)" + +% id = "01H89P3CH836K8WKQ9BPR6RE3C" +- hello! I am liquidex + + % id = "01H89P3CH8YZY1MTZS3DZGGFKX" + + also known as… + + % id = "01H89P3CH8GAHS8DDW1HHEWA3P" + - **liquidex** (just including this here for linking sake) + + % id = "01H89P3CH8ER0M5WZBXQ292A2N" + - **liquidev** on various [programming-related platforms][def:social/github] + + % id = "01H89P3CH8943QGT52K7MRW12Q" + - **lqdev**, before I realized that name is taken. since then I use liquidev but you may see + this older name in some places + + % id = "01H89P3CH81FTHTQ552N7N1S3A" + - **daknus** [on SoundCloud][def:social/soundcloud] + + % id = "01H89P3CH8PB76G26M4T8P6QDZ" + + **limiter** sometimes jokingly on Discord + + % id = "01H89P3CH8Z4MXQ0C9EWV01DPX" + + **limitre**, which is British for limiter + + % id = "01H89P3CH8P7HAGDJVGVWD96K7" + - y'know. like centre is British for center, metre is British for meter? :hueh: + + % id = "01H89P3CH8FA0JTX1TPRZV4BFM" + - before you ask, pronouns are _he/him_ + + % id = "01H89P3CH8A12NYRT3SC324Y2M" + - I'm a programmer from Poland + + % id = "01H89P3CH8VN1MPKS4RQFFW778" + + I work in the game industry + + % id = "01H89P3CH88PKW82498V91VZ4W" + + somehow my skills brought me to work as a game programmer at CD PROJEKT RED + + % id = "01H89P3CH8SPX5RZDWR00CZ436" + + not sure how that happened still so don't ask + + % id = "01H8YJDNJFB2BGT0ASDNM8S4JJ" + - impostor syndrome going hard right now + + % id = "01H89P3CH8QSQY1M7TZVH1FYQM" + - but that game programming thing is just coincidence, in reality I love toying with + computers in general + + % id = "01H89P3CH8TACWXWWZGGHQD2MK" + - so you may see me doing other random and weird stuff + + % id = "01H89P3CH89P2Q9XGQD7BCF0R6" + - perhaps [compilers][def:stitchkit/repo] are one of those weird things + + % id = "01H89P3CH8DYZHMQTGZDAEBNXN" + + or [audio][def:dawd3/repo] + + % id = "01H89P3CH859AAGFEABN8EANSJ" + - my favorite part of that is blowing my own eardrums out with my math skill, which is rather *underdeveloped* so to speak + + % id = "01H89P3CH8R9WKSMMQVY0XARSF" + + heck even web development out of all things. I mean you're reading _my_ website right + now after all + + % id = "01H89P3CH88M1GZ3WN3RXCW1NN" + - like truly *my my* website with *my own* backend, static generator, and all that + + % id = "01H89P3CH8CFBVXBF5W3GYA70X" + - none of that pre-built stuff, this baby is generated from the *purest* samples + of Uranium-235 I could source + + % id = "01H89P3CH8HYM5XZRH56880TP5" + - … wait you're saying building your own nuclear reactor at home is illegal? UHHHHHHHHHH + + % id = "01H89P3CH8EGD14MHJEET6MJ27" + - who knows at this point + + % id = "01H89P3CH8RFRCTC500059H5G8" + - apart from programming I also take interest in other various things + + % id = "01H89P3CH864VWM4JXQ0N5C1YV" + - like video games + + % id = "01H89P3CH8WK8F2XKBXFVE8KNX" + - yeah those are pretty great aren't they + + % id = "01H89P3CH817HEVWCFHGJEGQHR" + - my faves are: + + % id = "01H89P3CH8MHZMYKRFV30GSYWC" + - [A Hat in Time](https://hatintime.com) + + % id = "01H89P3CH8G625Q1NQVT8CJ3K1" + - [DELTARUNE](https://deltarune.com) + + % id = "01H89P3CH89TQ3SFG2Z40J29HX" + - they're pretty great you should check them out + + % id = "01H89P3CH8AJATQ5DJBBFXJ1NH" + - or [music][page:music] + + % id = "01H89P3CH8XQ59YZD3RFRYQ2BM" + - various genres from electronic through jazz and even rock + + % id = "01H89P3CH8V8H7BVWYTFHYQQTZ" + - in that order of priority + + % id = "01H89P3CH8ZMVBKS6CXGRB8QHB" + - electronic definitely leaning toward the more um, _eccentric_ side + + % id = "01H89P3CH836WYRR77815D8HCH" + - all you have to know is I listen to Venetian Snares pretty regularly + + % id = "01H89P3CH8C719GX9CTK36FXXN" + + if you don't know what that means then good for you + + % id = "01H8V55G7M7KEKBYX2D2RP9QQE" + + but if you so insist… [you have been warned](https://www.youtube.com/watch?v=BB7ExLcUuH0) + + % id = "01H8V55G7MWC7MQ9YQVDDFZ9QV" + - (this is one of the more crazy ones anyways. he makes some [more normal stuff](https://www.youtube.com/watch?v=IuI6MMUtNdU) too if you care) + + % id = "01H89P3CH8XP6ZA1RWYVZWRXN3" + - jazz and rock I don't really know as well but I've been trying to broaden my + horizons a bit + + % id = "01H89P3CH8EYKDYN83VPQQ088C" + + I really like artists who merge them with elements of electronic music + + % id = "01H89P3CH8G5CFPME3Z88GNDD8" + - ~~while the music corner is under construction I can recommend [Elaenia by Floating Points](https://floatingpoints.bandcamp.com/album/elaenia) + as a good example of that~~ the music corner is no longer under construction. go [check it out][page:music]! + + % id = "hello/v1" + - feel free to come up to me and say hi! + + % id = "01H89P3CH823H89YQJKH9DWMW9" + - I would love to make some new friends :ralsei_love: + + % id = "01H89P3CH8ZQ11ABP0YW86APN7" + - in person I'm pretty much exactly as on this website lol + + % id = "01H89P3CH8DHJC5BJMHVBMDAXS" + - like this website is literally meant to be a reflection of my personality and a literal braindump + + % id = "01H89P3CH80XYPAHXH1QZJ9SMZ" + + so I type here like I would type on some chat platform. but it's a tree, just like Reddit! + + % id = "01H8V55G7MS3NBPFFFKYE8YGFK" + - except on chat I don't capitalize "I" so if that pisses you off you may wanna brace yourself (or just tell me, I'll do my best to adapt) + + % id = "01H9DAJRZDNS9MSC9SK6HTEX2Z" + - and Reddit sucks! + + % id = "01H89P3CH8CD28KGX9GVRFK60E" + - anyways you can find me on + + % id = "01H89P3CH8EMM31JEMJRVRAKF4" + + Discord - username is [this][branch:01H89P3CH8GAHS8DDW1HHEWA3P] + + % id = "01H89P3CH89HHDVHGB9GE287TR" + - I'm most active there so you'll have the best chance of getting a reply + + % id = "01H89P3CH8FBBJ6FKDCYDMD3T5" + - you'll know it's me if you see a profile with a fluffy boy avatar + + % id = "01H89P3CH8WTBKXP0GGN0HYQK2" + + Matrix - username is [this][branch:01H89P3CH8943QGT52K7MRW12Q] at gacko.pl + + % id = "01H89P3CH832E4GK0NJ77KED06" + - I try to be as active there as on Discord but my availability may be a little more + limited + + % id = "01H89P3CH8A31GJE0A0JTMK00B" + - just don't forget to wave at me when you do! I need to tell you apart from bots somehow + + % id = "01H89P3CH8R323RCDZAG6Y6C1X" + - my email for people is under this domain and is `hi` + + % id = "01H89P3CH8TAC5AB4QVA3E2Z0E" + - if you are not a person you can, I dunno. what do robots like doing? + + % id = "01H89P3CH8QTANJJ5F1E4GCBNK" + - listen I'm trying to ward off the spam with this weird wording but I bet you can + figure out my email address from this pretty easily + + % id = "01H89P3CH80QR285WFDTK5X5VF" + - if not then look at my GitHub it also has an email address diff --git a/content/design.tree b/content/design.tree index f08886c..842b48e 100644 --- a/content/design.tree +++ b/content/design.tree @@ -22,8 +22,8 @@ this branch is about that. % content.link = "design/sidebars" id = "01HR9ZTS6T2ZBWGMJP8376NGX1" -+ sidebars ++ :page: sidebars % content.link = "design/digital-textures" id = "01HQ8JHZ5QTZXQW3M26CXPFQDF" -+ on digital textures ++ :page: on digital textures diff --git a/content/design/sidebars.tree b/content/design/sidebars.tree index f894d14..54ef44e 100644 --- a/content/design/sidebars.tree +++ b/content/design/sidebars.tree @@ -41,7 +41,7 @@ % id = "01HR9ZTS6PKYGVTFF0F78XVXH2" - (I'm not saying this structure is any better than a conventional blog though. it has its own set of challenges you need to take into account while writing, like *when to split*, and *when to nest*. - arguably, I still haven't learned how to write the treehouse well, but I think I'm getting better at it; compare [about][page:about] to this page and you'll see what I mean.) + arguably, I still haven't learned how to write the treehouse well, but I think I'm getting better at it; compare [about (version 1)][page:about/v1] to this page and you'll see what I mean.) % id = "01HR9ZTS6P484GD6Y9QR4TEGWD" - I'm glad most individuals' blogs are foregoing sidebars, but unfortunately I still regularly see them on various news sites and older blogs diff --git a/content/games.tree b/content/games.tree index bb3196b..53ec10d 100644 --- a/content/games.tree +++ b/content/games.tree @@ -1,5 +1,8 @@ % id = "01H9R1NKAXQMXWBA9Z65E4CG2T" -- sorry, nothing to see here in this section yet! ++ sorry, nothing to see here in this section yet! + + % id = "01J09B24M33NAE3D4VHKTR361J" + - (I'm just waiting for DELTARUNE Chapters 3 and 4 to come out to kickstart my theory-crafting) % id = "01H9R1NKAX7F0AEF374RWD4026" - it's just here for permalinking purposes. for now. @@ -8,7 +11,7 @@ - soon... I may put something here. % id = "games/oneshot" -+ ### OneShot ++ ### :page: OneShot % id = "01HA4HJKR3PBM0NJH7MZMYK6V9" - buy: [Steam](https://store.steampowered.com/app/420530/OneShot/) @@ -17,7 +20,7 @@ - on little cat feet % id = "games/the-talos-principle" -+ ### The Talos Principle ++ ### :page: The Talos Principle % id = "01H9R1NKAXN8NKBPYBEZASA1RA" - buy: [Steam](https://store.steampowered.com/app/257510/The_Talos_Principle/) diff --git a/content/music.tree b/content/music.tree index 5e8af89..4db1868 100644 --- a/content/music.tree +++ b/content/music.tree @@ -3,15 +3,15 @@ % content.link = "music/reviews" id = "01H969NN1BJYFYJJR0F458ACPN" -+ ### stuff I listen to ++ ### :folder: stuff I listen to % content.link = "music/fuck-drm" id = "01HPECQ3ZE1YKC1FS2X23H77R2" -+ ### fuck DRM ++ ### :folder: fuck DRM % content.link = "music/spotify" id = "01HVNX7FMW6KJC9H3CQ7TX8ST6" -+ ### Spotify ++ ### :folder: Spotify % id = "01H969NN1BR7BH7M7SXBPGB0WC" - in the future this section may grow another branch related to music making. diff --git a/content/music/fuck-drm.tree b/content/music/fuck-drm.tree index 3c95030..20fda54 100644 --- a/content/music/fuck-drm.tree +++ b/content/music/fuck-drm.tree @@ -7,7 +7,7 @@ - I'm aware they know *very well* what they're doing. just, y'know, *fuck them.* % id = "01HPWEESFV7TPXA6H5BCZVZKD6" -+ exhibit 2: ODDTAXI soundtrack ++ :page: exhibit 2: ODDTAXI soundtrack % id = "01HPWEESFVY5WGP5NY94QXFQ2A" - I watched this anime recently and I really liked the soundtrack, so I thought to myself "cool, gotta buy it and enjoy it in glorious FLAC while I'm driving my ~~taxi~~ car" @@ -32,7 +32,7 @@ They handle my payments. the money goes to the artists. and all the parties involved are happy! % id = "01HPECQ3Z1SG5J6Y12TD2E4Q1B" -+ exhibit 1: The Flashbulb's music is gone from Spotify ++ :page: exhibit 1: The Flashbulb's music is gone from Spotify % id = "01HPECQ3Z10FVJTAKE90W57X7R" - today I went to listen to some good ol'e Benn Jordan The Flashbulb at work, and guess what do I see? diff --git a/content/music/reviews.tree b/content/music/reviews.tree index fd4a2ac..84ac63e 100644 --- a/content/music/reviews.tree +++ b/content/music/reviews.tree @@ -1,3 +1,7 @@ +% id = "01J09B24KXE16SKSHFTWPE5AM9" +- NOTE: I haven't updated this branch in a while because I kind of got bored of doing music reviews. +however the content's still here if you wanna read it + % id = "01H969NN1B0752RC4VSEEK1CAT" + here you can find my thoughts on music I listen to @@ -39,44 +43,44 @@ % id = "music/album/aphex-twin/syro" content.link = "music/reviews/aphex-twin/syro" -+ ### album: Aphex Twin - Syro ++ ### :page: album: Aphex Twin - Syro % id = "music/album/radiohead/a-moon-shaped-pool" content.link = "music/reviews/radiohead/a-moon-shaped-pool" -+ ### album: Radiohead - A Moon Shaped Pool ++ ### :page: album: Radiohead - A Moon Shaped Pool % id = "music/album/radiohead/ok-computer" content.link = "music/reviews/radiohead/ok-computer" -+ ### album: Radiohead - OK Computer ++ ### :page: album: Radiohead - OK Computer % id = "music/album/telefon-tel-aviv/map-of-what-is-effortless" content.link = "music/reviews/telefon-tel-aviv/map-of-what-is-effortless" -+ ### album: Telefon Tel Aviv - Map of What Is Effortless ++ ### :page: album: Telefon Tel Aviv - Map of What Is Effortless % id = "01H9R1NKBDKVKZ2515CJJ2G8HJ" + the following albums I haven't had time to review yet, but I'm including them here for permalinking in case I do review them in the future % id = "music/album/aphex-twin/drukqs" content.link = "music/reviews/aphex-twin/drukqs" - + ### album: Aphex Twin - drukQs + + ### :page: album: Aphex Twin - drukQs % id = "01H9JB094GTG1TJ029CQ4PNMS0" - buy: [Bandcamp](https://aphextwin.bandcamp.com/album/drukqs) % id = "music/album/the-flashbulb/our-simulacra" - + ### album: The Flashbulb - Our Simulacra + + ### :page: album: The Flashbulb - Our Simulacra % id = "01H9R1NKBD8JA76ZBEFTJ62XV0" - buy: [Bandcamp](https://theflashbulb.bandcamp.com/album/our-simulacra) % id = "music/album/radiohead/hail-to-the-thief" - + ### album: Radiohead - Hail to the Thief + + ### :page: album: Radiohead - Hail to the Thief % id = "01H969NN1B6W19ENMTBJ0D48AF" - buy: [Bandcamp](https://radiohead.bandcamp.com/album/hail-to-the-thief) % id = "music/album/radiohead/the-king-of-limbs" - + ### album: Radiohead - The King of Limbs + + ### :page: album: Radiohead - The King of Limbs % id = "01H9JB094HBXF1G48ZME4WV2JA" - buy: [Bandcamp](https://radiohead.bandcamp.com/album/the-king-of-limbs) diff --git a/content/music/spotify.tree b/content/music/spotify.tree index a4ee89d..c72cb0e 100644 --- a/content/music/spotify.tree +++ b/content/music/spotify.tree @@ -12,7 +12,7 @@ from a consumer standpoint it's also really nice for discovering new music, because you don't have to pay a large amount just to give a listen to an album you may not end up liking. % id = "01HVNX7FMSR6TFJK3A9VVQ667K" -- a couple days ago I've noticed the queue in the desktop app has changed... +- :page: a couple days ago I've noticed the queue in the desktop app has changed... % id = "01HVNX7FMSREB52W6J2D8EYK7W" - this is how it looks now: diff --git a/content/philosophy.tree b/content/philosophy.tree index e2a1cce..09521bf 100644 --- a/content/philosophy.tree +++ b/content/philosophy.tree @@ -16,7 +16,7 @@ of a a "this is interesting" than "I disagree with this" vibe % id = "01HFYZKREV634J021ZMCDSP7G4" -+ hedonic treadmill ([wikipedia](https://en.wikipedia.org/wiki/Hedonic_treadmill)) ++ :page: hedonic treadmill ([wikipedia](https://en.wikipedia.org/wiki/Hedonic_treadmill)) % id = "01HFYZKREVV2CX1GYJQ18BJS78" + a concept that's incredibly useful in keeping it cool @@ -37,7 +37,7 @@ it then. % id = "01HREVZNAHB1H9VMD0NPPFTEQ0" -+ just shut up sometimes ++ :page: just shut up sometimes % id = "01HREVZNAH8XFRMVB9G58TPV8R" - I just caught myself writing a few paragraphs long comment on [Lobsters](https://lobste.rs) without really understanding what the author of the comment meant in the broader context of the discussion, diff --git a/content/programming.tree b/content/programming.tree index ecc4079..cfcfe6c 100644 --- a/content/programming.tree +++ b/content/programming.tree @@ -4,44 +4,44 @@ % id = "01H8Y427B4WC1CF9RHPZPXE77W" - and also more than just bit magic but I like how that sounds -% id = "programming/projects" - content.link = "programming/projects" -+ ### projects - % id = "01HPD4XQQ5GPQ20C6BPA8G670F" -- ### blog +- ### :folder: blog % content.link = "programming/blog/tairu" id = "01HPD4XQQ5WM0APCAX014HM43V" - + featured tairu - an interactive exploration of 2D autotiling techniques + + :page: featured tairu - an interactive exploration of 2D autotiling techniques % content.link = "programming/blog/lvalues" id = "01HY5R1ZW0M0Y5KQ1E8F0Q73ZT" - + places, or what is up with `*x` not always meaning the same thing + + :page: places, or what is up with `*x` not always meaning the same thing % content.link = "programming/blog/or-types" id = "01HTWN4XB2YMF3615BE8V6Y76A" - + OR-types + + :page: OR-types + +% id = "programming/projects" + content.link = "programming/projects" ++ ### :folder: projects % id = "01HRG2RJCNKT9JJJVQ8WVRC9CA" -- ### languages +- ### :folder: languages % content.link = "programming/languages/cxx" id = "programming/languages/cxx" - + ### C++ + + #### :folder: C++ % content.link = "programming/languages/lua" id = "programming/languages/lua" - + ### Lua + + #### :page: Lua % id = "01HRG2RJCN8J42NK0KWD3SBSJA" -- ### technologies +- ### :folder: technologies % content.link = "programming/technologies/unreal-engine" id = "programming/technologies/unreal-engine" - + ### Unreal Engine + + #### :folder: Unreal Engine % content.link = "programming/opinions" id = "programming/opinions" -+ ### opinions ++ ### :folder: opinions diff --git a/content/programming/languages/cxx.tree b/content/programming/languages/cxx.tree index d9f4030..a9c1517 100644 --- a/content/programming/languages/cxx.tree +++ b/content/programming/languages/cxx.tree @@ -1,8 +1,10 @@ +%% title = "C++" + % id = "01H9R1KJESR2F420HE67HW4AVR" - design lessons from the best programming language of all time that everyone loves (not really) % id = "programming/cxx/access-modifiers-as-labels" -+ access modifiers as labels (`private:`, `protected:`, and `public:`) ++ :page: access modifiers as labels (`private:`, `protected:`, and `public:`) % id = "01H9R1KJES39Z6RBCKY4E71PYD" - although Java and C#'s approach to symbol privacy may be verbose, it has one great advantage: it is stateless. diff --git a/content/programming/opinions.tree b/content/programming/opinions.tree index e943b6a..86e39a0 100644 --- a/content/programming/opinions.tree +++ b/content/programming/opinions.tree @@ -4,7 +4,7 @@ - > "Hotland - Bad Opinion Zone" % id = "01HBTSXTTAMWJ2BM6395YS72FN" -+ log verbosity levels are stupid ++ :page: log verbosity levels are stupid % id = "01HBTSXTTA946PJ04NN50P393T" - because when should you use any log level other than `error`, `warn`, or `info`? @@ -60,7 +60,7 @@ - I have no clue how well that will work but it would be pretty interesting % id = "01HBTSXTTASQDZK2HMCZXR3JJ4" -+ tracing is better than logging ++ :page: tracing is better than logging % id = "01HBTSXTTA08SCA313HSFWB13T" - information about time spans is very valuable for profiling @@ -89,7 +89,7 @@ be a worthwhile thing to do % id = "01HCD90XT3G0J8G9Y48H5QT1GJ" -+ don't use [`RefCell`](https://doc.rust-lang.org/std/cell/struct.RefCell.html) ++ :page: don't use [`RefCell`](https://doc.rust-lang.org/std/cell/struct.RefCell.html) % id = "01HCD90XT3X82R37WTJJABZF4Y" + usually if you have to resort to `RefCell`, it means something is wrong with your architecture @@ -149,7 +149,7 @@ drop the temporary `Ref<'b, T>` guard after the expression ends % id = "01HCG7KTGGAFS07QYJXZG6WHJJ" -+ `None` or `Invalid` cases in enums are a bad idea ++ :page: `None` or `Invalid` cases in enums are a bad idea % id = "01HCG7KTGGHWTT1ME9GQ5VPFPR" - by having them, you're forcing your users into an API that forces them to think about the @@ -163,7 +163,7 @@ to represent a possibly-invalid case % id = "01HPEMVAH9JZWYPVN53GVFQNQY" -+ NaNs should crash the program ++ :page: NaNs should crash the program % id = "01HPEMVAH97PDHJJS70SKG5VMN" - any time I see a NaN I cry inside knowing how much pain debugging it's gonna be. @@ -178,7 +178,7 @@ - worst case scenario you pull a Rust and disable those checks on release mode. that *does* work, but I don't like the idea of disabling numeric safety checks on release mode either. % id = "01HPEQ01JRMM17Y30BP7ZFKZRJ" -+ operator overloading is good, but getters and setters are not ++ :page: operator overloading is good, but getters and setters are not % id = "01HPEQ01JR57B057439SY90BQ9" - this one stems from an argument I had today, so I'll write my thoughts for future generations' enjoyment here diff --git a/content/programming/technologies/unreal-engine.tree b/content/programming/technologies/unreal-engine.tree index 39e116a..8fbf9af 100644 --- a/content/programming/technologies/unreal-engine.tree +++ b/content/programming/technologies/unreal-engine.tree @@ -1,3 +1,5 @@ +%% title = "Unreal Engine" + % id = "01H8Y0CKD0ZDHAH1ET3BJNDS4E" - this is that really cool game engine I work with on a daily basis @@ -9,16 +11,16 @@ % id = "programming/technologies/unreal-engine/blueprint" content.link = "programming/technologies/unreal-engine/blueprint" -+ ### thoughts on Blueprint ++ ### :page: thoughts on Blueprint % id = "01HP1FESY5WVJG4X80AZ4ZBX5D" -- ### random but cool things +- ### :folder: random but cool things % content.link = "programming/technologies/unreal-engine/generated-body" id = "01HV1DGFHP6GB268MDGGDXMR12" - + how does `GENERATED_BODY()` work exactly? + + :page: how does `GENERATED_BODY()` work exactly? % content.link = "programming/technologies/unreal-engine/fixes" id = "01HP1FESY5ZS6YTZXA8QTT5V1Z" - + data validation quick fixes + + :page: data validation quick fixes diff --git a/crates/treehouse/src/cli/serve.rs b/crates/treehouse/src/cli/serve.rs index 6ab4ef2..f0138c6 100644 --- a/crates/treehouse/src/cli/serve.rs +++ b/crates/treehouse/src/cli/serve.rs @@ -160,7 +160,13 @@ async fn sandbox(State(state): State>) -> Response { async fn branch(RawQuery(named_id): RawQuery, State(state): State>) -> Html { if let Some(named_id) = named_id { - if let Some(&branch_id) = state.treehouse.branches_by_named_id.get(&named_id) { + let branch_id = state + .treehouse + .branches_by_named_id + .get(&named_id) + .copied() + .or_else(|| state.treehouse.branch_redirects.get(&named_id).copied()); + if let Some(branch_id) = branch_id { let branch = state.treehouse.tree.branch(branch_id); if let Source::Tree { input, tree_path } = state.treehouse.source(branch.file_id) { let file_path = state.target_dir.join(format!("{tree_path}.html")); diff --git a/crates/treehouse/src/state.rs b/crates/treehouse/src/state.rs index 4ec4e27..fb1e555 100644 --- a/crates/treehouse/src/state.rs +++ b/crates/treehouse/src/state.rs @@ -43,6 +43,8 @@ pub struct Treehouse { pub branches_by_named_id: HashMap, pub roots: HashMap, + pub branch_redirects: HashMap, + missingno_generator: ulid::Generator, } @@ -56,6 +58,8 @@ impl Treehouse { branches_by_named_id: HashMap::new(), roots: HashMap::new(), + branch_redirects: HashMap::new(), + missingno_generator: ulid::Generator::new(), } } diff --git a/crates/treehouse/src/tree.rs b/crates/treehouse/src/tree.rs index ee11f9a..d80280f 100644 --- a/crates/treehouse/src/tree.rs +++ b/crates/treehouse/src/tree.rs @@ -166,6 +166,8 @@ impl SemaBranch { attributes.id ); + let redirect_here = attributes.redirect_here.clone(); + let branch = Self { file_id, indent_level: branch.indent_level, @@ -210,6 +212,38 @@ impl SemaBranch { ) } + for source_branch_named_id in redirect_here { + if let Some(old_branch_id) = treehouse + .branch_redirects + .insert(source_branch_named_id.clone(), new_branch_id) + { + let new_branch = treehouse.tree.branch(new_branch_id); + let old_branch = treehouse.tree.branch(old_branch_id); + + treehouse.diagnostics.push( + Diagnostic::warning() + .with_code("sema") + .with_message(format!( + "two branches serve as redirect targets for `{source_branch_named_id}`" + )) + .with_labels(vec![ + Label { + style: LabelStyle::Primary, + file_id, + range: new_branch.kind_span.clone(), + message: String::new(), + }, + Label { + style: LabelStyle::Primary, + file_id: old_branch.file_id, + range: old_branch.kind_span.clone(), + message: String::new(), + }, + ]), + ) + } + } + new_branch_id } diff --git a/crates/treehouse/src/tree/attributes.rs b/crates/treehouse/src/tree/attributes.rs index 025195c..8fbf2f9 100644 --- a/crates/treehouse/src/tree/attributes.rs +++ b/crates/treehouse/src/tree/attributes.rs @@ -61,6 +61,12 @@ pub struct Attributes { #[serde(default)] pub id: String, + /// Redirect old and deleted listed in the list to this branch. + /// + /// This can be used to keep links permanent even in case the structure of the treehouse changes. + #[serde(default)] + pub redirect_here: Vec, + /// Controls how the block should be presented. #[serde(default)] pub content: Content, diff --git a/static/emoji/clueless.png b/static/emoji/clueless.png new file mode 100644 index 0000000..c30b957 Binary files /dev/null and b/static/emoji/clueless.png differ diff --git a/static/emoji/folder.svg b/static/emoji/folder.svg new file mode 100644 index 0000000..cc61bdf --- /dev/null +++ b/static/emoji/folder.svg @@ -0,0 +1,4 @@ + + + + diff --git a/static/emoji/page.svg b/static/emoji/page.svg new file mode 100644 index 0000000..b8a4cb9 --- /dev/null +++ b/static/emoji/page.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/static/emoji/rarog.png b/static/emoji/rarog.png new file mode 100644 index 0000000..f94dd71 Binary files /dev/null and b/static/emoji/rarog.png differ diff --git a/treehouse.toml b/treehouse.toml index ca739a0..e3950f3 100644 --- a/treehouse.toml +++ b/treehouse.toml @@ -15,6 +15,7 @@ description = "a place on the Internet I like to call home" # Social garbage "social/github" = "https://github.com/liquidev" "social/soundcloud" = "https://soundcloud.com/daknus" +"social/listenbrainz" = "https://listenbrainz.org/user/liquidev/" # My own repositories "stitchkit/repo" = "https://github.com/abyteintime/stitchkit"