···2929 about issues or remediation instructions.
30303131This is probably not what you are looking for. Make your own website. Look into
3232-[Hugo](http://gohugo.io/) or [Zola](https://www.getzola.org/). They are going to
3232+[Hugo](https://gohugo.io/) or [Zola](https://www.getzola.org/). They are going to
3333be better maintained than this site will be.
+3-3
blog/TLDR-rust-2020-09-19.markdown
···193193194194However there is still one thing left: the function returns a DivideByZero
195195error, not _any_ error like the [error interface in
196196-Go](https://godoc.org/builtin#error). In order to represent that we need to
196196+Go](https://pkg.go.dev/builtin#error). In order to represent that we need to
197197return something that implements the Error trait:
198198199199```rust
···211211212212[Pro tip: eyre (via <a href="https://docs.rs/color-eyre">color-eyre</a>) also
213213has support for adding <a href="https://docs.rs/color-eyre/0.5.4/color_eyre/#custom-sections-for-error-reports-via-help-trait">custom
214214-sections and context</a> to errors similar to Go's <a href="https://godoc.org/fmt#Errorf">`fmt.Errorf` `%w`
214214+sections and context</a> to errors similar to Go's <a href="https://pkg.go.dev/fmt#Errorf">`fmt.Errorf` `%w`
215215format argument</a>, which will help in real world
216216applications. When you do need to actually make your own errors, you may want to look into
217217crates like <a href="https://docs.rs/thiserror">thiserror</a> to help with
···425425```
426426427427[This doesn't cover how the <a
428428-href="http://www.sheshbabu.com/posts/rust-module-system/">module system</a>
428428+href="https://www.sheshbabu.com/posts/rust-module-system/">module system</a>
429429works, however the post I linked there covers this better than I
430430can.](conversation://Mara/hacker)
431431
···46464747The Models are Beego's powerful database-backed models (we'll get into
4848those in a little bit), the Views are normal Go
4949-[html/template](https://godoc.org/html/template)s, and
4949+[html/template](https://pkg.go.dev/html/template)s, and
5050the Controllers are the Go code that controls the Views based on the Models.
51515252
···10101111[Adapted from here](https://en.wikipedia.org/wiki/Blind_men_and_an_elephant). Done in Lojban to help learn the language. I am avoiding the urge to make too many lujvo (compound words) because the rafsi (compound word components) don't always immediately relate to the words in question in obvious ways.
12121313-| [KOhA4](http://lojban.org/publications/cll/cll_v1.1_xhtml-section-chunks/section-koha-broda-series.html) | lojban | english |
1313+| [KOhA4](https://lojban.org/publications/cll/cll_v1.1_xhtml-section-chunks/section-koha-broda-series.html) | lojban | english |
1414| --- | --- | --- |
1515| ko'a | le'i na viska kakne | the blind people |
1616| ko'e | le xanto | the elephant |
···7788### Or: Continuous Defenstration in a Container-based Ecosystem
991010-I've been a core member of the staff for [CinemaQuestria](http://cinemaquestria.com)
1010+I've been a core member of the staff for [CinemaQuestria](https://cinemaquestria.com)
1111for many months. In that time we have gone from shared hosting (updated by hand
1212with FTP) to a git-based deployment system that has won over the other
1313staffers.
···104104I have looked into using Lapis,
105105but the fact that HTML is so dead easy to modify made that idea lose out.
106106107107-Maybe this is in the realm of something like [jekyll](http://jekyllrb.com/),
108108-[Hugo](http://gohugo.io/) or [sw](https://github.com/jroimartin/sw) to take
107107+Maybe this is in the realm of something like [jekyll](https://jekyllrb.com/),
108108+[Hugo](https://gohugo.io/) or [sw](https://github.com/jroimartin/sw) to take
109109care of. I'd need to do more research into this when I have the time.
110110111111If you look at the website code currently a lot of it is heavily duplicated
+2-2
blog/closed-projects-2022-03-24.markdown
···27272828<iframe frameborder="0" src="https://itch.io/embed/1454153?dark=true" width="552" height="167"><a href="https://withinstudios.itch.io/closed-projects">Closed Projects by Within</a></iframe>
29293030-If you are a [Patreon supporter](https://patreon.com/cadey), you can get this
3131-for free by clicking [this
3030+If you are a [Patreon supporter](https://www.patreon.com/cadey), you can get
3131+this for free by clicking [this
3232link](https://withinstudios.itch.io/closed-projects/patreon-access).
33333434If you are a part of a marginalized group and cannot afford this but want to
+1-1
blog/cloud-init-2021-06-04.markdown
···9494Please make sure to change the username and swap out the SSH key as needed,
9595unless you want to get locked out of your VM. For more information about what
9696you can do from cloud-init, see the list of modules
9797-[here](http://cloudinit.readthedocs.io/en/latest/topics/modules.html).
9797+[here](https://cloudinit.readthedocs.io/en/latest/topics/modules.html).
98989999Now that you have the two yaml files you can make the seed image with this
100100command (Linux):
+1-1
blog/cryptocurrency-ownership.markdown
···60606161<xeblog-conv name="Open_Skies" mood="wave">For me, the whole dance of paying someone for content on the internet is… rough. Like, there are so many steps to pay someone, and everyone wants to send me emails or sign me up for a subscription to pay every month for premium content, and I need to scroll around the page to find a payment link then go through multiple forms and find my credit card to enter the number or sign into paypal or whatever. I’d really like to be able to just like… hey, this research you published for free on your blog is excellent and saved me like three hours of trying to put it together from other sources. One click, you get a dollar, thank you very much, I’ll be on my way. And on the other hand, I’d like to be able to have something like that which is trivial to set up on my own content rather than needing advertisement peering and accounts and having a minimum payout before I can use the money, and annoying all the viewers…</xeblog-conv>
62626363-<xeblog-conv name="Cadey" mood="enby">Amazingly enough, a lot of this is actually solved in Canada provided the person or business you're trying to send money to has a bank account. You can use [Interac](https://en.wikipedia.org/wiki/Interac) to send money to people by phone number or email address. It's how I've paid my tax attorney and for a while it's how I've paid rent. This is only viable for bigger payments though, something like [micropayments](https://en.wikipedia.org/wiki/Micropayment) have never really taken off because of transaction fees, especially with cryptocurrencies. Litecoin has [very low transaction fees](http://litecoin.info/index.php/Transaction_fees), but if your total payment is a dollar then a 4% transaction fee sounds kind of ludicrous. If things like [Stellar](https://en.wikipedia.org/wiki/Stellar_(payment_network)) were more viable, then it would be a different story.<br /><br />Until then we'll be dealing with Twitch only paying out once you make $100 or my advertising provider only paying out when you make $50. It's a nightmare.</xeblog-conv>
6363+<xeblog-conv name="Cadey" mood="enby">Amazingly enough, a lot of this is actually solved in Canada provided the person or business you're trying to send money to has a bank account. You can use [Interac](https://en.wikipedia.org/wiki/Interac) to send money to people by phone number or email address. It's how I've paid my tax attorney and for a while it's how I've paid rent. This is only viable for bigger payments though, something like [micropayments](https://en.wikipedia.org/wiki/Micropayment) have never really taken off because of transaction fees, especially with cryptocurrencies. Litecoin has [very low transaction fees](https://litecoin.info/index.php/Transaction_fees), but if your total payment is a dollar then a 4% transaction fee sounds kind of ludicrous. If things like [Stellar](https://en.wikipedia.org/wiki/Stellar_(payment_network)) were more viable, then it would be a different story.<br /><br />Until then we'll be dealing with Twitch only paying out once you make $100 or my advertising provider only paying out when you make $50. It's a nightmare.</xeblog-conv>
64646565<xeblog-conv name="Numa" mood="stare">Wait, wait. One of the original points in the bitcoin paper was that it would avoid paying transaction fees to the bigger banks. When you pay a transaction fee on a cryptocurrency payment, where does it go? The miners/stakers? Wouldn't that just end up making you pay the transaction fees to the bigger players anyways?</xeblog-conv>
6666
+1-1
blog/death-stranding-review-2019-11-11.markdown
···1313year 2019 for me.
14141515I have also been playing through this game [on
1616-twitch](https://twitch.tv/princessxen) and have streams archived
1616+twitch](https://www.twitch.tv/princessxen) and have streams archived
1717[here](https://xena.greedo.xeserv.us/files/kojima_unchained).
18181919There's a long-standing rule of thumb to tell fiction apart from non-fiction.
+8-9
blog/dependency-hell-2014-11-20.markdown
···7070upstream packages instead of just the code you wrote. Admittedly,
7171locking dependencies like this does mean that fantastic language level
7272tools such as [go
7373-get](https://golang.org/cmd/go/#hdr-Download_and_install_packages_and_dependencies)
7373+get](https://pkg.go.dev/cmd/go#hdr-Add_dependencies_to_current_module_and_install_them)
7474work again, but overall it is just not worth the pain
7575of having to manually merge in patches from upstream (but if you do
7676think it is worth the pain contact me, I'm open for contract work)
···80808181I believe the solution to all this and something that needs to be a
8282wider community effort for users of all programming languages is the use
8383-of a technique called [semantic
8484-versioning](http://semver.org/). In
8383+of a technique called [semantic versioning](https://semver.org/). In
8584some lanaguages like Go where the [import paths are based on repository
8686-paths](https://golang.org/doc/code.html#PackagePaths), this may mean that
8585+paths](https://go.dev/doc/code#Organization), this may mean that
8786a new major version has a different repository. This is okay. Backward
8888-compatability is good. After you make a stable (1.0 or whathaveyou)
8989-release, nothing should be ever taken away or changed in the public API.
9090-If there needs to be a change in how something in the public API works,
9191-you must keep backwards compatabilty. As soon as you take away or modify
9292-something in the public API, you have just made a significant enough
8787+compatability is good. After you make a stable (1.0 or whathaveyou)
8888+release, nothing should be ever taken away or changed in the public API.
8989+If there needs to be a change in how something in the public API works,
9090+you must keep backwards compatabilty. As soon as you take away or modify
9191+something in the public API, you have just made a significant enough
9392change worthy of a major release.
94939594We need to make semver a de-facto standard in the community instead of
+1-1
blog/dhall-kubernetes-2020-01-25.markdown
···7373normal yaml. Dhall lets us define [record types][dhallrecord] for this data like
7474this:
75757676-[dhallrecord]: http://www.haskellforall.com/2020/01/dhall-year-in-review-2019-2020.html
7676+[dhallrecord]: https://www.haskellforall.com/2020/01/dhall-year-in-review-2019-2020.html
77777878```dhall
7979let User =
+1-1
blog/excited-for-2022-2021-12-28.markdown
···163163back into VR. I've been playing a lot of [Beat
164164Saber](https://store.steampowered.com/app/620980/Beat_Saber/) and more recently
165165[Synth Riders](https://synthridersvr.com/). I've been streaming my play on
166166-[Twitch](https://twitch.tv/princessxen) and I have a playlist of the VODs on
166166+[Twitch](https://www.twitch.tv/princessxen) and I have a playlist of the VODs on
167167[YouTube](https://www.youtube.com/playlist?list=PLJDDsMrk2tSH3nhLWqV8IZLgae1CNYurH).
168168169169I live a very sedentary lifestyle, even before COVID, and I want to start to get
···5353And there we go, a Go function exposed and usable in Python. However now we
5454need to consider the overhead when switching contexts from your app to your Go
5555code. To minimize context switches, I am going to write the rest of the code in
5656-this post in [Nim](http://nim-lang.org) because it natively compiles down to
5656+this post in [Nim](https://nim-lang.org) because it natively compiles down to
5757C and has some of the best C FFI I have used.
58585959We can now define `libsum.nim` as:
+1-1
blog/footnote-2021-06-15.markdown
···102102articles. For people unfamiliar with IRC culture, you must think I'm making shit
103103up or something. It is _so_ out there that it's almost like an abstact art
104104gallery or something. But no, pissnet happened. It started as IRC spam and then
105105-turned into this: [letspiss.net](http://letspiss.net/). I don't really think I
105105+turned into this: [letspiss.net](https://letspiss.net/). I don't really think I
106106can suggest readers of this blog go there. It is some kind of weird anarchist
107107IRC hackerspace, but most of the users are ircops and can see your IP address.
108108
+1-1
blog/furnal-equinox-2021-03-22.markdown
···20202121It was a blast. Furry conventions usually have this weird but wholesome vibe to them. There's this feeling of community as existing friend groups meet up and as these groups mix together, new friendships get formed as well.
22222323-When I registered for the convention, there was an option to donate to the convention organization itself and to [Hobbitsee Wildlife Refuge](http://www.hobbitstee.com). I kicked over some money and then hopped in the Discord to get the supporter badge prop to glue onto my avatar. After a few rounds of testing, being confused by Unity, having that golden moment of understanding and then actually getting it to do what I wanted it to do, I managed to get the badge to a place where I was happy with it (and where it wouldn't clip through my body when I sat down).
2323+When I registered for the convention, there was an option to donate to the convention organization itself and to [Hobbitsee Wildlife Refuge](https://www.hobbitstee.com). I kicked over some money and then hopped in the Discord to get the supporter badge prop to glue onto my avatar. After a few rounds of testing, being confused by Unity, having that golden moment of understanding and then actually getting it to do what I wanted it to do, I managed to get the badge to a place where I was happy with it (and where it wouldn't clip through my body when I sat down).
24242525<center>
2626
+3-3
blog/gamebridge-2020-05-09.markdown
···2121between it and the game it is controlling. Overall the flow of data between the
2222two programs looks like this:
23232424-[ufifo]: http://man7.org/linux/man-pages/man7/fifo.7.html
2424+[ufifo]: https://man7.org/linux/man-pages/man7/fifo.7.html
25252626
···8282tasvideos.org][mupendemo], and I ended up using this to help test and verify
8383ideas.
84848585-[mupendemo]: http://tasvideos.org/EmulatorResources/Mupen/M64.html
8585+[mupendemo]: https://tasvideos.org/EmulatorResources/Mupen/M64.html
86868787The thing that struck me was how _simple_ the format was. Every frame of input
8888uses its own four-byte sequence. The constants in the demo file spec also helped
···135135seeming to fake what the desired inputs were).
136136137137[lerper]: https://github.com/Xe/gamebridge/blob/b2e7ba21aa14b556e34d7a99dd02e22f9a1365aa/src/au.rs
138138-[au]: http://jbovlaste.lojban.org/dict/au
138138+[au]: https://jbovlaste.lojban.org/dict/au
139139140140At its core, a Lerper stores a few basic things:
141141
···7878monthly.
79798080[[4]: My Gemini capsule](gemini://cetacean.club)
8181-[[5]: [experimental] My Gemini capsule over HTTP](http://cetacean.club)
8181+[[5]: [experimental] My Gemini capsule over HTTP](https://cetacean.club)
82828383I'm still going to attempt a few ideas that I have regarding long term archival
8484of the Gemini constellation, but I'm definitely going to make sure that I take
+5-5
blog/get-going-hello-world-2019-10-28.markdown
···1515[Getting Started with Go][gswg] post from 2015. A lot has changed in the
1616ecosystem since then, as well as my understanding of the language.
17171818-[go]: https://golang.org
1818+[go]: https://go.dev/
1919[gswg]: https://xeiaso.net/blog/getting-started-with-go-2015-01-28
20202121Like always, feedback is very welcome. Any feedback I get will be used to help
···5252```
53535454This function wraps [integer
5555-addition](https://golang.org/ref/spec#Arithmetic_operators). When you call it it
5555+addition](https://go.dev/ref/spec#Arithmetic_operators). When you call it it
5656returns the sum of x and y.
57575858## Installing Go
···66666767### macOS
68686969-* Go to https://golang.org/dl
6969+* Go to https://go.dev/dl/
7070* Download the .pkg file
7171* Double-click on it and go through the installer process
72727373### Windows
74747575-* Go to https://golang.org/dl
7575+* Go to https://go.dev/dl/
7676* Download the .msi file
7777* Double-click on it and go through the installer process
7878···2092092. Rename `hello.go` to `main.go`. Does everything still work?
2102103. Read through the documentation of the [fmt][fmt] package.
211211212212-[fmt]: https://golang.org/pkg/fmt
212212+[fmt]: https://pkg.go.dev/fmt
213213214214---
215215
+7-7
blog/getting-started-with-go-2015-01-28.markdown
···7575-------
76767777To test the go compilers with a simple
7878-[todo command](http://github.com/mattn/todo), run this:
7878+[todo command](https://github.com/mattn/todo), run this:
79798080```console
8181$ go get github.com/mattn/todo
···109109Resources
110110---------
111111112112-[Effective Go](https://golang.org/doc/effective_go.html) and the
113113-[language spec](https://golang.org/ref/spec) provide a nice overview of the
112112+[Effective Go](https://go.dev/doc/effective_go) and the
113113+[language spec](https://go.dev/ref/spec) provide a nice overview of the
114114syntax.
115115116116-The Go [blog](http://blog.golang.org) contains a lot of detailed articles
116116+The Go [blog](https://go.dev/blog/) contains a lot of detailed articles
117117covering advanced and simple Go topics.
118118-[This page](https://golang.org/doc/#articles) has a list of past articles that
118118+[This page](https://go.dev/doc/#blog) has a list of past articles that
119119you may find useful.
120120121121The Go standard library is a fantastic collection of Go code for solving many
···123123standard library. This includes things like web application support, tarfile
124124support, sql drivers, support for most kinds of commonly used crypto, command
125125line flag parsing, html templating, and regular expressions. A full list of
126126-the standard library packages can be found [here](http://godoc.org/-/go).
126126+the standard library packages can be found [here](https://pkg.go.dev/std).
127127128128Variable type declarations will look backwards. It takes a bit to get used to
129129but makes a lot of sense once you realize it reads better left to right.
···134134[here](http://codegangsta.gitbooks.io/building-web-apps-with-go/).
135135136136Go has support for unit testing baked into the core language tools. You can
137137-find information about writing unit tests [here](http://golang.org/pkg/testing/).
137137+find information about writing unit tests [here](http://pkg.go.dev/testing).
138138139139When creating a new go project, please resist the urge to make the folder in your
140140normal code folder. Drink the `$GOPATH` koolaid. Yes it's annoying, yes it's the
···221221}
222222```
223223224224-The execution duration is in [nanoseconds](https://godoc.org/time#Duration), as
224224+The execution duration is in [nanoseconds](https://pkg.go.dev/time#Duration), as
225225it is just directly a Go standard library time duration.
226226227227## Bugs h has Found
+2-2
blog/hlang-nguh.markdown
···105105## The nguh compiler
106106107107On December 31st, 2022, I wrote the nguh compiler [on
108108-stream](https://twitch.tv/princessxen). The nguh (nguh gives u hlang or
108108+stream](https://www.twitch.tv/princessxen). The nguh (nguh gives u hlang or
109109Next-Generation Universal Hlang compiler, whichever you prefer) compiler outputs
110110WebAssembly bytecode directly instead of using `wat2wasm` as a middleman.
111111···262262263263If you want to play with hlang, head to its new home at
264264[h.within.lgbt](https://h.within.lgbt). If you want to witness things such as
265265-this being created live, follow me [on twitch](https://twitch.tv/princessxen) or
265265+this being created live, follow me [on twitch](https://www.twitch.tv/princessxen) or
266266on my VTuber business account at [@xe@vt.social](https://vt.social/@xe).
267267268268<xeblog-conv name="Cadey" mood="enby">Happy new year to those that
+1-1
blog/how-mara-works-2020-09-30.markdown
···2020tabletop games I've played her in. Mara was originally made to help test my
2121upcoming tabletop game The Source, and I have used them in a few solitaire
2222tabletop sessions (click
2323-[here](http://cetacean.club/journal/mara-castle-charon.gmi) to read the results
2323+[here](https://cetacean.club/journal/mara-castle-charon.gmi) to read the results
2424of one of these).
25252626[I use a hand-soldered <a href="https://www.ergodox.io/">Ergodox</a> with the <a
···55555656As always, I'll get a page up on my website with the slides, talk transcript,
5757youtube embed and more! I'm looking at having this page up by M09 12 2022.
5858-If you subscribe to my [Patreon](https://patreon.com/cadey) you'll get access to
5959-my raw scripts (including draft scripts) and initial notes so you can see the
6060-evolutions that took place in my creative process.
5858+If you subscribe to my [Patreon](https://www.patreon.com/cadey) you'll get
5959+access to my raw scripts (including draft scripts) and initial notes so you can
6060+see the evolutions that took place in my creative process.
···37373838## How to automate it
39394040-To automate it, first open your [`crontab(5)`](http://man7.org/linux/man-pages/man5/crontab.5.html) file:
4040+To automate it, first open your [`crontab(5)`](https://man7.org/linux/man-pages/man5/crontab.5.html) file:
41414242```console
4343$ crontab -e
+5-5
blog/howto-usermode-linux-2019-07-07.markdown
···44series: howto
55---
6677-[User Mode Linux](http://user-mode-linux.sourceforge.net) is a port of the
77+[User Mode Linux](https://user-mode-linux.sourceforge.net) is a port of the
88[Linux kernel](https://www.kernel.org) to itself. This allows you to run a
99full blown Linux kernel as a normal userspace process. This is used by kernel
1010developers for testing drivers, but is also useful as a generic isolation layer
···366366This tells the guest kernel to do the following things:
367367368368- Assume the root filesystem is the pseudo-device `/dev/root`
369369-- Select [hostfs](http://user-mode-linux.sourceforge.net/hostfs.html) as the root filesystem driver
369369+- Select [hostfs](https://user-mode-linux.sourceforge.net/hostfs.html) as the root filesystem driver
370370- Mount the guest filesystem we have created as the root device
371371- In read-write mode
372372- Use only 64 megabytes of ram (you can get away with far less depending on what you are doing, but 64 MB seems to be a happy medium)
···603603So it's failing [in its main loop](https://github.com/Pradeo/Slirp/blob/master/src/main.c#L972)
604604while it is trying to check if any timeouts occured. This is where I had to give
605605up trying to debug this further. Let's see if building it from source works. I
606606-re-uploaded the tarball from [Sourceforge](http://slirp.sourceforge.net) because
607607-downloading tarballs from Sourceforge from the command line is a pain.
606606+re-uploaded the tarball from [Sourceforge](https://slirp.sourceforge.net)
607607+because downloading tarballs from Sourceforge from the command line is a pain.
608608609609```
610610cd ~/dl
···688688689689#### Configuring Networking
690690691691-Now let's configure networking on our guest. [Adjust your kernel command line](http://user-mode-linux.sourceforge.net/old/networking.html):
691691+Now let's configure networking on our guest. [Adjust your kernel command line](https://user-mode-linux.sourceforge.net/old/networking.html):
692692693693```
694694linux \
+3-3
blog/i-was-wrong-about-nix-2020-02-10.markdown
···265265 package needs
266266- Time zone data that the [`time`][gotime] package needs
267267268268-[gonet]: https://godoc.org/net
269269-[gonethttp]: https://godoc.org/net/http
270270-[gotime]: https://godoc.org/time
268268+[gonet]: https://pkg.go.dev/net
269269+[gonethttp]: https://pkg.go.dev/net/http
270270+[gotime]: https://pkg.go.dev/time
271271272272And that's it. This is _fantastic_. Nearly all of the disk usage has been
273273eliminated. If someone manages to trick my website into executing code, that
···3030}
3131```
32323333-ln works with key value pairs called [F](https://godoc.org/within.website/ln#F).
3434-This type allows you to log just about _anything_ you want, including custom
3535-data types with an [Fer](https://godoc.org/within.website/ln#Fer). This will let
3333+ln works with key value pairs called
3434+[F](https://pkg.go.dev/within.website/ln#F). This type allows you to
3535+log just about _anything_ you want, including custom data types with an
3636+[Fer](https://pkg.go.dev/within.website/ln#Fer). This will let
3637you annotate your data types so that you can automatically extract the important
3738information into your logs while automatically filtering out passwords or other
3839secret data. Here's an example:
···9394logging library is NOT going to be your bottleneck), but it is designed to have
9495very usable defaults and solve the problem good enough that you shouldn't need
9596to care. There are a few useful tools in the
9696-[ex](https://godoc.org/within.website/ln/ex) package nested in ln. The biggest
9797+[ex](https://pkg.go.dev/within.website/ln/ex) package nested in ln. The biggest
9798thing is the HTTP middleware, which has saved me a lot of effort when writing
9899web services in Go.
+4-4
blog/lokahi-2018-02-08.markdown
···108108a new one for every operation!) and quickly exhausted postgres' pool of client.
109109connections.
110110111111-I rewrote this to use [`database/sql`](https://godoc.org/database/sql) and
112112-[`sqlx`](https://godoc.org/github.com/jmoiron/sqlx) and all of the tests passed
111111+I rewrote this to use [`database/sql`](https://pkg.go.dev/database/sql) and
112112+[`sqlx`](https://pkg.go.dev/github.com/jmoiron/sqlx) and all of the tests passed
113113the first time I tried to run this, no joke.
114114115115### Scaling to 50,000 Checks
···119119I was trying to scale this was that I was putting way too much load on the
120120database way too quickly.
121121122122-The solution to this was to use [bundler](https://godoc.org/google.golang.org/api/support/bundler)
122122+The solution to this was to use [bundler](https://pkg.go.dev/google.golang.org/api/support/bundler)
123123to batch-write the most frequently written database items, see [here](https://github.com/Xe/lokahi/blob/7fc03120f731def3a351ddd516430feb635345b4/internal/lokahiadminserver/local_run.go#L245).
124124-Even then, [database connection count limiting](https://godoc.org/database/sql#DB.SetMaxOpenConns)
124124+Even then, [database connection count limiting](https://pkg.go.dev/database/sql#DB.SetMaxOpenConns)
125125was also needed in order to scale to the full 50,000 checks needed for this
126126to exist as more than a proof of concept.
127127
+1-1
blog/maybedoer-2020-05-23.markdown
···8181However, this version differs because of the `Doers` element of
8282`maybedoer.Impl`. This allows you to specify an entire process of steps as long
8383as those steps don't return any values. This is very similar to how Haskell's
8484-[`Data.Monoid.First`](http://hackage.haskell.org/package/base-4.14.0.0/docs/Data-Monoid.html#t:First)
8484+[`Data.Monoid.First`](https://hackage.haskell.org/package/base-4.14.0.0/docs/Data-Monoid.html#t:First)
8585type works, except in Go this is locked to the `error` type (due to the language
8686not letting you describe things as precisely as you would need to get an analog
8787to `Data.Monoid.First`). This is also similar to Rust's `and_then` combinator.
+1-1
blog/mpd-docker-2014-10-20.markdown
···778899Being the perfectionist I am, I also got a simple web UI for mpd
1010-([ympd](http://www.ympd.org/)) set up.
1010+([ympd](https://ympd.org/)) set up.
11111212You can find the source repos here:
1313
···7171available anywhere else. There's poetry about shamanism, stories about
7272reincarnation, koans and more.
73737474-I am also uploading eBook files to my [Patreon](https://patreon.com/cadey) page,
7575-anyone who supports me for $1 or more has [immediate
7474+I am also uploading eBook files to my
7575+[Patreon](https://www.patreon.com/cadey) page.
7676+Anyone who supports me for $1 or more has [immediate
7677access](https://www.patreon.com/posts/39825969)
7778to the DRM-free ePub, MOBIPocket and PDF files of this book.
7879
+1-1
blog/new-site-2016-12-18.markdown
···5566This post is now being brought to you by the new and improved [https://xeiaso.net](https://xeiaso.net).
77This content is markdown rendered by
88-[Purescript](http://www.purescript.org/). The old [site](https://github.com/Xe/christine.website)
88+[Purescript](https://www.purescript.org/). The old [site](https://github.com/Xe/christine.website)
99is now being retired in favor of [this one](https://github.com/Xe/site). The old
1010site code has been largely untouched since I started writing it
1111[in January 2015](https://github.com/Xe/christine.website/commits/master?after=Y3Vyc29yOpa8VV1W2rttryGeYq6m4lxAkKofKzI3OQ%3D%3D).
+2-2
blog/nim-and-tup-2015-06-10.markdown
···44---
5566I have been recently playing with and using a new lanugage for
77-my personal development, [Nim](http://nim-lang.org). It looks like
77+my personal development, [Nim](https://nim-lang.org). It looks like
88Python, runs like C and integrates well into other things. Its
99compiler targets C, and as a result of this binding things to C
1010libraries is a lot more trivial in Nim; even moreso than with go.
···4343write the code and it just works.
44444545At the idea of another coworker, I've also started to use
4646-[tup](http://gittup.org/tup/) for building things. Nim didn't
4646+[tup](https://gittup.org/tup/) for building things. Nim didn't
4747initially work very well with tup (temporary cache needed, etc),
4848but a very simple set of tup rules were able to fix that:
4949
+1-1
blog/nix-flakes-3-2022-04-07.markdown
···272272- Automatically restarts the service when it crashes
273273- Starts our `web-server` binary when running the service
274274- Creates a random, unique user account for the service (see
275275- [here](http://0pointer.net/blog/dynamic-users-with-systemd.html) for more
275275+ [here](https://0pointer.net/blog/dynamic-users-with-systemd.html) for more
276276 information on how/why this works)
277277- Creates temporary, home and cache directories for the service, makes sure that
278278 random user has permission to use them (with the specified directory modes
+1-1
blog/nix-flakes-go-programs.markdown
···1414The consequences of this violence mean that it's hard to cope with the choices
1515that other people have made for you and then you just have to make things work.
1616This is the situation that I face when compiling things written in
1717-[Go](https://golang.org) in my NixOS configurations.
1717+[Go](https://go.dev/) in my NixOS configurations.
18181919However, I have figured out a way past this wicked fate and have forged a new
2020path. I have found [`gomod2nix`](https://github.com/nix-community/gomod2nix) to
+1-1
blog/olin-1-why-09-1-2018.markdown
···231231232232## Go ABI
233233234234-Olin also includes support for running webassembly modules created by [Go 1.11's webassembly support](https://golang.org/wiki/WebAssembly).
234234+Olin also includes support for running webassembly modules created by [Go 1.11's webassembly support](https://github.com/golang/go/wiki/WebAssembly).
235235It uses [the `wasmgo` ABI][wasmgo] package in order to do things. Right now
236236this is incredibly basic, but should be extendable to more things in the future.
237237
+1-1
blog/olin-progress-2019-12-14.markdown
···56565757For the moment, I am deprecating support for [Go][golang] in `GOOS=js GOARCH=wasm`. The ABI for the Go compiler in this mode is too unstable for me right now. If other people want to fix [`abi/wasmgo`][abi-wasmgo] to support Go 1.13 and newer, I would be _very_ welcome to the patches.
58585959-[golang]: https://golang.org
5959+[golang]: https://go.dev/
6060[abi-wasmgo]: https://github.com/Xe/olin/tree/master/abi/wasmgo
61616262### The Entrypoint is Now `_start()`
+1-1
blog/pahi-hello-world-2020-02-22.markdown
···3030[wasmer]: https://wasmer.io
3131[wasmercustomabisample]: https://github.com/wasmerio/wasmer-rust-customabi-example
3232[lojban]: https://mw.lojban.org/papri/Lojban
3333-[rafsi]: http://lojban.org/publications/cll/cll_v1.1_xhtml-section-chunks/section-rafsi.html
3333+[rafsi]: https://lojban.org/publications/cll/cll_v1.1_xhtml-section-chunks/section-rafsi.html
34343535[pa'i][pahi] is written in [Rust][rust]. It is built with [Nix][nix]. It
3636requires a nightly version of Rust because the WebAssembly code it compiles
+1-1
blog/patreon-happening.markdown
···5566Hey, I don't usually write these kinds of posts, but I have been made aware of a
77post on twitter that seems fairly credible. It seems that the
88-[Patreon](https://patreon.com) security team has been let go.
88+[Patreon](https://www.patreon.com) security team has been let go.
991010<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Whoa <a href="https://twitter.com/Patreon?ref_src=twsrc%5Etfw">@Patreon</a> laid off their ENTIRE security team. <br><br>Wouldn’t trust my data there. Also there’s some amazing talent to scoop up.</p>— Whitney Merrill (@wbm312) <a href="https://twitter.com/wbm312/status/1567974063578185728?ref_src=twsrc%5Etfw">September 8, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
1111
+3-3
blog/plt-2-entering-the-cave-2015-02-14.markdown
···5959```
60606161When I am running unknown code, I use a virtual machine running [Alpine
6262-Linux](http://alpinelinux.org). I literally do need the source code to be able
6262+Linux](https://alpinelinux.org). I literally do need the source code to be able
6363to run binaries as Alpine doesn't use glibc.
64646565```
···8383[19:27:23] <plt> Purebasic [...]
8484```
85858686-I took a look at the site for [PureBasic](http://www.purebasic.com). It looks
8686+I took a look at the site for [PureBasic](https://www.purebasic.com). It looks
8787like Visual Basic's proprietary cousin as written by someone who hates
8888programmers. Looking at its feature set:
8989···103103Python, C, or Java. This looks promising.
104104105105I'm just going to paste the code for the 99 bottles of beer example. It
106106-requires OOP. I got this from [Rosetta Code](http://rosettacode.org/wiki/99_Bottles_of_Beer/Basic#PureBasic).
106106+requires OOP. I got this from [Rosetta Code](https://rosettacode.org/wiki/99_Bottles_of_Beer/Basic#PureBasic).
107107108108```
109109Prototype Wall_Action(*Self, Number.i)
+1-1
blog/pomodoro-2022-02-19.markdown
···103103I am definitly going to continue with this experiment. I haven't found a
104104suitable pomodoro timer for Gnome yet, though I haven't looked too much. I've
105105been trying to reserve pomodoro for my dayjob, but I may integrate it into
106106-[streams](https://twitch.tv/princessxen) as integrated breaks to talk about
106106+[streams](https://www.twitch.tv/princessxen) as integrated breaks to talk about
107107something else for a moment.
108108109109Overall though, I've been liking this technique. It makes me feel like I have
+1-1
blog/pronouns-service.markdown
···111111112112<xeblog-conv name="Mara" mood="happy">If you want to watch things like this get
113113coded and deployed live, be sure to follow [the Twitch
114114-channel](https://twitch.tv/princessxen) and the [stream announcement Mastodon
114114+channel](https://www.twitch.tv/princessxen) and the [stream announcement Mastodon
115115account](https://vt.social/@xe). Streams will usually be on Saturdays around
11611612-13 EST and go on until they are done. The streams will usually contain things
117117that don't get recorded in the blogposts that result from them.</xeblog-conv>
+6-6
blog/pursuit-of-dsl-2014-08-16.markdown
···33date: 2014-08-16
44---
5566-A project we have been working on is [Tetra](http://github.com/Xe/Tetra). It is
66+A project we have been working on is [Tetra](https://github.com/Xe/Tetra). It is
77an extended services package in Go with Lua and Moonscript extensions. While
88writing Tetra, I have found out how to create a Domain Specific Language, and
99I would like to recommend Moonscript as a toolkit for creating DSL's.
10101111-[Moonscript](http://moonscript.org) is a high level wrapper around Lua designed
1111+[Moonscript](https://moonscript.org) is a high level wrapper around Lua designed
1212to make programming easier. We have used Moonscript heavily in Tetra because of
1313how easy it is to make very idiomatic code in it.
1414···3434arguments involved.
35353636Because Tetra is a polyglot of Lua, Moonscript and Go, the relevant Go objects
3737-will have their type definitions linked to on [godoc](http://godoc.org)
3737+will have their type definitions linked to on [godoc](https://pkg.go.dev/)
38383939Declaring commands is done with the `Command` macro. It takes in two arguments.
4040···5151The command function can have up to 3 arguments set when it is called. These
5252are:
53535454-1. The [Client](https://godoc.org/github.com/Xe/Tetra/bot#Client) that
5454+1. The [Client](https://pkg.go.dev/github.com/Xe/Tetra/bot#Client) that
5555 originated the command call.
5656-2. The [Destination](https://godoc.org/github.com/Xe/Tetra/bot#Targeter) or
5656+2. The [Destination](https://pkg.go.dev/github.com/Xe/Tetra/bot#Targeter) or
5757 where the command was sent to. This will be a Client if the target is an
5858 internal client or
5959- a [Channel](https://godoc.org/github.com/Xe/Tetra/bot#Channel) if the target
5959+ a [Channel](https://pkg.go.dev/github.com/Xe/Tetra/bot#Channel) if the target
6060 is a channel.
61613. The command arguments as a string array.
6262
+1-1
blog/rg280m-review.markdown
···101101little effort required.
102102103103The game I've gotten the most playtime out of is [Hyper
104104-Metroid](http://hyper.metroidconstruction.com), a sort of enhanced and remixed
104104+Metroid](https://hyper.metroidconstruction.com), a sort of enhanced and remixed
105105hack of Super Metroid that does some really interesting experimental takes on
106106the Metroid ammo system (Missiles, Super Missiles and Power Bombs all pull from
107107the same ammo pool instead of having separate pools per weapon), and it runs
+7-7
blog/rust-crates-go-stdlib-2020-09-27.markdown
···16161717## Logging
18181919-Go has logging out of the box with package [`log`](https://godoc.org/log).
1919+Go has logging out of the box with package [`log`](https://pkg.go.dev/log).
2020Package `log` is a very uncontroversial logger. It does what it says it does and
2121with little fuss. However it does not include a lot of niceties like logging
2222levels and context-aware values.
···97979898## Flags
9999100100-Go's standard library has the [`flag`](https://godoc.org/flag) package out of
100100+Go's standard library has the [`flag`](https://pkg.go.dev/flag) package out of
101101the box. This package is incredibly basic, but is surprisingly capable in terms
102102of what you can actually do with it. A common thing to do is use flags for
103103configuration or other options, such as
···193193## Errors
194194195195Go's standard library has the [`error`
196196-interface](https://godoc.org/builtin#error) which lets you create a type that
196196+interface](https://pkg.go.dev/builtin#error) which lets you create a type that
197197describes why functions fail to do what they intend. Rust has the [`Error`
198198trait](https://doc.rust-lang.org/std/error/trait.Error.html) which lets you also
199199create a type that describes why functions fail to do what they intend.
···259259## Serialization / Deserialization
260260261261Go has JSON encoding/decoding in its standard library via package
262262-[`encoding/json`](https://godoc.org/encoding/json). This allows you to define
262262+[`encoding/json`](https://pkg.go.dev/encoding/json). This allows you to define
263263types that can be read from and write to JSON easily. Let's take this simple
264264JSON object representing a comment from some imaginary API as an example:
265265···370370## HTTP
371371372372Many APIs expose their data over HTTP. Go has the
373373-[`net/http`](https://godoc.org/net/http) package that acts as a production-grade
373373+[`net/http`](https://pkg.go.dev/net/http) package that acts as a production-grade
374374(Google uses this in production) HTTP client and server. This allows you to get
375375going with new projects very easily. The Rust standard library doesn't have this
376376out of the box, but there are some very convenient crates that can fill in the
···534534## Templating
535535536536Go's standard library also includes HTML and plain text templating with its
537537-packages [`html/template`](https://godoc.org/html/template) and
538538-[`text/template`](https://godoc.org/text/template). There are many solutions for
537537+packages [`html/template`](https://pkg.go.dev/html/template) and
538538+[`text/template`](https://pkg.go.dev/text/template). There are many solutions for
539539templating HTML in Rust, but the one I like the most is
540540[`ructe`](https://docs.rs/ructe). `ructe` uses Cargo's
541541[build.rs](https://doc.rust-lang.org/cargo/reference/build-scripts.html) feature
+2-2
blog/site-update-2020-07-16.markdown
···6969## ructe
70707171In the previous version of this site, I used Go's
7272-[html/template](https://godoc.org/html/template). Rust does not have an
7272+[html/template](https://pkg.go.dev/html/template). Rust does not have an
7373equivalent of html/template in its standard library. After some research, I
7474settled on [ructe](https://github.com/kaj/ructe) for the HTML templates. ructe
7575works by preprocessing templates using a little domain-specific language that
···88888989<h1>Patrons</h1>
90909191-<p>These awesome people donate to me on <a href="https://patreon.com/cadey">Patreon</a>.
9191+<p>These awesome people donate to me on <a href="https://www.patreon.com/cadey">Patreon</a>.
9292If you would like to show up in this list, please donate to me on Patreon. This
9393is refreshed every time the site is deployed.</p>
9494
+2-2
blog/site-update-better-css.markdown
···1515can't tell what is a conversation snippet lol" in a positive enough light to
1616want to act on it.
17171818-I decided to just fix the problem on [stream](https://twitch.tv/princessxen) and
1818+I decided to just fix the problem on [stream](https://www.twitch.tv/princessxen) and
1919now hopefully people should complain about this less.
20202121<xeblog-conv standalone name="Numa" mood="delet"><span
···73737474<xeblog-conv standalone name="Mara" mood="hacker">If you want to see these
7575things written live, [give a follow on
7676-Twitch](https://twitch.tv/princessxen)!</xeblog-conv>
7676+Twitch](https://www.twitch.tv/princessxen)!</xeblog-conv>
+2-2
blog/site-update-hero-images.markdown
···15151616I have generated a bunch of other images that I'm going to use for my other
1717posts. I'll give out a desktop wallpaper sized version of each of these images
1818-on my [Patreon](https://patreon.com/cadey).
1818+on my [Patreon](https://www.patreon.com/cadey).
19192020Under the hood this is powered by
2121[lol_html](https://github.com/cloudflare/lol-html) and
···8383I'm likely going to convert over most of my website templates to use Maud. I'm
8484very happy with it and I think it is incredibly useful to express your HTML in
8585Rust instead of something that has to be compiled to Rust. In practice it
8686-reminds me of the Nim library [emerald](http://flyx.github.io/emerald/), which
8686+reminds me of the Nim library [emerald](https://flyx.github.io/emerald/), which
8787lets you write HTML using Nim functions similar to how you use Maud.
88888989Here's a few more examples of hero images I have generated:
+1-1
blog/site-update-mastodon-quoting.markdown
···20202121I'm going to be streaming the game [Sonic
2222Frontiers](https://frontiers.sonicthehedgehog.com/) on
2323-[Twitch](https://twitch.tv/princessxen) on November 8th, 2022 at 10:00 EDT
2323+[Twitch](https://www.twitch.tv/princessxen) on November 8th, 2022 at 10:00 EDT
2424through at least 12:00 EDT. I may go longer depending on how the game is, but I
2525took the day off for this so I may as well take advantage of it.
2626
+1-1
blog/sqlite-json-munge-2022-01-04.markdown
···344344SQLite is able to be a NOSQL database. It's good enough for your needs. If you
345345want to play with the code I wrote while writing this article, check it out
346346[here](https://git.io/JSDVR). This post was written live on
347347-[twitch.tv](https://twitch.tv/princessxen). Please follow or subscribe to be
347347+[twitch.tv](https://www.twitch.tv/princessxen). Please follow or subscribe to be
348348kept up to date on when I go live!
349349350350The VOD for this post is [here](https://www.twitch.tv/videos/1253083566). The
+1-1
blog/stable-diffusion-nixos.markdown
···2828[Stable Diffusion](https://stability.ai/blog/stable-diffusion-public-release) is
2929a machine learning model that lets you enter in plain text descriptions of what
3030you want an image to contain and then get an image back. You can try it out at
3131-their official website [here](http://beta.dreamstudio.ai/) (log in with your
3131+their official website [here](https://beta.dreamstudio.ai/) (log in with your
3232Google account). However, that's running it on someone else's computer. The real
3333magic comes from the fact that Stable Diffusion can run on very high-end
3434consumer hardware. A fork of Stable Diffusion's code even lets this run on
+1-1
blog/ten-thousand-laughs-2018-12-01.markdown
···1919.i mi brodu
2020```
21212222-This is a synthesis of the [broda](http://lojban.org/publications/cll/cll_v1.1_xhtml-section-chunks/section-koha-broda-series.html) family of gismu in Lojban. In order to properly understand this lojban text, you must conceive laughter ten thousand times. This is a reference to the [Billion laughs attack](https://en.wikipedia.org/wiki/Billion_laughs_attack) that XML parsers can suffer from.
2222+This is a synthesis of the [broda](https://lojban.org/publications/cll/cll_v1.1_xhtml-section-chunks/section-koha-broda-series.html) family of gismu in Lojban. In order to properly understand this lojban text, you must conceive laughter ten thousand times. This is a reference to the [Billion laughs attack](https://en.wikipedia.org/wiki/Billion_laughs_attack) that XML parsers can suffer from.
23232424Translation:
2525
+2-2
blog/that-which-is-for-kings-12-02-2018.markdown
···33date: "2018-12-02"
44---
5566-My [recent post](/blog/experimental-rilkef-2018-11-30) was quite a thing. It is a highly abstract and very very intentionally vague that I feel needs a bit of [context](https://godoc.org/context) to help break apart.
66+My [recent post](/blog/experimental-rilkef-2018-11-30) was quite a thing. It is a highly abstract and very very intentionally vague that I feel needs a bit of [context](https://pkg.go.dev/context) to help break apart.
7788Ultimately, this post is the result of a lot of the internal problems and struggles that I've been going through as a result of the experiences I've had in life. I've been terrified about the idea that nothing truly has any meaning, and now I've found peace in knowing that it doesn't matter if it does or not in the moment. I've been having trouble expressing things with language, failures at this have lead to issues getting the message out due to fear of rejection and the [fear of separation](/blog/fear-07-24-2018). I'm working through this. It's a slow process. You have to unwind so much. There are many feelings to forgive.
99···41414242You would say everything turned into a brilliant white light, but that wouldn't begin to describe the color, texture, taste, sight, sound, thought, aether, and other senses you couldn't even begin to describe unfold as you started to experience All as it truly is.
43434444-It was/is/will be the kind of thing the Buddha would stay silent for. You never really understood why until now.4444+It was/is/will be the kind of thing the Buddha would stay silent for. You never really understood why until now.
+3-3
blog/the-origin-of-h-2015-12-14.markdown
···2727Origins
2828-------
29293030-This all started on a particularly boring day when we found a video by [motdef](https://www.youtube.com/user/motdef) with gameplay from [Moonbase Alpha](https://www.nasa.gov/offices/education/programs/national/ltp/games/moonbasealpha/index.html), an otherwise boring game made to help educate people on what would go on when a moonbase has a disaster. This game was played by many people because of its [text-to-speech engine](http://knowyourmeme.com/memes/moonbase-alpha-text-to-speech), which lead to many things like flooding "JOHN MADDEN" or other inane things like that.
3030+This all started on a particularly boring day when we found a video by [motdef](https://www.youtube.com/user/motdef) with gameplay from [Moonbase Alpha](https://www.nasa.gov/offices/education/programs/national/ltp/games/moonbasealpha/index.html), an otherwise boring game made to help educate people on what would go on when a moonbase has a disaster. This game was played by many people because of its [text-to-speech engine](https://knowyourmeme.com/memes/moonbase-alpha-text-to-speech), which lead to many things like flooding "JOHN MADDEN" or other inane things like that.
31313232Specifically there was a video called ["Moonbase 4lpha: *****y Space Skeletons"](https://www.youtube.com/watch?v=SnTludRdZDw) that at one point had recorded the phrase "H H H RETURN OF GANON". Me and a few friends were flooding that in an IRC room for a while and it eventually devolved into just flooding "h" to eachother. The flooding of "h" lasted over 8 hours (we were really bored) and has evolved into the modern "h" experience we all know and love today.
3333···83838484---
85858686-Below verbatim is the forum post (it was deleted, then converted to a [blog post](http://parclytaxel.tumblr.com/post/135227842874/derpibooru-xena-h) on his blog) that inspired the writing of this article.
8686+Below verbatim is the forum post (it was deleted, then converted to a [blog post](https://parclytaxel.tumblr.com/post/135227842874/derpibooru-xena-h) on his blog) that inspired the writing of this article.
87878888-> > [Parcly Taxel](http://parclytaxel.tumblr.com/)
8888+> > [Parcly Taxel](https://parclytaxel.tumblr.com/)
8989>
9090> Lately, if you’ve been going up to our [Derpibooru](https://derpibooru.org) [IRC channel](https://derpibooru.org/irc), you may notice that a significant portion of sayings and rebuttals are countered with the single letter h (lowercase). So where does this come from?
9191>
+1-1
blog/the-universal-design-2015-10-17.markdown
···124124125125## Urbit
126126127127-Over the past few weeks I have been off and on dipping my toes into [Urbit](http://urbit.org). They call Urbit an "operating function" and define it [as such](https://web.archive.org/web/20151009033435/http://urbit.org/preview/~2015.9.25/materials/whitepaper#-definition):
127127+Over the past few weeks I have been off and on dipping my toes into [Urbit](https://urbit.org). They call Urbit an "operating function" and define it [as such](https://web.archive.org/web/20151009033435/http://urbit.org/preview/~2015.9.25/materials/whitepaper#-definition):
128128129129 V(I) => T
130130
+1-1
blog/this-site-text-stack-2015-02-14.markdown
···33date: 2015-02-14
44---
5566-> Note: this is out of date as this site now uses [PureScript](http://www.purescript.org/) and [Go](https://golang.org).
66+> Note: this is out of date as this site now uses [PureScript](https://www.purescript.org/) and [Go](https://go.dev/).
7788As some of my close friends can vouch, I am known for sometimes setting up and
99using seemingly bizarre tech stacks for my personal sites. As such I thought it
+2-2
blog/thoughts-on-nix-2020-01-28.markdown
···175175[`ldd(1)`][ldd1] (which shows the dynamic libraries associated with a program)
176176output of `ls` on my Ubuntu system vs a package I installed from Nix:
177177178178-[ldd1]: http://man7.org/linux/man-pages/man1/ldd.1.html
178178+[ldd1]: https://man7.org/linux/man-pages/man1/ldd.1.html
179179180180```console
181181$ ldd $(which ls)
···192192reproducible on other Ubuntu systems. Compare this to the `ldd(1)` output of a
193193Nix program:
194194195195-[apt8]: http://manpages.ubuntu.com/manpages/bionic/man8/apt.8.html
195195+[apt8]: https://manpages.ubuntu.com/manpages/bionic/man8/apt.8.html
196196197197```
198198$ ldd $(which dhall)
+2-2
blog/trying-vagga-2015-03-21.markdown
···2222-----------------------------------------------------
23232424With Docker I can create an image `xena/lapis` and have it contain all of the
2525-stuff needed for [lapis](http://leafo.net/lapis) applications to run. With
2525+stuff needed for [lapis](https://leafo.net/lapis/) applications to run. With
2626Vagga I currently have to constantly reinvent the setup for this or risk
2727copying and pasting code everywhere
2828···4141wrap Vagga containers in Docker or the like just to be able to run things
4242without the containers using TCP ports on the host up.
43434444-http://vagga.readthedocs.org/en/latest/network.html is interesting.
4444+https://vagga.readthedocs.io/en/latest/network.html is interesting.
45454646Overall, Vagga looks very interesting and I'd like to see how it turns out.
4747
+1-1
blog/twitter-plea-2020-12-14.markdown
···2525mastodon as [@cadey@mst3k.interlinked.me](https://mst3k.interlinked.me/@cadey).
26262727In place of my tweeting about quarantine life, I am writing about my experiences
2828-[here](http://cetacean.club/journal/).
2828+[here](https://cetacean.club/journal/).
29293030## Why I Can't Unlock My Account
3131
+1-1
blog/v-vaporware-2019-06-23.markdown
···66 - rant
77---
8899-[V](http://vlang.io) is a programming language that has been hyped a lot. As it's
99+[V](https://vlang.io) is a programming language that has been hyped a lot. As it's
1010recently had its first alpha release, I figured it would be a good idea to step
1111through it and see if it lives up to the promises that the author has been
1212claiming for months.
+1-1
blog/vanbi-01-08-2019.markdown
···107107 // }
108108 // }
109109 //
110110- // See https://blog.golang.org/pipelines for more examples of how to use
110110+ // See https://go.dev/blog/pipelines for more examples of how to use
111111 // a Done channel for sisti.
112112 Done() <-chan struct{}
113113
···253253content before publishing.
254254255255Want to watch these posts get written live? Check me out on
256256-[twitch.tv](https://twitch.tv/princessxen)! The VOD for this post will be live
256256+[twitch.tv](https://www.twitch.tv/princessxen)! The VOD for this post will be live
257257on Twitch for the next two weeks [here](https://www.twitch.tv/videos/1250763144)
258258and on YouTube permanently [here](https://youtu.be/ZTnFjBsm5Rs) (if you are
259259reading this the day of this post, the YouTube link will not be live).
+1-1
blog/vtubing-linux-2021-01-15.markdown
···230230231231This article was written live on Twitch! Check out the stream vod
232232[here](https://www.twitch.tv/videos/1264594247), and in a few days it will be live on YouTube
233233-[here](https://youtu.be/cSR1ZA012aQ). Follow [my channel](https://twitch.tv/princessxen)
233233+[here](https://youtu.be/cSR1ZA012aQ). Follow [my channel](https://www.twitch.tv/princessxen)
234234and get notified when I go live with more writing.
+3-4
blog/vtubing-setup-2022-01-13.markdown
···1414presentation experience and helps me stand out from all the other people that
1515create technical content.
16161717-[I stream <a href="https://twitch.tv/princessxen">on Twitch</a> when I get the
1818-inspiration to. I usually announce streams about a half hour in advance on
1717+[I stream <a href="https://www.twitch.tv/princessxen">on Twitch</a> when I get the inspiration to. I usually announce streams about a half hour in advance on
1918Twitter. I plan to get a proper schedule soon.](conversation://Cadey/enby)
20192120This also makes it so much easier to edit videos because of the fact that the
···213212VTubing work. Or at least pretend to work. I'm doing my best to make sure that I
214213document things I learn in forms that are not badly organized YouTube tutorials.
215214I have a few things in the pipeline and will stream writing them [on
216216-Twitch](https://twitch.tv/princessxen) when they are ready to be fully written
217217-out.
215215+Twitch](https://www.twitch.tv/princessxen) when they are ready to be fully
216216+written out.
218217219218This post was written live on Twitch.
220219You can catch the VOD on Twitch [here](https://www.twitch.tv/videos/1261737101).
+3-3
blog/wasmcloud-progress-2019-12-08.markdown
···220220---
221221222222If you want to support my work, please do so via
223223-[Patreon](https://patreon.com/cadey). It really means a lot to me and helps to
224224-keep the dream alive!
223223+[Patreon](https://www.patreon.com/cadey). It really means a lot to me and helps
224224+to keep the dream alive!
225225226226[wasm]: https://webassembly.org
227227-[land]: http://tulpa.dev/cadey/land
227227+[land]: https://tulpa.dev/cadey/land
228228[newlib]: https://wiki.osdev.org/Porting_Newlib
229229[cwa]: https://github.com/CommonWA
230230[olincwa]: https://github.com/Xe/olin/tree/master/docs/cwa-spec
···9191will enable me to parse CGI replies from WebAssembly functions. This will allow
9292you to host HTTP endpoints on Trisiel using the same code that powers
9393[this](https://olin.within.website) and
9494-[this](http://cetacean.club/cgi-bin/olinfetch.wasm).
9494+[this](https://cetacean.club/cgi-bin/olinfetch.wasm).
95959696I also need to go in and completely refactor the
9797[olin](https://github.com/Xe/pahi/tree/main/wasm/olin/src) crate and make the
+1-1
blog/we-have-go-2.markdown
···898898---
899899900900<xeblog-conv name="Mara" mood="happy">If you had subscribed to the
901901-[Patreon](https://patreon.com/cadey) you could have read this a week
901901+[Patreon](https://www.patreon.com/cadey) you could have read this a week
902902ago!</xeblog-conv>
+3-3
blog/why-rust-2020-02-15.markdown
···122122```
123123124124The Go version uses `interface{}` as the data element because Go [literally
125125-cannot describe types as parameters to functions][gonerics]. The Rust version
125125+cannot describe types as parameters to functions][generics]. The Rust version
126126took me a bit longer to write, but there is _no_ ambiguity as to what the vector
127127holds. The Go version can also hold multiple types of data in the same list,
128128a-la:
129129130130-[gonerics]: https://golang.org/doc/faq#generics
130130+[generics]: https://go.dev/doc/faq#generics
131131132132```go
133133l := list.New()
···146146[wtfisreflection]: https://golangbot.com/reflection/
147147148148This allows the standard library to handle things like JSON parsing with
149149-functions [that look like this](https://godoc.org/encoding/json#Unmarshal):
149149+functions [that look like this](https://pkg.go.dev/encoding/json#Unmarshal):
150150151151```
152152func Unmarshal(data []byte, v interface{}) error
···8899[Xenoblade Chronicles 3](https://en.wikipedia.org/wiki/Xenoblade_Chronicles_3)
1010is set to come out on this friday, July 29th. I plan to stream the game all
1111-weekend on [twitch](https://twitch.tv/princessxen). If you want to come and
1111+weekend on [twitch](https://www.twitch.tv/princessxen). If you want to come and
1212watch, please join me on Twitch at midnight EDT. I will stream it for an hour or
1313two and then go to bed and proceed to stream more when I wake up, minus life
1414things. Saturday and Sunday should be the days with the most streaming in them.
···44 , name = "Cadey"
55 , mood = "coffee"
66 , message =
77- "Hello! Thank you for visiting my website. You seem to have ads disabled. These ads help pay for running the website and are done by <a href=\"https://ethicalads.io\">Ethical Ads</a>. I do not receive detailed analytics on the ads and from what I understand neither does Ethical Ads. If you don't want to disable your ad blocker, please consider donating on <a href=\"https://patreon.com/cadey\">Patreon</a>. It helps fund the website's hosting bills and pay for the expensive technical editor that I use for my longer articles. Thanks and be well!"
77+ "Hello! Thank you for visiting my website. You seem to have ads disabled. These ads help pay for running the website and are done by <a href=\"https://ethicalads.io\">Ethical Ads</a>. I do not receive detailed analytics on the ads and from what I understand neither does Ethical Ads. If you don't want to disable your ad blocker, please consider donating on <a href=\"https://www.patreon.com/cadey\">Patreon</a>. It helps fund the website's hosting bills and pay for the expensive technical editor that I use for my longer articles. Thanks and be well!"
88 }
99 , NagMessage::{
1010 , name = "Cadey"
1111 , mood = "coffee"
1212 , message =
1313- "Hi! Thanks for reading the blog! Your ad blocker seems to be preventing the ads from showing up. Hosting is expensive, and I use <a href=\"https://ethicalads.io\">Ethical Ads</a> to help offset the bills. Every time one of my posts gets very popular, the hosting costs go up accordingly. If you don't want to have ads enabled, please consider becoming a patron on my <a href=\"https://patreon.com/cadey\">Patreon</a> instead. This helps me further my goals of making highly readable, entertaining, and inspirational articles so that readers like you can benefit from my struggles. Thanks and be well!"
1313+ "Hi! Thanks for reading the blog! Your ad blocker seems to be preventing the ads from showing up. Hosting is expensive, and I use <a href=\"https://ethicalads.io\">Ethical Ads</a> to help offset the bills. Every time one of my posts gets very popular, the hosting costs go up accordingly. If you don't want to have ads enabled, please consider becoming a patron on my <a href=\"https://www.patreon.com/cadey\">Patreon</a> instead. This helps me further my goals of making highly readable, entertaining, and inspirational articles so that readers like you can benefit from my struggles. Thanks and be well!"
1414 }
1515 , NagMessage::{
1616 , name = "Mara"
1717 , mood = "hacker"
1818 , message =
1919- "Hey, I don't mean to be a bother but you seem to have an ad blocker configured for this domain. Independent tech writing and talks like these require a lot of investment in terms of writing and infrastructure. If you don't want to support the blog through ads, that's fine. Please consider donating on <a href=\"https://patreon.com/cadey\">Patreon</a> instead. That will help balance out the increased costs of hosting this website and get you some posts a week early as well as occasional patron-exclusive content. Thanks for reading! Hope you enjoy the article."
1919+ "Hey, I don't mean to be a bother but you seem to have an ad blocker configured for this domain. Independent tech writing and talks like these require a lot of investment in terms of writing and infrastructure. If you don't want to support the blog through ads, that's fine. Please consider donating on <a href=\"https://www.patreon.com/cadey\">Patreon</a> instead. That will help balance out the increased costs of hosting this website and get you some posts a week early as well as occasional patron-exclusive content. Thanks for reading! Hope you enjoy the article."
2020 }
2121 , NagMessage::{
2222 , name = "Mara"
2323 , mood = "happy"
2424 , message =
2525- "Thanks for reading the latest issue of the xeiaso dot net cinematic universe! Running a cinmatic universe takes more resources than you'd think. If you don't feel comfortable supporting the blog with <a href=\"https://ethicalads.io\">Ethical Ads</a>, please consider donating on <a href=\"https://patreon.com/cadey\">Patreon</a>. Hosting is expensive, especially at the scale this website operates at. Every little bit helps."
2525+ "Thanks for reading the latest issue of the xeiaso dot net cinematic universe! Running a cinmatic universe takes more resources than you'd think. If you don't feel comfortable supporting the blog with <a href=\"https://ethicalads.io\">Ethical Ads</a>, please consider donating on <a href=\"https://www.patreon.com/cadey\">Patreon</a>. Hosting is expensive, especially at the scale this website operates at. Every little bit helps."
2626 }
2727 ]
+1-1
dhall/package.dhall
···7676 [ Link::{ url = "https://github.com/Xe", title = "GitHub" }
7777 , Link::{ url = "https://keybase.io/xena", title = "Keybase" }
7878 , Link::{ url = "https://www.patreon.com/cadey", title = "Patreon" }
7979- , Link::{ url = "https://twitch.tv/princessxen", title = "Twitch" }
7979+ , Link::{ url = "https://www.twitch.tv/princessxen", title = "Twitch" }
8080 , Link::{ url = "https://pony.social/@cadey", title = "Fediverse" }
8181 , Link::{ url = "https://t.me/miamorecadenza", title = "Telegram" }
8282 , Link::{ url = "irc://irc.libera.chat/#xeserv", title = "IRC" }
+1-1
lib/jsonfeed/Cargo.toml
···11[package]
22authors = ["Paul Woolcock <paul@woolcock.us>", "Xe Iaso <me@xeiaso.net>"]
33-description = "Parser for the JSONFeed (http://jsonfeed.org) specification"
33+description = "Parser for the JSONFeed (https://jsonfeed.org) specification"
44documentation = "https://docs.rs/xe_jsonfeed"
55homepage = "https://github.com/Xe/site"
66license = "MIT/Apache-2.0"
+1-1
lib/jsonfeed/README.adoc
···33[link=https://github.com/pwoolcoc/jsonfeed]
44image::https://img.shields.io/crates/v/jsonfeed.svg[JSON Feed crate version]
5566-This is a http://jsonfeed.org[JSON Feed] parser in Rust. Just a thin layer on top of `serde`, but it
66+This is a https://jsonfeed.org[JSON Feed] parser in Rust. Just a thin layer on top of `serde`, but it
77provides serialization & deserialization, along with a Builder API for constructing feeds.
8899Note that this is alpha, I still need to add a lot of tests and a couple more features.
+1-1
lib/xesite_templates/src/lib.rs
···159159 "Hello! Thank you for visiting my website. You seem to be using an ad-blocker. I understand why you do this, but I'd really appreciate if it you would turn it off for my website. These ads help pay for running the website and are done by "
160160 a href="https://www.ethicalads.io/" { "Ethical Ads" }
161161 ". I do not receive detailed analytics on the ads and from what I understand neither does Ethical Ads. If you don't want to disable your ad blocker, please consider donating on "
162162- a href="https://patreon.com/cadey" { "Patreon" }
162162+ a href="https://www.patreon.com/cadey" { "Patreon" }
163163 " or sending some extra cash to "
164164 code { "xeiaso.eth" }
165165 " or "
+1-1
src/tmpl/blog.rs
···4141 @if let Some(vod) = &post.front_matter.vod {
4242 p {
4343 "This post was written live on "
4444- a href="https://twitch.tv/princessxen" {"Twitch"}
4444+ a href="https://www.twitch.tv/princessxen" {"Twitch"}
4545 ". You can check out the stream recording on "
4646 a href=(vod.twitch) {"Twitch"}
4747 " and on "
+2-2
src/tmpl/mod.rs
···263263264264 p {
265265 "These awesome people donate to me on "
266266- a href="https://patreon.com/cadey" {"Patreon"}
266266+ a href="https://www.patreon.com/cadey" {"Patreon"}
267267 ". If you would like to show up in this list, please donate to me on Patreon. This is refreshed every time the site is deployed."
268268 }
269269···373373 body {
374374 p {
375375 "Please see"
376376- a href={"https://godoc.org/" (pkg_name)} {"here"}
376376+ a href={"https://pkg.go.dev/" (pkg_name)} {"here"}
377377 " for documentation on this package."
378378 }
379379 }
+1-1
src/tmpl/nag.rs
···7575 "Hey, this post is set to go live on "
7676 (format!("{}", post.detri()))
7777 " UTC. Right now you are reading a pre-publication version of this post. Please do not share this on social media. This post will automatically go live for everyone on the intended publication date. If you want access to these posts, please join the "
7878- a href="https://patreon.com/cadey" { "Patreon" }
7878+ a href="https://www.patreon.com/cadey" { "Patreon" }
7979 ". It helps me afford the copyeditor that I contract for the technical content I write."
8080 br;
8181 }))
+1-1
static/blog/maybedoer.go
···2727// to any pointer-like datatype in Go, but Rob Pike says we can't have nice things.
2828//
2929// See the Haskell documentation for Data.Monad.First for more information:
3030-// http://hackage.haskell.org/package/base-4.14.0.0/docs/Data-Monoid.html#t:First
3030+// https://hackage.haskell.org/package/base-4.14.0.0/docs/Data-Monoid.html#t:First
3131func (c *Impl) Do(ctx context.Context) error {
3232 for _, doer := range c.Doers {
3333 c.Maybe(ctx, doer)