Hacker Newsnew | past | comments | ask | show | jobs | submit | travisgriggs's commentslogin

Curious if erlang/elixir isn’t the same sort of thing? Or am I misunderstanding the semantics of “pass by value”?

Your assumption is somewhat correct, for both Erlang and Elixir, however the phrase under discussion doesn’t mean the same thing for immutable languages. Both are ‘pass-by-value’ but that term is being overloaded in a particular way. As I said in another comment, ‘value’ in the language from TFA means any object that IS NOT a reference. The qualifier that every semantic object is a ‘value’ and that therefore, all arguments to a function call, threads spawn, etc are independent values which are (logically, at least) copied to new values that are then passed to the new context.

However, for Erlang and Elixir ‘pass-by-value’ is otherwise called ‘call-by-value’. In this case, it is a statement that arguments to functions are evaluated before they are passed into the function (often at the call site). This is in opposition to ‘call-by-name/need’ (yes, I know they aren’t the same) which is, for instance, how Haskell does it for sure, and I think Python is actually ‘by-name’ as well.

So, Herd’s usage here is a statement of semantic defaults (and the benefits/drawbacks that follow from those defaults) for arguments to functions, and Elixir’s usage is about the evaluation order of arguments to functions, they really aren’t talking about the same thing.

Interestingly, this is also a pair of separate things, which are both separate from what another commenter was pedantically pointing out elsewhere in the thread. Programming language discussion really does seem to have a mess of terminology to deal with.


> I imagine just about any computer science major would have learned the rules of memory layout according to some kind of C-like compiler.

I have worked with a number of fresh grads over the last ten years. I can think of one who may have had a good handle on this. At best the rest range from “vague memory recall about this” to a blank stare.

On the flip hand, it’s something someone can pick up pretty quickly if motivated.


About 7 years ago, we deployed a “gateway/orchestration” role device in ag tech. Power draw is a big concern for us (not a lot of free power out in the middle of fields). We used an SBC from Emtrion. I remember asking my EE counterpart at the time “why not a Pi? Surely someone makes hardened versions of those?” He was skeptical and I think the aura of “toy/hobby/maker” scared him off.

Fast forward. We’re getting ready to role out our next generation. It’s based on the Pi Compute Module 4 (the CMs are basically just the basic Pi and you put your own carrier board for peripherals under it). It is amazing. It has easily 20x the power, 20x the RAM, better temp specs and such, a great eco system, uses about 30% less power, and about 1/5 of the price. The only thing we’re not sure about yet, is the robustness of the BLE with the onboard radio chip.

It’s amazing how far these things have come. For low volume product builds, it’s hard to find a reason not to use one of the CMs.


Hah! And the value of the Pi for these kinds of ~industrial applications is why there was a shortage of Pis for hobbyists.

It's funny how Raspberry Pi started out for an educational market, and accidentally revolutionized the embedded market.


Even funnier is the history. IIRC, the very first Raspberry Pi was an idea based on a bunch of stock of shitty SoCs for set-top boxes that Broadcom couldn't get sold, so Eben Upton got these for cheap for the foundation he and a few others had started to promote computer literacy.

Honestly, in all my life I've never seen the Pi being sold in EU for €35. The min. price I've found has always been around 45/50, with Pi5 never under 75, because of scalpers

I'm waiting for the "Can it do Management?" experiment.

I do not have a positive impression/experience of most middle/low level management in corporate world. Over 30 years in the workforce, I've watched it evolve to a "secretary/clerk, usually male, who agrees to be responsible for something they know little about or not very good at doing, pretend at orchestrating".

Like growing corn, lots of literature has been written about it. So models have lots to work with and synthesize. Why not automate the meetings and metric gatherings and mindless hallucinations and short sighted decisions that drone-ish be-like-the-other-manager people do?


Huh. I tried docker. Didn’t like the odor of enshittification, and so switched to podman (desktop). I use it on macOS, and deploy on Ubuntu. It’s been smooth sailing.

I found the signal to noise ratio better in Podland. As a newb to docker space, I was overwhelmed with should I swarm, should I compose, what’s this register my thing? And people are freaking about root stuff. I’m sure I still only use and understand about 10% of the pod(man) space, buts way better than how I felt in the docker space.

I miss when software engineering put a high value on simplicity.


Yeah I was pretty hard on podman in that comment but the truth is I use it over docker wherever I can. I have a mixed environment at home but settled on RedHat for the home server and everything seems totally ok. I really like quadlets, and the ability to go rootless is a big load off my mind to be honest. I do wish they'd package it for other distros though. It would save some headaches.

Podman is in Debian and has been for a while (and so will eventually propagate to all its derivatives). I would presume Arch and SUSE have it, not sure about Gentoo, what other host distros are missing?

What if some level of efficiency (not necessarily internet) improves turnout and participation?

At least in the US, I think there are a number of suggestions that are made repeatedly each cycle here. Like "it should be a paid federal holiday", and not putting onerous requirements on voters. Automatic registration. The list goes on.

But I what is written over and over is more on the lines of "I don't trust the process". I cannot blame anyone for not trusting Internet voting: I am a professional SWE, and it would be impossible for me to establish that any such system isn't pwned. Too much code to audit, hardware that's impossible to audit. But it's pretty trivial to demonstrate to the layperson how paper voting works, and how poll observers can prevent that process from being subverted.


There are non-internet ways to do that. States are really the "laboratories of democracy" on that front, with different states having affordances like long early-voting periods and mail-in voting.

However, those are in the context of whatever political system they're in. No level of efficient election design is going to put a dent in the fact that California loves direct-elected downballot offices (e.g., treasurer, controller, insurance commissioner, state judges, local judges, etc.) and referenda, which all result in super long and complicated ballots with 50+ questions each.


We have mail voting as a default in Colorado. When you get your license you are registered to vote and opted in automatically. The one piece that might improve it further is if it came with a stamp to mail back. Otherwise you just drop it off at a drive-up ballot box. You can also vote in person if you want. Hardly anybody does it so there’s never a line.

You get text messages each step of the process too. “Your ballot has been mailed”/“your ballot has been delivered”/“your ballot has been received”/“your ballot has been counted - thanks for voting”.


How do they prevent double voting?

The ballots envelopes (not the ballots themselves) are keyed to the voter's identity. When the ballot is removed (not until the signature is verified and not contested), the voter is counted as voted, so if they double vote, then the second vote will be rejected. Likewise if you try to vote by mail and then at the poll, you are flagged before you even try to vote.

Other states that do this well don't start counting mail in ballots until after polls closed. They know if someone voted in person, so their mail in ballot is rejected before being opened and verified.

When you vote in person they print out a label that has some internal identifier unique to you and place it in your ballot

Improved turnout and participation is a good thing in itself, but not necessarily if it puts a weapon in the hands of those who do not like the outcome and are seeking to invalidate it without regard to whether it represents the electorate’s legitimate choice.

Efficiency for the voter and efficiency for the vote counting process are totally different things.

A question we all have to ask ourselves. What would I trade for efficiency?

So where is the thought on mail in these days? It’s what we have in Washington and I rather like it.

I have this same reaction.

But I also have to honestly ask myself “aren’t humans also prone to make stuff up” when they feel they need to have an answer, but don’t really?

And yet despite admitting that humans hallucinate and make failures too, I remain uncomfortable with ultimate trust in LLMs.

Perhaps, while LLMs simulate authority well, there is an uncanny valley effect in trusting them, because some of the other aspect of interacting with an authority person are “off”.


I certainly won't.

I wonder if it's because they don't see other relevant low-cost/overhead solutions. "Follow me on facebook" certainly isn't going to be a win. "Follow me on Bluesky or Mastadon" is going to be ignored. "You can see my comments on insta" won't be relevant. "My TikTok is where it's at" might get you some young followers.

Other solutions (your own blog, medium, substack, etc), all come with more overhead and setup.


Another languages that just “gets” concurrent right (imo) is erlang/elixir. I’ve done elixir for the last 3 years off and on.

Can someone with experience in both Go and Elixir compare the two? I’m sure I can have GPT whip up a comparison and see the syntax diffeeences, but I’m curious what the real experience “in the trench” is like.


I've used both professionally. I think elixir has some amazing ideas. I love pattern matching. However! Just like all other interpreted languages, in elixir, I have to go to the call sites of the function that I am editing to understand what it is that is actually available and to understand what I can edit. I don't know what has been passed into my function. The lack of types is not fixed by having a type spec and dialyzer. Pattern matching helps. I wish Go had it. But when it comes to a growing organization, more and more of the codebase cannot fit in your head, and I find that teams and organizations are indeed faster in Go.

I recall hearing that Jose was making progress on types. Not sure where that landed.


I was curious in particular about the concurrency story between the two, but thanks for the higher level feedback.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: