The fish shell, makes using the shell feel almost painless.
Hammerspoon, I use it to automatically switch audio devices based on context, so every call uses the best microphone currently available, window management via keystrokes, limiting media keys to Spotify, tons of other things. Indispensable.
Arduino, I don't think I would be able to tinker with microcontrollers as much if I had to write C and use obscure toolchains directly.
Solvespace, a limited but usable free CAD for simple parts to be 3d printed. Wish there was a real contender to the commercial ones though, or a free tier that doesn't smell like it's going away any time. Still very thankful that SolveSpace exists.
The Scala 3 compiler and the VSCode plugin for v3. Absolutely love the language and the experience is so much better than with IntelliJ, haven't had as much fun writing code in ages.
This will be a bit controversial, but Kubernetes, because if people use it via GKE, EKS etc. then I won't have to learn their organically grown solution to the same dozen-or-so operations problems, and I have yet to see one that isn't a hot mess in some way or other. Also anything running on top of Kubernetes won't be built the very old-fashioned vi-edits-on-server way, great for sanity.
Various modern messenger apps (Telegram, Whatsapp, Instagram's direct messages, ...) because I would hear a lot less from some highly cherished and very non-technical people in my life without these incredibly slick and fun and convenient apps. As one who's old enough to remember being dependent on landlines and payphones and letters, this still feels like a miracle.
> This will be a bit controversial, but Kubernetes, because if people use it via GKE, EKS etc. then I won't have to learn their organically grown solution to the same dozen-or-so operations problems, and I have yet to see one that isn't a hot mess in some way or other. Also anything running on top of Kubernetes won't be built the very old-fashioned vi-edits-on-server way, great for sanity.
I appreciate this perspective. It's sane. But my consistent experience has been that the complexity permitted by the Kubernetes configuration surface area tends to be larger, more complex, and ultimately more difficult to wrangle than the complexity introduced by (reasonably coherent) home-grown systems.
I would generally prefer to be responsible for a bespoke solution, with all of its warts and pathologies, than for a Kubernetes deployment. The problems of the former tend to be at least tractable; wrangling Kubernetes to a reasonable level of availability is in my experience only possible if you dedicate your career to it.
Got any Hammerspoon config to share? I've used it for simple stuff for years, but recently noticed that people use it for window management, and macos' handling of windows on my second monitor is driving me nuts...
Scala Metals team are absolute beasts, I can't really tell of other instances where it's so easy to get almost a full blown IDE out of vim so easily (as a total beginner).
Absolutely! I teach a CS class in my university and encourage my students to try them out. (It's a class where students are free to pick the language to use, but they usually end up using C++, C#, or Kotlin.) They seem to love the many suggestions the IDE provides about code style, and the visual clues that suggest how to use some syntax. At the end of the semester, many of them have thanked me for that tip, saying that «I would have never imagined that an IDE could teach me how to write better code!».
Visual Studio Code works with many more languages, loads an order of magnitude quicker, has amazing settings sync and a rich community of plugin developers. And it's free.
If you haven't properly checked it out, you owe it to yourself to do so.
Last week I learned some cool mouse and keyboard shortcuts in JetBrains, only to then discover they also did the same action in Visual Studio! No more “right click-go to definition” for me! I was presently surprised at how polished it was
Shellcheck https://github.com/koalaman/shellcheck : Shell scripts are unavoidable, you have to write one every now and then but shell is a terrible language with massive footguns around every corner. I don't write shell scripts extensively enough to remember all those footguns and even if I did, not sure I'd want to waste brainpower remembering all that archaic trivia.
Shellcheck makes writing shell scripts bearable and dare I say somewhat enjoyable. They have managed to collate all the shell scripting potholes and tribal knowledge into one static analysis tool. No shell script now gets checked in at work or on my personal machine without being pumped through shellcheck.
Python - It (still) makes writing software enjoyable for me.
Type annotations: Started using them this year and it allows my editor to give me all sorts of hints about things I'm doing wrong.
Typer / Click: I've been writing a bunch of CLIs this year and Typer and Click make this really fun.
Wezterm: Went all in on this terminal 3-4 months ago and it's really great! In particular I like the "copy mode" features and it's "tmux+mosh" abilities.
LunarVim: Been using it for ~9 months, and it gives me all the advanced developer features I felt like I was missing in my various attempts at a custom vim setup, without the pain.
sway / i3wm: On my 4th year using it and it just fits my workflow so well.
I use a VPN into my home network at all times for exactly this reason.
Also useful to circumvent iOS's sorry state of ad blocking. I use an ad blocker on my device, too, but the pi-hole takes care of 90% of the stuff that annoys me.
I've donated a few times; consider buying the devs a cup of coffee!
If you want to avoid the rigamarole of self hosting, I recommend NextDNS. It's a paid DNS service with tons of customizability (i.e. Ad blocking) and visibility (i.e. logs)
On a similar note for Windows: Everything Search. Blazing fast, super easy syntax, powerful search tools. Almost don't remember where most things are stored on my hard drive these days, since they're all just a shortcut and a few characters away
I don't know if the blame is fzf's or cygwin's, but when i used to use cygwin I would just install everything in Setup, and that meant that i at a certain point i got fzf with (what?) default config.
It was a hot mess and took over several bash/emacs control keys. It did a nice job of searching history, but I hated that it paralyzed my keyboard usage
> WireGuard is a great demonstration of why the total complexity of the implementation ends up affecting the UX of the product.
This is absolutely true! Probably everything you could do with WireGuard you could accomplish with OpenSSL/OpenVPN, but the complexity is staggering. This makes it much more difficult to troubleshoot and far more likely that there will be an error in the configuration that could lead to compromise.
Getting it set up was really easy. I think it took about an hour, which included standing up a new OpenBSD VM to run the server. Configuring clients (iOS) was pretty straight-forward and reasonable. I don't have a feeling that there's some security hole lurking in the configuration simply because there's not a lot to get wrong.
In comparison, IKEv2/IPSec was incredibly painful, especially when you also create configuration profiles for iOS and have to issue and distribute certificates. Once I understood how it worked it made some sense, but there's always that nagging feeling that I've screwed up the configuration because there's just so many options to get wrong. I've probably spent six hours, not all at once of course, getting it working and set up "just so."
In spite of all of this, I'm continuing to use my IKEv2/IPSec setup. I have not figured out how to get WireGuard to do split DNS, whereas this was a fairly simple part of the IKEv2/IPSec setup. The other requirement I have is split tunnels, but I think WireGuard can do that fairly easily.
I wish more developers would work on this, making sure their product works straight out of the box. Lots of software requires setting up additional things like Redis, an SQL server, Docker, a proxy server, etc... All those things are in most cases unnecessary. I understand that for high load scenarios they are needed but for small time setups it's just overkill. Make it run with sane defaults and when the time comes to scale up, then those other things can be added.
Stuff I'm thankful for, in no particular order. None of these are particularly unique to me, nor are they obscure and hipster, they're just stuff I have found myself really thankful for.
asdf because it manages versions of software for me really well and it has thus far been rock solid reliable. https://asdf-vm.com/
Emacs because it's about as configurable and customizable as my most insane requirements. And emacs lisp is very cool. Similarly, vim and vscode are also dear to me.
Factorio! because of course Factorio, it's amazing. Similarly Kerbal Space Program.
Firefox for standing up against the chrome hegemony nowadays, and for being so exciting back in 1998 with its initial open source decision.
And Tree Style Tabs, because every time I have to use a browser without it, my skin crawls at the lack of organization. https://github.com/piroor/treestyletab
And the big ones: grep, sed, awk, cut, sort, uniq, jq for all the times they've turned something incomprehensible into something useful to this tiny mind.
EDIT: oh and zsh because zmodload zsh/datetime gives me $EPOCHSECONDS which makes life so much easier to make cool prompt segments like "days and hours since last commit" and "remaining auth session time in minutes and seconds"
# display time since last commit in days and hours
gdate -d @$(($EPOCHSECONDS-$(git log -1 --format=%ct))) -u +"(%-dd %-Hh ago)"
I think, you want to take the difference and divide by 86400 to get the number of days. Then take the difference modulo 86400 to get seconds in a day, and convert that to hours (minutes:seconds) via strftime string.
Oh, I use ncdu too. Really wonderful tool, loving it.
Also zstd, yeah, I use it on ZFS, and man, it saves me so much space its impressive, even on games lol
I used Baobab which is bundled into Ubuntu to drill down and find space hogs and folders which have 100000s of files. The latter helped me shorten moving all my files between PCs.
Yes, I fucking hate Windows 10/11 for several laundry lists' worth of reasons, but you know what? At the end of the day, Windows is the only desktop OS that enables me to use my computer to do the shit I need or want to do.
So long as that fundamental principle as a tool is not violated, I will forever be thankful for Windows regardless what criticism I might have for it.
- Linux
- gcc, vim, git, make, et al
- KDE
- firefox
- yakuake (terminal that drops down like the old Quake console used to)
- libre office
- mpv
- Steam and Proton (which have made gaming work very well on Linux and have contributed to the complete loss of all productivity gained by any of the above programs).
Software I’m Thankful For: the linux kernel and the gnu userland that's the base for the linux distributions I'm using for the last 20 years. I can't image a life without them.
Software I'm thankful for (2022): Everything open source, even that which I do not use myself, because it's still there to benefit others, and it's there for me to learn from, adapt, etc, etc. Even bad open source software can be a good lesson in how not do to a thing, or may have some good bits worth learning from or adapting. So yeah, I'm thankful for open source software … All of it. My use of computers has been richer for it.
ffmpeg is one software that comes to mind. At first it sounds and looks complicated, but all the internet video is ran by it, and now even for small stuff I use it with admiration
Fucking finally somebody that says cygwin. Everybody nowadays is "wsl2 this, wsl2 that" but they forget that the OG, which still blows wsl2, it's CygWin. I use it for 2 decades, one of the 2 programs I install whenever I need to use somebody else (usually client) PC; the other one is uBlock Origin.
Mostly agree but I don't see goroutines (or go itself) as anything truly great for concurrent (many blocking operations waiting for external events) or parallel (using multiple cores to solve a problem faster than a single core could). It seems like just about everything with goroutines existed in some form or fashion in other widely used systems, but I'm always curious if I'm missing some magic.
Ultimately the software I'm thankful for is linux/GNU/python as that combination has not only ensure my continued employment, but the productivity of thousands of next-generation scientists.
[+] [-] sleepycatgirl|3 years ago|reply
Anki - Software, that helped me build up habit, and made learning language an easier task
Emacs - Wonderful text editor, made interacting with system a bliss.
Nix/NixOS - Distro, that made updates a painless, and fearless task. I love it.
ZFS - Filesystem that I love, for it has many wonderful features, and they all just work. (Also cute compression)
Wine + DXVK/VKD3D - Thanks to this, I was able to completely drop windows partition, and go full Linux.
LaTeX - Thanks to it, I could have cute workflow for writing documents (And yesterday, wrote CV with its' help :D)
Calibre - Man.. what a behemot of book software. Makes anything ebook related painless
Common Lisp(SBCL) and Haskell(GHC) - Very interesting languages, with very wonderful features. I love them both.
Cool retro term - For playing roguelikes, lets me experience them in very retro, retro way.
Obviously, ublock origin, makes browsing web not a nightmare.
Aseprite - wonderful pixelart software.
There is more, but... I will stop there, to make the comment.. not too long.
[+] [-] PointyFluff|3 years ago|reply
[+] [-] barumrho|3 years ago|reply
[+] [-] ziotom78|3 years ago|reply
[+] [-] throwaway83734|3 years ago|reply
[deleted]
[+] [-] dividedbyzero|3 years ago|reply
Hammerspoon, I use it to automatically switch audio devices based on context, so every call uses the best microphone currently available, window management via keystrokes, limiting media keys to Spotify, tons of other things. Indispensable.
Arduino, I don't think I would be able to tinker with microcontrollers as much if I had to write C and use obscure toolchains directly.
Solvespace, a limited but usable free CAD for simple parts to be 3d printed. Wish there was a real contender to the commercial ones though, or a free tier that doesn't smell like it's going away any time. Still very thankful that SolveSpace exists.
The Scala 3 compiler and the VSCode plugin for v3. Absolutely love the language and the experience is so much better than with IntelliJ, haven't had as much fun writing code in ages.
This will be a bit controversial, but Kubernetes, because if people use it via GKE, EKS etc. then I won't have to learn their organically grown solution to the same dozen-or-so operations problems, and I have yet to see one that isn't a hot mess in some way or other. Also anything running on top of Kubernetes won't be built the very old-fashioned vi-edits-on-server way, great for sanity.
Various modern messenger apps (Telegram, Whatsapp, Instagram's direct messages, ...) because I would hear a lot less from some highly cherished and very non-technical people in my life without these incredibly slick and fun and convenient apps. As one who's old enough to remember being dependent on landlines and payphones and letters, this still feels like a miracle.
[+] [-] preseinger|3 years ago|reply
I appreciate this perspective. It's sane. But my consistent experience has been that the complexity permitted by the Kubernetes configuration surface area tends to be larger, more complex, and ultimately more difficult to wrangle than the complexity introduced by (reasonably coherent) home-grown systems.
I would generally prefer to be responsible for a bespoke solution, with all of its warts and pathologies, than for a Kubernetes deployment. The problems of the former tend to be at least tractable; wrangling Kubernetes to a reasonable level of availability is in my experience only possible if you dedicate your career to it.
[+] [-] wan_ala|3 years ago|reply
[+] [-] jstanley|3 years ago|reply
Yes, it's harder to get started, and it's less fun to use, but it is more powerful. I wrote a comparison of the two earlier this year[0].
[0] https://incoherency.co.uk/blog/stories/freecad-vs-solvespace...
[+] [-] alanbernstein|3 years ago|reply
[+] [-] barrenko|3 years ago|reply
[+] [-] d3nj4l|3 years ago|reply
[+] [-] zuhsetaqi|3 years ago|reply
[+] [-] _ink_|3 years ago|reply
[+] [-] ziotom78|3 years ago|reply
[+] [-] bonestamp2|3 years ago|reply
[+] [-] archon810|3 years ago|reply
If you haven't properly checked it out, you owe it to yourself to do so.
[+] [-] billyhoffman|3 years ago|reply
[+] [-] avl999|3 years ago|reply
Shellcheck makes writing shell scripts bearable and dare I say somewhat enjoyable. They have managed to collate all the shell scripting potholes and tribal knowledge into one static analysis tool. No shell script now gets checked in at work or on my personal machine without being pumped through shellcheck.
[+] [-] linsomniac|3 years ago|reply
Type annotations: Started using them this year and it allows my editor to give me all sorts of hints about things I'm doing wrong.
Typer / Click: I've been writing a bunch of CLIs this year and Typer and Click make this really fun.
Wezterm: Went all in on this terminal 3-4 months ago and it's really great! In particular I like the "copy mode" features and it's "tmux+mosh" abilities.
LunarVim: Been using it for ~9 months, and it gives me all the advanced developer features I felt like I was missing in my various attempts at a custom vim setup, without the pain.
sway / i3wm: On my 4th year using it and it just fits my workflow so well.
[+] [-] scorxn|3 years ago|reply
[+] [-] dont__panic|3 years ago|reply
Also useful to circumvent iOS's sorry state of ad blocking. I use an ad blocker on my device, too, but the pi-hole takes care of 90% of the stuff that annoys me.
I've donated a few times; consider buying the devs a cup of coffee!
[+] [-] vanshg|3 years ago|reply
[+] [-] tobinfekkes|3 years ago|reply
Using someone else's device and off my network is entirely scary.
[+] [-] zuhsetaqi|3 years ago|reply
[+] [-] scop|3 years ago|reply
fzf (https://github.com/junegunn/fzf)
I can only wonder how much time fzf has saved me in the long term.
In terms of "software that I don't use for writing software", iA Writer is probably what I am most grateful for.
[+] [-] idealmedtech|3 years ago|reply
[+] [-] graton|3 years ago|reply
My favorite fzf usage (but not the most often used) is this alias I put in my ~/.gitconfig file
So I do: git frbi (which to me means Fzf ReBase Interactive)And then can easily pick what commit I will use as my starting point for doing some rebase work.
[+] [-] fsckboy|3 years ago|reply
It was a hot mess and took over several bash/emacs control keys. It did a nice job of searching history, but I hated that it paralyzed my keyboard usage
[+] [-] loudmax|3 years ago|reply
This is absolutely true! Probably everything you could do with WireGuard you could accomplish with OpenSSL/OpenVPN, but the complexity is staggering. This makes it much more difficult to troubleshoot and far more likely that there will be an error in the configuration that could lead to compromise.
[+] [-] Mister_Snuggles|3 years ago|reply
Getting it set up was really easy. I think it took about an hour, which included standing up a new OpenBSD VM to run the server. Configuring clients (iOS) was pretty straight-forward and reasonable. I don't have a feeling that there's some security hole lurking in the configuration simply because there's not a lot to get wrong.
In comparison, IKEv2/IPSec was incredibly painful, especially when you also create configuration profiles for iOS and have to issue and distribute certificates. Once I understood how it worked it made some sense, but there's always that nagging feeling that I've screwed up the configuration because there's just so many options to get wrong. I've probably spent six hours, not all at once of course, getting it working and set up "just so."
In spite of all of this, I'm continuing to use my IKEv2/IPSec setup. I have not figured out how to get WireGuard to do split DNS, whereas this was a fairly simple part of the IKEv2/IPSec setup. The other requirement I have is split tunnels, but I think WireGuard can do that fairly easily.
[+] [-] RedShift1|3 years ago|reply
[+] [-] onehair|3 years ago|reply
OpenVPN was always a nightmare
[+] [-] bloopernova|3 years ago|reply
powerlevel10k because it makes adding custom sections to my shell prompt really straightforward. https://github.com/romkatv/powerlevel10k
terraform because I have a job wrangling it lol
asdf because it manages versions of software for me really well and it has thus far been rock solid reliable. https://asdf-vm.com/
Emacs because it's about as configurable and customizable as my most insane requirements. And emacs lisp is very cool. Similarly, vim and vscode are also dear to me.
Factorio! because of course Factorio, it's amazing. Similarly Kerbal Space Program.
Firefox for standing up against the chrome hegemony nowadays, and for being so exciting back in 1998 with its initial open source decision.
And Tree Style Tabs, because every time I have to use a browser without it, my skin crawls at the lack of organization. https://github.com/piroor/treestyletab
And the big ones: grep, sed, awk, cut, sort, uniq, jq for all the times they've turned something incomprehensible into something useful to this tiny mind.
EDIT: oh and zsh because zmodload zsh/datetime gives me $EPOCHSECONDS which makes life so much easier to make cool prompt segments like "days and hours since last commit" and "remaining auth session time in minutes and seconds"
[+] [-] kazinator|3 years ago|reply
I think, you want to take the difference and divide by 86400 to get the number of days. Then take the difference modulo 86400 to get seconds in a day, and convert that to hours (minutes:seconds) via strftime string.
Proof of concept:
[+] [-] danparsonson|3 years ago|reply
[+] [-] ziotom78|3 years ago|reply
- ncdu, to find out which files and folders take up most of the disk space [1]
- julia, because scientific programming was never so fun and fast [2]
- midnight commander, because a TUI implementing Norton Commander dual-pane view is so useful! [3]
- lazarus, because creating multi-platform desktop apps couldn't be simpler [4]
- zstandard, its performance are awesome!
[1] https://dev.yorhel.nl/ncdu
[2] https://julialang.org/
[3] https://midnight-commander.org/
[4] https://www.lazarus-ide.org/
[5] http://facebook.github.io/zstd/
[+] [-] sleepycatgirl|3 years ago|reply
[+] [-] aitchnyu|3 years ago|reply
[+] [-] Dalewyn|3 years ago|reply
Yes, I fucking hate Windows 10/11 for several laundry lists' worth of reasons, but you know what? At the end of the day, Windows is the only desktop OS that enables me to use my computer to do the shit I need or want to do.
So long as that fundamental principle as a tool is not violated, I will forever be thankful for Windows regardless what criticism I might have for it.
[+] [-] godshatter|3 years ago|reply
[+] [-] rlam2x51|3 years ago|reply
Beyond Compare 4 - compare files and folders https://www.scootersoftware.com/
uBlock Origin - An efficient blocker add-on for various browsers. Fast, potent, and lean. https://github.com/gorhill/uBlock
Those tools made my life so much easier. Can't recommend them enough.
Just a happy user and not affiliated
[+] [-] vincent-manis|3 years ago|reply
[+] [-] rs_rs_rs_rs_rs|3 years ago|reply
[+] [-] blooalien|3 years ago|reply
[+] [-] onehair|3 years ago|reply
[+] [-] tezza|3 years ago|reply
[+] [-] unnouinceput|3 years ago|reply
[+] [-] danpalmer|3 years ago|reply
[+] [-] dekhn|3 years ago|reply
Ultimately the software I'm thankful for is linux/GNU/python as that combination has not only ensure my continued employment, but the productivity of thousands of next-generation scientists.