Live data from Hacker News

From Rails to Clojure, Then to Java, Then Back to Rails

engineering-management.space

131–140 of 157 posts

Re: From Rails to Clojure, Then to Java, Then Back to Rails

#131
post #94

Earlier quoted context omitted.

to me lisp is its own problem, its value is that it gives you too much it becomes anti social. Society likes ignorance and delegation, lisps gives you the ability to have everything into one atom and mold it as you need it. But that's only useful for 1) people with that kind of mindset 2) hard problems that fall off mainstream/commercial support

Like Autolisp? Autocad (and its clones) of software used by zillions of designer, architects, ... extened by zillions of Lisp programs.

And SISCOG (http://www.siscog.eu) who built a Europe-wide transport infrastructure project in Common Lisp which was used by London Transport amongst other clients?

Re: From Rails to Clojure, Then to Java, Then Back to Rails

#132

Another thing I’m getting is that the new kids won’t like rails, and it’s being harder to hire. I'm surprised by this, to me the language used would be a long way down the list when evaluating an employer.

Ruby is still a beautiful language, particularly for its object oriented-ness. And I think Ruby's nature, simplicity and power appeals to young people, however the resurgence of a towering Javascript/NodeJS is hard compete with. These are market forces that really matter when you're wondering what language & platform to use for your MVP. In recent surveys, Ruby & Rails has fallen to the bottom of the list among the f…

Not so fast with Elixir. According to Indeed.co.uk's API there are 18 Ruby jobs for every Elixir job. Yes, there are 3 times as many Python jobs but Ruby isn't exactly dead.

Re: From Rails to Clojure, Then to Java, Then Back to Rails

#133

Earlier quoted context omitted.

It's because we don't like or approve of rails. It doesn't make business sense to us (us being a completely anecdotal group of young developers I'm friends with). There are other solutions that provide sufficiently more developer speed and safety, while also providing much better performance than any rails application. Edit: I guess I just hang out with like minded people, but our biases shouldn't negate the fact tha…

To answer many of the replies: (Most prominent -> least prominent) Web-related: Go, Elixir, JavaScript, Python Desktop GUI: Python, C++ Game-Dev: C#, C++ Really its a matter of how much you'll pay us, and I think we've been scarred by too many bloated Rails apps and Wordpress sites to want to work on those.

Now we work with Node.js which is much better ..... oh, wait I just ran out of disk space after running `npm install`.

Re: From Rails to Clojure, Then to Java, Then Back to Rails

#134
post #89

Earlier quoted context omitted.

> Community feels like the good old Ruby days, but better I really miss that old Ruby community. It was full of that hacker spirit, everyone trying stuff, no one to crush your creativity. Then the startup hipsters took over and came up with good practices, style guides, gems you absolutely had to know to get hired, etc. It drove me away from Ruby, actually. It just wasn't fun anymore. I hope it doesn't happen with Ru…

Your comment really speaks to me. I'm in the process of transitioning my career out of development altogether for the reason you mentioned getting out of Ruby. It just isn't fun anymore. I haven't been able to find a company with a good hacker-spirit since 2010. I like programming, and will probably continue with languages like Elixir and Haskell, but as far as the day-to-day work goes, I'm done.

Is that, perhaps, more to do with JS fatigue than anything related to Ruby or Rails? What I can't fathom is how every shitty little SPA has to be done in React these days.

Re: From Rails to Clojure, Then to Java, Then Back to Rails

#135
post #108

I may sounds weird but Ruby is what make me look more into functional programming. I get done a lot with Ruby due to all method it has on Array/Object/Enumerable. The beauty of `&` is awesome and I discover that Elixir/Clojure has that and bring it to next level. I think Ruby has inspired many other language to take that path too. One of the thing about Ruby is that it optimize for happiness, which sound weird. But I…

*> 10.seconds.from_now* I don't understand this kind of weird "urban sprawl OOP" where classes are extended with anything. Why is 'seconds' a method on numbers? Is there also a 'pixels' method so that I could draw a line like this: 10.pixels.from.top_left_corner.to.southeast.using.red.stroke If this doesn't seem like a sensible way of programming graphics, why does the 10.seconds thing get a pass?

If you think about it, that's just fluent API. And it's up to your to use it to design thing that's convenience and readable for you. When you design an API, you put it to the context. When in context:

10.seconds.from_now

is beautiful to me.

Let's do a quick google for "Fluent API in Java" and you will get something like this:

Invoice inv = Invoice.builder() .createdOn(new Date()) .withDocumentNumber("5150") .shippingOnTrailer("2112") .suppliedBy(InvoiceActor.builder() .named("101") .as(InvoiceActorType.DC) .build()) .beingSentTo(InvoiceActor.builder() .named("42") .as(InvoiceActorType.STORE) .build()) .with(InvoiceItem.builder() .as("TK421") .orderedQuantity(10) .shippedQuantity(8) .build()) .with(InvoiceItem.builder() .as("FN2187") .orderedQuantity(5) .shippedQuantity(5) .build()) .build();

The only difference here is that Ruby allow you to attach method to anything.

But then you have category in Objective C, extension in Swift/Kotlin.

The language gives you the tool, to make your job easier, that's why I wrote "I feel happy when writing Ruby" because I have that power.

To even protected you from changing everything, you can also use refinement to scope this, though it seems underestimated currently IMHO.

When using it the right way, it helps everyone write readable code.

Back to your example:

> 10.pixels.from.top_left_corner.to.southeast.using.red.stroke

It's up to your however you want to design it.

Re: From Rails to Clojure, Then to Java, Then Back to Rails

#136
post #121
post #108

Earlier quoted context omitted.

*> 10.seconds.from_now* I don't understand this kind of weird "urban sprawl OOP" where classes are extended with anything. Why is 'seconds' a method on numbers? Is there also a 'pixels' method so that I could draw a line like this: 10.pixels.from.top_left_corner.to.southeast.using.red.stroke If this doesn't seem like a sensible way of programming graphics, why does the 10.seconds thing get a pass?

It's not just 'anything' that objects are extended with in Ruby, they are extended with suitable methods pertaining to the domain at hand. 'seconds' is a conversion method of one type into another. You might as well ask why do objects have a 'toString' method. Because it is convenient.

Thank you for explaining this.

Re: From Rails to Clojure, Then to Java, Then Back to Rails

#137
post #95

I may sounds weird but Ruby is what make me look more into functional programming. I get done a lot with Ruby due to all method it has on Array/Object/Enumerable. The beauty of `&` is awesome and I discover that Elixir/Clojure has that and bring it to next level. I think Ruby has inspired many other language to take that path too. One of the thing about Ruby is that it optimize for happiness, which sound weird. But I…

It looks nice, but then again: irb(main):002:0> 10.methods.count => 133 Oh well...

What's wrong with this? What is your expecation?

Re: From Rails to Clojure, Then to Java, Then Back to Rails

#138
post #67
post #21

Earlier quoted context omitted.

I've always had better luck restricting FP to using things like map, reduce, filter, (etc) inside methods as an implementation detail, but having the structure of the app use OOP.

Incidently that is how FP in done in Smalltalk as well. All those methods, and reactive patterns (Observer and such) were already present in Smalltalk-80.

Elixir, I suppose, would be a 'modern' example too.

Re: From Rails to Clojure, Then to Java, Then Back to Rails

#139
post #126

Earlier quoted context omitted.

Yes - Ruby makes it easy. I'm run into the downside, though, that Ruby isn't optimized for immutable operations - tons of object instances created. I've needed to 'pythonize' my Ruby code in the worst cases - using mutable functions to dramatically reduce memory usage.

Can you say more about this Pythonisation process? How is Python any better at immutable operations? Ruby and Python are both OO languages which can be used in a procedural style. Hell, you can write a whole app in Ruby without creating a single class if you so choose.

IMO, Python is worse at immutable operations. Ruby makes it easy (but inefficient). Python makes mutable code the easy path.

Re: From Rails to Clojure, Then to Java, Then Back to Rails

#140
post #121
post #108

Earlier quoted context omitted.

*> 10.seconds.from_now* I don't understand this kind of weird "urban sprawl OOP" where classes are extended with anything. Why is 'seconds' a method on numbers? Is there also a 'pixels' method so that I could draw a line like this: 10.pixels.from.top_left_corner.to.southeast.using.red.stroke If this doesn't seem like a sensible way of programming graphics, why does the 10.seconds thing get a pass?

It's not just 'anything' that objects are extended with in Ruby, they are extended with suitable methods pertaining to the domain at hand. 'seconds' is a conversion method of one type into another. You might as well ask why do objects have a 'toString' method. Because it is convenient.

Why does one conversion method have the “to” prefix and the other doesn’t? I guess because the inconsistency looks somehow prettier.

But this is what drives me up the wall with the Ruby ecosystem: seems that whenever API designers had the choice between consistency and fun gimmick, they chose the latter. It makes some people feel happy, but often makes the next person who has to read and maintain the code miserable.

Post reply on HN