[{"data":1,"prerenderedAt":1426},["ShallowReactive",2],{"blog-posts":3},[4,187,1268],{"id":5,"title":6,"body":7,"description":177,"extension":178,"meta":179,"modified":180,"navigation":181,"path":182,"published":183,"seo":184,"stem":185,"__hash__":186},"blog/blog/snacky-for-knowledge.md","snacky for knowledge",{"type":8,"value":9,"toc":168},"minimal",[10,14,22,31,36,39,52,55,59,62,78,81,92,95,99,102,105,108,111,119,122,126,133,136,140,143,146,149,152,155,158,165],[11,12,13],"p",{},"hey everybody. been a while. this is gonna be a bit rambly, but thats okay, its MY blog",[11,15,16,17,21],{},"so ive been thinking a lot. there are so many technologies that i want to learn. when i say i want to learn them, i dont necessarily mean i have a desire to actually ",[18,19,20],"em",{},"put in the work"," required to learn them. im not hungry for knowledge, so much as i am snacky",[11,23,24,25,30],{},"dont get me wrong. i love to learn. if i didnt, i wouldnt BE snacky for knowledge. and for certain technologies,  YOU SHOULDNT BE SEEING THIS TEXT PLEASE REPORT IT ",[26,27],"md-tooltip",{"text":28,"tooltip":29},"learning","as in, actual learning, not just fantasizing about learning"," really is fun - html/css/js in general, vue, nuxt, docker, home server stuff. but then there are the things that just sound cool. for example, python. ive tried learning python a bit, at various times. but it was mostly just for random tiny stuff, like learning flask just for the sake of learning it, just hosting a basic webpage. or stealing pygame code to make something super lame",[32,33,35],"h2",{"id":34},"want-isnt-enough-i-need-to-need-to-learn","want isnt enough. i need to need to learn",[11,37,38],{},"the problem with python, and with a lot of things i try to learn in general, is that i really need a GOOD reason to learn something. if i do, then i will sink hours and hours into learning it. but if i dont? its hard to force myself to just learn it for no reason anyway",[11,40,41,42,46,47,51],{},"the best example of this is linux. many years ago, i decided to try out this cool \"linux\" thing i had heard about. i created an ubuntu vm and just... aimlessly poked around. i saw the cool tiger desktop background, saw that it was kinda similar to windows and macos, but also kinda different. and that was that. fast forward to however many years later, when i was first trying to host my website. i made a  YOU SHOULDNT BE SEEING THIS TEXT PLEASE REPORT IT ",[26,43],{"text":44,"tooltip":45},"digitalocean droplet","i mean, first i used github pages, and then i experimented with google cloud before realizing i hated it. but THEN i switched to digitalocean"," and loaded it up with ubuntu. i had literally no idea what i was doing. i had never heard of cat, sudo, nano, ls, any of it. i had to constantly look up what command did what, as well as following a bunch of different guides from  YOU SHOULDNT BE SEEING THIS TEXT PLEASE REPORT IT ",[26,48],{"text":49,"tooltip":50},"digitaloceans","seriously, those guides were awesome. theres a nonzero chance i would have given up on webdev altogether if digitalocean hadnt had such a vast assortment of guides for stuff like nginx"," own website. but since i had a goal i was trying to achieve, i stuck with it. i successfully had my website online, and knew the very basics of linux",[11,53,54],{},"fast forward another few years. i wanted my own little server for torrenting + automated backups. people recommended proxmox, and it looked appealing, so i installed it. and man, proxmox really was like being thrown in the deep end - at least, with the little linux experience i had at the time. but it was another problem to solve. in fact, it was a dozen problems, each with a dozen of its own subproblems. took me a lot longer than it took to host my website on digitalocean, but nowadays i can say that most of my familiarity with linux comes from working with proxmox",[32,56,58],{"id":57},"point-being","point being...?",[11,60,61],{},"point being, i love sinking my teeth into something new and unfamiliar WHEN theres an actual goal im trying to achieve",[11,63,64,65,69,70,73,74,77],{},"i really want to start working with databases more. its relevant knowledge to have, and there are a bunch of cool databases. mongodb is the one i have experience with from my discord bot days, and i guess sqlite too. but im definitely  YOU SHOULDNT BE SEEING THIS TEXT PLEASE REPORT IT ",[26,66],{"text":67,"tooltip":68},"rusty","its been around 3 years? 4?"," at mongodb, and sqlite... well, it IS useful, though not that exciting. i guess maybe i should get better at it. but like, what about postgresql? what about mysql? its hard to explain what intrigues me about them. cool logos are always a plus, but i think what really gets me is just the idea that theres something out there to learn thats popular, has some kind of cultural or historical impact when it comes to web dev, and could come in handy for a future career. something out there to ",[18,71,72],{},"experience",", so i can be part of a community of people who have ",[18,75,76],{},"experienced"," this language or framework or whatever. basically, im a resume padder, but with no resume. more like a brain padder. the idea of being able to say \"if push comes to shove, i can make a decently functional postgresql database\". thats just such a cool thought, right?",[11,79,80],{},"but, as i mentioned... if i dont have a really good reason to learn postgresql, a PROBLEM that needs to be solved with it, then theres a low chance im gonna stick with it and actually learn it",[11,82,83,84,87,88,91],{},"an example of something that managed to escape this fate, and actually be used by me, is docker. man, when i talk about technologies that i love the ",[18,85,86],{},"aesthetic"," of, that i love ",[18,89,90],{},"thinking"," about using, and fantasizing about how useful it could be, nothing quite reaches the heights of docker. that beautiful blue logo with a cute whale. the idea of commanding fleets of containers. the idea of writing once and running everywhere. all my code, turned portable!",[11,93,94],{},"sounds like a fantasy, but i actually do use docker! i mean, the home server stuff is obvious, but thats not what i mean. im not talking about using docker to run jellyfin, im talking about writing my OWN dockerfile to containerize my OWN code. this website has been running in a docker container from the beginning. and earlier today i got done setting up a github action to automatically re-build it and send it to my digitalocean droplet every time i push my changes. yay! dont get me wrong, i still have a ways to go. i havent dockerized ALL my projects that could be dockerized. but im actually getting use out of it - in the real world, not just in my head. its been fun and rewarding, and im starting to build up a solid mental model of how docker works, to the point where i dont need to keep re-googling the basics in order to write a dockerfile",[32,96,98],{"id":97},"it-gets-worse","it gets worse.",[11,100,101],{},"but, the problem doesnt end there. no, this is merely where it begins. lets talk about programming languages. not python; python is something i could realistically use. i make websites and a discord bot, as well as miscellaneous scripts to make my life easier. python could certainly come in handy! and databases? again, i make websites - obviously i could figure out a use for a database!",[11,103,104],{},"...",[11,106,107],{},"... you know... rust sounds cool... i mean people always rewrite stuff in it, and its sooo fast. sounds cool right? and what about golang? oo, that would be fun.",[11,109,110],{},"... WHAT THE HELL AM I GONNA USE RUST FOR!",[11,112,113,114,118],{},"look, im a javascript developer. ill leave smart people languages to the smart people. what am i trying to make, a damn kernel? drivers? or like, why would i need to learn the C family of languages? yes they sound cool. and anything that could be used to make a video game does have some theoretical value to me, a guy who Likes Video Games. but i just cant think of a situation where theres some software i REALLY wanna write, that REALLY benefits from being written in a language i  YOU SHOULDNT BE SEEING THIS TEXT PLEASE REPORT IT ",[26,115],{"text":116,"tooltip":117},"dont know","dont forget atwoods law!",", to the point where its enough motivation to buckle down and learn rust or something. i hope the situation comes up, but im a little doubtful. plus, languages like C are scary... i dont know if i have it in me to manually manage memory",[11,120,121],{},"that doesnt mean ill never give them a try. in fact, just writing about them is making me even more snacky to learn. but... i dont know. maybe i need to start small. maybe i need to take things one at a time. maybe i should really commit myself to making a game in python, and i wont give up until its done. then if it goes well, we can talk about rust and go and stuff. maybe.",[32,123,125],{"id":124},"retro-web-dev","retro web dev",[11,127,128,129,132],{},"another thing that fits in quite weirdly to this whole discussion is the classic web dev stuff. stuff thats (in some cases) still used quite a bit, but seems retro when compared to the more popular technologies nowadays, like react and tailwind and such. stuff like jquery, php, apache, ruby on rails, i think mysql fits in here, bootstrap? look, im not super knowledgeable about this stuff. but ive seen jquery more times than i can count in stackoverflow answers (annoyingly), and i hear people talk about ruby on rails and php quite often. web devs that have been around a while seem to remember that era of web dev pretty fondly. they love those languages for their simplicity compared to modern solutions. and while they ",[18,130,131],{},"may"," just have rose tinted glasses, im certainly curious to try it out for myself. because i also find myself getting the impression that modern web dev cares more about trends and fancy over-engineered solutions than they do about simple good DX and UX. now, do i think wrestling with PHP is going to bring me some kind of web dev zen? no, not really. to me, vue is already a fantastic balance of modern niceties, without being overcomplicated and frustrating",[11,134,135],{},"but... wouldnt it be cool to know ruby on rails? something so historical? i could impress every 30+ year old web dev i meet. like those videos where a white guy goes to a chinese restaurant and orders in perfect mandarin, and all the employees are so impressed. is it so wrong for me to want to feel like a special little guy?",[32,137,139],{"id":138},"i-admit-it-im-ignorant","i admit it. im ignorant.",[11,141,142],{},"maybe you could tell but. i dont really know what exactly ruby on rails is. i think ruby is frontend, and ruby on rails turns it full stack? im not gonna google it, im just gonna let my honest assumption exist in public and you can judge me if you want. ok fine im googling it.",[11,144,145],{},"yeah i was entirely wrong. so ruby is like your average general-purpose programming language, like python. and ruby on rails turns it into a full-stack web framework. thats cool!",[11,147,148],{},"and what about rust and go? well i know theyre a bit lower level, though im not entirely sure HOW low level. how much stuff am i gonna have to get used to doing, that javascript abstracts away from me? you know what, maybe i need to make a blog post where i just go through every language/framework/database/web server/etc that catches my eye, and do a little bit of research on them, and then write what i learned. like, we're talking 6th grade book report levels of depth here",[11,150,151],{},"actually. yeah. maybe that is what i need! to LEARN! i dont need to learn HOW to write rust code. i just need to figure out what rust actually is! maybe learning a bit about it will satisfy my snackiness, and maybe theres some language where, after learning about it beyond just its name and logo, i will come to realize it would actually be quite a good fit for me. and THAT can be the motivation i need to learn it for real",[11,153,154],{},"i mean, i already said that the main thing drawing me to these technologies is their cultural and historical impact. so yeah. why dont i write about that impact! and touch on the basics of how the language or framework is actually used, with some code examples!",[11,156,157],{},"... oh wait. thats literally what fireship does. well, time to go watch fireship's video on ruby again, as well as every other \"in 100 seconds\" video from him! its like he perfectly understands my snackiness. in fact, maybe thats a problem...? maybe modern web dev culture is encouraging developers to become more interested in the IDEA of coding than the actual act of coding? maybe we're all being trained to waste time watching youtube videos, reading reddit posts, and arguing on twitter about coding, instead of actually writing code? maybe we're all snacky for knowledge?",[11,159,160,161,164],{},"well, im gonna break free from the matrix! no more thinking, its time to ",[18,162,163],{},"do","! im going to learn python right away!",[11,166,167],{},"... right after this fireship video...",{"title":169,"searchDepth":170,"depth":170,"links":171},"",2,[172,173,174,175,176],{"id":34,"depth":170,"text":35},{"id":57,"depth":170,"text":58},{"id":97,"depth":170,"text":98},{"id":124,"depth":170,"text":125},{"id":138,"depth":170,"text":139},"i wanna learn every language, framework, and database under the sun! but will i? (no!)","md",{},null,true,"/blog/snacky-for-knowledge",1752126024419,{"title":6,"description":177},"blog/snacky-for-knowledge","gfT-Wp4vfinK5W5jORSpN64vr_JoZ_FChwZwbJ6DPsI",{"id":188,"title":189,"body":190,"description":1260,"extension":178,"meta":1261,"modified":1262,"navigation":181,"path":1263,"published":1264,"seo":1265,"stem":1266,"__hash__":1267},"blog/blog/who-am-i.md","who am i?",{"type":8,"value":191,"toc":1249},[192,195,199,202,205,210,213,217,220,223,228,231,247,250,253,257,260,263,271,274,278,281,309,312,315,318,322,326,334,337,521,524,644,647,1111,1125,1128,1131,1139,1142,1146,1153,1158,1161,1164,1176,1180,1183,1186,1190,1193,1196,1200,1203,1206,1209,1212,1219,1223,1226,1229,1236,1239,1242,1245],[11,193,194],{},"hi! i am the guy who made this website. in this post ill talk a little about who i am as a person, and then a bit about who i am as a developer",[32,196,198],{"id":197},"as-a-person","as a person",[11,200,201],{},"im mason! im in my early 20s and i live in the midwest",[11,203,204],{},"i have some cats",[206,207],"content-image",{"alt":208,"src":209},"i think that's charlie closest to the camera, and slim jim behind him. its easier to tell them apart when they stand up and you can see slim jims big belly","kitties.png",[11,211,212],{},"and some dogs",[206,214],{"alt":215,"src":216},"thats duke on the left and dilla on the right. i swear they dont usually look this scary","puppies.png",[11,218,219],{},"they're all pretty young, except skye the cat (not pictured) who is 12. but duke and dilla are only like 4, and the kitties are like... 2?",[11,221,222],{},"that cat bed is right on my desk, within arms reach while im at my desk. its always nice to have a kitty nearby",[224,225,227],"h3",{"id":226},"i-love-gaming","i love gaming!",[11,229,230],{},"my favorite games are:",[232,233,234,238,241,244],"ol",{},[235,236,237],"li",{},"terraria (mods: calamity, infernum, catalyst, wrath of the gods)",[235,239,240],{},"doom eternal",[235,242,243],{},"hades",[235,245,246],{},"deltarune (not so much replaying, more so consuming ungodly amounts of theories)",[11,248,249],{},"honorable mentions: starcraft 2 campaign, overwatch 1, slay the spire, amnesia the dark descent, bloons td 6, subnautica, probably a bunch more im forgetting",[11,251,252],{},"im a pc gamer. i have a switch that i never use, because i realized i dont actually like any nintendo games. it was just pokemon for a while but now i think ive moved on even from that.",[224,254,256],{"id":255},"i-love-music","i love music!",[11,258,259],{},"i mean who doesnt? but music has been an important part of my life for a while. when i think back to previous times of my life, a big thing i remember is the music i was listening to.",[11,261,262],{},"i cant do a numbered list for music, there are just too many. i wont even be scratching the surface, but here we go:",[11,264,265,266,270],{},"aphex twin, boards of canada, radiohead,  YOU SHOULDNT BE SEEING THIS TEXT PLEASE REPORT IT ",[26,267],{"text":268,"tooltip":269},"cocteau twins","mostly heaven or las vegas, thats tied with ok computer for my favorite album ever",", mf doom, pinkpantheress, alex g, kendrick lamar, clams casino, tame impala, elusin, duster,  mitski, a tribe called quest, weezer, my bloody valentine, sybyr",[11,272,273],{},"i have a list of every album ive listened to since may 2021, including ratings. i might port it over to this website some day",[224,275,277],{"id":276},"i-love-tv","i love tv!",[11,279,280],{},"well maybe not love. i dont watch too many shows. but i really like some, like:",[232,282,283,290,293,296,299,302],{},[235,284,285,286],{},"YOU SHOULDNT BE SEEING THIS TEXT PLEASE REPORT IT ",[26,287],{"text":288,"tooltip":289},"community","community is my favorite, i watched a pirated dvd of the first few seasons at single digit ages on an portable dvd player and loved it. and after that, we as a family would watch new episodes when they came out",[235,291,292],{},"breaking bad, better call saul",[235,294,295],{},"the office",[235,297,298],{},"parks and rec",[235,300,301],{},"the good place",[235,303,285,304,308],{},[26,305],{"text":306,"tooltip":307},"always sunny","im actually rewatching it right now, im on season 11"," in philadelphia",[11,310,311],{},"and so on. those are in no particular order btw. except community. but truthfully i dont watch too much tv, though i have quite liked most of the shows ive seen.",[313,314],"hr",{},[11,316,317],{},"okay thats enough about me as a person. now lets talk about me...",[32,319,321],{"id":320},"as-a-developer","as a developer",[224,323,325],{"id":324},"the-discord-bot-era","the discord bot era",[11,327,328,329,333],{},"i started as a developer in 2018. i was in a discord server, and i was mildly infamous for adding too many random bots to the server. so i made my own bot with a silly  YOU SHOULDNT BE SEEING THIS TEXT PLEASE REPORT IT ",[26,330],{"text":331,"tooltip":332},"name","\"when mason adds another bot\""," so that it would be funny when people saw the message saying it joined the server",[11,335,336],{},"after that gag came and went, i decided to keep having fun with the bot, figuring out how to get it online, then figuring out how to get it to respond to messages. very early on i renamed it to \"milnk bot\" and had it send messages about milk and drinking milk whenever users sent certain keywords. i dont know why. keep in mind i had zero idea how to code, i had never touched javascript prior to this. i just copy pasted from tutorials and edited them slightly. i remember i gave each response its own event listener, like",[338,339,343],"pre",{"className":340,"code":341,"language":342,"meta":169,"style":169},"language-js shiki shiki-themes light-plus dark-plus","client.on('message', message => {\n  if (message.content === 'milk') {\n    message.channel.send('drink your milk!')\n  }\n})\n\nclient.on('message', message => {\n  if (message.content === 'hello') {\n    message.channel.send('hello, i am milnk bot')\n  }\n})\n","js",[344,345,346,383,408,432,438,444,450,471,491,511,516],"code",{"__ignoreMap":169},[347,348,351,355,359,363,366,370,373,376,380],"span",{"class":349,"line":350},"line",1,[347,352,354],{"class":353},"s6-IL","client",[347,356,358],{"class":357},"sK6Qu",".",[347,360,362],{"class":361},"sCaUI","on",[347,364,365],{"class":357},"(",[347,367,369],{"class":368},"sXNWB","'message'",[347,371,372],{"class":357},", ",[347,374,375],{"class":353},"message",[347,377,379],{"class":378},"si2PQ"," =>",[347,381,382],{"class":357}," {\n",[347,384,385,389,392,394,396,399,402,405],{"class":349,"line":170},[347,386,388],{"class":387},"s9A5H","  if",[347,390,391],{"class":357}," (",[347,393,375],{"class":353},[347,395,358],{"class":357},[347,397,398],{"class":353},"content",[347,400,401],{"class":357}," === ",[347,403,404],{"class":368},"'milk'",[347,406,407],{"class":357},") {\n",[347,409,411,414,416,419,421,424,426,429],{"class":349,"line":410},3,[347,412,413],{"class":353},"    message",[347,415,358],{"class":357},[347,417,418],{"class":353},"channel",[347,420,358],{"class":357},[347,422,423],{"class":361},"send",[347,425,365],{"class":357},[347,427,428],{"class":368},"'drink your milk!'",[347,430,431],{"class":357},")\n",[347,433,435],{"class":349,"line":434},4,[347,436,437],{"class":357},"  }\n",[347,439,441],{"class":349,"line":440},5,[347,442,443],{"class":357},"})\n",[347,445,447],{"class":349,"line":446},6,[347,448,449],{"emptyLinePlaceholder":181},"\n",[347,451,453,455,457,459,461,463,465,467,469],{"class":349,"line":452},7,[347,454,354],{"class":353},[347,456,358],{"class":357},[347,458,362],{"class":361},[347,460,365],{"class":357},[347,462,369],{"class":368},[347,464,372],{"class":357},[347,466,375],{"class":353},[347,468,379],{"class":378},[347,470,382],{"class":357},[347,472,474,476,478,480,482,484,486,489],{"class":349,"line":473},8,[347,475,388],{"class":387},[347,477,391],{"class":357},[347,479,375],{"class":353},[347,481,358],{"class":357},[347,483,398],{"class":353},[347,485,401],{"class":357},[347,487,488],{"class":368},"'hello'",[347,490,407],{"class":357},[347,492,494,496,498,500,502,504,506,509],{"class":349,"line":493},9,[347,495,413],{"class":353},[347,497,358],{"class":357},[347,499,418],{"class":353},[347,501,358],{"class":357},[347,503,423],{"class":361},[347,505,365],{"class":357},[347,507,508],{"class":368},"'hello, i am milnk bot'",[347,510,431],{"class":357},[347,512,514],{"class":349,"line":513},10,[347,515,437],{"class":357},[347,517,519],{"class":349,"line":518},11,[347,520,443],{"class":357},[11,522,523],{},"when it could have just been",[338,525,527],{"className":340,"code":526,"language":342,"meta":169,"style":169},"client.on('message', message => {\n\n  if (message.content === 'milk') {\n    message.channel.send('drink your milk!')\n  } else if (message.content === 'hello') {\n    message.channel.send('hello, i am milnk bot')\n  }\n\n})\n",[344,528,529,549,553,571,589,614,632,636,640],{"__ignoreMap":169},[347,530,531,533,535,537,539,541,543,545,547],{"class":349,"line":350},[347,532,354],{"class":353},[347,534,358],{"class":357},[347,536,362],{"class":361},[347,538,365],{"class":357},[347,540,369],{"class":368},[347,542,372],{"class":357},[347,544,375],{"class":353},[347,546,379],{"class":378},[347,548,382],{"class":357},[347,550,551],{"class":349,"line":170},[347,552,449],{"emptyLinePlaceholder":181},[347,554,555,557,559,561,563,565,567,569],{"class":349,"line":410},[347,556,388],{"class":387},[347,558,391],{"class":357},[347,560,375],{"class":353},[347,562,358],{"class":357},[347,564,398],{"class":353},[347,566,401],{"class":357},[347,568,404],{"class":368},[347,570,407],{"class":357},[347,572,573,575,577,579,581,583,585,587],{"class":349,"line":434},[347,574,413],{"class":353},[347,576,358],{"class":357},[347,578,418],{"class":353},[347,580,358],{"class":357},[347,582,423],{"class":361},[347,584,365],{"class":357},[347,586,428],{"class":368},[347,588,431],{"class":357},[347,590,591,594,597,600,602,604,606,608,610,612],{"class":349,"line":440},[347,592,593],{"class":357},"  } ",[347,595,596],{"class":387},"else",[347,598,599],{"class":387}," if",[347,601,391],{"class":357},[347,603,375],{"class":353},[347,605,358],{"class":357},[347,607,398],{"class":353},[347,609,401],{"class":357},[347,611,488],{"class":368},[347,613,407],{"class":357},[347,615,616,618,620,622,624,626,628,630],{"class":349,"line":446},[347,617,413],{"class":353},[347,619,358],{"class":357},[347,621,418],{"class":353},[347,623,358],{"class":357},[347,625,423],{"class":361},[347,627,365],{"class":357},[347,629,508],{"class":368},[347,631,431],{"class":357},[347,633,634],{"class":349,"line":452},[347,635,437],{"class":357},[347,637,638],{"class":349,"line":473},[347,639,449],{"emptyLinePlaceholder":181},[347,641,642],{"class":349,"line":493},[347,643,443],{"class":357},[11,645,646],{},"but at the time i had no concept of an \"event listener\" in my brain. i just copy pasted what worked. its kinda funny looking back. heres another gem of a codeblock, this ones from june of 2020, just after milnk bot got brought back from the dead and rebranded to masonbot:",[338,648,650],{"className":340,"code":649,"language":342,"meta":169,"style":169},"client.on('message', message => {\n    if (message.content.startsWith(\"m,sc\")) {\n    let previousColor = message.member.roles.hoist.hexColor \n    const args = message.content.trim().split(/ +/g);\n    let desiredColor = args.slice(1).join(\" \").replace(/#/g, \"\").toLowerCase();\n    let works = (/^#[0-9A-F]{6}$/i.test(`#${desiredColor}`));\n    if (`${works}` == \"true\") {\n    message.member.roles.hoist.setColor(`${desiredColor}`);\n    message.channel.send({embed: {\n        color: `${desiredColor}`,\n        description: `Changed the color of your hoisted role from ${previousColor} to #${desiredColor}`}})};   \n    if (`${works}` == \"false\") {\n        {message.channel.send(`That didn\\'t work. Correct usage is \\`m,sc hexcode\\`, with hexcode being a normal 6 digit hexcode (with or without the hashtag).`)};\n    }\n}});\n",[344,651,652,672,698,734,781,840,905,930,965,985,1004,1033,1057,1099,1105],{"__ignoreMap":169},[347,653,654,656,658,660,662,664,666,668,670],{"class":349,"line":350},[347,655,354],{"class":353},[347,657,358],{"class":357},[347,659,362],{"class":361},[347,661,365],{"class":357},[347,663,369],{"class":368},[347,665,372],{"class":357},[347,667,375],{"class":353},[347,669,379],{"class":378},[347,671,382],{"class":357},[347,673,674,677,679,681,683,685,687,690,692,695],{"class":349,"line":170},[347,675,676],{"class":387},"    if",[347,678,391],{"class":357},[347,680,375],{"class":353},[347,682,358],{"class":357},[347,684,398],{"class":353},[347,686,358],{"class":357},[347,688,689],{"class":361},"startsWith",[347,691,365],{"class":357},[347,693,694],{"class":368},"\"m,sc\"",[347,696,697],{"class":357},")) {\n",[347,699,700,703,706,709,711,713,716,718,721,723,726,728,731],{"class":349,"line":410},[347,701,702],{"class":378},"    let",[347,704,705],{"class":353}," previousColor",[347,707,708],{"class":357}," = ",[347,710,375],{"class":353},[347,712,358],{"class":357},[347,714,715],{"class":353},"member",[347,717,358],{"class":357},[347,719,720],{"class":353},"roles",[347,722,358],{"class":357},[347,724,725],{"class":353},"hoist",[347,727,358],{"class":357},[347,729,730],{"class":353},"hexColor",[347,732,733],{"class":357}," \n",[347,735,736,739,743,745,747,749,751,753,756,759,762,764,768,772,775,778],{"class":349,"line":434},[347,737,738],{"class":378},"    const",[347,740,742],{"class":741},"sYAHu"," args",[347,744,708],{"class":357},[347,746,375],{"class":353},[347,748,358],{"class":357},[347,750,398],{"class":353},[347,752,358],{"class":357},[347,754,755],{"class":361},"trim",[347,757,758],{"class":357},"().",[347,760,761],{"class":361},"split",[347,763,365],{"class":357},[347,765,767],{"class":766},"sA8pU","/ ",[347,769,771],{"class":770},"s4KIR","+",[347,773,774],{"class":766},"/",[347,776,777],{"class":378},"g",[347,779,780],{"class":357},");\n",[347,782,783,785,788,790,793,795,798,800,804,807,810,812,815,817,820,822,825,827,829,832,834,837],{"class":349,"line":440},[347,784,702],{"class":378},[347,786,787],{"class":353}," desiredColor",[347,789,708],{"class":357},[347,791,792],{"class":353},"args",[347,794,358],{"class":357},[347,796,797],{"class":361},"slice",[347,799,365],{"class":357},[347,801,803],{"class":802},"sqHFf","1",[347,805,806],{"class":357},").",[347,808,809],{"class":361},"join",[347,811,365],{"class":357},[347,813,814],{"class":368},"\" \"",[347,816,806],{"class":357},[347,818,819],{"class":361},"replace",[347,821,365],{"class":357},[347,823,824],{"class":766},"/#/",[347,826,777],{"class":378},[347,828,372],{"class":357},[347,830,831],{"class":368},"\"\"",[347,833,806],{"class":357},[347,835,836],{"class":361},"toLowerCase",[347,838,839],{"class":357},"();\n",[347,841,842,844,847,850,852,856,859,863,866,869,872,875,877,880,882,885,887,890,893,896,899,902],{"class":349,"line":446},[347,843,702],{"class":378},[347,845,846],{"class":353}," works",[347,848,849],{"class":357}," = (",[347,851,774],{"class":766},[347,853,855],{"class":854},"sPiPl","^",[347,857,858],{"class":766},"#",[347,860,862],{"class":861},"shvIa","[",[347,864,865],{"class":766},"0-9A-F",[347,867,868],{"class":861},"]",[347,870,871],{"class":770},"{6}",[347,873,874],{"class":854},"$",[347,876,774],{"class":766},[347,878,879],{"class":378},"i",[347,881,358],{"class":357},[347,883,884],{"class":361},"test",[347,886,365],{"class":357},[347,888,889],{"class":368},"`#",[347,891,892],{"class":378},"${",[347,894,895],{"class":353},"desiredColor",[347,897,898],{"class":378},"}",[347,900,901],{"class":368},"`",[347,903,904],{"class":357},"));\n",[347,906,907,909,911,913,915,918,920,922,925,928],{"class":349,"line":452},[347,908,676],{"class":387},[347,910,391],{"class":357},[347,912,901],{"class":368},[347,914,892],{"class":378},[347,916,917],{"class":353},"works",[347,919,898],{"class":378},[347,921,901],{"class":368},[347,923,924],{"class":357}," == ",[347,926,927],{"class":368},"\"true\"",[347,929,407],{"class":357},[347,931,932,934,936,938,940,942,944,946,948,951,953,955,957,959,961,963],{"class":349,"line":473},[347,933,413],{"class":353},[347,935,358],{"class":357},[347,937,715],{"class":353},[347,939,358],{"class":357},[347,941,720],{"class":353},[347,943,358],{"class":357},[347,945,725],{"class":353},[347,947,358],{"class":357},[347,949,950],{"class":361},"setColor",[347,952,365],{"class":357},[347,954,901],{"class":368},[347,956,892],{"class":378},[347,958,895],{"class":353},[347,960,898],{"class":378},[347,962,901],{"class":368},[347,964,780],{"class":357},[347,966,967,969,971,973,975,977,980,983],{"class":349,"line":493},[347,968,413],{"class":353},[347,970,358],{"class":357},[347,972,418],{"class":353},[347,974,358],{"class":357},[347,976,423],{"class":361},[347,978,979],{"class":357},"({",[347,981,982],{"class":353},"embed:",[347,984,382],{"class":357},[347,986,987,990,993,995,997,999,1001],{"class":349,"line":513},[347,988,989],{"class":353},"        color:",[347,991,992],{"class":368}," `",[347,994,892],{"class":378},[347,996,895],{"class":353},[347,998,898],{"class":378},[347,1000,901],{"class":368},[347,1002,1003],{"class":357},",\n",[347,1005,1006,1009,1012,1014,1017,1019,1022,1024,1026,1028,1030],{"class":349,"line":518},[347,1007,1008],{"class":353},"        description:",[347,1010,1011],{"class":368}," `Changed the color of your hoisted role from ",[347,1013,892],{"class":378},[347,1015,1016],{"class":353},"previousColor",[347,1018,898],{"class":378},[347,1020,1021],{"class":368}," to #",[347,1023,892],{"class":378},[347,1025,895],{"class":353},[347,1027,898],{"class":378},[347,1029,901],{"class":368},[347,1031,1032],{"class":357},"}})};   \n",[347,1034,1036,1038,1040,1042,1044,1046,1048,1050,1052,1055],{"class":349,"line":1035},12,[347,1037,676],{"class":387},[347,1039,391],{"class":357},[347,1041,901],{"class":368},[347,1043,892],{"class":378},[347,1045,917],{"class":353},[347,1047,898],{"class":378},[347,1049,901],{"class":368},[347,1051,924],{"class":357},[347,1053,1054],{"class":368},"\"false\"",[347,1056,407],{"class":357},[347,1058,1060,1063,1065,1067,1069,1071,1073,1075,1078,1082,1085,1088,1091,1093,1096],{"class":349,"line":1059},13,[347,1061,1062],{"class":357},"        {",[347,1064,375],{"class":353},[347,1066,358],{"class":357},[347,1068,418],{"class":353},[347,1070,358],{"class":357},[347,1072,423],{"class":361},[347,1074,365],{"class":357},[347,1076,1077],{"class":368},"`That didn",[347,1079,1081],{"class":1080},"s6aLM","\\'",[347,1083,1084],{"class":368},"t work. Correct usage is ",[347,1086,1087],{"class":1080},"\\`",[347,1089,1090],{"class":368},"m,sc hexcode",[347,1092,1087],{"class":1080},[347,1094,1095],{"class":368},", with hexcode being a normal 6 digit hexcode (with or without the hashtag).`",[347,1097,1098],{"class":357},")};\n",[347,1100,1102],{"class":349,"line":1101},14,[347,1103,1104],{"class":357},"    }\n",[347,1106,1108],{"class":349,"line":1107},15,[347,1109,1110],{"class":357},"}});\n",[11,1112,1113,1114,1117,1118,1121,1122,1124],{},"this is exactly how it was written. the obvious standout is ",[344,1115,1116],{},"if (","${works}",[344,1119,1120],{}," == \"true\")",". i dont think you could come up with a better parody of beginner javascript devs than that if you tried. to anybody who spends time on stackoverflow or discord servers or whatever, helping out beginner devs, you seriously have my respect. i would ask questions in discord servers when i was stuck sometimes, back when i first started, and people were very helpful. good memories! maybe ill join back and see if there are people that ",[18,1123,879],{}," could help. a full circle moment",[11,1126,1127],{},"it wasnt until a year later i think? where i started taking actual online courses, trying to improve my understanding of javascript beyond the random stuff i happened to pick up during my time banging rocks together. freecodecamp was the course i chose, i remember doing it during class in high school sometimes, if i had a moment to spare",[11,1129,1130],{},"ultimately, while freecodecamp is a good website and it probably taught me some things i didnt know, i dont think ive ever been very good at absorbing information from courses. i thought i had been learning to code through brute force out of sheer stubbornness, but it turns out thats more or less the way i learn best. nowadays i do spend time reading docs and asking AI for help, but not taking courses. i did try taking a vue course around a month ago, on vue mastery, and i got through the first course before quitting it and learning on my own. it was nice to get the basics from a course, so i had a decent foundation and knew where to start. but after the very very basics i had more luck just diving in. more about that in the next section, but the point is that ive always been a fan of learning by doing",[11,1132,1133,1134,1138],{},"anyway. masonbot had a very good run. he was only in my server, along with my friend group of 5-10 people. so every feature i made was for a very small audience, but that never mattered to me. he had a currency system which i  YOU SHOULDNT BE SEEING THIS TEXT PLEASE REPORT IT ",[26,1135],{"text":1136,"tooltip":1137},"was","still am"," so proud of (hooked up to mongodb), i worked with html canvas a bit to make cool commands like hex viewers, a feature where a user could join vc and have the bot read out their messages for them using microsoft tts (since they didnt want to use their mic), and so many other random things. i would have never gotten into coding if it werent for discordjs, and i think im not alone in that. discordjs 12 will always have a special place in my heart. it felt like the perfect playground to learn in",[11,1140,1141],{},"and good news: masonbot is back! he has been for a number of months, actually. he has a couple AI commands, like chatting with deepseek. he had a command to check the status of my homeserver, although i dont use that command anymore now that i have grafana setup. hes not as full of features as he used to be, but thats okay. i only use him in dms with 2 friends now, but we have fun with him and use the chat command pretty regularly. being able to use bots in dms is so cool, although i still prefer the simplicity of discord bot development from when i first started. before intents and slash commmands. still, its nice to see him online again",[224,1143,1145],{"id":1144},"the-website-era-aka-the-miscellaneous-era","the website era (aka: the miscellaneous era)",[11,1147,1148,1149],{},"this is where ive been for, idk, a couple years? after my server disbanded and masonbot went with it, i didnt code much for a while. but after a while, i dont remember what started it, i realized that my knowledge of javascript from my masonbot days meant that i could get into web development  YOU SHOULDNT BE SEEING THIS TEXT PLEASE REPORT IT ",[26,1150],{"text":1151,"tooltip":1152},"relatively easily","css still kicked my ass more than javascript ever did",[1154,1155,1157],"h4",{"id":1156},"the-beginnings","the beginnings",[11,1159,1160],{},"to be honest i dont remember my beginning web dev days much. i started with html css and javascript, but i didnt make that much with them really. i made my own website which was only like 3 super basic pages. i didnt really care much for it, i didnt have the same drive that i had when i was making discord bots. websites just didnt capture me the same way",[11,1162,1163],{},"some time later, i made a website for a friends website. it was a website where you could draw on an html canvas with inside joke images. i still need to port it over to a modern website... but that was the first website i ever made with any sort of complexity. i remember really struggling to get it online, i had problems with CORS i think",[11,1165,1166,1167,1170,1171,1175],{},"side note, but speaking of troubles, around that time is when i was trying to host with google cloud. i really hated it. im sure i will have to learn AWS or google cloud or something else eventually, and it probably wont be too bad now that im generally more experienced. but back then it seemed unbelievably overkill (because, for a small website, it was). eventually i switched to digitalocean and ive stuck with them since, i really love them in comparison. i find the developer experience of just having a linux container so much simpler. its ",[18,1168,1169],{},"just"," linux. and their tutorials are top notch. i  YOU SHOULDNT BE SEEING THIS TEXT PLEASE REPORT IT ",[26,1172],{"text":1173,"tooltip":1174},"first learned how to use linux","i mean, i had experimented with ubuntu in a virtual machine, but never for more than a few minutes at a time. if you dont have any problem to solve and are just messing around, its hard to really learn, at least for me"," on a digitalocean droplet, getting one of my earlier websites hosted. in fact, i think that website was my first react website.",[1154,1177,1179],{"id":1178},"the-reactening","the reactening",[11,1181,1182],{},"apparently, after making 1/3rd of a website using html, css, and js, i figured i was ready to move on to a framework. and react was the most popular one, so thats what i went with. this react app was also incredibly basic, and it was online for about 2 years, up until i replaced it with masonlaneous. it was just the sample create-react-app home page with a couple lines of text changed, although i did also have a tictactoe page (with websocket-based multiplayer) on that website. but thats about it. and then i just let it sit for years because i really was not interested in react",[11,1184,1185],{},"i DID still experiment with react over the past couple years privately. random projects that i would leave half-finished and never show anybody. i cant even remember most of them, honestly. i had a react rewrite of the previously mentioned html canvas drawing page about 80% finished, then i gave up on it. i tested out rendering user-controlled shapes in html canvas, planning to maybe turn it into some kind of game, but i also gave up on that. for the past couple years, most of the programming ive done has been abandoned early on",[1154,1187,1189],{"id":1188},"home-server","home server",[11,1191,1192],{},"that is, until i built my home server earlier this year. that gave me problems to solve, and i solved some of them with code. my automated backups are currently handled by a script i wrote in typescript that automatically runs rsync. i think ill do a writeup about that eventually. the home server is also the catalyst for bringing back masonbot, for showing server status within discord. i also self-host my own custom new tab page on my home server. i call it the mason panel. i originally planned for it to have more functionality, but right now its just a bunch of quick links. but i think theres still a good chance that i update it to have more functionality in the future",[11,1194,1195],{},"anyway, the home server did get me to come back to programming a bit, though nothing really public facing (besides the discord bot, if that counts) and not much frontend work (the new tab page was pretty simple). i wasnt really a web dev, just a guy who knew typescript and could throw together a simple website if necessary",[1154,1197,1199],{"id":1198},"vue-saves-the-day","vue saves the day",[11,1201,1202],{},"but then i decided to give vue a try. i had heard so many people praise its developer experience compared to react. and recently, i had started to think that maybe the reason why i didnt like making websites was just because i didnt like react. so i decided to give it a shot!",[11,1204,1205],{},"i actually gave sveltekit and angular a try too, but evidently i didnt click with them much considering the fact that i forgot i ever tried them until checking my projects folder just now",[11,1207,1208],{},"anyway, i took the first course on vue mastery, before eventually just diving in on my own project. i dont remember which project i did first, it might have been this very website or it might have been the html-canvas based game. or maybe it was neither, maybe it was some other random short-lived test project. but either way, i was definitely enjoying it more than any other framework i had used. instantly i fell in love with the single-file component (SFC) approach. having the layout, style, and logic all be self contained is so smart. in react, the style is separate, and you have to use css modules instead of regular css otherwise all your css mushes together and overlaps, and css modules are just kinda weird to use. its quite possible i was just dumb, but the point is it didnt really gel with me. with vue, however, it really feels like they took the simplicity of html + css + js, and then smoothed out the edges and modernized it. its so much easier to reason about how a component or page works in vue",[11,1210,1211],{},"i still havent gotten too far into the advanced features of vue, like going deeper with directives for example. ive kept it pretty simple so far, because i havent needed anything more complex. but im actually excited to get into more advanced topics, whereas with react i kinda dreaded it. every time i had to work with useRef() or useMemo() it felt like my brain was turning into mush. vue fits like a glove - it really feels like its empowering me to create, rather than being an obstacle i have to fight with in order to accomplish my goals.",[11,1213,1214,1215,1218],{},"i still have plenty of learning to do, but im ",[18,1216,1217],{},"excited"," to learn now. i feel reborn!",[1154,1220,1222],{"id":1221},"making-this-blog-with-nuxt","making this blog with nuxt",[11,1224,1225],{},"pretty soon after starting with vue, i decided to set out and make a blog. i had the idea of writing markdown posts and having the website automatically read those files and turn them into webpages. and then i found out about @nuxt/content, which is exactly what i was looking for! although it wasnt regular vue, it was nuxt. after being traumatized by react, i figured adding another layer of complexity would make everything horrible and i would give up and start crying. but actually, nuxt hasnt been too bad at all! ive been working on the blog for... idk, a month? and i feel like i have a decent grasp on nuxt now, enough to get stuff done at least. once again, i have some learning to do, regarding ssr and ssg and stuff. i am somewhat familiar with the concepts, but this is my first time applying them",[11,1227,1228],{},"i thought i was the type of person who wants as much control and as little abstraction as possible. that is not entirely untrue, but i find that the \"nuxt\" way of doing things doesnt feel restrictive. file based routing works nicely (in my react website, i basically wrote my own file-based routing, which wasnt very fun), the \"layouts\" feature is cool. global imports are awesome, its not something i consciously notice usually, but its definitely a big improvement to my developer experience. just being able to use anything anywhere and not having to import it (for the most part, i do still have to import nuxt types to use them in my typescript, but thats fine)",[11,1230,1231,1232,1235],{},"nuxt content in particular has been pretty good too. trying to implement my tooltip system was definitely a headache, but now that ive gotten them sorted i can say that it was ",[18,1233,1234],{},"mostly"," the fault of my lack of knowledge. if i had to do it again, i could, and it wouldnt be too bad i dont think. although i will say the nuxt documentation for 'content:file:beforeParse' and such didnt explain things super well. i really appreciate something being modular and easily extensible, and while nuxt content IS extensible, i wouldnt necessarily call my experience \"easy\". but again, im the kind of guy who learns as i go. if youre the type of person who learns by actually studying documentation and ensuring you have a thorough understanding of a technology before trying to do complex stuff with it, then you probably wont run into the same problem. and the fact that that was the only major roadblock i ran into is pretty awesome. ALSO, it wasnt enough for me to giveup. if i ran into a roadblock like that in react, i probably would have just abandoned the entire project, lol",[11,1237,1238],{},"but now i dont feel like giving up on web dev anymore! i feel like ive finally found the passion that ive been looking for, and have regained the desire to code that i mostly lost after i took masonbot offline. so, thanks vue!",[1154,1240,1241],{"id":1241},"conclusion",[11,1243,1244],{},"that's about all for this blog post i think. it uh... ended up being longer than i expected it to be. but thats okay! i spent basically all day on this, since ive also been tweaking a bunch of actual code throughout the process of writing. but i think now im about to push my first post-launch update to the website. thanks for reading!",[1246,1247,1248],"style",{},"html pre.shiki code .s6-IL, html code.shiki .s6-IL{--shiki-default:#001080;--shiki-dark:#9CDCFE}html pre.shiki code .sK6Qu, html code.shiki .sK6Qu{--shiki-default:#000000;--shiki-dark:#D4D4D4}html pre.shiki code .sCaUI, html code.shiki .sCaUI{--shiki-default:#795E26;--shiki-dark:#DCDCAA}html pre.shiki code .sXNWB, html code.shiki .sXNWB{--shiki-default:#A31515;--shiki-dark:#CE9178}html pre.shiki code .si2PQ, html code.shiki .si2PQ{--shiki-default:#0000FF;--shiki-dark:#569CD6}html pre.shiki code .s9A5H, html code.shiki .s9A5H{--shiki-default:#AF00DB;--shiki-dark:#C586C0}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sYAHu, html code.shiki .sYAHu{--shiki-default:#0070C1;--shiki-dark:#4FC1FF}html pre.shiki code .sA8pU, html code.shiki .sA8pU{--shiki-default:#811F3F;--shiki-dark:#D16969}html pre.shiki code .s4KIR, html code.shiki .s4KIR{--shiki-default:#000000;--shiki-dark:#D7BA7D}html pre.shiki code .sqHFf, html code.shiki .sqHFf{--shiki-default:#098658;--shiki-dark:#B5CEA8}html pre.shiki code .sPiPl, html code.shiki .sPiPl{--shiki-default:#EE0000;--shiki-dark:#DCDCAA}html pre.shiki code .shvIa, html code.shiki .shvIa{--shiki-default:#D16969;--shiki-dark:#CE9178}html pre.shiki code .s6aLM, html code.shiki .s6aLM{--shiki-default:#EE0000;--shiki-dark:#D7BA7D}",{"title":169,"searchDepth":170,"depth":170,"links":1250},[1251,1256],{"id":197,"depth":170,"text":198,"children":1252},[1253,1254,1255],{"id":226,"depth":410,"text":227},{"id":255,"depth":410,"text":256},{"id":276,"depth":410,"text":277},{"id":320,"depth":170,"text":321,"children":1257},[1258,1259],{"id":324,"depth":410,"text":325},{"id":1144,"depth":410,"text":1145},"get to know the mason behind the scape",{},1775731763991,"/blog/who-am-i",1749322324082,{"title":189,"description":1260},"blog/who-am-i","RRs_LUZuHnOMz-wQ3LqDnT2dfzsVfEbBf-PSnHsmT3I",{"id":1269,"title":1270,"body":1271,"description":1419,"extension":178,"meta":1420,"modified":180,"navigation":181,"path":1421,"published":1422,"seo":1423,"stem":1424,"__hash__":1425},"blog/blog/first-post.md","first post!",{"type":8,"value":1272,"toc":1416},[1273,1276,1292,1303,1367,1371,1374,1406,1410,1413],[11,1274,1275],{},"wow! first post! i dont know if i should type in proper grammar so im just gonna go ahead and not, at least for now. maybe proper grammar is reserved only for certain kinds of posts? like, educational type writeups? and casual posts can be written casually? works for me i guess!",[11,1277,1278,1279,1283,1284,1288,1289],{},"anyway! this is the first post for my new blog. im planning to do longer, perhaps less casual writeups on certain features of the blog. like  YOU SHOULDNT BE SEEING THIS TEXT PLEASE REPORT IT ",[26,1280],{"text":1281,"tooltip":1282},"tooltips","tooltips are the thing youre looking at right now, where you mouse over text and it shows you some more text",", as well as my experience getting better at  YOU SHOULDNT BE SEEING THIS TEXT PLEASE REPORT IT ",[26,1285],{"text":1286,"tooltip":1287},"css","something i kinda suck at and have been avoiding, but which i have definitely improved at while making this website",", and also my biggest vue project yet. ive used vue before, but it was on pretty small things. im coming from react and i can say i definitely prefer vue. theres a reason my previous react-based website never got updated YOU SHOULDNT BE SEEING THIS TEXT PLEASE REPORT IT ",[26,1290],{"text":104,"tooltip":1291},"to be fair i did make other miscellaneous projects in react but they were often left unfinished, and never made public-facing",[11,1293,1294,1295,1302],{},"anyway, this blog can do some cool things! its powered by ",[1296,1297,1301],"a",{"href":1298,"rel":1299},"https://content.nuxt.com/",[1300],"nofollow","@nuxt/content"," so it can do some neat stuff like code blocks!",[338,1304,1308],{"className":1305,"code":1306,"language":1307,"meta":169,"style":169},"language-ts shiki shiki-themes light-plus dark-plus","const awesome = 'look, im a code block!'\n\nconsole.log(awesome.split('').reverse().join(''))\n","ts",[344,1309,1310,1323,1327],{"__ignoreMap":169},[347,1311,1312,1315,1318,1320],{"class":349,"line":350},[347,1313,1314],{"class":378},"const",[347,1316,1317],{"class":741}," awesome",[347,1319,708],{"class":357},[347,1321,1322],{"class":368},"'look, im a code block!'\n",[347,1324,1325],{"class":349,"line":170},[347,1326,449],{"emptyLinePlaceholder":181},[347,1328,1329,1332,1334,1337,1339,1342,1344,1346,1348,1351,1353,1356,1358,1360,1362,1364],{"class":349,"line":410},[347,1330,1331],{"class":353},"console",[347,1333,358],{"class":357},[347,1335,1336],{"class":361},"log",[347,1338,365],{"class":357},[347,1340,1341],{"class":353},"awesome",[347,1343,358],{"class":357},[347,1345,761],{"class":361},[347,1347,365],{"class":357},[347,1349,1350],{"class":368},"''",[347,1352,806],{"class":357},[347,1354,1355],{"class":361},"reverse",[347,1357,758],{"class":357},[347,1359,809],{"class":361},[347,1361,365],{"class":357},[347,1363,1350],{"class":368},[347,1365,1366],{"class":357},"))\n",[32,1368,1370],{"id":1369},"so-what-now","so... what now?",[11,1372,1373],{},"lots of things!",[232,1375,1376,1379,1382,1385,1394,1397,1400,1403],{},[235,1377,1378],{},"a page editor would be great! having to write my posts within vscode is a little annoying. i plan to have my own webpage where i can write posts in a text box and see a live preview of how it will look on the  actual website. it would also automatically set the created date, and let me specify title more easily. plus an image uploader maybe. this may have to wait until i have things relatively stable; right now im changing things so often that having an \"outside of vscode\" solution doesnt make much sense. im probably gonna have to pop in to vscode regardless to adjust the code",[235,1380,1381],{},"table of contents. not sure where i want to put it though. im thinking about having a floating button that you can click on to expand the table of contents, but i could also have it permanently visible on the sidebar. or i could have it sit under the title bar, and not be permanently visible. so many options!",[235,1383,1384],{},"tags for posts. gonna have to give some thought to what tags should exist, to avoid bloat",[235,1386,1387,1388,1393],{},"a search feature on the ",[1389,1390,1392],"nuxt-link",{"to":1391},"/blog","blog index"," (once i add more blog posts)",[235,1395,1396],{},"a series system. not sure what i want to call it, but a way to group posts even more tightly than a simple tag. kinda like having one post be a part 2 to another post, and then i can even have a part 3, 4, etc. so if you wanna read all the posts about this one particular project, it will show \"part of a series on (blank)\" and you can click it to see all the posts in that series. not everything will be part of a series of course",[235,1398,1399],{},"use github actions to automatically rebuild prod every time i push changes",[235,1401,1402],{},"better theme switcher. right now its more like a silly easter egg. the plan is that when you click on the theme switcher, it will bring up a modal where you can set the primary, secondary, and accent colors manually. i would want to automatically detect whether its dark or light mode (stuff like shiki relies on knowing whether the theme is light or dark). maybe i could just detect whether the primary color is lighter than the secondary color or vice versa",[235,1404,1405],{},"better code blocks. really i just want a code block that can show the extension and filename. gonna want to make my own wrapper around shiki i think",[1154,1407,1409],{"id":1408},"and-probably-a-lot-more-that-im-forgetting","and probably a lot more that im forgetting!",[11,1411,1412],{},"but i guess that will do it for this post. thanks for tuning in :)",[1246,1414,1415],{},"html pre.shiki code .si2PQ, html code.shiki .si2PQ{--shiki-default:#0000FF;--shiki-dark:#569CD6}html pre.shiki code .sYAHu, html code.shiki .sYAHu{--shiki-default:#0070C1;--shiki-dark:#4FC1FF}html pre.shiki code .sK6Qu, html code.shiki .sK6Qu{--shiki-default:#000000;--shiki-dark:#D4D4D4}html pre.shiki code .sXNWB, html code.shiki .sXNWB{--shiki-default:#A31515;--shiki-dark:#CE9178}html pre.shiki code .s6-IL, html code.shiki .s6-IL{--shiki-default:#001080;--shiki-dark:#9CDCFE}html pre.shiki code .sCaUI, html code.shiki .sCaUI{--shiki-default:#795E26;--shiki-dark:#DCDCAA}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":169,"searchDepth":170,"depth":170,"links":1417},[1418],{"id":1369,"depth":170,"text":1370},"discussing the new website, and plans going forward",{},"/blog/first-post",1749198130658,{"title":1270,"description":1419},"blog/first-post","Cf8RaJzhcGnVsvgxSg9NcwUkGezHWTd98mZ3fLYlkeY",1775733376530]