Live data from Hacker News

Unix as IDE (2012)

blog.sanctum.geek.nz

21–30 of 72 posts

Re: Unix as IDE (2012)

#21
post #19

Earlier quoted context omitted.

There are modern alternatives to many of the classic utils e.g. `fd` for find, with better CLI args and other improvements ripgrep for grep also comes to mind

I've totally switched to the newer, dev-orientated variants for my work. fd, sd, ag/rg, fzf, bat, xh/httpie all work how I'd expect them to and I don't need any archaic knowledge. Plus, fish's autocomplete does fill in blanks when I need it. I'd kind of consider tmux to be my ide rather than Unix. That's where I combine everything above (along with nvim), and it's as integrated as I need it to be.

Cool, didn’t know about sd before. The missing part is a more modern awk somehow.

Re: Unix as IDE (2012)

#22
post #3

Unix was probably a great IDE by the standards of 1975, because literally every design decision about Unix was made based on the criterion of convenience for a 1970s programmer. Those decisions haven't aged well: fork() sucks, lack of completion-based async I/O sucks, ill-thought-out file, socket, and process APIs riddled with TOCTOU bugs suck, two-letter YAFIYGI commands suck, untyped pipes suck, and don't get me st…

Expanding horizons = introducing longer pipelines of learning. At this point you'll need 10 years just to get the basics down much less be competent across the stack.

People routinely become immediately productive in Visual Studio Code.

Contrast this with the potentially multi-decade journey of becoming proficient in something like vim or Emacs plus command line tools.

It is possible to improve on the old ways, from a productivity and ease of learning standpoint as well as from a standpoint of what's possible.

Re: Unix as IDE (2012)

#23
post #10

Unix is a DE, no I about it. This isn’t a ding against Unix, the integration provided by IDEs is great for some types of work, but it’s also more hindrance than help for other types of work. Also, the toolset that you get from a typical Unix environment is more or less language agnostic, so you have your tool toolset available to you even when you’re working on something obscure with poor dedicated tooling support. T…

Yeah, the article very conveniently ignores the "integrated" part of the IDE acronym. Which was one of the maint selling points of them: you don't have to cobble various small pieces of functionalty together by yourself, it's been figured out and done for you by the IDE developers once , now you can just write your programs.

I was super excited about customizing every little detail about my setup as a kid, but as an adult I'm pretty much using ubuntu lts and vscode because I can't be bothered to read a half assed repo on configuring my lsp.

Re: Unix as IDE (2012)

#26
post #5
post #3

Unix was probably a great IDE by the standards of 1975, because literally every design decision about Unix was made based on the criterion of convenience for a 1970s programmer. Those decisions haven't aged well: fork() sucks, lack of completion-based async I/O sucks, ill-thought-out file, socket, and process APIs riddled with TOCTOU bugs suck, two-letter YAFIYGI commands suck, untyped pipes suck, and don't get me st…

I agree that PowerShell is theoretically better since it can deal with structured data. But in practice, I could never get as efficient with it as I could with "the Unix way" (everything is a string). If I was writing a "production" script, then it's better. But when I'm just trying to quickly do something on the command line, the "everything is a string" approach is good enough.

The thing that we'd ideally want to happen, but will probably never will unless a mad person does it, would be to have something that wraps around a POSIX shell, and extends it in a sort of non-compatible way. Let's call this new tool $NEWSH.

Larry Wall basically tried to do this with Perl but I guess his vision was too lax for such a pursuit, Perl tried to be everything, all at once.

What I mean by this new approach is that this new tool would implement everything in POSIX shells, as a sort of v1 layer and then everything else and new and modern (typed, etc), as a sort of v2 layer. There would be simple ways to call back and forth between v1 and v2, but inside a layer, you couldn't mix and match (maybe you could do it with a construct such as "unsafe".

Long term the idea would be that this tool becomes pervasive, installed and available everywhere and everyone can safely and reliably use just the v2 layer.

The v2 layer would be extensible by design, so it can keep up with modern practices.

You'd want to be able to go $NEWSH my-bash-script.sh and it should just work. $NEWSH my-newsh-script.nsh should also work, obviously.

The reason this would never happen, IMO, is because it's a thankless job that needs to be done for at least 1 decade. This new shell would need to:

- implement full POSIX shell compatibility - the v1 layer (done before, doable)

- implement the new, designed from the ground up, language - the v2 layer (sort of done before by alternative shells, doable)

- design a clever, simple to use, safe interop + unsafe construt for v2 (I imagine this would be hard)

- package and promote this new thing, once it's stabilized, so that it's picked up by: Debian/Ubuntu/Mint, Arch, Fedora, FreeBSD, etc, and wait for literal decades for distribution to happen; Debian Stable and RHEL are especially egregious, since for ubiquity you'd want the new tool to be available in the 2 latest LTSes, so DevOps people can rely on its availability... so as I said, count 10 years for that (crazy hard and super boring)

I said only a mad person would do this, because with this kind of volume and intensity of work, you can probably start a successful company or an open source project with much higher impact.

Oh, and this project will be absolutely HATED (think "getting death threats" type of hate) by large parts of the community. See systemd.

Re: Unix as IDE (2012)

#27
post #12
post #3

Unix was probably a great IDE by the standards of 1975, because literally every design decision about Unix was made based on the criterion of convenience for a 1970s programmer. Those decisions haven't aged well: fork() sucks, lack of completion-based async I/O sucks, ill-thought-out file, socket, and process APIs riddled with TOCTOU bugs suck, two-letter YAFIYGI commands suck, untyped pipes suck, and don't get me st…

see, that's what i thought in 01998, but you may have noticed that google, facebook, aws, openai, github, android, ios, docker, instagram, slack, whatsapp, fastly, tesla, etc., all run on unix for some reason so i guess fork and epoll and the racy unix file and socket and process apis are adequate, or anyway in some way not as fatally flawed as windows. a lot of those successful tech things of the last 25 years do in…

I'd argue that it's Worse is Better (https://en.wikipedia.org/wiki/Worse_is_better) in action, together with the lack of cost.

The entry point is super low, both for companies and for individuals, and once a somewhat acceptable base is in place, people just build on top of it.

The quality bar is: "it shouldn't fall over on its own when left unattended", it's not super high.

Re: Unix as IDE (2012)

#29
People love their integrated IDEs. And I don’t want to spoil that happy feeling. But perhaps we should actually focus on making programming languages more human friendly so we do not need complicated tooling around them to make us feel productive.

Re: Unix as IDE (2012)

#30
post #29

People love their integrated IDEs. And I don’t want to spoil that happy feeling. But perhaps we should actually focus on making programming languages more human friendly so we do not need complicated tooling around them to make us feel productive.

OK. How?
Post reply on HN