From 5e3b4b6c21d33b28e60ce976479339f72d544a6c Mon Sep 17 00:00:00 2001 From: Sebastiano Tronto Date: Sun, 30 Aug 2026 18:35:23 +0200 Subject: Switch from stagit to cgit --- src/blog/2022-06-12-shell-ide-sed/shell-ide-sed.md | 2 +- src/blog/2022-08-14-website/website.md | 6 +- src/blog/2022-11-23-git-host/git-host.md | 18 ++++-- src/blog/2022-12-30-blog-ready/blog-ready.md | 5 +- src/blog/2023-07-11-feed/feed.md | 2 +- .../taming-cpp-motivation.md | 12 ++-- src/blog/2024-12-03-2fa/2fa.md | 4 +- .../2024-12-26-taming-cpp-raii/taming-cpp-raii.md | 6 +- .../taming-cpp-templates.md | 24 ++++---- .../2025-02-27-elliptic-curves-javascript/ecm.md | 6 +- src/blog/2025-06-06-webdev/webdev.md | 18 +++--- .../2025-06-26-borrow-checker/borrow-checker.md | 5 +- src/blog/2025-11-29-aoc-download/aoc-download.md | 2 +- .../20-years-of-programming.md | 5 +- src/blog/2026-08-15-dotfiles/dotfiles.md | 2 +- src/git/git.md | 64 ---------------------- src/speedcubing/coordinates/coordinates.md | 12 ++-- 17 files changed, 65 insertions(+), 128 deletions(-) delete mode 100644 src/git/git.md (limited to 'src') diff --git a/src/blog/2022-06-12-shell-ide-sed/shell-ide-sed.md b/src/blog/2022-06-12-shell-ide-sed/shell-ide-sed.md index 410d2ce..bcb97d0 100644 --- a/src/blog/2022-06-12-shell-ide-sed/shell-ide-sed.md +++ b/src/blog/2022-06-12-shell-ide-sed/shell-ide-sed.md @@ -117,7 +117,7 @@ $ cth do_ src/* ``` And it works! You can now find -[this script](https://git.tronto.net/scripts/file/cth%2Ehtml) +[this script](https://git.tronto.net/scripts/tree/cth) among my other [scripts](https://git.tronto.net/scripts). *Remark: in bash one can simply do `sed -n "/^$1/,/^}/ p" ${@:2}` to match diff --git a/src/blog/2022-08-14-website/website.md b/src/blog/2022-08-14-website/website.md index 8019c60..f76c5f2 100644 --- a/src/blog/2022-08-14-website/website.md +++ b/src/blog/2022-08-14-website/website.md @@ -23,7 +23,7 @@ files, writing a script that adds a header and a footer to the output of [lowdown](https://kristaps.bsd.lv/lowdown/), and using [rsync](https://en.wikipedia.org/wiki/Rsync) to deploy the files to my server. All of this is available on -[my git page](https://git.tronto.net/sebastiano.tronto.net/), but I won't +[my git page](https://git.tronto.net/sebastiano.tronto.net), but I won't explain every detail of these build scripts here. In particular, my script also builds a [gemini](https://sebastiano.tronto.net/blog/2022-06-04-gemini/) version of my website, which I won't discuss here. @@ -88,9 +88,9 @@ Without this trick the correct URL would have been `sebastiano.tronto.net/git.html` or something, which I don't like. The main working directory also contains the -[`top.html`](https://git.tronto.net/sebastiano.tronto.net/file/top%2Ehtml%2Ehtml) +[`top.html`](https://git.tronto.net/sebastiano.tronto.net/tree/top.html) and -[`bottom.html`](https://git.tronto.net/sebastiano.tronto.net/file/bottom%2Ehtml%2Ehtml) +[`bottom.html`](https://git.tronto.net/sebastiano.tronto.net/tree/bottom.html) files. These files are not uploaded directly to my server - they are not even well-formed html files! - but they are used to build all other html pages. diff --git a/src/blog/2022-11-23-git-host/git-host.md b/src/blog/2022-11-23-git-host/git-host.md index cc9fc27..9976b91 100644 --- a/src/blog/2022-11-23-git-host/git-host.md +++ b/src/blog/2022-11-23-git-host/git-host.md @@ -1,5 +1,11 @@ # Self-hosted git pages with stagit (featuring ed, the standard editor) +**Update 2026-08-30: Since August 2026, I am no longer using stagit to +host my git pages. Instead, I use [cgit](https://git.zx2c4.com/cgit/about). +I have updated all the links in this page to point to a frozen copy of +my stagit-based git page before the switch. If you want to visit my new +git page, go to [git.tronto.net](https://git.tronto.net)** + This is a follow-up to my earlier blog entry [How I update my website](../2022-08-14-website). @@ -14,9 +20,9 @@ via web pages, on your personal server? In this post I am going to show you how I do it, in the usual minimalist and not-using-what-I-do-not-understand style. -You can see the final result on my [git pages](https://git.tronto.net). +You can see the final result on my [git pages](https://stagit.tronto.net). The scripts and other files I use to set this up are accessible -[here](https://git.tronto.net/git-hooks). +[here](https://stagit.tronto.net/git-hooks). ## Hosting git repositories on your own server @@ -54,7 +60,7 @@ a bunch of html files that you can simply move to your www hosting directory. After generating the pages you can personalize them by copying your logo, [favicon](https://en.wikipedia.org/wiki/Favicon) or CSS style sheet. You can use `stagit-index` to generate -[an index page for your repositories](https://git.tronto.net/). Since everything +[an index page for your repositories](https://stagit.tronto.net/). Since everything consists of html files, you can simply edit them to personalize your git pages even further - and below you'll see some examples. @@ -155,8 +161,8 @@ add or change: * I would like to have a download button so that people who don't use git can still download my files. This makes sense especially for those repos that are mostly documents, such as my - [lecture notes](https://git.tronto.net/mathsoftware) or my - [FMC tutorial](https://git.tronto.net/fmctutorial). + [lecture notes](https://stagit.tronto.net/mathsoftware) or my + [FMC tutorial](https://stagit.tronto.net/fmctutorial). * I would like to convert README.md files to html. If I were calling stagit by hand after each `git push`, I @@ -280,7 +286,7 @@ stagit-index /home/git/*.git | sed 's|/log\.html||g' > "$basedir/index.html" And that's it. Well, I also copy the style files and add a bottom bar, and change the title from a `` to an `

` element, again using `ed`. If you want to see the details you can check them out -[here](https://git.tronto.net/git-hooks/file/post-receive-stagit.html). +[here](https://stagit.tronto.net/git-hooks/file/post-receive-stagit.html). ## Conclusions diff --git a/src/blog/2022-12-30-blog-ready/blog-ready.md b/src/blog/2022-12-30-blog-ready/blog-ready.md index 144e5e2..a6f0ff0 100644 --- a/src/blog/2022-12-30-blog-ready/blog-ready.md +++ b/src/blog/2022-12-30-blog-ready/blog-ready.md @@ -13,10 +13,9 @@ messy at some point! It would be nice to divide these posts by year... ## Adding year sections to my blog index Very easy: in my -[build.sh](https://git.tronto.net/sebastiano.tronto.net/file/build.sh.html) +[build.sh](https://git.tronto.net/sebastiano.tronto.net/tree/build.sh) script that I run to -[build my website](../2022-08-14-website), there is a -[`makeblog()`](https://git.tronto.net/sebastiano.tronto.net/file/build.sh.html#l52) +[build my website](../2022-08-14-website), there is a `makeblog()` function that takes care of building the index page and RSS feed for my blog. It is enough to add the following lines inside its main loop: diff --git a/src/blog/2023-07-11-feed/feed.md b/src/blog/2023-07-11-feed/feed.md index feb5cd6..9c56bcb 100644 --- a/src/blog/2023-07-11-feed/feed.md +++ b/src/blog/2023-07-11-feed/feed.md @@ -62,7 +62,7 @@ reader UI. In the first version I made, my feeds were separated in folders, one per file, and one could select multiple feeds or even entire folders via dmenu using -[dmenu-filepicker](https://git.tronto.net/scripts/file/dmenu-filepicker.html) +[dmenu-filepicker](https://git.tronto.net/scripts/tree/dmenu-filepicker) for file selection. Once the session was terminated, all shown feeds were marked as "read" by writing the timestamp of the last read item on a cache diff --git a/src/blog/2024-04-30-taming-cpp-motivation/taming-cpp-motivation.md b/src/blog/2024-04-30-taming-cpp-motivation/taming-cpp-motivation.md index 3181eb0..532a0dd 100644 --- a/src/blog/2024-04-30-taming-cpp-motivation/taming-cpp-motivation.md +++ b/src/blog/2024-04-30-taming-cpp-motivation/taming-cpp-motivation.md @@ -40,7 +40,7 @@ You can find the code I wrote in To sort a list of a hundred million integers, in C we can use `qsort()` from `stdlib.h` (see -[sort.c](https://git.tronto.net/taming-cpp/file/sort-benchmark/integers/sort.c.html)): +[sort.c](https://git.tronto.net/taming-cpp/tree/sort-benchmark/integers/sort.c)): ``` qsort(a, ARRAYSIZE, sizeof(int), compar); @@ -55,7 +55,7 @@ int compar(const void *x, const void *y) { ``` In C++ we can use `sort()` from `algorithm` (see -[sort.cpp](https://git.tronto.net/taming-cpp/file/sort-benchmark/integers/sort.cpp.html)): +[sort.cpp](https://git.tronto.net/taming-cpp/tree/sort-benchmark/integers/sort.cpp)): ``` std::sort(a, a+ARRAYSIZE, @@ -69,7 +69,7 @@ instead of a comparison function. Modern C++ also offers parallelized version of common algorithms as part of the standard library, so if we want to completely humiliate poor C we can use this (see -[sort_parallel.cpp](https://git.tronto.net/taming-cpp/file/sort-benchmark/integers/sort_parallel.cpp.html)): +[sort_parallel.cpp](https://git.tronto.net/taming-cpp/tree/sort-benchmark/integers/sort_parallel.cpp)): ``` std::sort(std::execution::par, a, a+ARRAYSIZE, @@ -94,9 +94,9 @@ Even without parallelization, C++ is twice as fast as C! You might think that C++ is somehow optimizing for integer sorting. But this is not the case, as demonstrated by a similar experiment with *pairs* of integers (see -[sort.c](https://git.tronto.net/taming-cpp/file/sort-benchmark/pairs/sort.c.html), -[sort.cpp](https://git.tronto.net/taming-cpp/file/sort-benchmark/pairs/sort.cpp.html) and -[sort_parallel.cpp](https://git.tronto.net/taming-cpp/file/sort-benchmark/pairs/sort_parallel.cpp.html) +[sort.c](https://git.tronto.net/taming-cpp/tree/sort-benchmark/pairs/sort.c), +[sort.cpp](https://git.tronto.net/taming-cpp/tree/sort-benchmark/pairs/sort.cpp) and +[sort_parallel.cpp](https://git.tronto.net/taming-cpp/tree/sort-benchmark/pairs/sort_parallel.cpp) - I used a non-standard mixed lexicographic order to be reasonably sure the compiler does not come up with any ad-hoc optimization): diff --git a/src/blog/2024-12-03-2fa/2fa.md b/src/blog/2024-12-03-2fa/2fa.md index 66f3661..3a84682 100644 --- a/src/blog/2024-12-03-2fa/2fa.md +++ b/src/blog/2024-12-03-2fa/2fa.md @@ -64,9 +64,9 @@ $ athtool -b --totp "SECRET_KEY" And that's it. However, you should not write you secret key in plain text like this: instead you should keep it encrypted and decrypt it just when you need it to generate a code. I do this by using my simple -[2fa](https://git.tronto.net/scripts/file/2fa.html) +[2fa](https://git.tronto.net/scripts/tree/2fa) script, which is based on my -[secret](https://git.tronto.net/scripts/file/secret.html) +[secret](https://git.tronto.net/scripts/tree/secret) tool that encrypts and decrypts stuff using openssl and a master password - which is obviously [correcthorsebatterystaple](https://xkcd.com/936/). diff --git a/src/blog/2024-12-26-taming-cpp-raii/taming-cpp-raii.md b/src/blog/2024-12-26-taming-cpp-raii/taming-cpp-raii.md index 6450521..a7c1bae 100644 --- a/src/blog/2024-12-26-taming-cpp-raii/taming-cpp-raii.md +++ b/src/blog/2024-12-26-taming-cpp-raii/taming-cpp-raii.md @@ -61,7 +61,7 @@ But there is a more interesting way to make this program fail by only changing the definition of `BadType`. In fact, you can make this program do pretty much everything you want by changing `BadType`'s *constructor* to suit your needs (see -[surprising-error.cpp](https://git.tronto.net/taming-cpp/file/raii/surprising-error.cpp.html)): +[surprising-error.cpp](https://git.tronto.net/taming-cpp/tree/raii/surprising-error.cpp)): ``` class BadType { @@ -83,7 +83,7 @@ And it does not stop here either: whenever a variable of a class type goes out of scope, the corresponding [destructor](https://en.cppreference.com/w/cpp/language/destructor) is called - see -[constructor-hello-world.cpp](https://git.tronto.net/taming-cpp/file/raii/constructor-hello-world.cpp.html): +[constructor-hello-world.cpp](https://git.tronto.net/taming-cpp/tree/raii/constructor-hello-world.cpp): ``` #include @@ -254,7 +254,7 @@ from a function is a classic example, but they also come up when using [smart pointers](https://en.cppreference.com/book/intro/smart_pointers). I made a -[comprehensive example](https://git.tronto.net/taming-cpp/file/raii/all-constructors.cpp.html) +[comprehensive example](https://git.tronto.net/taming-cpp/tree/raii/all-constructors.cpp) of how all of these operations work, so you can see when exactly each of them is called. Do check it out if you are interested! diff --git a/src/blog/2025-01-21-taming-cpp-templates/taming-cpp-templates.md b/src/blog/2025-01-21-taming-cpp-templates/taming-cpp-templates.md index bce440f..903a1ff 100644 --- a/src/blog/2025-01-21-taming-cpp-templates/taming-cpp-templates.md +++ b/src/blog/2025-01-21-taming-cpp-templates/taming-cpp-templates.md @@ -44,7 +44,7 @@ You can find the code examples for this post in the [companion repository for this series](https://git.tronto.net/taming-cpp), and if you want you can also have a look at the final version of my tiny library -[on my git page](https://git.tronto.net/zmodn/file/README.md.html). For +[on my git page](https://git.tronto.net/zmodn). For this post I am going to use Clang as a compiler, because I find its error messages more readable most of the times. @@ -69,7 +69,7 @@ cannot, for example, assign an `std::vector` object to an As an example, let's take a simple standard library class such as [`std::pair`](https://en.cppreference.com/w/cpp/utility/pair). It could be implemented as follows (see -[pair.cpp](https://git.tronto.net/taming-cpp/file/templates/pair.cpp.html)): +[pair.cpp](https://git.tronto.net/taming-cpp/tree/templates/pair.cpp)): ``` template @@ -151,7 +151,7 @@ which in case you don't know are just a simplified syntax for pointers.) Let's take this simple example to show an important property of templates. Let's say that, perhaps by mistake, we implemented the swap function using different template types for `a` and `b` (see -[swap.cpp](https://git.tronto.net/taming-cpp/file/templates/swap.cpp.html)): +[swap.cpp](https://git.tronto.net/taming-cpp/tree/templates/swap.cpp)): ``` template @@ -204,7 +204,7 @@ to make these error messages more meaningful - we'll see some examples below. Objects, not just types, can be template parameters. A classic example is [`std::array`](https://en.cppreference.com/w/cpp/container/array), a fixed-size container where the capacity is fixed at compile time (see -[std_array.cpp](https://git.tronto.net/taming-cpp/file/templates/std_array.cpp.html) +[std_array.cpp](https://git.tronto.net/taming-cpp/tree/templates/std_array.cpp) for an example). Non-type parameters can be constants of any *structural type* - see @@ -213,13 +213,13 @@ for a precise definition. Remember that you can only specialize them with compile-time (i.e. `constexpr`) constants! With non-type parameter you can do pretty wild stuff, see for example -[factorial.cpp](https://git.tronto.net/taming-cpp/file/templates/factorial.cpp.html) +[factorial.cpp](https://git.tronto.net/taming-cpp/tree/templates/factorial.cpp) - although this specific example is not very useful, since it can easily be replaced by a constexpr function. Fun fact: if you use `auto`, you don't even have to specify a type for a non-type parameter. For example, the following code works just fine (see -[println.cpp](https://git.tronto.net/taming-cpp/file/templates/println.cpp.html)): +[println.cpp](https://git.tronto.net/taming-cpp/tree/templates/println.cpp)): ``` #include @@ -278,7 +278,7 @@ template for where `N` is a fixed at compile-time. We may start with something like this (see -[zmodn-1.cpp](https://git.tronto.net/taming-cpp/file/templates/zmodn-1.cpp.html)): +[zmodn-1.cpp](https://git.tronto.net/taming-cpp/tree/templates/zmodn-1.cpp)): ``` #include @@ -355,7 +355,7 @@ are a way to prevent nasty run-time errors and / or make compiler errors more meaningful when using templates; they were added in C++20. In our case, introducing our constraint is quite simple (see -[zmodn-2.cpp](https://git.tronto.net/taming-cpp/file/templates/zmodn-2.cpp.html)): +[zmodn-2.cpp](https://git.tronto.net/taming-cpp/tree/templates/zmodn-2.cpp)): ``` template @@ -392,7 +392,7 @@ type of N. In order to do so, I can use a non-type parameter declared `auto` and [`decltype()`](https://en.cppreference.com/w/cpp/language/decltype) (see -[zmodn-3.cpp](https://git.tronto.net/taming-cpp/file/templates/zmodn-3.cpp.html)): +[zmodn-3.cpp](https://git.tronto.net/taming-cpp/tree/templates/zmodn-3.cpp)): ``` template @@ -409,7 +409,7 @@ public: And of course I should also templatize the `extended_gcd()` function - you can see the full code in -[zmodn-3.cpp](https://git.tronto.net/taming-cpp/file/templates/zmodn-3.cpp.html). +[zmodn-3.cpp](https://git.tronto.net/taming-cpp/tree/templates/zmodn-3.cpp). Now we can use any type as a "base" for our modular integer! Well, almost. I mentioned above that the type we use must be *structural*, but that is @@ -417,7 +417,7 @@ relatively easy to satisfy. A bigger problem is that our type must allow for compile-time constants - so we need, at least, a `constexpr` constructor. I could not find a suitable library online, so I ended up writing my own - see -[bigint.h](https://git.tronto.net/taming-cpp/file/templates/bigint.h.html). +[bigint.h](https://git.tronto.net/taming-cpp/tree/templates/bigint.h). The code is simple and not very efficient, but this library is not meant to be efficient. I am just using it for educational purposes. @@ -477,7 +477,7 @@ Along with constraints, C++20 also introduced the possibility to define and name a custom set of requirements. This can be done with *concepts*. In our example, we can require that our type supports all the operations we need (see -[zmodn-4.cpp](https://git.tronto.net/taming-cpp/file/templates/zmodn-4.cpp.html)): +[zmodn-4.cpp](https://git.tronto.net/taming-cpp/tree/templates/zmodn-4.cpp)): ``` template diff --git a/src/blog/2025-02-27-elliptic-curves-javascript/ecm.md b/src/blog/2025-02-27-elliptic-curves-javascript/ecm.md index 56b876c..27e5021 100644 --- a/src/blog/2025-02-27-elliptic-curves-javascript/ecm.md +++ b/src/blog/2025-02-27-elliptic-curves-javascript/ecm.md @@ -40,7 +40,7 @@ Recently I have been learning C++, and I wanted to experiment with some of its more advanced features. So I decided to rewrite the whole thing. I had a clear idea of where I wanted to start: a small -[library for modular arithmetic](https://git.tronto.net/zmodn/file/README.md.html), +[library for modular arithmetic](https://git.tronto.net/zmodn), with compile-time fixed [modulus](https://en.wikipedia.org/wiki/Modular_arithmetic) via templates and heavy use of @@ -57,7 +57,7 @@ algorithm with very large numbers. Unfortunately, I did not take into account that with my setup I needed a big integer class that supported *compile-time constants* - for example in the form of `constexpr` constructors. I could not find any, so I decided to write -[my own big integer class](https://git.tronto.net/zmodn/file/bigint.h.html). +[my own big integer class](https://git.tronto.net/zmodn/tree/bigint.h). This was less successful: implementing an *efficient* big integer library was not as straightforward as the modular integers library. I decided not to care about efficiency for the time being, but that would come @@ -258,7 +258,7 @@ pieces of text and pictures in the slides - shoutout to my friend [Jared](https://guissmo.com) for telling me about it. Apart from this I don't have anything interesting to comment about the CSS part of the slides. You can check the full code -[here](https://git.tronto.net/ecm/file/index.html.html) if you want; +[here](https://git.tronto.net/ecm/tree/index.html) if you want; everything is in a single HTML file. The result looks fine, but it does not work perfectly will every screen diff --git a/src/blog/2025-06-06-webdev/webdev.md b/src/blog/2025-06-06-webdev/webdev.md index 3bf4f9b..b712a85 100644 --- a/src/blog/2025-06-06-webdev/webdev.md +++ b/src/blog/2025-06-06-webdev/webdev.md @@ -19,7 +19,7 @@ ## Introduction I have recently worked on making a web application out of -[my latest Rubik's cube optimal solver](https://git.tronto.net/nissy-core/file/README.md.html). +[my latest Rubik's cube optimal solver](https://git.tronto.net/nissy-core). This involved building a rather complex C code base (with multithreading, SIMD, callback functions and whatnot) to [WebAssembly](https://en.wikipedia.org/wiki/WebAssembly) via @@ -77,7 +77,7 @@ With this out of the way, let's get started! The examples used in this tutorial are all contained in a git repository, which you can find either on -[my git page](https://git.tronto.net/emscripten-tutorial/file/README.md.html) or +[my git page](https://git.tronto.net/emscripten-tutorial) or [on github](https://github.com/sebastianotronto/emscripten-tutorial). In order to follow them you are going to need: @@ -161,7 +161,7 @@ but in case you are interested you can check out You can find the code for this example, as well as scripts to build it and run the web server, in the directory `00_hello_world` of the git repository -([git.tronto.net](https://git.tronto.net/emscripten-tutorial/file/README.md.html), +([git.tronto.net](https://git.tronto.net/emscripten-tutorial), [github](https://github.com/sebastianotronto/emscripten-tutorial)). Anyway, now we can build our C code to run in a web page. But this is @@ -324,7 +324,7 @@ The answer is 42 The code for this example can be found in the `01_library` folder in the git repository -([git.tronto.net](https://git.tronto.net/emscripten-tutorial/file/README.md.html), +([git.tronto.net](https://git.tronto.net/emscripten-tutorial), [github](https://github.com/sebastianotronto/emscripten-tutorial)). ## Intermezzo II: JavaScript and the DOM @@ -593,7 +593,7 @@ is included directly in `script.mjs`. You can find the full the code for this example the folder `02_library_modularized` in the git repository -([git.tronto.net](https://git.tronto.net/emscripten-tutorial/file/README.md.html), +([git.tronto.net](https://git.tronto.net/emscripten-tutorial), [github](https://github.com/sebastianotronto/emscripten-tutorial)). ## Multithreading @@ -740,7 +740,7 @@ the server you are using; with darkhttpd you can use the `--header` option. With your server correctly set up, you can enjoy a multithreaded program running in your browser! As always, you can check out this example from the `03_threads` folder of the git repository -([git.tronto.net](https://git.tronto.net/emscripten-tutorial/file/README.md.html), +([git.tronto.net](https://git.tronto.net/emscripten-tutorial), [github](https://github.com/sebastianotronto/emscripten-tutorial)). ## Intermezzo III: Web Workers and Spectre @@ -860,7 +860,7 @@ whose `data` property contains the object that was sent with `postMessage()`. You can check out this example in the directory `04_no_block` in the repository -([git.tronto.net](https://git.tronto.net/emscripten-tutorial/file/README.md.html), +([git.tronto.net](https://git.tronto.net/emscripten-tutorial), [github](https://github.com/sebastianotronto/emscripten-tutorial)). Try also large numbers, in the range of millions or tens of millions, and compare it with the previous example - but not don't go too large, we @@ -948,7 +948,7 @@ Other than that, you just need to add a couple of compiler flags: out module at runtime with `addFunction()`. And as you can check by running the example `05_callback` from the repo -([git.tronto.net](https://git.tronto.net/emscripten-tutorial/file/README.md.html), +([git.tronto.net](https://git.tronto.net/emscripten-tutorial), [github](https://github.com/sebastianotronto/emscripten-tutorial)), everything works as expected, both in Node.js and in a web page. To make the examples more interesting, the web page one is not only not logging the @@ -1120,7 +1120,7 @@ And with all this, we are ready to run our optimized version of the `primes_in_range()` algorithm, all from within our browser! As always, you can check out the complete code in the folder `06_storage` of the repository -([git.tronto.net](https://git.tronto.net/emscripten-tutorial/file/README.md.html), +([git.tronto.net](https://git.tronto.net/emscripten-tutorial), [github](https://github.com/sebastianotronto/emscripten-tutorial)). If generating this data on the user's side seems redundant, you can diff --git a/src/blog/2025-06-26-borrow-checker/borrow-checker.md b/src/blog/2025-06-26-borrow-checker/borrow-checker.md index b22d741..10c4ac5 100644 --- a/src/blog/2025-06-26-borrow-checker/borrow-checker.md +++ b/src/blog/2025-06-26-borrow-checker/borrow-checker.md @@ -2,12 +2,11 @@ As I mentioned in my [last post](../2025-06-13-cargo-culture-shock), in the last couple of weeks I have been learning Rust. I have written -[a small library](https://git.tronto.net/zmodn-rs/file/README.md.html) for +[a small library](https://git.tronto.net/zmodn-rs) for [integers modulo N](https://en.wikipedia.org/wiki/Modular_arithmetic) (the original C++ version was mentioned in [this post](../2025-01-21-taming-cpp-templates), rewritten -[my implementation](https://git.tronto.net/ecm/file/README.md.html) -of the +[my implementation](https://git.tronto.net/ecm) of the [ECM algorithm](https://en.wikipedia.org/wiki/Lenstra_elliptic-curve_factorization) (mentioned in [this other post](../2025-02-27-elliptic-curves-javascript)) and I am now playing around with some past diff --git a/src/blog/2025-11-29-aoc-download/aoc-download.md b/src/blog/2025-11-29-aoc-download/aoc-download.md index 29e56fc..bbde45e 100644 --- a/src/blog/2025-11-29-aoc-download/aoc-download.md +++ b/src/blog/2025-11-29-aoc-download/aoc-download.md @@ -79,7 +79,7 @@ And you are good to go! Typing out the full command above may look cooler than downloading the file by right-clicking "Save page as", but it is just as annoying. So obviously I saved that command to -[a script](https://git.tronto.net/scripts/file/aoc.html) +[a script](https://git.tronto.net/scripts/tree/aoc) that also detects the correct file to download based on the current date (or on two optional parameters for the year and the day). My script also opens up an editor and [Lynx](https://en.wikipedia.org/wiki/Lynx_(web_browser)) diff --git a/src/blog/2026-03-27-programming-20-years/20-years-of-programming.md b/src/blog/2026-03-27-programming-20-years/20-years-of-programming.md index 8e5b1a2..1daa441 100644 --- a/src/blog/2026-03-27-programming-20-years/20-years-of-programming.md +++ b/src/blog/2026-03-27-programming-20-years/20-years-of-programming.md @@ -60,7 +60,7 @@ it creates a few more. I managed to recover some of the programs I wrote between 2006 and 2010 in [a git -repository](https://git.tronto.net/ancient-projects/file/README.md.html). +repository](https://git.tronto.net/ancient-projects). The most successful one is JBriscola, a single-player game of [briscola](https://en.wikipedia.org/wiki/Briscola) with a decent AI. It is actually quite fun to play, and a few of my friends played it regularly @@ -153,8 +153,7 @@ a PhD. But at the beginning of my PhD, in 2019, I wrote some code for work: my supervisor and a colleague of mine had devised an algorithm to compute the degrees of certain [field extensions](https://en.wikipedia.org/wiki/Field_extension), -and I [implemented -it](https://git.tronto.net/kummer-degrees/file/README.md.html). +and I [implemented it](https://git.tronto.net/kummer-degrees). I don't know if this is what got me back into coding for fun, or if it was just a matter of time, but by the end of 2019 I was already thinking diff --git a/src/blog/2026-08-15-dotfiles/dotfiles.md b/src/blog/2026-08-15-dotfiles/dotfiles.md index cdaea19..ce10ef0 100644 --- a/src/blog/2026-08-15-dotfiles/dotfiles.md +++ b/src/blog/2026-08-15-dotfiles/dotfiles.md @@ -71,7 +71,7 @@ edit some configuration files that are outside of `$HOME` (for example, in `/etc`), and so on. I tried to automate these steps as much as I could turned them into [a -script](https://git.tronto.net/config/file/scripts/setup-config-alpine.html). I +script](https://git.tronto.net/config/tree/scripts/setup-config-alpine). I won't explain everything it does here, you can just read through it if you want - it is pretty self-explanatory. This script also takes care of cloning the dotfiles repository I mentioned above, so when I set up a new system I just need to download diff --git a/src/git/git.md b/src/git/git.md deleted file mode 100644 index cbfbf80..0000000 --- a/src/git/git.md +++ /dev/null @@ -1,64 +0,0 @@ -# Git repositories - -I started writing code in 2005, with a toy programming language called Dark -Basic first and with Java shortly after that. In the past I enjoyed learning -different programming languages (C++, J, Python...), but I have recently found -more pleasure in writing software in plain C. - -You can find all my git repositories at -[git.tronto.net](https://git.tronto.net/) or on -[my github page](https://github.com/sebastianotronto). -You can clone a repository with `git clone https://git.tronto.net/[NAME]`. - -Here are some highlights of what you can find in my git repositories. - -## Programs and scripts - -* [nissy](https://git.tronto.net/nissy): A Rubik's cube solver, - intended primarily as a tool for practicing FMC. Since april 2023 - the stable version of the project has been moved to - [nissy-classic](https://git.tronto.net/nissy-classic), while I kept - working on the H48 optimal solver. This new solver, which will be - integrated in a future version of nissy, can be found - [here](https://git.tronto.net/nissy-core). - Check out also [the project's homepage](https://nissy.tronto.net). -* [scripts](https://git.tronto.net/scripts): Various scripts - for Unix-like systems. -* [zmodn](https://git.tronto.net/zmodn): A simple C++ library for working - with modular arithmetic. - -## Tutorials - -* [fmctutorial](https://git.tronto.net/fmctutorial): an in-depth - tutorial for the Rubik's cube *Fewest Moves Challenge*, or FMC. - -## Math courses and programs - -Here are some scripts I wrote and lecture notes for some courses -I taught at the [University of Luxembourg](https://wwwen.uni.lu) -(2018-2022). - -* [mathsoftware](https://git.tronto.net/mathsoftware): a full - course (3 ECTS) on LaTeX and SageMath. -* [preplogic](https://git.tronto.net/preplogic): notes and - exercises for two introductory lectures on elementary logic. -* [kummer-degrees](https://git.tronto.net/kummer-degrees): a - SageMath script for computing the degrees of Kummer extensions of the - rational numbers. -* [arithmeticbilliard](https://git.tronto.net/arithmeticbilliard): - a python program for drawing the path of 2- and 3-dimensional arithmetic - billiards. - -## Miscellanea - -* [My personal website](https://git.tronto.net/sebastiano.tronto.net): - source files (mostly markdown) and build scripts for this website. -* [My git hooks](https://git.tronto.net/git-hooks), used to keep my - web git instance up do date automatically when I push new changes. See - [this blog post](https://sebastiano.tronto.net/blog/2022-11-23-git-host). -* [Platonic solids](https://git.tronto.net/platonicsolids) in TikZ (LaTeX). -* [bclibrary](https://git.tronto.net/bclibrary): A collectiono of functions - for [bc(1)](https://man.openbsd.org/bc). -* [A simple Python module written in C](https://git.tronto.net/python-c): - A minimal example of Python bindings for C code, for educational - purposes. diff --git a/src/speedcubing/coordinates/coordinates.md b/src/speedcubing/coordinates/coordinates.md index e1e6785..3d1687c 100644 --- a/src/speedcubing/coordinates/coordinates.md +++ b/src/speedcubing/coordinates/coordinates.md @@ -46,12 +46,10 @@ To work with cube coordinates, we need to implement the following: can be applied. For the implementation, see -[coord.c](https://git.tronto.net/nissy-nx/file/src/coord.c.html) +[coord.c](https://git.tronto.net/nissy-nx/tree/src/coord.c) and -[coord.h](https://git.tronto.net/nissy-nx/file/src/coord.h.html), -as well as the definition of -[coordinate](https://git.tronto.net/nissy-nx/file/src/cubetypes.h.html#l181) -in cubetypes.h. +[coord.h](https://git.tronto.net/nissy-nx/tree/src/coord.h), +as well as the definition of coordinate in cubetypes.h. ## Coordinate types @@ -252,7 +250,7 @@ the outermost loop above: ``` The code for this can be found in -[pruning.c](https://git.tronto.net/nissy-nx/file/src/pruning.c.html). +[pruning.c](https://git.tronto.net/nissy-nx/tree/src/pruning.c). The use of pthread made it more complicated, so it can be hard to follow without reading this page first. @@ -272,7 +270,7 @@ instead of a full representation of the cube is computing the inverse. While it is possible to compute the inverse somewhat efficiently from a representation of the cube made of a smart selection of coordinate values, it is not necessarily efficient. -See [fst.c](https://git.tronto.net/nissy-nx/file/src/fst.c.html#l113) +See [fst.c](https://git.tronto.net/nissy-nx/tree/src/fst.c) for an implementation. For these reasons, I am not using the coordinate approach described here -- cgit v1.3