http://breakintochat.com/blog/2013/02/18/amit-patel-creator-...
119 karma · joined November 30, 2010
http://breakintochat.com/blog/2013/02/18/amit-patel-creator-...
Here is the original HN post about Cloact: https://news.ycombinator.com/item?id=7037038
You can see people comparing it to Om.
Here is a blog post of his from 2013 that mentions Om: https://swannodette.github.io/2013/12/31/time-travel/
And yeah, Reagent "won" because it was way simpler but I'd find it hard to believe that it wasn't influence or inspired by Om.
Loved reading that. I don't know if it's true, but I hope so.
https://github.com/cgrand/enlive/issues?state=open
I got hit by a bug the other day (it assumes http resources are UTF8), and even though fixes are available, none have been merged in.
See also "Is Enlive Alive?"
https://groups.google.com/forum/?fromgroups=#!topic/enlive-c...
Having said that, I still think Enlive is awesome. I just which development was more active. Take a look at the network graph and you'll see people fixing a lot of issues on their own branches.
Careful. Statements like this only create more "elitists" by insulting people. Have you seen leiningen, Counter Clockwise, or La-Clojure? Part of the reason you need all that tooling is because of the objects. If you haven't become proficient in a functional language, can you really say the tooling is insufficient? It's like telling someone their movie sucked without seeing it, or only staying for the first 5 minutes. When I get rid of my Foo, FooImpl, JPAFoo, FooService, FooServiceImpl, FooDao, Bar, BarImpl, etc, the requirements for my editor and tooling suddenly change. If I'm not using big heavy frameworks, I no longer need all those plugins. I don't need to be able to click on my spring configuration and jump to the implementation. When I'm working in repl, I don't need heavy integration with Jetty (for example) because I never need to restart the server. If my restful webservice just needs to be a function that returns a map (ring), then I don't need annotation support, or some framework plugin. If my code is data, my editor already supports both.
I need to move around functions, and compile my code. Code completion? Navigation? Sure, but Emacs, CC, La-Clojure can all do that. I hope you aren't insinuating that Emacs/Slime is a "simple" text editor ;)
Tutorials are their own issue. A new object oriented programming language only needs to teach you their syntax and their API. A Clojure tutorial targeted at someone who has only ever done serious work in an OOPL is going to have to explain not only Clojure, but fundamental concepts related to functional programming. Once you really learn one, the rest all make sense in the same way it's relatively easy to jump around OOPLs.
If you've accepted the technical argument, don't let those other things hold you back. The Clojure community is great, and the Eclipse and IntelliJ stuff has really come a long way.
Place oriented is the opposite of having a time dimension. It means that at any time, the thing at that place might be different. This was done for your second argument, efficiency. The talk argues that if functional programming with values is efficient enough for you, than you shouldn't be writing object oriented software.
Values on the other hand absolutely have a time dimension. His "Facts" slide says it as does datomic and his revision control example.
He has another great talk that touches a bit more on time:
http://www.infoq.com/presentations/Are-We-There-Yet-Rich-Hic...
It's a call to stop writing object oriented software. He gives a convincing argument. You can probably find a thing or two to disagree with, but like he says, this is something we all know to be true. It's just that place oriented programming was necessary limitation due to hardware. Eventually, that limitation will no longer exist, or cease to be relevant. At that point, the only thing that makes sense is "value oriented programming" and by extension immutable functional programming.
Datatomic takes this same argument and applies it to databases.
Edit: And this might be crazy, but perhaps this is the answer to the "why can a building be built in a week, but a software project will be a year late and broken". What if you started on the first floor of the building, came in the next day and the dimensions had changed. What if when you needed two similar walls, you took a copy of one. But when you put a light switch on the copy, you accidentally put one on the wall you copied. Buildings are made up of values. A wall of a certain length. A staircase of 42 steps. These values don't change, and if they did, constructing buildings would be a hell of a lot harder.
https://gist.github.com/3219448
h/t @swannodette
(I'm only kidding around...sorta.)
#lisp
11:01 < TimoT> aren't enterprise solutions like regular solutions but cost
10-100x more?
11:01 < jsnell> they also don't work>If I'm a developer, especially a developer on a project for which I'm not getting paid, I'll do the development using whatever the hell tools I want, thanks. And if someone tells me I can't, frankly, it's not really up to them.
This is exactly the position of the Hudson developers, so why call them drama queens? They can't "just fork it". It's a large open source project with 100+ developers. They need to plan, get consensus, etc. Those "meetings" you seem to disdain aren't just for people to bitch.
I hope they do change the name and fork it. Oracle needs to learn a lesson here and they are absolutely powerless (for once) other than having the TM on Hudson.