Ask HN: What are your favorite examples of elegant software?

286 points by joshbochu ↗ HN
design or otherwise

421 comments

[ 2.5 ms ] story [ 423 ms ] thread
NixOS (although yes it could be even more elegant than it is)
Unpopular opinion but Microsoft Excel. It's a powerhouse of features.
Lots of features, sure, but elegant? I've always felt like excel was about as far as you could get from elegant, especially once you want to do anything more than data entry and simple charts.

Elegant software doesn't normally need an interest group dedicated specifically to preventing people from misusing it. http://www.eusprig.org/

I recently had to do a bunch of currency conversion for my tax accounting. I had hundreds of transactions, and I needed to set the right exchange rate for each transaction, based on the date of the transaction. This took just a couple of minutes to do in Excel. The solution - a simple Excel formula that compared two rows – was indeed, extremely elegant. Excel enables this type of elegant calculating all the time.
I agree. The declarative/functional nature of spreadsheet formulas is certainly elegant, even if you might not say the same about Excel as an application overall. The same could be said about other spreadsheets (e.g Google Sheets).
I'm a definite 'excel-apologist' and think Excel is brilliant and incredibly powerful when used correctly, so the below may be biased but...

> Elegant software doesn't normally need an interest group dedicated specifically to preventing people from misusing it. http://www.eusprig.org/

Plenty of the other software listed has user-error misuses (For instance C is listed, and by the same standard it could be considered responsible for more software vulnerabilities than anything else!).

Sure there are errors in spreadsheets, but as the alternative is often calculating something by hand or asking similarly-trained users to write a python scripts, I think both those options probably create more errors.

Looking at the 'horror stories' listed on that website:

* The first listed is about the UK government using a version of Excel that is over 10 years old, with an issue that would not have happened if they updated the software.

* The third listed is because someone ENTERED incorrect information into a procurement spreadsheet (they copied the specification for a standard bed in rather than a critical care bed).

* The fourth is user input error - they input a fund as Dollars rather than Euros (how is this Excel's fault?)

* The fifth and sixth talk about logic errors - one with hard-coding a value and another with using 'cumulative mileage totals rather than running calculations on a sample average for vehicles'.

I agree that spreadsheets can have issues, but most of these can be mitigated by setting up sheets properly and I haven't really seen a compelling replacement for a spreadsheet for the sorts of stuff it gets used for.

The real problem with spreadsheets is a lack of training - I would estimate less than 20% of users know how to turn on cell validation, less than 10% know how to write a dynamic array formula, and less than 5% know how to use PowerQuery. It's like asking a bunch of people to write python code, but only 10% of users know how to write a loop, and then we are surprised that there are issues.

Besides, if you input a fund into a fancy financial package with the wrong currency it will cause the same issues.

Excel crapped out bioinformatics. It's a turd. Period.
Excel has an unrealistic barrier to performance to meet if we point to the fact that a desktop spreadsheet package is not good at being used for DNA and amino acid analysis.

We don't expect any other off-the-shelf technology to meet such a wide variety of use-cases, and somehow I think the statement 'excel is bad at processing bioinformatics data' speaks a large amount about how pervasive and flexible it is.

Besides, in reality Excel actually can handle the data perfectly fine if the data is brought in correctly (i.e. Data -> Get Data and using PowerQuery rather than just importing a file and hoping Excel works out the types correctly).

And antifeatures. Some people do not work with dates.
What definition of elegant are you using?
So elegant that genes have had to be renamed to stop Excel mutilating them.
If the argument is feature:[something else] ratio, then I might be able to consider it, FSVO something else, such as "UI complexity" or "learning cost". Partly in response to sibling posts, the PP definitely makes me think twice about why I'm willing to call PostgreSQL elegant but pause a bit harder to evaluate Excel.
Perhaps the elegance is more in the concept of the spreadsheet and less in the Excel implementation of the concept.
Yes, I think maybe the original VisiCalc was elegant, even if far less featureful. It was a game-changer, one of the first general purpose PC applications that let users do row/column based computing without programming, and along with word processing was the software that underpinned the explosion of PC use in business.
I taught Lotus 1-2-3 for a while, so probably had well above average familiarity with it.

And then in 1987, I opened Excel 1.0 on a Mac SE for the first time. Was blown away at how elegant that felt. Later versions seemed to loose that original elegance as features were added.

Turbo Vision/Turbo Pascal for MS-DOS. Borland put together one of the best instances of an object oriented library that just worked. The follow up with Delphi for Windows was the most productive environment I have ever experienced, until I was priced out of it in their pivot to "Enterprise" customers.

Nothing since is anywhere near as productive. Lazarus is ok, but the documentation is horrible, (almost non-existent, only doc-strings in many cases) which makes the system far less useful.

I cut my teeth on Borland Pascal and later launched my career with Borland C/C++ tools. I love JetBrains these days but not as much as I remember loving Borland!
I never used those older environments, but I've heard that Windows Forms + C# captures most of the same magic. Do you disagree?
(comment deleted)
WinForms did, it's extremely similar to Delphi's VCL. Microsoft's even changing newer UI libraries do not.
They stole Delphi's designer from Borland (not sure if it had already renamed or not) and that fixed things for a while. It didn't last though.
Related: I did a lot of WinForms programming in C# when I was a tools programmer at EA and I don't know if I've ever been as productive as during that time. The whole API was really well thought out, Visual Studio was fast, C# was a beautiful language.
> C# was a beautiful language

It still is. (And Blazor is pretty cool, too.)

Yes, definitely! I put it in the past tense only because I don't use it these days.
Every UI technology is unbearably cumbersome after starting my career in WinForms.
There's Lazarus project (https://www.lazarus-ide.org/) - which is a Delphi compatible IDE. I've used it once to build a simple UI app, and it was a real nostalgic look back in time. Not to mention that it was extremely simple to build the app.
JonesFORTH

Although one might argue it to be a case of really elegant documentation and literate programming.

Always impressed with Palantir's software.
Can you give an example? I’ve never seen it myself. What do you find the most impressive about it? Any links where those parts can be seen in action? Also, what would be the closest competitor, and in what regard are they worse?
"Any links where those parts can be seen in action?"

No, but when they arrest you, you see the effect :)

I figured I'd get some downvotes mentioning PLTR here. ;-)

GPalantir is definitely being more open with their demo now, so there are some good ones on their youtube channel.

You can skim through.

https://www.youtube.com/watch?v=uF-GSj-Exms

I'm impressed by how polished everything looks. As a person who does UX / product design, their working software looks better than most designer's portfolio mockups.

I'm impressed by how fast and snappy everything works or feels.

I'm impressed by how rich and custom tailored their UI component library is.

I'm impressed by how focused and tailored their UI for job at hand.

I'm impressed by how every single page in their application looks beautiful, not just a handful.

They actually have all their React UI library published as opensource here. https://blueprintjs.com/

If there's anyone from pltr reading this, good job. Your design people are amazing.

I love utilities that quietly work, and just accept whatever workflow I throw at them.

OwnTracks is an app that logs your position and sends it somewhere else. It has been running on my phone for like 2 years without issues, and talks to a server I wrote myself.

FolderSync syncs folders on my phone to remote storage. It's super flexible and generally just works. The conditions for syncing are highly configurable. I lament the lack of a similar utility on Mac - basically an rsync+cron UI.

Easily my choice for the OP's question.

I have set and forgotten it for a few things here and there, like making sure the photos I take on my phone are backed up and available on my laptop as soon as they're on the same network.

Aegis/Domain OS. I would love to work again with such an OS.
Are unix pipes a software? If so, then that.
Redis. The interface is quickly obvious using telnet (which makes all clients pretty obvious). The documentation is both succinct and complete. All operations are listed with their big-O notation.
Any implementation detail you could please share?
Redis's interface and docs are a joy to work with. Everything just feels so straightforward and uncomplicated. The config file stuff gets a bit weirder, but it's still pretty easy.
The Elm architecture. I've only used it in F# with Fable but it's made UI programming fun again. It's robust and simple.
Linear is nice. https://linear.app
Yup. I find Linear a pleasure to use after years of JIRA.
There was a time when JIRA seemed elegant. I still remember a dark age of ClearQuest and some garbage by HP.
- NXT-G, the coolest (simple) visual programming language

- Propellerheads Reason, a sweet DAW

- emacs, a text editor so elegant it’s a real OS

- Procreate, the nicest iOS drawing app

> NXT-G

On a similar tangent, NodeRED is also an interesting software to build workflow-based automation visually.

SQLite. It's a damn fine piece of software for small applications.
I've heard people call it "a replacement for `fopen()`". Similarly, I like ZeroMQ as a replacement for sockets.
I just loaded 4.6G of json into an in-memory sqlite database in about 20 lines of Python. It isn't just for data storage, it is also great for quick adhoc analysis.
I honestly eats most people's "big data" for breakfast. Combined with datasette for turning your ad-hoc queries an api of sorts it's like a superpower.
A couple of my favorite programmable products from the MSDOS years:

Telix

QEdit

numpy started a science renaissance. fantastic library for what it does.
Basically just LAPACK in Python or is that SymPy!
Thank LAPACK or BLAS for that.
The biggest testament to the quality of the numpy API is that it effectively became a standard that's replicated across other libraries like TensorFlow, PyTorch and JAX.
mIRC feels elegant by today's standards.

A full-featured IRC client for Windows that includes an entire scripting language and yet it consumes less RAM than calc.exe.

Hah, mIRC was a long time ago! I'm a bit nostalgic. :)

But is it really true that vanilla mIRC consumes less RAM than calc.exe...?

That'd be impressive, if I could believed that!

Just popped open Task Manager...

calculator.exe is at 74 MB working set, 24 MB Memory (private set), 50 MB Memory (shared working set), 48 MB commit size.

mIRC.exe is at 31 MB working set, 13 MB Memory (private set), 18 MB Memory (shared working set), 38 MB commit size.

Doesn't matter which value you use for "How much memory does this program use?". mIRC is smaller in all of them.

That's not `calc.exe`. I think windows doesn't ship with calc.exe anymore. The fair comparison would be the last version of mIRC that was current when the last version of calc.exe was shipped. I don't believe that mIRC would use less RAM than that... Certainly not when you were actually USING it! (including reconfiguring the size of your scrollback, for example..)
The OG calc.exe still ships with the LTS[B,C] versions of Windows 10.
Which tells you the new version is anti-privacy.
Keyboard Maestro. It’s a tool for automating common tasks on a Mac. A real programming language is certainly more elegant for writing programs. But what I find elegant about Keyboard Maestro is that it lets me add programming logic to any application on my Mac, quick and dirty.
I love Keyboard Maestro's "Click on Found Image" action. Definitely quick and dirty, but it's great for ad-hoc web page automation when I can't be bothered to knock something up in puppeteer etc.
emacs, both for the elegance of its elisp-machine design and for how good its self-documentation is.