Ask HN: What is one software product that boosted your productivity?
I've been fascinated by how diverse daily software product toolsets are for every single person. Share one software product that absolutely boosted your productivity:)
57 comments
Espanso (https://espanso.org/) and a custom ~/.Xmodmap to easily type accented characters and mathematical symbols quickly.
Thank you. Deeply. I was looking for something (cross platform) like this for a long time.
Mostly _removing_ big slow general purpose tools that were _in the way_ of my productivity, and using self hosted server with vim and my own PHP tools. It didn’t multiply my effiency, it just made room for things to flow naturally.
When I made a game, the most efficient ”tool” was a page I made with direct links to CC0-only search for graphical & sound assets, so I never had to look for a license and just grab the file. And lexica.art for generating characters, and then ”Pixelator” for turning them to pixel art. It didn’t only speed up the process of adding 200 character sprites, it made it even possible in the first place.
When I made a game, the most efficient ”tool” was a page I made with direct links to CC0-only search for graphical & sound assets, so I never had to look for a license and just grab the file. And lexica.art for generating characters, and then ”Pixelator” for turning them to pixel art. It didn’t only speed up the process of adding 200 character sprites, it made it even possible in the first place.
Golang's toolchain.
Compiling, building, embedding assets, strongest stdlib under the sun, golang.org/x, standard codestyle and formatting, standard unit tests, standard benchmarks and CI/CD.
Best toolchain I've ever used, beats all other programming language ecosystems in my opinion.
Compiling, building, embedding assets, strongest stdlib under the sun, golang.org/x, standard codestyle and formatting, standard unit tests, standard benchmarks and CI/CD.
Best toolchain I've ever used, beats all other programming language ecosystems in my opinion.
1. Switching to Go for programming
2. Password manager
3. My brother's Commandline Completion tool https://github.com/zerocorebeta/Option-K
I used to forget most of the commandline.
4. Visual Studio Code
5. Tailscale (used to wait time with ssh -D and socks5 using proxychains shadowsocks.
Problem is they can be blocked by ISP or require lot more configuration than tailscale and are hard to debug when they don't work.
6 about LLLms in coding, I am still waiting for something like cursor but opensource so that I can extend it for my usecase.
In current state cursor and likes are heavily limiting for my workflow.
2. Password manager
3. My brother's Commandline Completion tool https://github.com/zerocorebeta/Option-K
I used to forget most of the commandline.
4. Visual Studio Code
5. Tailscale (used to wait time with ssh -D and socks5 using proxychains shadowsocks.
Problem is they can be blocked by ISP or require lot more configuration than tailscale and are hard to debug when they don't work.
6 about LLLms in coding, I am still waiting for something like cursor but opensource so that I can extend it for my usecase.
In current state cursor and likes are heavily limiting for my workflow.
Nice!
Could you give more context about Go? From which lang did you transfer? What are the tangible benefits that you are seeing?
Thanks!
> Switching to Go for programming
Can you elaborate on this?
Can you elaborate on this?
Org mode. Excellent to manage my personal knowledge, finances, tasks and appointments.
All in plain text, with the advantages that this brings to the table.
All in plain text, with the advantages that this brings to the table.
Org has the reputation of being complex. It has tons of features, but the basics are quite easy to master.
It's an outliner, i.e. text that can be organized using nested headlines and subheadlines. Text markup has all the usual features, plus links, footnotes and tables. Links can be customized to support new protocols, but out of the box they already, among other things, understand file paths, DOIs and, obviously, https. Coupled with footnotes, these provide a really simple and useful citation mechanism for a personal wiki. Tables are literally mini-spreadsheets, as they can compute formulas.
A second key aspect of Org are keywords and timestamps. Keywords let you mark things as TODO, DONE or any other user-defined state. Timestamps let you mark headlines as deadlines or scheduled events. Org then has agenda views, built dynamically by scanning files. Agenda views display calendars that show incoming deadlines, appointments or tasks.
It's an outliner, i.e. text that can be organized using nested headlines and subheadlines. Text markup has all the usual features, plus links, footnotes and tables. Links can be customized to support new protocols, but out of the box they already, among other things, understand file paths, DOIs and, obviously, https. Coupled with footnotes, these provide a really simple and useful citation mechanism for a personal wiki. Tables are literally mini-spreadsheets, as they can compute formulas.
A second key aspect of Org are keywords and timestamps. Keywords let you mark things as TODO, DONE or any other user-defined state. Timestamps let you mark headlines as deadlines or scheduled events. Org then has agenda views, built dynamically by scanning files. Agenda views display calendars that show incoming deadlines, appointments or tasks.
Dash https://kapeli.com/dash Mac app. A native standardised search and browsing interface for the documentation of almost every programming language out there (and in some cases, their third-party libraries too).
Dash is great. I use the free open-source alternative Zeal, works for Linux, Windows and macOS.
https://github.com/zealdocs/zeal
https://github.com/zealdocs/zeal
It's great to have something spiritually similar for Linux but I would say that Zeal does about 20-30% of what Dash does. The core functionality is sort of there but it's missing the overwhelming majority of docsets, especially language-specific package managers.
Dash is one of the apps I unhesitatingly spend for, along with Alfred, and I miss both dearly when I'm not on MacOS.
Dash is one of the apps I unhesitatingly spend for, along with Alfred, and I miss both dearly when I'm not on MacOS.
Coming from a statically typed background, having Sorbet types in a Ruby/Rails monolithic codebase helps immensely.
I can think of 3.5 ways my productivity is limited:
1. how fast I think: understand problems/come up with solutions - not a bottleneck as I juggle things waiting on (3)
2. how fast I write - this is the least impactful, if you do it right there usually isn't that much to write. Having dependable refactoring tools for a Ruby/Rails codebase would be killer.
3. how fast I
I can think of 3.5 ways my productivity is limited:
1. how fast I think: understand problems/come up with solutions - not a bottleneck as I juggle things waiting on (3)
2. how fast I write - this is the least impactful, if you do it right there usually isn't that much to write. Having dependable refactoring tools for a Ruby/Rails codebase would be killer.
3. how fast I
a. test - this has been getting slower
b. ship - the slowest by far, time cycling in reviews, CI/CD pipeline
That is to say don't over-optimize your tools in areas that don't impact the slower parts of your flow.> a. test - this has been getting slower
AI helps with this one - if you use a code editor that has an AI plugin, being able to write out some describe/it blocks and add the code you're testing to the LLM context as well as some similar specs, the LLM can bootstrap parts of it for you
AI helps with this one - if you use a code editor that has an AI plugin, being able to write out some describe/it blocks and add the code you're testing to the LLM context as well as some similar specs, the LLM can bootstrap parts of it for you
Sorry I mean running not writing tests. I like the suggestion to use LLMs to write them. I often use them to catch typos. The codebase I work in is a monolith and the test runner is optimized for running many tests not one-offs.
Ah I see. Yea our CI is getting slower with more tests but so far we've found increasing parallelization helps.
And for one off tests, spring + rspec is good enough
And for one off tests, spring + rspec is good enough
Back when I used Windows at work, AutoHotKey. It let me automate all the mundane stuff I had to do on my desktop and tie it to various keyboard shortcuts. I eventually also made a GUI, so I could tie it to a spare mouse button. I would highlight something, hit the button on my mouse, then click what I wanted to do with the highlighted text. I also had various text expansions, and alternate paste methods to allow to paste plain text or to type the clipboard, to get around things that blocked paste (or remote server consoles). I shared it with my team, so I made a configuration GUI and everything, where users could pick their own shortcuts if they didn't like my defaults, and also set their path to putty and various other tools if they didn't happen to be installed the same as mine.
When I moved to macOS I missed it a lot. I searched for something similar and it was hard to find something like it. There's AppleScript, but it always feels like it's dying a slow death. I also came across HammerSpoon, which I tried for a while, but I never went as deep as I did with AHK. I also had some really weird issues that seemed to go away when I got rid of HS.
I haven't touched the code in at least 5 or 6 years, and I see a lot of people on Windows still using the AHK scripts I wrote.
When I moved to macOS I missed it a lot. I searched for something similar and it was hard to find something like it. There's AppleScript, but it always feels like it's dying a slow death. I also came across HammerSpoon, which I tried for a while, but I never went as deep as I did with AHK. I also had some really weird issues that seemed to go away when I got rid of HS.
I haven't touched the code in at least 5 or 6 years, and I see a lot of people on Windows still using the AHK scripts I wrote.
Would you interact with things like browsers/programs when using AHK?
For example open a browser, open gmail, paste the highlighted text into a draft email?
Or is it other things you would script up?
For example open a browser, open gmail, paste the highlighted text into a draft email?
Or is it other things you would script up?
A lot of the items were searches. Search for this ticket number in our ticketing system. Search for this server in the CMDB. These are things we end up doing all day long, sometimes hundreds of times per shift, but usually dozens. It would open the website with the search results. These ones were simple, just stick the search string in the URL. Though some were a little smarter, using some regex to tell what kind of data it was, so it could do multiple searches in the same system with one button.
Other options opened applications. Highlight a hostname, hit a key, and open a window to SSH to that server.
One of the more involved ones was for remote desktop. Most people on the team used a remote desktop manager vs the single window RDP. So for this it activated the app (or opened it if needed), then added the server into a group called temp, activated that connection, and logged the user in.
When I first started working on it we had to keep an eye on the ticket queue, which required a manual refresh. I found this annoying, so I made a key that would switch to that browser window, click the refresh button to see the updated counts, and then switch back to whatever I was doing previously.
I did some stuff with email too. We use Outlook, but my boss wanted me to make email templates for some process he came up with. He gave me an Excel sheet with all the data. There is probably a way to natively handle automating this, but I couldn't find anything easily, and it was a one time thing. I wrote something that went line by line though the Excel sheet, switched over to Outlook, made the template based on the data, saved it in the proper format and location, then went on to the next line. It took about 2 hours to run, but he was originally planning on having 4 interns work on doing it manually for a week, which would have been very error prone and led them all to quit.
I did get one co-worker who added a feature that was pretty cool. In the GUI he had it slide out a calendar where the user could pick a date range and some other params to run a quick report in our ITSM software.
The GUI also had a text field on it, so the user could tweak what was copied if needed. There was also an option to preserve whatever was previously on the clipboard, so using it to look something up didn't break the user's flow with other stuff they were using the clipboard for.
When I shared it with the team I was able to compile it to a .exe, so I didn't need to explain the whole AHK setup and deal with issues around it. Then all the settings were saved out to an ini file that was created on first run.
Since there ware a lot of shortcuts to remember (if they wanted to use more than just the GUI), I also had a keyboard shortcut that would toggle on/off a HUD with all the shortcuts they had configured, which respected their preferences. I figured that would be helpful as they got used to it.
The GUI could also be used with the keyboard or mouse. Every button had a shortcut key (standard Windows style where the shortcut letter is underlined in the button title).
If you decide to do something like this, I would highly recommend making a function that does KeyWait on every single key and call it first thing before doing anything else. This solved so many issues for me with keys being stuck down in software and wreaking havoc on the rest of the script.
Other options opened applications. Highlight a hostname, hit a key, and open a window to SSH to that server.
One of the more involved ones was for remote desktop. Most people on the team used a remote desktop manager vs the single window RDP. So for this it activated the app (or opened it if needed), then added the server into a group called temp, activated that connection, and logged the user in.
When I first started working on it we had to keep an eye on the ticket queue, which required a manual refresh. I found this annoying, so I made a key that would switch to that browser window, click the refresh button to see the updated counts, and then switch back to whatever I was doing previously.
I did some stuff with email too. We use Outlook, but my boss wanted me to make email templates for some process he came up with. He gave me an Excel sheet with all the data. There is probably a way to natively handle automating this, but I couldn't find anything easily, and it was a one time thing. I wrote something that went line by line though the Excel sheet, switched over to Outlook, made the template based on the data, saved it in the proper format and location, then went on to the next line. It took about 2 hours to run, but he was originally planning on having 4 interns work on doing it manually for a week, which would have been very error prone and led them all to quit.
I did get one co-worker who added a feature that was pretty cool. In the GUI he had it slide out a calendar where the user could pick a date range and some other params to run a quick report in our ITSM software.
The GUI also had a text field on it, so the user could tweak what was copied if needed. There was also an option to preserve whatever was previously on the clipboard, so using it to look something up didn't break the user's flow with other stuff they were using the clipboard for.
When I shared it with the team I was able to compile it to a .exe, so I didn't need to explain the whole AHK setup and deal with issues around it. Then all the settings were saved out to an ini file that was created on first run.
Since there ware a lot of shortcuts to remember (if they wanted to use more than just the GUI), I also had a keyboard shortcut that would toggle on/off a HUD with all the shortcuts they had configured, which respected their preferences. I figured that would be helpful as they got used to it.
The GUI could also be used with the keyboard or mouse. Every button had a shortcut key (standard Windows style where the shortcut letter is underlined in the button title).
If you decide to do something like this, I would highly recommend making a function that does KeyWait on every single key and call it first thing before doing anything else. This solved so many issues for me with keys being stuck down in software and wreaking havoc on the rest of the script.
I must say I do find this really interesting! Thanks for detailing your use cases.
I can envision some of them, the ticket search especially. It reminds me of slack bots that auto assign links to mentioned issue numbers, etc, but is a bit more useful to just hit a key and go to it.
I can envision some of them, the ticket search especially. It reminds me of slack bots that auto assign links to mentioned issue numbers, etc, but is a bit more useful to just hit a key and go to it.
That was kind of the idea. I didn’t have the ability to control the various tools we use, so AHK acted as the glue to make jumping between everything more fluid.
For me it's Sublime Text, it's so hackable with python as a scripting language for its plugins. If you can't find a plugin that suits your need among the tons available, you can write it quite easily. It's a bit difficult to grasp everything you can do in the first place, but once you can see all the possibilities that's game changer.
Why not Visual Studio Code ? Because when I discovered ST, vs code didn't exist and it is waaay less bloated because of not being Electron, based on C++ for the core and python for override.
The memory usage is contained and does not blow to your face when you have 4, 5, 6 instances with some plugins because of some weird memory leak. The average memory per instance is less than 100 Mb.
It gets the job done real good for a lot of small tasks. For tasks that require for example big work on code, I use the JetBrains suite that are excellent.
Why not Visual Studio Code ? Because when I discovered ST, vs code didn't exist and it is waaay less bloated because of not being Electron, based on C++ for the core and python for override.
The memory usage is contained and does not blow to your face when you have 4, 5, 6 instances with some plugins because of some weird memory leak. The average memory per instance is less than 100 Mb.
It gets the job done real good for a lot of small tasks. For tasks that require for example big work on code, I use the JetBrains suite that are excellent.
Oh, i've forgotten sublime. Maybe it's a great time to pay a visit to it for some small tasks. Thanks!!
Committing to Apple’s Reminders instead of continuing to fritz with various to-do apps. Reminders was good enough and I havent thought about switching in a couple of years now.
For hardware+software, the Remarkable 2 tablet changed my life. I was never a handwritten notes person and was never even an organized person. I read some book on organization and was like, “I should try being organized.”
Bought the Remarkable 2 with the logic that if I spent $500 on the thing and never used it, I’d feel like a moron.
I’ve been using it daily for about 3 years now and just upgraded to the Pro and love it even more.
For hardware+software, the Remarkable 2 tablet changed my life. I was never a handwritten notes person and was never even an organized person. I read some book on organization and was like, “I should try being organized.”
Bought the Remarkable 2 with the logic that if I spent $500 on the thing and never used it, I’d feel like a moron.
I’ve been using it daily for about 3 years now and just upgraded to the Pro and love it even more.
> Committing to Apple’s Reminders instead of continuing to fritz with various to-do apps. Reminders was good enough and I havent thought about switching in a couple of years now.
The same goes for Apple Notes for me. To Do apps and Notes apps have always been my weakness. Once I accepted that there is no perfect app and the ones out of the box are actually really good.
The same goes for Apple Notes for me. To Do apps and Notes apps have always been my weakness. Once I accepted that there is no perfect app and the ones out of the box are actually really good.
Beyond Compare (by Scooter Software)
Briefy.ai
As a media studies major with lots of readings, I use it to summarize PDFs and quickly reference the source. It’s also great for class—when my prof asks questions, I can ask Briefy for answers, which helps with participation. Briefy will only answer based on the materials input, so it's much better than randomly searching online with Google. Plus, it summarizes YouTube videos directly on the site, which I find super convenient.
As a media studies major with lots of readings, I use it to summarize PDFs and quickly reference the source. It’s also great for class—when my prof asks questions, I can ask Briefy for answers, which helps with participation. Briefy will only answer based on the materials input, so it's much better than randomly searching online with Google. Plus, it summarizes YouTube videos directly on the site, which I find super convenient.
Are you gauging productivity by time to completion of an objective or assignment, by achieved grade in the course, or by learning/retention/etc.? Are profs OK with students giving answers based on AI generated summaries?
I wish do wish that written transcriptions were automatically available on youtube to make it easier to search and navigate within videos and skip irrelevant sections. I doubt it will happen though since irrelevant promotional sections make money. I also like the idea of being able to automatically generate a screenplay for any film or tv episode, though that might fall afoul of copyright law.
I wish do wish that written transcriptions were automatically available on youtube to make it easier to search and navigate within videos and skip irrelevant sections. I doubt it will happen though since irrelevant promotional sections make money. I also like the idea of being able to automatically generate a screenplay for any film or tv episode, though that might fall afoul of copyright law.
Well, first of all, these answers are just for in-class participation and the prof will only ask the basic question within the article so it won't be hard. And we need to write a lot of essays, thus I need to read a lot of reading to see if they can be used for my references. But I can't get all the arguments or cases wi the abstract, then I will use Briefy to get the full summary. That's why I said it is productive. And also for videos as well, Briefy is designed specially for YouTube videos, and you can watch the summary, jump to the clip you want right on YouTube with its Chrome/Safari extension. I think you can have a try first, it offers a free plan with 30 credits.
Lazygit (https://github.com/jesseduffield/lazygit)
I know there are probably many GUI git tools and editor integrations which make using git fast and easy but I've been mostly using the CLI. Lazygit makes doing things like cherry picking really easy and once you learn the shortcuts it's pretty fast to use.
I know there are probably many GUI git tools and editor integrations which make using git fast and easy but I've been mostly using the CLI. Lazygit makes doing things like cherry picking really easy and once you learn the shortcuts it's pretty fast to use.
WOW, just WOW. This is a must have. Installing it right now!
THanks!
Custom tooling I wrote:
1. Focus session time tracker with talking clock counting down every n minutes.
2. Activity monitor and alerter. Tracks active window and title every minute and alerts if more than n minutes outside whitelisted websites. Alert immediately if blacklisted website (dns blocking is painful. Sometimes you want to access it for a few minutes).
A bunch of more things but those are the two most effective ones.
1. Focus session time tracker with talking clock counting down every n minutes.
2. Activity monitor and alerter. Tracks active window and title every minute and alerts if more than n minutes outside whitelisted websites. Alert immediately if blacklisted website (dns blocking is painful. Sometimes you want to access it for a few minutes).
A bunch of more things but those are the two most effective ones.
Wow sounds nice, any of it open source?
Would love to see
Not yet sorry but maybe in due time. It’s probably half a day of python dev work to reproduce. Maybe more to nail down the analytics and charting.
One day.
One day.
Vim and Emacs’s concept of detangling the text buffer from the windows that display them. It feels like working on a real desk, because you can have the files you want displayed at once and move fluidly from one configuration to the next.
expect. It’s basically an old cli tool for automating cli tasks that are (intentionally?) resistant to automation. It’s a pole for vaulting over chesterton’s fence so don’t blow your toes off but god it’s saved me hours and hours
Can people who mention golang explain? I tried it briefly but just thought of it same as for any other lang - it becomes useful once you do a deep dive, so what makes it stand out?
vi/vim and in the second step that it doesn't matter how fast I can edit something.
Most of the time I make mistakes out of ignorance or lack of experience. Unfortunately, there is no tool for this. But it's good to think about how (technical) things work in everyday life and to take a look at the theory in a dry way This can be books, wikipedia or listen to what pepole from the the peak days of software development says (something before 2005)
Most of the time I make mistakes out of ignorance or lack of experience. Unfortunately, there is no tool for this. But it's good to think about how (technical) things work in everyday life and to take a look at the theory in a dry way This can be books, wikipedia or listen to what pepole from the the peak days of software development says (something before 2005)
Key binding for `if err != nil {` when programming in Go.
I have likely incurred the wrath of go by using various schemes to handle the ubiquitous error checks.
ChatGPT
Although you’re being downvoted, I do agree with your perspective. ChatGPT, despite its limitations, has been a godsend for me.
I translate tons of texts to multiple languages, and ChatGPT not only provides pretty accurate translations as a starting point, but also allows me to see the pros and cons of specific translation choices. I can even notice recurrent ChatGPT mistakes and work my way around them programmatically.
I also heavily rely on it for making one-off scripts and programs to automate my workflow. Things that would require me to RTFM and waste time debugging syntax issues are no longer a problem. It does make mistakes sometimes, but it is often easy to fix them, too.
LLMs can’t be expected to be accurate, create original content or even solve hard programming tasks. But they really shine in certain workflows and that cannot be dismissed.
I translate tons of texts to multiple languages, and ChatGPT not only provides pretty accurate translations as a starting point, but also allows me to see the pros and cons of specific translation choices. I can even notice recurrent ChatGPT mistakes and work my way around them programmatically.
I also heavily rely on it for making one-off scripts and programs to automate my workflow. Things that would require me to RTFM and waste time debugging syntax issues are no longer a problem. It does make mistakes sometimes, but it is often easy to fix them, too.
LLMs can’t be expected to be accurate, create original content or even solve hard programming tasks. But they really shine in certain workflows and that cannot be dismissed.
Visual Studio is huge productivity booster if you do C# or maybe even C++
GitHub Desktop is really useful.
GitHub itself is huge!
GitHub Desktop is really useful.
GitHub itself is huge!
HTTPie GUI, simple and elegant, api testing
vi(m-motion keys in your preferred editor)
Cursor's code editor 1000%
Black Screen (BlackScreen1.com)
tmux
IDE’s
Just one?
1Password
1Password