~mrlee/www.leemeichin.com

80d01f285b07bd267cd725bb388af0c2ac558de3 — Lee Meichin 13 days ago cac4c27
Fix up footnotes
M posts/a-damn-good-listen.org => posts/a-damn-good-listen.org +2 -3
@@ 30,8 30,7 @@ To bring it back to now: the beauty of listening, the sheer magnificence of it, 

To wrap this up; sometimes the best, most enlightening conversations are the ones where you don't say anything.

◊footnotes{
  [fn:1]{◊<>["https://coachingdevelopment.com/"]}
}

[fn:1] https://coachingdevelopment.com/



M posts/a-decade-of-work.org => posts/a-decade-of-work.org +5 -6
@@ 38,9 38,8 @@ Now it's 2020, and not much has changed except that I enjoy the programming side

The world has changed /a lot/ in all that time, and I now find myself in my thirties. Not once in my life did I ever think or believe I would be doing this kind of thing as a career, and I've grown to love it. If I were to tell my teenage self anything, knowing all of this... I would keep my mouth shut. He managed to figure it out just fine.

◊footnotes{
  [fn:1]{◊<>["https://en.wikipedia.org/wiki/Dynamic_HTML"]}
  [fn:2]{◊<>["https://www.albinoblacksheep.com/archive/"]}
  [fn:3]{◊<>["https://www.youtube.com/watch?v=3AoNKGwBB74"]}
  [fn:4]{◊<>["https://capistranorb.com/"]}
}
\ No newline at end of file

[fn:1] https://en.wikipedia.org/wiki/Dynamic_HTML
[fn:2] https://www.albinoblacksheep.com/archive/
[fn:3] https://www.youtube.com/watch?v=3AoNKGwBB74
[fn:4] https://capistranorb.com/

M posts/agile-lipstick.org => posts/agile-lipstick.org +6 -7
@@ 52,10 52,9 @@ Fuck that noise, just put the agile lipstick on your pig instead! Throw in a dai

Now /that/ is easy.

◊footnotes{
  [fn:1]{◊<>["https://www.coachingdevelopment.com/"] - if you're based in London or Ireland this is /so/ worth it./
  [fn:2]{◊<>["https://en.wikipedia.org/wiki/Eternal_September"]}
  [fn:3]{◊<>["https://uk.bookshop.org/a/6865/9780321934116"]}
  [fn:4]{◊<>["https://uk.bookshop.org/a/6865/9781118127308"]}
  [fn:5]{◊<>["https://agilemanifesto.org/"]}
}
[fn:1] https://www.coachingdevelopment.com/ - if you're based in London or Ireland this is /so/ worth it.
[fn:2] https://en.wikipedia.org/wiki/Eternal_September
[fn:3] https://uk.bookshop.org/a/6865/9780321934116
[fn:4] https://uk.bookshop.org/a/6865/9781118127308
[fn:5] https://agilemanifesto.org/


M posts/blogging-in-haskell.org => posts/blogging-in-haskell.org +7 -8
@@ 60,11 60,10 @@ The result of adding this code, and then inserting it into the template context,

In any case, I've enjoyed playing around with Haskell in order to deploy this site, and I'm looking forward to seeing what else I can build with the language. It's truly fascinating.

◊footnotes{
  [fn:1]{◊<>["https://gohugo.io"]}
  [fn:2]{◊<>["https://www.gatsbyjs.org"]}
  [fn:3]{◊<>["https://www.netlifycms.org"]}
  [fn:4]{◊<>["https://jaspervdj.be/hakyll"]}
  [fn:5]{◊<>["https://www.getzola.org"]}
  [fn:6]{◊<>["https://terminalcss.xyz"]}
}
[fn:1] https://gohugo.io
[fn:2] https://www.gatsbyjs.org
[fn:3] https://www.netlifycms.org
[fn:4] https://jaspervdj.be/hakyll
[fn:5] https://www.getzola.org
[fn:6] https://terminalcss.xyz


M posts/can-you-crack-the-code.org => posts/can-you-crack-the-code.org +8 -8
@@ 271,11 271,11 @@ So ends 2020, so ends this post. Did your brain-grown answer match the one this 

Mad propz to the Prolog community on Reddit also, whose example solutions helped point me in the right direction[fn:6].

◊footnotes{
  [fn:1]{◊<>["https://amzi.com/AdventureInProlog/a1start.php"] - (buy the book, srlsy...)}
  [fn:2]{◊<>["https://swish.swi-prolog.org/p/KfdGtcJr.swinb"]}
  [fn:3]{◊<>["https://uk.bookshop.org/books/the-art-of-prolog-advanced-programming-techniques/9780262691635"]}
  [fn:4]{◊<>["https://www.swi-prolog.org/man/clpfd.html"]}
  [fn:5]{◊<>["https://swish.swi-prolog.org/p/MgtEUnSv.swinb"]}
  [fn:6]{◊<>["https://www.reddit.com/r/prolog/comments/fzww7m/cracking_this_puzzle_with_prolog/"]}
}

[fn:1] https://amzi.com/AdventureInProlog/a1start.php - (buy the book, srlsy...)}
[fn:2] https://swish.swi-prolog.org/p/KfdGtcJr.swinb
[fn:3] https://uk.bookshop.org/books/the-art-of-prolog-advanced-programming-techniques/9780262691635
[fn:4] https://www.swi-prolog.org/man/clpfd.html
[fn:5] https://swish.swi-prolog.org/p/MgtEUnSv.swinb
[fn:6] https://www.reddit.com/r/prolog/comments/fzww7m/cracking_this_puzzle_with_prolog/


M posts/celebrate-each-other.org => posts/celebrate-each-other.org +5 -7
@@ 28,10 28,8 @@ What I'm saying in a pretty long-winded way is that we people make the success w

Celebrate each other, celebrate yourselves. 🥳

◊footnotes{
  [fn:1]{◊<>["https://www.typeform.com"]}
  [fn:2]{◊<>["https://bonus.ly"]}
  [fn:3]{◊<>["https://en.wikipedia.org/wiki/HipChat"]}
  [fn:4]{◊<>["https://www.kamelasa.dev/images/tc.jpg"]}
  [fn:5]{◊<>["https://www.babylonhealth.com"]}
}
\ No newline at end of file
[fn:1] https://www.typeform.com
[fn:2] https://bonus.ly
[fn:3] https://en.wikipedia.org/wiki/HipChat
[fn:4] https://www.kamelasa.dev/images/tc.jpg
[fn:5] https://www.babylonhealth.com

M posts/devops.org => posts/devops.org +2 -3
@@ 30,6 30,5 @@ Before I proselytise too much, I think this is really important because you can 

And if I had one suggestion for any budding project finding itself in the hands of real life users in production, consider what you want your devops culture to be like and, if you can, see how early you can encourage your team without depending on offering wide-scale production access. And maybe even consider what kind of internal tooling you can build to improve the productivity and efficacy of your engineers.

◊footnotes{
  [fn:1]{◊<>["https://github.com/babylonhealth/shipcat"]}
}
\ No newline at end of file

[fn:1] https://github.com/babylonhealth/shipcat

M posts/do-you-really-need-those-microservices.org => posts/do-you-really-need-those-microservices.org +4 -5
@@ 30,8 30,7 @@ I believe that's a lot easier to do when you start early, but if you come to it 

If I was to offer anybody advice about how to make all of this happen successfully, I'd say to stop thinking in terms of the existing monolith, and instead look at what individual products you could separate or extract, or even spin-off into their own businesses if the idea was unique enough to sell individually. And don't jump to solutions like Kubernetes until you're dealing with enough of these services that your existing deployment setup is too hard to manage.

◊footnotes{
  [fn:1]{◊<>["https://en.wikipedia.org/wiki/Conway%27s_law"]}
  [fn:2]{◊<>["https://en.wikipedia.org/wiki/Service-oriented_architecture"]}
  [fn:3]{◊<>["https://en.wikipedia.org/wiki/Domain-driven_design"]}
}
\ No newline at end of file

[fn:1] https://en.wikipedia.org/wiki/Conway%27s_law
[fn:2] https://en.wikipedia.org/wiki/Service-oriented_architecture
[fn:3] https://en.wikipedia.org/wiki/Domain-driven_design

M posts/enough.org => posts/enough.org +1 -3
@@ 60,6 60,4 @@ Am I enough? Certainly!

Do I behave like I am? Not at all.

◊footnotes{
  [fn:1]{◊<>["https://en.wikipedia.org/wiki/Politician%27s_syllogism"]}
}
[fn:1] https://en.wikipedia.org/wiki/Politician%27s_syllogism

M posts/floc-off.org => posts/floc-off.org +5 -7
@@ 20,10 20,8 @@ Anyway, every page here is served with the ~Permissions-Policy: interest-cohort=

If you're curious, you can also check out the Security Headers report for this site[fn:5].

◊footnotes{
  [fn:1]{◊<>["https://plausible.io/kamelasa.dev"]}
  [fn:2]{◊<>["https://plausible.io/blog/google-floc"]}
  [fn:3]{◊<>["https://developer.mozilla.org/en-US/docs/Web/HTML/Element/noscript"]}
  [fn:4]{◊<>["https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/DNT"]}
  [fn:5]{◊<>["https://securityheaders.com/?q=www.kamelasa.dev&followRedirects=on"]}
}
\ No newline at end of file
[fn:1] https://plausible.io/kamelasa.dev
[fn:2] https://plausible.io/blog/google-floc
[fn:3] https://developer.mozilla.org/en-US/docs/Web/HTML/Element/noscript
[fn:4] https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/DNT
[fn:5] https://securityheaders.com/?q=www.kamelasa.dev&followRedirects=on

M posts/gettin-ziggy-with-it-pi-zero.org => posts/gettin-ziggy-with-it-pi-zero.org +17 -18
@@ 267,21 267,20 @@ Once you're done, rebuild the binary and ~scp~ it over, like you did the first t

Hopefully that worked, but if it didn't, get in touch with your feedback at wtf@mrlee.dev and help contribute to this post being a better, more informative read. After all, /works on my machine!/ can only go so far.

◊footnotes{
  [fn:1]{◊<>["https://ziglang.org"]}
  [fn:2]{◊<>["https://thepihut.com/products/raspberry-pi-zero-w"]}
  [fn:3]{◊<>["https://thepihut.com/products/adafruit-pioled-128x32-monochrome-oled-add-on-for-raspberry-pi-ada3527"]}
  [fn:4]{◊<>["https://thepihut.com/products/gpio-hammer-header-solderless"]}
  [fn:5]{◊<>["http://wiringpi.com"]}
  [fn:6]{◊<>["https://www.kernel.org/doc/Documentation/i2c/dev-interface"]}
  [fn:7]{◊<>["https://learn.adafruit.com/adafruits-raspberry-pi-lesson-4-gpio-setup/configuring-i2c"]}
  [fn:8]{◊<>["https://github.com/mrleedev/stardust"]}
  [fn:9]{◊<>["https://musl.libc.org"]}
  [fn:10]{◊<>["https://github.com/ziglang/zig/issues/4875"]}
  [fn:11]{◊<>["https://knowyourmeme.com/memes/how-to-draw-an-owl"]}
  [fn:12]{◊<>["https://cdn-shop.adafruit.com/datasheets/SSD1306.pdf"]}
  [fn:13]{◊<>["https://github.com/owenosborn/SSD1306-OLED-WiringPi/blob/master/ssd1306.h"]}
  [fn:14]{Possibly exaggerated for effect. Possibly.}
  [fn:15]{◊<>["https://github.com/adafruit/Adafruit_CircuitPython_SSD1306/blob/master/adafruit_ssd1306.py"]}
  [fn:16]{◊<>["https://kristoff.it/blog/what-is-zig-comptime/"]}
}
[fn:1] https://ziglang.org
[fn:2] https://thepihut.com/products/raspberry-pi-zero-w
[fn:3] https://thepihut.com/products/adafruit-pioled-128x32-monochrome-oled-add-on-for-raspberry-pi-ada3527
[fn:4] https://thepihut.com/products/gpio-hammer-header-solderless
[fn:5] http://wiringpi.com
[fn:6] https://www.kernel.org/doc/Documentation/i2c/dev-interface
[fn:7] https://learn.adafruit.com/adafruits-raspberry-pi-lesson-4-gpio-setup/configuring-i2c
[fn:8] https://github.com/mrleedev/stardust
[fn:9] https://musl.libc.org
[fn:10] https://github.com/ziglang/zig/issues/4875
[fn:11] https://knowyourmeme.com/memes/how-to-draw-an-owl
[fn:12] https://cdn-shop.adafruit.com/datasheets/SSD1306.pdf
[fn:13] https://github.com/owenosborn/SSD1306-OLED-WiringPi/blob/master/ssd1306.h
[fn:14] Possibly exaggerated for effect. Possibly.
[fn:15] https://github.com/adafruit/Adafruit_CircuitPython_SSD1306/blob/master/adafruit_ssd1306.py
[fn:16] https://kristoff.it/blog/what-is-zig-comptime/


M posts/hakyll-on-devops-pipelines.org => posts/hakyll-on-devops-pipelines.org +7 -7
@@ 177,10 177,10 @@ To solve the issue I first mentioned, ~cleanTargetFolder~ makes sure to delete t

To see the pipeline in full, you can check out the full YAML file[fn:5]. I've been using it with success for the past couple of weeks now.

◊footnotes{
  [fn:1]{◊<>["https://docs.haskellstack.org/en/stable/README"]}
  [fn:2]{◊<>["https://hackage.haskell.org"]}
  [fn:3]{◊<>["https://dev.azure.com"]}
  [fn:4]{◊<>["https://github.com/features/actions"]}
  [fn:5]{◊<>["https://git.sr.ht/~mrlee/www.kamelasa.dev/tree/9decaf4732dc7bc4510fcf23979af8657bdb01bd/item/azure/pipeline.yml"]}
}

[fn:1] https://docs.haskellstack.org/en/stable/README
[fn:2] https://hackage.haskell.org
[fn:3] https://dev.azure.com
[fn:4] https://github.com/features/actions
[fn:5] https://git.sr.ht/~mrlee/www.kamelasa.dev/tree/9decaf4732dc7bc4510fcf23979af8657bdb01bd/item/azure/pipeline.yml


M posts/human-after-all.org => posts/human-after-all.org +3 -5
@@ 46,8 46,6 @@ Of course, it doesn't work out for everyone. It's not about protecting people or

Just, no reason to be so needlessly unkind to each other. We're all human, after all.

◊footnotes{
  [fn:1]{◊<>["https://twentytentalent.com/8-types-of-toxic-managers/"]}
  [fn:2]{◊<>["https://getvoip.com/blog/2015/02/24/toxic-employees/"]}
  [fn:3]{◊<>["https://uk.bookshop.org/a/6865/9781849010986"]}
}
\ No newline at end of file
[fn:1] https://twentytentalent.com/8-types-of-toxic-managers/
[fn:2] https://getvoip.com/blog/2015/02/24/toxic-employees/
[fn:3] https://uk.bookshop.org/a/6865/9781849010986

M posts/i-am-here.org => posts/i-am-here.org +5 -7
@@ 30,10 30,8 @@ To bring this back to the start, I would not change a thing as my place in this 

This isn't to say all my problems are solved, or I'm finished with my process. That's *pure BS* as this stuff lasts an entire lifetime as you learn, grow and adapt to new situations. But the track record I have must be pretty good if I'm /here/, right?

◊footnotes{
  [fn:1]{◊<>["https://en.wikipedia.org/wiki/Breathwork"]}
  [fn:2]{◊<>["https://en.wikipedia.org/wiki/Cognitive_behavioral_therapy"]}
  [fn:3]{◊<>["https://en.wikipedia.org/wiki/Somatic_experiencing"]}
  [fn:4]{◊<>["https://en.wikipedia.org/wiki/Complex_post-traumatic_stress_disorder"]}
  [fn:5]{◊<>["https://en.wikipedia.org/wiki/Posttraumatic_growth"]}
}
\ No newline at end of file
[fn:1] https://en.wikipedia.org/wiki/Breathwork
[fn:2] https://en.wikipedia.org/wiki/Cognitive_behavioral_therapy
[fn:3] https://en.wikipedia.org/wiki/Somatic_experiencing
[fn:4] https://en.wikipedia.org/wiki/Complex_post-traumatic_stress_disorder
[fn:5] https://en.wikipedia.org/wiki/Posttraumatic_growth

M posts/my-favourite-thing-about-programming.org => posts/my-favourite-thing-about-programming.org +3 -4
@@ 47,7 47,7 @@ Moving on, there's Lisp. My familiarity with Lisp comes from customising my emac

With emacs in particular, it made it trivially easy for me to launch a Rails console inside a deployed Kubernetes pod.

#+begin_src commonlisp
#+begin_src elisp
  (defun inf-ruby-console-k8s (env)
    (interactive (list (completing-read "Environment: "
                                        '("dev" "staging" "preprod") nil t)))


@@ 65,6 65,5 @@ One thing I've noticed while writing this is that each language selected has lit

For as long as that remains true I think I'll always have new toys to play with.

◊footnotes{
  [fn:1]{◊<>["http://raytracerchallenge.com"]}
}

[fn:1] http://raytracerchallenge.com

M posts/on-sharing-vulnerability.org => posts/on-sharing-vulnerability.org +2 -4
@@ 26,7 26,5 @@ So, considering that we see ourselves becoming more distant as a result of the C


◊footnotes{
  [fn:1]{◊<>["https://uk.bookshop.org/a/6865/9780241257401"]}
  [fn:2]{◊<>["https://uk.bookshop.org/a/6865/9780091955038"]}
}
\ No newline at end of file
[fn:1] https://uk.bookshop.org/a/6865/9780241257401
[fn:2] https://uk.bookshop.org/a/6865/9780091955038

M posts/permanent-solutions-to-temporary-problems.org => posts/permanent-solutions-to-temporary-problems.org +3 -5
@@ 58,8 58,6 @@ I'm aware that these options are very specific to the UK and you might not have 

Take care of yourself.

◊footnotes{
  [fn:1]{◊<>["https://www.samaritans.org"]}
  [fn:2]{◊<>["https://giveusashout.org"]}
  [fn:3]{◊<>["https://www.papyrus-uk.org"]}
}
\ No newline at end of file
[fn:1] https://www.samaritans.org
[fn:2] https://giveusashout.org
[fn:3] https://www.papyrus-uk.org

M posts/rewrite-it-in-lisp.org => posts/rewrite-it-in-lisp.org +6 -7
@@ 85,10 85,9 @@ In the end, the only thing I traded-off was the post category in the URL itself.

Overall, I'm happy with the change. It doesn't take 45 minutes to re-compile my Hakyll build if I add new functionality, and I don't have to host my own Debian repo to install the compiled binary through ~apt~. Rendering the site and publishing it is still completed in a matter of seconds. And, now I've gone through the effort of deploying it for this site, I'm a lot more confident about using Pollen again for other projects.

◊footnotes{
  [fn:1]{◊<>["https://beautifulracket.com/"]}
  [fn:2]{◊<>["https://en.m.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_Hours"]}
  [fn:3]{◊<>["https://docs.racket-lang.org/pollen"]}
  [fn:4]{◊<>["https://git.sr.ht/~mrlee/www.kamelasa.dev/tree/main/item/pollen.rkt"]}
  [fn:5]{◊<>["https://git.sr.ht/~mrlee/www.kamelasa.dev/tree/main/item/redirs.caddy"]}
}
[fn:1] https://beautifulracket.com/
[fn:2] https://en.m.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_Hours
[fn:3] https://docs.racket-lang.org/pollen
[fn:4] https://git.sr.ht/~mrlee/www.kamelasa.dev/tree/main/item/pollen.rkt
[fn:5] https://git.sr.ht/~mrlee/www.kamelasa.dev/tree/main/item/redirs.caddy


M posts/ruby-sorcery-ractor-2.org => posts/ruby-sorcery-ractor-2.org +4 -4
@@ 211,8 211,8 @@ It's gonna take a little bit more work to turn this into a workable HTTP server,
The next chapter will focus on creating a valid response, something that ~curl~ will like. Keep in mind that the primarily goal is to get something that works, warts and all, and later on it will be revisited, having learned more.

◊footnotes{
  [fn:1]{◊<>["https://www.kamelasa.dev/posts/ruby-sorcery-ractor.html"]}
  [fn:2]{◊<>["https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Trailer"]}
  [fn:3]{◊<>["https://www.kamelasa.dev/posts/ruby-sorcery.html"]}
  [fn:4]{◊<>["https://ruby-doc.com/core-3.0.0/Enumerator.html"]}
  [fn:1] https://www.kamelasa.dev/posts/ruby-sorcery-ractor.html
  [fn:2] https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Trailer
  [fn:3] https://www.kamelasa.dev/posts/ruby-sorcery.html
  [fn:4] https://ruby-doc.com/core-3.0.0/Enumerator.html
}
\ No newline at end of file

M posts/ruby-sorcery-ractor-3.org => posts/ruby-sorcery-ractor-3.org +2 -2
@@ 97,6 97,6 @@ Of course, this will be done in another Ractor, but we'll also address the probl


◊footnotes{
  [fn:1]{◊<>["https://www.kamelasa.dev/posts/ruby-sorcery-ractor-2.html"]}
  [fn:2]{◊<>["https://github.com/rack/rack"]}
  [fn:1] https://www.kamelasa.dev/posts/ruby-sorcery-ractor-2.html
  [fn:2] https://github.com/rack/rack
}
\ No newline at end of file

M posts/ruby-sorcery-ractor.org => posts/ruby-sorcery-ractor.org +10 -10
@@ 113,15 113,15 @@ Try it for yourself by running that code in an IRB console, and then open up ~te
The problem with this code is that it's too simple: it shows how one Ractor can spawn other ractors, but it's not taking advantage of the communication channels they have and how objects are shared between Ractors. Keep an eye out for the next part of Ruby Sorcery, where there'll be a much deeper dive into Ractor's capabilities.

◊footnotes{
  [fn:1]{◊<>["https://www.kamelasa.dev/posts/ruby-sorcery.html"]}
  [fn:2]{◊<>["https://ruby-doc.org/core-3.0.2/Thread.html"]}
  [fn:3]{◊<>["https://ruby-doc.org/core-3.0.2/Fiber.html"]}
  [fn:4]{◊<>["https://www.erlang.org"]}
  [fn:5]{◊<>["https://elixir-lang.org"]}
  [fn:6]{◊<>["https://www.ponylang.io"]}
  [fn:7]{◊<>["https://kubernetes.io"]}
  [fn:8]{◊<>["https://kafka.apache.org"]}
  [fn:9]{◊<>["https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers"]}
  [fn:1] https://www.kamelasa.dev/posts/ruby-sorcery.html
  [fn:2] https://ruby-doc.org/core-3.0.2/Thread.html
  [fn:3] https://ruby-doc.org/core-3.0.2/Fiber.html
  [fn:4] https://www.erlang.org
  [fn:5] https://elixir-lang.org
  [fn:6] https://www.ponylang.io
  [fn:7] https://kubernetes.io
  [fn:8] https://kafka.apache.org
  [fn:9] https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers
  [fn:10]{Let the buyer beware.}
  [fn:11]{◊<>["https://docs.ruby-lang.org/en/master/doc/ractor_md.html"]}
  [fn:11] https://docs.ruby-lang.org/en/master/doc/ractor_md.html
}
\ No newline at end of file

M posts/ruby-sorcery.org => posts/ruby-sorcery.org +2 -3
@@ 205,6 205,5 @@ Well, this doesn't cover the entirety of Ruby's pattern matching fun, but it sho

Check in soon to see another deep-dive into Ruby Sorcery.

◊footnotes{
  [fn:1]{◊<>["https://docs.ruby-lang.org/en/3.0.0/doc/syntax/pattern_matching_rdoc.html"]}
}

[fn:1] https://docs.ruby-lang.org/en/3.0.0/doc/syntax/pattern_matching_rdoc.html

M posts/the-bookshelf.org => posts/the-bookshelf.org +5 -6
@@ 49,9 49,8 @@ It's the kind of book I'm happy to lend to someone without an expectation of the

Beyond these, I have both Dune and Systemic Coaching & Constellations on the backburner. I'm looking forward to getting stuck into both.

◊footnotes{
  [fn:1]{◊<>["https://uk.bookshop.org/a/6865/9781942788294"]}
  [fn:2]{◊<>["https://uk.bookshop.org/a/6865/9781250183866"]}
  [fn:3]{◊<>["https://uk.bookshop.org/a/6865/9780575086258"]}
  [fn:4]{◊<>["https://uk.bookshop.org/a/6865/9780071771320"]}
}
\ No newline at end of file

[fn:1] https://uk.bookshop.org/a/6865/9781942788294
[fn:2] https://uk.bookshop.org/a/6865/9781250183866
[fn:3] https://uk.bookshop.org/a/6865/9780575086258
[fn:4] https://uk.bookshop.org/a/6865/9780071771320

M posts/the-goose-is-out.org => posts/the-goose-is-out.org +8 -8
@@ 46,11 46,11 @@ I've more or less closed the book on that chapter of my life, but that's not to 

So, would I recommend this kind of thing to anyone? Honestly, no. It's not the kind of thing you casually recommend. Someone who wants to go on this journey will find the way that works for them, but that doesn't make it a decision to be taken lightly.

◊footnotes{
  [fn:1]{◊<>["https://news.ycombinator.com/item?id=27890790"]}
  [fn:2]{◊<>["https://danlawton.substack.com/p/when-buddhism-goes-bad"]}
  [fn:3]{◊<>["https://oshostories.wordpress.com/2012/05/17/goose-is-out/"]}
  [fn:4]{◊<>["https://en.wikipedia.org/wiki/Breathwork"]}
  [fn:5]{◊<>["https://en.wikipedia.org/wiki/Somatic_experiencing"]}
  [fn:6]{◊<>["https://en.wikipedia.org/wiki/Tantra"]}
}

[fn:1] https://news.ycombinator.com/item?id=27890790
[fn:2] https://danlawton.substack.com/p/when-buddhism-goes-bad
[fn:3] https://oshostories.wordpress.com/2012/05/17/goose-is-out/
[fn:4] https://en.wikipedia.org/wiki/Breathwork
[fn:5] https://en.wikipedia.org/wiki/Somatic_experiencing
[fn:6] https://en.wikipedia.org/wiki/Tantra


M posts/things-ive-changed-my-mind-on.org => posts/things-ive-changed-my-mind-on.org +2 -4
@@ 68,7 68,5 @@ Rejection isn't always so easy to handle, but there's always another time and a 

It feels a bit weird to write out a series of arbitrary maxims the way I just have, so I'll aim to explore each one in more depth throughout this year. With that said, it was an interesting exercise if ultimately a rather shallow one. Watch this space for more details.

◊footnotes{
  [fn:1]{◊<>["https://chriskiehl.com/article/thoughts-after-6-years"]}
  [fn:2]{◊<>["https://mcfunley.com/choose-boring-technology"]}
}
\ No newline at end of file
[fn:1] https://chriskiehl.com/article/thoughts-after-6-years
[fn:2] https://mcfunley.com/choose-boring-technology

M posts/to-simpler-times.org => posts/to-simpler-times.org +11 -11
@@ 77,14 77,14 @@ It took me just about a day to figure out how to host my own ~apt~ repository fo

On another note, this site now also left GitHub for Sourcehut[fn:8] and, at risk of being a bit narcissistic, a comments section lives on a mailing list there[fn:9]. Should you feel that the stuff I post is worth talking about, of course. You don't need a Sourcehut account to get involved, although you'll need to join the list (without signing up for Sourcehut) if you want more than read-only access.

◊footnotes{
  [fn:1]{◊<>["https://www.kamelasa.dev/programming/blogging-in-haskell"]}
  [fn:2]{◊<>["https://www.kamelasa.dev/programming/hakyll-on-devops-pipelines"]}
  [fn:3]{◊<>["https://plausible.io/kamelasa.dev"]}
  [fn:4]{◊<>["https://caddyserver.com/v2"]}
  [fn:5]{◊<>["I should probably sort out proper HTTP caching though..."]}
  [fn:6]{◊<>["https://pkg.kamelasa.dev"]}
  [fn:7]{◊<>["https://manpages.debian.org/buster/apt-utils/apt-ftparchive.1.en.html"]}
  [fn:8]{◊<>["https://sourcehut.org"]}
  [fn:9]{◊<>["https://lists.sr.ht/~mrlee/kamelasa.dev-discuss"]}
}

[fn:1] https://www.kamelasa.dev/programming/blogging-in-haskell
[fn:2] https://www.kamelasa.dev/programming/hakyll-on-devops-pipelines
[fn:3] https://plausible.io/kamelasa.dev
[fn:4] https://caddyserver.com/v2
[fn:5] I should probably sort out proper HTTP caching though...
[fn:6] https://pkg.kamelasa.dev
[fn:7] https://manpages.debian.org/buster/apt-utils/apt-ftparchive.1.en.html
[fn:8] https://sourcehut.org
[fn:9] https://lists.sr.ht/~mrlee/kamelasa.dev-discuss


M posts/using-ruby-c-in-ruby.org => posts/using-ruby-c-in-ruby.org +4 -5
@@ 89,8 89,7 @@ How would you fix it? Well, now we've found out that we ~can~ write Ruby with it

Until then, I'll see you further into the abyss.

◊footnotes{
  [fn:1]{◊<>["https://github.com/ffi/ffi"]}
  [fn:2]{~gem install ffi -- --enable-system-libffi~}
  [fn:3]{◊<>["https://ruby-doc.org/core-2.7.0/doc/extension_rdoc.html"]}
}
[fn:1] https://github.com/ffi/ffi
[fn:2] ~gem install ffi -- --enable-system-libffi~
[fn:3] https://ruby-doc.org/core-2.7.0/doc/extension_rdoc.html