[HN Gopher] Ask HN: What are your favorite examples of elegant s...
___________________________________________________________________
Ask HN: What are your favorite examples of elegant software?
design or otherwise
Author : joshbochu
Score : 154 points
Date : 2022-05-02 02:47 UTC (20 hours ago)
| bennysomething wrote:
| You might like the book "beautiful code"
| Sohcahtoa82 wrote:
| 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.
| sedeki wrote:
| 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!
| Sohcahtoa82 wrote:
| 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.
| daveloyall wrote:
| 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..)
| layer8 wrote:
| You can still get it from https://win7games.com/#calc
| (via WinAero).
| jasfi wrote:
| Nim. It's just so quick and easy to write high performance code.
| That's why I'm writing a web framework for it, soon to be
| released: https://github.com/jfilby/nexus
| whoibrar wrote:
| Standard Notes.
|
| Simple. Free. Open Source. E2E encryption. Basically, No frills.
|
| Their idea is to make software not with most features but the one
| that stays until the next century.
|
| They have a great blog on this philosophy.
| https://standardnotes.com/longevity
| HermanMartinus wrote:
| Bear Blog is simple to use, understand, with no frills or client-
| side JS. https://bearblog.dev
| layer8 wrote:
| Self promotion is off-putting in a thread like this.
| nathias wrote:
| vim
| throw10920 wrote:
| 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.
| type0 wrote:
| BEAM (Erlang VM)
| jdauriemma wrote:
| I don't see Airtable here yet. That team managed to make
| relational databases user-friendly to a consumer market without
| compromising the core features a power user might expect. Hats
| off to them!
| Mister_Snuggles wrote:
| Monument Valley and Monument Valley 2[0].
|
| They're games, and relatively short/easy, but it's beautiful and
| elegant.
|
| [0] https://www.monumentvalleygame.com/mv2
| eps wrote:
| That's cheating ;)
|
| There is a metric ton of elegant games. It's the elegant
| mundane software that is much more rare and therefore
| interesting.
| dustractor wrote:
| Projects developed under a BDFL: blender (ton) vim (bram) and
| python (guido)
| _virtu wrote:
| Ecto the database driver for Phoenix is probably the most amazing
| piece of software I've used. Elegant dx, performant and just
| enough of an abstraction on SQL.
|
| [1]: https://github.com/elixir-ecto/ecto
| pphysch wrote:
| AWK
|
| Match this, do that.
| bajsejohannes wrote:
| 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.
| joshbochu wrote:
| Any implementation detail you could please share?
| phoehne wrote:
| After 50 years it doesn't seem like it, but C has managed to
| survive this long because it's a solid all-round player from the
| bare metal to web servers. It's simple enough that you could
| probably implement a fairly capable C compiler in assembler.
| tenebrisalietum wrote:
| C has managed to survive this long because of:
|
| - Unix and its inertia
|
| - Licensing of Unix allowing it to proliferate to the masses
| and being used for education
|
| - because it is simple enough that a compiler can be quickly
| brought up for any new ISA that appears, as long as it looks
| enough like a 70's-80's CPU architecture enough for pointers to
| work.
|
| Elegant? No.
|
| - Making pointers and arrays synonymous is elegant only from
| the CPU's perspective.
|
| - The pointer syntax sucks.
|
| - Casting does weird stuff sometimes.
|
| - Bool - how hard is it to get true and false right?
|
| - Everything being an operator leads to the confusion between
| assignment and equality which is inelegant. It was cute in the
| 70's when you had limited disk space but sucks now.
|
| - `void *` being used for function pointers is not elegant.
|
| - Threads and any notion of multiple CPUs doesn't work well
| without a lot of libraries or help.
|
| - An elegant language would have not cared about the underlying
| CPU memory model, but C had to be enhanced for 16-bit x86
| segmented memory models.
|
| - If you are using intrinsics or whatever to generate assembly
| opcodes (e.g. vector instructions) because your language
| doesn't support them, you are surpassing the limitation of your
| language in an inelegant way.
|
| - An elegant language makes things like the IOCCC impossible.
| Comevius wrote:
| Those damn C preprocessor macros. You have to become a
| compiler to understand C code. The elegant metaprogramming
| approach is what Zig does with comptime.
| t-3 wrote:
| > - Bool - how hard is it to get true and false right?
|
| I think this is actually much more complicated than it seems
| at first thought. There are a lot of different ways to
| represent booleans, each with their own advantages, and then
| the hardware has it's own ideas that might need to be
| considered. I'm not sure that there's any way to do bool that
| doesn't lead to pain somewhere.
| ducktective wrote:
| fzf, dmenu, dunst, curl, jq, pup
| JFKKFJ wrote:
| MrScruff wrote:
| Sidefx Houdini
| jjice wrote:
| I guess my definition of elegant would be software that has
| fantastic UX and just works and works so well it boggles my mind
| how well it works. I'd also extended that to include a
| foundational core that all other parts can be built off of. In
| that case, I'd go with vim. I'm not even a huge Vim guy (use it
| for notes and remote stuff, but not my primary editor), but the
| concepts are simple and oh so powerful. It's just building blocks
| on top of text editing.
|
| Pipes in Unix as a concept are also a great abstraction. A bit
| dated, but still every powerful today.
|
| Files in Unix as well. Some people have gripes which are fair,
| but the idea that a device, a file, and a socket are all accessed
| via the same API is fantastic. Of course there are issues, but
| it's generally worked really well for me.
| f0000 wrote:
| Vega-Lite and Altair
|
| https://vega.github.io/vega-lite/ https://altair-viz.github.io/
| spacechild1 wrote:
| Lua
| abcd_f wrote:
| Inheritance through table extensions is truly an elegance in
| the eye of beholder :-)
| orhunp_ wrote:
| `pass`, no cap.
|
| passwordstore.org
| kretaceous wrote:
| Vary random but these are stuff which impressed me on first try
| and never let me down:
|
| Kitty, the terminal emulator by Kovid Goyal
|
| wouter, a minimal JS routing library
|
| espanso, a text expansion program
|
| KDE Connect
|
| Tailscale
|
| The last 2 together
|
| curl
| ohiovr wrote:
| curl and wget are fantastic!
| throwaquestion5 wrote:
| > Kitty
|
| Could you elaborate on what do you feel is better or makes you
| more comfortable using kitty against any other random terminal?
|
| I also vouch for KDE Connect. Painless to use after installing.
| Very convinient for file transfer
| petepete wrote:
| I love Kitty because it does the things I think are important
| really well..
|
| It's well-maintained, extremely fast, always responsive, easy
| to configure, supports ligatures and IBus.
| dragontamer wrote:
| Stockfish -- https://github.com/official-stockfish/Stockfish
|
| Some of the best C++ code written. Extremely clear and concise.
| Chess-AI is a bit complicated but the source-code + comments
| seems to inform the programmer where all the problems are.
| caraboga wrote:
| NetBSD and OpenWRT. These platforms build across archs relatively
| easily and their configuration interfaces are pretty transparent.
| spacemanmatt wrote:
| PostgreSQL
| chrisweekly wrote:
| https://every-layout.dev - not just the ideas it conveys, but the
| site per se too.
| throwawayboise wrote:
| Diagram!, by Lighthouse Design, for NEXTSTEP. A drawing tool that
| featured "smart links." I believe it pre-dated Visio. Later
| cloned as OmniGraffle by OmniGroup.
| archielc wrote:
| Norton Commander -
| https://en.wikipedia.org/wiki/Norton_Commander. Not sure how
| elegant on the inside, but it comes from the era when software
| development was not so fast paced. And the fact that it inspired
| so many spin-offs (just to mention few that I personally used:
| Volkov Commander, Midnight Commander, FAR Manager, and my
| favourite - DOS Navigator (it had spreadsheet!)).
| Gualdrapo wrote:
| Regarding code elegance, OpenBSD[0] surely pride themselves in
| their code correctness and how they make it clean and
| understandable.
|
| Another example might be my favorite text editor, vis[1].
|
| [0] https://www.openbsd.org/ [1] https://github.com/martanne/vis
| PascLeRasc wrote:
| Spotlight. Everything about it is really well-thought out. I use
| it dozens of times every day to convert units or hold strings or
| check the weather.
| 2143 wrote:
| Taskwarrior.
| enriquto wrote:
| gnuplot
|
| Being able to just plot sin(x) blew my mind.
|
| More seriously: cholmod
| nderjung wrote:
| We put a lot of effort and consideration into the architecture of
| Unikraft[0][1], its elegance towards modularity and abstraction
| is the reason why I joined the team to help develop it. :)
|
| [0]: https://unikraft.org/
|
| [1]: https://github.com/unikraft/unikraft
| phkahler wrote:
| Solvespace (CAD)
|
| https://solvespace.com/index.pl
|
| A single executable of about 6MB with pretty significant
| capability.
|
| The source code is pretty clean as well.
| otikik wrote:
| Creating a GUI Interface in Visual Basic to See If I Can Track An
| IP Address
|
| https://www.youtube.com/watch?v=hkDD03yeLnU
| saikatsg wrote:
| Sublime Text
| rubyist5eva wrote:
| Boop.app for mac, also both Sublime Text and Sublime Merge.
| biorach wrote:
| Peter Norvig's 27 line spell checker
|
| https://norvig.com/spell-correct.html
| maxmcd wrote:
| Peter Norvig's python is so elegant:
| https://github.com/norvig/pytudes#pytudes-index-of-jupyter-i...
| DC-3 wrote:
| This is nice. One interesting choice is the decision to compute
| the number of observed words, N, as the default value of an
| optional argument, thereby ensuring that it is only computed
| once, while still limiting its scope to the function in which
| it is needed. Perhaps this is a common pattern but it's one I
| haven't stumbled across before.
|
| The short circuiting `or` chain is also pleasantly virtuosic.
| Sometimes a little flashiness is tolerable when it works this
| well!
| madjam002 wrote:
| Most recently Tailscale, I enabled it on NixOS and minutes later
| had a secure VPN set up.
| nabaraz wrote:
| Thinkorswim by TDAmeritrade. No one else has figured out how to
| lay out options (greeks, premium), charts etc. in such an
| intuitive manner.
| julianeon wrote:
| thinkorswim, created by thinkorswim and acquired by
| TDAmeritrade.
|
| In case someone is wondering how a staid brokerage came up with
| this incredible technology: the trick is, they didn't.
| JamesSwift wrote:
| Uhhh well I would argue Tastyworks does it even better. But
| that was built by the same team so maybe its cheating?
| Aemorph wrote:
| Ahrefs https://ahrefs.com/ is great seo tool that I use to
| analyze my website's (https://aemorph.com) link profile, ranking,
| and SEO health.
| djmashko2 wrote:
| Things! The todo list app. It's the most elegant app I've ever
| used. feels like it just works, and I can rely on it 100%.
| hulitu wrote:
| Aegis/Domain OS. I would love to work again with such an OS.
| m-p-3 wrote:
| SQLite. It's a damn fine piece of software for small
| applications.
| endgame wrote:
| I've heard people call it "a replacement for `fopen()`".
| Similarly, I like ZeroMQ as a replacement for sockets.
| andrewmcwatters wrote:
| The original QSpy protocol, which then became the GameSpy
| protocol, and later still made way for Valve's Master Server
| protocol.
|
| I'm not sure what other protocols exist today for tracking a list
| of servers, providing information on them, and are as up to date
| as the frequency of the heartbeats from those servers, but I
| suspect there are similar protocols out there, and I'm just not
| familiar with them.
|
| Unfortunately despite how elegant the QSpy protocol is, most
| modern video games no longer provide server browsers as first-
| class features, eschewing them in favor of matchmaking services
| or publisher provided dedicated servers.
| sparker72678 wrote:
| I've always liked how TaskPaper was entirely built around plain
| text files.
|
| https://www.taskpaper.com
| constantinum wrote:
| Vim
|
| Adobe Indesign
|
| Monodraw
|
| GNUcash
|
| Django
|
| Beeminder
| hatware wrote:
| Frigate NVR: https://frigate.video/
|
| Incredibly easy to host open source network video recorder with
| object tracking and hardware acceleration support. You have to
| install hardware and know what you're doing to hook things up,
| but bespoke systems that do these things cost tens of thousands
| for hardware/licensing alone and don't do them half as well.
| j-pb wrote:
| JonesFORTH
|
| Although one might argue it to be a case of really elegant
| documentation and literate programming.
| spindle wrote:
| NixOS (although yes it could be even more elegant than it is)
| jansc wrote:
| RabbitMQ. It just works.
| nope96 wrote:
| https://tetr.io/
|
| even on an ancient laptop, it runs smoothly. I had no idea a
| javascript game could look/play this good. I've spent 100 hours
| on it since I first saw it posted here on HN
| ohiovr wrote:
| FFMPEG is an excellent piece of software. I used it last weekend
| to build an automatic video editor / titler and it only took
| about 10 hours to make it work. I was going to use moviepy but
| the rendering time was extreme and the memory consumption was
| horrible. My 300 line python script with imagemagick and FFMPEG
| produced a 30 minute long video in under 5 minutes.
| cnees wrote:
| MindNode is a beautiful way to lay out your thoughts, and the
| graphs can be copied as bulleted lists. Alfred is an application
| launcher that also lets me enter shortcuts to quickly launch
| pages like my calendar and each of my team members' open PRs. I
| use it dozens, if not hundreds, of times a day. With the premium
| version, you also get a great clipboard manager.
| phonon wrote:
| Mathematica
| Stampo00 wrote:
| Graphviz.
|
| Non-trivial graphs will make it produce hard-to-read output, and
| you can try fiddling with it forever to get better output. But
| it's still the first thing I reach for when I have to make a
| graph.
| uuyi wrote:
| So much this. Also I use this tool to sketch out graphs
| quickly:
|
| https://dreampuf.github.io/GraphvizOnline/
| blenderdt wrote:
| Blender.
|
| It's architecture, the window manager/system, the UI, how it is
| built by and for the users, how the API is integrated and how
| fast it is compared to other software.
| rwxrwxrwx wrote:
| The Apache HTTP Server and the GNU Scientific Library come to
| mind.
| dhash wrote:
| - 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
| m-p-3 wrote:
| > NXT-G
|
| On a similar tangent, NodeRED is also an interesting software
| to build workflow-based automation visually.
| spacemanmatt wrote:
| A couple of my favorite programmable products from the MSDOS
| years:
|
| Telix
|
| QEdit
| superasn wrote:
| I'd say Linux Mint. It combines everything that's good about
| Ubuntu while removing things like snap. Also the design is so
| much better but I feel that's a personal choice. But everything
| in linux just works so well now.
|
| I run 4 monitors on 2560 resolution on two separate amd cards and
| everything runs flawlessly. I have all the software for free and
| most OSS is just as good if not better for my work (except games
| and Photoshop but photopea is a good alternative for that, and it
| can be easily my second nomination for this thread).
|
| I know linux has evolved a lot and it's the effort of millions of
| volunteers which has made Linux what it is today, but for me
| personally Linux Mint really combines all the great things about
| linux into an amazingly elegant software.
| dcminter wrote:
| Hmm. I was kicking the wheels on cinnamon the other day - but
| because it's not on Wayland it won't do mixed resolution
| displays out of the box, so it's not really viable for me.
|
| A pity, as I dislike snaps and the generally dumbed down
| direction of recent Gnome, so it would otherwise have been a
| good fit for me. For now I'm (still) on Ubuntu though.
| wrnr wrote:
| https://github.com/enkimute/ganja.js/
|
| Geometric algebra for any R{p,q,r} dimensional space. Has it own
| custom JS to JS transpiler so the literal number "1e10" becomes a
| bivector. The code is just around a thousand lines while it lets
| you do amazing things like this right in the browser:
|
| https://enkimute.github.io/ganja.js/examples/coffeeshop.html...
| c7DJTLrn wrote:
| 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.
|
| And of course, it's a brilliantly addictive game.
| Aardwolf wrote:
| 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
| :)
| AnIdiotOnTheNet wrote:
| > I'm still utterly stunned how a relatively small, humble team
| of developers can build something so robust and performant.
|
| I'm not sure that, on the whole, robust and performant software
| can be put together by teams much larger than that.
| joshbochu wrote:
| great example!
| ThunderSizzle wrote:
| 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.
| kjeetgill wrote:
| 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.
| ramesh31 wrote:
| 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.
| ibejoeb wrote:
| If they're made of software, they count
| mym1990 wrote:
| Stardew Valley! I always marveled at how it was a one man team,
| and everything from the graphics to the game systems seemed to
| work well. I haven't seen the code base or anything, so I am not
| sure if this is 'elegant', but my assumption is that for one
| person to put out that kind of work, some things have to be going
| right in the design.
| eimrine wrote:
| LISP 1.5
| Stampo00 wrote:
| TiddlerWiki.
|
| It's not everyone's cup of tea, but given the limitations it has
| decided to work within, it really is a wonder.
| nikivi wrote:
| Linear is nice. https://linear.app
| ktusznio wrote:
| Yup. I find Linear a pleasure to use after years of JIRA.
| yewenjie wrote:
| https://lichess.org
| bytematic wrote:
| Yes! Didn't think I would see it, lichess has made some
| incredible architectural decisions. And also really brilliant,
| consistent philosophy.
| kettunen wrote:
| The original MapReduce implementation by Jeff Dean and friends is
| probably up there for me. Couple of hundred lines of code doing
| bunch of task distribution on a very large scale is just very
| impressive.
|
| Of course the current/latest version of it has took a life of its
| own in size and complexity (but of course with performance and
| reliability too) but the initial version still shines through!
| [deleted]
| ur-whale wrote:
| blender (the finished product, can't comment on the code itself).
| ibejoeb wrote:
| Elegant construction and elegant use can be disjoint. For
| construction, Beautiful Code is a good read on a bunch of real
| specimens.
|
| https://www.oreilly.com/library/view/beautiful-code/97805965...
| lukasb wrote:
| Notational Velocity
|
| Very simple, instant search, and having the same UI for searching
| and creating notes is genius - way fewer duplicated notes, for
| one thing.
| smokeyfish wrote:
| Git, grep, sed, awk; many Unix utils
| pyjarrett wrote:
| Fossil SCM (https://fossil-scm.org/home/doc/trunk/www/index.wiki)
|
| 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.
| d08ble wrote:
| Scanwatch - Fast and simple file watcher for Node
|
| https://www.npmjs.com/package/scanwatch
| tigerlily wrote:
| SolidWorks
|
| Altium
|
| Comsol
|
| Proprietary yes, but I've used all three over the last few years
| and found them each to be very streamlined, productive, and
| elegant after a fashion.
| vt240 wrote:
| The modern Comsol GUI is truly phenomenal, especially
| considering where it was at with the 3.x versions. It's one of
| the rare cases, pretty much the only one I can think of in
| CAD/CAM, where the effort put into a radical GUI redesign
| really paid off significantly and immediately.
| contingencies wrote:
| IMHO SolidWorks is terrible. Single core performance
| limitation, huge disk IO, no out of box support for STEP GD&T
| export, ridiculous drawing-oriented BOM export UX, half-measure
| built-in RCS/VCS system, collision-prone namespace, etc.
| hadrien01 wrote:
| The Fork Git client is pretty much perfect (and native) on Mac
| and Windows
| RubberMullet wrote:
| Softimage, this is was the first 3D software that I really
| learned and the UI/UX was way ahead of its time.
|
| Macromedia Director, it was amazing how quickly you could create
| an interactive standalone app or CD-ROM.
| ohiovr wrote:
| Lingo was a lot of fun!
| pipeline_peak wrote:
| SpiderMonkey, while it isn't the best performing, its code is
| pretty straightforward. It also seems to be embeddable on its
| own, unlike V8.
| saurik wrote:
| In what way do you feel V8 is not "embeddable on its own"?
| pipeline_peak wrote:
| Wasn't Node basically created to make V8 embedding feasible?
|
| Just by looking at the answer in this example, the idea of
| isolates seems pretty complicated
| https://stackoverflow.com/questions/67041878/how-do-i-
| embed-...
| saurik wrote:
| That definitely isn't why Node was created... Node is a
| standalone programming environment that embeds V8, it
| doesn't somehow help you embed V8 in one of your projects
| or make that "feasible". In fact, one of the issues with
| Node for a long time was that every Node plug-in was
| expected to directly use the embedding API from V8--in no
| small part as it is actually a pretty easy-to-use API--and
| that made the entire ecosystem lock-step on V8 API changes
| (which got tied to major Node versions).
|
| Much later, Node added two little abstraction layer over
| V8's APIs: one that is mostly done in some header files (to
| deal with the occasional backwards compatibility issue) and
| another which actually wraps V8; and, even then, AFAIK the
| latter was mostly done to allow entirely replacing V8 with
| ChakraCore. But neither of these abstractions are designed
| to be used by others outside of Node's cosebase (something
| I almost sort of got working once, but not really): they
| don't help you embed V8... V8 is already easy to embed.
|
| Notably: V8's embedding API isn't particularly more
| complicated than the API of any other engine: it is simply
| more templated. If you sit around with SpiderMonkey,
| JavaScriptCore, or even DukTape, you will find yourself
| allocating machines, managing handles, converting strings,
| and checking types of values. This is of course going to be
| verbose, in the same way that using JNI to call into Java
| is verbose, or generally accessing any embedded VM from a
| language like C/C++ is verbose (and for all the same
| reasons).
| pddpro wrote:
| I'm not sure if this has come before but for me it'd be ffmpeg.
| The things it can do!
| leobg wrote:
| 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.
| Veen wrote:
| 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.
| leobg wrote:
| Exactly!
| anthk wrote:
| - TCL/TK
|
| - CWM
|
| - Music On Console
|
| - Sfeed+sfeed_curses+xargs+wget+MOC
|
| - Entr
|
| - Mit-Scheme + Edwin + SICP. It doubles as an IMAP client. Use
| Stunnel for TLS.
|
| - UDFClient
|
| - NNCP
|
| - S-Nail. It can be easier than Mutt.
| bradwood wrote:
| Scrivener: https://www.literatureandlatte.com/scrivener/overview
| rkagerer wrote:
| Open Hardware Monitor (OHM)
|
| It's written in C# and the design seemed clean and approachable
| (at least a few years back when I tailored it a bit for my own
| use).
|
| https://openhardwaremonitor.org/downloads/
|
| https://github.com/openhardwaremonitor
| GiovanniP wrote:
| TeXmacs (www.texmacs.org), which is a finely crafted document
| preparation system realizing at the same time both the structured
| and the WYSIWYG paradigms. It is vastly superior to all other
| document preparation systems. In particular it is superior to
| both TeX (in all its variants) and to Word, under all respects:
| conceptually, in the power that it affords in manipulating
| documents, in the ease with which it makes it possible to write,
| concentrating only on the content and yet having one's document
| in front of one's eyes.
| anthk wrote:
| Also TeXmacs can work with Maxima _inside_ your document.
| iwebdevfromhome wrote:
| The things app https://culturedcode.com/things/ , even though
| it's just an elegant TODO app something drove me to buy the
| iPhone and Mac versions.
|
| Some time ago I spent a good amount of time looking for a
| development stack that allowed me to just build stuff. I ended up
| trying and deciding on Laravel Jetstream with InertiaJS
| https://jetstream.laravel.com/2.x/stacks/inertia.html. Laravel
| was easy enough already to just pick and do things, now this
| solves the backend+frontend projects for me by allowing me to
| just put vuejs components on top of my laravel app and jetbrains
| already comes with Auth stuff setup solved.
| dvh wrote:
| meld
| daveloyall wrote:
| I've found myself using winmerge instead of meld, when I'm on a
| platform that supports it...
| hnxs wrote:
| xcode
|
| haha just kidding!
| heavyset_go wrote:
| WireGuard
| aborsy wrote:
| It's this!
| ur-whale wrote:
| Yeah, it's definitely up there: it's one of these solutions,
| when you see it, you wonder how everyone could get it so wrong
| before it came around.
| hnarayanan wrote:
| Things, a todo system for macOS and iOS.
| leobg wrote:
| Alfred (Mac launcher)
| lycopodiopsida wrote:
| And LaunchBar - also a mac launcher!
| smm11 wrote:
| Circus Ponies Notebook (On OpenStep, then OS X), made my jaw
| literally hit the floor when I first saw it. I didn't just think
| all software had something to learn here, I thought this was the
| only software anyone would ever need.
|
| To be fair, my job lend itself toward this at the time, the WWW
| was nowhere near what it was a few years later, and everything-
| tied-to-everything was miles away. But this blew my mind.
| nicbou wrote:
| 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.
| reyostallenberg wrote:
| Maybe https://syncthing.net/ ?
| flanking_pajama wrote:
| 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.
| protomyth wrote:
| The Visio that came on the sampler floppy. It was small and did
| an amazing job.
|
| PFE back in the day. Simple macros and templates that made life
| much easier in a small package. Some editors today don't even
| bother with macros or have all of PFE's options.
| ibiza wrote:
| 4.3BSD Unix. Arguably, the first modern operating system.
|
| https://en.wikipedia.org/wiki/History_of_the_Berkeley_Softwa...
| anthk wrote:
| Check Multics and the kinda-opposite, ITS.
| hulitu wrote:
| Saying 4.3BSD Unix is like saying SVR4 Unix. Which
| implementation ? As far as i know SunOS (4.1x) was a 4.3BSD
| implementation and Solaris was a SVR4 implementation.
| teddyh wrote:
| IIRC, NeXTSTEP was also based on 4.3BSD.
| 1vuio0pswjnm7 wrote:
| tmux
| [deleted]
| pcurve wrote:
| Always impressed with Palantir's software.
| leobg wrote:
| 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?
| hulitu wrote:
| "Any links where those parts can be seen in action?"
|
| No, but when they arrest you, you see the effect :)
| pcurve wrote:
| 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.
| px1999 wrote:
| https://vimeo.com/488141017 there's a Gotham demo at around
| 43 minutes (which is probably the most interesting looking
| product they have)
| throwaway_dcnt wrote:
| https://vertx.io and https://lmax-exchange.github.io/disruptor/
| modinfo wrote:
| Websites: HN, sourcehut. Tech: Prisma. App: Postico.
| crispisulcans wrote:
| A very short example: The PNPOLY algorithm
| https://wrf.ecse.rpi.edu/Research/Short_Notes/pnpoly.html
| emschwartz wrote:
| The Tokio async stack for Rust (https://tokio.rs).
|
| They did a really nice job of building thin layers up the stack
| from byte buffers (bytes), to async-friendly logging (tracing),
| basic IO (mio), async runtime (tokio), generic request/response
| services (tower), HTTP (hyper), and a web framework (axum).
|
| Each of the layers are useful independent of the other layers
| above, and every one is has a thoughtfully designed, pragmatic
| interface.
| swah wrote:
| I believe I read that Tokio was a "hacky" way to add async to
| Rust - similar to the solution in the Python space... - is this
| not the case?
| krageon wrote:
| It could be an elegant, hacky solution :)
| emschwartz wrote:
| I think this argument refers more to Rust not having built-in
| support for async from the language's v1.0 rather than the
| design of the Tokio stack. That has definitely led to
| unfortunate incompatibilities between libraries built for the
| different runtimes. However, the Rust language team took a
| super methodical approach to async support and the way that
| more async-related traits are slowly being standardized
| (first Futures and hopefully Stream, AsyncRead / AsyncWrite
| at some point in the not too distant future) seems like a
| long-term-great way of building into the language the
| abstractions everyone can get behind while leaving room for
| experimentation. I'm sure others would have different takes
| but I'm a fan.
| sodality2 wrote:
| Personally I love being able to experiment on the bleeding
| edge but waiting for a stable implementation, even if it
| takes 3 years to reach discussion on the RFC's. There are
| crates if you need it today, which operate on best-
| practice, but for an official solution I accept that it may
| take time for it to achieve acceptable standard library
| inclusion.
| sodality2 wrote:
| It's not standard library, which makes some believe it is of
| lesser quality (not fit for stl?). Tokio works splendidly and
| I don't think it's a common belief that it's hacky. That
| being said, language-wide, async is a bit less focused upon
| (not in stl, trait fns cannot be async, etc) but otherwise
| the integration is very good.
| spogbiper wrote:
| Microware OS-9. A Unix-like (..sort of) operating system that
| supported multitasking, multiuser operation on an 8 bit CPU with
| 64kb or less of memory back in 1979.. two years before IBM bought
| a CPM clone and called it DOS.
| annowiki wrote:
| Scikit-Learn's api is masterfully consistent. We've taken to
| using it as a source of inspiration for our own code.
| sidcool wrote:
| Unpopular opinion but Microsoft Excel. It's a powerhouse of
| features.
| hulitu wrote:
| And antifeatures. Some people do not work with dates.
| tinus_hn wrote:
| Perhaps the elegance is more in the concept of the spreadsheet
| and less in the Excel implementation of the concept.
| throwawayboise wrote:
| 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.
| pjc50 wrote:
| So elegant that genes have had to be renamed to stop Excel
| mutilating them.
| jcparkyn wrote:
| 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/
| Closi wrote:
| 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.
| anthk wrote:
| Excel crapped out bioinformatics. It's a turd. Period.
| boplicity wrote:
| 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.
| throwawayboise wrote:
| 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).
| spacemanmatt wrote:
| 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.
| Mathiciann wrote:
| What definition of elegant are you using?
| jrm4 wrote:
| Syncthing, by a mile.
|
| 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.
| onehair wrote:
| Syncthing is great software. But it is also great at confusing
| new users
| mnkmnk wrote:
| 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.
| dividuum wrote:
| 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.
| sgtnoodle wrote:
| 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.
| Sakos wrote:
| 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.
| syntheweave wrote:
| I do all my work with Syncthing in send-only folders, one
| per machine. Which means that if I make changes across
| machines then I always get duplicates, but the redundancy
| feels natural - it's only concerning if the data size
| becomes absolutely huge.
| jbverschoor wrote:
| Syncing is anything but elegant
| jrm4 wrote:
| On one hand I haven't found it all that easy, but on the
| other, I think the principle of "sync is not backup" holds
| pretty well.
| whoibrar wrote:
| 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.
|
| [0] : https://tonsky.me/blog/syncthing/
| AlanYx wrote:
| emacs, both for the elegance of its elisp-machine design and for
| how good its self-documentation is.
| drunner wrote:
| I can't speak to the quality of the code base (I don't know go),
| but as a user caddyserver is pretty great.
| reiblast wrote:
| I have created my blog almost a decade ago,
| https://reiblast.blogspot.com/ I'd like to know any new blogging
| site that is better than google?
| pixelmonkey wrote:
| I'm limiting my choices to open source with good explanatory
| write-ups or presentations.
|
| Graphite for "simple" time series storage:
|
| https://www.aosabook.org/en/graphite.html
|
| HLL datatype (PFCOUNT, PFADD, PFMERGE) in Redis for counting
| unique items in a set:
|
| http://antirez.com/news/75
|
| Data structures and algorithms that make Lucene & Elasticsearch
| fast (video):
|
| https://youtu.be/eQ-rXP-D80U
| gordon_freeman wrote:
| Signal - The elegance here is the "Privacy-first Design". Every
| feature and code for Signal messenger is designed on collecting
| as little (or no) data as possible and it is an essential tool
| for folks like me who are tired of having tracking and ads
| nonsense in their most-used apps.
| joshbochu wrote:
| yes!
| xupybd wrote:
| 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.
| Xenoamorphous wrote:
| VS Code
| paulgb wrote:
| I've been pleased by NATS (https://nats.io/). I like how it
| builds its functionality on layers of abstractions, from the most
| basic (pub/sub), to request/response on top of that, to key/value
| and persistent streams on top of that. The CLI is simple to use
| and you can learn it in an afternoon, but it's robust enough to
| deploy.
| dusted wrote:
| Are unix pipes a software? If so, then that.
| mikewarot wrote:
| 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.
| munificent wrote:
| 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.
| gwbas1c wrote:
| > C# was a beautiful language
|
| It still is. (And Blazor is pretty cool, too.)
| munificent wrote:
| Yes, definitely! I put it in the past tense only because I
| don't use it these days.
| spacemanmatt wrote:
| 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!
| archielc wrote:
| 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.
| rlf_dev wrote:
| It's been an absolute joy toying with TV after all this years
| for some TUI side-projects.
|
| https://github.com/magiblot/tvision
| legalcorrection wrote:
| I never used those older environments, but I've heard that
| Windows Forms + C# captures most of the same magic. Do you
| disagree?
| CodesInChaos wrote:
| WinForms did, it's extremely similar to Delphi's VCL.
| Microsoft's even changing newer UI libraries do not.
| nottorp wrote:
| 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.
| [deleted]
| morelandjs wrote:
| numpy started a science renaissance. fantastic library for what
| it does.
| mburee wrote:
| Basically just LAPACK in Python or is that SymPy!
| anthk wrote:
| Thank LAPACK or BLAS for that.
| jeppester wrote:
| Git is the first example that comes to my mind.
|
| I'm aware that the concept can be difficult to grasp and that the
| cli commands seem weird at first.
|
| Once it clicks however, it's an absolutely fantastic tool. I'm
| still often amazed by what is possible with selective resets,
| diffs, greps, and most impressively interactive rebases. It makes
| a lot of otherwise difficult tasks much easier, and more elegant.
|
| Git is IMO one of the most important pieces of software made in
| the last couple of decades and should be celebrated more for it.
| foofoo4u wrote:
| You might get a kick out of this. Tech Talk by Linus Torvalds
| at Google presenting Git:
| https://www.youtube.com/watch?v=4XpnKHJAok8 . He goes into his
| thought process of the pains with existing version control
| systems and how Git goes to address their shortcomings.
___________________________________________________________________
(page generated 2022-05-02 23:01 UTC)