TIL

This is a running list of things that I’ve learned. Sometimes they are particular technical facts. I’m a neophyte in a lot of areas; so of these things will seem quite mundane. Sometimes they are more conceptual. Maybe someone will find them useful. Maybe that someone is my future self.

Wednesday, June 4, 2025

When you run a script as a systemd service, you have to define its environment variables in the service filem, e.g.

# Set your environment variables here
Environment="OJISAN_INCREMENTAL_UPLOAD_API_KEY=YOUR_ACTUAL_API_KEY_VALUE"
Environment="OJISAN_INCREMENTAL_UPLOAD_DB_USER=your_db_user"
Environment="OJISAN_INCREMENTAL_UPLOAD_DB_PW=your_db_password"
Environment="OJISAN_INCREMENTAL_UPLOAD_DB_NAME=your_db_name"
Environment="DB_HOST=your_db_host"

Tuesday, June 3, 2025

Show systemd running services as a list

systemctl list-units --type=service --state=running --no-pager

Thursday, April 17, 2025

vim: Jump to specific character on a line

In Vim, to jump to a specific character on a line, you can use the following commands:

  • f{char} - Jump to the next occurrence of {char} on the current line
  • F{char} - Jump to the previous occurrence of {char} on the current line
  • t{char} - Jump until (one position before) the next occurrence of {char}
  • T{char} - Jump until (one position after) the previous occurrence of {char}

For your specific example of “go to first #”:

  • Type f# to jump to the first # character on the current line

Additional tips:

  • ; - Repeat the last f, F, t, or T command in the same direction
  • , - Repeat the last f, F, t, or T command in the opposite direction

These are extremely useful for quick navigation within a line without having to use arrow keys or other movement commands.

vim: Delete from current cursor position to end of the document

This was not obvious to me (or Claude.ai) - but search turned it up.

vG$d

Explanation

  • v enters visual mode
  • G moves to the last line of the document
  • $ moves to the end of that line
  • d deletes everything selected

This combination selects from the current cursor position all the way to the end of the document and then deletes it.

Wednesday, February 17, 2021

A couple of terms that deal with perceptual distortions and cognitive bias:

  • apophenia - a tendency to see connections between two unrelated things.
  • pareidolia - the faulty perception of a pattern in an image, e.g. seeing a face in a geologic formation on Mars.

Pareidolia is a specific form of apophenia.

Friday, January 29, 2021

Custom aliases in oh-my-zsh

With oh-my-zsh, you can store custom aliases in multiple (?per application) file under .oh-my-zsh/custom giving them .zsh file extensions.1

¶For example, in my hugo.zsh file, I have:

alias hnewtil="/Users/alan/Documents/blog/ojisan/scripts/newtil.sh"
alias gtojisan="cd /Users/alan/Documents/blog/ojisan; ls -l;"

Executing inline Python in a shell script

It’s possible using the -c command.2

python -c 'import foo; foo.bar()'

Thursday, January 28, 2021

A bunch of Unix date scripting things

Unix shell scripting is not one of my better-know areas of programming, but it’s on my list of things to learn. Some interesting bits about the date function.1

  1. Want the long date, like Thursday, January 28, 2021? → date +"%A, %B %d, %Y"
  2. Want something like the above but with abbreviated month Thursday, Jan 28, 2021? → date +"%A, %b %d, %Y"
  3. Time zone in the format of "-05:00" on macOS is:
#!/bin/bash

tz=$(date +"%z" | sd '(\d{2})(\d{2})' '$1:$2')
echo $tz
  1. Long date in the format of 2021-01-28T05:30:48-05:00 that is use by Hugo2:
tz=$(date +"%z" | sd '(\d{2})(\d{2})' '$1:$2')
md_date=`date +"%Y-%m-%dT%H:%M:%S"`
  1. Speaking of dates, this reference has very detailed information on date and time in the Unix shell.
  2. Date in the format of 2021-01-28 is date +"%Y-%m-%d"

Unix slurp command output into a variable

In the UNIX shell, slurping the output of the command into a variable is done this way:3

OUTPUT=$(ls -1)
echo "${OUTPUT}"

MULTILINE=$(ls \
   -1)
echo "${MULTILINE}"

Append or overwrite a file in Unix shell

You can either append to a file or overwrite the contents from the shell.4

To append to a file, it’s echo "hello" >> file.txt whereas to overwrite the contents of a file, it’s echo "hello" > file.txt

Function Symbol
Append >>
Overwrite >

  1. This all pertains to the macOS flavour of the Unix shell. There are important differences, seemingly in the date function, for example. ↩︎

  2. I should know what that format is called, but I don’t. I think it’s ISO 8601. Also, this requires sd. If you don’t have it, you’d need sed instead. ↩︎

  3. Source - Stack Overflow ↩︎

  4. Source - Stack Overflow ↩︎

Wednesday, January 27, 2021

W3schools.com has a CSS library that’s quite nice. I often use Bootstrap; but I like some of the visual features here better. For example, I like their tags because they have more flexible use of colour.


If you want to fetch from a Python dictionary, but you need a default value, this is how you do it:

upos_badge = {'noun': 'lime','verb': 'amber', 'adv': 'blue',}
badge_class_postfix = upos_badge.get(value.lower(), 'light-grey')

I recently learned about DeepL as an alternative to Google Translate. It seems really good.