HN user

rlander

2,134 karma

Rodrigo Landerdahl

Polyglot programmer from Florianópolis, Brazil.

Interested in fringe programming languages like OCaml, F#, Elm, Erlang, Clojure and Prolog. But I've been known to dabble with Python, Ruby, JS and even Smalltalk (which I enjoy very much).

rlanderdahl at googlemail

Posts72
Comments275
View on HN
github.com 5y ago

Lamprey, a New Parasitic Language to Write Elixir in Erlang

rlander
3pts0
twitter.com 6y ago

Clojerl (Clojure for the Erlang VM) v0.6.0 Released

rlander
5pts0
www.dimagi.com 6y ago

What Every Developer Should Know About CouchDB

rlander
1pts0
beam-wisdoms.clau.se 8y ago

ELI5 Articles About Erlang's Internals

rlander
1pts0
www.ckl.io 8y ago

A Phoenix Guide for Django Programmers

rlander
3pts0
ckl.io 8y ago

A Phoenix Field Guide for Djangonauts

rlander
6pts0
ckl.io 8y ago

Atomic Design with React

rlander
9pts0
ckl.io 8y ago

A Case for Clojure and GraphQL: Replacing Django

rlander
83pts55
ckl.io 8y ago

Lessons Learned Moving from Native to React Native

rlander
7pts1
github.com 8y ago

Lamprey: Parasitic Language for Elixir

rlander
2pts0
www.bbc.com 9y ago

The problem with Everest’s 200+ bodies

rlander
2pts0
github.com 9y ago

MLFE: The New Elm-Like Language for the Erlang VM

rlander
1pts0
lambda-the-ultimate.org 10y ago

Whoever does not understand Lisp is doomed to reinvent it (2007)

rlander
175pts229
blog.hostilefork.com 10y ago

Computer Languages as Artistic Medium

rlander
1pts0
www.rebol.com 10y ago

Productivity. As simple as that. (2008)

rlander
4pts0
chimera.labs.oreilly.com 10y ago

Études for Erlang

rlander
61pts5
github.com 10y ago

Lamprey, a new parasitic language to write Elixir in Erlang

rlander
4pts2
github.com 10y ago

A Command Line Replacement for Zapier and Ifttt

rlander
2pts0
www.allenpike.com 10y ago

JavaScript Framework Fatigue

rlander
1pts0
dorophone.blogspot.com 11y ago

The Decline of the Xerox PARC Philosophy at Apple Computers (2011)

rlander
146pts113
www.fluff.info 11y ago

Lisp: A Cult I Almost Joined (2005)

rlander
37pts43
chris-lamb.co.uk 11y ago

Django-ctemplate: Compile Django templates to C

rlander
15pts0
jokull.calepin.co 12y ago

My Flask to Django Experience

rlander
5pts0
lunduke.com 13y ago

Open Source Fundraising, Low Numbers and Practicality

rlander
1pts0
freethoughtblogs.com 13y ago

Comparing the US and Norwegian prison systems

rlander
1pts0
github.com 13y ago

Django-admin2

rlander
5pts0
horewi.cz 13y ago

Chef Solo: Quick and Easy Cooking for One

rlander
2pts0
horewi.cz 13y ago

Faster Rails 3 Deployments to AWS Elastic Beanstalk

rlander
2pts0
coronalabs.com 13y ago

Corona SDK Now Free (iOS and Android)

rlander
2pts0
blog.wolfram.com 13y ago

Code Length Measured in 14 Languages

rlander
2pts1
ChatGPT Atlas 9 months ago

Maybe you haven’t seen this yet, but there is a (recent) option to fork a conversation when you click on the thee dots of a reply.

True, but GDP is often a decent proxy for material living standards, especially across countries and over time (so long as we note what it leaves out).

if Imba offers a new approach it fails to communicate this on the landing page and focuses on code compression instead.

Fair enough. While it does touch upon `memoized DOM`, you're correct; it might not be sufficient for readers to grasp the full implications unless they're well-versed in these kinds of libraries. For a deeper dive, you can check out this subpage: https://imba.io/guides/rendering. BTW, I don't have any affiliation with this library whatsoever.

I just wonder, whether a new language is necessary to achieve this.

To achieve compression, no. But to achieve DOM reconciliation without a v-dom, yes.

I feel like you missed the point of Imba. It's not solely focused on code compression (although that does appear to be a secondary objective). Instead, Imba is all about empowering developers to create declarative user interfaces without the typical complexities that often accompany such tasks, like dealing with reactivity, signals, custom directives, v-dom, and so on.

That’s weird. We moved to a new house and I was surprised one morning to see the cat scratching the upper balcony door, waiting to be let in, even though he’d never used that particular door until that day. He seems to always wait by the door that’s closest to the nearest awaken human, regardless if he’s ever used that entrance.

Elixir code out there is much cleaner than erlang code bases.

You do understand this is just your subjective opinion and not a universal truth, right?

You are basing your argument as if it was a fact that Elixir is “cleaner” (whatever that means) and that there was a thing called “software-testing-revolution” which Erlang was never a part of. Both are subjective and, frankly, plain BS.

if you are truly dedicated to the craft of software you probably should want them to learn Elixir

Oh boy, I don’t even know where to start... so you’re basically implying that Erlang programmers are not “truly dedicated to the craft of software”? It would be laughable if it wasn’t just sad.

This is the Ruby world mentality that just rubs me the wrong way. Not even worth carrying on with the discussion.

You’re missing the crux of the argument: auto-currying. In languages like Elm and Ocaml all functions are single arity which means a multi-arity function is just a partially-applied single arity function thus you can treat all functions as being single arity. This also means the pipe operator can be implemented as a higher order function being, as such, first class. Languages without auto-currying have to resort to macros.

Clojure also doesn’t have auto currrying, but makes up for it by giving you 6 variants and creating a consistent default library for sequences and associative structures.

So, the pipe first operator is just a dirty hack.

IME it is. Many Elixir apis end up forcing an unnatural parameter order just so that the entire body can be piped through.

Clojure is way more consistent in this regard:

  - thread first (->) when operating on maps.
  - thread last (->>) when operating on sequences.
  - as-> "choose your own adventure".

Well I believe that no pipe is better than a a handicapped pipe operator.

The Elixir implementation inverts the classical order of piping last in functional languages to the detriment of it. IMO a language should either support pipe last AND currying by default or supply a multitude of thread operators like Clojure does (->, ->>, as->, etc). Elixir's is just middle-of-the-road-weird.

Elixir just did it better imo and this person seemingly can't stand that people seem to like it more.

The post does read more like venting than a structured critique, but a few of his points are still valid.

Every time I hear someone praising Elixir, it's never about some Elixir-specific feature but usually about something that Erlang has provided for ages like pattern matching, lightweight processes, supervisors, the preemptive scheduler. Given this, I'm sure you can appreciate how bittersweet this can be for an Erlang developer.

To me Elixir is just a more complex, verbose and less elegant version of Erlang so it kinda frustrates me when newcomers would rather learn Elixir than plain Erlang.

Elixir 1.11 6 years ago

Why I choose Erlang:

- simpler syntax: there’s no Erlang program that you can’t read after getting comfortable with the language. Seriously. Go read OTP source or Ryaks, everything is extremely clear and explicit. To me, easier to read also means less bugs.

- It’s so different from other languages that, IMO, it makes it easier to “think in Erlang”; the syntax fits so well the semantics that I find it easier to think in terms of processes, patterns and the ocasional recursion when switching from other language (most Erlangers are polyglots IME).

*Edit: Reliable network services (Erlangs sweet spot) are much easier to write and maintain when written in a clear and explicit way. I love macros (consider myself a lisper actually) but I think they’re the wrong tool when writing bullet proof network servers (macros are basically everywhere in Elixir).

adds a tons of complexity over just using JS.

What "tons complexity" are you talking about? Clojure is a much simpler language (in the decomplected sense) than JS. Less syntax, better build tools, uniform stdlib, no webpack/babel nonsense. This sentence makes no sense.

interacting with the JS ecosystem is painful cause of its reliance on the closure compiler.

Again, what? With tools like shadow-cljs, requiring JS libs and using them in you project is trivial (just require and import like you would any cljs library).

In Clojure, is almost the same, most Java libs are over-engineered and horrible to use but you need to reach for them because Clojure lacks an ecosystem.

I've been writing Clojure for 10 years and rarely have I had to reach for Java. This is absolute rubbish.

You seem to hold strong opinions about a language you barely understand.

Edit: reading you comment history, you seem to have an axe to grind with Clojure.

Thanks, already subscribed to those channels. Thing is, much like a lot of comments here where devs want to learn new tech but struggle to come up with a side project idea, I can’t really think of anything useful that’d be within a beginner’s skillset. Anyways, thanks for the thoughtful reply and maybe watching a few videos will spark my creativity!

Basically anything that is protocol-oriented like WhatsApp. A lot of people will say fault tolerant, low latency, highly available and massively concurrent systems, and they’ll be right, but I think that’s only half the story. You also get a battle-tested blueprint for building these kinds of distributed systems. You will find a pattern here and there in other languages and VMs, but the cohesiveness of the package (language + BEAM + OTP + observability + patterns) is something really unique. Compare this to the Java ecosystem, where there are dozens of concurrency primitives and an even greater number of distributed systems libraries and frameworks like Akka, Mesos, Zookeeper, Storm, Flink, Samza, Heron, Helix...

To be fair, if you’re rewriting an Erlang system in Python/JS and you don’t feel like you’re losing much, Erlang was the wrong choice from the beginning. The cases were Erlang shines are very hard to replicate in these languages.

I have my own share of objections, mainly concerning the over-engineered nature of RabbitMQ, but most of the “huge learning curve” items that you’ve described can be learned in an afternoon by a motivated software engineer. Besides, she will have to learn those concepts anyway because they apply to most brokers.

Do you have any links to resources or blog posts explaining how to do web dev in Arc? A cursory google search turns up ArcGIS stuff.