1---
2title: "Projects"
3description: "Projects I'm currently working or have (mostly) finished"
4date: 2023-01-17T13:42:01-05:00
5draft: false
6cover: ./cover.png
7type: generic
8---
9
10Most of my projects are hosted on [Sourcehut,][sourcehut] but some of my older
11projects can also be found on [NixNet's Forgejo instance.][forgejo] I do have a
12[Github account,][github] but I don't actually host any projects on it as I
13prefer more open platforms.
14
15[sourcehut]: https://sr.ht/~amolith/
16[forgejo]: https://git.nixnet.services/
17[github]: https://github.com/Amolith
18
19All of these projects were created to [scratch an itch.][sai]
20
21[sai]: https://scratchanitch.dev
22
23## Active projects
24
25These are what I'm currently focusing on.
26
27<details>
28 <summary><a href="https://sr.ht/~amolith/earl/">earl</a> (2022-01-01) (Go)</summary>
29 <p>
30 I take a lot of hand-written notes and wanted a quick way to write down web
31 references. I was unsatisfied with all of the current URL shortener
32 implementations so I decided to write my own.
33 </p>
34</details>
35
36## Finished projects
37
38These are projects that I consider ["finished".][finished] I might fix the
39occasional bug, but they meet my needs as they are and I will not be adding
40major swaths of code to introduce new features.
41
42[finished]: https://gavinhoward.com/2019/11/finishing-software/
43
44<details>
45 <summary><a href="https://sr.ht/~amolith/rss2fedi/">rss2fedi</a> (2023-06-01) (Go)</summary>
46 <p>
47 Looks at a provided RSS feed, converts the HTML to plaintext, truncates to
48 100 words, shoves those words into a templated, and posts to fedi. Supports
49 authenticating with Akkoma, Pleroma, and Mastodon. Patches for additional
50 platforms are welcome.
51 </p>
52</details>
53
54<details>
55 <summary><a href="https://sr.ht/~amolith/opml2md/">opml2md</a> (2023-05-01) (Go)</summary>
56 <p>
57 Takes an OPML file exported from an RSS reader, turns it into bulleted lists
58 of subscriptions (ignoring particular sections if desired), and shoves those
59 lists into a templated Markdown file. It's in use on the <a
60 href="/feeds">feeds page.</a>
61 </p>
62</details>
63
64<details>
65 <summary><a href="https://git.sr.ht/~amolith/p2c/">p2c</a> (2023-04-05) (Go)</summary>
66 <p>
67 Generates cover images for Hugo sites using the page's frontmatter, the
68 site's global config, and file's metadata. It's written in Go and generates
69 images using <a href="https://gioui.org">Gio,</a> a cross-platform GUI
70 framework. It generates the cover images for most of the pages and posts on
71 this site.
72 </p>
73</details>
74
75<details>
76 <summary><a href="https://sr.ht/~amolith/go-webring/">go-webring</a> (2021-12-18) (Go)</summary>
77 <p>
78 This is generalised software for creating and maintaining old-school <a
79 href="https://en.wikipedia.org/wiki/Webring">webrings.</a> It currently
80 powers <a href="https://fediring.net">Fediring.net.</a>
81 </p>
82</details>
83
84## Future projects
85
86Tools I want but that I haven't necessarily had time to start on yet
87
88<details>
89 <summary>Alternative <a href="https://bond-touch.com/">Bond Touch</a> client/server</summary>
90 <p>
91 The official app is just an unusable pile of trash. I want to
92 reverse-engineer the bracelet's Bluetooth protocol and implement my own
93 client/server. Client functionality will be strictly limited to
94 sending/receiving touches and matching touch patterns with user-defined
95 messages. Server functionality will be strictly limited to transferring
96 touches between devices.
97 </p>
98</details>
99
100## Abandoned projects
101
102Unfinished tools I don't plan to finish
103
104<details>
105 <summary><a href="https://git.sr.ht/~amolith/rarangi">rārangi</a> (2021-10-12) (Go)</summary>
106 <p>
107 A todo TUI that operates on basic text files. Unfinished items are denoted
108 with a - and finished items are denoted with a +. I wanted to try
109 <a href="https://github.com/charmbracelet/bubbletea">Bubble Tea</a> but
110 decided it was more complicated than I was ready for at the time.
111 </p>
112</details>