Readit News logoReadit News
Posted by u/aredirect 2 years ago
Ask HN: What are some unpopular technologies you wish people knew more about?
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/

calamari4065 · 2 years ago
Analog computation.

I don't mean just vacuum tubes or even electronics at all. Mechanical analog computing is insane when you get down to it. You have special shapes that move against each other and do calculus.

We make these mechanical models as analogs of more complex physical systems. We can turn huge calculations into relatively simple machines. That we can roll two weirdly shaped gears together and get an integral out says to me something very profound about the universe. I find it to be one of the most beautiful concepts in all of the sciences.

What's even more wild is that we can take those mechanical analogs of physical systems and build an electronic analog out of vacuum tubes. That vacuum tubes work at all is just completely insane, but it's some absolutely beautiful physics.

And yes, there are equally beautiful problems that can only be solved in the digital domain, but it just doesn't speak to me in the same way. The closest thing is the bitwise black magic like fast inverse square root from a special constant and some arithmetic. Besides, that's more a property of number systems than it is of digital computation.

I understand how and why digital took over, but I can't help but feel like we lost something profound in abandoning analog.

jvm___ · 2 years ago
Analog tide-predicting machines are fascinating.

The tide height is a function of the earth/sun/moon systems. Earth and Moon aren't at a fixed distance from eachother, and neither is the sun, so every day is a unique tide but you can predict the range.

The analog way to do it is to make a gear for each point of data in the system and synchronize all their gears. Then you use them all to rotate one final gear, which will show you the prediction for the time you've chosen.

jodrellblank · 2 years ago
I used to know nothing about Lord Kelvin except he said things like "It seems, therefore, on the whole most probable that the sun has not illuminated the earth for 100,000,000 years, and almost certain that he has not done so for 500,000,000 years"[1] and allegedly "everything which can be discovered, has been discovered"; until last year's Veritasium video on YouTube[2] about analog computers, and learned he invented tide-predicting analog computers to "substitute brass for brains" and add sinusoidal curves, and a mechanical integrator to separate out individual sinusoidal frequencies from the sum.

[1] https://zapatopi.net/kelvin/papers/on_the_age_of_the_suns_he...

[2] https://www.youtube.com/watch?v=IgF3OX8nT0w from about 3 minutes.

calamari4065 · 2 years ago
I think this is a great example. It's pretty easy to mentally connect the orbit of a planet with the ratio of gears.

Once you really understand how these systems are an analog of a physical problem, everything makes so much more sense

gcanyon · 2 years ago
Veritasium did a very nice video about the analog tide computers: https://www.youtube.com/watch?v=IgF3OX8nT0w
phillypham · 2 years ago
In ML/AI space, at least some people thing analog computing is the next big thing, https://www.forbes.com/sites/karlfreund/2021/09/23/ibm-resea.... It hasn't taken off, yet, though.
calamari4065 · 2 years ago
I know, I've had my eye on this topic for a while.

Honestly it seems like a perfect application. Neural networks are analog systems. An analog computer can represent neurons very accurately and the entire network is inherently parallel, for free!

I can't wait to see what comes out of this research

kolinko · 2 years ago
Yes!

Also, most people don’t know that the word „Analog”, as in „analog circuits” comes from „analogy”.

calamari4065 · 2 years ago
I didn't make that connection until my late 20s and when I finally did, it radically changed how I look at and understand analog systems.

In today's world, we still build analogs, we just coerce them into strictly numerical, digital models. I don't know if you can call it better or worse, but digital is definitely less magical and wondrous than mechanical analog systems.

8bitsrule · 2 years ago
Nature, almost completely analog, has been around a thousand times longer than humans. How many times has 'evolution' used digital methods to accomplish something? Perhaps we've chosen to switch to digital because we're in a hurry and its easier ... in hopes of, some day, asymptotically approaching the advantages of analog.
calamari4065 · 2 years ago
The main reason is that digital computers are so incredibly, overwhelmingly more flexible than analog. Analog computers are (generally) bespoke single-purpose devices. It really isn't too far off to imagine analog computers as code made physical, with all that entails.

Imagine writing a program if every time you wanted to change something you had to cut a new gear, or design a new mechanism, or build a new circuit. Imagine the sheer complexity of debugging a system if instead of inspecting memory, you have to disassemble the machine and inspect the exact rotation of hundreds of gears.

Analog computing truthfully doesn't have enough advantages to outweigh the advantage of digital: you have one truly universal machine that can perform any conceivable computation with nothing but pure information as input. Your application is a bunch of binary information instead of a delicate machine weighing tens to hundreds of pounds.

Analog computing is just too impractical for too little benefit. The extra precision and speed is almost never enough to be worth the exorbitant cost and complexity.

garaetjjte · 2 years ago
DNA is digital. I think crucial digital feature is ability to have exact result from imperfect components, especially important for self-replicating systems. Instead of having calculation that is always off by 1%, you can have perfect result 99% of the time. And you can improve MTBF by stacking error correction on top of it, without necessarily having to improve manufacturing tolerances.
Spooky23 · 2 years ago
I agree. I remember climbing into the turret of the USS Massachusetts and playing with the ranging computer. It was just impressive that a geared device could do pretty complicated math in real time.
debian3 · 2 years ago
You can have a look at that pinball machine. You will be amazed. https://youtu.be/ue-1JoJQaEg
fulafel · 2 years ago
Electronic analog computing is also still being researched, eg https://arxiv.org/abs/2006.13177 ("Analog multiplication is carried out in the synapse circuits, while the results are accumulated on the neurons' membrane capacitors. Designed as an analog, in-memory computing device, it promises high energy efficiency")
pyinstallwoes · 2 years ago
What are some... surprising and relatively easy ways to feel the magic of analog computation?
calamari4065 · 2 years ago
Slide rules, for a start. This Wikipedia page contains a lot of magic as well: https://en.m.wikipedia.org/wiki/Differential_analyser

As for something you can easily get your hands on, micrometers are incredible. A simple screw and graduated markings on the shaft and nut give you incredibly precise measurements. You can also find mechanical calculators (adding machines) on eBay. But those really aren't very sexy examples of the concepts.

Analog computers aren't very common anymore. Your best bet is visiting one of the computer museums that house antique machines. Or watching YouTube videos of people showing them off. There's plenty of mechanical flight computers in particular on YouTube.

If you have access to a 3D printer, there's plenty of mechanisms one can print. The antikythera mechanism is a very interesting celestial computer from ancient times, and 3D models exist online.

29athrowaway · 2 years ago
Like Soviet water computers?
calamari4065 · 2 years ago
Look around on YouTube. There's some fascinating videos from the 1950s on US Navy mechanical firing computers.

These machines can calculate ballistic trajectories with incredible accuracy, accounting for the relative motion of the ships, wind speed, and even the curvature of the earth. Those calculations are not at all trivial!

Bjartr · 2 years ago
Like naval mechanical targeting computers that use clever cam and gear arrangements.

https://youtu.be/s1i-dnAH9Y4?si=oHHJGRqnFx-ydQu1

swiftcoder · 2 years ago
In case you don't fancy visiting all the links:

- Tarantool is some sort of in-memory DB with optional persistence

- Red is a programming language that has made the odd syntax decision to use {} for strings and [] to define scopes

- U++ is one of those all-encompasing C++ frameworks like QT

- Lazarus is a Pascal(?) IDE

- And FASM is a toolkit for building assemblers

I'm struggling to find the common thread across these links, apart from the OP probably being an enthusiast of obscure programming languages

avhon1 · 2 years ago
Red is the spiritual successor to Rebol, from which its syntax comes.

http://www.rebol.com/

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

aredirect · 2 years ago
Thank you for summing it up. The common is things from developer's perspective I feel they should be checked out (not just programming languages)
swiftcoder · 2 years ago
I guess I'm looking for a hint as to why this selection of items is particularly interesting to you. These cover a pretty wide spread of topics, and for folks who aren't well versed in each topic, they might be better served by evaluating the standard option in that field (Redis, Qt, etc) before they dive into the weird alternatives
poizan42 · 2 years ago
Lazarus is an Object Pascal IDE modeled after the old versions of Delphi.
FrenchyJiby · 2 years ago
NNCP, from http://www.nncpgo.org/

It's a protocol/tool for async file transfer, built for disconnected/intermittent connectivity amongst known parties (trusted friends as p2p), allowing even for sneakernet-based file transfer.

It's started as a modern take on usenet, but it boggles my mind how cool it is:

Want to send a TV Series to your friend? send it via nncp, and it will make it through either via line-based file transfer (when connection allows, pull or push, cronjob, etc), or even via sneakernet if there is "someone going that way".

Comms priority system lets you hi-prio message-checking via expensive network link vs bulk file transfer using trunk lines later.

It even can be configured to run arbitrary commands on message receive, to allow indexing/processing of files (like a ZFS-receive hook, mail/matrix ingestion...)

See all the usecases: http://www.nncpgo.org/Use-cases.html

As with many of these cool techs, I just wish I had a good reason to use it =D

germinalphrase · 2 years ago
Before its time.
canadiantim · 2 years ago
What if its time is now?
RheingoldRiver · 2 years ago
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.

entropie · 2 years ago
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

giraffe_lady · 2 years ago
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
teleforce · 2 years ago
How about docusaurus and tinasaurus? The latter is based on TinaCMS.

[1] Docusaurus:

https://docusaurus.io/

[2] Tinasaurus:

https://github.com/tinacms/tinasaurus

quickthrower2 · 2 years ago
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.
josephcsible · 2 years ago
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?
johnvaluk · 2 years ago
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).

znpy · 2 years ago
> 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).

Deleted Comment

esafak · 2 years ago
I think it's passe. These days I'd suggest something comparable to Notion.

https://www.reddit.com/r/Notion/comments/16zon95/are_there_a...

yeck · 2 years ago
Nix package manager's `nix-shell` is something I wish more people knew about. Nix is gaining some popularity, but people often think of using it has to be a really big commitment, like changing your Linux distro to NixOS or replacing your dotfiles with a Nix-based one (using the Nix package manager).

What I wish more people knew was that you don't need to do those things to get value from Nix. Create project specific dev shells that install the packages (at the correct versions) to work with that project can almost replace 90% of the docs for getting setup to work on a project.

aliasxneo · 2 years ago
Have you tried compiling software with a nix shell? It gets linked to the Nix store. Needless to say it was a frustrating revelation.
whacked_new · 2 years ago
The missing link for me is nix-copy-closure, which I learned about from a post by mitchellh: https://mitchellh.com/writing/nix-with-dockerfiles

conceptually a game changer for me. In practice it's far from a silver bullet (because every language prefers its own package management so you still have to manage those), but when it works it's quite magical.

n8henrie · 2 years ago
You can patchelf to link to the host system libraries instead, or some projects can statically compile (inc musl) with less drama than usual, since your cross compilation toolchain can be part of your nix-shell.
maxmcd · 2 years ago
Isn't this what you want? You are reliably linking to the specific dynamic libraries you are compiling against.

Or was the issue that you expected them to be portable? Or use commonly known dynamic library locations?

ParetoOptimal · 2 years ago
Sometimes it matters, many times not.

For example I tried to run pip install yesterday on MemGPT on Nix.

It failed with a C++ error because they use miniconda.

I just created a nix shell with python, pip, etc and ran the pip install command.

Things work fine.

pricci · 2 years ago
Although I haven't really used it, jetpack.io's Devbox [0] is an abstraction over Nix for the usage you describe.

[0] https://www.jetpack.io/devbox

yeck · 2 years ago
I've played around with it a little bit, but not enough to make any judgements on it. Something like devbox could be the sort of thing to make nix-shell accessible enough to see wider adoption.
eternityforest · 2 years ago
Snap also has a way to open a shell inside the context of a snap package
corethree · 2 years ago
It's good for a c or c++ project where libraries are very environment specific. But most modern languages have their own package/environment managers which makes Nix redundant.
gaganyaan · 2 years ago
Not really. I introduced it to our Python projects at work and it's been great. Partially because of poetry2nix, and partially because it makes it easy to include other stuff like a specific version of Redis for testing purposes. Everybody gets the exact same dev environment, reducing a ton of "works on my machine".
tripdout · 2 years ago
Most language package/environment managers do not come close to giving you the guarantees that Nix does.
otabdeveloper4 · 2 years ago
Two problems:

a) Unless you literally write everything in one language, you will have to deal with learning, supporting and fixing bugs in N different package/environment managers instead of just one.

b) If you have a project that uses several languages (say, a Python webapp with C++ extensions and frontend templates in Typescript), then Nix is the only solution that will integrate this mess under one umbrella.

jcelerier · 2 years ago
I had to use it for a c++ project and it was one of the biggest waste of time and frustrating moments of my computing career, there were constant breakages due to glibc mismatches, Nvidia drivers and whatnot, and getting an host IDE to have semantic understanding of the paths , etc... necessary for normal completions and stuff was nigh impossible.
anon291 · 2 years ago
No way. Language specific managers are terrible at managing external dependencies. Trying to get python packages to link to system libraries is terrible. Nix makes it infinitely better.
mmillin · 2 years ago
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

notpushkin · 2 years ago
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).
nunez · 2 years ago
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.
nemoniac · 2 years ago
This sounds interesting. Have you got an example of how you do this by any chance?
mstibbard · 2 years ago
I’d really like to hear more about this
ssivark · 2 years ago
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.
staticBr · 2 years ago
Well thank you! I think that so often ...
radicalbyte · 2 years ago
Take a look at KERI.
klntsky · 2 years ago
> seems like it would be better solved using standard OpenPGP signatures with no backing chain.

Programmability though

cvdub · 2 years ago
Can you elaborate?
pkkm · 2 years ago
The Arcan display server is a really cool idea. Even if it doesn't manage to get popular, I think there are ideas here that we could mine to use them in popular programs.

- https://arcan-fe.com/2022/10/15/whipping-up-a-new-shell-lash...

- https://arcan-fe.com/2021/04/12/introducing-pipeworld/

- https://arcan-fe.com/2020/12/03/arcan-versus-xorg-feature-pa...

- https://arcan-fe.com/2021/09/20/arcan-as-operating-system-de...

throwaway1984s · 2 years ago
This. A hundred times this. The Cat9 stuff alone is so far ahead of what some have thrown millions at cut and paste cookie cutter things like Warp yet that is not even close to what was just presented as a fun thing.

The latest EU funded 'a12' things are also soooo high concept but not fever dream.

xwowsersx · 2 years ago
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
aredirect · 2 years ago
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
xwowsersx · 2 years ago
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.

brightball · 2 years ago
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.

pyjarrett · 2 years ago
> 2024 Carolina Code Conference (polyglot)

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

jasfi · 2 years ago
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.
ryukoposting · 2 years ago
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.
yeck · 2 years ago
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 :)

mb7733 · 2 years ago
I believe the whole language is "style insensitive" for variable names. So it's not just a feature of the stdlib.
cmdlineluser · 2 years ago
There's also `atlas` that was released with Nim 2.0.

http://nim-lang.github.io/Nim/atlas.html

Deleted Comment

esafak · 2 years ago
More power to nim. It just needs better tooling, IDE support.
meatjuice · 2 years ago
I hate nim for depriving me of the joy to use tabs instead of spaces. It's just... unreasonable.
jasfi · 2 years ago
Set tabs to 2 spaces in your editor.