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

It is an old US military term that means “F*ked Up Beyond All Recognition”


FUBAR being a bit worse than SNAFU: "situation normal: all fucked up" which is the usual state of us-east-1


My favorite is JANFU: Joint Army-Navy Fuck-Up.


But you probably have seen the standard example variable names "foo" and "bar" which (together at least) come from `fubar`


Which are in fact unrelated.


Unclear. ‘Foo’ has a life and origin of its own and is well attested in MIT culture going back to the 1930s for sure, but it seems pretty likely that it’s counterpart ‘bar’ appears in connection with it as a comical allusion to FUBAR.


Foobar == "Fucked up beyond all recognition "

Even the acronym is fucked.

My favorite by a large margin...


Interestingly, it was "Fouled Up Beyond All Recognition" when it first appeared in print back towards the end of World War 2.

https://en.wikipedia.org/wiki/List_of_military_slang_terms#F...

Not to be confused with "Foobar" which apparently originated at MIT: https://en.wikipedia.org/wiki/Foobar

TIL, an interesting footnote about "foo" there:

'During the United States v. Microsoft Corp. trial, evidence was presented that Microsoft had tried to use the Web Services Interoperability organization (WS-I) as a means to stifle competition, including e-mails in which top executives including Bill Gates and Steve Ballmer referred to the WS-I using the codename "foo".[13]'


What people would print and what soldiers would say in the 1940s were likely somewhat divergent.


100%


> Just as a whole the Erlang and Elixir primitives allow oban to be built truly in the most retarded, obvious way and get away with it.

Maybe it is obvious in retrospect…


I did not mean to diminish the implementation, of course it must be incredibly complex. I meant all that complexity is hidden from me, the developer. It's really easy to understand what to do. :D


This is absolutely true.

I can confirm, from firsthand knowledge, that Elixir is used at dozens of Fortune 500 companies in the US.


The roadmap is purely about AI, and reads like it was written by AI. It’s purely trendy and myopic.


My graduate university has a IBM speaker a few years ago where they spoke of a future on the Blockchain


Well they have automation on there, that's clearly distinct from AI.


It's funny because automation is the only thing you can expect from AI


The architecture is remarkable. The lengths they’ve gone to for language version compatibility, and protecting app namespaces is especially impressive.

https://github.com/elixir-lang/expert/blob/main/pages/archit...


What are namespaces in Elixir?


Namespaces aren't so much a concept in Elixir, but this refers to the names used for things like modules. Expert will rewrite the code of its "engine" so that the engine's code and dependencies and those of the application it is embedded into don't overlap.


Absolutely love monodraw for diagrams in documentation! All of the diagrams for Oban and Oban Pro are done this way:

Job Lifecycle: https://hexdocs.pm/oban/job_lifecycle.html

Composition: https://oban.pro/docs/pro/1.6.4/composition.html


Sidenote: thanks so much for taking the time to write the Oban docs. I'm a big user (and fan) of Oban, and the docs are fantastic.


Oban doesn't use advisory locks for fetching jobs (unless there is uniqueness involved)—it uses `FOR UPDATE SKIP LOCKED` as well to pull jobs.


Ping requires something persistent to check. That requires creating tuples, and most likely deleting them after they’ve been consumed. That puts pressure on the database and requires vacuuming in ways that pubsub doesn’t because it’s entirely ephemeral.

Not to mention that pubsub allows multiple consumers for a single message, whereas FOR UPDATE is single consumer by design.


Postgres LISTEN/NOTIFY was a consistent pain point for Oban (background job processing framework for Elixir) for a while. The payload size limitations and connection pooler issues alone would cause subtle breakage.

It was particularly ironic because Elixir has a fantastic distribution and pubsub story thanks to distributed Erlang. That’s much more commonly used in apps now compared to 5 or so years ago when 40-50% of apps didn’t weren’t clustered. Thanks to the rise of platforms like Fly that made it easier, and the decline of Heroku that made it nearly impossible.


How did you resolve this? Did you consider listening to the WAL?


We have Postgres based pubsub, but encourage people to use a distributed Erlang based notifier instead whenever possible. Another important change was removing insert triggers, partially for the exact reasons mentioned in this post.


> Another important change was removing insert triggers, partially for the exact reasons mentioned in this post.

What did you replace them with instead?


In app notifications, which can be disabled. Our triggers were only used to get subsecond job dispatching though.


Distributed Erlang if application is clustered, redis if it is not.

Source: Dev at one of the companies that hit this issue with Oban


What about Heroku made Erlang clustering difficult? It's had the same DNS clustering feature that Fly has, and they've had it since 2017: https://devcenter.heroku.com/articles/dyno-dns-service-disco....


The problem was with restrictive connections, not DNS based discovery for clustering. It wasn't possible (as far as I'm aware) to connect directly from one dyno to another through tcp/udp.


That is not an issue when using Private Spaces, which have been available since 2015


I didn’t realize Oban didn’t use Mnesia (Erlang built-in).


Very very few applications use mnsesia. There’s absolutely no way I would recommend it over Postgres.


I have heard the mnesia is very unreliable, which is a damn shame.

I wonder if that is fixable, or just inherent to its design.


My understanding is that mnesia is sort of a relic. Really hard to work with and lots of edge / failure cases.

I'm not sure if it should be salvaged?


I think RabbitMQ still uses by default for its metadata storage. Is it problematic?


They are in the process of migrating away from it https://www.rabbitmq.com/docs/metadata-store


can you explain why?


Mnesia along with clustering was a recipe for split brain disasters a few years ago I assume that hasn't been addressed.


I have only worked with a product that used it, so no direct experience, but one problem that was often mentioned is split-brains happening very frequently.


Shaun Ryder sets a low bar. Definitely the best maracas player though.


Kurt's our Ryder.


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

Search: