figbert.com-website

[ACTIVE] the website and home of figbert on the clearnet
git clone git://git.figbert.com/figbert.com-website.git
Log | Files | Refs | README | LICENSE

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/