Ask HN: What are some unpopular technologies you wish people knew more about?

295 points by aredirect ↗ HN
Couple of things I like

- tarantool https://www.tarantool.io/en/

- rebol/red-lang https://www.red-lang.org/

- U++ : https://www.ultimatepp.org/

- lazarus: https://www.lazarus-ide.org/

- fasm: https://flatassembler.net/

416 comments

[ 3.0 ms ] story [ 436 ms ] thread
Not sure if you're looking for things as "trifling" as programming languages, but I do wish more people knew about Nim. It's fast, statically typed, reads more or less like Python, has a great effect system, etc. It's a joy to use. I've been working through writing an interpreter in it: https://youtu.be/48CsjEFzyXQ
I subscribed to your channel, power to you to finish up this series :). I love Nim, I even wrote a book on it! https://xmonader.github.io/nimdays
Thanks! I plan to record many more videos. Had some unplanned construction going on in my house so my recording setup is unavailable for a bit. As soon as it's done in a few weeks, I'll put out more videos.

Your book looks great, will check it out.

Just so you know, the call for speakers for the 2024 Carolina Code Conference (polyglot) will open January 1.

A Nim talk would be a great fit for the event.

> 2024 Carolina Code Conference (polyglot)

Thanks for mentioning this! I work remote in SC and its nice to hear about a nearby convention.

I was using Nim for some of last years Advent of Code problems. I was mostly liking the syntax. Was a bit bother by the standard library have a snake case and camel case reference for each function (if I'm remember that correctly).

At the time nimble also required me to have NPM to install the the Nim package manager, Nimble. This was not ideal, but looking at [the nimble project install docs](https://github.com/nim-lang/nimble#installation) it seems like it is now package with the language.

Might try dusting it off for some AoC puzzles this year :)

(comment deleted)
I believe the whole language is "style insensitive" for variable names. So it's not just a feature of the stdlib.
Are you serious?
Yes. It’s so you can maintain a consistent style in your code base even if your dependencies use different styles. Nim has excellent C/C++ interop and it’s relatively common to interact with C or C++ symbols directly, and being able to do this without needing to adopt the dependency’s style or wrap everything is nice.

In python, for historical reasons the logging module uses camelCase while most other modules use snake_case, so it isn’t really possible to use the logging module and maintain a consistent style. This is a non-issue in Nim.

The downsides of this approach are unfortunately that it makes wrapping certain low-level libraries an absolute pain in the ass (especially anything to do with keyboards). But overall it's a non-issue, tooling recognizes both styles and you don't notice it.
Nim 2.0 changed the default to treating style mismatches as warnings.

E.g. it's something to check but not an error. You can easily set a config to make them an error or ignore them.

Cool, that definitely sounds like a welcome improvement.
I have a handful of Nimble packages. Lovely language, though I haven't done much with it recently. I wish it were easier to sell people on style agnostic syntax.
Nim should be more popular, but it seemed to take some time to get started properly. It's now far more ready for serious use. Python also took some time before it took off, so there's hope.
More power to nim. It just needs better tooling, IDE support.
I hate nim for depriving me of the joy to use tabs instead of spaces. It's just... unreasonable.
Set tabs to 2 spaces in your editor.
Firejail is cool: https://github.com/netblue30/firejail

Linux namespaces/cgroups but lighter than Docker.

I use it when I want to limit the memory of a Python script:

``` maxmem="56" #GB

firejail --noprofile --rlimit-as=${maxmem}000000000 python myscript.py ```

have to say: i really like the idea of `firejail firefox` thanks for sharing that!
How is it better for this use case than just using rlimit?
I'm not sure about this specific use case, but a reason for using cgroupv2 over rlimit is that cgroup allows you to limit the resources of a _group_ of processes, which is handy if, say, your Python script uses the `subprocess` module.
OP, this post would be more impactful if you included a brief description of what the tools do and why you think they should be highlighted.
Same for every comment. You (not you, other commenters) "wish people knew more about X" but can't be bothered to write more than the acronym? Downvote. Explain what it is, why you care enough to comment it in this thread, why anyone else might be interested, link to a page, something, anything.
Just making the links clickable:

Couple of things I like

- tarantool https://www.tarantool.io/en/

- rebol/red-lang https://www.red-lang.org/

- U++ : https://www.ultimatepp.org/

- lazarus: https://www.lazarus-ide.org/

- fasm: https://flatassembler.net/

I've to admit i tried to edit the post multiple times, even checked the formatting options https://news.ycombinator.com/formatdoc (having links between angle brackets didn't work :( ) sorry for the inconvenience and thank you for doing the effort :)
U++ looks interesting, what do you like about it and what is your use case?
It is. I encountered it around Qt4 time. I really liked Qt4 backthen, but I was also open to using/trying other things. Like Lazarus and U++.

It offers a more compact i'd say approach to develop and it's quite straightforward.

I only used it for small GUI applications, but you can see what others been building https://www.ultimatepp.org/www$uppweb$apps$en-us.html

https://en.wikipedia.org/wiki/Pick_operating_system

This has accounted for about 90% of everything I've built since 1985.

Pick code generates my side project: https://eddiots.com/1

“ It is named after one of its developers, Dick Pick.[2][3]” you can’t make this stuff up!
I know, not reddit, but I simply can't resist:

> Pick was originally implemented as the Generalized Information Retrieval Language System (GIRLS) on an IBM System/360 in 1965 by Don Nelson and Dick Pick [...]

I'm sad hearing Dick Pick died aged 54 of stroke complications.
My first job involved working on a Pick system. The system started life on a Prime mainframe and was migrated to UniVerse on Solaris.

I seriously miss it.

Every once in a while I try to get back into it. Usually it takes the form of trying (and failing) to get a demo/personal version of UniVerse, but lately I've been poking at ScarletDME a little bit. I'd even pay money (not much since this is just hobby stuff, but some) for UniVerse, but even the cost of it seems to be a closely guarded secret.

Thanks, Mister_Snuggles, for reminding me I'm not the only one left.

I HAVE to code in PICK.

"Unless it comes out of your soul like a rocket, unless being still would drive you to madness or suicide or murder, don’t do it." - Charles Burkowski

(Funny, they named the current support company "Rocket".)

Here's the link to the current Universe trial version (free and good until 04/2025. Get it, install it, and make something with it. Please don't let that part of you die.

https://www.rocketsoftware.com/products/rocket-multivalue-ap...

Yup, this is exactly where I get to when I try and fail to get UniVerse.

What's the trick to making that form work? It won't accept my @gmail.com address, and I don't really want to use my work email address and potentially mis-represent things. Especially since my work used to use one of Rocket's products.

I used my work email and then forwarded it to my g mail.

If you have concerns about doing that, you can just download it from my website at

http://eddiots.com/UVTE_WINDOWS_11.4.1.zip (You may have to cut and paste this link into a new tab. HN doesn't seem to like this.)

If you have any problems or need the UNIX version, just reply here or contact me. email on my profile. Let me know how it goes.

this project is AMAZING
Thanks, aredirect!

My next phase is to put the PICK-generated svg into codepen and provide links to show how to draw the art with code.

Windirstat Sysinternals tools Windbg
Shout out for ProcMon from the Sysinternals tools. It grants you diagnostic superpowers. "File Not Found" error w/ no filename shown-- no problem.
wiztree beats the pants off windirstat since it reads the ntfs table and is done in seconds
ISDN
Every time I'm on a laggy Zoom call I wish we could have had the circuit-switched internet instead.
Since I generally have no clue what technologies are popular (other than the obvious big name projects) I'll just toss out some interesting links I've recently bookmarked in comments here.

- gron (Greppable JSON): https://github.com/tomnomnom/gron

- MarkDownload (Markdown Web Clipper): https://github.com/deathau/markdownload

- Lean4 links:

-- Theorem proving: https://lean-lang.org/theorem_proving_in_lean4/introduction....

-- Natural Number Game: https://adam.math.hhu.de/#/g/leanprover-community/NNG4

https://github.com/webui-dev/webui is a lightweight alternative to webview/electron/tauri
Dumb question but I thought tauri was the lightweight alternative to electron. Did I remember that incorrectly?
Lightweight often just translates to less features. Unless you're rewriting a truly bad piece of software, you're "lightweight" alternative will be just as heavyweight when you're done reimplementing everything
Yes, WebUI uses the real installed web browser, so no rewriting is needed like WebView. The lib is 200 Kb !!!
Plan 9 in general.
I keep hearing about it and its influence, but I can't really figure out if it's active or dead or even If I can use it on a virtual machine or so. 9p.io doesn't seem to even load on my machine
There's a whole category of utopian developer environments and languages with far bigger aspirations than they were able to achieve but that still influenced others. Smalltalk being another example.

One of my favorite things about the old C2 Wards Wiki is that it's like an archaeological site where time is frozen in this period and you can browse through preserved arguments about how Smalltalk and Extreme Programming will take over the world.

And they did, in the usual half-a**ed, broken, honoured-more-in-the-breach-than-the-observance way such ideas usually get mass adopted.
temporal.io
Also Orleans
is that .NET orleans? or something else?
Yes, .NET Orleans, also referred to as Microsoft Orleans
First time to see that (now it went to my forever open tabs :) )

How is your experience with that?do you have it self-hosted or use their offering?

My opinion is temporal is a step function change in building workflow software. It allows for very complicated processes done simply
GnuPG/PGP and the web of trust[0]. A lot of things I see blockchain being used for today (e.g. NFTs) seems like it would be better solved using standard OpenPGP signatures with no backing chain.

Additionally, as machine-generated content proliferates, I think having services use something like the web of trust concept for membership would be super powerful. The problem is, of course, the terrible UX of cryptographic signatures. But I think there's a lot of opportunity for the group that makes it easy to use.

[0]: https://en.wikipedia.org/wiki/Web_of_trust

> seems like it would be better solved using standard OpenPGP signatures with no backing chain.

Programmability though

Can you elaborate?
There would be no automated consensus over results of execution of programs that power the applications
Just curious, which would be most reliable? One entity confirms it who confirmed 1000 previous results, 2 who confirmed 500, 10 who confirmed 100 or 1000 who confirmed 1 previously?
How about the actual case: many thousands of entities, who confirmed hundreds of thousands of previous results?
Would many thousands of entities, who confirmed hundreds of thousands of previous results be preferable over hundreds of thousands of entities, who confirmed many thousands of previous results?
I think I'm pretty much ok with either one.
How few executions (or partial?) could one get away with?
There's a problem though: either you have to ban transferring NFTs (or other tokens), which makes those a lot less useful, or you need something to prevent double spend attacks (something that blockchain solves).
GPG is great. It also makes it really easy to encrypt environment dotfiles that safely reside in your source code repository. This is my favorite way of storing sensitive app configs. You don't even need a PGP private key in your keychain to do it. You can use a passphrase.
This sounds interesting. Have you got an example of how you do this by any chance?
I’d really like to hear more about this
As a follow-up to the web of trust, I was pretty excited about Keybase and the breadth of applications they enabled, with a slick UX for web-of-trust. Pity they didn't quite succeed (got acqired/acquihired by Zoom), but it would be wonderful if something like that got another life.
Well thank you! I think that so often ...
Bottle.py: uber-fast and simple python web microframework, about 3x faster, saner, and more memory-efficient than Flask in my experience: https://github.com/bottlepy/bottle

Fossil: distributed version control and much more in a single executable, from the creators of SQLite: https://fossil-scm.org/

I still use Bottle for all my starter projects. It’s just unmatched in terms of bang for the buck.
In the same vein, I'd name Tornado (www.tornadoweb.org). Also rather small and comprehensible, but with full async support that's evolved extremely nicely. Generally I love how well-designed and maintained it is.
Vopono (https://github.com/jamesmcm/vopono):

"vopono is a tool to run applications through VPN tunnels via temporary network namespaces. This allows you to run only a handful of applications through different VPNs simultaneously, whilst keeping your main connection as normal.

vopono includes built-in killswitches for both Wireguard and OpenVPN."

Haxe - no idea why it isn't more popular.
The bootstrapping and getting it to work from scratch was rather complicated. A lot of the docs are outdated. That's why.
Which platform? On Windows there is a straightforward installer, and afterwards `haxelib` command installs e.g. HaxeFlixel, HaxeUI with all of the dependencies without any hiccups.
I really like the idea, and the language itself looks very reasonable. (added to my forever opened tabs list) :D
Windows :-)
Related to this, Revo Uninstaller. Sometimes programs don't clean up after themselves properly or the uninstaller is broken. Revo doesn't care, it tries to uninstall nicely first then resorts to scanning the drive for any remaining files, then scans the registry for remaining keys.

Not many people seem to know about it and everyone I show it to loves it!

While this sounds very sarcastic, but I actually want to give windows a try, didn't use it for ~ 20 years, I don't even have no idea how it looks like now, but I keep hearing good things
You keep hearing good things?? Where?
(comment deleted)
It’s a dumpster fire now. Microsoft shoving their products and choices down your throat, sneaking “updates” that change your settings back to what MS would prefer then to be… windows stopped being good after win2k and has been going downhill ever since. It’s basically a big advertising platform now with an OS on the side.
;-( long time Windows user, and as an OS it is fine but all the crapware these days. Windows 2000 was the finest hour!
RDF and semantic web used to be my goto's for this, as I believe many of the core ideas are still valid and often overlooked and sometimes even poorly re-implemented. Which says something.

However, lately I've come to like llama.cpp and friends, yes it's not ChatGTP miracle whatever but how often do you /actually/ need that? Despite its tremendous popularity, it still seems like something more people should know about. For me, I've had great fun with running LLMs locally and experiencing their different "flavors" from a more "phenomenological" (what is it like to use them) perspective rather than a technological one.

I’m doing a personal project using RDF. Not semantic web. Not OWL. Just “raw” RDF. And I really like it.

It’s perfect (so far) for my purposes of an extensible data model.

I’m sure others have augmented applications with “generic” data types (like properties and such). You always walk this fine line that if you fall to far you find you’re writing a database on top of a database.

We’ve also in the past fallen into that hole when building a DB schema that we stumble into what we coined the “absurd normal form” or, also colloquially, the “thing-thing” table that relates everything to everything.

Well, RDF is the thing-thing table, and it just embraces it. And for my project it’s a lot of fun. I have structured types, with specialized forms and screens. But, if desired, the user can jump into adding relations to anything. It’s essentially an RDF authoring environment with templates and custom logic to make entities. And in the end they can always dive into SPARQL to find whatever they want.

It’s not intended to work with zillions of data items, it’s just a desktop tool. I always found it interesting early on that the primary metric for triple stores was how fast they could ingest data, I guess nobody actually queried on anything.

Anyway, it’s fun and freeing to work with.

Most people know about MediaWiki even if they don't realize they do, because it powers Wikipedia, but I wish more people used it for documentation.

You can create highly specialized templates in Lua, and there's a RDBMS extension called Cargo that gives you some limited SQL ability too. With these tools you can build basically an entirely custom CMS on top of the base MW software, while retaining everything that's great about MW (easy page history, anyone can start editing including with a WYSIWYG editor, really fine-grained permissions control across user groups, a fantastic API for automated edits).

It doesn't have the range of plugins to external services the way something like Confluence has, but you can host it yourself and have a great platform for documentation.

(comment deleted)
Like any documentation system, its success depends on its audience.

As an administrator, I wish MediaWiki had a built-in updater (bonus points if it could be automated).

> As an administrator, I wish MediaWiki had a built-in updater (bonus points if it could be automated).

I get that by using the container distributions. I just mount My LocalSettings.php and storage volumes in the appropriate places and I get a new version.

And since I run on ZFS and i take a snapshot before updating if something goes wrong I can rollback the snapshot, and go back to when stuff just worked (and retry later).

It is a PITA from an ops point of view unless you use vanilla with no extensions. Each upgrade tends to break a bunch of extensions and you have to hunt around for solutions.
Isn't that only a problem if the extensions you use are third-party? If you use 100 different extensions, but they're all ones Wikipedia uses too, won't you be fine?
Mediawiki is huge and very complex. Why not something more simple like instiki?

Personally I would prefer a wiki with git backend. I wrote one [1] but I dont recommend using it.

https://github.com/entropie/oy

How about docusaurus and tinasaurus? The latter is based on TinaCMS.

[1] Docusaurus:

https://docusaurus.io/

[2] Tinasaurus:

https://github.com/tinacms/tinasaurus

This arent wikis..?
Yes, while technically speaking they are not wiki in traditional sense, they are based on Git thus collaborative editing is feasible and combined with friendly interface of TinaCMS in which Tinasaurus is based on, it can be a modern Wiki version on steroid i.e lean and fast wiki
Fossil, the bespoke VCS used by sqlite includes a wiki & web server out of the box. It's not normally what people think of in this domain but I've used it for that purpose and it works great for it. https://fossil-scm.org
This is really cool. Thanks for pointing to it.
Memory safe systems languages, including their uses before C and UNIX took off.