_______    _______    _______    ____  
|       |  |  _    |  |       |  |    | 
|____   |  | | |   |  |____   |   |   | 
 ____|  |  | | |   |   ____|  |   |   | 
| ______|  | |_|   |  | ______|   |   | 
| |_____   |       |  | |_____    |   | 
|_______|  |_______|  |_______|   |___| 

tinylog format feed

about this journal

reply via email



09:12 bombadillo

bombadillo is the best terminal gemini (and gopher, finger, maybe telnet?) client IMO. It has many things amfora/astronaut/av98 doesn't have, just that I wish it could have custom colors.



vim-magit is amazing, but when commit triggers gpg's passphrase prompt it seems very very unresponsive. really weird and annoying. lucky I could go to another repo, enter the commit + enter passphrase without magit successfully so that in magit I can just commit and it won't prompt the passphrase.

08:24 gitea

I *just* discovered that gitea is actually written in go (wow).

And I thought codeberg was gitea's official/public instance? Apparently there's also gitea.com which has around as many (maybe less) users/repos on there.

I also found a command line tool for gitea


Doesn't feel as polished and pretty as github cli 😛

But still, how did I not know these before? damn I always thought it was written in ruby


17:34 jc - cli jsonify tool (also python library)


pipe the output of a (supported) command into it and it will give you a json output which can be easily used in scripts like with jq.

I haven't seen any alternatives for this before, as in apart from using shell utils like cut, sed, head/tail, awk, etc.

On a brief look it seems that it supports around 70 commands


$ ls -l /usr/bin | jc --ls -p -r
    "filename": "apropos",
    "link_to": "whatis",
    "flags": "lrwxrwxrwx.",
    "links": "1",
    "owner": "root",
    "group": "root",
    "size": "6",
    "date": "Aug 15 10:53"
    "filename": "arch",
    "flags": "-rwxr-xr-x.",
    "links": "1",
    "owner": "root",
    "group": "root",
    "size": "33080",
    "date": "Aug 19 23:25"

$ w | jc --w -p
    "user": "root",
    "tty": "tty1",
    "from": null,
    "login_at": "07:49",
    "idle": "1:15m",
    "jcpu": "0.00s",
    "pcpu": "0.00s",
    "what": "-bash"

holy smokes! gotta change my `online` script now 😱

online (rtc-scripts)


13:53 binomial theorem

"The Discovery That Transformed Pi" on YouTube

sooo cool!

I can't wait to program this out with code and build cool stuff with pascal triangle, pi graphed out and things like that



started reading a lot of novels this week, completely forgot how i enjoyed them... haven't read novels properly for like a year a more


08:57 fish

Re: @hexdsl Wed 08 Sep 2021 21:47 BST

Fish seems like a terrible shell

how so? I agree that it isn't posix compliant and can't directly type in shell scripts, but I really can't survive without fish. The auto suggestions and auto complete is really smart and colorful. It even tells me if a command is not found before I hit enter. Those things can probably be achieved with plugins from oh my zsh/bash but requires less (or no) set up. I also think that the completion, configuration and environment variables are easier.

The default bash AFAIK only lists out the possible completions when you hit tab twice, but in fish you hit tab once and it lists out the possible completions AND allows you to tab through to select one. Fish's built-in commands (and 3rd party ones if they support it) also allows you to see the description of each completions which is an amazing way of learning a tool without having to dig through the docs.

For example, when I type `git a` and hit tab, it lists 3 entries of command completion and shows you what the command does next to each of them:

~ $ git a<tab>                                                                                                            
add                          (Add file contents to the index)  archive  (Create an archive of files from a named tree)         
apply  (Apply a patch on a git index file and a working tree)

Just to add to Solene's post, you don't need to type ctrl e to confirm a suggestion, the right arrow key would work and is easier to type IMO.



paralympics was pretty cool!


2021 is such a nice number, 2022 looks kinda ugly for some reason ;-;




Refactored much of my dotfiles this week, especially my nvim configuration. There were so much untouched configuration that didn't actually work and I didn't even know xD

github.com/hedyhli/dotfiles (also on sr.ht)

I've started to focus a bit on maintainability and ease of settings up new machines, I wrote some setup scripts and I plan to organize them all and have a `dot` script that can run them on request (instead of having to type out the full path every time). I also plan to make the setup scripts be able to be run more than once, that is even after setting up the first time I can still run them again and again to keep stuff in sync. I've recently used my dotfiles to set up two linux desktops and it was relatively easy to get everything working.

Back to nvim, I've switched to a lua autopairs plugin so that I can get more customization and control in its behaviour (real reason was to fix some really annoying behaviour, see commit log for more info). I'll probably replace lightline (vim) with galaxyline (lua based) next week.

Still trying to get <CR> automatically hide the popup menu :/ and I need to optimize the startup speed a bit more. Once I've done that I'll be able to resume working on my projects :D


16:21 site

Finally took the time to work on my website:

https://hedy.tilde.cafe (also on gemini)

still using hugo as the SSG, kiln didn't have as much features that I need from hugo, and bashblog just isn't good enough, feels simple but really not organised and stuff.

Re-wrote CSS based on a few inspirations:




I intend it to be not too barebones, and definetly not brutalist design, should look somewhat modern, but should have some accessibility features and simplicity to it. I've set the margin-left for blockquotes to 0 to make it look better in small screens, and kept the nav bar and footer simple. I've checked that it looks ok in reader mode and terminal browsers.

Many people who have minimalist-styled css websites have font-family be brwser default, but (not sure if it's just me) but if browser default is used all the apostrophes take such a huge space and makes it look very awkward. So I've set the font-family to a sans-serif stack (with sans-serif as the last fallback).

I've also gotten syntax highlighting to work in code blocks with different theme for light mode and dark mode. I'm not sure if screen readers will have a good time parsing code blocks and making sure they're formatted right, but I keep on improve it as I write more posts.

Special thanks to seirdy's post on website best practices


The post is a bit opinionated but I've tried to keep with those best-practices where I can tolerate. The css source is minified and dumped into <style> tags, so no extra requests via <link>. No favicon at the moment, since I'm still figuring out what favicon I should use. No fancy animations or over-the-top colors. My link-hover styles might be a bit extra, but it looks really good when the underline is gone and highlight is up on mouse over.

There is absolutely no javascript or scripting, it's fully static, except maybe a few CGI scripts that I rarely use?

I've also mirrored all of my gemlog posts on hedy.smol.pub to hedy.tilde.cafe.

I'll write new gemlog posts from ~cafe now :D If you've subscribed to my smol.pub gemlog, I'd love it if you could change the feed url to:



I'll probably move my tinylog/journal to there as well, in the future.

Still figuring out what I should do with my flounder site when I'm mostly done with my site (apart from content, content, content). The fact that I can just make a simple edit online is the one thing that keeps me using flounder, but it has plenty of limitations: css, gopher, more file types, CGI, ssh/rsync deploy, etc.

I also plan to have it on tor but doing that would be after I've done everything I've said above.

In regards to comments, I'll probably go with the "email to public mailing list route" plus webmentions. webmentions is one of the things that I'll definetly want to have. For gemini comments, I may setup the CGI gemini likes/comments systems in the future, but I don't really feel like that's the best solution...

If you have any feedback or suggestions, I'm happy to hear about it! Just trying to find the best middleground between absolute brutalist/minimalist and simplistic-but-modern aesthetics here.



11:28 git tagging script

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.



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.


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.


12:10 tinylog feed

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:




it keeps raining ugh

17:52 spartan

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).



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)



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



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)



1st of July, very nice.

one month closer to 2022




antenna is pretty cool



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:




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)


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


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


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


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


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



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.


tinylogs are fun


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)


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:





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



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


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 ←


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

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



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


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



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


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


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



(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)



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)



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



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


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!


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"




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!"



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


happy new year

I decided to hate discord