Not sure if games count as software but if they do - Factorio. I don't play much these days but I'm still utterly stunned how a relatively small, humble team of developers can build something so robust and performant. Granted, I've never really tried pushing the limits, but not once have I felt like the game is even breaking a sweat while processing thousands of machines, belts, and bots. It's a miracle to me.
Their devblogs are really nicely written and you can tell they are extremely passionate about getting things right. In my experience that's a rarity now.
Similarly, mindustry is written in java by a single developer freshly out of college and is incredibly performant for the amount of moving pieces rendered at a time. Granted I'm not in video games, maybe it's not too hard, but I thought it was really cool.
It's also an incredibly cool, interesting game design. If you like Factorio + Tower Defense you should check it out.
Doubly so that the game is written entirely in native C++ and is fully cross platform compatible (mac/windows/linux) with a tiny binary size. The responsiveness and performance of that game even with thousands of agents onscreen has always impressed me.
I'll also point out that the UI for Factorio is almost among the best.
I'd prefer a factorio over almost another UI.
I'm imagining a port of factorio's UI into most strategy games would be very nice, both from a VERY zoomable map, a clear research/progression tree. A few improvements could be made IMHO, but it's lighyears better than TF, CS, the Chris Sawyer set, etc.
There's a series of space strategy/4x/combat sims called X where the latest entry seems to simulate entire economies and individual ships in real time. Dozens of sectors with hundreds of ships and dozens of space stations all humming along at 30-60 FPS.
Like Factorio it's incredible and makes me wonder wtf I was doing chaining together bullshit service APIs in my day job.
Another elegant game is [1] City Skylines. It's amazing how they can create such a huge virtual world with millions of simulated individuals that roam around and have complex lives in your city.
Factorio really is a bit of a modern marvel, even HUGE factories don't seem to run poorly at all and I genuinely have no idea how. Other similar games made since (Satisfactory comes to mind) seem to struggle with things like keeping track of resources on belts at scale, which IMO is a perfectly understandable problem to have but still makes factorio that much more impressive.
You can definitely hit the limits of Factorio. My largest base runs at ~10fps which is how I know it's time to start a new game. Egregious use of copy/pasting and an automated robot production will get you there.
It's still leagues ahead of any other game I've played though.
I've definitely pushed the limits of performance with way too upgraded huge range artillery turrets hitting all the biter bases, but yes, very performant with large factories otherwise :)
Emacs - although there's a lot of accumulated cruft in the form of whacky APIs and elisp functions, the design of Emacs is stunningly effective. The way that minor modes and keymaps are composed to customize the interaction mode for each individual buffer is clever and beautiful, to name just one thing out of many. And, as janky as elisp is, it's one of the few extension languages that's actually good at its job, and the Emacs elisp API allows you complete freedom over virtually every aspect of the editor. Unironically, Emacs is not a text editor - it's a toolkit for creating text-oriented applications.
Forth, Lisp (Scheme, in particular - I love CL but it's the C++ of Lisps), and Lua - three languages that take a small set of elegant primitives and synthesize them to give you incredible power.
Remember the Milk is a task-tracking SaaS that is one of the few pieces of software that I actually like, which is especially impressive given that it's proprietary. Cheap, fast, effective, and with a UI design that continually impresses me with its mix of intuitiveness and ergonomics.
Emacs is quite popular and has some of the most skilled programmers I know using it. I'm really surprised that there hasn't been a neovim-equivalent project for emacs. Or maybe it's out there and I just don't know about it?
> it's a toolkit for creating text-oriented applications
Good examples IMO are Magit and Org-mode. They are basically large applications created in Emacs, and each so good that they are worth learning/using Emacs just for using them (I'd say AucTeX is also in this category).
Writing Scheme (Guile Scheme on Guix) has been the only time I've actually felt a "eureka moment" and feeling like I understood fully what my code was doing.
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.
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.
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!
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.
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.
As someone who very much enjoys tinkering with Linux and such, but also likes trying to onboard other people who aren't as techy, Syncthing is such a killer example. It's almost depressing because I want other free and open source stuff to be this good, though I know the economics (and proprietary interference, perhaps?) make that tough.
I use syncthing and appreciate that it exists. It's way too easy to accidentally all your data, though!
I've been dragging my feet migrating a hard drive from my old desktop to my new one for 1.5 years. This past weekend I finally got motivated to power the old one up and wait for syncthing to give positive indication that it's in sync with my server. The reason that was even a concern of mine is that the last time I used that desktop, I spent a whole weekend cleaning up about 200 GB of renamed and duplicated "sync conflict" files that syncthing created and then synced to my server when I previously migrated hard drives. I wasn't sure if all the fixes had made it to the server yet. That required writing my own tooling to positively confirm every duplicate was bitwise identical before deleting one or the other.
The official documentation suggests I remove syncthing's metadata from the drive and then add it again on the new computer, and let it re-sync. It's a good way to check for bit-rot I guess. At least the documentation these days suggests marking one instance as read-only.
I've managed to delete a folder with GBs of important data because Syncthing has non-obvious ways of handling data. Thankfully, I have tons of backups of everything, so it wasn't a big deal, but since then I've been extremely paranoid when using Syncthing to make sure it doesn't happen again.
I'm really surprised by that. I feel like Syncthing would really benefit from a simplified user interface for its core use case, which I imagine is "sync one folder across multiple machines". It's really nice that they have all these additional features and detailed information on the default dashboard, but it can be really confusing if you cannot form a mental model of what the software does.
i feel it's a great example of software that doesn't get in your way.
I would've love to write about how awesome it is but came across this wonderful essay regarding the same titled _"Computers as I used to love them"_ [0]. Highly checking it out.
The last time I used syncthing to sync files from my android phones to my Linux server, it always somehow got stuck and never recovered. The phone app would stop running in the background and I would forget to rerun it and if it was started a long time later it would get stuck and would not recover automatically. Eventually, just stopped using it. Now I use Google photos and it works great to backup my family's phones' photos.
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.
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.
I'm going to say vim, and I expect to get yelled at by folk who don't use vim, but here's why I call it elegant software:
Vim's entire command model is based on the simple composition of motion and action.
Until you understand this you will never 'get' vim. You may be able to use it, even efficiently, but you will never understand how these two simple concepts when fully understood are a force-multiplier.
Motion indicates a range, of characters or lines, there are motion keys that will get you: to EOL, to EOF, to next matching char, to braces, to function / class blocks, to predefined marks.
An action is something that applies to that range, these can be anything from auto-formatting, changing case, calling out to another process, anything you can imagine.
When you understand this suddenly g=GG, ct(, y$ become: reformat document, cut to next paren and copy till EOL respectively. Does that sound horribly esoteric? that's only because you don't yet understand vim motion composition.
I'm happy to argue that if anyone fully understands this concept they cannot help but agree that vim is at it's heart seriously elegantly designed software.
I just recently had an opportunity to flex my "wizard muscles" in a case where we had to feed a test consisting of about a hundred similar messages with minimal differences (numbers) to a system in order to reproduce an issue.
"Can't we try to reproduce this?"
"Maybe, but we'd need a lot of messages in order to reproduce this."
"And...?"
"That's tedious."
"Watch me" *grinning*
A couple of edits and a `100@q` later, we were ready to go.
It's almost like Git + Gitea, all in a single application. Code + tickets + wiki + notes all version controlled and capable of hosting the server itself. Also, the repo is just a SQLite database, so backup is easy.
Their devblogs are really nicely written and you can tell they are extremely passionate about getting things right. In my experience that's a rarity now.
And of course, it's a brilliantly addictive game.
It's also an incredibly cool, interesting game design. If you like Factorio + Tower Defense you should check it out.
I'm not sure that, on the whole, robust and performant software can be put together by teams much larger than that.
I'd prefer a factorio over almost another UI.
I'm imagining a port of factorio's UI into most strategy games would be very nice, both from a VERY zoomable map, a clear research/progression tree. A few improvements could be made IMHO, but it's lighyears better than TF, CS, the Chris Sawyer set, etc.
Like Factorio it's incredible and makes me wonder wtf I was doing chaining together bullshit service APIs in my day job.
[1] https://store.steampowered.com/app/255710/Cities_Skylines/
I was bothered by this problem so I solved it for my own city builder game, Archapolis (still very early development):
https://www.youtube.com/watch?v=7q0l87hwmkI
I can path 200,000 to 300,000+ units simultaneously to random destinations, with a bonus of utilizing all shortest paths between two points.
The paths are all cached for constant time path finding, but I figured out how to do so efficiently (both building and storing tree/graph)
I wrote a non-technical article here:
https://www.yesboxstudios.com/2022/04/27/all-nck-shortest-pa...
https://www.factorio.com/blog/post/fff-176
It's still leagues ahead of any other game I've played though.
Forth, Lisp (Scheme, in particular - I love CL but it's the C++ of Lisps), and Lua - three languages that take a small set of elegant primitives and synthesize them to give you incredible power.
Remember the Milk is a task-tracking SaaS that is one of the few pieces of software that I actually like, which is especially impressive given that it's proprietary. Cheap, fast, effective, and with a UI design that continually impresses me with its mix of intuitiveness and ergonomics.
[0] https://www.gnu.org/savannah-checkouts/gnu/emacs/news/NEWS.2...
[1] https://www.masteringemacs.org/article/speed-up-emacs-libjan...
Good examples IMO are Magit and Org-mode. They are basically large applications created in Emacs, and each so good that they are worth learning/using Emacs just for using them (I'd say AucTeX is also in this category).
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.
It still is. (And Blazor is pretty cool, too.)
https://github.com/magiblot/tvision
Deleted Comment
As someone who very much enjoys tinkering with Linux and such, but also likes trying to onboard other people who aren't as techy, Syncthing is such a killer example. It's almost depressing because I want other free and open source stuff to be this good, though I know the economics (and proprietary interference, perhaps?) make that tough.
I've been dragging my feet migrating a hard drive from my old desktop to my new one for 1.5 years. This past weekend I finally got motivated to power the old one up and wait for syncthing to give positive indication that it's in sync with my server. The reason that was even a concern of mine is that the last time I used that desktop, I spent a whole weekend cleaning up about 200 GB of renamed and duplicated "sync conflict" files that syncthing created and then synced to my server when I previously migrated hard drives. I wasn't sure if all the fixes had made it to the server yet. That required writing my own tooling to positively confirm every duplicate was bitwise identical before deleting one or the other.
The official documentation suggests I remove syncthing's metadata from the drive and then add it again on the new computer, and let it re-sync. It's a good way to check for bit-rot I guess. At least the documentation these days suggests marking one instance as read-only.
I would've love to write about how awesome it is but came across this wonderful essay regarding the same titled _"Computers as I used to love them"_ [0]. Highly checking it out.
[0] : https://tonsky.me/blog/syncthing/
Vim's entire command model is based on the simple composition of motion and action.
Until you understand this you will never 'get' vim. You may be able to use it, even efficiently, but you will never understand how these two simple concepts when fully understood are a force-multiplier.
Motion indicates a range, of characters or lines, there are motion keys that will get you: to EOL, to EOF, to next matching char, to braces, to function / class blocks, to predefined marks.
An action is something that applies to that range, these can be anything from auto-formatting, changing case, calling out to another process, anything you can imagine.
When you understand this suddenly g=GG, ct(, y$ become: reformat document, cut to next paren and copy till EOL respectively. Does that sound horribly esoteric? that's only because you don't yet understand vim motion composition.
I'm happy to argue that if anyone fully understands this concept they cannot help but agree that vim is at it's heart seriously elegantly designed software.
I just recently had an opportunity to flex my "wizard muscles" in a case where we had to feed a test consisting of about a hundred similar messages with minimal differences (numbers) to a system in order to reproduce an issue.
A couple of edits and a `100@q` later, we were ready to go.It's almost like Git + Gitea, all in a single application. Code + tickets + wiki + notes all version controlled and capable of hosting the server itself. Also, the repo is just a SQLite database, so backup is easy.