Intriguing idea! I love the idea of having a database of the commands you’ve run and their output. I use tmux religiously, but it’s sometimes frustrating using a crappy interface to spelunk my terminal history and manually look for the various commands I’ve run amidst voluminous output. And of course it’ll lose that history when it runs out of buffer.
Question: You refer to this as a shell, but it seems more like a terminal emulator. Am I missing something?
A couple ideas for different ways to achieve the goal:
1. It seems like a web UI rather than a native app would be beneficial for various reasons (run anywhere, connect remotely, coded in the UI lingua franca, etc).
2. I could see value in separating the shell and the history browser. Like the shell is just your shell, and it can be used via whatever terminal emulator that people want to use, or even thru ssh. The only thing the shell does above and beyond any other shell is to pipe stuff to the database. If the user wants to look at history, then they go to the web UX (ala suggestion 1) to do that.
Doing this would make it more palatable for people to start using it because it wouldn’t change the feel of their daily experience, but in the background, they’d be getting the cool features.
> I love the idea of having a database of the commands you’ve run and their output.
Once upon a time, I rigged... I can't recall if I did it in tmux or the shell profile, but I made my system spawn every new shell under script(1) by default (with some logic to check that you weren't already nested to avoid infinite loops, and some way to start a shell that didn't use it just in case), which resulted in a nice directory with text files listing every terminal session i had. I think it ended up not being all that useful and there was either real or perceived performance impact so I didn't bother implementing it again when I switched machines, but the idea did seem neat.
> You refer to this as a shell, but it seems more like a terminal emulator. Am I missing something?
It has elements of both. I think it's closer to a shell because its primary purpose is to run commands, like bash. It has a terminal emulator, and you can run interactive programs (like Vim, or even bash) inside a hucksh command widget, but (from my point of view) the terminal emulator is there mostly so that programs that output ANSI/ncurses escape sequences don't look like absolute crap. (Many programs don't even check whether they're writing to a TTY, and/or don't check what kind of terminal they're in, they just unconditionally write xterm or vt100 ANSI codes.) I don't think you're missing anything, we just focus on different things.
> web UI
That's funny, I initially started with a web UI. Before, I was using Angular, and called it "ntla", which meant "Never Type `ls` Again". As a mostly backend-developer, the, uh, intricacies of HTML and CSS, even using Angular or Vue, ended up being a pretty difficult learning curve to climb. When I saw Gio, the completely-Go-based library I'm using now, presented at GopherCon a couple of years back, I fell in love and that actually got me to restart development of hucksh.
Gio can actually compile to WASM and I'd like to eventually enable a web-based interface. Which is admittedly not what you're saying. :)
Hucksh can actually connect remotely by forwarding the connection it uses over ssh. There are instructions for that in the documentation. Admittedly that requires more configuration and permissions than a webpage, but there are other tradeoffs. I use hucksh remotely all the time, with the UI running locally and talking to a remote backend. Using autossh and hucksh's native auto-reconnect, my laptop can go to sleep and automatically reconnect to the remote within a few seconds of awakening.
> separating the shell and the history browser
Yeah, I could see that.
There is a rudimentary command-line interface to the back-end. `hucksh cli <some-command>`. There might be a way to shim that into the bash REPL so that it uses "hucksh cli" to run commands instead of executing them directly. I, at least, would miss the rest of the UI. It's worth thinking about, if other people like the idea too.
Personally I thought it was cool that you replaced the shell AND the terminal. I honestly feel like we need a re-imagining of computer interfaces. CLIs are cool but the current state of the art is lacking. So kudos on what you're doing.
I don't think I will become a user because I'm a radical free software purist but I like what you're doing and I think it's the kind of outside the box thinking that's needed if the shell is to ever move far beyond "1980s state of the art".
Thanks! Yeah, improving the state of the art beyond TTYs is a core idea of hucksh.
> ... radical free software purist ...
Yeah, I get that. Someone on Reddit mentioned the same thing. No worries. I'm definitely a fan of free software too (Vim user since, like, 1995, to name one), just not a purist.
There’s a lot of snap bashing in here, but one thing that seems really appealing is that snaps are run in sandboxes and protected by AppArmor profiles. I don’t know how good the implementation is, but sandboxing would seem to alleviate the risk that one of the hundreds of rando-authored packages that get installed on your system might decide to abuse root privileges during installation and quietly take over your system. Also, sandboxing your programs seems like a good idea in general, so they can’t all access each other’s data.
Has anyone tried https://github.com/firefly-iii/firefly-iii? It seems to be under active development but it always makes me nervous when the vast majority of updates come from one person. (What happens to the project when that person isn’t working on it anymore?)
Sometimes I feel like programming is physically and mentally designed to create bad health and mood, at least if you’re not very careful about how you’re _being_ while doing it.
Maybe it’s just me, but I have to work hard to avoid:
- Bad posture, hunching towards the monitor
- Scrunching the face
- Feeling impatient because my fingers and the computer can’t keep up with where I am in my mind
- “Damn you, computer!” frustration in small doses throughout
- Frequent interruptions via email, Slack, texts, coworkers, etc
- In some cultures, it’s very hard to have a plan for what to get done in the day and then execute on it due to getting sucked into meetings and stuff.
Ya I’m really interested in what I do and side projects I work on but I feel like absolute shit after focusing on either. Not sure how to solve this. it feels unsustainable to find equal amounts of joy(?) and ~bad feelings physically and mentally~ from partaking.
There’s a (good) short story in a (great) sci-fi book called “Valuable Humans in Transit” about something like this. If I remember correctly, Google learns to perfectly simulate people and then the real people disappear.
Such a clickbaitey title. There were just a few.. THOUSAND.. causes that culminated in the 1929 crash, but saying one person caused it gets those clicks.
> Extremely successful both as an investment and as a commercial banker, Charles E. Mitchell was identified by contemporaries as the epitome of the unscrupulous “money changers” whose speculative dealings they felt played a major role in the Crash of 1929 and the ensuing economic collapse. This portrayal has been echoed and elaborated by historians and commentators down to the present day. In this article Dr. Huertas and Dr. Silverman demonstrate that Mitchell's activities, while sometimes ill-advised, were motivated by the economic “good sense” of the day and were not attributable to either rampant immorality or ungoverned greed. At the same time, they direct the attention of economic historians to the monetary policies of the Federal Reserve system in the 1920s and 1930s—in which Mitchell also played a role—and suggest that a more potent source of the Great Depression lies therein.
Agree. Our emotions are not adapted for the world we’ve built, yet they almost have superuser access to our physiology and meaning-making. Usually your neocortex follows the emotions and makes stories that support the emotion, and that can be tragic because the emotion often gets stuck on a false alarm.
Getting the neocortex somewhat more in control seems to be a difficult and lifelong (but worthwhile) skill to develop. Witness the lucrative self-help industry for the scale of the problem/opportunity.
Question: You refer to this as a shell, but it seems more like a terminal emulator. Am I missing something?
A couple ideas for different ways to achieve the goal:
1. It seems like a web UI rather than a native app would be beneficial for various reasons (run anywhere, connect remotely, coded in the UI lingua franca, etc).
2. I could see value in separating the shell and the history browser. Like the shell is just your shell, and it can be used via whatever terminal emulator that people want to use, or even thru ssh. The only thing the shell does above and beyond any other shell is to pipe stuff to the database. If the user wants to look at history, then they go to the web UX (ala suggestion 1) to do that.
Doing this would make it more palatable for people to start using it because it wouldn’t change the feel of their daily experience, but in the background, they’d be getting the cool features.