Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: Programs that saved you 100 hours?
629 points by zJayv on April 12, 2020 | hide | past | favorite | 516 comments
I learned about a ton of useful CLIs, desktop apps, and SaaS products from this thread (https://news.ycombinator.com/item?id=13887237).

But it was posted 3 years ago, and perhaps some useful stuff has emerged in the interim, hence my starting this thread.




The Z command line utility has saved me a ton of time. It remembers the directories you’ve visited and lets you jump to them with just a few characters. Almost like Chrome’s autocomplete for recently-visited directories (if you’re used to being able to type “g” to go to gmail or “n” for “news.ycombinator.com”...). For instance I can run “z B” and it’ll jump to my ~/Business directory (and “z ss” would do the same).

https://github.com/rupa/z


I couldn't do without a 'bookmarks' feature that I implemented for my terminal. It's triggered with `Alt+b`:

1. Scan an eternal history file for `cd` with absolute path except for /tmp/*

2. Sort and filter out duplicates

3. Call fzf and let user pick the desired result

4. Upon selection don't enter the directory but instead type `cd <selection>` into the prompt so that the user can navigate further using <Tab>.

What's nice about this approach is that it automatically builds your bookmarks, but only from `cd` commands where you deliberately used an absolute path.

Here's the code. It has some prerequisites (fzf[0] and ~/.eternal_bash_history[1]) and probably only works with my terminal (Xfce Terminal); it took a bit of tinkering to get it to work.

  # ~/bashrc.d/aliases.sh
  __b() { # bookmarks; props to fzf for providing examples of READLINE configuration
    local selected="cd "$(cat ~/.bash_eternal_history | grep '^cd /' | egrep -v '\.\.|/tmp' | awk '{print $2}' | sort | uniq | fzf --exact)
 
    READLINE_LINE="${READLINE_LINE:0:$READLINE_POINT}$selected${READLINE_LINE:$READLINE_POINT}"
    READLINE_POINT=$(( READLINE_POINT + ${#selected} ))
  }

  bind -m vi-insert -x '"\eb": "__b"' 2>/dev/null

[0]: https://github.com/junegunn/fzf

[1]: https://stackoverflow.com/a/19533853


I prefer my own kd, which is 40 dead simple LOCs of shell and is predictable since it operates only on dirs you added (which sounds like a chore but is just fine in practice)

    kd foo $PWD  # stores as foo
    kd f         # jumps to foo
    kd           # in a Ruby project subdir, jumps up to where the Gemfile is
https://github.com/lloeki/dotfiles/blob/master/shell/kd


Just updated kd with a long-time feature I wanted: tty detection!

   kd f             # => jumps to foo
   echo $(kd f)     # => outputs foo's path
   # some creative, if nonsensical, examples:
   cp some/file $(kd foo)/app/controllers/whatevs
   cp $(kd bar)/Gemfile $(kd foo)/Gemfile
   kd foo && cd app/controllers && cp $(kd)/config/whatever .
This is useful and possible because kd's output is stable and predictable: it always returns the last prefix match of the kdrc file (or, without argument, the project's top-level dir), and it returns non-zero rc on failure. Plus zsh will even gladly expand the result on <TAB> for double checking.


This is one of those things I set up a decade ago and it's become such a part of how I use my computer that I'm confused for a moment whenever it's not there.

It's one of those rare tools that interacts with my stream of consciousness which is one step away from mind reading.


Hehe since i got to know 'cd -' which changes back to the last directory i did not miss this feature - but it sounds interesting, and i should try it out.


You're going to love pushd and popd.


Did you mean "(...) almost like _Firefox's_ autocomplete (...)"?

I know this is OT but one of the reasons I've switched is history search that actually works.


For this particular case, I use a ncurses based file manager: ranger


Instead of z, I use https://github.com/wting/autojump, which is written in Python. This has the benefit that you can call it from outside the shell, too.

Since I also love ranger as a file manager, I wrote my own integration of both: https://github.com/fdw/ranger-autojump . It remembers where I went in ranger, and I can also call autojump in ranger.


another popular alternative I see mentioned a lot https://github.com/wting/autojump

> autojump is a faster way to navigate your filesystem. It works by maintaining a database of the directories you use the most from the command line.


VSCode, and/or Sublime Text have probably saved me a hundred hours I would have spent waiting for Eclipse to start.


Couldn't agree more.. People who say Electron (on which VSCode is running) is bloated and is slow probably haven't worked on full fledged IDEs using Java.. they consume memory in Gigabytes, are slower, at least appear to be slower, despite using native UI and takes a lot longer to open.


How often do you open your IDE though?

I switched form VSCode to PHPStorm half a year ago, and while it feels a bit slower, the improvements are so unbelievable worth it for me. It does have a taste for memory, but then again, it easily saves me a lot of time each month, so just throwing RAM at it was a no-brainer for me.


I use PyCharm and tried several times to such to vscode. I forced myself to only use vscode for 10 days.

I was relieved when I switched back to PyCharm.

Vscode is nice but still quite far away from some good IDEs.


Depends... I'll open/close a few times a day as I touch several projects. I can use VS Code for everything from db/sql, react, node and c# (.net core) projects. I also have used it for a little rust and golang.

As to the RAM, it's using around 1.2gb between vs code and the connecting server (WSL2), multiple isntances vary... but with the number of containers and VMs I'm running, I'm generally well over 16gb of use, and I have 64gb on my desktop. So even without VS Code, I have trouble on a 16gb system.


Yeah, IntelliJ-based IDEs are hungry, but even if mobile, I figure I'd just spend the extra money to get plenty of RAM, it's that good (to me at least).

I usually run 3-5 instances for different projects and it'll hover around 3gb RAM, but it appears that they share a lot of memory, closing one or opening an additional project has no visible impact.


In my case, often several times an hour. I work across 6-10 dofferent repositories. Opening them all at once is impractical, so being able to open each of the them quickly is quite important.


Have you tried multiple repositories in a VSCode workspace? It does a great job of managing multiple repos, git diffs, etc.


The problem I have with this is it makes "Go to file" functionality a bit too broad. e.g. If I want to open `package.json` I now have to choose between 10 different files. As I often `Cmd-P`, type pa, `Enter` without even looking, this makes it considerably slower.

I also have to do a lot of context switching (e.g. to review someone else's code), and being able to have a separate set of tabs (even within the same repo) is super-useful for this.

At previous jobs with less separated out code, I have taken this approach (although with Sublime Text rather than VSCode).


Agreed... deeply nested directory structures are also pretty painful.

Even in the mono-repos I work with, I'll generally open an editor per inner repo. Mostly ./feature/featurename/filename is as far as I have to open. Some of the C# projects are deeper though.


Or they have worked on full-fledged IDE's like VS 6, which starts up quickly and is super responsive even on period hardware.


Oh how the tables are turned... Coming from VS2008-2010, it's weird to see someone said Visual Studio is fast


VS2019 is pretty damn good.

I use it daily for .net coding, while i use VS code for everything else.


VS2019 is pretty fast, provided you don't use too much plugins.


Eclipse isn't a particularly good user of Cocoa, is it?


It does something completely its own (and horrible/slow) on Windows (possibly one of the 6534 equally awful Java UI packages), so I can't imagine it does anything better with iOS.


Eclipse uses SWT, which actually piggybacks on native toolkits, though I don't know if it doesn't go through some ancient version of GTK in the process.

AWT/Swing based IntelliJ manages to be much, much faster in comparison.


I think you mean macOS.


That seems odd to me. I basically never close my IDE. Sure, I might put the laptop to sleep in between or disconnect from the remote desktop server, but I rarely need the 500 MB that my IDE consumes, so there's little point in every closing it.


To each their own. It always fascinates me to hear about Java/.NET environments that massive. Do you only work on 1 project for months at a time? Do you not ever need to reboot into another OS? Is your laptop power efficient? Do you have a separate machine just for Gaming?

I mostly program in languages like Ruby & Perl using Vim. Even with my decked out version that has 35 plugins, and some other bells and whistles, I'm on average using 20 MB of RAM. Open/Close is near instantaneous.


Depends on your projects... I don't like to use the same editor for ui/db/api/service that may be related.


+1 for Sublime Text for being so darn fast.


And if you need something even lighter, something like a better Notepad is enough. Lightweight text editors are a dime a dozen, but I'm personally a fan of notepad2 / notepad2-mod / notepad3; even if they don't have tabs.

Also shout out to LINQPad, for letting me test quick snippets of C# with better visualization than Visual Studio. It's also a better alternative to Sql Server Management Studio for running SQL.


I finally switched from VSCode/Sublime to Spacemacs about a year ago ( It was my 3rd try switching ).

I'm sure this saved me an additional hundred hours.


+1 for VSCode for its configuration portability plugin, settings sync. It’s never been so easy to sync editor changes across my machines, and I’ve only had 1 dependency issue using it in 4 years. No longer having to maintain my vim config and dependencies has been great.


I believe Settings Sync is going to be included in the next release of VS Code. Yay!

The amount of work Microsoft is putting in this editor is amazing. Last month we got file history, that was the last thing I needed to ditch the Git GUI I had installed.


I use vscode but it's missing some basic code features for me. The biggest for me is probably keyboard macros, something that's been a basic feature of editors since at least the 80s. Keyboard macros in other editors has saved me 100s of hours.

https://github.com/microsoft/vscode/issues/4490


Curious, what do you think of multi-cursor as a replacement for macros?

(I’m on the team)


As an emacs user, I view multi-cursor as suitable for only a subset of macro usage. Macros are inspectable, editable, savable, able to be applied across files, easily used a variable N times.

My typical pattern is something like: define it, try it, adjust it, then apply variable times (including “infinite until error”), maybe save 1% of them. That often takes less time to do than it just took me to describe.

I use macros probably 25x for every one time I reach for multi-cursors, though to be fair, if I came the other way, I’d probably use multi-cursor more often than currently. (I used macros for 30 years before getting multi-cursors, so if both can do the job, I’ll use a macro.)


> Macros are inspectable, editable, savable, able to be applied across files, easily used a variable N times.

In my experience with multicursor, I don't need to be able to "inspect" the operation as the act of typing it is inspection in and of itself. Sure they aren't saveable and thus aren't editable (but you admit this is a very rare use case - I can't recall needing that, ofc you often don't know when to want what you don't have).

As for applying across a number of files, I recently added an in-editor rendering of workspace search results to VS Code, and I've created an extension that can apply edits to those search results back to the original files. This allows for performing multicursor edits across many files.

As for using variable numbers of times, this is again quite trivial with multicursor. I simply select all the instances I need (either all in one go or iteratively), and go from there. I admit there is an art to selecting the right text such that iterative selection works with a single keypress, but once you get the hang of it it becomes pretty natural. (Unless you mean "apply this N times", which again I'm not sure I've ever been in want of)


The question might boil down to use case. If the use case is “in this file, change all spans with class foo to divs with class bar once ever”, probably both tools will work.

If the use case is “every day, download this file from a server and process it using pre-defined text editing commands”, multi-cursor doesn’t help you in any way that I can see.

I admit there’s a huge overlap in use, but when someone asks for macros and a product person says “how about multi-cursor instead?” I think it’s fair to raise the cases where someone asking for macros might actually want macros.


Multicurors aren't replacement for macros in the same sense as loops aren't replacement for recursion.


That's snappy but not informative at all. What do you miss in multicursor that macros give you?

I also prefer vim's macros to multicursors, but I think it ammounts to nothing more than habit and preference.

Macros in Vim are going to be much more powerful, with movement commands and selection commands giving yo a more flexible system... I think? Hard to be objective after so many years of Vim.


> What do you miss in multicursor that macros give you?

Not OP, but to take a recent example (although it was in Emacs, I'm pretty sure it would work in any advanced editor), I had a macro select the second half of the open file and pipe it through sort and uniq to replace it with each unique line and their number of occurences. That's not doable with multi-cursors; their use cases intersect but don't overlap with macros ones.


Honest question: when are loops not replacement for recursion?

My (admittedly naive) mental model of recursion is basically a loop where you bring your entire stack frame with you (or less, in the case of tail recursion).


There's a `macros` extension that's pretty good: https://marketplace.visualstudio.com/items?itemName=geddski....


Yeah, macros might be cool... I've gotten by with mostly using the regex options in string replace, etc... snippets have helped a little, but don't use them much, sometimes they annoy me when they pop in.


Killer features are directory view, integrated terminal, regexp for find/replace...

Lately, I'd add the remote ssh and wsl extensions have been insanely useful, but starting code from inside wsl has gotten sluggish since the last vs code update.


It is not fair to compare VSCode/Sublime Text with an IDE. They are very fast at opening, agreed, but they the features that an IDE provide (intelligent code completion, jump to definition, database-aware autocompletion, ANY sort of refactoring capability) easily save me hundreds and hundreds of hours.


Everything[0] by Voidtools as a Windows search replacement. It makes search practically instant.

Now that Windows search often fails to turn up even my most used files (what happened to Windows search? Was it intentionally nerfed?), Everything has become a necessity for me.

[0]: https://www.voidtools.com/


Wow, thanks for sharing this.

Also, to second your question: what the hell did happen to Windows search? I always just assumed I'd done something to break it (and honestly, could never be bothered trying to "fix" it... even after all these years), but apparently it's inherently broken.

I know very little about OS software. Could someone explain at a high-level how something as fundamental as file search can be rendered totally unusable? Doesn't windows have the best engineers in the world working on it?


I also thought I broke something. Since a couple of months it is absolutely unusable. It sometimes can't even find the calculator or even VSCode which I use every day.


Search is not an operating system function. It needs read access to every file you want it to find, but other than that it's just another application.

Windows has great engineers, yes, but the problem with Windows search is not an engineering problem, it's a trade-off between different use cases and performance and compatibility and innumerable other factors. Design by committee and circumstances of history made Windows search what it is, the shortcomings aren't caused by a lack of engineers capable of building Everything or Spotlight or grep or Google or whatever your ideal file search tool looks like.


I don't use windows search but, at least in the past, it took plugins to allow it to read through any format for which a plugin is registered. Of course MS included plugins for office files. Plugins for PDFs, zip files, etc. It's been around since the mid 90s. Sad if it's not working well.

https://docs.microsoft.com/en-us/windows/win32/search/-searc...


A hearty second to that! Everything is one of the first programs I install on any new Windows installation.

Even on a machine with several million files on it, it searches as fast as I can type.

Everything also has an API that I've used to integrate the search into my own apps:

https://www.voidtools.com/support/everything/sdk/


I prefer Wizfile [0] personally. It seems better as far as resource consumption than Everything. Wiztree by the same devs is great too as a replacement for WinDirStat.

[0] https://antibody-software.com/web/software/software/wizfile-...


I can confirm this too, I have not used Windows Search in years, it started getting slow in Windows 7, now in Windows 10 its practically unusable, you search for a file and it starts doing a web search.


And you can throw Wox on top to get something similar to macOS' Spotlight that uses Everything for search and uses python or c# plugins to do everything else from calculator to PirateBay browser for some reason. Original Wox release: https://github.com/Wox-launcher/Wox Fork that more likely to work with latest Windows 10 since original is seems to be abandoned: https://github.com/jjw24/Wox


FSearch is an equivalent for Linux.

https://github.com/cboxdoerfer/fsearch


A quite similar tool, or at least one you can configure to behave like that, which works in the CLI is fzf


hmmm... seems to be a fuzzy find

https://github.com/junegunn/fzf "A command-line fuzzy finder"


Windows search in win10 now uses bing.

I am not joking. I found out about it when it stopped working due to bing outrage and had to do registry fix to make it work again.


My install of this stopped working on my work desktop suddenly a few months ago. I was without it for about a week until I was able to figure out what was wrong, and in that time I realized just how incredibly dependent I am on this simple utility and just how much Windows search sucks for finding anything.


I don't about the SOTA but last time I tried to install it (everything) it did not have a support for indexing mapped network or disk drives. I ended up using locate [0][1] (works similar to locate and updatedb of linux/unix). I have local indexed DBs of all my disks mapped to fixed drive letters, so I know which external HD a certain file is on. Also useful to index network drives in the office.Does everything support this?

[0] https://locate32.cogit.net/ [1] https://sourceforge.net/projects/locate32/


I have avoided to install Everything after I have witnessed the chaos that results from its use in everyone's folder structure. People use to leave files everywhere without any organization criteria and simply rely to use Everything to find everything.


Everything only searching file names might seem like a dealbreaker to some people but it actually provides a great incentive to give your files useful descriptive names.

I got Everything in a hotkey so it also doubles as an application launcher. It really is quite elegant.


There's also Agent Ransack for searching file content.

I don't use Windows much nowadays, but ripgrep and fzf are sure handy on linux and mac.


Thank you, I just installed Agent Ransack and am checking it out. VoidTools Everything just searches filenames, not content, so this could be very useful.

I found it amusing that they also offer what is apparently the same product with completely different branding "for corporate environments" called FileLocator Lite/Pro.


I use ripgrep and fd on Windows as well. Nothing stopping you from doing so.


Seconded. This was recommended by a friend and saved me hours since. The search is near instant, it's flexible, updates in real time. Highly recommend.


I love that program, but must warn though, that I think there were few cases, when it affected file I/O.


That's why I only launch it when needed. The other time, I use listary (but couldn't replace Search Everything in all cases such as I need to view the dates and sizes of the list of matched files).


Does anyone know of a good Mac version of this?


I'm a long time user of quicksilver. Open source. Long time loyal users swear by its ux for efficiency. Development has slowed down recently, but it still runs great for me.

https://qsapp.com/index.php


Nope, and I've been searching.

The issue with the spotlight engine that everyone uses is that it excludes "hidden" directories and in particular every dot file and dot directory.


Spotlight is built in, but Alfred’s also a good one.


I was looking for Everything for Mac and tbh I can't say Spotlight is even close. Sure Spotlight works great for apps and files in ~/Documents/, but I find it failing when I'm trying to find some obscure file in /Library/ or with-in Xcode SDK's.

Is Alfred good in this sense?


I’m using Alfred and you can add locations to search in, but I’m pretty sure you can also do that for Spotlight. It shouldn’t be a problem either way.


I used to use Alfred for this, but it's not really the same as Everything. I'm not sure why - something about the speed, results or maybe just the interface itself.


Some of the Windows tools use the NTFS / USN change journal for very fast access to metadata without traipsing across the rest of the filesystem. I dunno if APFS has such a thing?

https://en.wikipedia.org/wiki/USN_Journal


1) Any terminal that you can summon/dismiss with a global hotkey. Examples are Guake for Linux and iTerm2 for OSX. I consider this a must-have for all developers.

2) Anything that lets you resize/place windows with hotkeys. For example, Divvy for OSX. Divvy is also nice because if you press the hotkey multiple times, it cycles the application through each of your monitors. No need to ever use your mouse to move/resize a window ever again.

3) Fuzzy file search in your editor. You know you want to open src/components/user.js so you type "cu<enter>" and it appears.

Any tools like this that become so ingrained in your muscle memory that you just kind of think things ("move this window and then summon my terminal") and the computer responds.


> 1) Any terminal that you can summon/dismiss with a global hotkey. Examples are Guake for Linux and iTerm2 for OSX. I consider this a must-have for all developers.

Years ago I saw someone using this (I think it was actually Yakuake) and ran it for a bit. I really didn't like that it was a single session. However, I later messed around with tiling window managers (which relates to your #2!) and having a shortcut to pop up a new terminal is really what I wanted this whole time.

Just to touch on #3, any time I'm writing a gui that's expected to have more than a handful of items I push to add a search bar with fuzzy matching at the top. Otherwise, search would get added after it's used for like a decade and everyone is immediately enthusiastic and grateful. All of the non-fuzzy solutions are too pedantic to use.


It absolutely blows my mind how many developer-centric search UIs don’t have fuzzy search. Developer tools css editors for one (CSS! The language with margin-* naming conventions everywhere!). Also GitHub issue labels.

Browser history too.


I think the people who sell tools or buy tools usually constrain themselves to "least common denominator" type of experiences.

(This might be true of free/shared/common tools that haven't been configured yet)

But getting past all that, after a lot of craftsmanship and idea sharing, that's when tools start to ramp up in productivity.

I use emacs, because if something doesn't work like you want to, you can coerce it to do so. That said I personally wish it was python-based, because I'm more fluent in python than lisp.


I don't use iTerm2, but I have a global hide/show shortcut via Hammerspoon (https://github.com/cweagans/dotfiles/blob/90764db6146383a92e...). I could extend this to pretty much any app, but the only one I regularly need it for is my terminal.

I like this method a little more because it's not a single session, there's no animation, etc. It just pops into existence exactly how/where I left it, and then goes away again when I'm done with it.


I'm not a fan of global/slideout terminals either. I typically have multiple tabs and multiple panes within each tab tiled on the right hand side of my monitor.

CMD+Tab is enough of a global hotkey for my needs, and it's usually only one or two tabs anyway.


when you summon the terminal do you first then need to `cd` into the directory you need?


What I assume the parent was talking about was the ability to literally just open a new terminal window with a keyboard shortcut (e.x. Mod-Enter in i3wm). If that's the case then yes.

While using i3, you can also place a terminal in the scratchpad, which works more similarly to Yakuake.


Yep. Looking at `history` it's often something like "ping" "top" "docker ps" "curl" which don't care about directory. Since it defaults to $HOME, that's generally good enough.

When I was working more seriously on things with project directories I had a couple aliases set up with a simple bookmark system. The "bookmarks" would be symlinks in a dot folder. I could type `g proj` or `g lib` to hop around.


> 3) Fuzzy file search in your editor

I’ve been using “fzf” [1] for file and directory search and I can’t recommend it enough.

It integrates nicely with vim [2] as well.

1. https://github.com/junegunn/fzf

2. https://youtu.be/qgG5Jhi_Els


What blows my mind is that fzf is insanely lightweight, I don't even know if it relies on external dependencies.


I wasn't aware iTerm2 supported this and now I'm very pleasantly surprised. It's not possible to overstate how thankful I am that you pointed this out.


> 1)

You don't need a separate terminal just for that. It's better to automate your window manager to open the terminal. I use this with tmux and i3:

  #!/usr/bin/env bash
  tmux new-window -t 0 -c "$1"
  i3-msg 'workspace 1' # switch to i3 workspace where my terminal is placed
I also use distinct hotkeys to specify which directory to cd to (the script above accepts a directory as argument).


Why is it "better"?

I rarely want to open a new window, I want a terminal that I never close, that stays in the background until I call it forward. And it has to be available on any workspace ("space" on macOS). Iterm does all of that perfectly


>2) Anything that lets you resize/place windows with hotkeys. For example, Divvy for OSX. Divvy is also nice because if you press the hotkey multiple times, it cycles the application through each of your monitors. No need to ever use your mouse to move/resize a window ever again.

Aquasnap is an OKish windows equivalent. The best i've found, at least.


Divvy works on Windows as well and is great.


> Any terminal that you can summon/dismiss with a global hotkey

Thanks! I didn't know I need this until I tried it!


what's the difference between 1 and "ctrl alt t" ?


So does Ctrl-Alt-f2 count?


I would definitely say PHPStorm. The amount of productivity gains are tremendous.

A lot of good editors have the issue that they are quite rigid when it comes to operating between multiple languages. So while your editor may shine at JavaScript, it won't understand vuejs templates or when you put Javascript code inside a php file.

This is where PhpStorm really shines. It can even complete your SQL statements inside php strings or go to a .vue file from a Html tag. I've never seen this type of understanding from an editor ever.

P.S. My only issue with it is that writing plugins for it is kinda hard. Since it is so extendable it's only expected that programmers would want to extend it with their own plugins. And while I have been able to write one plugin for it I found the documentation and tutorial for writing plugins all over the place and sometimes very outdated. It is my request if anyone from jetbrains read it to please make plugin docs more accessible and easier to understand, esp the testing quickly part.


+1 For JetBrains products. Possibly the only piece of software that I happily pay the yearly renewal on.

I use PHPStorm and DataGrip on a daily professional basis. I use PyCharm (CE) and CLion for side projects.

> P.S. My only issue with it is that writing plugins for it is kinda hard. Since it is so extendable it's only expected that programmers would want to extend it with their own plugins

Out of curiosity, what kind of plugins do you (want to) write?


> Out of curiosity, what kind of plugins do you (want to) write?

I wanted to write a plugin to enhance Vuejs (auto import mixins, etc). The current vue plugin is good lacks a few features which I wanted to fix but I couldn't figure it out.

There are tutorials done by the Jetbrains ceo himself but I think they are outdated now. It was supposed to be a fun weekend project but due to the disorganised nature of the plugin docs I really couldn't make any progress, especially because i found testing my plugin really hard.


Same for Pycharm. Type hinted python in that editor has almost every development benefit of a static language: completion, refactoring, docs and suggestions.


The documentation from JetBrains is horrible.

I still could not configure the correct build step for XML-based javax forms as part of Gravel build process. And that’s supposed to be one of the easiest parts?


In general, I agree that JetBrains could improve their docs. However, you very rarely need them.

I mean, your problem kind of sounds like it should be explained in the javax or Gravel manuals, but not in the JetBrains IDE manual.


Nope - my problem is there because I followed their examples which manage to give you an example of creating a settings page using javax forms and starts with using the IDEA gradle plugin to compile all of it.

Except when you actually do both you realise there’s no way of compiling this plugin through gradle unless you first run the build step through the IDE (which secretly puts all of the compiled forms in the same build directory).

It’s a mess.


I go with IntelliJ, which is basically the same with slightly more Java-ified shortcuts. And I agree, it's incredible how much time a good IDE can save you.


For an PHP focused editor it’s unfortunate that it isn’t possible to format 100% WordPress Coding Standards compliant code.


- Emacs (with evil mode) and org-mode. The hours gained far outweigh the hours put in (and the hours put in were fun).

- Yabai on mac for not having to think about moving windows around.

- Pomodoro (now through org-mode) for helping focus (and saving hours, in a round-about-way.)

- Removing as much advertising from my life as possible. (Ublock origin, deleting social networks when possible)


Didn't know Yabai! Thanks for sharing. Will have a look at it and probably give it a try.

I am using Amethyst [1] right now as a "tile" window manager which is easy to set up and works as intended.

[1] : https://ianyh.com/amethyst/


I've been using Spectacle [1] for 3 years now and it's been great. Note: it appears to have been discontinued in favor of Rectangle [2]

It's the first thing I landed on after switching to primarily OSX at work (I used i3 when I had a Linux dev box) so I'm not sure if it's the best among the alternatives; but I've been pretty happy with it.

[1]: https://www.spectacleapp.com/

[2]: https://rectangleapp.com/


Another great tool is Hammerspoon [1] for Mac. It has a lot of plugin and allowed me to get rid of a lot of small tools. It’s free and open source. It allows me to set key shortcut for my app, windows manager, timer “à la pomodoro”, caféine (screen does not go to sleep), etc... cannot live without it!

[1] https://www.hammerspoon.org


How is your experience with Yabai ? I just read about it but reluctant to try it . How stable is it ? Can we switch spaces with it ?


It's great. So far so good. I think I can switch spaces using skhd (by the same developer) [1] alongside it. I can definitely send windows to spaces, but still use ctrl + right/left arrow to navigate spaces. [1] https://github.com/koekeishiya/skhd


It's perfectly stable, but I didn't see it do anything that Amethyst can't do, and yabai requires you to run with SIP disabled


I run yabai just fine with SIP disabled.

You only need to disable SIP if you want features that require it like window opacity/stickyness/...


Any idea how to delete this social network (hacker news)? It's the last one I still use.


Set `noprocrast` in your profile to `yes`.


I had to look it up. very fun.

There are three new fields in your profile, noprocrast, maxvisit, and minaway. (You can edit your profile by clicking on your username.) Noprocrast is turned off by default. If you turn it on by setting it to "yes," you'll only be allowed to visit the site for maxvisit minutes at a time, with gaps of minaway minutes in between. The defaults are 20 and 180, which would let you view the site for 20 minutes at a time, and then not allow you back in for 3 hours. You can override noprocrast if you want, in which case your visit clock starts over at zero.


Same, mostly, other than the fediverse. Anything with ads and targeted marketing is more the problem, imo.


I tried to look for a way to delete my account yesterday but I did not find such a thing :<


Anyone know what the best way to set up Emacs on macOS is?


I just use this version. https://emacsformacosx.com/ I have a one line shell script that then lets me start Emacs from the cmd line. something like

    open -A [path to applications/emacs startup] $@
This supports emacs —daemon


That is what I use.

Additionally in my .bashrc I have:

  EMACS="/Applications/Emacs.app/Contents/MacOS/Emacs"
  EMACSPOS="-g 140x66+655+23 --fullheight"
  e() { ( $EMACS $EMACSPOS "$@" & ) }
I also have it in the dock, but sometimes environment variables are not set up properly.

For this case, I create a plist file ~/.MacOSX/environment.plist and can add stuff to it like this:

    add_plist PATH "$PATH"
where:

  add_plist () {
    /usr/libexec/PlistBuddy -c 'Delete :'"$1" ~/.MacOSX/environment.plist >/dev/null
    /usr/libexec/PlistBuddy -c 'Add :'"$1"' string "'"$2"'"' ~/.MacOSX/environment.plist >/dev/null
  }


I wrote the last reply from my phone. The command is simply

/Applications/Emacs.app/Contents/MacOS/Emacs “$@“

The script goes into /usr/local/bin or wherever that’s in your path.


Best is subjective, but my current go-to is:

```

$ brew tap d12frosted/emacs-plus

$ brew install emacs-plus [options]

```

Cf. https://github.com/d12frosted/homebrew-emacs-plus


I use the “Emacs Mac Port” which is available via Homebrew.

https://github.com/railwaycat/homebrew-emacsmacport


I keep a clone of the main GNU Emacs git repository and build the emacs-27 branch (27 is the upcoming release) every few days on my MacBook (and the master branch on my Linux workstation).


BeyondCompare (cited in the original thread), especially the folder comparison feature. Saved my sanity when our team's shared directory stopped syncing silently on my laptop and I had to figure out which files I needed to sync manually.

WizTree (https://antibody-software.com/web/software/software/wiztree-...) is a freeware Windows utility (man, typing this took me back to 1997) that lets you quickly see which files are hogging your disk space. Think "df GUI for Windows". Especially useful to track down large application files hidden in the depths of system folders.


Meld [0] (written with GTK so available on Windows, Linux, and possibly Mac but I don't know about that last one) is another tool in the first category.

WinDirStat [1] (Windows) for the second. It is also available in the super-useful PortableApps format [2], which is always nice.

[0]: https://meldmerge.org/

[1]: https://windirstat.net/

[2]: https://portableapps.com/apps


WinDirStat is extremely slow compared to WizTree, give WizTree a try :)


`ncdu` is my preferred Linux ncurses equivalent to windirstat


BeyondCompare is an absolute workhorse for me. It's kind of amazing how many unrelated tasks involve directory and file comparison.


AraxisMerge (pretty -- ahem -- comparable to BeyondCompare). A good visual diff tool is a must-have; I can't imagine life without one.



Second that. Cannot imagine living without Beyond Compare.


Here's a couple (albeit macOS focused) favorites of mine:

- Deliveries: macOS / iOS package tracking https://itunes.apple.com/us/app/deliveries-a-package-tracker...

- Screenotate: OCR all of your screenshots with metadata like program/webpage https://screenotate.com

- The Tagger: lightweight macOS utility to tag music / fetch metadata from discogs https://deadbeatsw.com/thetagger/

- youtube-dl: Download any video / song online https://github.com/ytdl-org/youtube-dl/

It was fun thinking of these, I actually put together a blog post a while back listing my favorite software. Would love to revisit it soon: https://lukemil.es/blog/software-i-like


And for those who don't know, youtube-dl supports many, many other sites besides YouTube, including Vimeo, TikTok, Dailymotion, Twitch, YouKu, LiveLeak, Streamable and more.

Full list: https://ytdl-org.github.io/youtube-dl/supportedsites.html


The youtube-dl crew really does a good job, when you have an issue with a supported website, just picking the last commit generally solve the problem.


I'd be careful with package tracking. While I don't know if that particular app resell your purchase data. That one is paid, so they may not need to right now, but they may change that in the future. I know many other similar (Slice, Unroll.me, etc.) products do. It's an easy, high ROI monetization strategy.


PS: youtube-dl is not macos-specific, there is a windows build and many linux distros like ubuntu have packages


Apart from Arch, Fedora and [insert your fast-paced distro here] I wouldn't recommend to use the package manager's version of youtube-dl, because it's almost always too old.

Quoting the bug section of the Readme[1]

> Note that Ubuntu packages do not seem to get updated anymore. Since we are not affiliated with Ubuntu, there is little we can do. Feel free to report bugs to the Ubuntu packaging people - all they have to do is update the package to a somewhat recent version. See above for a way to update.

[1]: https://github.com/ytdl-org/youtube-dl/blob/master/README.md...


I have used the package coming from Chocolatey and haven't had any issues at all

    choco install youtube-dl


I just set up Tessaract for screenshot OCR purposes following below post and gotta say it's super easy and great. https://apple.stackexchange.com/a/354036


Hasura [https://hasura.io] Graphql API and Subscription for any Postgres DB

Keycloak [https://www.keycloak.org] OpenID Auth Server

nREPL + Cider [https://github.com/clojure-emacs/cider] Clojure's Network Repl and Emacs integration for live coding Clojure

Company Mode [https://company-mode.github.io] Emacs autocomplete mode


I'll second Hasura there (presumably an alternative like Postgraphile would have led to a similar result)


Fascinating to see OpenID here. Where do you use it? I thought it was pretty much dead, so implemented IndieAuth recently which does what I want, replacing OpenID’s functionality.


Keycloak is an IdP. It does everything, including OIDC (which is very widespread) and SAML. I assume when they say "OpenID", they mean OIDC.


I concur.


Pretty much dead and replaced by what? (I am curoous as I thought it was a well established standard)


As stated, the poster is talking about OIDC, not the predecessor OpenID.


Ah right, thanks. I read "OpenID" but was thinking "OpenID Connect" and was surprised by the depreciation.


For what / How do you use Keycloak?


We use it as the Auth layer for our web apps. Generally inside a docker container exposed at id.someappname.com


For better or worse, I find GUI git clients to be less useful than the CLI. But like any CLI tool, it's productivity is limited by your ability to type without errors. Git has an Autocorrect[1] that will help you out.

> git config --global help.autocorrect 1

Based on bash history data, I've also added a simple alias to my bash config:

> alias gti="git"

[1]: https://git-scm.com/book/en/v2/Customizing-Git-Git-Configura...


"Based on bash history data" is an interesting point, because it highlights that you can use your history to periodically check what you do inefficiently in the terminal, and which aliases you still need to add to your config: compute some statistics on the number of 1-word and 2-word commands you use the most, and see if they are more than e.g. 4 letters.

With zsh: "history 1 | awk '{print $2}' | sort | uniq -c | sort -n"

With bash I think this should be "history" instead of "history 1".


I make one change to every new .bashrc file.

I change this:

  HISTSIZE=1000
  HISTFILESIZE=2000
to:

  HISTSIZE=1000000
  HISTFILESIZE=2000000
You would be surprised how useful this one change has been, answering historical questions easily, like how to generate that rsa key, or what packages did I install for that project last year.

You can usuall answer questions with ^r instead of the man page. Or maybe:

  "history | grep -C 10 <foo>"


While we’re on the subject of shortcuts, I have `awk1` mapped to `awk '{print $1}'` and the same up to awk9. It’s not that I can’t type it but it breaks my flow for such a simple use case.


`history 200000 | awk '{print $2" "$3}' | sort | uniq -c | sort -n`


There's a section of people that I belong to, that aren't fans of the GUI clients because it doesn't fit in their workflows but also find the CLI not productive enough. We start writing aliases and custom scripts. We integrate git with FZF.

Well for all of these people: I recently found Lazygit (https://github.com/jesseduffield/lazygit) which is a terminal UI for git and that does exactly what I've been looking for all these years, down to vim-like keybindings!


I think I've used a very similar one called LazyDocker. But after a while I found that it wasn't that useful, and I don't like seeing the "donate" button in my face all day (call me old-fashioned).

The true power of CLI apps comes from "alias" commands that you build up yourself. The following commands are great examples of this:

    alias docker-kill-all='docker kill `docker ps -aq`'
    alias docker-rm-all='docker rm `docker ps -aq`'
After a while I've learnt that a gui or cli-gui can never compose as well as the terminal can...


Lazydocker is made by the same guy yes! I don't find it as useful though.

> The true power of CLI apps comes from "alias" commands that you build up yourself

I usually agree. I spent way too many hours making aliases and I'm very proficient at it. But sometimes there's something like lazygit which does everything my aliases did, but slightly better as it gives me, for example, line-by-line staging and vim keybindings.

It is true that it does not compose, but I can still (and do) use the command line. It's just a nice increase of productivity in 90% of the cases (for me!)

Note: I'm not related to the lazygit project in any way, just very satisfied with it


Obligatory emacs magit. If you like the git cli, then magit will help you do everything with single keypress actions (l is log, c is commit) and provide autocomplete and lists where relevant (like all branches on checkout)

https://magit.vc/

Visual walk through: https://emacsair.me/2017/09/01/magit-walk-through/


Better still

> alias g="git"


or g = ./gradlew


> For better or worse, I find GUI git clients to be less useful than the CLI.

Genuinely interested, why?

I'm a huge fan of the CLI in general, but for some things it just slows me down, git usage is one of those.

Random example: reverting a commit is 2-3 clicks, or a whole lot of typing.


> Genuinely interested, why?

They usually don't support the level of granularity I have on the CLI. For example, if I want to fix a commit on a PR based on feedback I've received, I can make the fix and `git rebase -i` will let me amend any of my previous commits (via 'fixup'). None of the IDEs I've tried support it; it's possible instead of an IDE one of the dedicated git tools like Kraken support this?

It's also just mildly terrifying when the IDE gives you a button with no further explanation for what it's actually doing. I.e. what do 'refresh' and 'sync' do in VS Code? The consequences could be dire: https://github.com/microsoft/vscode/issues/32405

> reverting a commit is 2-3 clicks, or a whole lot of typing.

Git revert is a single command; finding the commit to revert is the hard part. `git bisect` makes this easy, and I haven't seen any IDEs nail that one. That said, this is a rare use case.


> Random example: reverting a commit is 2-3 clicks, or a whole lot of typing.

    git log
    git revert {hash}
I'd hardly call that a whole lot of typing. It's roughly equivalent to 2-3 clicks in a GUI app.

Where the GUI falls down for me is more complicated things, like hard resetting a branch to origin or resolving merge conflicts.

Also, most of the git guis do things that I find distressing. For example, in one git GUI I tried a while back, I accidentally dragged a commit onto a branch listed in the sidebar. Only later did I realize the gui cherry-picked the commit into the branch without asking me for confirmation. It would do similar things if I dragged one branch into another.


The golden recipe: neovim, tmux, rg, fzf, i3/other tiling wm on nixos/arch

Fzf all you can, not just inside vim, but also use it to switch between tmux sessions in an instant. I have a tmux manager on top of tmuxp that is able to start / switch to already started sessions via fzf.

Identify patterns you use a lot and make snippets out of them. Create project templates.

Have a folder where you dump reference / things that need to be really easy to find, and set up vim to search into that instantly, no matter where you are.

Keep an inbox file to throw things in, make a wm bind a script to prompt for text and append it there via zenity. Don't throw links into it, it's gonna be a bookmark dump.

Make sure your todo system is a keybind away at all times.

Review your way of working, challenge, and improve it. Be lazy, but only when you afford it.


>Make sure your todo system is a keybind away at all times

This point here I think is incredibly useful in general. When accessing your full to-do list feels like its own todo, you're gonna have a bad time


I was about to get it on with tmux, but as soon as Neovim implemented a terminal I was outta there. Seeing as Neovim is has terminal emulator, windows and tabs why do you still use tmux?


I really need to get around to fixing my arch, its still left mid-reinstall after at least a month (and I'm lost on the networking for the 2nd time, you'd think I'd have learned by this point)


> Make sure your todo system is a keybind away at all times.

Can you access your todo system from your phone? I'm always torn on this, and why I keep my todos in google keep.


I'm using todo.txt via the CLI [1] with my TODO files in a Dropbox folder syncing it with Simpletask [2] for Android.

[1]: https://github.com/todotxt/todo.txt-cli [2]: https://github.com/mpcjanssen/simpletask-android


what is rg, i3 or tiling window wm? can't you use tmux as a tiling WM?


Only if everything you do is in a terminal.

If you also need a browser, IDE, or any other non-terminal application open then i3 lets you tile those as well.

I haven't used it in a while since we switched to macs and ssh'ing to remote linux dev desktops but when I had an all-linux dev setup I remember i3 being pretty amazing.


https://fishshell.com/ for sure

Just having sensible defaults on a shell works wonders on my day-to-day productivity.

Add a couple of aliases for productivity and off you go.

  abbr --add s "git status"
  abbr --add gap "git add --patch"
  abbr --add gco "git checkout"
  abbr --add gd "git diff"

  alias recent="git for-each-ref --sort=-committerdate refs/heads/ --format='%(color:yellow)%(refname:short)|%(color:bold green)%(committerdate:relative)|%(color:blue)%(subject)%(color:reset)' | column -ts'|' | tac"
  alias r="recent"


I absolutely love Fish, but it's worth warning anyone who's taking a first look and excited to try it, that some syntax differences from more familiar shells like Bash may cause frustration, both in terms of muscle memory and anytime you need to copypasta. It hasn't been enough of a problem for me to switch back (or to ZSH), the benefits far outweigh the frustration, but I do think it's worth a small warning.


I use zsh and found https://github.com/zsh-users/zsh-autosuggestions to be very comparable with fish autocomplete, while keeping zsh niceties.


Second that. Would additionally recommend the fzf for fuzzy reverse history search. Absolute gold


This one's tricky. I've driven fish daily for years, and it's definitely snappier than my old omzsh setup (I much prefer this style of history), but you can get bitten by certain tools not using shebangs properly.


Black, flake8, isort and mypy (with several type strengthening flags) have together ensured that Python editing and code reviews are an absolute breeze. The structure basically disappears, and all that I ever need to concentrate on is the actual change.

Sure, you can use your IDE to achieve some of this, but this is where the 80/20 rule really breaks down: since each IDE differs in the details, at some point auto-formatting the code is going to waste more time than it saves by having to undo or work around mutually incompatible formatting rules. You can't reasonably expect everyone to use the same IDE, but you can expect them to use the same Makefile targets and CI pipeline.


Python beginner here. Can you please elaborate on how you use Black, flake8, isort and mypy for code editing and code reviews?


For me, it's being able to have a consistent code-style that is completely unambiguous for all collaborators. You configure the tools to run in your editor (or as make targets, or as pre-commit scripts) and you run the same checkers on your CI which prevents non-conforming changes from being merged to master.

Here's a config file for running some of these checks with https://pre-commit.com/ both locally, and then again on CI:

https://github.com/kogan/django-subscriptions/blob/master/.p...

https://github.com/kogan/django-subscriptions/blob/master/.c...


For sure!

Black and isort complement each other in formatting your code, and both have flags to check whether they would change anything in your code. You can do the former either as a script or Makefile target, and the latter in CI to verify that the code is actually lint-free.

flake8 is your standard linter - it checks for idiomatic Python. I prefer to set it quite strict, with `max-complexity` starting at something like 4 and only moving it up if I really can't figure out a way to make the code simpler. And you shouldn't have to ignore any lints unless there's a linter or formatter bug or conflict. The only place I've seen this is with E203.

mypy is a tricky one if you're not yet used to Python type hints. I would recommend starting with no configuration and then introducing stricter rules as you understand more of them. My current go-to configuration sets all of check_untyped_defs, disallow_any_generics, disallow_untyped_defs, ignore_missing_imports, no_implicit_optional, warn_redundant_casts, warn_return_any, and warn_unused_ignores.

To list all the files in your project tracked by Git (because you don't want to lint or format any third party files) NUL-terminated (because you want to handle weird file names) run `git ls-files -z -- '[star].py'`. To instead list only the files changed from origin/master (your typical target branch for a merge request) except for those you've deleted locally you can run `git diff --diff-filter=d --name-only -z origin/master -- '[star].py'`. You can then pipe the result of either command to `xargs --no-run-if-empty --null black` and similar. Use the first Git command in CI to lint all the files, so that you don't miss out on any changes for example when any of the linters change their rules. Use the second Git command locally to format and lint your changed code. And make sure you have some way to force formatting/linting all the code for when you update any of these programs.

Finally, running all the linters as part of a pre-commit hook is a great way to make sure you never commit broken code. Having a bunch of lint fixup commits is ugly and counter-productive.


Thank you!


If you are a python beginner, don't try to do everything at once, it's too hard.

Start with black. It's very easy to setup, and the reward is great.


Excel's Power Query just saved my countless hours last week in cleaning up and merging two huge csv databases.

Learning the YouTube APIs saved me thousands of hours on editing video metadata, organizing playlists, etc (https://github.com/cgranier/pytube).

Everything (https://www.voidtools.com/) is a wonderful file search tool for Windows.

Thanks for all the links and ideas... new things to try this week.


- keeping all your configuration files (“dotfiles”: shell, git, etc) in one, version controlled place. Makes setting up new machines so much less stressful. Here are mine in case you’re interested, for macOS and Ubuntu: https://github.com/Bogidon/dotfiles

- setting up a personal vpn with a reserved IP if you connect to services that require your IP to be whitelisted and you move often

- for git cli: dashes take you back to your previous location (eg `git checkout -` will take you back to the previous branch). On zsh: `cd -n` will take you to n directories ago

Mac only:

- the Paste clipboard manager has been a most delightful tool, though I don’t know if I’ll ever upgrade to the new subscription version: https://pasteapp.io/

- the workflows feature in Alfred.app as a convenient place to keep utility applescripts / other kinds of little scripts that you want to invoke through global shortcuts or through Alfred


> - keeping all your configuration files (“dotfiles”: shell, git, etc) in one, version controlled place.

The thing that finally made this worthwhile for me is GNU stow.

https://alexpearce.me/2016/02/managing-dotfiles-with-stow/

Stow is available from homebrew if you prefer to get your Mac stuff that way.


I've been using "Copied", but in the last few months on Catalina it suddenly loses the ability to copy out of its history window, whether via cmd+c or clicking. Only an app restart solves it. I emailed the developer over a month ago and never got a reply, so... guess I'm switching to "Paste App".


I use copyclip as my clipboard manager: https://apps.apple.com/in/app/copyclip-clipboard-history/id5... It is free + simple.


Alfred has a clipboard manager built in, what does Paste offer over it that justifies its fee for you?


Mainly iCloud sync, tabs, and larger previews where more than one is visible at a time


Similarly, I use the clipboard plugin for quicksilver.


Overcast says its Smart Speed feature has saved me 30 hours (over the last ~5 months), so I expect it to save me 100 hours within a year. It is especially useful for podcasts and language learning material with a lot of pauses, but I have become used to it, and so I now keep it enabled for most audiobooks that I load into Overcast just to get the dynamic playback speed.


I'm at 173 hours! I've liked Overcast (I've been a premium customer for two years), but I find myself wishing it has better features now. It feels like it was the best a couple years ago but hasn't done much since. Smart Speed is the one thing that has kept me from switching to something else so far.


296 hours myself. I have also been pleased with Overcast until just recently. Now that I am stuck at home, I went from listening to all my podcasts from my phone to listening to most of them from my computer. Overcast's lack of desktop app and pretty poor web interface are causing me to consider switching for the first time.


I don't love its web interface. But its ability to do the smartspeed thing + sync the played status to my phone for when I move from my desk to walking the dogs has been enough to stave off the switch for me.

What are you thinking about switching to?


I haven't yet spent much time researching alternatives. One podcast I used to listen to is now a Spotify exclusive. I use that to stream music and I really like how their desktop and mobile apps work together. I was thinking of giving them a try for podcasts until I realized it didn't seem possible to import an RSS feed. That would eliminate the ability to listen to Patreon supported podcasts which is a deal breaker for me.


I switched from Overcast to Pocketcasts. Everything I liked about Overcast plus playlists I can figure out how to use.


I use Pocket Casts specifically for the synchronization between my phone and the web interface.


When software grows I notice there can be a lot of dev done on features I don't end up using. I don't use CarPlay, watch, Smart Speed, Voice Boost, or playlists.

Last year it looks it launched a sharing interface with what looks like a non-trivial backend to it. In January, a rewrite of Voice Boost and support for Air Play 2 was released. So it's pretty actively developed.

What kind of features do you think is lacking? I feel like I have very simple needs. The only time I've wanted for something is occasionally wishing to use it on my desktop and the web interface is okay-ish for those brief periods.


How does it work? Does it really change the speed dynamically? Or it just trims the silences like pocketcasts?


Based on my observations and the details that Marco has blogged about, it seems to use a silence-detection algorithm that rapidly adjusts playback speed, so the silences are not cut out in a jarring manner, but rather played through at a typical 2.5-4x.


Maybe this will be unpopular, but I feel like speeding up podcasts is really disrespectful to the creator. It'd be incredibly rude to tell someone in real life that they're talking too slow, and in my opinion this is the same thing. Podcasts don't need to be so transactional.


> in my opinion this is the same thing

It definitely isn't the same thing. I kinda understand why you think that way, but it's pretty much completely illogical (see avoiding ever skim reading anything written by someone, or never fast forwarding any filmed media where a person is speaking).


Intellij IDEA and Pycharm. The autocomplete, search for symbols, quick documentation and especially refactoring have saved me well over 100 hours, especially at work with larger projects.


These IDEs are so powerful, I feel like I'm only ever scratching the surface. Double tapping shift to search for any file in the project is a favourite of mine.


- Windows. By not having to configure drivers and other compatibility problems which I have on Linux it definitely saved me 100 hours.

- Listary (windows) Not sure if its 100 hours, but I love its search in any context of explorer. Default explorer search is terrible IMO. For example when you open file - you can use search there instead of navigating by hand.


> - Windows. By not having to configure drivers and other compatibility problems which I have on Linux it definitely saved me 100 hours.

OTOH building on windows takes literally multiple times the time it takes for building the same software on the same machine / SSD on linux. And that's something that I do every day, multiple times per day.


Have you tried WSL? I didn't like WSL 1, and early months of WSL2 were buggy af... but for the past 2 months, since I needed windows again, WSL2 with Docker Desktop support has been really nice.

The VS Code remote wsl and ssh support has also been invaluable.


I mean... I could but I am quite happy with my linux setup and quite infuriated whenever I have to do stuff on Windows so..


Odd. Completely the opposite experience here. Windows requires searching and installation of drivers and configuration via GUI. Linux has drivers built in so just works. I haven't had to install a driver manually since ditching nvidia a year ago. And all my config lives in text files on Github.

I'm guessing you haven't tried Linux in 10 years or so, but even then I don't understand how Windows does any better on the drivers front.


I had been using Linux on desktop up until 2019~ for many years. I have never had hardware (desktop or laptop) which worked flawlessly with Linux. I even bought parts in my current machine to be compatible with Linux, but even then it did not run smoothly. Maybe I am just unlucky. However, with Winodws it does feel great to have everything run smoothly. Zero hiccups with bluetooth, games, hardware lightning or anything else. WSL2 and VMs cover the rest.


I’ve been using Ubuntu on desktop and laptop since 2006, and Debian for 6 years before that. Haven’t had hardware problems for over a decade

Wife’s Mac mini sometimes prints, but it can take 20 minutes to go.


> Linux has drivers built in so just works.

Unless the driver is broken or doesn't exist, then you're SOL.

Bonus: you can update video drivers on Windows without even rebooting or losing your GUI session.


It certainly depends on the device. Several years ago I bought a Wii U Pro Controller before getting the actual console, so I'd planned to use it with my computer. On Windows I had to install the Toshiba bluetooth stack (on a non-Toshiba computer, fighting to remove what I'd had before from Windows Update), manually add the HID for my bluetooth dongle to the driver, then run in "Test Mode" for it to let it work. Test Mode watermarked the corner and also warned me it would only work for 30 days. On GNU/Linux it really truly just worked out of the box. This is an extreme example, but it's one I will never forget. I believe in the Windows world it's common to make controllers pretend to be Xbox 360 controllers because those are supported well, while the kernel known as Linux has support for more obscure things like Wii Remotes and such.


I guess depends on your use-case but I find Ubuntu vastly superior for development. Perhaps it’s just habitual. :)


I have to use ubuntu sometimes (18.04) but my personal favorite distro is Arch Linux.

- you will run the latest software

- from the very beginning you are involved and personally responsible for your machine.

- the wiki is very well written

- no periodic upgrade hell, since it has rolling updates (everything is always updating all the time)

- if software is not in the repository, it has AUR, which will help you build anything that is missing

Ubuntu is a necessary evil, but I don't like some things:

  /etc/default/apport
  /etc/default/kerneloops
  /etc/default/motd-news
  snapd
  unattended-upgrades
  ubuntu-report
  whoopsie


I miss Arch occasionally but I don’t like being responsible for the operation of my machine; I would rather delegate it to the operating system. ;)

The good thing about Ubuntu is that it’s the default “Linux” (distribution) so whatever you are looking for, there is likely an AskUbuntu question, a .deb package, a blogpost, or a mailing-list entry to help.


I don't know if I agree about software availability if you take AUR into account.

Also, it is dead simple to make your own PKGBUILD script for arch, but last time I tried looking into making a .deb my eyes rolled into the back of my head.


Well so do I (also mainly an Ubuntu user these days), but that can be orthogonal to time spent. I prefer it to Windows, which I used f/t for nearly a year after ditching macOS. I prefer the single file system (as opposed to the wsl/native Windows mishmash). I enjoy its speed (mostly filesystem related I think). I find the desktop (Gnome in my case) simpler yet more flexible at the same time (PaperWM ftw).

But there's no doubt I've spent at least 10x as much time on Ubuntu configuring and reading and fixing.


I have spent a considerable amount of time on Windows turning certain features off, removing some bloatware, and setting up my dev environment so Ubuntu doesn't feel any worse.

The only upside of Windows, and definitely a major one, is power management. On Ubuntu, my battery lasts around 2.5h with moderate use whereas on Windows, it's around 3-4 hours. Yes, I am already using powertop and TLP. =)


There are a few minor things I prefer about Windows here & there, but power management is the biggest single thing, agreed.

In truth I don't like any current OS - when you add up all the pros and cons, Linux has the best overall balance of attributes for my use. It's far from optimal though. I find the state of OSs in 2020 pretty sad.


A late addition because of something that came up today. I've had a laptop problem for a few days - screen blanking was failing. Immediately on blanking, the screen would reawaken, generally rearranging my open windows.

On Windows I would have vaguely but very briefly googled. I would either find a quick fix or not, and be on my way.

On Ubuntu I only bother searching online if I know what software's causing it, and it's open source. Otherwise I find the signal/noise ratio too high (and I rarely get useful answers on SO or other forums - I either get nothing or too many people helpfully but uselessly saying "try this!" "try that!"). More often I just dig into things myself.

So I trawled the syslog, couldn't initially find anything, narrowed down by triggering the issue deliberately while `journalctl -f`'ing, etc. I traced the problem to a recently installed Gnome extension that was crashing X on screen blanking. An uninstall failed so I had to find out where extensions are on the filesystem, remove it manually, restart mutter, etc.

The whole thing took about 25 mins.

The upside for Ubuntu here is that I could actually fix the issue. This is rarely a given with Windows (though for me it produces fewer such small issues). On Windows, if I can't fix something that's not critical within a few minutes, I end up just putting up with it. These accumulate over time and I find the OS increasingly irritating. Ubuntu's irritation level doesn't increase over time (though its plateau is way above zero). The downside for Ubuntu is that this really does involve more fiddling time (a known known because I keep logs). For me (a regular non-expert user) anyway.


I've used Ubuntu for development for the last 5 years, but due to the quarantine & hardware issues at home, I figured I'd give Windows a shot. With WSL 2 (Windows Subsystem for Linux 2) available, it's gotten so good! I can run our dev stack with similar performance to Ubuntu inside the subsystem, while simultaneously enjoying the larger ecosystem of Windows.

The only major roadblock I encountered was with PHPStorm, as it doesn't have native access to files inside the Linux subsystem due to the different file system format. In the end I opted for running an X server on Windows (via MobaXTerm) and running PHPStorm inside the Linux subsystem.

I wouldn't mind going back to Ubuntu (and probably I'll do so when the quarantine ends), but it was a nice surprise to see how good Windows has become for dev work.


Have you tried \\wsl$ , i use sublimetext windows to open file in wsl with that default share


I'd say chocolatey has been really useful for me on windows.

And for the past 2 months or so, WSL2, Docker Desktop (WSL2 enabled) and VS Code's WSL extension have made using windows for development about as nice as it gets.... all the non-essential stuff works (rgb controls, etc), and I can still just use linux for development using my GUI editor.


Maybe it’s gotten better, but that same reason made me switch from windows to macos(with some Linux in between, which was not great indeed). That plus not having to reboot every time you sneeze.


Rebooting often was true for XP and earlier. I own 4 Windows 10 machines, 2 laptops and 2 desktops. I never rebooted the laptops. Desktops were rebooted when there was a power glitch because I don't own an UPS.

These day I read more stories about people switching from macOS to Windows than the other way around.


Unless you disabled Windows Updates, your systems are probably broken if you haven't had to reboot the laptops.


I literally never rebooted my Windows 10 laptop other than for rare updates or driver installs that required it.

OTOH I have to reboot Ubuntu from time to time (once every week or two) because I can't solve a problem (eg. the suspend getting in a snit).


I agree. Recently I switched to Windows 10 Pro from Linux (mostly Arch and Ubuntu) and I don't regret it thus far.

WSL, Docker Desktop and VS Code with WSL integration. It works well enough.


+1 to Listary. I have to add that Listary is definitely underrated.


Qbserve (https://qotoqot.com/qbserve/) when I was on macOS, now RescueTime + Custom New URL Tab (Chrome extension) pointing to https://www.rescuetime.com/browse/productivity/by/hour/, so I get immediate feedback on my productivity (motivates me to keep moving) or slacking (motivates me to start working).

I cannot stress enough the word immediate. Delayed reports (after a week, after a day, or whenever I check) sure give a bit of reality-check and insight on what to change (usually only the first time) but were not useful for actually implementing these changes. (I have ADHD if that matters. For some people insight might be enough.)

Qbserve displays constantly the current productivity score. I had a love&meh relationship with RescueTime (since it does not offer a way to display productivity tracking all the time), but after composing it with a link to report on a new tab (my most common way of procrastination), it was a game-changer.

A small note - if you prefer something more private, and open-source, there is https://github.com/ActivityWatch/activitywatch (I use it as well). Not as polished, but clearly logging well, and it has Web UI on localhost, thus can be used with Custome New URL Tab as well.


Wow, thanks for the heads-up on ActivityWatch! I used rescuetime a bit a few years ago, but I really couldn't justify using it on my work machine (where I spent most of my time).


RE: RescueTime new URL tab.. that's really clever! Stealing this for myself. Cheers


- IntelliJ IDEA [https://www.jetbrains.com/idea/] (surprised no one mentioned it yet)

- Spotlight - for quick calculations

- Contexts [https://contexts.co/] and chunkwm for window management [https://github.com/koekeishiya/chunkwm]

- Maccy [https://maccy.app/] for a decent and beautiful clipboard manager


Wow, I didn't know you could use Spotlight to do calculations! Thank you!

For anyone on macOS who doesn't know, hit command + spacebar.


I feel like I spend all my time waiting for Intellij IDEA to start up and reindex everything... Does anyone feel like it is snappy?


neither of those two actions are "snappy" but I guess its understandably so.

reindex everything should be happening that often unless caches are cleared; you might want to raise an issue if it's happening more often than you'd expected

what I'm more bothered by is the regressions that creep in either IDE or official plugin updates; I've spent some amount of time on every update I'd deem wasted, just to find a YouTrack issue on it :\


Feel the same. It is always doing something, especially with a big project.


Try to change default GC to G1.


1) Probably not 100 hours but, terminator is very, very good: https://blog.al4.co.nz/2011/05/getting-the-most-out-of-termi...

The saving layouts feature is an absolute gem.

2) dmenu (https://tools.suckless.org/dmenu/) is a lifesaver. I use it even on Ubuntu to launch custom scripts. The autocomplete is good because unlike when I use alt-F2 I can actually tell if a command is type correctly or not. Also it's a little known fact but you can type full commands into it, complete with pipes, and it will execute it. For ages I had a bind against notify send so I could examine data by doing `Meta-P foo | show` which would dump it to a notification. Just really useful for getting data without needing to wait for a terminal to start, just to show you one thing or value you need for 2 seconds.

3) Also I'll go ahead and plug my filesystem tagger - koios (https://gitlab.com/finnoleary/koios). It has a feature where it will autodetect (using libmagic) the type of a file.

So you can do something like: "tag all the files that have the mime type 'png' files in the directory with the tag 'png'":

    koios auto image/png +png .
and then "give me all the files tagged with png that do not have the .png extension":

    koios show +png | grep -v '.png$'
It binds tags to files so there's no background processes or databases needed (aside from the actual 'tag name' database, which was done to save space), and you can move them, copy them, whatever, without worrying and the tags stay bound to the file.


Probably a given on Mac: iTerm2 Terminal Emulator https://www.iterm2.com/

Less of a given, still Mac: Rectangle Tiling Window Organiser https://rectangleapp.com/

For Linux I would use Xmonad to achieve the same as the two programs above.


I have been using Spectacle (https://www.spectacleapp.com/) for years wishing it had mouse driven window snapping. I even once tried to implement it myself but gave up. I just tried Rectangle by your suggestion and it is absolutely amazing. Thank you.


Been using spectacle for years but since it's no longer maintained I had to moved to rectangle. Very similar, love it


I have been looking for a Windows alike snapping tool for Mac. Just tried Rectangle and it works just fine, thank you!


Check out yabai for a great macOS tiling manager.


Incremental compilation in GHCi with the -fobject-code flag.

Without this, I might have given up on Haskell a long time ago.

Also Cachix[0], as building lots of Nix packages from scratch takes an awful long time, especially on my MacBook Air.

Also git, vim, etc.

[0]: https://cachix.org/


Charles Proxy (paid version) No need to insert logging into legacy codebases with frontend, service, and monolithic backend apps while on local. Just load up Charles and reconfigure provider URLs to route through the proxy, add a filter or two, and boom, all comms are visible in one place, easily searchable, exportable, replayable.

It can be a memory hog when left running ,and I wish I could "pop out" portions of the UI to reorganize on my screen.

Otherwise, indispensable to my work the last couple of years.


Try proxyman, the UI is so much better


For writing HTML & CSS, definitely the Emmet plugin: https://emmet.io/

I still find myself in situations where I need more than Markdown but less than React; as a result I just need to quickly get some HTML on a page. Emmet lets you expand a snippet similar to a CSS selector into full-fledged markup, complete with attributes.


For writing and reading HTML, http://slim-lang.com hits the spot for me.

Elegant, clean, readable, an absolute pleasure to work with.

Compared to it HAML feels exhausting and writing/reading HTML... unacceptable.


+1 for emmet.

I love the plag in.


https://chocolatey.org/ - The Package Manager for Windows, similar to yum / apt

It has tons of software packages.


It's got a different philosophy, but I've had a nice time with scoop

https://scoop.sh/

The difference is that it (largely) stays confined within a directory without even needing elevated privileges and such for installs (which brings peace of mind for community installs). Repository is more centralized and automated too it seems.

Not perfect in a few edge cases, like other programs expecting a certain install location. Overall enormous time saver.


An alternative is Scoop [1], which personally I find more convenient.

[1] https://scoop.sh/


With this thing I scripted a great part of my Windows setup, but ultimately switched to Linux, was very interesting though.


NimbleText https://nimbletext.com/ has saved me so much time. I use it to generate sql from spreadsheets and other one-off code generation from data.


Oh, I've needed things like that before, but didn't even think to look for it. I just messed with a full CSV for that. Thanks!


OMG, i have seen it ages ago and forgot to save the url and i couldn't find it ever again. Thanks so much!!!


what's the gain compared to excel and CONCATENATE('code'; A1;';') ?


    # ci = clipboard in, co = clipboard out
    # xclip so this works in gui apps too
    alias ci="xclip -selection clipboard"
    alias co="xclip -selection clipboard -o"
Also: tig, Text-mode interface for git https://github.com/jonas/tig


Is that equivalent to `pbcopy` and `pbpaste` on OSX?


Those commands aren't exactly the same. These copy what you have selected. You can use xclip just like pbcopy/pbpaste though. Xclip has a few more features and you can get it on mac via brew and nix iirc.


The usefulness of xclip is the thing that's currently preventing me from accepting fedora's urging to switch my default session to wayland.


I've been on Wayland for over a year and I have had a good experience with wl-clipboard (has the wl-copy and wl-paste commands).


I will have to try again. Last time I attempted, wl-paste did not work in my terminal, which fully killed it for me.


Github actions - Automated builds, testing and deployments. Saves tonnes of time and allows me to quickly switch between repos with worrying about deploys and testing.

Docker - Allows reproducible builds and caching, an indespensible and composeable tool for development.

Shell Aliases - just using aliases for common commands in .bashrc saves tonnes of time. Even better version control your aliases in a github repo like this https://github.com/benwinding/dotfiles

Flameshot and Peek - lightweight screenshot and screen recording tools

Linux - It's difficult initially, but Learning and developing in Linux really is just faster, easier, and saves tonnes of time, mainly due to the unix philosophy...


Spacemacs! Apart from the obvious evil mode navigation stuff:

- Magit, to quickly organize hunks into commits and do general git things

- Org mode, to organize TODOs, thoughts and even draft code snippets and designs

- Language-specific layers with great features (usually REPLs, support for refactoring, autocomplete — stuff you expect from any other IDE).


Definitely agree! I switched to Spacemacs about 1.5 years ago and the increase in productivity was amazing.

If you work with Git a lot, it's worth looking at for Magit alone. The way you are able to perform complex tasks with a few keystrokes is a huge timesaver for me.


Have used Sublime Merge and GitKrarken for chunking-review-committing for git.


Bit of a non-traditional answer, but: Spaced Repetition Software generally and Anki specifically.

https://en.wikipedia.org/wiki/Spaced_repetition

https://apps.ankiweb.net

There are two ways in which it’s saved me hundreds of hours. These are of course anecdotal, but the science behind Spaced Repetition is pretty solid.

1. We naturally forget information after a certain amount of time. Much of this information has to be relearned at some point; I’d estimate we end up learning the same fact at least a dozen times over the course of our lifetime. SRS can cut this relearning time to the minimum necessary.

2. By optimizing for ‘daily maximum possible learning.’ This is related to the Spacing Effect and it’s a crucial idea underlying SRS.

https://en.wikipedia.org/wiki/Spacing_effect

In my personal experience, there is a limit to the amount of information you can meaningful acquire per day. After that point, it becomes a waste of time and effort. So, by dividing learning materials into smaller pieces and spreading them out over time, you can reduce the amount of time needed to learn them.

This is particularly relevant for useful-but-not-urgent information, like alphabets or geography. For example, trying to learn and remember the Russian alphabet in a single day will probably take you a few hours, if not all day. Learn one letter per day over the course of three months, however, and your daily time requirement is perhaps a few minutes. The retention rate per minute of time invested is dramatically higher.


Karabiner, Keyboard Maestro & Alfred for me. Probably more than 1000 hours at this point. Need to update my macOS repo with more tools I use now.

https://github.com/nikitavoloboev/my-mac-os


I'm surprised I had to scroll this far down to find this.

I've been using my own version of 'hyper key'[1] for years now. I map capslock to ctrl (in OSX), then ctrl-space to 'ctrl, command, option' in Karabiner, so that I have a 'namespace' of my own hotkeys, which I assign to apps in apptivate[2] to quick switch, and finally I make it so that if I tap caps without hitting another key, it actually hits escape. I use a two-button combo for hyper instead of just capslock so that capslock on its own is just ctrl, and I can use all the default readline shortcuts.

[1] https://stevelosh.com/blog/2012/10/a-modern-space-cadet/#s14... [2] http://www.apptivateapp.com/


I have been using Karabiner to use vim bindings within OS. CAPS + h/j/k/l... to move up/down... . It's easier than moving your hand to direction keys.


fasttext : https://fasttext.cc/

I am a hobbyist NLP researcher and have published 4 papers in the last year just thanks to this library and the many life-saving tweaks. Honestly a world-class effort from the team at Facebook.


Seems much more comprehensive than GloVe (https://nlp.stanford.edu/projects/glove/)


it is a lot more comprehensive and it is fast. Text classifier with millions of documents done in 5 - 10 mins on normal hardware.


On the Mac:

- Alfred App - helps with tons of things, but the clipboard manager alone has saved me over 100 hours

- iTerm 2, especially with a global hot key (and Guake on Linux before my first Mac)

- Prettier on npm (auto code formatting tool, like gofmt)

- Jumpy on npm (my own CLI bookmarking tool, makes it easy to hop around directories)


Launchbar (https://obdev.at/products/launchbar/index.html)

Spotlight on steroids, along the lines of Alfred and Quicksilver, but the best of the bunch, imo. It's a frecency based fuzzy matching searcher that adheres to subject - verb - (optional) object grammar, and using it feels like a global GUI terminal. A new mac without it feels completely gimped. Things I use it for:

- quick launch/switch apps

- browse filesystem (like https://github.com/ranger/ranger) and do anything with item

- take selected item (file, folder, url, text) -> open with X, send to any search engine, move, copy, rename, start composing email with text, compress, basic text munging, etc.

- calculator

- clipboard and snippets manager (incl. variables like current date/time)


Quill[1] editor has saved me (and many others) 100+ hours. Imagine building a rich text editor from scratch in your product.

Also - git, Django REST framework, VueJS

[1] https://quilljs.com/


tui.editor is another excellent choice, for me was the best one since the handles Markdown as a source for writing out the content. Take a lot a it!



Using vim as my main editor has incredibly increased my productivity, but learning to use it's macros saved me even a more tremendous amount of time. It takes a while to learn to use it, but after that any kind of repetitive task can be done easily with it. And if combined with some bash and vimscript knowledge, it is even greater.


I have to agree wholeheartedly. Learning vim is quite painful, but it keeps paying off for years, even if you choose to use modern editors with vim bindings. The speed of these bindings for navigating and editing code is really unrivalled. I even use the Vimium Chrome plugin, it's a pleasure there too.


I have been using surfingkeys after using vimium for a while. It has way more features (can use it on pdf page tabs too) and you can customize it endlessly with simple javascript. It also has vim binding for editing text in browser. Highly recommended.


> I even use the Vimium Chrome plugin

This plugin can be clumsy sometimes, so I tend to use qutebrowser more often


I love vim and have been using it for years. However, I really struggle to find a good config for writing typescript. I see my VSCode colleagues having a blast with auto completion and type signatures lookups. But I could never get this right in vim.

Is there a resource about state of the art typescript with vim?


After well over a decade of using vim and trying to use it as an IDE (which I did for a few years full time), I opted to use an actual IDE with a vim plugin instead. I currently use the Jetbrains tools which have an excellent vim plugin developed for them that is only annoying sometimes.

It supports macros, and as far as I can tell most of the actual navigation and text manipulation stuff works, even stuff that I didn't find in spacemacs. Even relative line numbers work which has been a godsend. I can navigate tabs using gt/gp, and split windows with :split/:vsplit, but I use the built in file search/navigator for opening files which is far superior to anything I managed to get set up in vim (and I played around a lot).

Then I have a simple .vimrc with only a handful of modifications (100 lines or so) and I drop down to real vim for writing small scripts, and any other text composition and refactoring, like comments on HN ;)

I hear VSCode has an excellent vim plugin, although having briefly played with VSCode a few months ago I don't think it's the tool for me. I'm happy with something heavyweight for developing projects, and something simpler for quick scripts, slack messages, etc.

YMMV of course but this was the route I ultimately ended up taking and I'm happy with my decision.


I highly suggest, [CoC](https://github.com/neoclide/coc.nvim). It's a simple LSP client, you'll get the exact same coding experience as VSCode. Then you install the [coc-tsserver plugin](https://github.com/neoclide/coc-tsserver) or any LSP server (gopls, omnisharp, etc..) and you're good to go!


Typescript works well using vim-polyglot. For the autocomplete I don't actually use it, but the last time I tried, coc.vim was nice (it is actually the VSCode completion engine in vim).


I use coc.vim but the autocomplete for types doesn’t work well: if there are several types by the same name you’ll just get a list of the identical names and no way to tell their signature and/or what package they’re from. And if you have a variable or a type, I also can’t get its signature. These are things that VSCode does very well but I don’t want to switch!


Forest https://www.forestapp.cc/ I've tried a bunch of distraction blockers, but this is the one I've found most pleasant to use.

Mosh https://mosh.org/ I'm a fairly recent user so it hasn't been 100 hours yet, but it will be.

Not a program per se, but a few years ago I set up a cron job to back up my shell history every night to a file named based on the date, and then aliased 'h' to grep them all and pipe to tail. This allows me to see the last dozen times I used any string in a shell command. It comes in handy many times per day.


* pass, the standard unix password manager https://www.passwordstore.org/.

Instead of stopping whatever I'm doing, thinking about what password I used last time something forced me to rotate, pass saves the day!

* AwesomeWM, https://awesomewm.org/.

Maybe not a program per se, anyway using easy-to-remember keyboard shortcuts instead of clicking through a gui probably saved me a few minutes here and there.

* Gentoo Portage, The Gentoo package manager.

Yea, something that compiles packages from scratch may not sound like your typical time-saver, however, back when I had to track down every dependency and compile it myself just to get whatever package working that wasn't in the current distribution package tree, this saved me a lot of time. - This of course goes for every package manager, however back then(tm) portage had the most current releases and a lot of packages not in apt, rpm, etc.

* tmux (and tmux-cssh), https://github.com/zinic/tmux-cssh/

synchronize ssh sessions, like clusterssh, not very elegant but this saved me more than once, fast synchronized change on multiple machines at once \o/

* Ansible https://ansible.com/

Make tedious boring tasks less so, specify stuff in yaml once, execute and forget about them.


Ironically enough, what made me use awesomewm is a ricing[1], but these days I tend to use Sway because... well, wayland.

And for Ansible, I absolutely like sovereign[2] saved me a lot of time while setting up my home servers.

[1]: https://www.reddit.com/r/unixporn/comments/a900p7/awesome_me...

[2]: https://github.com/sovereign/sovereign


Ansible is great but I ran into limitations for larger installations. Also the debugging is a nightmare.

I moved to SaltStack https://www.saltstack.com/


IrfanView for converting images.

https://www.irfanview.com/


1Password - remove cognitive load and easy ass to all my secrets across devices. Including sharing with family and coworkers

Rubymine - Ruby And JavaScript IDE with powerful SCM, test and debugging tools.

Notion - Shared Knowledgeable and collaboration. Really easy to go from a free form unstructured draft to organized, structured and easily accessible knowledge repo.

Whimsical - My favorite diagraming and wireframing tool.

Notable mentions

Stoplight OPen API editor.

Sunsama - light weight and collaborative todo list with focus on Calendaring


draw.io -- [browser based](https://www.draw.io/) as well as [desktop drawing tool](https://github.com/jgraph/drawio-desktop/releases/tag/v12.9....) with many templates for flowcharts, UML, etc. Free and very useful.


The command line tools of the imagemagick suite, "convert", for batch-converting images to thumbnails, "identify" for extracting basic metadata, for instance.

https://imagemagick.org/index.php


This is a great thread, thanks for asking this question!

My blog post about setting up a Linux workstation has a few timesavers: https://tkainrad.dev/posts/setting-up-linux-workstation/#boo...

An important improvement for me was to switch from Bash to Zsh and use a variety of plugins, such as z, zsh-peco-history (better history search), zsh-autosuggestions, and zsh-syntax-highlighting.

If you work a lot with ssh, it is also worth the effort to create a proper .ssh/config that contains the most used hosts.


I spent roughly three months late last year working on my workflow. Figuring out what I was good at, not so good at, and what I'd forever found impossible to do without fear of punishment or shame. Slowly, I learned how I worked best and leveraged these lessons in design of the new work flow. Of course, the solution was far simpler than before. The lessons were often exactly what was exhaustively explained in books about habit and routine.

Anyway, my workflow is centered around directories and files accessed from Sublime. Every directory is major subject area or project. One directory is the Control Center - filled with documents that drive my work day and planning. Things like Work Journal, Weekly, Master, Research Depot, etc., are all referenced every day - sometimes dozens of times.

Table Editor package for Sublime to create logs, reference tables, checklists (option v = √). Also great for tracking my micro workouts - calisthenics every hour to keep the pump bumping.

Code folding works to hide "folders" of data within a text document so I can access things quickly from their header line. This is particularly handy in the Research Depot file. Exempli gratia, I have NPRs Music recommendations of 2020 folded up to one visible line with checkboxes of albums I've tried. Another folded area is on Stinging Nettle uses.

My zettlekasten system was moved to Sublime as well. It got its own directory. Added a time stamp package for naming the file from the first line with a CMD-T, and some simple markdown, each file is a zettle. I use Zettlr for exploring the notes - but Sublime for editing. Perfect mix for me.

It's not so much this all saved me 100 hours, but my productivity is up 1000%. No hyperbole. My writing, projects, chores, fitness and client labor are all up by extraordinary levels. My down time is more relaxing, work more pleasurable, and creativity is like a real psychic adventure. And, it should also be noted I've been on Sublime for maybe ten years, or so it seems.

  Sublime
    TableEditor
    Code Folder feature
    Tabbed directories - combined windows view
  Zettlr 
  Monodraw - but looking at the markdown diagramming tools...


Would you be open to sharing more about your workflow? 1000% increase in productivity is a bold statement!


Heh...maybe less bold if you could have seen how terrible my productivity was before!

But sure, I'm happy to share. It's now next up on the article hopper. To be shared here and on my blog / gopher site soon.


I'm very interested, what's the URL of your blog?


Me too . please do share


How does your zettlekasten system work?


Git Bash on Windows. Things like this were always possible, but none of them made the install as quick and painless. This has been especially useful in Linux+Windows shops. You can simply state a requirement of "Windows users: Install Git For Windows", after which you can script things more less identically across both OS's.


Jupyter Notebook. And before that iPython (compared to the vanilla Pyton REPL).

Though these are hardly secret tools :)


- 1Password password manager

- PDFill Free PDF Tools - indispensable for dealing with any bureaucratic tasks - cutting/rearranging pages, etc


The go-jira CLI probably comes close over the last 12 months.

https://github.com/go-jira/jira


That is an impossibly good name.

Also thanks! I'm getting Jira'd, and some things are so slow that it can take upwards of 30 minutes to set up tasks / reorganize / etc. Automation would help a lot.


I personally maintain and use https://www.npmjs.com/package/jira-cmd . Though it has not saved 100 hours but it has saved me good 20 hours over an year. It saves me atleast 20-30 seconds on each jira

some of its functionalities are 1. Unlimited templates for default jira params like epic names, labels, priority etc. 2. alias for frequently used jql 3. aggregation like count,sum support over jql output 4. making multiple jira transitions with single command by saving those transition as comma separated values.

many more such features


Git has probably saved me that and more by making branching so easy that I do it for everything.


Stating the obvious, a web browser with a search engine.

Then custom scripts I made to do specific tasks on hundreds of files. So familiar scripting languages, in general, such as those regularly used at work. I had actually used MatLab for non scientific uses like batch downloading, or batch image/audio format conversion.

And a modern IDE that prevents many errors in the first place. VS Intellisense does it for me, but I guess there are equivalents in other development environments.


StackOverflow, if it can be regarded as a program.

Spectacle: Easily organize windows without using a mouse on macOS.

https://github.com/eczarny/spectacle


Only limitation of spectacle is lack of spaces support. You can't create spaces in spectacle. But I use it as my WM and have been very happy with it's simplicity and reliability.


i3, vim, and vimium.

Not only saved me tons of time and increased my development speed, but allowed me to recover from RSI and pains in my forearm, which in my case was caused by moving my hands between the home row, arrow keys and mouse constantly, and especially worsened when using the mouse scroll wheel.


bash/shell knowledge helped me automate a lot of stuff with the 80/20 approach. I can't stress enough how often a simple 10 lines bash script automated hours of manual work for me.

Also, `vim -` (stdin buffer edit mode) is absurdly awesome. It starts with `ls -la | vim -` and ends up with `cat * | sed ... | vim -` and saves a ton of time.

These bashrc aliases rescued my stupidness a lot of times:

> alias cls="clear; printf '\033[3J'"; # clear screen and scroll buffer

> alias cp="cp -i"; # confirm before overwrite

> alias df="df -h"; # human-readable sizes

> alias mv="mv -i"; # confirm before overwrite

> alias ns="netstat -tup --wide"; # show active program sockets

If I would have to choose, it's definitely VIM that automated the most. Switched to VIM around 2004 and didn't regret it eversince.

Remotely debugging on an ssh server to figure out what's going on - with the same editor configuration and setup as on your desktop computer - comes in very handy in emergency situations when you have almost no tolerance for mistakes.


Node.js -- Can easily build a ton of server side and CLI tools with ease. Saved me a ton of time!


Coming from a Java environment, I can't agree enough... A lot of my fellow devs would think of NodeJS as a replacement for Ruby--inefficient and not production ready.

When I first tried NodeJS, I was hooked... You can build simple CRUD backend APIs within minutes! I'm aware you can do the same with Java, e.g. something like Spring Boot streamlines the process a ton as well, but the feedback loop of just writing a line or two and having a server automatically reload within seconds is amazingly addicting.

I am not sure I would use Node for production... I suspect a lot of the Java world might switch to Go as being much faster yet much safer than something like Node.


Wouldn't the fact that Go does not have exceptions be a deterrent to move from Java?

(I am an amateur Python dev and tried Go but could not live with the error handling boilerplate and the lack of exceptions. It looks like a nice language though)



There was a time when this worked great.

Now I feel like many doesn't work on Google


How so?

Sure, it’s true some of the operators come and go, but I assure you some of the most important ones still work fine and Google one a daily base asks me if I am a bot.

Happy to answer any questions if there’s something specific you’re having an issue with.


Here's an example that I don't quite understand yet.

[nhs inurl:mcusercontent.com] = 2 hits.

[covid-19 nhs inurl:mcusercontent.com] = 90 hits.

[covid-19 "nhs" inurl:mcusercontent.com] = 90 hits.

I'd expect that first one to include all the second, but it doesn't. I thought maybe the second is ignoring the NHS word, so I wrap it in double quotes to force it to be included and it returns the same results.


Google has always had variations between the [query keywords] results of the “Google indexes” AND the “literal website keyword instances/indexes”; that’s not new, unrelated to search operations aside from the fact that advanced search operators make this more easy to see.

(In fact, the article I linked to references this as a way to do quality assurance on Google’s indexing on content on your own domains.)

———

Note that the sum of the counts for the following three queries:

[“aaa” AND “bbb” site:domain.com]

[“aaa” AND -“bbb” site:domain.com]

[-“aaa” AND “bbb” site:domain.com]

...in theory should equal count of this query:

[“aaa” OR “bbb” site:domain.com]

...in practice though, they never have; by never, since Google first released their search results.

——

Further, while counts frequently are over 1000, only the first 1000 search results are viewable, and vast majority of searches only pull the first 10 results and review an even smaller percentage of those 10 results.


- WallabyJS - makes writing tests almost feel addictive, and being able to run and debug the JS directly in the code has saved me hours.

- Jetbrains IDEs - the refactoring and debugging tools are second to none.


If you’re in the .NET world, NCrunch is basically Wallaby. Saves me a huge amount of time and helps me write better tests by identifying where I’ve missed branches or setup test data incorrectly through the line indicators.


> - Jetbrains IDEs - the refactoring and debugging tools are second to none.

It might not quite be in the 100 hours bucket over the past 2 years, but it's close... using their toolbox app has made them much easier to keep installed/updated on my Linux workstation.


Omnisharp for emacs: troll your friends and co-workers by writing C#/dotnet in emacs! Omnisharp enables "intellisense" or whatever it's called nowadays, in emacs, via Company mode or similar. The code completion is a huge time saver.

Also, honorable mention for magic wormhole, a finally sane way to move arbitrary files between devices.


Ruby on Rails. Still nothing better for getting a high quality product out the door fast.


I wrote a prime number finding function in coffee script and python just for fun. Saved me a lot of time, factoring numbers is hard. I’d also like to mention javascript again, I can say I’ve played millions of hands of video poker. Without those programming environments I’d still be shuffling cards or dividing numbers.


Since nobody else has mentioned it: Steam, over a long period of time.

It makes purchases easy, it makes reviews / researching games easy, it makes updates very easy, it often makes finding mods easy, it makes installs easy. And it reduces issues of lost games / keys after many years go by, as they're all in the library.


For desktop workflows I've started a spreadsheet documenting various utilities and os defaults I've depended on across mac/win/linux: https://docs.google.com/spreadsheets/d/148zTJUwfVv9xfDcpSoH3...

Intent was to explore if I still could be as productive doing a variety of things (general administrivia, writing, design, code) outside of MacOS. So it's organized less around a specific app but rather a workflow/concept.

Ideally I'd love to see a git-backed static website around this so people could fork/collect/share their workflows across environments visually.


(mine are all not particularly new)

ShareX (windows): screenshot > optionally annotate > upload to ftp > copy url to clipboard

But I can also paste from the clipboard:

- if it's a file: upload to ftp, copy link to clipboard

- if it's text: upload to ftp, custom URL makes it load in my org-mode or markdown web-render


Org-mode: just can't go back for my profession (product management. Need to jot down fast, than sort loads and keep track of todos)


SikuliX: last resort for automation when AHK can't do it. Finds where to click or type visually. (e.g. good for android emulators)


java fueled pain in the ass to run though, nothing for day-to-day helper scripts


Violentmonkey (Userscripts in the browser: custom js for all kind of shenanigans. use it for rudimentary semi-automated testing and small improvements)


installers for windows:

- Chocolatey (package manager)

- Ninite (auto-installs 80% of the programs I and the family might need on a fresh windows install)


Multi-line Calculators with Variables and evaluating each line:

OpalCalc (Windows) | Soulver (Mac) | NaSC (Linux)


Create React App saved me about 100 hours

https://create-react-app.dev


Vscode remote plugins. Being able to have the full-fledged editor remotely on a Linux development machine is a game changer.


Nope, that's the one. Not sure why it's slow and buggy for you. It's almost as fast as vscode is for me locally. What bugs did you have?


I've tried Remote - SSH plugin from MS and it wasn't great - slow and buggy. Do you mean a different plugin?


Emacs. 1000s is more appropriate. Simply could not have done what I do without it.


One word - Cygwin .

Having those utilities available in Windows saved me not hundred but ten of thousand of hours.

Also learning PowerShell when dealing stuff in Windows is saving a lot more hours then the ones you put in learning it.


Windows:

Vivaldi browser - Amazing for productivity, custom search engines, configurable, can be controlled by keyboard. I can search in company ishare/OneDrive via URL bar etc.

Total commander - I use quite minimal interface, it actually looks more like fman. I use the folder jumplist a lot which saves a lot of time. I have some custom buttons (open in gVim for instance) and lynx like movement.

Linux:

Terminator - Terminator with splits, nice font rendering, easy GUI configuration

Arch - I can also put it to the cost me 100 hours list :] but AUR definitely saves time compared to Ubuntu dependency hell.


Kakoune: multiple selections, interactivity and powerful editing primitives makes text editing a breeze.

https://kakoune.org/


There's a VS Code plugin for Kakoune-like editing called Dance. I was looking for a quick way to put multiple cursors over a given word in VSCodeVim; Kakoune (and therefore Dance) is more focused on multi-cursor editing and searching which made it possible for me to do that. Dance is also a much lighter layer over VS Code's built-in commands, making it easier to write custom keybinds and have better compatibility with other extensions.

https://github.com/71/dance


Can you copy the description from that old thread into your post, so that people don't need to click through for the full context? I think it'll still be editable at this point



AltDrag for Windows. Allows you to move and resize windows by pressing alt and left/right mouse button and drag anywhere on the window, not just title bar.

GridMove to arrange windows (with multiple monitor support) by keyboard shortcuts according to a grid I specified.

AutoHotKeys script that replaces 'dddd' with current date, 'ddtt' with date and time, 'dtdt' that outputs date and time with underscores (think filenames) and 'tttt' for just time.


Goland - an IDE that specializes in Golang projects.

The following features have saved me 100s of hours:

  - Being able to run tests/benchmarks directly in a test file via either clicking the play button or using a keyboard shortcut

  - It’s refactor support

  - automatically getting imports ordered and code formatted on save

  - multicursor support

  - and even more!
One of the few IDEs I would actually pay for if my company didn’t already pay for it.


vscode supports all of these and is free. The go language server has been buggy in the past but it's been improving quickly.


Yeah I keep hearing great things about vscode. Need to give it a shot one of these days.


Code related:

Visual Studio, ReSharper, Notepad++ (I did many tedious tasks with ease just by using regular expressions), Git, generic To Do list software (Microsoft ToDo, Todoist, etc.) - not everything is to be kept in Jira so this kind of software helps with organizing other tasks.

Not code related: Adobe Lightroom, Adobe Photoshop

Web browser is a piece of software that saved me time but also helped me waste a lot of time. So it's not only software that matters but the user, too.


Emacs. I probably lost at least 100 hours initially learning to use it and optimizing it for my personal workflow. But it’s certainly a net positive by now.



I recently learned of the many git shortcuts and others such as “take”, combining “mkdir” with “cd” [1].

1. https://github.com/ohmyzsh/ohmyzsh/wiki/Cheatsheet


I started with OMZ but later moved to prezto due to speed issues. It has same plugins but it is faster.


Fzf. Fuzzy completion is a godsend for working in the terminal, remembering commands is a thing of the past.

As a nice bonus there is also a wonderful vim plugin :)


Also, Oh My Zsh has a nice little fzf plugin that marries shell history search (ctrl+R) to fzf.


For me it is, 100% XFCE.

I'm working on a single monitor, so managing workspaces is crucial and xfce4 lets you set these up in seconds.

I am very happy to now can brag about it to someone:

You can allow your desktop to react to your mousewheel to change workspaces. Combine this with a one pixel border on any site of your maximized windows and you can circle your workspaces by just pulling your mouse to the edge. In practice, with an full-hd monitor, one does not see that there is one pixel of your desktop visible. In the few cases where the hand uses the mouse, this is the most convienient feature one can possibly experience.

I also can click in the same area with the right mouseclick and access my applicationmenu.

Another neat trick: xfce4 has to default application finder, alt+f2 and alt+f3. The latter appears to be unusable, because one has to tab to often to select an application.. But you can just resize the right pane far most to the left and the finder will always remeber this behaviour. The latter also includes user generated menu icons.

Since I rely on maximized windows, I also excluded all window borderings to maximize the viewport. simply delete all contents of your selected theme and reapply it.

One Terminal is configured as a dropdown, so it is permanent accessible over the entire worksession until you force close it, also, built-in.

Hotkeys for circuling workspaces and circle the current window within them as mentioned above.

Different backgrounds for each workspace plus a translucent panel, so I can identify on which workspace I am via perceptual cognition.

alt-rightclick lets you resize an window to any size.

It is the perfect workstation and i highly recommend it. Everything is builtin and works on all major distros out of the box.


I work as a tester for a some websites: I test the GUI and the REST APIs used by the smartphones apps. These tools make my work a lot easier (they might not be the best for your specific needs, they are just the ones I use):

- Talend API Tester: a Chrome extension to test (you probably guessed it) APIs! I can automate many things with it and use regex in my tests. If I had to do all that manually, I'd have become crazy by now. - Watir: a Ruby library that is essentially a wrapper around Selenium. Watir is easy to use, and I found Ruby very easy to learn. Also, bundler makes the process of keeping my libraries up to date really painless (when my webdriver tells my that it can't communicate with the browser because it has become outdated, a simple 'bundle install' fixes the issue)

[] Note: I don't need to do a fancy program, I just need to write some farily simple scripts that automate actions a verify a few things on web pages.


perl, used in command-line mode. This is my data munging superpower.


`perl -pie` all by itself probably falls into the "saved you 100 hours" bucket for me.


total commander .. orthodox file manager, I dont understand why this is not a built-in file manager for any os. I just want to find and organize stuff, I dont want to manage windows.


Best 40EUR* I've ever spent (* actual price might be different now). It has everything you might want in a file manager (advanced search, integrated archive management, diff, multi rename tool, multiple tabs, FTP client, customizable UI and many more features). If you need additional functionality there's even huge plugin library.

Been using it from Windows 98 as a "trial" version, so during all those years saved hours count is immeasurable. Sadly, there's no decent alternative on Linux. Krusader looks functionally almost on par, but there's something about UI and lack of integrated tools (it uses external programs for some functionality) is throwing me off.


For terminal there are ranger (pyton) and lf (go) which i prefer over mc


+1 for ranger for me


Any advantages over midnight commander of FAR commander?


A tons of features including multitabs, directory/file compare, auto zip, built-in ftp connections and plugins, for everything.


Wox (http://www.wox.one and Everything (http://www.voidtools.com) - two fantastic tools for keyboard focused workflows on Windows. Wox is an equivalent to Alfred probably.


Plugging my own tool, but I wrote a Chrome extension that checks websites for SEO, speed, and security best practices (it's a crawler so it can check 100s of pages in a few minutes):

https://www.checkbot.io/

It saved me a lot of time and caught tons of mistakes before they got to production while working on multiple websites as a contractor

For example, I was assisting a team on one sprawling dynamic website with a lot of SEO and performance issues - the site had been hacked together over the years such that editing one page would usually break groups of unrelated pages in unexpected ways. My extension helped me get on top of which pages were dependent on each other, to prioritise what was worth fixing, and to confirm improvements had been made without breaking anything.


Maybe not 100hrs, but ~40 Regex Buddy $40. regex tester, debugger and in a lesser extent, regex applier.


Regex 101 has probably saved 100 hours for me: https://regex101.com

(Back when I was looking for something like this, Regex Buddy always popped up in the search results but it didn't look good enough to fire up a windows VM just to use it. The auto-generated explanations based on your regex/test data from regex101 have proven to be tremendous debugging aids.)


Probably the spaced repetition application SuperMemo [1]. Beyond normal SRS like anki it has a feature called incremental reading [2] which makes studying at least 3 times as easy for me. I have ADHD so IR helps a lot by taking care of 90% of the complexity of (managing) studying so that I can just focus on what's in front of me.

[1] https://www.supermemo.com/archives1990-2015/english/smintro [2] https://supermemo.guru/wiki/Incremental_reading


Keyboard Maestro for Mac. Its unlimited customizability and incredible amount of capabilities make me dread ever moving to another platform.

https://www.keyboardmaestro.com


Oh man macros. I remember using them in the OS Classic days before aliases/shortcuts were a thing, so you'd have to click into a pile of folders to open an application, but not with macros. Macros would do it for you.


WorkOS (https://workos.com/) if you need to support single sign-on (SSO) for your app.

SSO is free, and they offer other enterprise-focused features, like directory sync and audit trails.


How would that compare to keycloak?


I'm not familiar with Keycloak. I glanced at their docs briefly, and it looks like Keycloak manages your users for you?

WorkOS only handles SSO, so all of our users are still stored in our own database. This is one of the big reasons we went with WorkOS as opposed to something like Auth0 or AWS Cognito.


A very big pain we've been having for a while is debugging our app that's been running on Kubernetes for the past year. The local debugging tools are great, but attempting to debug certain issues in a remote environment is a major pain that probably wasted hundreds of hours of waiting for tests, redeploying etc.

To mitigate that, we've been using a tool called Rookout (https://www.rookout.com). We no longer need console.log statements in our code - We just set non-breaking breakpoints via their Web IDE and it just works - we get all the data we need, and without redeploying ¯\_(ツ)_/¯


Groupy to add tabs into programs that don't have tabs for documents. Use it mostly with Axure.

TouchCursor to enhance keyboard, mostly as arrows, "Start" and "End" buttons. Allows to deal with text without moving hand to arrows.


Zsh, mainly because of shortcuts, shared history, autocomplete that works


Microsoft Windows Script Host (WSH) has saved me and my teams over the last 2 decades probably hundreds of hours. It has allowed me to deploy small VBScript and JScript scripts that automate day to day repetitive tasks in the office without worrying about installing runtimes/dependencies etc. You write it once and it just works for everyone (provided you work in the typical MS only office space, which I'm aware many here don't). Security is obviously a concern as the tech is quite legacy these days.


GitLab CI/CD.

Once it is in place it saves plenty of keystrokes and routine tasks.


Not a program, but using SCSS instead of CSS saved me 100s of hours


For me it was SCSS + Suzy Grids + Breakpoint. Effortless complex responsive grid systems on all browsers (IE10 included!)


Microsfot teams app - While working in office most of my colleges would come to my desk for trivial things if they wanted something but don't know what they want. During discussion they would figure it out what they wanted exactly. Since the corono outbreak everyone is WFH and now if they want something they figure out what exactly they want and then message me. This is a huge time saver. Now i can focus a lot at the problem and respond to the messages async.


Delver Lens has saved me tons of time scanning Magic: the Gathering cards: https://delverlab.com.


Oh, dude! I'm very glad you enjoyed my app!


Of course you'd be on here. I know you mentioned this was a tool for primarily store owners but a lot of my friends and I use these to scan our old collections.


I started writing custom yasnippet snippets (in GNU Emacs) to write kubernetes yaml files.

If you ever had to write a non trivial deployment by hand you know what I'm talking about.


Devon Think.

Having a local search engine with annotations is incredibly useful.


I’ve been looking at Devon Think but finding it a little hard to understand how best to leverage it. Would you mind sharing how you use it?


There's a name I haven't heard in a loooong time.


Probably git, 1password (though I'm planning to shift to Bitwarden), and entr: http://eradman.com/entrproject/

Having a simple standard way to automate all of my modify->"do x" runs has been wonderful, and (with a bit of care in your project structure) being able to near-livecode in almost any language is an incredible productivity boost.


- iTerm2 saved a lot in many ways [no need to use `git branch` and annoying full directly structure] - CI/CDs saved from the manual builds and testing commands


How does iTerm2 accomplish this for you?


* vim probably saved me thousands of hours alone.

* qutebrowser is close second as a lot of time on the web - the more efficient my web browser is the more time I save. Scripts, quickmarks and keyboard shortcuts just save a lot of time.

* spotify, music collection takes a lot of time. Finding music, buying music or even downloading music illegally is very time consuming. I maintain catalogs of obscure vaporwave subgenres and it's really really time consuming.


Windows: 1) Autohotkey 2) Ditto Clipboard Manager 3) ShareX


Second Ditto, and adding Q-Dir to the list.


This isn't a program, but the document shortcuts (mostly the ones beginning with the control key)[0] on OSX have saved me heaps of time while maneuvering through text.

I learned them from Emacs on Linux and was pleasantly surprised to find that they work in almost every app on OSX.

[0] https://support.apple.com/en-us/HT201236#text


TamperMonkey! I've dealt with some monstrous websites which needed in-browser user-friendly automation, and TamperMonkey is that tool for the job.


can you share some examples please ?


I cannot, as it was for a past employer and the code is not open-source.

I used TamperMonkey to include https://www.papaparse.com/, then injected a button into a web page. The user would navigate to the "start" page, and a button would appear, it was just a normal form button. They would upload a CSV, which I slurped into a cookie, webdb... and something else. That would then walk a known set of URLs to scrape the unknown URLs and click the required buttons to trigger javascript calls by the website itself, before building a further set of URLs to navigate. It would visit the "final" set of URLs, gather the info into a secondary CSV, then walk back up to the entrypoint before going to the second entry.

At the end, it would download the secondary CSV to the users disk in a format that was uploadable to another system.

The entire thing was in a single if statement because I was just learning JavaScript and did not know any other way to get around async problems at the time. :)

It was ugly, but worked awesome and since writing it several years ago has probably saved 10s of thousands of hours.


Sibelius - I don't have to manually create individual parts from my orchestra scores or put a page into the trash bin just because I did one mistake.

REAPER, Pure Data and other - I don't have to slice and glue magnetic tape to create electronic music

Thunderbird - I don't have to handwrite letters and bring them to the post office

I think the more interesting question would be: which computer program hasn't saved me 100 hours...


https://aspnetzero.com/ - Application startup template for ASP.NET Core

It has tons of useful features that should be in a line of business application. It saves you more than 100 hours with pre-built pages (authentication, permission management, localization, multi-tenancy, SaaS features, CRUD Page Generator (RAD Tool), themes etc.)


https://kodi.tv/about

If you are not using Kodi, you should already be using it :)

PLEX is a meme.


Plex/Emby/Jellyfin are a media-server, while Kodi. Not saying Kodi isn't cool, just that comparing it to plex is apples/oranges.


RescueTime. Hands down. Have been a proud customer for 4 years. Saved me months of my life being frittered away. Except right now.. I guess :)


Stripe Atlas has personally saved me as a bootstrapped startup founder more than 100 hours over the past 3-4 years we've worked with them. It's just so relieving knowing I'm covered on anything regarding incorporation, legal, taxes/accounting, and I won't have to spend a ton of my own time researching vendors and googling esoteric topics.


'The Clock' for OS X is the best out there if you need to do anything serious across time zones. Featureful but not bloated. Ability to rename clocks to something more meaningful is genious. If you ever do the 'that person starts at 9am in Tokyo, what is the time then in Seattle' or Sydney, or Hyderabad that app is worth the $5.


Not sure if it saved me 100hrs but Clipman[1], a simple clipboard manager.

This combined with a Super+C shortcut means you can copy multiple things in once and paste them in the order you want.

* [1]: https://docs.xfce.org/panel-plugins/clipman/start


I use ditto and it is fantastic as well https://ditto-cp.sourceforge.io/


I have been using copyq and that is fantastic.


I use Appcode over Xcode for swift development mainly for one single feature - bookmarks, ctrl-shift-1 to set a bookmark, ctrl-1 takes me to it.Maybe not 100 hours but its a feature I can't live without. I don't know why Xcode doesn't have bookmarks. There's also a plugin for Visual studio which does the same.


vim + vim-fireplace + only work on clojure/script projects. A real-time interactive development environment is hard to beat and after 10 years of experience programming and only around 1 year programming clojure/script, I have never before been this productive and carried the same confidence in my code.


Docker. Just throwing aways entire environments and recreate them in a bunch of seconds is something really worth it


Postgraphile - Automatically getting a graphql API from a Postgres connection is amazing.

Plex - We have munchkins and they love watching the same stuff off youtube or movies over and over. We simply download them and Plex will sync them to all of our devices with easy offline support. (We run it on a synology NAS)


fzf, integrated with:

- shell's ^R (history), ^T (args), ^P ($EDITOR)

- vim's ^P and <leader>p (open), <leader>b (buffers), <leader>r (tags)

and small little tools of my own like kd (mentioned around here), or vim's - to go up from file to dir in netrw, that allows to jump to any place of my filesystem quickly.


File watchers that rebuild a project when code changes are made. Lots of language SDKs come with these built-in, for those that don't I have found that the `chokidar-cli` npm package can be paired with a shell script to add auto-rebuild to pretty much any project in any language.


entr[1], from their main page

    ls *.css *.html | entr reload-browser Firefox
Is a simple example of things you can do, it is also very lightweight.

[1]: http://entrproject.org/


I wrote a couple of VBA scripts for Excel that has probably saved my team 100 hours.

Prior to that, we would have templates being opened and copied over. As much as developers often don't like Excel, the problem that Excel has always directly addressed still exists: Not everyone wants to program.


When I was maybe 12 or 13, I wrote a program in Amos on my Amiga that did my algebra homework. For a while my homework consisted in typing inputs, and writing the output in my notebook. I suppose that saved me a good amount of time, which was then used for games most likely.



Also, SizeUp. Let's you customize your desktop windows to fullscreen, half screen etc with hot keys. http://www.irradiatedsoftware.com/sizeup/


Double Commander[0] without a doubt. Works like charm on Windows and Linux. Saved me multiple hours when compared to Windows explorer.

[0] https://doublecmd.sourceforge.io/


First vim, and then all the vim emulation plugins in all the IDEs and text editors, as well as Vimium plugin for browser. I'm far from a true vim ninja, but text editing and basic macros still saved me so much time on navigating and editing.


Hazel... File organization. Bitbar... Menubar status of everything. Amethyst... Window manager. Cloud9 IDE... Cloud based Dev and deployment. Integromat... Blows the doors off zapier. Mixmax... Gmail enhancements incant live without. Hellosign.


Apart from vscode & copyclip

I find Remfo very useful: https://rememberforever.web.app/

It helps me take notes & memorize things. It is currently in beta but still very stable


Not a program as such but learning to touch type

zsh & ohmyzsh plugins

Clipboard manager - built my own because I wasn't happy with the ones I had tried... https://nellyapp.com


Had you tried klipper, and if so, do you have a short version of why one might like Nelly better (other than being cross platform)?


can I sign up for the Linux version?


WSL2 (Insiders, but should be out this month) has probably saved me as much as I've spent getting it setup so far.

Linux proper on windows, the Docker Desktop integration and the WSL Remote (and SSH Remote) extensions for VS Code.


Visual Studio, not VS Code. All the way back to Visual Studio 2003. The debugging features in Visual Studio are brilliant and have saved me countless hours over many years of developing .NET applications.


Alteryx Designer for ETL

https://www.youtube.com/watch?v=A2PaLZRpWdY

Likely more than a 100 hours saved using this tool for DWH work.


Fiddler - Saved me lots of debugging and troubleshooting time.

Easy to see the traffic flow between apps/apis. It helps to read the raw http req/resp, debug and replay the request with modified parameters.


Scala repl- takes a few secs to start because it's jvm but after that you have a very powerful langauge with huge stdlib. No time to open and editor and compile and run for small stuff.


Excel itself saved may be tens of 100 hours for me. May be it's about my lack of knowledge for other tools, but I find myself generating sql or some other code for many types of data.


Ctrl-r in bash. Still meeting devs using a terminal and not using it.


Unity. The alternative to using a premade game engine is to be Jonathan blow, writing your own engines (and programming language these days), spending up to 7 years on a (great) game.


The "Screen Time" program on my mac & iphone :-) I give the password to my wife and set it to lock my computer and phone at midnight. It probably saved me 1000+ hours.


WindowsKey+Shift+S for taking screenshots for a part of the screen.


You can also change so that PrtScn directly opens the snipping tool which is far superior by checking “Use the PrtScn button to open screen snipping” in Settings > Ease of Access > Keyboard: https://cdn.discordapp.com/attachments/398094200710889482/68...

This equivalent to the new macOS Mojave shortcut Command+Shift+5.


This may be of interest to you. https://getsharex.com/


zsh-autosuggestions has definitely saved me more than hundreds of hours. When you type part of a command, it auto-suggests previous commands you've executed and then lets you expand to them, cutting down on your typing, on average, 75% or more.

For example, typing "scp" could expand to "scp -r myself@servername /home/myname/.logs/logfile ."

It's a concept that originated with the Fish shell, but is useful if you want to maintain some semblance of bash compatibility.


jq, the command line json processing utility. It makes dealing with very large json streams palatable, and it plays nice with other command line utilities like awk nicely too.


cli for creating bitbucket pull requests has saved me so much time https://www.npmjs.com/package/cmd-bitbucket

It pulls source and destination branch merges them locally and then pushes the source branch and creates a pull request if not already there. Reviewers are configurable per repo.

Disclaimer - I have used this every day for past 3 years and i maintain it as well.


zsh fuzzy search in command history. Just a couple of characters from a previous command, pressing up/down and you can modify and run a previous command.


I use zsh fuzzy search as my poor man's command bookmarking tool. Any command I want to bookmark, I add `#b <description>` at the end. This way I can get the command with a description and get all the commands using `#b`.


For my specific workflow, Notepad++ and UnrealEd. Mastering bsp is a really fun skill to have and for the most part UnrealEd is intuitive with some practice.


Chrome plugin "News Feed Eradicator for Facebook" - haven't seen my news feed in years and just use FB for messaging.


Facebook runs messenger.com for this purpose


True, but I also need access to pages and events.


That's my blog post! Glad you enjoyed it :)


I learned about some great tools thanks to you. Appreciate it!


Uber Eats


Mealprep blows uber eats out of the water. plus no chance of someone spitting in your food


And less exploitation of your fellow humans.


Spitting in your food? Huh?


There are a few free alternatives but beyond compare is the first prog I install on any new laptop,windows or linux I get.


Very niche, but some companies both save a lot of money and can reallocate multiple employees by using patentrenewal.com


My most useful tools on macOS: Klokki Slim 1Password Bear SelfControl (Definitely saved me some time) SpotLight PyCharm



Vimium for Chrome. Using vim hotkeys + EasyMotion in place of most clicking has saved me a lot of time.


“git bisect“ on its own. Magit is getting there, just for incremental and partial staging.


Emacs. Automate all the things :)


clipMenu, a pasteboard manager for Mac. It doesn't work as well as it used to, likely due to OS upgrades, and I've not been able to get the snippet function to work with hyperlinked text. But it is still super useful.


Webflow. But more like 1000 hours. The first low-abstract, clean code generator.


The 'copy all urls' and 'bulk open urls' Chrome extensions.


- tmux

- bashmarks

- zsh-autosuggestions

- yasnippet/emacs

- awk

- explainshell.com

- ansible scripts for setting up new dotfiles and my commonly used tools on a new machine/VM


Clipy on OSX, bound to CTRL+SHIFT+V. Also multiple cursors in any editor.


Bazel. The reproducibility and caching saves me hundreds of hours a day.


Do not sure why no one mentioned any RSS reader. It saves hours for me.


lnav (http://lnav.org/). Give it hundrends of thousands of lines of logs and query them with SQL.


Vim macros and Turbo Pascal 3.02 (it is only 39,731 bytes).



Magit git interface on emacs. It's a joy.


fastlane.tools saved me hours clicking through AppStore publishing web UIs. Indispensable for all mobile developers.


Textpad ++

Autosave feature.

Countless hours saved by not loosing information.


pulumi for devops.

https://www.pulumi.com/


Make, then Maven after moving to Java.


spectrwm - a tiling window manager

fzf - a command-line fuzzy finder

tmux - a terminal multiplexer

bash / zsh and the console tools (grep, sed, awk et al.)

python


Watching YouTube videos at 2x speed


UIPath RPA has been very useful for automating what ppl like to call donkey-tasks (repetitive/time consuming mundane things)


OS Clipboard and Google search.


ffmpeg - if I were to trancode all my video-library by hand, it would never end :D


scoop for windows is the biggest performance gainer for me in the last 3 years.


Docker for non prod installs


sed, along with grep and awk


iterm 2

vscode

alfred

prettier for js

mix format for elixir

github actions

okta logins for my employees

aptible for server management

render.com for personal projects


alfred app on OS X, finding stuff and clipboard history


valgrind, assuming you mean _at least_ 100 hours.


Search Everything


TeX and Emacs.


Tmux.


autokey

it's a linux clone of autohotkey, meaning it lets you script your mouse/keyboard/windows using python. It can trigger the scripts using a keyboard shortcuts or by watching keywords in regular text. I use it to kill emai/phone/date quickly, or to automate combinations of actions in GUI that don't have macros.

youtube-dl

I travel a lot, with plenty of downtime. Downloading conferences from many video sites, or music, turns those otherwise wasted hours into learning experience, relaxation, etc.

dynalist

Favorite life organization app, that I use for shopping, restaurant idea, todo, etc. Basically half of my GTD is in there. It's much more productive than any system I tried before, and I tried a lot of them.

thunderbird

I have 20 email addresses, and this varies depending of my clients. Web base email are not up to the task, and I need offline search/archive capabilities. Thunderbird is the only mature cross platform app that does that correctly.

pulsesms

I have a rich social life, and this means organizing groups of people. Of course, they all have their different chat apps, social account, preferences. Some are using an old 3310. Some don't want to be on facebook, etc. SMS is the only things that works with everybody, but typing it on the phone is a pain. I have an android phone, so no imessage, but no google account, so no android message. Pulsms allows me to write message from my computer comfortably.

fdfind and ripgrep

I search stuff all the time, and since they are way faster type (because easier to remember), faster to execute, and have an output that is faster to read, cumulatively it saves a lot of time.

tilix

I don't use a tiling windows manager or tmux-like software, so I rely on tilix to provide a terminal a the press of a key, and to provide tabs and split screens.

black

Automatic formatting for python code. No parameters.

bitwarden

Or lastpass, or 1password. Any password manager really. But bitwarden is the latest I'm using. I'd also say "tetripin" for otp on the command line but it would not really make it up to 100 hours.

meld

It compares files or directory. It's not the best out there, but it works everywhere, so I don't have to wonder. I just install meld. I'd say reggexer for search and replace as well, but again, not saving 100 hours.

--

Of course I could say GNU/Linux, python, firefox and vscode, but it's a bit obvious. Probably the most productive softwares I use though.


Bash


ctrl-r in bash.


A lot of these are not so much about saving 100 hours, rather being faster when it does matter, as well as doing something interesting (automating a task by writing a script) instead of doing the same thing over and over again. This is also why you shouldn't take https://xkcd.com/1205/ too literally, although it's good to keep in mind.

* frequent (automatic) backups (saves time and mood when things go wrong)

* i3

* fd (alternative to find)

* ripgrep

* keynav (don't use your mouse)

* !bangs on duckduckgo

* calcurse (terminal calendar)

* readline: C-h C-b C-a C-k M-b M-f C-u etc.

* howdoi (get SO answers in the terminal), especially useful for things you somewhat know but just forgot the syntax of.

* youtube-dl as already mentioned somewhere: you get out of youtube ASAP to prevent their algorithms from tricking into staying there. I also use it to watch videos later when I don't have internet, using a syncthing folder on my mobile which only syncs up to 10% remaining space (so that it doesn't fill with 100s of videos, just a few, enough for some trip). Videos are also rather inefficient in terms of communicating ideas, so better to keep them for when I really don't have better to do.

* in the same vein, adapt the speed of (technical) videos you watch, to skip the fluff and focus (even rewind) the difficult parts. Skip all ads, everywhere.

* uBlock Origin, for the same kind of reason: just block any annoying, time-consuming parts of website. If I need to go on some website regularly, and they happen to have a news section I don't care about (like their twitter feed), I just block it to get it out of my way.

* even use a text-only browser (I currently use w3m, which could show images in theory) for things like HN. HN itself works well, and its good links as well. You just trim a lot of the fluff, ads, etc.

* an easy way to sync files between your mobile and your computer (I use a combination of "Notes to Self" in Signal with an auto-destruct of 1 week for temporary stuff so that I don't have to delete it manually, and syncthing for longer-term things)

* script your way out of any repetitive task: if you need to register periodically to something, either use their API if they have one, or use selenium to automate it. I was really surprised how little time it took me to write my own script and learn how to use selenium.

* in general, rely less on proprietary software: it has the potential to break ("introduce new and shiny features and somehow make some old ones disappear" or just change the pricing-model) more regularly, and you'll have to switch which can be a burden. If some free (libre) software breaks hard for a lot of people, chances are that a fork will happen and the transition will be easier. This also applies to SaaS.

* try to avoid desktop apps: they don't compose well, you cannot easily script them compared to a CLI. It's also better than having a full remote desktop when you resort to SSH (especially on bad connections).

* try to learn the default keyboard shortcuts of software you use, unless they're really crazy: less config (which you'd have to sync and maintain), easier to use a computer which is not yours if need be

* regularly check that the commands you write in your terminal are not too verbose (use aliases / functions): https://news.ycombinator.com/item?id=22853646

* check what's possible with frameworks like https://github.com/sorin-ionescu/prezto

* some dotfile repository to get you started in 5min on new computers with the same setup you're accustomed to.

* mutt (mostly to easily write emails in vim and grep emails from the terminal)

* cronjobs and reminders (I get new music albums on my phone regularly from my music library, so that I don't have to choose them manually (it's my library so I know I like them anyway). I used to actually spend time choosing music from my own library.)

* typing from your phone is inefficient, avoid it if possible. Batch your (non-time-critical) messaging. Most modern messaging apps have a desktop version these days.


Docker for local dev environments. Easily 100s of hours saved from needless tinkering to get n services × packages working in harmony, all to have to do it again 3 months later after an OS update.


Seconded this. It's also saved many hours for me to pass development environment to colleagues or juniors.

Need postgre? Link to one service. Need mongo? Plop another. Rabbitmq? redis? No need to tell them to install those, just pass the docker compose file.


I wonder what OS and stack you are programming that an OS update can break your dev env?


I use Ubuntu as my daily driver and apt packages are updated when upgrading versions. For example moving from 14.04 to 16.04 with `do-release-upgrade` made the default PHP version move from php5 to php7.


To be fair, 14.04 to 16.04 is two years worth of upgrade.

Skipping from one LTS to another should probably include some breakage.


We're very pleased with ASP.NET Zero (https://aspnetzero.com/). The best starting point for web applications I've ever found that enables faster time to market. It helped us to build web applications very fast and not dealing with repeating tasks (like user/role/permission management, localization, audit logging, multi-tenancy, UI components, exception handling system..). Its feature richness, ease of use, comprehensive documentation and good support has saved us tons of time&money.


- Remote Leaf - Saves hundreds of hours in the job search.

Remote Leaf collects remote jobs from 40+ remote job boards, social media feeds & 1200+ company career pages, LinkedIn and sends the ones that apply to you.


Anything networking that isn't plan 9.

Here's how easy it is to remotely play audio on a stereo hooked to a raspberry pi:

% rimport -a -u mrtea pifi /dev/audio /dev ; play music.mp3

oh, you also wanted to play the mp3's in Shelley's music directory (provided shelley lets us...)?

% rimport -a -u mrtea shelpc /usr/shelley/mp3 mp3 ; play mp3/shelleysfavorite.pls

That rendering job is going to clog up your cpu but you'd rather play doom. instead, run the job on many core server cerberus:

% rcpu -u mrtea -h cerberus -c rendercmd -args

compile and install a program for arm64 so you can also run on raspberry pi 3/4:

% objtype=arm64 mk install

The above commands require little to no configuration or external tools to work. You dial a machine and ask for resources; if you have permission, you will be granted access. If you want a windows domain like network auth you point your systems to a single machines auth server instead of the local auth. The c library is so streamlined that it makes c fun to use again, Go is directly inspired by it. compiler tools kept simple and cross compiling is a non issue, just change objtype. Even system libraries such as tcp communication is dead easy: http://man.postnix.pw/9front/2/dial. No shared libraries. Instead you write programs called file servers which provide services as sharable resources. Every other OS by comparison is horridly is broken.

Unix is broken. OSX is built on broken. Windows took broken to new levels. And every "new" OS is a copy of broken written in fad language du jor; e.g. Redox OS. You want a sane computing platform built by hackers for hackers? Run plan 9.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: