index.md (14945B)
1 +++ 2 title = "I Wrote This #3" 3 date = 2020-07-04 4 updated = 2022-06-14 5 [extra] 6 type = "post" 7 +++ 8 9 It appears I'm not that great at keeping a weekly schedule. Right after 10 I published my last post, I started a class on text adventures and have 11 been living and breathing in [Inform7] ever since. I've also spent some 12 time working on this site – though I've got even bigger changes coming 13 in the future – learning a few new languages, and listening to a whole 14 lot of music. I think [something happened in cybersec] too? Oh also I 15 learned how to drive. 16 17 <!-- more --> 18 19 ## Interactive Fiction 20 21 These past few weeks, my main work has been on interactive fiction as 22 part of a summer class for my school. The first week was spent learning 23 the history of text adventures (as I will refer to them for the rest of 24 the article, becuase calling them "interactive fiction" makes me sound 25 like ~~a dick~~ a snob). I gathered a collection of games to play in my 26 free time (if I ever have any more of that), from the very first of the 27 genre – Adventure – to modern ones like Lost Pig. 28 29 ![My collection of text adventures: Adventure, Bronze, Counterfeit 30 Monkey, Curses, Hitchhiker's Guide to the Galaxy, Lost Pig, and 31 Slouching Towards Bedlam](collection.png) 32 33 In the second week, we all made our own text adventures. It was a really 34 interesting experience – drastically different than any other 35 programming I've done. The main thing I struggled with was the semi-NLP 36 style of [Inform7]. Rather than telling the computer what to do, I felt 37 like I was making suggestions. I also struggled with the editor a bit. 38 Inform7 isn't open source, which means there's only one IDE you can use 39 to program in the language. That would be fine if the IDE was high 40 quality, but I often found it ~~really bad and draining~~ mediocre. This 41 was made a little better after I changed the editor colors to be much 42 more vibrant ~~so I wouldn't fall asleep~~, but I still felt like it 43 needed some work. Regardless of any struggles along the way, the payoff 44 after the game was finished was huge. Watching my little sister play a 45 text adventure for the first time, *one I had made*, was awesome. 46 47 Without further ado, I present to you: *One Angry Wizard, or the 48 Tentacular Adventures of our Brave Hero through a World Most Strange and 49 Foreign*. You can download [the .gblorb here]. 50 51 52 ## Site Work 53 54 I made some changes that you guys can see, and some other ones behind 55 the scenes. 56 57 ### Joining Webrings 58 59 I first encountered webrings [on Hacker News], where I find most of my 60 interesting internet things. From there, I decided to join both the 61 [geekring] and the [Hotline Webring] – you can find links to the 62 webrings in the nav on every page. Joining the Hotline Webring was 63 designed to be supremely easy, but the geekring was a little more 64 complicated. I've never been a big IRC person (though not for lack of 65 trying), and I ended up joining via the HTML form and getting my key via 66 email. ~~I may or may not have confused my number with my private-ish 67 key, and had to use a little bit of [bfg] magic to fix that.~~ 68 69 **EDIT:** I would now very much consider myself a big IRC person. 70 71 ### Self-Hosting 72 73 My site was previously hosted using a continuous deploy on [Netlify]. 74 This was a pretty great system for me – all I had to do was commit my 75 code to the GitHub repo, which I was already doing, and the they would 76 take care of everything and serve a great site – here's the kicker – 77 **for free**. This was working really well for me for a while, until I 78 decided to add security headers to the site. I tried doing this in two 79 different ways: using [Helmet] as described [in the Sapper Docs] and 80 using Netlify [\_headers]. The Helmet middleware didn't work with 81 Netlify, and I'm honestly not sure why – possibly because of how they 82 host the file server (I'm not sure what/how they serve the site), or 83 maybe I just f\*cked up somewhere idk JavaScript is hard. Using the 84 Netlify config didn't work either because I'm not a paying subscriber, 85 which wasn't too clear at first. This would probably be solved if I just 86 gave them money, but I'm not going to do that any time soon. 87 88 I decided to move to [DigitalOcean] and host the site myself (or I guess 89 not totally myself – I don't feel comfortable running it on a Pi from my 90 house just yet) with [Caddy]. I went with DigitalOcean partially because 91 of their dev-focused business model, but mostly because they're cheap 92 (my droplet is USD$5/month and I get $50 credit with them from the 93 [GitHub Student Developer Pack] – my first year of hosting for only 94 $10). 95 96 Unfortunately, I didn't quite run the transition too well. It definitely 97 wasn't zero downtime – it was probably more like a-few-hours downtime. I 98 doubt this really affected anyone because of my small audience, but I 99 was still up late working on it. If it had happened a few days later, it 100 might have gotten mixed up with the [Cloudflare downtime] (I don't use 101 Cloudflare). 102 103 My current setup uses a custom CaddyServer configuration to serve my 104 site, which I am absolutely loving so far: it is so much easier to run 105 advanced setups with Caddy than Apache or Nginx. I wanted to move away 106 from Javascript analytics (via [GoatCounter]) to log-based analytics 107 (via [GoAccess]) but found that Caddy's structured logs are not 108 supported natively. I'm hoping [they'll add it] soon though! Also, I 109 stumbled on [this article] while writing this, and may check that out. 110 111 ### Next Steps 112 113 I've got two major todos for my site in the near future. The first thing 114 I want to do is Dockerize. Using Docker will significantly clean up my 115 current setup, and allow me to host more fun things on the same machine 116 (for example, [my own analytics] and maybe [git]). With that said, I 117 probably should get a little better at Docker first... For beginners, 118 [Flavio Copes'] has a few pretty great posts on the subject. 119 120 The second thing I want to do is a bit of a larger project, and one I'm 121 not yet sure how I'm going to solve. I've run into some problems with 122 the frameworks I use to develop [figbert.com]. Sapper generates inline 123 scripts and blobs, which tanks the security of my CSP. [Their proposed 124 solution][in the Sapper Docs] is to inject nonces with JS middleware, 125 but this doesn't work with CaddyServer. I would much rather Sapper 126 [avoid inline scripts] altogether, but this doesn't seem likely. I 127 really like the freedom that writing static sites in Svelte provides me 128 versus other static site generators, but this could be a dealbreaker. I 129 might talk a look at [Routify] and see if that's any better. I've also 130 been reconsidering using TailwindCSS, however useful it is, after 131 reading [these] three[^1] [articles]. I attempted to replicate the 132 current look of [figbert.com] without TailwindCSS, and failed. So I'm 133 probably going to rewrite the site again, though I'm not sure how. 134 Through iteration, we will arrive at a stable version – this one, 135 unfortunately, is not yet it. If I do leave Svelte, which is probably a 136 50/50 chance at this point, I would probably go either back to [Hugo] 137 (with some variation of the incredible [archie] theme) or to [Zola]. 138 139 ## Real World Updates 140 141 ### CyberSec 142 143 So, some pretty crazy things have happened. For one, [Twitter got 144 hacked][something happened in cybersec] by some people from OGUsers who 145 got access to some internal managment tools. This hack, though not 146 necessarily the most technical, was super high profile. There were a few 147 [really good articles] written about the hack, but I also noticed a few 148 people acting in ways that I thought were not appropriate. More 149 specifically, [Brian Krebs], who reacted to the hack by [repeatedly] 150 [doxxing] the hackers, many of whom are still teenagers. He's received 151 relatively little [criticism] for doing this, though it appears to be [a 152 pattern of behavior]. 153 154 There was also a brief mention of a new [macOS malware], but judging by 155 the lack of further publicity it's probably not that common in the wild. 156 That, or people don't care because it's spread mainly through torrenting 157 sites and they don't want to protect people they perceived to be morally 158 beneath them – which is wrong, obviously. 159 160 ### Driving 161 162 I learned how to drive! Or rather, I got kind-of licensed to drive a car 163 in the US. I've been driving around a lot lately as something fun I can 164 do to pass time in quarantine, and last week I finished my online 165 driver's ed course and got my learner's permit. It was a surprisingly 166 simple and COVID-friendly process! The most complicated/least 167 COVID-friendly part was going to the DMV to take the written test, but I 168 wore a mask and gloves and glared at anybody who got remotely close to 169 me. The next steps are much more dangerous to do during a pandemic, but 170 we have a year to complete them so we're going to delay them (some 171 in-person driver's training and the driver's test) for a bit. For now 172 though, I have a piece of paper that says I can learn to drive! 173 174 ### Better Platforms 175 176 I've also taken some time to focus on decentralization. I've had a 177 [Mastodon account] for a while, but I rarely used it. I didn't have a 178 mobile client, and I almost never use social media on my computers. To 179 help change my behaviour I downloaded [Mast], a paid Mastodon client for 180 the Apple ecosystem. I went with Mast mostly because it's absolutely 181 *gorgeous* – and [open source] – which is something I value in the apps 182 I use. Apps that look really nice are fantastic inspiration for my own 183 apps' designs, and this one is no exception. 184 185 I've also started using three other apps much more heavily recently: 186 [Feedly], [Octal], and [Element]. Feedly is a fantastic RSS reader, 187 which helps me keep track of all the interesting blogs that I find 188 online (I read somewhere about self-hosting an RSS reader, which sounds 189 pretty cool, but I forget what it was called). Octal is a HN client for 190 iOS, which is really handy for keeping up with my favorite tech news 191 when I'm away from my computer. Element (previously Riot), is the 192 first-party [Matrix] client that makes using a decentralized E2EE chat 193 service feel better than Discord. I love it. In an ideal world where I 194 could choose the tools I use to communicate with people, I would only 195 use Signal and Element/Matrix (for replacing iMessage and Discord/Slack, 196 respectively). 197 198 ### Music 199 200 Oh my god there's so much new music. 201 * [Jonny by Bar Tsabari](https://www.youtube.com/watch?v=52CzYCmJFD8) 202 * [Kukuriku by Eden Ben Zaken and Omer Adam](https://www.youtube.com/watch?v=d60H5D9GefE) 203 * [Ta'azri et Atzmech by Dekel Vaknin](https://www.youtube.com/watch?v=_Vs-1s2BtJA) 204 * [Sivuvim by Eden Hason](https://www.youtube.com/watch?v=ZTNmNJnvdzc) 205 * [Lecha Dodi by Moshe Peretz and others](https://www.youtube.com/watch?v=2AWLqffzR9k) 206 * [Haravot BaPita (Album) by Peled](https://www.youtube.com/watch?v=NV3e7d1bELI&list=OLAK5uy_kMpEzEcDVrgK_muDGEoy2r-iTxWbCKet0) 207 * [Magevet BaAvir by Noroz](https://www.youtube.com/watch?v=5_5PtfmoIQk) 208 * [Nadav\_15 by Shekel](https://www.youtube.com/watch?v=_wIkyNfJYYc) 209 * [Moshe by Narkis and Miri Mesikah](https://www.youtube.com/watch?v=CjHiYZU1gJE) 210 * [Tik Tok by Mohamed Ramadan and Super Sako](https://www.youtube.com/watch?v=YQpuETX_tr0) 211 * [Aliyato VeNiflato Shel Shem Tov Hevi by Tamir Bar](https://www.youtube.com/watch?v=I9xBb3MDxgk) 212 * [Falafel Pop (Album) by Quarter to Africa](https://www.youtube.com/watch?v=7VWBTxOEHoQ&list=OLAK5uy_lRWsEN-9ydoMrdEzkw7xySe1105vhZLYc) 213 * [Lama Kacha Atzuva by Idan Raichel and Stav Beger](https://www.youtube.com/watch?v=sZHSE6tyccQ) 214 * [Kapara by Kevin Robin and Rotem Cohen](https://www.youtube.com/watch?v=1EZBnZRyjpc) 215 * [Ehad HaAm by Aya Zahavi Fayglin](https://www.youtube.com/watch?v=MADaEN_3N18) 216 217 ## Wrapup 218 219 I hope you enjoyed reading this update! I know it's much longer than 220 usual, and I'll try and keep them shorter than this from now on. I plan 221 on writing more short, topic-focused articles rather than just updates, 222 but those will come soon. For now though, I need to focus on knocking 223 out some of the larger projects that I'm working on. I keep finding cool 224 and interesting things to do, and I need to work on finishing the ones 225 that I've already started! 226 227 Salamat, FIGBERT 228 229 --- 230 231 [^1]: This previously linked to 232 `https://edvinleander.com/2020/07/15/stop-the-overuse-copy-pasting-and-unecessary-libraries/`, 233 but the site has been down for years now and I neglected to archive it. Such is the nature of the internet. 234 235 [Inform7]: http://inform7.com/ 236 [something happened in cybersec]: https://techcrunch.com/2020/07/15/twitter-accounts-hacked-crypto-scam/ 237 238 [the .gblorb here]: /files/one-angry-wizard.gblorb 239 240 [on Hacker News]: https://news.ycombinator.com/item?id=23549471 241 [geekring]: https://geekring.net/ 242 [Hotline Webring]: https://hotlinewebring.club/ 243 [bfg]: https://rtyley.github.io/bfg-repo-cleaner/ 244 245 [Netlify]: https://www.netlify.com/ 246 [Helmet]: https://helmetjs.github.io/ 247 [in the Sapper Docs]: https://sapper.svelte.dev/docs#Security 248 [\_headers]: https://docs.netlify.com/routing/headers/ 249 250 [DigitalOcean]: https://www.digitalocean.com/ 251 [Caddy]: https://caddyserver.com/ 252 [GitHub Student Developer Pack]: https://education.github.com/pack/ 253 254 [Cloudflare downtime]: https://techcrunch.com/2020/07/17/cloudflare-dns-goes-down-taking-a-large-piece-of-the-internet-with-it/ 255 256 [GoatCounter]: https://www.goatcounter.com/ 257 [GoAccess]: https://goaccess.io/ 258 [they'll add it]: https://github.com/allinurl/goaccess/issues/1768#issuecomment-646674023 259 [this article]: https://alexmv12.xyz/blog/goaccess_caddy/ 260 261 [my own analytics]: https://docs.plausible.io/self-hosting/ 262 [git]: https://docs.gitea.io/en-us/install-with-docker/ 263 [Flavio Copes']: https://flaviocopes.com/tags/docker/ 264 265 [figbert.com]: https://figbert.com/ 266 [avoid inline scripts]: https://github.com/sveltejs/sapper/issues/1175 267 [Routify]: https://routify.dev/ 268 [these]: https://www.roguelazer.com/2020/07/etcd-or-why-modern-software-makes-me-sad/ 269 [articles]: https://johanronsse.be/2020/07/08/why-youll-probably-regret-using-tailwind/ 270 [Hugo]: https://gohugo.io/ 271 [archie]: https://github.com/athul/archie 272 [Zola]: https://www.getzola.org/ 273 274 [really good articles]: https://fortenf.org/e/security/2020/07/15/twitter-hack.html 275 [Brian Krebs]: https://krebsonsecurity.com/ 276 [repeatedly]: https://krebsonsecurity.com/2020/07/twitter-hacking-for-profit-and-the-lols/ 277 [doxxing]: https://krebsonsecurity.com/2020/07/whos-behind-wednesdays-epic-twitter-hack/ 278 [criticism]: https://news.ycombinator.com/item?id=23865035 279 [a pattern of behavior]: https://itwire.com/security/infosec-researchers-slam-ex-wapo-man-krebs-over-doxxing.html 280 281 [macOS malware]: https://www.wired.com/story/new-mac-ransomware-thiefquest-evilquest/ 282 283 [Mastodon account]: https://fosstodon.org/@figbert 284 [Mast]: https://apps.apple.com/us/app/mast/id1437429129 285 [open source]: https://github.com/tiagomartinho/Mast2 286 287 [Feedly]: https://feedly.com/ 288 [Octal]: https://apps.apple.com/us/app/octal/id1308885491 289 [Element]: https://element.io/ 290 [Matrix]: https://matrix.org/