Enchoseon

My Productivity Tools.

 Things I find useful

Lecture & Notes§

Neovim + Syncthing + Markor

Gentoo Package(s): app-editors/neovim, net-p2p/syncthing

F-Droid Link(s): https://f-droid.org/en/packages/com.nutomic.syncthingandroid/, https://f-droid.org/en/packages/net.gsantner.markor/

Previously, this blog post used to advocate for Joplin for the following reasons:

  1. Markdown
    • I already know how to type and read Markdown
    • Markdown is extensible:
      • LaTeX is overkill, embedded KaTeX blocks are easy!
  2. CalDav sync, conflict resolution, and E2EE (end-to-end encryption)
    • syncing without conflict resolution is just a disaster waiting to happen
    • Self-hosting my notes with E2EE is incredibly convenient
  3. First-class clients on multiple devices
    • Joplin is my main notetaking solution on my phone, desktop, and laptop
  4. Live preview in the GUI app
  5. Vim/Emacs motions in the GUI app
  6. A sleek terminal app
    • Which I found preferable to the GUI once I figured out how to get live preview working in Neovim

The other side of the coin that eventually made me switch from Joplin is:

  1. Neovim is actually extensible
    • e.g. You can use Pandoc to export MLA-formatted papers
    • Mermaid, Chart.js, sequence-diagrams, flowchart, dot, Toc, etc.
  2. Joplin uses Javascript for everything
    • I don't want to run a web-browser to edit my notes
    • Even the cli app is written in Javascript, and all it does is create a filebrowser hooked up to their database
  3. The conflict resolution is just to bin changes and do nothing else
    • All this overhead with the database and whatnot for lackluster conflict resolution
  4. Slow sync
    • Comparing Joplin with its Electron GUI and database and E2EE and Webdav to Syncthing is unfair, I don't fault Joplin for this.
    • However, slow sync and bad conflict resolution is a recipe for constant annoyance

To explain the stack:

I get all the features I wanted from Joplin with faster syncing and editing, more control, and easier self-hostability of my notes. It turns out that using three tools that do their job really well is way better than trying to use one tool that does everything.

Anki + Ankidroid

Gentoo Package: app-misc/anki-bin

F-Droid Link: https://f-droid.org/en/packages/com.ichi2.anki/

Anki is a flashcard program that uses the spaced repetition technique for effective and convenient studying. Being able to sync my cards and practice progress across my phone, desktop, and laptop is incredibly convenient.

Ankidroid is just an Android client for Anki, it works perfectly.

Once, I took a (mandatory) class that was so rote that I took notes exclusively in Anki. We had open-note quizzes, midterms, and finals. Combined with the ability to search through my entire card database instantly, the class was a breeze rather than the slog RateMyProfessor.com warned me it would be.

I also use the following add-ons (on the desktop client):

Auto Editor

Python Package: auto-editor

Auto-editor chops out silent portions of videos, which can save anywhere from a couple seconds to a few minutes depending on a lecturer's ionefficiency (e.g. most math videos are filled with dead space where the lecturer is just writing or drawing).

auto-editor --download-format "mp4" "<YOUR_YOUTUBE_URL>" and auto-editor "<PATH_TO_VIDEO>" are two invaluable commands. Note that Auto Editor is super-duper slow on .webms compared to .mp4s (hence --download-format "mp4").

Writing§

LibreOffice Writer (Suite)

Gentoo Package: app-office/libreoffice

LibreOffice Calc, Impress, and Writer are great programs that allow me to right essays, reports, et cetera.

I was also able to set custom colors to have all my LibreOffice applications match my system theme (Catppuccin Mocha), which doesn't have any effect on the colors of exported documents (as long as text colors are set to "automatic"), which is another bonus I really enjoy.

LanguageTool

Gentoo Package: app-text/languagetool

(Optional) Ngram Data: https://languagetool.org/download/ngram-data/

I use LanguageTool with n-gram support for grammar and spell checking in LibreOffice and VSCodium. There's also Firefox and Thunderbird extensions if that's your jam.

The n-gram data takes up a hefty 8gb of space and needs to be installed on a SSD, but it lets you catch errors like "Don’t forget to put on the breaks".

On Arch Linux there is a convenient AUR package for the ngram data, but on Gentoo you'll just have to manually install it. Luckily it is a one-time thing, as the data was created in 2015 and will not need to be updated until American English eventually shifts enough over time to require a new dataset that can handle sentences like "On god, your Grandma's mac & cheese is hella bussin' sheeesh!" or, "no cap just stay big mad because I'm based and redpilled. You're just a cheugy with a high body count tryna be boujee and calling me 'an incel' and 'a weirdo who got his social skills from tiktok and anime' for clapping back against radical anti-Jordan Petersonism. You can catch these hands if you want equal rights because the fax are that if you hit different (because I'm the default) then L+Ratio because that's totally sus. On god you're just an NPC boomer and I'm a mega-rizzed gigachad living rent free and stanning Joe Rogan-kun desudesudesudesu."

Anyways, I have LanguageTool start automatically with: languagetool --http --port 8081 --allow-origin "*" --languageModel "/usr/share/ngrams/"

Beware that LanguageTool will eat up a half a gigabyte of memory when idle and more than a gigabyte once it's parsing data. This is nothing on my desktop, but it would be wasteful on my ancient laptop, not to mention incredibly slow.

Search§

SearXng

GitHub Link: https://github.com/searxng/searxng

SearXng is a metasearch engine that I use to help to alleviate my pains with user-hostile design in other search engines.

To put it less eloquently, I fucking rage-quit using search engines after being hit with the millionth SEO spam StackOverflow mirror or Chegg clone or godawful shifting and bloated UI that loads unprompted image, GIF, and video carousels for seasonal theming or advertising or an event or whatever. Whatever it was that broke the camel's back, I quit.

I know that there are extensions for some of this stuff, but it's like trying to fix a boat leak with a stick of gum. Plus, using extensions is the #1 way to get hacked.

I set SearXng as my default search engine, which hijacked my muscle-memory of just hitting F6 in Firefox, typing in my query, and hitting enter. It was incredibly jarring at first, but I've gotten used to it and realized that I usually only need the top seven results to be good anyway.

Note that SearXng is the most difficult tool in this list and comes with a couple caveats:

  1. You will need to seriously RTFM. On Arch Linux there is a broken AUR package. On Gentoo there is no package at all, you'll just need to set it up in Docker.
  2. You will need to break bad habits fostered by Google trying to keep users on their platform indefinitely. The silver-lining is that breaking these habits will make your life easier.
    • A good example of this is using search engines as a unit converter or dictionary. You shouldn't even need an internet connection to do these things, yet Google wants to be our timer, dictionary, calculator, etc. But I digress.
      • I ended up enabling the "Dictionary", "Unit Converter", and "Spell Checker" plugins in KRunner, which is better than waiting for a webpage to load every time I want to define a word or convert a unit. Ironically, I had these KRunner plugins disabled for "performance" and "minimalism" when I was just offloading their work onto the web for worse performance, more bloat, and less privacy.
  3. Your results will not be as filtered as Google's results.
    • I don't mean this in a "getting around censorship"-way, but more of a "your videos tab will be perpetually filled with DailyMotion clickbait with thumbnails of women in bikinis irregardless of your query"-way.

Nicotine+

Gentoo Package: net-p2p/nicotine+

Nicotine+ is a client for the Soulseek P2P (peer-to-peer) filesharing network, which is geared mainly towards music.

You may be wondering, "wait, what is a P2P filesharing client doing here?"

Well, I've wasted a lot of my time looking for music on YouTube. And despite my attempts to get around it with userscripts, YouTube would still randomly choose to stop playing music with its annoying "Are you still watching?" prompt. Not to mention the pain of having your music stutter while you're doing something that doesn't even need an internet connection (e.g. typing in LibreOffice Writer).

If you're fine using proprietary services and/or not owning anything, have fun paying for a Spotify subscription. Or maybe you just really like "buying the rights to listen to" a song that's tied to your Apple/Google account that needs a browser DRM feature to be played.

For my use case I just occasionally download a couple gigabytes of songs from the Soulseek network depending on the mood I'm in and I'm all set for the month (usually just grabbing an artist's entire discography on a whim).

I also occasionally batch-convert a couple hundred tracks into incredibly low-bitrate and dynamically normalized (so that I don't have to adjust my volume on every album change while I drive) mp3s with FFmpeg to cram onto a tiny USB stick that gets plugged into my car stereo.

Using the Soulseek P2P network has a couple major advantages over using yt-dlp to download a playlist of music from YouTube or some other client that pulls stuff from a centralized source like Soundcloud or Spotify:

  1. You can get lossless tracks
    • Which you can always reencode if space is a concern
  2. You don't need to reencode anything. Just download, share, and forget
  3. You can find music that's hard to find (age, copyright, etc.)
  4. You can find music more easily
    • e.g. browsing a user's files to see if they have an artist's entire discography
  5. It's far more convenient than the hoop-jumping you need to perform on clearnet sites
    • e.g. changing domains, links to paid link services that try to outsmart UBlock Origin, dead links, overwhelming bias for the Billboard 100.
  6. You get metadata and cover art. The metadata is a lifesaver for my car stereo because it lets me filter by specific artists and albums.
  7. Longetivity of the Soulseek network and the music you'd like to listen to
    • Will you contribute more than the person sharing a multi-terabyte folder? Maybe not, but you can still curate a very nice collection of music for yourself and like-minded people.

To-Do List§

Todo.txt + Simpletask

GitHub Link(s): https://github.com/todotxt/todo.txt, https://github.com/todotxt/todo.txt-cli

F-Droid Link: https://f-droid.org/en/packages/nl.mpcjanssen.simpletask/

Todo.txt is a simple plaintext format for maintaining a to-do list. Simpletask is an app that lets me quickly edit and view my to-do list on my phone.

Previously, I used Tasks.org on my phone, a very powerful and open-source to-do application with lots of customizability.

In my quest to access my Tasks.org to-do list on my desktop and laptop, I found that every solution would always do at least one of the following:

I'm still playing around with my to-do list, I really miss nested tasks and Tasks.org's superior UI--so this section may change in the future.

Email§

Claws Mail

Gentoo Package: mail-client/claws-mail

Claws Mail is a lightweight, quick email client.

Previously I used Thunderbird hardened and debloated with a fork of Arkenfox.js (to remove all the telemetry and non-email client stuff), but that didn't solve the fundamental problem of having a RAM-hungry web browser running in the background 24/7 just to get my emails.

Of course, when it comes to extensibility, Thunderbird blows Claws Mail away because it's a web browser with extensions and add-ons for everything. I also miss the modern UI.

However, being able to have all my email accounts synced with 35.2 MB of RAM is a good deal for me.

Pomodoro§

Potato Redux

GitHub Link: https://github.com/Enchoseon/potato-redux

Alright, I swear this wasn't just a build-up to advertise my own project.

Pomodoro timers usually fall under the umbrella of "guru bullshit" (e.g. "cure your ADHD with time management!", "multiply your time by x10!", "calculate the dollar amount of your time and hire someone poorer than you to do your chores for less than that!", etc.)

On the other hand, I think Pomodoro timers are pretty useful for keeping track of time and recognizing when I've been procrastinating. In short, I don't follow the timer religiously.

However, something as simple as a Pomodoro timer shouldn't be a cross-platform Electron app or even a QT application.

So I found this bash script called "Potato" by Bladtman242 and tried using it, only to get stuck on minor things (e.g. I wanted notifications, then I wanted to enable Do Not Disturb, then I wanted to implement more of the Pomodoro technique, then I wanted better argument-parsing, etc.)

If you live perpetually in a r/UnixPorn screenshot, there are other Pomodoro CLI apps with ASCII art, inspiring quotes, and other hipster things.

But for my use case I'm fine with having a simple bash script in my drop-down Yakuake terminal (which I just split in half with CTRL+( so that I can use the other half for playing music with nvlc).

Ad-Block§

UBlock Origin

GitHub Link: https://github.com/gorhill/uBlock

uBlock Origin is a terrific content blocker. The web is hostile to users with its malware, trackers, ads, and other malware cover-up tools; not to mention distracting, bloated, and slow.

I have enabled all the built-in filterlists under "Built-in", "Ads", "Privacy", "Malware Domains", and "Annoyances" and very rarely get any broken websites. Broken websites I do get tend to be very DRM-heavy or tracker-focused / invasive-by-design (e.g. travel sites, payment portals, learning management systems) and I know to disable uBlock for them before I even visit.

I also use the following custom filterlists:

https://raw.githubusercontent.com/DandelionSprout/adfilt/master/ClearURLs%20for%20uBo/clear_urls_uboified.txt
https://raw.githubusercontent.com/DandelionSprout/adfilt/master/LegitimateURLShortener.txt
https://raw.githubusercontent.com/bogachenko/fuckfuckadblock/master/fuckfuckadblock.txt
https://raw.githubusercontent.com/quenhus/uBlock-Origin-dev-filter/main/dist/all_search_engines/global.txt

hBlock

GitHub Link: https://github.com/hectorm/hblock

hBlock is a system-wide adblocker that works by creating a hosts file. Because hBlock operates on lower system-wide level to uBlock Origin, the two tools are complementary.

Although hBlock isn't as useful or powerful as uBlock Origin, it can help out in certain cases and offers peace of mind. (e.g. using a different browser, having addons disabled, running sandboxed Wine applications, etc.)

Mouse§

Piper + KDE Keyboard Daemon

Gentoo Package: app-misc/piper

I have a love/hate relationship with my Logitech G600 multi-button mouse. You'll see why once you read about my setup.

To explain the tool combo:

Altogether, this is what my setup looks like:

You may be wondering what "Hacks for KDE Keyboard Daemon" is doing:

  1. CAPSLOCK and COMPOSE are valid single-key macros on my G600's onboard storage unlike CTRL or META, which don't work.
  2. I never use CAPSLOCK and rarely use COMPOSE, so they're great dummy keys
    • Though, this could theoretically be improved by using keys that aren't even on my keyboard as the dummy keys using a tool like Input Remapper (which I previously used before discovering that KDE already had a solution with less features built-in)
    • I do occasionally use the COMPOSE key, but it is in such an unergonomic place that I've rebound it to RIGHTALT.
  3. KDE Keyboard Daemon rebinds the dummy keys to their respective special characters.
    • In KDE I love using META+LEFTCLICK+DRAG and META+RIGHTCLICK+DRAG to move and resize windows with quick, general, intuitive movements. Combined with my tiling windows' auto-snapping and auto-resizing, this results in lightspeed movement that only requires me to use my ring finger that's already resting on the rightmost-click rather than holding META with my left hand

Despite my troubles and duct-tape with the dummy keys, the benefits have been worth it.

I still prefer to keep my hand off the mouse, but making the mouse more convenient to use, especially for navigating/manipulating my windows, has been a real gamechanger for me. Switching over to the mouse for no reduction in speed (in certain situations) also reduces the chance of me getting a repetitive strain injury (though, changing my keyboard to something with lighter keycaps has done a lot more for me in that department).

Cleaning§

BleachBit

Gentoo Package: sys-apps/bleachbit

I run BleachBit once every couple of months to delete junk files and free up space.

There's really not much more to say about it, BleachBit is very easy to use and difficult to mess up.

Though, beware of applications that use ~/.cache inappropriately. I had to whitelist ~/.cache/lutris/banners and ~/.cache/lutris/coverart after BleachBit deleted my cover art from my Lutris library.

Tangent on Lutris: If you want slightly less-pixelated Lutris banners, resize your covers to 184x69 before adding them! Personally I did this to a bunch of banners downloaded from SteamDB.info with mogrify -resize 184x69 header.jpg.

Alternatively, you can increase Lutris's zoom until the covers change from banners into vertical coverart, which take up more space but look a lot better (especially for my DS game library). You can download vertical covers from https://www.steamgriddb.com/.

Neovim§

Minor Caveat: Neovim is a versatile text editor that I enjoy using for note-taking and some coding. It's a versatile tool that bridges many gaps; but VSCodium remains my code editor, LibreOffice remains my report/essay editor, and Neovim is my text editor that has been heavily decked out such that it isn't shit at coding and can even handle some essay writing.

My Current init.vim: https://github.com/Enchoseon/dotfiles/blob/master/.config/nvim/init.vim

Vim Plug

GitHub Link: https://github.com/junegunn/vim-plug

Vim Plug is my plugin manager.

Goyo.vim + Limelight.vim

GitHub Link: https://github.com/junegunn/goyo.vim

GitHub Link: https://github.com/junegunn/limelight.vim

Goyo is an addon that allows for the removal of unnecessary UI elements and the addition of margins for more readability, primarily for writing Markdown.

Limelight dims every line except for the ones near your cursor.

I have Goyo and Limelight start automatically whenever I start editing a Markdown file.

Markdown Preview.nvim

GitHub Link: https://github.com/iamcco/markdown-preview.nvim

Markdown Preview provides an in-browser Markdown preview with support for a slew of Markdown extensions (e.g. KaTeX, Mermaid, Chart.js, etc.) Why use an Electron app when you can just use a web browser on your own terms?

Bullets.vim

GitHub Link: https://github.com/dkarter/bullets.vim

This plugin adds intuitive bullet-point behavior to Markdown files. These changes are incredibly useful when editing Markdown (e.g. automatically-numbered ordered lists, continue a list by pressing enter, support for toggling GitHub-style checkboxes with <LEADER>+x, etc.)

Vim Pandoc + Vim Pandoc Syntax

GitHub Link: https://github.com/vim-pandoc/vim-pandoc

GitHub Link: https://github.com/vim-pandoc/vim-pandoc-syntax

These plugins provide easy integration with Pandoc, a tool for converting markup into various file formats.

This is useful for doing things like exporting my markdown notes into a wide variety of formats with immense customizability, or exporting markdown into MLA-formatted PDFs

For example, you could do pandoc "example.md" --pdf-engine=xelatex -o "example.pdf" and set up an alias or keybind, or you could just do :Pandoc pdf in Neovim.

Nvim Treesitter

GitHub Link: https://github.com/nvim-treesitter/nvim-treesitter

Nvim Treesitter provides fast and slick syntax highlighting for a wide variety of formats with treesitter.

Vim Fugitive

GitHub Link: https://github.com/tpope/vim-fugitive

Fugitive provides Git integration in Neovim's non-interactive shell console. Do :G to run arbitrary Git commands, sit back, and relax.

Telescope

GitHub Link: https://github.com/nvim-telescope/telescope.nvim

Telescope provides a fuzzy finder with live grep functionality. Useful for notes, code, etc.

LSP Zero

GitHub Link: https://github.com/VonHeikemen/lsp-zero.nvim

This is essentially a metapackage consisting of 10 different plugins for LSP support, autocompletion, and snippets; consiting of who-knows how many NPM packages.

The heaviness, non-async nature, and slowness on large files is a huge downside.

Conclusion§

Missing Pieces§

Despite my best efforts, there are still a couple missing pieces that I'm unhappy with.

WolframAlpha

Tip: Use WolfreeAlpha if you are a student with no time to explore other options!

"This article may have been created or edited in return for undisclosed payments, a violation of Wikipedia's terms of use. It may require cleanup to comply with Wikipedia's content policies, particularly neutral point of view. (September 2022)"

Stephen Wolfram is a $200 million-dollar robber baron who built Mathematica by stealing from the REDUCE computer-algebra system. He wrote a shitty, crackpot book claiming to rewrite science because apparently all rich snobs are desperate to be known for contributing something to society.

Related Reading: "A Collection of Reviews of ANKOS and Links to Related Work" and the humor page

I'd like an open-source alternative to WolframAlpha. That is, I'd like a open-source computer-algebra system that can process natural language, give step-by-step solutions, and be self-hosted easily.

I don't forsee an open-source WolframAlpha alternative cropping up anytime soon without any major funding.

Even with all the interest in NLP caused by OpenAI's release of ChatGPT, all we've gotten is people making little tools that send your essay/presentation/code/healthcare information/email/whatever into a third-party proprietary blackbox. My condolences to IT teams around the world.

Todo.txt

Todo.txt is the solution I stopped on, not the solution I chose.

Why? Because of all the integrations with tools like topydo or Simpletask. Its plaintext nature also makes it trivial to sync with Syncthing.

Unfortunately, the design paradigm conflicts directly with subtasks, which makes it practically worthless for actually managing my to-do list beyond the syncing and widespread integration.

A short list of various solutions I've tried or looked at:

The only solution I see now is learning Emacs Evil Mode for Org Mode. However, I don't know Org Mode has the features I want and if it'll be worth giving up the far wider todo.txt ecosystem, especially topydo's awesome column dashboard.

It's a hard decision because I've already sunk countless hours into this and I don't want to sink countless more into configuring and learning Emacs.

Firefox Mozilla

I think that Mozilla does a net amount of good with the Firefox web browser.

Firefox is also crammed with user-hostile design like telemetry or Pocket or the "studies" backdoor or that Mr. Robot add-on fiasco. I get it, r/StallmanWasRight, whoop-de-doo.

That doesn't change the fact that "lighter" and "security-focused" forks of Firefox or other browsers:

In short, I really don't have any options other than to keep using hardened Firefox with some userChrome.css tweaks; and I don't see any alternatives worth switching to.

Parting Thoughts§

I hope that you were able to take away something that will help you in your own life. Kinda like reading someone's dotfiles and adapting the bits that interest you for yourself.

I'm well-aware that I filled this blog post with many tangents and rants, for which I don't apologize because this is my blog post, not my dotfiles.

As you adapt whatever helpful tidbits you found today and integrate it into your own life, just remember to put your foot down and make a decision eventually. Otherwise you'll waste countless hours trying to achieve the unattainable, like I continue to do with my to-do list.

Super Fantastical 7: The Oakley Mystery →