Hacker News new | ask | show | jobs
Ask HN: What are some tools you wish you had while doing your day to day work?
60 points by deviance 1920 days ago
(as a software developer or just someone using software, in whatever field you happen to be working in).

An example:

-> As a software developer, I've come across the need to work with CSV-"like" files several times in my career (at several different jobs), for different reasons.

And it was most frustrating when they had like 100 columns or so. Having to change column 63 at line 58 is not something you do easily in Notepad++. Import to Excel was my way to go, but since the file was not a standard CSV file (e.g. also had sections like an .INI file) it was time consuming: first just select a subsection from the file, save to a different file, import to Excel, modify, paste back, etc. Maybe it was not the best approach, but that's not the point I'm making.

Not having found an existing tool (maybe my problem was too specific) I eventually made a small desktop application which I would use to edit the files directly. The interface was similar to Excel (grid of cells); It was simple and tailored to what I needed.

But maybe you are not a software developer and don't have the "luxury" of building it yourself.

So, would you share your experience of similar situations?

If the solutions to your problems are relatively easy to implement, then someone can create a tool for the job, making your life easier. And on the off chance that these tools are useful and will be wanted by more people (with similar problems) these "tools" can turn into a more general "product", thus a win-win situation in the end.

What i'm saying:

- There are already talented people working in their spare time on e.g. open-source projects (no shortage of people wanting to tackle the problem, if it is reasonable) - The shortcoming is that domain specific problems, which people are facing, are not visible enough (except to them).

If this question should get enough attention and answers, the next step would be to structure the answers into a git repository/website.

35 comments

I wish I had tools that were just a little smarter at working with code. There are some things that I find I have to manually track down in a large codebase, but the things I do could be automated. I'm thinking of operations like the following:

* Tell me where in package (or module) X it calls functions that can eventually reach function Y in package Z (that is, there is a possible stack trace starting in X that leads to Y.

* Recursively expand the tree of callers of this function.

* Show me where the value passed to this function are created.

* List what packages have functions that can get called when I call function X.

* Given two functions A and B, what functions can result in calls to both? (This is sort-of the greatest common denominator of possible stacks leading to A and B)

(It seems like this must surely exist, but I have yet to find it)

I also want better tools for tracing what a system does when running. For example:

* Say I have a test over some deterministic code, and I make a small change to that code. I'd like to be able to run that test before and after, and get a diff of where the computation was the same vs. where it was different.

* When debugging, I'd like to be able to ask questions about the history, like what set this field on this model to the current value? (With debuggers I've used, you have to know these questions in advance and set up things to watch - you can't ask those questions after the fact)

* List all packages that had a line of code run while running this test.

edit: formatting

> * Say I have a test over some deterministic code, and I make a small change to that code. I'd like to be able to run that test before and after, and get a diff of where the computation was the same vs. where it was different.

There are many things I do not like about ocaml build ecosystem but the last time I looked into it this was the default structure of test; is was possible to assert stuff in unit test, but you were "forced" to output something and then promote it to valid output; the next time the unit test are run the build tool check for diffs and you can choose whether the new output is wrong of whether it should be promoted to correct output.

I found it extremely flexible, expecially if you make an API change that would require to update dozens/hundreds of tests

The stack trace comment is 100% what I wish I had built into my IDE, and from my time mentoring more junior devs, I can tell you this is one of the hardest things for them. All of these are great suggestions, but the first one really has been a pain point for me.
I wish I had a way to do knowledge work but also use my body.

Right now, for working purposes (as a software engineer), I'm a disembodied head that can move a pointer, type words, and voice chat. Our bodies were never designed to sit in chairs 8 hours a day for forty years. The very idea of needing to spend free time exercising just to keep your body from falling apart is, well, preposterous.

(It's been a long time since I've watched it, but I think this talks a bit about the idea: https://vimeo.com/115154289 - "The Humane Representation of Thought")

Stephen Wolfram (of the Wolframalpha.com fame) has a treadmill attached to one of his workstations [0]. I've read claims that walking 1-2mph takes no mental effort. Lets say 4 hours of walking would net you about 5 miles. That's a decent effort for the day and you could still sit the other 4 hours out of your 8 hour day.

[0]: https://writings.stephenwolfram.com/2019/02/seeking-the-prod...

> Our bodies were never designed to sit in chairs 8 hours a day for forty years.

Your body wasn't designed to do anything. It's the result of random mutations that survived better than other random mutations.

> The very idea of needing to spend free time exercising just to keep your body from falling apart is, well, preposterous.

A somewhat sedentary job with the option to take breaks to move around and exercise outside of that is still vastly preferable to any other combination. Non-sedentary jobs and manual labor will break and wear down your body in different ways, they aren't some ideal to aspire to.

> > Our bodies were never designed to sit in chairs 8 hours a day for forty years.

> Your body wasn't designed to do anything. It's the result of random mutations that survived better than other random mutations.

Fair enough; it would be more accurate for me to say, "Our bodies are poorly adapted to sitting in chairs for 8 hours a day for 40 years."

> A somewhat sedentary job with the option to take breaks to move around and exercise outside of that is still vastly preferable to any other combination. Non-sedentary jobs and manual labor will break and wear down your body in different ways, they aren't some ideal to aspire to.

I'll agree with you that many jobs will wear your body down, but it isn't obvious to me that a sedentary job with forced motion breaks is the best combination.

> but it isn't obvious to me that a sedentary job with forced motion breaks is the best combination.

You left out exercise. With exercise it's the best combination because you're able to choose what kind of stress to put on your body, in what quantities and you can do so safely in a controlled environment. That's a huge luxury that many people who do manual labour don't have.

When the newspaper prints what time is sunrise, I don't write it to protest that the sun doesn't go anywhere; it's the Earth that is spinning on its axis. Sunrise is just the way we refer to that phenomenon because it looks like the sun is rising.

I think it's perfectly fine to say that your body was designed to do this or that. It may have been the result of random mutations, but evolution has done such a good job it damn well looks like it was designed.

There are plenty of jobs that consist of not much more than walking around - beat cop, traffic warden, security guard, park ranger, even janitor. I find it unlikely that walking around for 8-12 hours is going to damage your body more than spending the same time mostly sitting down, not moving. Speaking personally, I've held both types of job, and I know which kind leaves me feeling healthier (it's not the sedentary kind).
If it paid as well as my current job I think I would much rather be a mailman.
> A somewhat sedentary job with the option to take breaks to move around and exercise outside of that is still vastly preferable to any other combination. Non-sedentary jobs and manual labor will break and wear down your body in different ways, they aren't some ideal to aspire to.

It's a scale though. A job in construction is different to a job as a park ranger. Both are different to office work.

I had a shower thought the other day. When playing games it's often quite normal to lean left, right, back in the heat of the moment. (The good old falling out of a chair in the heat of the moment).

It would be nice to have some sort of simple peripheral that would allow to translate simple body movement and maybe breath patterns (multiple games have a button to hold breath) into controls. I know that VR is a thing but I think there is quite some space between here and there.

For office style work one idea would be to have an extended desktop with parallax.

Head tracking (without full VR) is quite a big niche in flight/space sims, whether just for rotations or a limited amount of translation as well. It's much more natural using your head to look around, keeps your hands on the flight controls, and frees up hat switches and other buttons which no longer need to serve that purpose.
I got to play HL:Alyx recently and it felt sooo awesome to peek around corners. I definitely want more bodily interaction in VR as it grows.
That talk looks really interesting. I'm all for a future that unbinds us from tiny 2d screens.

We're always going to need to do exercise though. There's no way knowledge work could ever e.g. raise your pulse, use your strength + agility etc. We are hunter gatherers removed from our original environment.

I can imagine software development becoming like something out of Minority Report and that's just about it.

There is such a thing as a walking desk. Linus Torvalds uses one. Never used it myself, though. Couldn't imagine doing any serious programming like that.
If you can use a standing desk to program, you can probably get used to a walking desk. In the worst case you'd just need to stop walking when you start getting deep into some parts of your work. If you can't use a standing desk to program, then a walking desk is almost certainly out of the question.

Personally, I just accept that for 5-10 minutes of every hour I will not be at my desk and will instead be near my desk doing calisthenics.

I've found working with the laptop in my garden can help. The mix of air and standing seems to help
Better documentation. And with better I mean documentation that does not rely on as many assumptions about the reader, and docs that include enough examples. I don't care about that one example which only covers the most trivial use-case that you included so there's an example in the docs. Examples should be like unit tests, I don't want to play the archeologist and dig through pages of outdated info just to figure out how to set that one weird flag.

One example for docs I enjoy is the reference for the Rust standard library. It still could use a few more examples here and there but overall it's among the best I know, together with tailwindCSS' website which is also great.

Don't be like the devs of that one JS animation library which locked further examples behind the registration form for another web platform, failing to mention those hidden examples are more or less a copy-pasted variation with slightly different numbers.

And I haven't thought about it very deeply yet but I'd like a tool or maybe lightweight processing language that lets me quickly visualise debug output and similar data. Often it feels like the main time sink at chasing certain bugs is how I either have to look at the raw data and numbers and try to see a pattern, or more or less start a whole side project to properly process and visualise it. Possibly I'm just missing something obvious or overlooked the usefulness of a neat tool at first glance.

Thank you for this! I completely agree.

Just a recent example (it's just AN example, there are probably way better examples than this one): I started recently to code a website after years without putting my hands in web development.

I went through some documentations of multiple lightweight frameworks for server side coding:

100% relies on the reader to know how to use the latest fancy-cool-kids-choice packet manager for the given language. If you do know by heart your brew-npm-composer-pacman-I-dont-know-what, good for you dear documentation writer -> not everybody does!! Which means that if, for some reasons, there is the slightest issue with any of the versions of the hundreds of dependencies your "basic application" requires, it means that the newcomer for your framework must found his.her way into a stack of tools and dependencies that is galactic in size.

More than half of the documentation said that if you don't want to use the packet manager you can use a virtual machine or a container manager (Docker)

100% of the documentation I read started showing code to configure the project WITHOUT mentioning in WHICH files the code should go into -> it was implied!!! -> searching about the topic online made me realize I was not the only one, and the response from the helpers were actually very efficient and correct and were not part of the documentation!

100% of the documentation included non-self sufficient information to have something working and running -> proof is, search for one the problems on whatever search engine -> led to hundreds if not thousands of results of people asking their ways into having the "Getting Started tutorial" to actually work!!!

> And it was most frustrating when they had like 100 columns or so. Having to change column 63 at line 58 is not something you do easily in Notepad++. Import to Excel was my way to go, but since the file was not a standard CSV file (e.g. also had sections like an .INI file) it was time consuming: first just select a subsection from the file, save to a different file, import to Excel, modify, paste back, etc.

Suggestion: have you considered learning to use Vim? I imagine most Vim users are reading your example wondering what the big deal is.

Not to take away from the spirit of your post, though. You have valid questions.

Visidata is great for this kind of thing, exploring and editing csv. https://www.visidata.org/ https://www.visidata.org/docs/edit/
(OP) I've had a short look at Visidata. Maybe it works or not on my described scenario (I should read the docs more carefully and make a test to be sure), but it's definitely in the direction I had in mind (a simple yet customizable enough tool for the job).
The tutorial is well written and gives a great tour of the tool: https://jsvine.github.io/intro-to-visidata/
As a longtime vim user, I don't see how vim makes going to the Nth logical column (for several values of N in different rows) in a large "CSV-like" file much easier.

Navigating in general is easier, sure, but... do you have a trick to share perhaps?

    58G 63f,
1. Go down to line 58

2. Jump to the 63rd comma

3. Edit

Fascinating, thanks!

I had never seen/used `f` to navigate within a line like this -- I'm usually just typing /<string> and hitting enter to scan forward.

This could lead you to the wrong place if, for example, some quoted values on this row contains commas, no?
In those cases it gets a bit trickier but still relatively straightforward thanks to regex-based search. If needed frequently you can also just create a keybinding that does the regex typing for you.

Though I'm usually in the position where I create this kind of file myself and so I just go with semicolons as column separators. Those are much less likely to cause such collisions.

100%. It's not infallible. There are CSV plugins for Vim that bring increased confidence.
EasyMotion makes it effortless.

https://github.com/easymotion/vim-easymotion

Something like this works as long as there are no commas within a cell.

  58G63f,
Takes you to cell at 58:63 (might have off-by-1 errors, don't know)
A standalone hardware mute switch for Zoom/etc calls so you can prominently and reliably see your mic mute status, and quickly and easily flip it on and off.

(I know there are a few do-it-yourself options for these, but I'd much rather throw a bit of money at it rather than time).

I have a Jabra Evolve (40?) USB Headset. The headset plugs into the USB dongle via stereo jack and has green/red backlit Pickup, Mute and Volume buttons and can be used without the headset to mute.

Tested it without the headset in a Teams meeting and mutes within the meeting and displays status as such, doesn't just mute system mic volume. Edit: seems to work the same in Zoom as well.

The dongle itself is model ENC010 and looks to cost around U$50.

Sennheiser headsets tend to have a mechanical switch on the microphone arm that turns it on and off when you swing it. I like that part enough that I only buy those headsets now. I'm not sure if they continue the practice these days.
I'm wearing one right now. I agree this is a handy feature.

It has two down-sides:

1. Muting the mic involves touching/moving the mic, so you make some noise when trying to discretely mute/unmute.

2. It mutes, but doesn't tell Zoom that it's muted, so you can appear to be unmuted to others on the call. I'd rather die than be falsely accused of having a dog bark interrupt a call from MY mic!

1. A reliable python env manager. Some sort of framework to visualize changes to my env as a visual graph with each update/clone viewable in a git-tree like format.

2. Jupyter lab, but that's as good as VSCode/Pycharm (VS code's jupyter extension is still very lacking. Something like Spyder that's not really a notebook would also work fine)

3. A real Inking->Structure app. Come on. There is money in this. Someone do this. Something that is exportable to any of draw.io/Visio/etc.

Could you elaborate on your third point about Inking->Structure app? I've been thinking about this lately and am interested in what exactly you're looking for.
To some extent it is the evolution of the

* Image -> Text

* Image -> structure/shape

* Figure out hierarchical structure and graph nodes/edges from extracted shapes and text

On OSX I miss notepad. The dumbest possible text editor. No cloud syncing of notes, no attempt at being optimized for code, no intellisense behaviors, no spell checking or word processor functionality, no WSISWYGness. Just the dumbest possible text editing window to paste things, scratch a few notes, open raw text, etc. I haven’t found the equivalent in OSX even their basic tools are too smart by half.
I use Sublime Text for this or vim, depending on where I am (in a terminal or not).

Vim is easy if you type vimtutor in the command line and follow the tutorial for the next 30 min. After that, it will always feel like a simple notepad, at least to me it did.

For actual coding I tend to use VS Code. I might give IntelliJ a try again if I can manage to get a free trial again.

You could use TextEdit I guess, but I agree that it's not a good experience; it just does slightly too much and not very well.

Ten years ago, this same frustration led me to release Fraise, a fork of Smultron, for quickly editing files.

I now use vim with a terminal to quickly edit a document, as I find most modern editors to be too slow to start (Visual Studio & co.).

I use vscode for this.

The best feature is that it keeps unsaved files even after quits. I have an instance of vscode with about 80 unsaved documents till now. Hopefully vscode won’t introduce a bug in an update that will wipe these.

I know, me too. The closest in Mac is TextEdit but then you have to do "Format -> Make Plain Text" when you open a new one.
Try using 'Stickies'??
I would like a tool which allows me to examine Git histories of multiple files in a repo, with some notion of 'distance' between files. So if source file A includes classes or functions which are defined in source file B, then A and B are distance 1 apart (neighbors). B's other neighbors are distance 2 from A and so on.

As an example, I'm looking into a bug which I know is related to file X. I would like to see the most recent change which affects files within distance 5 from X. Or, of all the commits between point 1 and point 2 in the git history, I would like to see the ones which changed files the closest to X.

In another context, for every commit in a release, I want to see how big the n-neighbourhood of the commit is for different values of n, in the same way I can currently see how many files were changed by that commit (the 0-neighbourhood). In all these cases I would want to look at the path of connections between files and what symbols it is based on.

In an ideal world, the 'change distance' and 'change neighborhood' concepts would actually reflect the semantics of what was changed and how it could affect other classes etc. So a whitespace change would have empty neighborhoods since the code in no other file could have been affected. But even with a naive interpretation that any change to a file affects all the linked files would be very useful.

Something I plan on making when free time exists - yet another tool for note organization but with features that I find missing from ones I've seen.

Table stakes:

  - Open source
  - Bring your own client (i.e. you can use any editor as long as data is accessible)
  - Core idea: allows for multiple sources of various types (and makes it easy to add new ones) and then it creates a unified and queryable view over them (via a separate client). Some examples:
  -- Keep notes in multiple files and get a single place I can search over them with annotations of where different pieces come from.
  -- Have source code as a source type. Parse comments that follow the right format to allow smart linking to code for references.
  -- Have the output of tools be source types too, e.g. the output of a grep command.
Bonus features:

  -- Some sort of alerts/notification feature that allows for configuration of trigger conditions
  -- Automatically generated graph view of related concepts / tags / whatever 
  -- Support for multi-user editing with some level of permissioning
  -- LSP support
  -- Editing sources from the unified view (whenever that makes sense)
I wish there was a bi-modal programming language: a "design" mode, and an "implementation" mode.

Design Mode:

    - Define domain model: entities, relationships, constraints
    - Define behaviour: state machines, conditions, triggers, calculations
    - Define architecture: systems, subsystems, modules, interfaces/apis
    - Define rules for composition and communication
    - Define extensibility points, service provider interfaces
    - Define access points: ui, cli, api, lib
Implementation Mode:

    - Map domain model -> db schema, code constructs
    - Map behaviour -> code to evolve domain model/state over time
    - Map architecture -> libraries, executables, services, network topology
    - Map composition rules -> snap-in components from architecture using defined interfaces
    - Map extensibility points -> callbacks, hooks, discovery
    - Map access points -> connect ui/api to model and behaviour
Working on something similar in my spare time, its quite... exhausting to be honest. Basic premise is you define a core model or different types of models and use transformers to transform them from one type to another, building a huge structure in the process than can help you generate stuff and notify of updates. The biggest problem is cascading updates, recursive calls, UI and performance in general. Currently doing it on the JVM but I think I should migrate to something closer to machine code to net realistic performance.
I don't know. I already have them (shell, shell utils, Python, Go, jq, JS, Ansible, etc).

I do what you mentioned all day, every day. I don't like the idea of "a more general product" because that's the power of the tools I use, they are small tools designed to do one or a few things only, but I can chain them together to do complex things. And if one of my small tools doesn't work for a particular task, I can swap it out with or write another small tool.

With your "CSV-like" example, I'd probably do something like grep with a regex to check a line and see if it has more than $x commas, and if it does process the line, if it doesn't ignore it and move on to the next.

I am about to head to a meeting, but something like this:

https://unix.stackexchange.com/questions/249071/check-if-a-s...

(OP) I agree with the point you are making. Smaller tools that can be chained together to obtain new functionality is better (in my opinion also) than "bulky" feature-rich tools (which can never be truly feature complete).

But! If you look at it from the perspective of someone who is a non-software developer (e.g. scientist, accountant, graphic designer, etc.) who just wants to do a specific task, it makes more sense to have dedicated tools for the job. Even if those tools, under the hood, are a combination of smaller tools, the end user should not be concerned with anything other than his/her field of expertise.

With my question I was trying to get some insight into people's (who are not necessarily software devs) workflows and how we can improve those workflows (if we can).

The question applies to software development as well: someone who is specialized, say in compilers (broadly speaking), for example, can help the workflow of many who don't have the time / resources to do it themselves. It comes to mind a feature that someone posted above: "List what packages have functions that can get called when I call function X".

I wish I had a robot to do my job for me but still get paid.
Seems like we're close to having a viable meeting attendance as a service what with deepfake faces and voices.
When working with React and Redux and Redux Sagas, I wish I could more easily figure out causal chains for what happens. When I previously did work as a game programmer, for most things (except, say, debugging why things rendered a certain way), you could just go to where the thing happened, put in a breakpoint, and you'd get a beautiful call stack making it easy to reason about how you got to where you are.

In my current web development work, using the aforementioned tools, where it isn't just one thing calling the next, but there's a huge amount of indirection and message passing, I have to spend a ton of time figuring out what set of events occurred, and where, and why, to figure out why I got the result I got.

Is there a reason why the browser debugger is not useful in your case? (or in any other case?) I found it useful for debugging simple jquery websites but I imagine a dozen things can go wrong between the debugger and webpack/next/react/jsx/redux/hot-reload
The browser debugger is still helpful, but it isn't able to link together the cause and effects (because the code in the system was designed that way -- it doesn't matter who fires off an action, it will (eventually) make certain code happen to respond to it. But, when you see the response code go off, it can be hard to figure out what action caused it -- moreso if your codebase abstracts things like the names of strings representing actions so you can't just grep for them.)

I think some sort of higher-level debugger ought to be possible, but don't know what it would look like.

An actual real portable executable format, and standardized build tools. I hate having to jump through build system hoops to target the same piece of silicon with an annoying OS in the way.
Someone posted this a week or so earlier: https://justine.lol/ape.html -- that might meet your portable executable format?
Automatically saving and restoring terminals with tabs and separate histories, per workspace.

I have found nothing yet that does this, or even just one of those things. It would be the killer feature of a new terminal emulator - and I see there are lots of them being developed, but none of them have this! And I can guess why: It's because of the maintenance work required to have this feature, and also trying to be multi-platform, multi-desktop and also the work required just to have a working terminal to begin with.

Once upon a time someone here was explaining how to set bash to use the first history file in the ancestor folder of the current working directory. I do not remember how, but it sound similar to what you are asking.
I've been looking for software to map relationships between my team's products (app servers) and their integrations.

E.g. server01 can go from 3.1 to version 4.0 since foo01 integrates with server01 and foo01 supports 3.1 and 4.0.

I have been poking around at graph databases for this, but I'm also looking for something better than wiki pages.

Yes! I worked at a well-known regional company about 15 years ago and we built one of these ourselves. It would track servers, software, packages, etc... You could quickly see which web servers were running which versions of .Net and then drill into the applications which had their own tagging to specific .Net versions. Then you'd have a clear picture of the opportunity/costs/consequences of upgrading the version on that machine.

I'm interested in this type of system for my current job and I can't find anything on the market.

maybe I have a new project to start.
It sounds like you wish you had the classic unix text file utilities like sed, awk, grep, cut, and so on.
Yea, more often than not if you wish there was a tool to do something that seems trivial, someone already thought of it and solved it well.
Maybe I haven't looked hard enough for these but off the top of my head:

- A universal calendar I can merge across client accounts. As a consultant, I have customers in gsuite, o365, and my personal one and relationship management means manually synching my calendars between them.

- A virtual machine for android phones to sandbox identities and apps into, as I'm not interested in letting a client's MDM near my BYOD mobile.

- A userspace version of Paralells with a linux image that runs on enterprise client's locked down windows thinkpads.

- a Cypher-like graph query language that operates as an abstraction over spreadsheets.

- an excel plugin that de-dups rows and generates Sankey diagrams from selected columns.

On that second point. I think you can achieve with androids work profile, Shelter[1], and a firewall app like Netguard[2]. I recently came across a guide[3] to FOSS your android and improve privacy, and it included this method.

[1]- https://f-droid.org/en/packages/net.typeblog.shelter/

[2]- https://f-droid.org/en/packages/eu.faircode.netguard/

[3]- https://lemmy.ml/post/54596

Wow, thanks for that guide! Super useful, I've been needing some guidance like this
I’ve been keeping an eye on freetime (https://getfreetime.app/) for the first issue in your list. No O365 support yet though.
An equivalent to excel's record macro functionality, but at the os level, based on what's on the screen using ocr.

Sikuli got close, but something with a little more AI behind it to get a sort of "fuzzy" macro recording.

Windows at least has AutoHotKey[1] -- it's kind of awful, but also kind of great. It has been a path into programming for more than one person I know and has saved others countless hours of repetition.

1 - https://www.autohotkey.com/

An app I built, Keysmith [1], does something pretty close to what you're describing. It's macros anywhere on your Mac, but instead of using OCR we use accessibility APIs to identify UI elements by name. There's also a browser extension to do the same on the web.

And you can save macros for later use or just create a one-off "Scratch" macro as described here [2].

[1] https://www.keysmith.app/ [2] https://www.keysmith.app/guides/creating-and-running-macros

Do you mean Robotic Process Automation? It’s OS level and ticks all the blocks.
Conceptually yes. I've yet to see one that is built for an end user to make something on a one shot example though, with an output script that you can tweak.

Everything I've seen has been very enterprise-y.

- A monorepo build tool that handles having a "base" Dockerfile that builds the monorepo dependencies (npm install + npm build) but that then lets sub-images use a subset of the repo easily without needing to re-install/re-build.

- A really nice TypeScript shell scripting setup. I'd like to see Duktape or JavascriptCore used, combine with esbuild/swc, Actually Potable Executable, and ShellJS. Basically, give me a single binary that runs cross platform, so I can write my scripts using TS. Anything to save me from having to continue googling weird bash edge-cases constantly.

I need a visual studio plugin to disable breakpoint breaking while preserving my enabled/disabled breakpoints. Sometimes, I just want to avoid breaking for a bit without removing or futzing with my breakpoints.
You might want to tweet at https://twitter.com/madstorgersen - he's always asking about ideas for VS plugins, soliciting feedback, etc.
I wish I had a tool or app that would successfully get me to reduce both phone usage and use of certain apps or websites. Something that could adapt to different people would be good.
On iOS it's already available and called Screen Time.
Being able to incrementally load compressed files. Sometimes I have to load large tables, do some processing and save the result. The easiest way to do that has been to load the rows of csv files by blocks (it's really easy to load parts of csv files). But I'd love a way to do the same row wise loading with compressed file formats such as parquet. (Bonus points if that's possible even if I'm not the one who built the original file)
Not applicable to parquet, but I have used zless/zgrep often on tar.gz-compressed logs.

(I'm not sure what they're doing is actually that efficient though...)

FYI, the Logfile Navigator (https://lnav.org) can display gzipped/bzipped files on the fly. The top-of-tree has new support for automatically unpacking archives to a temporary directory using libarchive and displaying the contents.
https://linux.die.net/man/1/zless

Sadly, it looks like it just pipes to gzip -cdfq.

Time-web-browser. That would allow me to look at future webpages and see for example what HNers in 2150 are into. If the sky is the limit of course...
The reverse sounds pretty interesting. A browser that shows me the current page but also can load cached/historical copies of a page from a week ago, year ago, 10 years ago, etc.
I'd love to have google meet metrics for me and my team so I could easily grasp how much and why are we spending time on meetings.
I think exist a lot of small things to improve of RDBMS, like native support for algebraic types, including a indexable view of enum-rows that could cover a lot of what "unstructured but in fact not" use cases exist.

Also my dream is build a Foxpro/excel like tool to recover what a true effective data-first programming environment can give in modern times.

Probably wouldn't be too hard to do myself, but it love to be able to use the touch bar as a clipboard. Basically have a button that stores whatever on your clipboard at the moment onto the bar making a growing list of tiles, tap on the tile to load it back on to the clipboard, and hold the tile to remove it.
I wish my company offered me a Linux laptop. A Mac is not a solution. Neither is a windows machine.
Can someone create a countdown timer for Ghangouts/Zoom? I find that in most calls time is wasted and people don't usually get to the meat of things until way into the call. A timer for scarcity would make video calls/meetings way more effective
(OP) I woke up this morning and I was pleasantly surprised at the large number of answers to my question. I saw some pretty insightful ideas. Thank you! Also, it would be nice to hear about hurdles that non-software devs are facing.

It may be a skewed opinion of mine, but I think that more value can be added, more easily, by software into other domains, than what can be added by software in software development itself.

Software "divorced from reality" is pretty useless. It becomes useful when: it helps drive a real process (e.g. factories, cars), it helps better understand a phenomenon (e.g. data analysis), provides entertainment or education (e.g. games, animations), gives answers or predictions (AI, machine learning), facilitates communication (messaging, video calls), etc.. A god-like software running in a box (e.g. general purpose artificial intelligence), but not plugged into anything (e.g. at least a monitor, speaker, etc.) will literally offer nothing (even if it could, should it be connected)

Say you make an application to facilitate selling of tickets to a business. Then you may go optimizing the database/website to handle more users, etc. Then you may go optimizing the build-tools, the programming language, etc. The more you continue down this chain (which goes more abstract) the less you directly and meaningfully impact the initial requirement. I'm not saying it's a bad thing! I'm saying:

-> The more "meta" you go, the more broader impact you have on a whole area, rather then just the initial requirement. This is the good part! But also the harder and more complex it gets! Exponentially! This is the "bad" part.

I guess the ultimate point would be to reach general purpose AI. When we get there, the whole purpose of this discussion thread is useless anyway.

But until we get there, I personally think we should focus more (or at least just as much) on fixing the actual problems (in a clean way, with few dependencies), rather then going to deep on that "meta" chain I mentioned. There are good outcomes of course, but one bad outcome of going too "meta" is the increasing bloat and complexity we seem to be experiencing in all modern software.

"Inherent Complexity: The Ways the Problem You’re Solving is Hard" "Incidental Complexity: When Programmers Make Their Lives Worse" https://pressupinc.com/blog/2014/05/root-causes-software-com...

1)Hassle free Copy Paste between workstations on different networks. 2)Generated Ansible from pristine OS to current state.
A modern version of Vern Buerg's List.com. I used that tool in DOS days and almost always had it running.
A thai person to make a feet massage..
Better Google Docs.

It's hella slow.

Our support and marketing teams wont switch to Google Docs from quip because they hate Google Docs organization. But the engineers hate quip.
Never heard of quip. I'll check it out.
Python
On my first sysadmin job fresh out of school I got a locked down laptop where nothing could be installed. So no Python, no Perl, no nothing, except Batch files. My morning job consisted of going through hundreds of report emails from all systems to identify issues (full disks, high nr of errors, etc), every morning, every day. This could easily be scripted and save me a lot of time, but no such luck for me. Until I found an application in the "allowed software catalog" which came installed with a Python interpreter. Python 1.x mind you, but nonetheless: Python. Within a few days I automated my morning tasks and got some free time to play with the servers in the lab to beef up my networking skills :).
I also wrote Python but then read "you wish you had"
I wish I had. but I don't because I haven't learned it yet
Yes, definitely recommend "Automate the Boring Stuff" for anybody who have a serious job and .... well wants to automate (some of) it.

If you are on windows, also checkout AutoHotKey. Makes some types of tasks a freaking breeze. +1 for great non-technical docs