The code and data behind xeiaso.net
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Link cleanup (#601)

* http -> https

* golang.org -> go.dev

* 301 twitch.tv -> www.twitch.tv

* 301 patreon.com -> www.patreon.com

---------

Co-authored-by: Xe Iaso <me@christine.website>

authored by

Stephen Wade
Xe Iaso
and committed by
GitHub
e96fa7e7 d335d035

+159 -159
+1 -1
README.md
··· 29 29 about issues or remediation instructions. 30 30 31 31 This is probably not what you are looking for. Make your own website. Look into 32 - [Hugo](http://gohugo.io/) or [Zola](https://www.getzola.org/). They are going to 32 + [Hugo](https://gohugo.io/) or [Zola](https://www.getzola.org/). They are going to 33 33 be better maintained than this site will be.
+3 -3
blog/TLDR-rust-2020-09-19.markdown
··· 193 193 194 194 However there is still one thing left: the function returns a DivideByZero 195 195 error, not _any_ error like the [error interface in 196 - Go](https://godoc.org/builtin#error). In order to represent that we need to 196 + Go](https://pkg.go.dev/builtin#error). In order to represent that we need to 197 197 return something that implements the Error trait: 198 198 199 199 ```rust ··· 211 211 212 212 [Pro tip: eyre (via <a href="https://docs.rs/color-eyre">color-eyre</a>) also 213 213 has support for adding <a href="https://docs.rs/color-eyre/0.5.4/color_eyre/#custom-sections-for-error-reports-via-help-trait">custom 214 - sections and context</a> to errors similar to Go's <a href="https://godoc.org/fmt#Errorf">`fmt.Errorf` `%w` 214 + sections and context</a> to errors similar to Go's <a href="https://pkg.go.dev/fmt#Errorf">`fmt.Errorf` `%w` 215 215 format argument</a>, which will help in real world 216 216 applications. When you do need to actually make your own errors, you may want to look into 217 217 crates like <a href="https://docs.rs/thiserror">thiserror</a> to help with ··· 425 425 ``` 426 426 427 427 [This doesn't cover how the <a 428 - href="http://www.sheshbabu.com/posts/rust-module-system/">module system</a> 428 + href="https://www.sheshbabu.com/posts/rust-module-system/">module system</a> 429 429 works, however the post I linked there covers this better than I 430 430 can.](conversation://Mara/hacker) 431 431
+1 -1
blog/anathema-2019-10-21.markdown
··· 103 103 [perfectloversdescription]: https://www.moma.org/collection/works/81074 104 104 [codersnotestempleos]: http://www.codersnotes.com/notes/a-constructive-look-at-templeos/ 105 105 [terrydavis]: https://en.wikipedia.org/wiki/Terry_A._Davis 106 - [curtisbannedfromlambdaconf]: http://www.inc.com/tess-townsend/why-it-matters-that-an-obscure-programming-conference-is-hosting-mencius-moldbug.html 106 + [curtisbannedfromlambdaconf]: https://www.inc.com/tess-townsend/why-it-matters-that-an-obscure-programming-conference-is-hosting-mencius-moldbug.html 107 107 [anathema]: https://en.wikipedia.org/wiki/Anathema 108 108 [minecraft]: https://www.minecraft.net/en-us/ 109 109 [minecraftintrotextpatch]: https://variety.com/2019/gaming/news/notch-removed-minecraft-1203174964/
+1 -1
blog/beego-2014-11-28.markdown
··· 46 46 47 47 The Models are Beego's powerful database-backed models (we'll get into 48 48 those in a little bit), the Views are normal Go 49 - [html/template](https://godoc.org/html/template)s, and 49 + [html/template](https://pkg.go.dev/html/template)s, and 50 50 the Controllers are the Go code that controls the Views based on the Models. 51 51 52 52 ![](https://d262ilb51hltx0.cloudfront.net/max/600/1*EZ1qIqeXNW_NfKuLbudogA.png)
+1 -1
blog/blind-men-and-an-elephant-2018-11-29.markdown
··· 10 10 11 11 [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. 12 12 13 - | [KOhA4](http://lojban.org/publications/cll/cll_v1.1_xhtml-section-chunks/section-koha-broda-series.html) | lojban | english | 13 + | [KOhA4](https://lojban.org/publications/cll/cll_v1.1_xhtml-section-chunks/section-koha-broda-series.html) | lojban | english | 14 14 | --- | --- | --- | 15 15 | ko'a | le'i na viska kakne | the blind people | 16 16 | ko'e | le xanto | the elephant |
+3 -3
blog/cinemaquestria-orchestration-2015-03-13.markdown
··· 7 7 8 8 ### Or: Continuous Defenstration in a Container-based Ecosystem 9 9 10 - I've been a core member of the staff for [CinemaQuestria](http://cinemaquestria.com) 10 + I've been a core member of the staff for [CinemaQuestria](https://cinemaquestria.com) 11 11 for many months. In that time we have gone from shared hosting (updated by hand 12 12 with FTP) to a git-based deployment system that has won over the other 13 13 staffers. ··· 104 104 I have looked into using Lapis, 105 105 but the fact that HTML is so dead easy to modify made that idea lose out. 106 106 107 - Maybe this is in the realm of something like [jekyll](http://jekyllrb.com/), 108 - [Hugo](http://gohugo.io/) or [sw](https://github.com/jroimartin/sw) to take 107 + Maybe this is in the realm of something like [jekyll](https://jekyllrb.com/), 108 + [Hugo](https://gohugo.io/) or [sw](https://github.com/jroimartin/sw) to take 109 109 care of. I'd need to do more research into this when I have the time. 110 110 111 111 If you look at the website code currently a lot of it is heavily duplicated
+2 -2
blog/closed-projects-2022-03-24.markdown
··· 27 27 28 28 <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> 29 29 30 - If you are a [Patreon supporter](https://patreon.com/cadey), you can get this 31 - for free by clicking [this 30 + If you are a [Patreon supporter](https://www.patreon.com/cadey), you can get 31 + this for free by clicking [this 32 32 link](https://withinstudios.itch.io/closed-projects/patreon-access). 33 33 34 34 If you are a part of a marginalized group and cannot afford this but want to
+1 -1
blog/cloud-init-2021-06-04.markdown
··· 94 94 Please make sure to change the username and swap out the SSH key as needed, 95 95 unless you want to get locked out of your VM. For more information about what 96 96 you can do from cloud-init, see the list of modules 97 - [here](http://cloudinit.readthedocs.io/en/latest/topics/modules.html). 97 + [here](https://cloudinit.readthedocs.io/en/latest/topics/modules.html). 98 98 99 99 Now that you have the two yaml files you can make the seed image with this 100 100 command (Linux):
+1 -1
blog/cryptocurrency-ownership.markdown
··· 60 60 61 61 <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> 62 62 63 - <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> 63 + <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> 64 64 65 65 <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> 66 66
+1 -1
blog/death-stranding-review-2019-11-11.markdown
··· 13 13 year 2019 for me. 14 14 15 15 I have also been playing through this game [on 16 - twitch](https://twitch.tv/princessxen) and have streams archived 16 + twitch](https://www.twitch.tv/princessxen) and have streams archived 17 17 [here](https://xena.greedo.xeserv.us/files/kojima_unchained). 18 18 19 19 There's a long-standing rule of thumb to tell fiction apart from non-fiction.
+8 -9
blog/dependency-hell-2014-11-20.markdown
··· 70 70 upstream packages instead of just the code you wrote. Admittedly, 71 71 locking dependencies like this does mean that fantastic language level 72 72 tools such as [go 73 - get](https://golang.org/cmd/go/#hdr-Download_and_install_packages_and_dependencies) 73 + get](https://pkg.go.dev/cmd/go#hdr-Add_dependencies_to_current_module_and_install_them) 74 74 work again, but overall it is just not worth the pain 75 75 of having to manually merge in patches from upstream (but if you do 76 76 think it is worth the pain contact me, I'm open for contract work) ··· 80 80 81 81 I believe the solution to all this and something that needs to be a 82 82 wider community effort for users of all programming languages is the use 83 - of a technique called [semantic 84 - versioning](http://semver.org/). In 83 + of a technique called [semantic versioning](https://semver.org/). In 85 84 some lanaguages like Go where the [import paths are based on repository 86 - paths](https://golang.org/doc/code.html#PackagePaths), this may mean that 85 + paths](https://go.dev/doc/code#Organization), this may mean that 87 86 a new major version has a different repository. This is okay. Backward 88 - compatability is good. After you make a stable (1.0 or whathaveyou) 89 - release, nothing should be ever taken away or changed in the public API. 90 - If there needs to be a change in how something in the public API works, 91 - you must keep backwards compatabilty. As soon as you take away or modify 92 - something in the public API, you have just made a significant enough 87 + compatability is good. After you make a stable (1.0 or whathaveyou) 88 + release, nothing should be ever taken away or changed in the public API. 89 + If there needs to be a change in how something in the public API works, 90 + you must keep backwards compatabilty. As soon as you take away or modify 91 + something in the public API, you have just made a significant enough 93 92 change worthy of a major release. 94 93 95 94 We need to make semver a de-facto standard in the community instead of
+1 -1
blog/dhall-kubernetes-2020-01-25.markdown
··· 73 73 normal yaml. Dhall lets us define [record types][dhallrecord] for this data like 74 74 this: 75 75 76 - [dhallrecord]: http://www.haskellforall.com/2020/01/dhall-year-in-review-2019-2020.html 76 + [dhallrecord]: https://www.haskellforall.com/2020/01/dhall-year-in-review-2019-2020.html 77 77 78 78 ```dhall 79 79 let User =
+1 -1
blog/excited-for-2022-2021-12-28.markdown
··· 163 163 back into VR. I've been playing a lot of [Beat 164 164 Saber](https://store.steampowered.com/app/620980/Beat_Saber/) and more recently 165 165 [Synth Riders](https://synthridersvr.com/). I've been streaming my play on 166 - [Twitch](https://twitch.tv/princessxen) and I have a playlist of the VODs on 166 + [Twitch](https://www.twitch.tv/princessxen) and I have a playlist of the VODs on 167 167 [YouTube](https://www.youtube.com/playlist?list=PLJDDsMrk2tSH3nhLWqV8IZLgae1CNYurH). 168 168 169 169 I live a very sedentary lifestyle, even before COVID, and I want to start to get
+1 -1
blog/ffi-ing-golang-from-nim-for-fun-and-profit-2015-12-20.markdown
··· 53 53 And there we go, a Go function exposed and usable in Python. However now we 54 54 need to consider the overhead when switching contexts from your app to your Go 55 55 code. To minimize context switches, I am going to write the rest of the code in 56 - this post in [Nim](http://nim-lang.org) because it natively compiles down to 56 + this post in [Nim](https://nim-lang.org) because it natively compiles down to 57 57 C and has some of the best C FFI I have used. 58 58 59 59 We can now define `libsum.nim` as:
+1 -1
blog/footnote-2021-06-15.markdown
··· 102 102 articles. For people unfamiliar with IRC culture, you must think I'm making shit 103 103 up or something. It is _so_ out there that it's almost like an abstact art 104 104 gallery or something. But no, pissnet happened. It started as IRC spam and then 105 - turned into this: [letspiss.net](http://letspiss.net/). I don't really think I 105 + turned into this: [letspiss.net](https://letspiss.net/). I don't really think I 106 106 can suggest readers of this blog go there. It is some kind of weird anarchist 107 107 IRC hackerspace, but most of the users are ircops and can see your IP address. 108 108
+1 -1
blog/furnal-equinox-2021-03-22.markdown
··· 20 20 21 21 It 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. 22 22 23 - 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). 23 + 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). 24 24 25 25 <center> 26 26
+3 -3
blog/gamebridge-2020-05-09.markdown
··· 21 21 between it and the game it is controlling. Overall the flow of data between the 22 22 two programs looks like this: 23 23 24 - [ufifo]: http://man7.org/linux/man-pages/man7/fifo.7.html 24 + [ufifo]: https://man7.org/linux/man-pages/man7/fifo.7.html 25 25 26 26 ![A diagram explaining how control/state/data flows between components of the 27 27 gamebridge stack](/static/blog/gamebridge.png) ··· 82 82 tasvideos.org][mupendemo], and I ended up using this to help test and verify 83 83 ideas. 84 84 85 - [mupendemo]: http://tasvideos.org/EmulatorResources/Mupen/M64.html 85 + [mupendemo]: https://tasvideos.org/EmulatorResources/Mupen/M64.html 86 86 87 87 The thing that struck me was how _simple_ the format was. Every frame of input 88 88 uses its own four-byte sequence. The constants in the demo file spec also helped ··· 135 135 seeming to fake what the desired inputs were). 136 136 137 137 [lerper]: https://github.com/Xe/gamebridge/blob/b2e7ba21aa14b556e34d7a99dd02e22f9a1365aa/src/au.rs 138 - [au]: http://jbovlaste.lojban.org/dict/au 138 + [au]: https://jbovlaste.lojban.org/dict/au 139 139 140 140 At its core, a Lerper stores a few basic things: 141 141
+1 -1
blog/gemini-web-fear-missing-out-2020-08-02.markdown
··· 78 78 monthly. 79 79 80 80 [[4]: My Gemini capsule](gemini://cetacean.club) 81 - [[5]: [experimental] My Gemini capsule over HTTP](http://cetacean.club) 81 + [[5]: [experimental] My Gemini capsule over HTTP](https://cetacean.club) 82 82 83 83 I'm still going to attempt a few ideas that I have regarding long term archival 84 84 of 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
··· 15 15 [Getting Started with Go][gswg] post from 2015. A lot has changed in the 16 16 ecosystem since then, as well as my understanding of the language. 17 17 18 - [go]: https://golang.org 18 + [go]: https://go.dev/ 19 19 [gswg]: https://xeiaso.net/blog/getting-started-with-go-2015-01-28 20 20 21 21 Like always, feedback is very welcome. Any feedback I get will be used to help ··· 52 52 ``` 53 53 54 54 This function wraps [integer 55 - addition](https://golang.org/ref/spec#Arithmetic_operators). When you call it it 55 + addition](https://go.dev/ref/spec#Arithmetic_operators). When you call it it 56 56 returns the sum of x and y. 57 57 58 58 ## Installing Go ··· 66 66 67 67 ### macOS 68 68 69 - * Go to https://golang.org/dl 69 + * Go to https://go.dev/dl/ 70 70 * Download the .pkg file 71 71 * Double-click on it and go through the installer process 72 72 73 73 ### Windows 74 74 75 - * Go to https://golang.org/dl 75 + * Go to https://go.dev/dl/ 76 76 * Download the .msi file 77 77 * Double-click on it and go through the installer process 78 78 ··· 209 209 2. Rename `hello.go` to `main.go`. Does everything still work? 210 210 3. Read through the documentation of the [fmt][fmt] package. 211 211 212 - [fmt]: https://golang.org/pkg/fmt 212 + [fmt]: https://pkg.go.dev/fmt 213 213 214 214 --- 215 215
+7 -7
blog/getting-started-with-go-2015-01-28.markdown
··· 75 75 ------- 76 76 77 77 To test the go compilers with a simple 78 - [todo command](http://github.com/mattn/todo), run this: 78 + [todo command](https://github.com/mattn/todo), run this: 79 79 80 80 ```console 81 81 $ go get github.com/mattn/todo ··· 109 109 Resources 110 110 --------- 111 111 112 - [Effective Go](https://golang.org/doc/effective_go.html) and the 113 - [language spec](https://golang.org/ref/spec) provide a nice overview of the 112 + [Effective Go](https://go.dev/doc/effective_go) and the 113 + [language spec](https://go.dev/ref/spec) provide a nice overview of the 114 114 syntax. 115 115 116 - The Go [blog](http://blog.golang.org) contains a lot of detailed articles 116 + The Go [blog](https://go.dev/blog/) contains a lot of detailed articles 117 117 covering advanced and simple Go topics. 118 - [This page](https://golang.org/doc/#articles) has a list of past articles that 118 + [This page](https://go.dev/doc/#blog) has a list of past articles that 119 119 you may find useful. 120 120 121 121 The Go standard library is a fantastic collection of Go code for solving many ··· 123 123 standard library. This includes things like web application support, tarfile 124 124 support, sql drivers, support for most kinds of commonly used crypto, command 125 125 line flag parsing, html templating, and regular expressions. A full list of 126 - the standard library packages can be found [here](http://godoc.org/-/go). 126 + the standard library packages can be found [here](https://pkg.go.dev/std). 127 127 128 128 Variable type declarations will look backwards. It takes a bit to get used to 129 129 but makes a lot of sense once you realize it reads better left to right. ··· 134 134 [here](http://codegangsta.gitbooks.io/building-web-apps-with-go/). 135 135 136 136 Go has support for unit testing baked into the core language tools. You can 137 - find information about writing unit tests [here](http://golang.org/pkg/testing/). 137 + find information about writing unit tests [here](http://pkg.go.dev/testing). 138 138 139 139 When creating a new go project, please resist the urge to make the folder in your 140 140 normal code folder. Drink the `$GOPATH` koolaid. Yes it's annoying, yes it's the
+3 -3
blog/gopreload-2017-03-25.markdown
··· 78 78 on the Gophers slack (I'm `@xena` there). For issues with gopreload please file 79 79 [an issue on Github][gopreload-issues]. 80 80 81 - [initf]: https://golang.org/doc/effective_go.html#init 81 + [initf]: https://go.dev/doc/effective_go#init 82 82 [manhole]: https://github.com/Xe/gopreload/tree/master/manhole 83 83 [good-ld-preload]: http://www.logix.cz/michal/devel/faketime/ 84 84 [evil-ld-preload]: https://rafalcieslak.wordpress.com/2013/04/02/dynamic-linker-tricks-using-ld_preload-to-cheat-inject-features-and-investigate-programs/ 85 - [underscore-import]: https://golang.org/doc/effective_go.html#blank 85 + [underscore-import]: https://go.dev/doc/effective_go#blank 86 86 [gopreload]: https://github.com/Xe/gopreload 87 - [go-plugins]: https://golang.org/pkg/plugin/ 87 + [go-plugins]: https://pkg.go.dev/plugin 88 88 [manhole-tools]: https://github.com/Xe/gopreload/blob/master/manhole/server.go 89 89 [ld-preload]: https://rafalcieslak.wordpress.com/2013/04/02/dynamic-linker-tricks-using-ld_preload-to-cheat-inject-features-and-investigate-programs/ 90 90 [twitter-addr]: https://twitter.com/theprincessxena
+1 -1
blog/h-language-2019-06-30.markdown
··· 221 221 } 222 222 ``` 223 223 224 - The execution duration is in [nanoseconds](https://godoc.org/time#Duration), as 224 + The execution duration is in [nanoseconds](https://pkg.go.dev/time#Duration), as 225 225 it is just directly a Go standard library time duration. 226 226 227 227 ## Bugs h has Found
+2 -2
blog/hlang-nguh.markdown
··· 105 105 ## The nguh compiler 106 106 107 107 On December 31st, 2022, I wrote the nguh compiler [on 108 - stream](https://twitch.tv/princessxen). The nguh (nguh gives u hlang or 108 + stream](https://www.twitch.tv/princessxen). The nguh (nguh gives u hlang or 109 109 Next-Generation Universal Hlang compiler, whichever you prefer) compiler outputs 110 110 WebAssembly bytecode directly instead of using `wat2wasm` as a middleman. 111 111 ··· 262 262 263 263 If you want to play with hlang, head to its new home at 264 264 [h.within.lgbt](https://h.within.lgbt). If you want to witness things such as 265 - this being created live, follow me [on twitch](https://twitch.tv/princessxen) or 265 + this being created live, follow me [on twitch](https://www.twitch.tv/princessxen) or 266 266 on my VTuber business account at [@xe@vt.social](https://vt.social/@xe). 267 267 268 268 <xeblog-conv name="Cadey" mood="enby">Happy new year to those that
+1 -1
blog/how-mara-works-2020-09-30.markdown
··· 20 20 tabletop games I've played her in. Mara was originally made to help test my 21 21 upcoming tabletop game The Source, and I have used them in a few solitaire 22 22 tabletop sessions (click 23 - [here](http://cetacean.club/journal/mara-castle-charon.gmi) to read the results 23 + [here](https://cetacean.club/journal/mara-castle-charon.gmi) to read the results 24 24 of one of these). 25 25 26 26 [I use a hand-soldered <a href="https://www.ergodox.io/">Ergodox</a> with the <a
+3 -3
blog/how-my-website-works-talk-announcement.markdown
··· 55 55 56 56 As always, I'll get a page up on my website with the slides, talk transcript, 57 57 youtube embed and more! I'm looking at having this page up by M09 12 2022. 58 - If you subscribe to my [Patreon](https://patreon.com/cadey) you'll get access to 59 - my raw scripts (including draft scripts) and initial notes so you can see the 60 - evolutions that took place in my creative process. 58 + If you subscribe to my [Patreon](https://www.patreon.com/cadey) you'll get 59 + access to my raw scripts (including draft scripts) and initial notes so you can 60 + see the evolutions that took place in my creative process.
+1 -1
blog/howto-automate-discord-webhook-cron-2018-03-29.markdown
··· 37 37 38 38 ## How to automate it 39 39 40 - To automate it, first open your [`crontab(5)`](http://man7.org/linux/man-pages/man5/crontab.5.html) file: 40 + To automate it, first open your [`crontab(5)`](https://man7.org/linux/man-pages/man5/crontab.5.html) file: 41 41 42 42 ```console 43 43 $ crontab -e
+5 -5
blog/howto-usermode-linux-2019-07-07.markdown
··· 4 4 series: howto 5 5 --- 6 6 7 - [User Mode Linux](http://user-mode-linux.sourceforge.net) is a port of the 7 + [User Mode Linux](https://user-mode-linux.sourceforge.net) is a port of the 8 8 [Linux kernel](https://www.kernel.org) to itself. This allows you to run a 9 9 full blown Linux kernel as a normal userspace process. This is used by kernel 10 10 developers for testing drivers, but is also useful as a generic isolation layer ··· 366 366 This tells the guest kernel to do the following things: 367 367 368 368 - Assume the root filesystem is the pseudo-device `/dev/root` 369 - - Select [hostfs](http://user-mode-linux.sourceforge.net/hostfs.html) as the root filesystem driver 369 + - Select [hostfs](https://user-mode-linux.sourceforge.net/hostfs.html) as the root filesystem driver 370 370 - Mount the guest filesystem we have created as the root device 371 371 - In read-write mode 372 372 - 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) ··· 603 603 So it's failing [in its main loop](https://github.com/Pradeo/Slirp/blob/master/src/main.c#L972) 604 604 while it is trying to check if any timeouts occured. This is where I had to give 605 605 up trying to debug this further. Let's see if building it from source works. I 606 - re-uploaded the tarball from [Sourceforge](http://slirp.sourceforge.net) because 607 - downloading tarballs from Sourceforge from the command line is a pain. 606 + re-uploaded the tarball from [Sourceforge](https://slirp.sourceforge.net) 607 + because downloading tarballs from Sourceforge from the command line is a pain. 608 608 609 609 ``` 610 610 cd ~/dl ··· 688 688 689 689 #### Configuring Networking 690 690 691 - Now let's configure networking on our guest. [Adjust your kernel command line](http://user-mode-linux.sourceforge.net/old/networking.html): 691 + Now let's configure networking on our guest. [Adjust your kernel command line](https://user-mode-linux.sourceforge.net/old/networking.html): 692 692 693 693 ``` 694 694 linux \
+3 -3
blog/i-was-wrong-about-nix-2020-02-10.markdown
··· 265 265 package needs 266 266 - Time zone data that the [`time`][gotime] package needs 267 267 268 - [gonet]: https://godoc.org/net 269 - [gonethttp]: https://godoc.org/net/http 270 - [gotime]: https://godoc.org/time 268 + [gonet]: https://pkg.go.dev/net 269 + [gonethttp]: https://pkg.go.dev/net/http 270 + [gotime]: https://pkg.go.dev/time 271 271 272 272 And that's it. This is _fantastic_. Nearly all of the disk usage has been 273 273 eliminated. If someone manages to trick my website into executing code, that
+1 -1
blog/land-1-syscalls-file-io-2018-06-18.markdown
··· 271 271 [importer]: https://gist.github.com/Xe/a29c86755a04a8096082ec8a32e0c13f 272 272 [open2]: https://linux.die.net/man/2/open 273 273 [pretty]: https://github.com/kr/pretty 274 - [errno]: http://man7.org/linux/man-pages/man3/errno.3.html 274 + [errno]: https://man7.org/linux/man-pages/man3/errno.3.html
+5 -4
blog/ln-the-natural-logger-2020-10-17.markdown
··· 30 30 } 31 31 ``` 32 32 33 - ln works with key value pairs called [F](https://godoc.org/within.website/ln#F). 34 - This type allows you to log just about _anything_ you want, including custom 35 - data types with an [Fer](https://godoc.org/within.website/ln#Fer). This will let 33 + ln works with key value pairs called 34 + [F](https://pkg.go.dev/within.website/ln#F). This type allows you to 35 + log just about _anything_ you want, including custom data types with an 36 + [Fer](https://pkg.go.dev/within.website/ln#Fer). This will let 36 37 you annotate your data types so that you can automatically extract the important 37 38 information into your logs while automatically filtering out passwords or other 38 39 secret data. Here's an example: ··· 93 94 logging library is NOT going to be your bottleneck), but it is designed to have 94 95 very usable defaults and solve the problem good enough that you shouldn't need 95 96 to care. There are a few useful tools in the 96 - [ex](https://godoc.org/within.website/ln/ex) package nested in ln. The biggest 97 + [ex](https://pkg.go.dev/within.website/ln/ex) package nested in ln. The biggest 97 98 thing is the HTTP middleware, which has saved me a lot of effort when writing 98 99 web services in Go.
+4 -4
blog/lokahi-2018-02-08.markdown
··· 108 108 a new one for every operation!) and quickly exhausted postgres' pool of client. 109 109 connections. 110 110 111 - I rewrote this to use [`database/sql`](https://godoc.org/database/sql) and 112 - [`sqlx`](https://godoc.org/github.com/jmoiron/sqlx) and all of the tests passed 111 + I rewrote this to use [`database/sql`](https://pkg.go.dev/database/sql) and 112 + [`sqlx`](https://pkg.go.dev/github.com/jmoiron/sqlx) and all of the tests passed 113 113 the first time I tried to run this, no joke. 114 114 115 115 ### Scaling to 50,000 Checks ··· 119 119 I was trying to scale this was that I was putting way too much load on the 120 120 database way too quickly. 121 121 122 - The solution to this was to use [bundler](https://godoc.org/google.golang.org/api/support/bundler) 122 + The solution to this was to use [bundler](https://pkg.go.dev/google.golang.org/api/support/bundler) 123 123 to batch-write the most frequently written database items, see [here](https://github.com/Xe/lokahi/blob/7fc03120f731def3a351ddd516430feb635345b4/internal/lokahiadminserver/local_run.go#L245). 124 - Even then, [database connection count limiting](https://godoc.org/database/sql#DB.SetMaxOpenConns) 124 + Even then, [database connection count limiting](https://pkg.go.dev/database/sql#DB.SetMaxOpenConns) 125 125 was also needed in order to scale to the full 50,000 checks needed for this 126 126 to exist as more than a proof of concept. 127 127
+1 -1
blog/maybedoer-2020-05-23.markdown
··· 81 81 However, this version differs because of the `Doers` element of 82 82 `maybedoer.Impl`. This allows you to specify an entire process of steps as long 83 83 as those steps don't return any values. This is very similar to how Haskell's 84 - [`Data.Monoid.First`](http://hackage.haskell.org/package/base-4.14.0.0/docs/Data-Monoid.html#t:First) 84 + [`Data.Monoid.First`](https://hackage.haskell.org/package/base-4.14.0.0/docs/Data-Monoid.html#t:First) 85 85 type works, except in Go this is locked to the `error` type (due to the language 86 86 not letting you describe things as precisely as you would need to get an analog 87 87 to `Data.Monoid.First`). This is also similar to Rust's `and_then` combinator.
+1 -1
blog/mpd-docker-2014-10-20.markdown
··· 7 7 8 8 9 9 Being the perfectionist I am, I also got a simple web UI for mpd 10 - ([ympd](http://www.ympd.org/)) set up. 10 + ([ympd](https://ympd.org/)) set up. 11 11 12 12 You can find the source repos here: 13 13
+3 -2
blog/musings-from-within-release-2020-07-28.markdown
··· 71 71 available anywhere else. There's poetry about shamanism, stories about 72 72 reincarnation, koans and more. 73 73 74 - I am also uploading eBook files to my [Patreon](https://patreon.com/cadey) page, 75 - anyone who supports me for $1 or more has [immediate 74 + I am also uploading eBook files to my 75 + [Patreon](https://www.patreon.com/cadey) page. 76 + Anyone who supports me for $1 or more has [immediate 76 77 access](https://www.patreon.com/posts/39825969) 77 78 to the DRM-free ePub, MOBIPocket and PDF files of this book. 78 79
+1 -1
blog/new-site-2016-12-18.markdown
··· 5 5 6 6 This post is now being brought to you by the new and improved [https://xeiaso.net](https://xeiaso.net). 7 7 This content is markdown rendered by 8 - [Purescript](http://www.purescript.org/). The old [site](https://github.com/Xe/christine.website) 8 + [Purescript](https://www.purescript.org/). The old [site](https://github.com/Xe/christine.website) 9 9 is now being retired in favor of [this one](https://github.com/Xe/site). The old 10 10 site code has been largely untouched since I started writing it 11 11 [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
··· 4 4 --- 5 5 6 6 I have been recently playing with and using a new lanugage for 7 - my personal development, [Nim](http://nim-lang.org). It looks like 7 + my personal development, [Nim](https://nim-lang.org). It looks like 8 8 Python, runs like C and integrates well into other things. Its 9 9 compiler targets C, and as a result of this binding things to C 10 10 libraries is a lot more trivial in Nim; even moreso than with go. ··· 43 43 write the code and it just works. 44 44 45 45 At the idea of another coworker, I've also started to use 46 - [tup](http://gittup.org/tup/) for building things. Nim didn't 46 + [tup](https://gittup.org/tup/) for building things. Nim didn't 47 47 initially work very well with tup (temporary cache needed, etc), 48 48 but a very simple set of tup rules were able to fix that: 49 49
+1 -1
blog/nix-flakes-3-2022-04-07.markdown
··· 272 272 - Automatically restarts the service when it crashes 273 273 - Starts our `web-server` binary when running the service 274 274 - Creates a random, unique user account for the service (see 275 - [here](http://0pointer.net/blog/dynamic-users-with-systemd.html) for more 275 + [here](https://0pointer.net/blog/dynamic-users-with-systemd.html) for more 276 276 information on how/why this works) 277 277 - Creates temporary, home and cache directories for the service, makes sure that 278 278 random user has permission to use them (with the specified directory modes
+1 -1
blog/nix-flakes-go-programs.markdown
··· 14 14 The consequences of this violence mean that it's hard to cope with the choices 15 15 that other people have made for you and then you just have to make things work. 16 16 This is the situation that I face when compiling things written in 17 - [Go](https://golang.org) in my NixOS configurations. 17 + [Go](https://go.dev/) in my NixOS configurations. 18 18 19 19 However, I have figured out a way past this wicked fate and have forged a new 20 20 path. I have found [`gomod2nix`](https://github.com/nix-community/gomod2nix) to
+1 -1
blog/olin-1-why-09-1-2018.markdown
··· 231 231 232 232 ## Go ABI 233 233 234 - Olin also includes support for running webassembly modules created by [Go 1.11's webassembly support](https://golang.org/wiki/WebAssembly). 234 + Olin also includes support for running webassembly modules created by [Go 1.11's webassembly support](https://github.com/golang/go/wiki/WebAssembly). 235 235 It uses [the `wasmgo` ABI][wasmgo] package in order to do things. Right now 236 236 this is incredibly basic, but should be extendable to more things in the future. 237 237
+1 -1
blog/olin-progress-2019-12-14.markdown
··· 56 56 57 57 For 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. 58 58 59 - [golang]: https://golang.org 59 + [golang]: https://go.dev/ 60 60 [abi-wasmgo]: https://github.com/Xe/olin/tree/master/abi/wasmgo 61 61 62 62 ### The Entrypoint is Now `_start()`
+1 -1
blog/pahi-hello-world-2020-02-22.markdown
··· 30 30 [wasmer]: https://wasmer.io 31 31 [wasmercustomabisample]: https://github.com/wasmerio/wasmer-rust-customabi-example 32 32 [lojban]: https://mw.lojban.org/papri/Lojban 33 - [rafsi]: http://lojban.org/publications/cll/cll_v1.1_xhtml-section-chunks/section-rafsi.html 33 + [rafsi]: https://lojban.org/publications/cll/cll_v1.1_xhtml-section-chunks/section-rafsi.html 34 34 35 35 [pa'i][pahi] is written in [Rust][rust]. It is built with [Nix][nix]. It 36 36 requires a nightly version of Rust because the WebAssembly code it compiles
+1 -1
blog/patreon-happening.markdown
··· 5 5 6 6 Hey, I don't usually write these kinds of posts, but I have been made aware of a 7 7 post on twitter that seems fairly credible. It seems that the 8 - [Patreon](https://patreon.com) security team has been let go. 8 + [Patreon](https://www.patreon.com) security team has been let go. 9 9 10 10 <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>&mdash; 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> 11 11
+3 -3
blog/plt-2-entering-the-cave-2015-02-14.markdown
··· 59 59 ``` 60 60 61 61 When I am running unknown code, I use a virtual machine running [Alpine 62 - Linux](http://alpinelinux.org). I literally do need the source code to be able 62 + Linux](https://alpinelinux.org). I literally do need the source code to be able 63 63 to run binaries as Alpine doesn't use glibc. 64 64 65 65 ``` ··· 83 83 [19:27:23] <plt> Purebasic [...] 84 84 ``` 85 85 86 - I took a look at the site for [PureBasic](http://www.purebasic.com). It looks 86 + I took a look at the site for [PureBasic](https://www.purebasic.com). It looks 87 87 like Visual Basic's proprietary cousin as written by someone who hates 88 88 programmers. Looking at its feature set: 89 89 ··· 103 103 Python, C, or Java. This looks promising. 104 104 105 105 I'm just going to paste the code for the 99 bottles of beer example. It 106 - requires OOP. I got this from [Rosetta Code](http://rosettacode.org/wiki/99_Bottles_of_Beer/Basic#PureBasic). 106 + requires OOP. I got this from [Rosetta Code](https://rosettacode.org/wiki/99_Bottles_of_Beer/Basic#PureBasic). 107 107 108 108 ``` 109 109 Prototype Wall_Action(*Self, Number.i)
+1 -1
blog/pomodoro-2022-02-19.markdown
··· 103 103 I am definitly going to continue with this experiment. I haven't found a 104 104 suitable pomodoro timer for Gnome yet, though I haven't looked too much. I've 105 105 been trying to reserve pomodoro for my dayjob, but I may integrate it into 106 - [streams](https://twitch.tv/princessxen) as integrated breaks to talk about 106 + [streams](https://www.twitch.tv/princessxen) as integrated breaks to talk about 107 107 something else for a moment. 108 108 109 109 Overall though, I've been liking this technique. It makes me feel like I have
+1 -1
blog/pronouns-service.markdown
··· 111 111 112 112 <xeblog-conv name="Mara" mood="happy">If you want to watch things like this get 113 113 coded and deployed live, be sure to follow [the Twitch 114 - channel](https://twitch.tv/princessxen) and the [stream announcement Mastodon 114 + channel](https://www.twitch.tv/princessxen) and the [stream announcement Mastodon 115 115 account](https://vt.social/@xe). Streams will usually be on Saturdays around 116 116 12-13 EST and go on until they are done. The streams will usually contain things 117 117 that don't get recorded in the blogposts that result from them.</xeblog-conv>
+6 -6
blog/pursuit-of-dsl-2014-08-16.markdown
··· 3 3 date: 2014-08-16 4 4 --- 5 5 6 - A project we have been working on is [Tetra](http://github.com/Xe/Tetra). It is 6 + A project we have been working on is [Tetra](https://github.com/Xe/Tetra). It is 7 7 an extended services package in Go with Lua and Moonscript extensions. While 8 8 writing Tetra, I have found out how to create a Domain Specific Language, and 9 9 I would like to recommend Moonscript as a toolkit for creating DSL's. 10 10 11 - [Moonscript](http://moonscript.org) is a high level wrapper around Lua designed 11 + [Moonscript](https://moonscript.org) is a high level wrapper around Lua designed 12 12 to make programming easier. We have used Moonscript heavily in Tetra because of 13 13 how easy it is to make very idiomatic code in it. 14 14 ··· 34 34 arguments involved. 35 35 36 36 Because Tetra is a polyglot of Lua, Moonscript and Go, the relevant Go objects 37 - will have their type definitions linked to on [godoc](http://godoc.org) 37 + will have their type definitions linked to on [godoc](https://pkg.go.dev/) 38 38 39 39 Declaring commands is done with the `Command` macro. It takes in two arguments. 40 40 ··· 51 51 The command function can have up to 3 arguments set when it is called. These 52 52 are: 53 53 54 - 1. The [Client](https://godoc.org/github.com/Xe/Tetra/bot#Client) that 54 + 1. The [Client](https://pkg.go.dev/github.com/Xe/Tetra/bot#Client) that 55 55 originated the command call. 56 - 2. The [Destination](https://godoc.org/github.com/Xe/Tetra/bot#Targeter) or 56 + 2. The [Destination](https://pkg.go.dev/github.com/Xe/Tetra/bot#Targeter) or 57 57 where the command was sent to. This will be a Client if the target is an 58 58 internal client or 59 - a [Channel](https://godoc.org/github.com/Xe/Tetra/bot#Channel) if the target 59 + a [Channel](https://pkg.go.dev/github.com/Xe/Tetra/bot#Channel) if the target 60 60 is a channel. 61 61 3. The command arguments as a string array. 62 62
+1 -1
blog/rg280m-review.markdown
··· 101 101 little effort required. 102 102 103 103 The game I've gotten the most playtime out of is [Hyper 104 - Metroid](http://hyper.metroidconstruction.com), a sort of enhanced and remixed 104 + Metroid](https://hyper.metroidconstruction.com), a sort of enhanced and remixed 105 105 hack of Super Metroid that does some really interesting experimental takes on 106 106 the Metroid ammo system (Missiles, Super Missiles and Power Bombs all pull from 107 107 the same ammo pool instead of having separate pools per weapon), and it runs
+7 -7
blog/rust-crates-go-stdlib-2020-09-27.markdown
··· 16 16 17 17 ## Logging 18 18 19 - Go has logging out of the box with package [`log`](https://godoc.org/log). 19 + Go has logging out of the box with package [`log`](https://pkg.go.dev/log). 20 20 Package `log` is a very uncontroversial logger. It does what it says it does and 21 21 with little fuss. However it does not include a lot of niceties like logging 22 22 levels and context-aware values. ··· 97 97 98 98 ## Flags 99 99 100 - Go's standard library has the [`flag`](https://godoc.org/flag) package out of 100 + Go's standard library has the [`flag`](https://pkg.go.dev/flag) package out of 101 101 the box. This package is incredibly basic, but is surprisingly capable in terms 102 102 of what you can actually do with it. A common thing to do is use flags for 103 103 configuration or other options, such as ··· 193 193 ## Errors 194 194 195 195 Go's standard library has the [`error` 196 - interface](https://godoc.org/builtin#error) which lets you create a type that 196 + interface](https://pkg.go.dev/builtin#error) which lets you create a type that 197 197 describes why functions fail to do what they intend. Rust has the [`Error` 198 198 trait](https://doc.rust-lang.org/std/error/trait.Error.html) which lets you also 199 199 create a type that describes why functions fail to do what they intend. ··· 259 259 ## Serialization / Deserialization 260 260 261 261 Go has JSON encoding/decoding in its standard library via package 262 - [`encoding/json`](https://godoc.org/encoding/json). This allows you to define 262 + [`encoding/json`](https://pkg.go.dev/encoding/json). This allows you to define 263 263 types that can be read from and write to JSON easily. Let's take this simple 264 264 JSON object representing a comment from some imaginary API as an example: 265 265 ··· 370 370 ## HTTP 371 371 372 372 Many APIs expose their data over HTTP. Go has the 373 - [`net/http`](https://godoc.org/net/http) package that acts as a production-grade 373 + [`net/http`](https://pkg.go.dev/net/http) package that acts as a production-grade 374 374 (Google uses this in production) HTTP client and server. This allows you to get 375 375 going with new projects very easily. The Rust standard library doesn't have this 376 376 out of the box, but there are some very convenient crates that can fill in the ··· 534 534 ## Templating 535 535 536 536 Go's standard library also includes HTML and plain text templating with its 537 - packages [`html/template`](https://godoc.org/html/template) and 538 - [`text/template`](https://godoc.org/text/template). There are many solutions for 537 + packages [`html/template`](https://pkg.go.dev/html/template) and 538 + [`text/template`](https://pkg.go.dev/text/template). There are many solutions for 539 539 templating HTML in Rust, but the one I like the most is 540 540 [`ructe`](https://docs.rs/ructe). `ructe` uses Cargo's 541 541 [build.rs](https://doc.rust-lang.org/cargo/reference/build-scripts.html) feature
+2 -2
blog/site-update-2020-07-16.markdown
··· 69 69 ## ructe 70 70 71 71 In the previous version of this site, I used Go's 72 - [html/template](https://godoc.org/html/template). Rust does not have an 72 + [html/template](https://pkg.go.dev/html/template). Rust does not have an 73 73 equivalent of html/template in its standard library. After some research, I 74 74 settled on [ructe](https://github.com/kaj/ructe) for the HTML templates. ructe 75 75 works by preprocessing templates using a little domain-specific language that ··· 88 88 89 89 <h1>Patrons</h1> 90 90 91 - <p>These awesome people donate to me on <a href="https://patreon.com/cadey">Patreon</a>. 91 + <p>These awesome people donate to me on <a href="https://www.patreon.com/cadey">Patreon</a>. 92 92 If you would like to show up in this list, please donate to me on Patreon. This 93 93 is refreshed every time the site is deployed.</p> 94 94
+2 -2
blog/site-update-better-css.markdown
··· 15 15 can't tell what is a conversation snippet lol" in a positive enough light to 16 16 want to act on it. 17 17 18 - I decided to just fix the problem on [stream](https://twitch.tv/princessxen) and 18 + I decided to just fix the problem on [stream](https://www.twitch.tv/princessxen) and 19 19 now hopefully people should complain about this less. 20 20 21 21 <xeblog-conv standalone name="Numa" mood="delet"><span ··· 73 73 74 74 <xeblog-conv standalone name="Mara" mood="hacker">If you want to see these 75 75 things written live, [give a follow on 76 - Twitch](https://twitch.tv/princessxen)!</xeblog-conv> 76 + Twitch](https://www.twitch.tv/princessxen)!</xeblog-conv>
+2 -2
blog/site-update-hero-images.markdown
··· 15 15 16 16 I have generated a bunch of other images that I'm going to use for my other 17 17 posts. I'll give out a desktop wallpaper sized version of each of these images 18 - on my [Patreon](https://patreon.com/cadey). 18 + on my [Patreon](https://www.patreon.com/cadey). 19 19 20 20 Under the hood this is powered by 21 21 [lol_html](https://github.com/cloudflare/lol-html) and ··· 83 83 I'm likely going to convert over most of my website templates to use Maud. I'm 84 84 very happy with it and I think it is incredibly useful to express your HTML in 85 85 Rust instead of something that has to be compiled to Rust. In practice it 86 - reminds me of the Nim library [emerald](http://flyx.github.io/emerald/), which 86 + reminds me of the Nim library [emerald](https://flyx.github.io/emerald/), which 87 87 lets you write HTML using Nim functions similar to how you use Maud. 88 88 89 89 Here's a few more examples of hero images I have generated:
+1 -1
blog/site-update-mastodon-quoting.markdown
··· 20 20 21 21 I'm going to be streaming the game [Sonic 22 22 Frontiers](https://frontiers.sonicthehedgehog.com/) on 23 - [Twitch](https://twitch.tv/princessxen) on November 8th, 2022 at 10:00 EDT 23 + [Twitch](https://www.twitch.tv/princessxen) on November 8th, 2022 at 10:00 EDT 24 24 through at least 12:00 EDT. I may go longer depending on how the game is, but I 25 25 took the day off for this so I may as well take advantage of it. 26 26
+1 -1
blog/sqlite-json-munge-2022-01-04.markdown
··· 344 344 SQLite is able to be a NOSQL database. It's good enough for your needs. If you 345 345 want to play with the code I wrote while writing this article, check it out 346 346 [here](https://git.io/JSDVR). This post was written live on 347 - [twitch.tv](https://twitch.tv/princessxen). Please follow or subscribe to be 347 + [twitch.tv](https://www.twitch.tv/princessxen). Please follow or subscribe to be 348 348 kept up to date on when I go live! 349 349 350 350 The VOD for this post is [here](https://www.twitch.tv/videos/1253083566). The
+1 -1
blog/stable-diffusion-nixos.markdown
··· 28 28 [Stable Diffusion](https://stability.ai/blog/stable-diffusion-public-release) is 29 29 a machine learning model that lets you enter in plain text descriptions of what 30 30 you want an image to contain and then get an image back. You can try it out at 31 - their official website [here](http://beta.dreamstudio.ai/) (log in with your 31 + their official website [here](https://beta.dreamstudio.ai/) (log in with your 32 32 Google account). However, that's running it on someone else's computer. The real 33 33 magic comes from the fact that Stable Diffusion can run on very high-end 34 34 consumer hardware. A fork of Stable Diffusion's code even lets this run on
+1 -1
blog/ten-thousand-laughs-2018-12-01.markdown
··· 19 19 .i mi brodu 20 20 ``` 21 21 22 - 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. 22 + 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. 23 23 24 24 Translation: 25 25
+2 -2
blog/that-which-is-for-kings-12-02-2018.markdown
··· 3 3 date: "2018-12-02" 4 4 --- 5 5 6 - 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. 6 + 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. 7 7 8 8 Ultimately, 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. 9 9 ··· 41 41 42 42 You 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. 43 43 44 - It was/is/will be the kind of thing the Buddha would stay silent for. You never really understood why until now. 44 + 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
··· 27 27 Origins 28 28 ------- 29 29 30 - 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. 30 + 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. 31 31 32 32 Specifically 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. 33 33 ··· 83 83 84 84 --- 85 85 86 - 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. 86 + 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. 87 87 88 - > > [Parcly Taxel](http://parclytaxel.tumblr.com/) 88 + > > [Parcly Taxel](https://parclytaxel.tumblr.com/) 89 89 > 90 90 > 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? 91 91 >
+1 -1
blog/the-universal-design-2015-10-17.markdown
··· 124 124 125 125 ## Urbit 126 126 127 - 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): 127 + 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): 128 128 129 129 V(I) => T 130 130
+1 -1
blog/this-site-text-stack-2015-02-14.markdown
··· 3 3 date: 2015-02-14 4 4 --- 5 5 6 - > Note: this is out of date as this site now uses [PureScript](http://www.purescript.org/) and [Go](https://golang.org). 6 + > Note: this is out of date as this site now uses [PureScript](https://www.purescript.org/) and [Go](https://go.dev/). 7 7 8 8 As some of my close friends can vouch, I am known for sometimes setting up and 9 9 using seemingly bizarre tech stacks for my personal sites. As such I thought it
+2 -2
blog/thoughts-on-nix-2020-01-28.markdown
··· 175 175 [`ldd(1)`][ldd1] (which shows the dynamic libraries associated with a program) 176 176 output of `ls` on my Ubuntu system vs a package I installed from Nix: 177 177 178 - [ldd1]: http://man7.org/linux/man-pages/man1/ldd.1.html 178 + [ldd1]: https://man7.org/linux/man-pages/man1/ldd.1.html 179 179 180 180 ```console 181 181 $ ldd $(which ls) ··· 192 192 reproducible on other Ubuntu systems. Compare this to the `ldd(1)` output of a 193 193 Nix program: 194 194 195 - [apt8]: http://manpages.ubuntu.com/manpages/bionic/man8/apt.8.html 195 + [apt8]: https://manpages.ubuntu.com/manpages/bionic/man8/apt.8.html 196 196 197 197 ``` 198 198 $ ldd $(which dhall)
+2 -2
blog/trying-vagga-2015-03-21.markdown
··· 22 22 ----------------------------------------------------- 23 23 24 24 With Docker I can create an image `xena/lapis` and have it contain all of the 25 - stuff needed for [lapis](http://leafo.net/lapis) applications to run. With 25 + stuff needed for [lapis](https://leafo.net/lapis/) applications to run. With 26 26 Vagga I currently have to constantly reinvent the setup for this or risk 27 27 copying and pasting code everywhere 28 28 ··· 41 41 wrap Vagga containers in Docker or the like just to be able to run things 42 42 without the containers using TCP ports on the host up. 43 43 44 - http://vagga.readthedocs.org/en/latest/network.html is interesting. 44 + https://vagga.readthedocs.io/en/latest/network.html is interesting. 45 45 46 46 Overall, Vagga looks very interesting and I'd like to see how it turns out. 47 47
+1 -1
blog/twitter-plea-2020-12-14.markdown
··· 25 25 mastodon as [@cadey@mst3k.interlinked.me](https://mst3k.interlinked.me/@cadey). 26 26 27 27 In place of my tweeting about quarantine life, I am writing about my experiences 28 - [here](http://cetacean.club/journal/). 28 + [here](https://cetacean.club/journal/). 29 29 30 30 ## Why I Can't Unlock My Account 31 31
+1 -1
blog/v-vaporware-2019-06-23.markdown
··· 6 6 - rant 7 7 --- 8 8 9 - [V](http://vlang.io) is a programming language that has been hyped a lot. As it's 9 + [V](https://vlang.io) is a programming language that has been hyped a lot. As it's 10 10 recently had its first alpha release, I figured it would be a good idea to step 11 11 through it and see if it lives up to the promises that the author has been 12 12 claiming for months.
+1 -1
blog/vanbi-01-08-2019.markdown
··· 107 107 // } 108 108 // } 109 109 // 110 - // See https://blog.golang.org/pipelines for more examples of how to use 110 + // See https://go.dev/blog/pipelines for more examples of how to use 111 111 // a Done channel for sisti. 112 112 Done() <-chan struct{} 113 113
+1 -1
blog/vrchat-avatar-to-vrm-vtubing-2022-01-02.markdown
··· 253 253 content before publishing. 254 254 255 255 Want to watch these posts get written live? Check me out on 256 - [twitch.tv](https://twitch.tv/princessxen)! The VOD for this post will be live 256 + [twitch.tv](https://www.twitch.tv/princessxen)! The VOD for this post will be live 257 257 on Twitch for the next two weeks [here](https://www.twitch.tv/videos/1250763144) 258 258 and on YouTube permanently [here](https://youtu.be/ZTnFjBsm5Rs) (if you are 259 259 reading this the day of this post, the YouTube link will not be live).
+1 -1
blog/vtubing-linux-2021-01-15.markdown
··· 230 230 231 231 This article was written live on Twitch! Check out the stream vod 232 232 [here](https://www.twitch.tv/videos/1264594247), and in a few days it will be live on YouTube 233 - [here](https://youtu.be/cSR1ZA012aQ). Follow [my channel](https://twitch.tv/princessxen) 233 + [here](https://youtu.be/cSR1ZA012aQ). Follow [my channel](https://www.twitch.tv/princessxen) 234 234 and get notified when I go live with more writing.
+3 -4
blog/vtubing-setup-2022-01-13.markdown
··· 14 14 presentation experience and helps me stand out from all the other people that 15 15 create technical content. 16 16 17 - [I stream <a href="https://twitch.tv/princessxen">on Twitch</a> when I get the 18 - inspiration to. I usually announce streams about a half hour in advance on 17 + [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 19 18 Twitter. I plan to get a proper schedule soon.](conversation://Cadey/enby) 20 19 21 20 This also makes it so much easier to edit videos because of the fact that the ··· 213 212 VTubing work. Or at least pretend to work. I'm doing my best to make sure that I 214 213 document things I learn in forms that are not badly organized YouTube tutorials. 215 214 I have a few things in the pipeline and will stream writing them [on 216 - Twitch](https://twitch.tv/princessxen) when they are ready to be fully written 217 - out. 215 + Twitch](https://www.twitch.tv/princessxen) when they are ready to be fully 216 + written out. 218 217 219 218 This post was written live on Twitch. 220 219 You can catch the VOD on Twitch [here](https://www.twitch.tv/videos/1261737101).
+3 -3
blog/wasmcloud-progress-2019-12-08.markdown
··· 220 220 --- 221 221 222 222 If you want to support my work, please do so via 223 - [Patreon](https://patreon.com/cadey). It really means a lot to me and helps to 224 - keep the dream alive! 223 + [Patreon](https://www.patreon.com/cadey). It really means a lot to me and helps 224 + to keep the dream alive! 225 225 226 226 [wasm]: https://webassembly.org 227 - [land]: http://tulpa.dev/cadey/land 227 + [land]: https://tulpa.dev/cadey/land 228 228 [newlib]: https://wiki.osdev.org/Porting_Newlib 229 229 [cwa]: https://github.com/CommonWA 230 230 [olincwa]: https://github.com/Xe/olin/tree/master/docs/cwa-spec
+1 -1
blog/wasmcloud-progress-domains-2020-10-31.markdown
··· 91 91 will enable me to parse CGI replies from WebAssembly functions. This will allow 92 92 you to host HTTP endpoints on Trisiel using the same code that powers 93 93 [this](https://olin.within.website) and 94 - [this](http://cetacean.club/cgi-bin/olinfetch.wasm). 94 + [this](https://cetacean.club/cgi-bin/olinfetch.wasm). 95 95 96 96 I also need to go in and completely refactor the 97 97 [olin](https://github.com/Xe/pahi/tree/main/wasm/olin/src) crate and make the
+1 -1
blog/we-have-go-2.markdown
··· 898 898 --- 899 899 900 900 <xeblog-conv name="Mara" mood="happy">If you had subscribed to the 901 - [Patreon](https://patreon.com/cadey) you could have read this a week 901 + [Patreon](https://www.patreon.com/cadey) you could have read this a week 902 902 ago!</xeblog-conv>
+3 -3
blog/why-rust-2020-02-15.markdown
··· 122 122 ``` 123 123 124 124 The Go version uses `interface{}` as the data element because Go [literally 125 - cannot describe types as parameters to functions][gonerics]. The Rust version 125 + cannot describe types as parameters to functions][generics]. The Rust version 126 126 took me a bit longer to write, but there is _no_ ambiguity as to what the vector 127 127 holds. The Go version can also hold multiple types of data in the same list, 128 128 a-la: 129 129 130 - [gonerics]: https://golang.org/doc/faq#generics 130 + [generics]: https://go.dev/doc/faq#generics 131 131 132 132 ```go 133 133 l := list.New() ··· 146 146 [wtfisreflection]: https://golangbot.com/reflection/ 147 147 148 148 This allows the standard library to handle things like JSON parsing with 149 - functions [that look like this](https://godoc.org/encoding/json#Unmarshal): 149 + functions [that look like this](https://pkg.go.dev/encoding/json#Unmarshal): 150 150 151 151 ``` 152 152 func Unmarshal(data []byte, v interface{}) error
+1 -1
blog/within-go-repo-layout-2020-09-07.markdown
··· 214 214 215 215 [stdlibcmd]: https://github.com/golang/go/tree/master/src/cmd 216 216 [internalcode]: https://docs.google.com/document/d/1e8kOo3r51b2BWtTs_1uADIA5djfXhPT36s6eHVRIvaU/edit 217 - [gotest]: https://golang.org/pkg/testing/ 217 + [gotest]: https://pkg.go.dev/testing 218 218 [pkgfolder]: https://www.digitalocean.com/community/tutorials/understanding-the-gopath
+1 -1
blog/xenoblade-3-streams.markdown
··· 8 8 9 9 [Xenoblade Chronicles 3](https://en.wikipedia.org/wiki/Xenoblade_Chronicles_3) 10 10 is set to come out on this friday, July 29th. I plan to stream the game all 11 - weekend on [twitch](https://twitch.tv/princessxen). If you want to come and 11 + weekend on [twitch](https://www.twitch.tv/princessxen). If you want to come and 12 12 watch, please join me on Twitch at midnight EDT. I will stream it for an hour or 13 13 two and then go to bed and proceed to stream more when I wake up, minus life 14 14 things. Saturday and Sunday should be the days with the most streaming in them.
+1 -1
dhall/authors/xe.dhall
··· 10 10 , "https://github.com/Xe" 11 11 , "https://www.linkedin.com/in/xe-iaso-87a883254/" 12 12 , "https://www.youtube.com/user/shadowh511" 13 - , "https://patreon.com/cadey" 13 + , "https://www.patreon.com/cadey" 14 14 ] 15 15 , jobTitle = "Archmage of Infrastructure" 16 16 , inSystem = True
+4 -4
dhall/nagMessages.dhall
··· 4 4 , name = "Cadey" 5 5 , mood = "coffee" 6 6 , message = 7 - "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!" 7 + "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!" 8 8 } 9 9 , NagMessage::{ 10 10 , name = "Cadey" 11 11 , mood = "coffee" 12 12 , message = 13 - "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!" 13 + "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!" 14 14 } 15 15 , NagMessage::{ 16 16 , name = "Mara" 17 17 , mood = "hacker" 18 18 , message = 19 - "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." 19 + "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." 20 20 } 21 21 , NagMessage::{ 22 22 , name = "Mara" 23 23 , mood = "happy" 24 24 , message = 25 - "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." 25 + "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." 26 26 } 27 27 ]
+1 -1
dhall/package.dhall
··· 76 76 [ Link::{ url = "https://github.com/Xe", title = "GitHub" } 77 77 , Link::{ url = "https://keybase.io/xena", title = "Keybase" } 78 78 , Link::{ url = "https://www.patreon.com/cadey", title = "Patreon" } 79 - , Link::{ url = "https://twitch.tv/princessxen", title = "Twitch" } 79 + , Link::{ url = "https://www.twitch.tv/princessxen", title = "Twitch" } 80 80 , Link::{ url = "https://pony.social/@cadey", title = "Fediverse" } 81 81 , Link::{ url = "https://t.me/miamorecadenza", title = "Telegram" } 82 82 , Link::{ url = "irc://irc.libera.chat/#xeserv", title = "IRC" }
+1 -1
lib/jsonfeed/Cargo.toml
··· 1 1 [package] 2 2 authors = ["Paul Woolcock <paul@woolcock.us>", "Xe Iaso <me@xeiaso.net>"] 3 - description = "Parser for the JSONFeed (http://jsonfeed.org) specification" 3 + description = "Parser for the JSONFeed (https://jsonfeed.org) specification" 4 4 documentation = "https://docs.rs/xe_jsonfeed" 5 5 homepage = "https://github.com/Xe/site" 6 6 license = "MIT/Apache-2.0"
+1 -1
lib/jsonfeed/README.adoc
··· 3 3 [link=https://github.com/pwoolcoc/jsonfeed] 4 4 image::https://img.shields.io/crates/v/jsonfeed.svg[JSON Feed crate version] 5 5 6 - This is a http://jsonfeed.org[JSON Feed] parser in Rust. Just a thin layer on top of `serde`, but it 6 + This is a https://jsonfeed.org[JSON Feed] parser in Rust. Just a thin layer on top of `serde`, but it 7 7 provides serialization & deserialization, along with a Builder API for constructing feeds. 8 8 9 9 Note 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
··· 159 159 "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 " 160 160 a href="https://www.ethicalads.io/" { "Ethical Ads" } 161 161 ". 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 " 162 - a href="https://patreon.com/cadey" { "Patreon" } 162 + a href="https://www.patreon.com/cadey" { "Patreon" } 163 163 " or sending some extra cash to " 164 164 code { "xeiaso.eth" } 165 165 " or "
+1 -1
src/tmpl/blog.rs
··· 41 41 @if let Some(vod) = &post.front_matter.vod { 42 42 p { 43 43 "This post was written live on " 44 - a href="https://twitch.tv/princessxen" {"Twitch"} 44 + a href="https://www.twitch.tv/princessxen" {"Twitch"} 45 45 ". You can check out the stream recording on " 46 46 a href=(vod.twitch) {"Twitch"} 47 47 " and on "
+2 -2
src/tmpl/mod.rs
··· 263 263 264 264 p { 265 265 "These awesome people donate to me on " 266 - a href="https://patreon.com/cadey" {"Patreon"} 266 + a href="https://www.patreon.com/cadey" {"Patreon"} 267 267 ". 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." 268 268 } 269 269 ··· 373 373 body { 374 374 p { 375 375 "Please see" 376 - a href={"https://godoc.org/" (pkg_name)} {"here"} 376 + a href={"https://pkg.go.dev/" (pkg_name)} {"here"} 377 377 " for documentation on this package." 378 378 } 379 379 }
+1 -1
src/tmpl/nag.rs
··· 75 75 "Hey, this post is set to go live on " 76 76 (format!("{}", post.detri())) 77 77 " 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 " 78 - a href="https://patreon.com/cadey" { "Patreon" } 78 + a href="https://www.patreon.com/cadey" { "Patreon" } 79 79 ". It helps me afford the copyeditor that I contract for the technical content I write." 80 80 br; 81 81 }))
+1 -1
static/blog/maybedoer.go
··· 27 27 // to any pointer-like datatype in Go, but Rob Pike says we can't have nice things. 28 28 // 29 29 // See the Haskell documentation for Data.Monad.First for more information: 30 - // http://hackage.haskell.org/package/base-4.14.0.0/docs/Data-Monoid.html#t:First 30 + // https://hackage.haskell.org/package/base-4.14.0.0/docs/Data-Monoid.html#t:First 31 31 func (c *Impl) Do(ctx context.Context) error { 32 32 for _, doer := range c.Doers { 33 33 c.Maybe(ctx, doer)