hedy's journal

this is my tinylog-rfc-format'ed feed for my journal.

the actual journal that I write on is here:


this feed is auto generated by a scheduled script. so at one point in time it might not have the most up to date information, but it will probably be updated a few hours after.

sometimes I don't specify the time, instead I use a entry title or label. so my script sets the time as "12:00" if time doesn't exist and I have my entry title (if available) in "###" header.

author: @hedy

avatar: 📒

license: CC BY-SA

2021-07-19 11:28 +08:00

made a bash script to bump versions with git tag yesterday. It's working well and suits my needs:

shltag - source code in my dotfiles repo on git.sr.ht (also on tildegit and gh)

shltag = shortlog + tag

puts git shortlog output into signed annotated tag.

I know this exists but I think it does a bit too much, lol.

semver by drew devault - git.sr.ht

I've also finally finished adding config file support as well as per user directory serving to spsrv. (not going to put a link here, because I feel like I'm self plugging to much. Go to sr.ht/~hedy or tildegit.org/hedy to find the source code). It's not very stable yet I think, so I haven't documented the stuff in the readme yet.

2021-07-14 11:51 +08:00

Decided to start over :D

It's nice that I can still "harvest" my plant even though it's dead, lol. Not sure if that's a bug.

2021-07-14 11:48 +08:00

I just realized my plant on astrobotany had died :O

It's pity that I might not ever be able to have another levitating plant again. Wondering whether I should keep it like that for posterity or I should start over.

2021-07-12 12:10 +08:00

finished simple script in python that converts my journal format to tinylog format. the script isn't commented well so oof, bad luck to the future me :/

it has a single loop that goes over each line of this file and scraps the dates and content, I also have a header.gmi, so I have this:

python3 genfeed.py | cat header.gmi - > tinylog.gmi

I then I simply upload the tinylog.gmi to flounder, that's it! really simple

just to be a little bit lazy, I made a bash script wrapper that downloads my journal, my current tinylog.gmi, and checks if changes before uploading to flounder.

I think about doing something simple but for antenna in the future:


2021-07-11 18:09 +08:00

it keeps raining ugh

2021-07-11 17:52 +08:00

working on a spartan client and server, written in go

discovered spartan in february or march this year, can't remember (wrote in entry in this journal, you can flip back :D) and I've wanted to make a CLI/TUI client since then but I was busy with other things. I even registered #spartan on irc.tilde.chat but no one came (of course, since no one talked about it) then I just left the channel and forgot all about it. It wasn't until this wee or last week when I noticed #spartan channel was registered again (by g1n) so I decided to join, and oh! 6 people, huh that's interesting. I guess that's might be because it was mentioned a few times in #gemini (when discussing mercury).

anyway, now that I have a tiny little bit more free time than before (and have started learning go since), I've decided to make some spartan software. It really really easy to get the to work after forking some gemini software, lots of things to change, but still. note that they both probably has bugs, but they work fine when I was testing it, so feel free to use them but don't be surprised when coming across incomplete features and bugs :)

here are the source code, both in golang. (all my repos are hosted on https://sr.ht/~hedy too)

sparte - CLI client (like curl/wget/gemget but much, much simpler as of now)

spsrv - (static files) server

I'm also planning to make a server framework, a TUI client, and I'm also adding spartan support to gelim (my interactive gemini client).

2021-07-07 19:33 +08:00

learning lua and planning to use lua for some configs for neovim.

also looking to replace CoC.nvim with nvim's LSP support.

coc.nvim - this used to be my best friend, I still like it though, but hoping that replacing it with lua would make things simpler :P

seirdy's dotfiles - .config/nvim/ - reading his config for reference

nytpu's dotfiles - .config/nvim/ - also reading this - for fun, learning, and reference

I'm also wondering how I should go about having vim and neovim share a same config. Maybe I'll have a my neovim's general.vim smaller, and have vim `source` that or something. Not sure about what I should do about my plugins though.

tildegit.org/hedy/dotfiles (also hosted on sr.ht)

2021-07-03 11:17 +08:00

feel so bad rn...

theres this super hard math test with all multiple choice questions and the last two questions worth the most marks, but I thought marks are deduct for wrong answers (makes sense, since it's multiple choice), so I left the last two questions blank (can't do them anyway, though I finished all the other questions), and YET... after submitting I realised marks aren't actually deducted for wrong answers and me be like, tf-

well anyway that's fine, the test is finally behind me and like yeah who cares, I mean at least I got all the other questions done soo

2021-07-02 21:54 +08:00

ubuntu desktop on raspberry pi runs pretty smooth

not much lag and all

was able to get x11 forward working with git for windows (and vcxsrv)

2021-07-01 11:59 +08:00

1st of July, very nice.

one month closer to 2022

2021-06-30 18:23 +08:00

antenna is pretty cool

2021-06-29 16:15 +08:00

this is quite interesting:


a quiz with a bunch of questions asking what would be the output of some "wtf" things in javascript. (such as how `NaN === NaN` is false)

despite it being a bit... controversial? as in like people say these are just a small part of the language and it's define this way, I think it's fun to have a look at the answers and try not to run into these situations when writing JS. I mean, almost (?) all programming languages have weird bits, such as the weirdness in python listed in this repo:


2021-06-27 15:24 +08:00

found some cool software by simon ser:

simple web IRC client

IRC bouncer (pounce exists, I know)

simple CLI side-by-side diff viewer (diff-so-fancy exists, I know)

2021-06-27 15:19 +08:00

wsl 2 is quite unstable... it broke my network driver and stuff (may not be due to wsl only but it could be).

since I refuse join windows insider program I have to use an X server to run linux GUI programs with wsl. used vcxsrv, installation and launch super smooth, worked on first try, everything good but my network and stuff broken so I had to completely uninstall wsl 2. (I actually ended up completely resetting my laptop. in conclusion, windows meh, mac os ok, linux good :P

I think I'd rather run a linux VM in windows than wsl. idk really, I mean I could even just work on my raspberry pi or something

2021-06-27 11:45 +08:00

this is quite interesting:


asks you some questions then tells you which languages (out of C, Go, Python, Lisp) would best suit you. Bit opinionated but cool still

2021-06-26 12:00 +08:00

removed as much data (posts, videos, interactions) as possible from my old facebook account and youtube channel, feeling good.

I'm still keeping my youtube account though, because there's some good content in there but I don't watch them much

2021-06-23 12:00 +08:00

this seems interesting


rich and textual

A Python TUI framework with rich is actually a thing! (wip, but STILL).

people liked rich and they talked about how they want it to be like a full TUI framework... and yep, now it's a thing. looks beautiful, and I'm sure when it becomes stable it will have much better docs then things like urwid

github.com/willmcgugan/textual - TUI for rich


I'm actually quite excited for this, though I haven't looked into the details and APIs yet. I'd love to make a TUI gemini client with textual that looks (almost) as nice as amfora :D

not sure if it's because Will's terminal is better, but stuff made with rich/textual looks nicer than amfora screenshots

2021-06-18 12:00 +08:00

quite nice indeed

found it from alex's journal


Why shouldn't I just use jq?

jq is awesome, and a lot more powerful than gron, but with that power comes complexity. gron aims to make it easier to use the tools you already know, like grep and sed.

gron's primary purpose is to make it easy to find the path to a value in a deeply nested JSON blob when you don't already know the structure; much of jq's power is unlocked only once you know that structure.

whenever I want to use jq I always just happen to forget how to query with it, so everytime I have to dig into the man page... I have like a list of tools/concepts to learn "in the future if I have time" and jq is one of them

2021-06-17 12:01 +08:00

ugh I keep thinking whether I should switch to kiln instead. but atm as far as I know it doesn't support fetching a file from assets/ (say, style.css) minify it, then get the content so it can be dumped in the <style></style>. I guess I still just use hugo then. It looks heavy (heavier than kiln for sure) but it feels fast and light for some reason.

2021-06-17 09:34 +08:00

tinylogs are fun

2021-06-11 12:00 +08:00

I like wind. according to my brain (very reliable source indeed), wind is caused by the same process that form mountains and cause earthquakes/tsunamis/etc. (lol that was random and unsurprising but i'm pretty sure true)

2021-06-09 12:00 +08:00

some hugo themes are actually really nice and simple, and some of which has no tracking, no js, or no heavy css involved. here's some of my favs:




2021-06-06 12:00 +08:00

wsl 2 is pretty interesting. I like that it is now able to be installed without having to join windows insiders. tried out both ubuntu 20 and alpine on there, will be finishing some configs and setup tomorrow

2021-05-31 12:00 +08:00

last day of may already? nice.

haven't been online as much for this month... so yeah

I saw the news of freenode, it's pretty surprising since for the last few months when I was active on IRC I didn't like to spent much time on freenode, maybe it's because of its popularity (I tend to like to hang out in places that don't have as much users), but idk

libera.chat is pretty cool

2021-05-05 12:00 +08:00

accessing my flounder capsule from Documents (by Readdle) iPad app

pretty cool huh

recently trying out the various different apple pencil note apps again (did it a year ago), writing this with Apple Pencil scribble feature. It's not very good with symbols ←

2021-05-01 12:00 +08:00

gosh can't believe it's may already :o

I love how a third of 2021 is finished (4/12=1/3)

2021-04-30 12:00 +08:00

replaced old readline package for gelim with this:


it's quite good, much better than what I was previously using. also discovered murex shell from there, feels a bit like fish, but i don't like murex's syntax, and it isn't as widely supported or known compared to fish

also added colors!!! easier than I thought. this package i'm using feels much much better than colorama from the python realm:


honestly go packages are all really cool

2021-04-29 12:00 +08:00

added pager to my gemini client, it basically just calls `less` with -FSEX and if it fails, it will just print the content normally


2021-04-18 12:00 +08:00

dotfiles (again)

yesterday I thought, wouldn't it be the absolute perfect solution to track my dotfiles with hardlinks? (that is, you hardlink the dotfiles into a git repo and track them from there)

so today I did a bit of research and found that there are many people who have tried this method, and there are caveats:


^that article suggests you to just track your ~ with git, which I have mentioned with other dotfiles managers on Apr 6th (below), it said that the problem with doing the hardlinks way is that "Git never modifies files in the working tree – instead, it unlinks them and then recreates them from scratch. This inherently breaks any hardlinks that might have been present". which AFAI can tell, you can't use git commands to modify files from your repo and wish that those changes will reflect in your ~ (?)

so then I thought, what if, instead of having files in your dotfiles git repo be hardlinks /of/ your dotfiles at ~, why not have the dotfiles at your ~ be hardlinks /to/ files in your git repo?

in that case, though I haven't tried it yet, will probably be similar to the symlink solution which when you want to `vim .gitconfig` for example, it opens `~/dotfiles/.gitconfig` and breaks the syntax highlighting. But now with symlink replaced with hardlinks, you are probably still editing your `~/.gitconfig` and since `~/dotfiles/.gitconfig` points to the same contents you can track the changes as needed. sounds too good to be true, kinda?

so why am I trying out these different, almost crazy, methods when I said I was going to stick to yadm? well, so here is what I still need which yadm doesn't provide (AFAIK):

for some machines, only track some files and directories and remove the others.

for example:

anyways, the problem I described above can probably be solved with chezmoi, but like what I've written on 6th, there are downside(s) with it and I don't like it. I'd rather stick with yadm for now, and try out the hardlink strategy. In any case, once I've figured out an almost-perfect solution that (hopefully) solves all my problems I'll write a gemlog post about it. It may be that there is no such solution that can do so but we'll see.


new journal heading layout. # for each month, ## for each day, and ### for each event

also made the stuff reverse-chronological order

2021-04-14 12:00 +08:00

found several cool more things on gemini:

paste.gemigrep.com - paste and archive text and gemini urls

gmisub - I normally just use Spacewalk or gemreader for feeds in gemini, but this is cool too

Amazing post on SCGI in gemini

discovery.geminiprotocol.com - more cool stuff on gemini

review.treeblue.space - similar to above

2021-04-07 12:00 +08:00

gelim - my new wip line mode Gemini client in go (sr.ht)

2021-04-06 12:00 +08:00


(will write a detailed gemlog post for this)

here's my general dotfile setup/manager timeline:

1. nothing

2. symlink + plain git

3. yadm

4. copy-paste files to repo (with scripts to make it easier)

5. yadm

6. homedir git (with * in .gitignore, and track with `git add -f`)

7. chezmoi

8. yadm

the last 3 from the above are my top 3 preferred options, here are the pros and cons for each:

〈 ~ git 〉

Drew's blog post on this setup

I’ve tried a few solutions over the years, but I settled on a very simple system several years ago which has served me very well in the time since: my $HOME is a git repository



〈 yadm 〉


basically, your $HOME is a git repository, but wrapped. nothing is tracked until you `add` it, so I think of it as the above method but with more features.



〈 chezmoi 〉


it copies your dotfiles to a separate dir and you can optionally setup git in that dir.



read more about this ("complaint"?) and their reasons for it

also see:

full comparison table between various dotfile managers (chezmoi docs)

2021-04-05 12:00 +08:00


seen it across the geminispace as well as mentioned in IRC many times, but I didn't give it a go since it was desktop-based... but today I saw some people on #gemini tilde.chat IRC mentioning Lagrange for iOS, immediately I went to skyjake.fi's gemlog and joined the testflight. the only iPad gemini client I've used so far was Elaho, which has similar UI/UX to firefox, it feels smooth and comfortable to use, despite have it lack some features such as subscriptions, importing certs (AFAIK), and sharing identities across different capsules. (I mentioned Elaho when I first tried it out in the 2021-04-01 entry above). here are my first impressions


public instance of gemreader ^ (needs cert)

2021-04-04 12:00 +08:00


started getting into go in january, but at the time I only did some stuff on the Go Tour, and since then I hadn't touched go at all... Today looking at some gemini clients and other software, sometimes urged me to learn go (like, immediately). started looking at simple Gemini server/clients source code and I decided to fork solderpunk's "≈100 lines bare-bones but usable client in Go"[*], refactor it, implement some features like more commands, less(1)-like output, etc, basically a simpler, dumber version of AV-98 in Go. This is also to basically help me learn go with "learning by doing", really excited for this. Will probably start tomorrow

2021-04-03 12:00 +08:00


wow! did mozz just add support for spartan:// to his HTTP-gemini portal? dang this is amazing, no need to use my terminal with `| less` anymore :P

Gemini Proxy (also spartan now)

read the specs[*] for spartan a bit more carefully today... the way it specifies how inputs are requested is quite interesting. AND guess what... there's inline inputs! (AFAIK) spartan uses text/gemini for its document format, and adds a new input syntax "=:" to replace gemini's 10 INPUT status code. here's an example .gmi served over spartan:// with input:

# normal heading

* normal list item
* second item

here goes an input
=: /input-handler friendly text for the input

more normal text

try out here

spartan://mozz.us on proxy

there's a guestbook and also an "echo service" where anything you input will be echoed back to you

problem is, atm, the server.py file[*] doesn't handle inputs (at least not from looking at the code and trying it out), and I would really love to see how spartan://mozz.us do the echo and the guestbook thing, but I don't think it's open sourced


anyways I think this feels more like a gemlog post, will link to it here when I'm done writing it

2021-04-02 12:00 +08:00

organizing knowledge

Knowledge and resources are really scattered. I was looking into gemini, gopher, irc bots, etc to be specific. One day, when I have the money, time, and energy, I will buy a domain, get a host and sit down and organized all of these things into a single public wiki/notebook...


I saw mozz's post[*] on his shiny new protocol a few days ago, but only decided to have a look today. looking at the client/server .py files I was like "wow! this seems really lightweight", also, this was the perfect opportunity to install a curl-like program for gemini:// so I decided to use makeworld's gemget[*] and downloaded the two scripts for spartan://.

mozz's post on spartan://

gemget - CLI downloaded for gemini (like curl/wget) - by makeworld (github)

My first stop on the spartanspace is spartan://mozz.us, I also had a play with its cool input "system", then immediately went on to trying out the server. So far everything feels just like gemini, except that this protocol is newer, lighter, and I guess easier to implement. Can't wait to get more into it and create my own server/clients for it!

2021-04-01 12:00 +08:00

super cool gemini

registered on Astrobotany[*] a week ago, and been only using it with amfora[*] on tilde.cafe[*], but today I tried out a gemini from the iPad - Elaho! (will link to it once I find its github repo, forgot atm).

Astrobotany - community garden over gemini://

amfora client on github

tilde.cafe, a "newly" launched, debian tilde

so far browsing the geminispace from Elaho is a super cool and relaxing experience, it seems to be based off firebox. But from what I can see, Elaho doesn't allow you to import certificates, so I created one, logged into Astrobotany and added my current certificate to my account.

all this "gemini apps" and auth with client certs and so cool! can't wait to make my own game or app over gemini


A week or two ago I started taking a serious look at gopher, reading through every single post on gopher.zone

gopher.zone - Gopher guides - "Highway to the gopher zone"

2021-03-30 12:00 +08:00


Today I decided to go back, and put my journal and gemlog there until I find a good host for all my online stuff... The one thing that still impresses me is the ability to set custom domains for my flounder site! AFAIK not a single one of any other Gemini hosting providers allow you to do that :/


Another amazing thing is that I can directly edit from the web! (Although if Editting via Gemini inputs are supported that would be cool) Editting from the web means that I can update my journal/gemlog from any device, which is ideal especially for my journal


When I came back, I noticed that WebDAV was replaced with SFTP access! Gosh that's amazing, which means I can script automated updates (if I need any) and 'deploy' to my flounder site immediately :D


The first time I heard about it was from my mastodon timeline, but didn't give it a serious look until today! I was surprised that so many of the things in there look so familiar to me... Like most of the times I'm like "oh, it's this guy", and "oh I know you!"

2021-01-14 12:00 +08:00

first ever gemlog! it's just a hello world (published on flounder)

happy new year

I decided to hate discord