diff --git a/.gitignore b/.gitignore index c4bb138..3c6f3a7 100644 --- a/.gitignore +++ b/.gitignore @@ -189,3 +189,5 @@ Icon Network Trash Folder Temporary Items .apdisk + +/.quarto/ diff --git a/.prettierrc b/.prettierrc index 672b6f3..7a778c9 100644 --- a/.prettierrc +++ b/.prettierrc @@ -7,3 +7,6 @@ overrides: - files: "*.gotmpl" options: parser: "go-template" + - files: "*.qmd" + options: + parser: "markdown" diff --git a/.zed/settings.json b/.zed/settings.json index eb5924a..73f67e7 100644 --- a/.zed/settings.json +++ b/.zed/settings.json @@ -9,5 +9,5 @@ } } }, - "file_types": { "HTML": ["gotmpl"] } + "file_types": { "HTML": ["gotmpl"], "Markdown": ["qmd"] } } diff --git a/_quarto.yml b/_quarto.yml new file mode 100644 index 0000000..79b8d68 --- /dev/null +++ b/_quarto.yml @@ -0,0 +1,13 @@ +project: + type: hugo + preview: + serve: + cmd: "hugo server --port {port} --bind 0.0.0.0 --navigateToChanged" + ready: "Web Server is available at" + +format: + hugo-md: + code-fold: true + +execute: + warning: false diff --git a/assets/styles/millironx.css b/assets/styles/millironx.css index 00ad31e..6db0114 100644 --- a/assets/styles/millironx.css +++ b/assets/styles/millironx.css @@ -289,6 +289,15 @@ article > p { line-height: 1.5em; } +h2#references ~ p { + font-size: 1rem; + text-justify: unset; + text-align: left; + hyphens: none; + line-height: 1rem; + text-indent: 2ch hanging; +} + article h1 + p, article h2 + p, article h3 + p, @@ -337,6 +346,10 @@ figure:has(blockquote) > figcaption { font-size: 80%; } +figure > img { + max-width: 100%; +} + footer { display: flex; flex-direction: column; diff --git a/config.toml b/config.toml index 8a730b3..50bda13 100644 --- a/config.toml +++ b/config.toml @@ -1,6 +1,7 @@ baseURL = "https://millironx.com" languageCode = "en-us" title = "Milliron X" +ignoreFiles = ["\\.qmd$", "\\.ipynb$", "\\.py$"] [pagination] pagerSize = 5 @@ -51,6 +52,9 @@ notAlternative = "true" [markup.goldmark.parser.attribute] block = true +[markup.goldmark.renderer] +unsafe = true + [markup.goldmark.renderHooks] [markup.goldmark.renderHooks.link] diff --git a/content/posts/gave-up-github/.gitignore b/content/posts/gave-up-github/.gitignore new file mode 100644 index 0000000..fc0ab8a --- /dev/null +++ b/content/posts/gave-up-github/.gitignore @@ -0,0 +1 @@ +index.md diff --git a/content/posts/gave-up-github/ballmergatesaustinpowers.jpg b/content/posts/gave-up-github/ballmergatesaustinpowers.jpg new file mode 100644 index 0000000..76d2a39 Binary files /dev/null and b/content/posts/gave-up-github/ballmergatesaustinpowers.jpg differ diff --git a/content/posts/gave-up-github/index.qmd b/content/posts/gave-up-github/index.qmd new file mode 100644 index 0000000..f5e21f2 --- /dev/null +++ b/content/posts/gave-up-github/index.qmd @@ -0,0 +1,88 @@ +--- +title: I gave up Github (and more) +subtitle: Starting on a self-hosted blog +date: 2025-11-01 +tags: + - blog +featured: true +categories: + - blog +--- + +If you are reading this post, then I have migrated most of my online services +over to a VPS to the point where I feel confident enough to host a blog on them. +Yay for me! It has been my goal for nearly six years now to be able to have an +_interesting_ corner of the internet, filled with interconnected links that try +to tell the story of what I've done, who I've done it with, and where to find +it, and this is the result. + +I wanted to take the first post and indulge myself in explaining my motivation +for going self-hosted, show off my tech stack just a little bit, and lay out +some ground rules for myself for the posts ahead. + +## My motivation + +Microsoft is evil. There you have it. End of story. Thank you for coming to my +TED Talk. + +![The dynamic duo of Microsoft roleplaying as supervillains](./ballmergatesaustinpowers.jpg) + +Okay, but in all seriousness, the changes after Github was acquired by Microsoft +were annoying, and showed that Microsoft was prioritizing the wrong things, and +going back to their old ways of +[embrace, extend, exterminate](https://en.wikipedia.org/wiki/Embrace,_extend,_and_extinguish). + +1. [A page redesign for phones](https://github.com/Kira-NT/GitHub-Defreshed) +2. An "Achievements" system that gamified risky behavior +3. An integrated CI/CD pipeline system that is + [terribly designed](https://youtu.be/9qljpi5jiMQ) and + [way too easy to use insecurely](https://docs.zizmor.sh/)[^*] +4. Finally, ahem, ARTIFICIAL INTELLIGENCE, with illegal scraping of repos and + reproduction of code without proper license compliance + +I got into programming using Visual Basic .NET, writing automatic Punnet square +solvers and gestation calculators with Windows Forms, and designing websites +using ASP.NET MVC with Razor pages. Programming with Visual Basic was fun! At +least it was until Microsoft put +[someone who'd rather talk about her hip replacement than Visual Basic](https://www.dotnetrocks.com/details/1691) +in charge of development. When I started to see the same attitudes creeping +into Github, Github Actions, and Visual Studio Code, I made the decision to +move. + +The fact is, if you are the kind of person who I expect to be reading this blog, +then you probably know more of the drama around Github than I do. That, or +you're the kind of person who is not affected by Github whatsoever. Either way, +I'll leave you with a collection of links I've found to be varying levels of +insightful on the whole subject, and leave it at that. + +### Microsoft's behavior + +- [Microsoft, there is a way to win our trust](https://davelane.nz/microsoft-there-way-win-our-trust) +- [Can we trust Microsoft with open source?](https://dusted.codes/can-we-trust-microsoft-with-open-source) +- [Visual Studio Code is designed to fracture](https://ghuntley.com/fracture/) + +### Github-specific complaints + +- [Give Up Github Campaign - Software Freedom Conservancy](https://sfconservancy.org/GiveUpGitHub/) +- [Why not Github?](https://sanctum.geek.nz/why-not-github.html) +- [We need to talk about your Github addiction](https://ploum.net/2023-02-22-leaving-github.html) +- [Why I won't use Github for any new projects](https://raccoon.onyxbits.de/blog/why-not-use-github/) + +### Github Actions + +- [Github Actions feels bad](https://youtu.be/9qljpi5jiMQ) +- [The pain that is Github Actions](https://www.feldera.com/blog/the-pain-that-is-github-actions) +- [Github Actions could be so much better](https://blog.yossarian.net/2023/09/22/GitHub-Actions-could-be-so-much-better)z +- [Github Actions are a problem](https://felix-knorr.net/posts/2023-11-11-github-actions.html) + +### The problem in general + +- [Free software hasn't won](https://dorotac.eu/posts/fosswon/) + +[^*]: + Lumping Github Actions here might seem strange, but for context, I wrote and + maintained the + [nf-core/setup-nextflow](https://github.com/nf-core/setup-nextflow) Github + Action. Trying to make something coherent out of the Github Actions + ecosystem was harrowing, and convinced me more than anything else that + Github is just part of the embrace, extend, exterminate strategy. diff --git a/flake.lock b/flake.lock index 0a20125..594570b 100644 --- a/flake.lock +++ b/flake.lock @@ -20,16 +20,16 @@ }, "nixpkgs": { "locked": { - "lastModified": 1737597992, - "narHash": "sha256-FECKBxkd+w5I/fhsquthDiw/r/MdCpqmKikBU9yQGug=", + "lastModified": 1762756533, + "narHash": "sha256-HiRDeUOD1VLklHeOmaKDzf+8Hb7vSWPVFcWwaTrpm+U=", "owner": "nixos", "repo": "nixpkgs", - "rev": "d0bb4699177f691c8e558b32b3bdc38bc112f76f", + "rev": "c2448301fb856e351aab33e64c33a3fc8bcf637d", "type": "github" }, "original": { "owner": "nixos", - "ref": "nixos-unstable-small", + "ref": "nixos-25.05", "repo": "nixpkgs", "type": "github" } diff --git a/flake.nix b/flake.nix index 79685b8..0d20c3f 100644 --- a/flake.nix +++ b/flake.nix @@ -1,13 +1,13 @@ { inputs = { - nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable-small"; + nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05"; flake-utils.url = "github:numtide/flake-utils"; }; outputs = { self, nixpkgs, flake-utils }: flake-utils.lib.eachDefaultSystem (system: let pkgs = import nixpkgs { inherit system; }; - buildInputs = with pkgs; [ hugo nodejs ]; + buildInputs = with pkgs; [ hugo nodejs quarto julia-bin ]; in with pkgs; { devShells.default = mkShell { inherit buildInputs; }; packages.default = stdenvNoCC.mkDerivation {