[HN Gopher] (next Rich)
___________________________________________________________________
(next Rich)
Author : poidos
Score : 1015 points
Date : 2023-08-04 14:28 UTC (1 days ago)
(HTM) web link (clojure.org)
(TXT) w3m dump (clojure.org)
| jonahbenton wrote:
| The word congratulations came into English from Latin, where it
| was formed by combining prefix com-, meaning with, to gratulari,
| meaning "give thanks" or "show joy." Gratulari is derived from
| gratus, as is gratitude. Gratus means "pleasing," "thankful."
|
| Having only had the good fortune to meet you in person a few
| times:
|
| Congratulations, Rich. You have my deepest gratitude. It fills me
| with great joy to know you are taking this step. I look forward
| to what your next stage brings.
| tbalsam wrote:
| Few people capture this spirit like the classic
| "Congratulations" video from Big Man Tyrone.
|
| While it has gone through the revolutions from sincere, to
| sarcastic in intent, to back again, I believe the inherently
| joyful attitude underpinning the original video carries the
| buoyishly optimism of sincere joy.
| agumonkey wrote:
| we see what you did there ;)
| culi wrote:
| thanks for the lesson etymonline
| mattdeboard wrote:
| Go watch the classic Simple Made Easy and you'll understand
| the comment.
|
| https://youtu.be/SxdOUGdseq4
| capableweb wrote:
| It might have started with Rich, but by now starting a
| Clojure talk with the destructuring (heh) of a word is
| basically a meme at this point.
| koito17 wrote:
| Quite literally a meme: https://youtu.be/jlPaby7suOc?t=75
|
| One of the funniest Conj talks ever.
| nordsieck wrote:
| > thanks for the lesson etymonline
|
| Perhaps you've never listened to a Rich Hickey talk before
| but he's notorious for riffing on the meaning of words.
| culi wrote:
| I got downvoted heavily but I genuinely do enjoy etymology.
| Wasn't at all a negative remark, just a playful jab
|
| Anyways thanks for the explanation. I wasn't in on the meme
| brundolf wrote:
| Hah, very fitting way to put it :)
| magicinky wrote:
| Agree. For those not familiar with Rich's famous use of
| etymology, see his 2011 presentation "Simple made Easy" as a
| good example: https://www.infoq.com/presentations/Simple-
| Made-Easy/
|
| Side question: Rich seems to use etymology as a tool for
| original thinking and clear explanations. Are there other
| people who do this as well as he does?
| aporetics wrote:
| I don't know about technologists who use it in writing or
| speaking like Rich, but you can trace writers' use of
| etymology to provoke thinking at least back to Plato. More
| recent, prominent examples would be Hannah Arendt's
| acceptance speech in 1975 receiving Denmark's Sonning
| Prize, in which she uses the etymology of "person", and at
| least Martin Heidegger's essay The Question Concerning
| Technology in which he plays with several, including the
| etymology of "technology" itself.
| Raticus79 wrote:
| I use etymonline for this kind of thing often. Our complex
| words are compositions of lots of forgotten meaning... I
| find it helps to retrace those steps.
|
| e.g. https://www.etymonline.com/word/system - see how it's
| about composition, not so much about ways of doing things.
| notduncansmith wrote:
| I've always been fascinated with language, and long had a
| hobby of looking up etymologies (my high school Latin
| teacher was great at pointing these out in class), but
| Rich's style definitely pushed me to use it as a tool for
| thinking. Naming things is (famously) hard, but a strong
| command of language (and willingness to dig through the
| thesaurus) has lit the way through many difficult
| situations.
| KingMob wrote:
| And yet, the word Hickey coined, "complect", is silly at
| best, and a gatekeeping obstacle to outsiders/newcomers at
| worst.
| fnordsensei wrote:
| Coined? https://www.merriam-
| webster.com/dictionary/complect
| KingMob wrote:
| Revived, then.
| divs1210 wrote:
| Are you complaining he used a word you weren't familiar
| with?
| rjknight wrote:
| Funnily enough, your complaint here is that although it
| may be simple, it is not necessarily easy, while the talk
| is an argument that we should prefer simplicity even at
| the cost of some (temporary) un-ease.
| KingMob wrote:
| I'm not sure how you got that impression from my comment.
|
| But for the sake of argument, I'm saying "complect" is
| neither simple *nor* easy. It's obviously not easy since
| it's unfamiliar. But nor is it simple, or to be really
| precise, no simpler than alternatives, since it doesn't
| conceptually improve on plain words and phrases like
| "complicate", "intertwine", "mix up", "separate", "tease
| apart", etc. It adds nothing, really.
|
| Your comment kind of highlights some of the errors many
| take away from "Simple Made Easy": that ease is in
| opposition to simplicity and/or that they are completely
| orthogonal.
| braza wrote:
| For whom is interested in some of the Rich's talks, this is a
| great compilation[1].
|
| [1] - https://changelog.com/posts/rich-hickeys-greatest-hits
| koito17 wrote:
| Well-deserved retirement! I recall a history of Clojure paper
| mentioning that Rich was using his retirement savings in the
| years spent to build Clojure[0]. This provides a lot of context
| as to why he has wanted to maintain ownership and tight control
| of Clojure. Overall, Clojure is a brilliant piece of work and it
| has made software development fun and productive. Many great
| talks were also given by Rich over the years, and Datomic, though
| the licensing was restrictive up until very recently, has so much
| synergy with Clojure that it's tough going back to Postgres. :)
|
| Congratulations, Rich.
|
| [0] https://download.clojure.org/papers/clojure-hopl-iv-
| final.pd...
| hk__2 wrote:
| Meta: title should be "(next Rich)", not "(Next Rich)"
| jdminhbg wrote:
| HN autocapitalizes the first letter, so dang or another mod
| would have to fix this manually.
| jturolla wrote:
| Problem-solving by Cognitect's standards has transformed Nubank
| and my approach to work. Thank you for your time here, Rich. I
| greatly appreciate the knowledge I've gained while collaborating
| with your Cognitect colleagues.
| buybackoff wrote:
| There are 16 "talks" mentions as of this writing, yet I want to
| reiterate how important, insightful, useful and fun his talks are
| and watching them have been. They move a listener to a (next
| level). Good luck, Rich! Have a nice time in a hammock :)
| JamesLeonis wrote:
| Clojure has changed my whole career, and many of Rich's talks
| directly inspired my thinking about large systems. I hope
| retirement gives Rich the best Hammock Time!
| kaliszad wrote:
| Without Clojure and the immense effort of the community around it
| and ClojureScript, OrgPad would not be possible and the
| individuals on the team would probably be stuck in some academic
| or corporate structures instead of having basically a two-
| families startup/ company. So thank you Rich and thank you to
| everybody else, who supported You on the journey to create
| something that makes coding predictable, productive and almost
| fun instead of laborious work. ;-)
| rryan wrote:
| Thanks for everything, Rich. You inspired me repeatedly.
| ignoramous wrote:
| Don't think Rich Hickey is "retiring" retiring, just that he's
| retiring from Nubank and "commerical software development".
|
| TFA: _I look forward to continuing to lead ongoing work
| maintaining and enhancing Clojure with Alex, Stu, Fogus, and
| many others, as an independent developer once again...
| Retirement returns me to the freedom and independence I had
| when originally developing Clojure. The journey continues!_
| chollida1 wrote:
| I wrote my first trading system in Clojure because a few of the
| libraries we relied on were in java.
|
| It was 2011 and I'd had about 3 years of lisp experience. I got a
| bit of side eye from people when I told them I was using a
| relatively new programming language but the fact that it was
| based on the JVM, which alot of HFT firms were using helped make
| the case.
|
| We didn't use if for more than a few years before it was retired
| and rewritten, though that was due to new requirements that
| included C++ interop.
|
| In the end tracking memory usage and allocations got too hard and
| if you've ever written something that is time sensitive you'll
| know just how slow memory allocation is, so you could argue I
| made a poor choice but for the rewrite was easy to reuse the java
| libraries when we moved to java.
|
| The harder part was porting the algorithm implementation code.
| The reason was that I chose a common lisp trick of first writing
| a DSL in Clojure that was then used to write the algos.
|
| That was the one part that seemed worse in the rewrite as it
| became far more verbose and clunky.
|
| But man was it fun, I learned more in a month than I often do in
| a year now.
|
| Thanks Rich!! It's not often you get to experiment with cool tech
| and make lots of money doing it. I appreciate your work.
| kaba0 wrote:
| > you'll know just how slow memory allocation is
|
| Just a small nitpick, but allocation is definitely not slow in
| case of the JVM, it is often faster than manually managed
| languages. It is a pointer bump only.
|
| All the necessary mechanisms of a GC does have an overhead, so
| your point stands, but not for the mentioned reason.
| [deleted]
| chollida1 wrote:
| Ok sure that's fair.
|
| Typically in HFT We just want to avoid any full sweep garbage
| collection between 8am and 6pm
| behnamoh wrote:
| > The harder part was porting the algorithm implementation
| code. The reason was that I chose a common lisp trick of first
| writing a DSL in Clojure that was then used to write the algos.
|
| Doesn't it mean that Lisp macros should really be avoided at
| all costs?
| chollida1 wrote:
| Can't say for sure, given that my sample size is one.
|
| The upsides of DSL(Domain specific languages) and macros in
| general is that they cut down on code duplication and give
| everyone using them a common language and set of tools on
| which to build an app. That part is awesome and I think
| really helped to speed up development of the algos that were
| built on top of the DSL.
|
| The downside is, that you need to learn the DSL but that's a
| very small impact in my experience. THe larger downside as
| you and I point out is that those tools aren't really there
| for other languages so if you do plan on porting the code
| base to another language then maybe steer clear of macros.
|
| But again, I wouldn't say I have anywhere near enough
| experience to claim to be an expert in that.
| uxcolumbo wrote:
| So you had to switch to C++ because Clojure / Java wasn't
| performant enough?
| WinLychee wrote:
| For extremely low latency, Clojure can be an awkward fit. By
| default there's a lot of sugar in the syntax, so if you need
| to be precise about the underlying types of your data and the
| exact datastructure, you need to toss out most of the
| standard datatypes and datastructures. It's small details
| like: "I definitely have an array of unboxed integers, and I
| need to be sure this one operation won't accidentally
| allocate a new list of boxed integers, and that this function
| I'm calling doesn't dispatch dynamically" or things like
| that. You start using `deftype` everywhere, sometimes dipping
| into Java, etc. You may as well just write java at that
| point. However from a pure Clojure standpoint, the author of
| Neanderthal has done great work on making Clojure viable for
| high performance numerical computing.
| chollida1 wrote:
| > So you had to switch to C++ because Clojure / Java wasn't
| performant enough?
|
| Clojure yes, java no. Many HFT firms build their systems in
| java and run on the jvm(specialized hardware aside), its
| plenty fast if you avoid memory allocations.
|
| It is also possible Clojure is more than up to the task now
| and its also reasonable to believe that I wasn't a strong
| enough clojure developer to fix those issues at the time and
| a more competent developer could have made it work.
|
| But like almost all things if you chose a very out of the
| mainstream language and start to have issues, most developers
| will point fingers at the language first.
|
| Side note, its a miracle that Jane Street kept using OCaml
| after the first few years and points to how strong their core
| tech team was.
|
| C++ was an external dependency brought on by other systems
| that needed to be integrated and is a far safer language to
| use. I'd imagine that if you say HFT to most developers,
| their first thought would be C++ even if they haven't worked
| in the domain before.
|
| It's like choosing Julia for your machine learning platform
| and then switching to python.
| roenxi wrote:
| > ... its also reasonable to believe that I wasn't a strong
| enough clojure developer to fix those issues...
|
| Technically it can likely be done but in practice pushing
| Clojure code for performance (eg, [0]) doesn't follow the
| usual language idioms and relies on a sophisticated
| understanding of the interactions between program design,
| Clojure, the Clojure compiler and the JVM. I'd suggest
| pointing more at the language than the programmer. In a
| situation where direct memory management is required
| Clojure is a weaker choice.
|
| Although in Clojure's defence it leverages immutability to
| squeeze out some surprising performance benefits without
| much effort. I would expect Clojure code to be fast by
| default but challenging to hand-optimise further if that
| extra level of control is required. Clojure makes it easy
| to write code that performs well, it is a stronger language
| for situations where ordinary business logic changes are
| the productivity bottleneck.
|
| [0] https://blog.redplanetlabs.com/2020/09/02/clojure-
| faster/
| Jach wrote:
| It's a shame you couldn't have pitched Common Lisp. Maybe
| could have ported your DSL pretty quickly and wound up
| having SBCL output nice compiled assembly instructions and
| shown x% speed improvement without much effort by using a
| "sister language" of sorts? ABCL in 2011 would have been a
| harder sell, it only had its 1.0 release that October.
|
| A few years ago another commenter noted they had developed
| a trading system in Lisp and C
| https://news.ycombinator.com/item?id=25222297 (further
| comments elaborate a bit) before being asked to rewrite it
| in Java. What keeps less popular languages alive at
| companies, when there's no forcing reason to get rid of it
| like really unacceptable performance, is a conviction
| (borne out as far as I can tell) that it's ok to hire
| people who don't know the language -- they'll get up to
| speed more than fast enough.
| jwr wrote:
| > because Clojure / Java wasn't performant enough
|
| Languages aren't "performant". You can write good or bad code
| in most languages, or code that isn't a good fit for a
| language.
|
| That said, there are languages which will make you incur
| certain penalties, as there is a price to be paid for
| automatic memory management with garbage collection, for
| example. These penalties generally do not matter except for
| edge cases (and HFT trading might very well be one!).
|
| There are also languages which help you write much faster
| code, but on a higher level. Clojure transducers are a good
| example: pipelines built of composable transformations, where
| data sequences are not fully realized between the
| transformations. These can provide significant performance
| (and memory allocation) improvements, while still letting you
| write high-level code.
| moomin wrote:
| There is "the expected performance of idiomatic code",
| though, which is what most people mean when they talk about
| the performance of a language.
| jwr wrote:
| Yes. And it really doesn't matter in practice. In a
| larger system this kind of performance won't matter. What
| will matter is design decisions, data structures,
| databases and access patterns -- things that are much
| more high-level than "language performance".
| nerdponx wrote:
| I suppose you couldn't convince your employer to let you use an
| embeddable Scheme interpreter for the DSL?
| chollida1 wrote:
| Well the performance hit alone would be a non starter.
| the-alchemist wrote:
| Very smart guy, can't wait to see what he comes up with next.
| elamje wrote:
| I, for one, and super excited to see how Rich and Clojure evolve
| post-Nubank. Clojure and Rich's talks greatly inspired me and
| improved my software thinking skills - I can't say thank you
| enough!
| usgroup wrote:
| Best of luck in what follows! Clojure was the first Lisp I had
| ever learned. It was really easy to pick up and be productive
| with. It was data science I tried to use it for where it quickly
| runs into a myriad headwinds but it is a beautiful language all
| the same.
| red_hare wrote:
| I got to work in clojure for two years and it was one of the most
| useful experiences of my career. I still "think in clojure" even
| now writing Python, Java, and Go. I can't wait to use it
| professionally again someday.
| whitepoplar wrote:
| i'ved only dabbled in clojure/lisp, but i've heard many lisp
| programmers talk about "thinking in lisp". can you share some
| of the particulars of what that means and why thinking in
| lisp/clojure is beneficial?
| nlitened wrote:
| From my experience with Clojure, and how it changed my
| thinking:
|
| 1. I stopped thinking about OOP, classes, "patterns",
| frameworks, and mostly think about what data flows through
| the program, how it's (they're?) transformed and stored. It's
| a much clearer view of a system, I think.
|
| 2. I started being very conservative about mutable state. I
| keep mutable parts few and mostly on the top level, and
| compose program logic from practically pure functions. It
| helps with debugging issues immensely, and fewer issues arise
| because pieces can't interact unpredictably.
|
| 3. I stopped caring about types/shape of data inside modules,
| and spec the hell out of it on module boundaries. IMO static
| typing is too strict for the former use case, and too loose
| for the latter. It allows more flexibility in implementation
| without actual breaking changes.
|
| 4. I now enjoy developing in REPL, updating a running
| program, adding features in real time. It feels so natural.
| nXqd wrote:
| with the new wave of languages emerging, and now the return of
| Rich being active with Clojure, I'm super excited and welcome
| back :)
| phillipcarter wrote:
| Rich Hickey's talks inspired me to explore Clojure and functional
| programming in college. That led to a part of my career where I
| got to help advance an FP language (F#). Can't say it was a
| raging success, but it wasn't a raging failure either. Really
| happy things worked out the way they did, though. I still look
| back at my senior project, written in Clojure, from time to time
| and find it elegant in a unique way.
| neoncontrails wrote:
| My experience was similar. I've built far more impactful things
| since then, but at the end of the day, the software that I'm
| most proud of was a calculator, of all things, that I made in
| Clojurescript. It was loosely based on the final chapter of
| SICP, and implemented an hilariously metacircular approach to
| transitioning the state of the register machine. Since the
| implementation was way more interesting than the actual
| application, I used Processing to visualize the register
| machine as if it were a rudimentary ALU (which it basically
| was).
|
| If it hadn't been for Rich Hickey, or Clojure, I'm not sure I'd
| have the slightest inkling of how joyful and creative it can be
| to write software. It was an A+ experience, even if I'd be
| swiftly fired for trying to push logic like that into
| production.
| waffletower wrote:
| I pushed another build of a Clojure service into production a
| few minutes ago. There are companies that use it as a primary
| language you know :)
| pluijzer wrote:
| Second that and just to add, working fulltime with Clojure,
| apart from all the features and practical aspect is, really
| enjoyable.
| owenm wrote:
| FWIW, I started programming F# during your tenure at MS and in
| a couple of years it became a really capable cross platform
| option - partly MS, partly community, but definitely helped out
| by you. Thanks!
| zbobet2012 wrote:
| Rich's simple made easy is the best programming video I've ever
| seen, and is ultimately I think what so many engineers need to
| "grok" to unlock better coding. I'm the "most senior" engineer
| (chief architect) in a company of more than a thousand engineers,
| and I recommend it to every junior who asks how to get better.
|
| I will also say I used clojure + aleph to write the only
| significant application I ever released which never had a
| reported bug or outage. It ran for seven years and that
| application was under constant heavy load (more than 10k TPS).
| major505 wrote:
| I stared leaning it a few agos.
|
| _1 (the last result)_ 2 (the result two expressions ago) *3
| (the result three expressions ago)
|
| oh yeah. I cant see this giving problems in the future....
| epgui wrote:
| Your message is undecipherable. I have no idea what you're
| trying to say.
| lkitching wrote:
| Assuming you're referring to *1, *2, *3 and *e, these are
| only defined within the REPL and are never used in real
| programs.
| seer wrote:
| The other essential talk I usually recommend is "beyond PEP8"
| by Raymond Hettinger.
|
| Its was one of those things that was always on my mind, but
| couldn't express it well to my peers, before encountering this
| talk. Plus its about both python and java, so increases the
| chances to be heeded by non-fp people.
|
| A lot of programmers I've worked with either don't want to
| learn well the environment they are working in, thus repeating
| stuff that doesn't fit well, or over-engineer abstractions to
| force their environment to behave the way they like, and both
| approaches can leave the codebase in shambles.
| vodkaPong wrote:
| Thanks for sharing your ideas with all of us Rich. I've only
| dabbled in Clojure but like many others I've found the language
| and your talks and ideas inspirational and exciting. A rare
| example of successfully simplifying things, referring to your
| deservedly famous talk.
| chubot wrote:
| FWIW the original announcements in 2020:
|
| https://cognitect.com/blog/2020/07/23/Cognitect-Joins-Nubank
|
| https://news.ycombinator.com/item?id=23926407
|
| https://building.nubank.com.br/welcoming-cognitect-nubank/
|
| Very interesting story!
| rashkov wrote:
| one year ago today. I'm guessing the waiting period is over for
| Rich
|
| edit: not one year ago at all
| apgwoz wrote:
| What year and month are you living in? In my timeline these
| links are 3 years, 12 days old.
| rashkov wrote:
| Whoops, yeah my mistake!
| fnord77 wrote:
| we used clojure on a pretty big project. We made the decision to
| rewrite in java after it became clear that some fairly big
| libraries we were using weren't being maintained.
|
| It was contentious, but I'm glad we dumped clojure.
|
| No matter how good a project is, it needs loads of support behind
| it
| netbioserror wrote:
| I made two large projects in Clojure: One abandoned startup SaaS
| and one internal system. Both were a damn joy. They taught me the
| immense value of loosely coupled components that exchange simple
| data with each other, from large server components all the way
| down to module-level coupling. I can only ever view gigantic,
| monolithic, opinionated web frameworks with a strong degree of
| skepticism from now on.
|
| Lisp in general was probably the most fulfilling programming
| rabbit hole I ever followed down, and I don't regret a moment of
| it. A true gold mine of skill, ability, and thought training that
| changed the way I program, even in imperative/procedural
| languages.
| cmiles74 wrote:
| Rich presented Clojure to our local software development group in
| 2008, I've been working with Clojure (both as a hobbyist and
| eventually professionally) ever since.
|
| https://www.youtube.com/watch?v=dGVqrGmwOAw
|
| At that time I had been working with Java for years, both the
| conciseness of the code and the interactivity were flat-out
| amazing to me. It's saved me time and made me 100 times more
| productive.
|
| Congratulations to Rich, I am also extremely grateful for his
| work!
| loumf wrote:
| What a great event --- we were lucky to get in on clojure when
| it was just getting started, and he was looking for places to
| promote it.
|
| I reached out to him to come to our meeting because I met him
| when I took his Advanced C++ class at NYU continuing education
| in the 90's. The class culminated in some advanced usage of his
| C++ functor library.
|
| http://www.tutok.sk/fastgl/callback.html
| [deleted]
| shove wrote:
| "just slip out the back, Jack Make a new plan, Stan You don't
| need to be coy, Roy Just get yourself free!"
| shriphani wrote:
| Thank you very much for your work Rich. I've seen your talks in
| person a couple of times and really admired the immense clarity
| of thought in every one of your ideas. And thank you very much
| for giving us Clojure - lots of fun memories.
| lukashrb wrote:
| Picking up Clojure was the best learning experience I've had in
| my professional life. Rich is inspiring; I wish him all the best.
| adamgravitis wrote:
| Orig article has lowercase 'n' in 'next', which makes more
| sense...
| seabass-labrax wrote:
| Agreed; this is a reference to the 'next' function in the
| Clojure language. @dang, please could you change the title?
| Thank you.
| WinLychee wrote:
| Thanks a ton Rich, Clojure is a real breath of fresh air in
| programming languages. I hope it continues to influence
| progamming for years to come, looking forward to seeing what you
| come up with in the future!
| munro wrote:
| Amazing news. I saw a video cast of Rick during a meeting @
| NuBank, and it looked like corporate life had sucked the life out
| of him [1]. So, I'm glad he got out of there, and I hope he's
| able to shake it off like a bad dream. Building something like
| Clojure require radical thinking, and creative freedom. I can
| only imagine how trying to fit that into your weekly scrum sprint
| would be draining. And in the monthly meetings where they recite
| the corporate values.. _shivers_
|
| [1] https://news.ycombinator.com/item?id=34781607
| meeuwer wrote:
| Funny, I too thought of that very video the moment I'd read the
| news. Rich was barely managing to feign just enough engagement
| without appearing rude. Happy he has escaped.
| frou_dh wrote:
| Maybe you're just used to seeing him in "on" mode (giving
| legendary conference presentations) and he's more subdued when
| doing everyday work.
|
| It's a bit distasteful to virtually follow him around and
| speculate about his mental health.
| munro wrote:
| Observing a public figure and expressing concern that their
| workplace doesn't align with their passions isn't prying into
| their personal life, or speculating about their mental
| health. What I'm saying is: NuBank is where hopes and dreams
| go to die, and corporate life more generally. It's not about
| being "on" or "off" but about being in an environment one can
| thrive.
| KingMob wrote:
| After two years at Cognitect (pre-nubank), I can say that his
| talks are more subdued than his usual way of speaking (in
| slack, at least). He's not as mild-mannered as he appears.
| javajosh wrote:
| Congrats Rich! You've been a big inspiration to go off and try
| new things, and to not be afraid to explain and explore the
| nuanced underpinnings of your design.
| nateburke wrote:
| Godspeed and thank you for the inspiration!
| aag wrote:
| Congratulations to Rich. Thank you for your immense
| contributions, especially in code, in software design, and in
| inspirational and thoughtful public speaking.
|
| I attended your presentation on Clojure at the International Lisp
| Conference at MIT in 2009, where we were celebrating the fiftieth
| anniversary of Lisp. After your talk, you were surrounded by
| admiring Lispers, including several of the elder statesmen of the
| community. These were people who, to put it mildly, were not
| known for being quick with praise. But one after another, they
| were saying things like "This is the future of Lisp!"
|
| By the way, I love the title. It reminds me of what I wrote when
| I started my last job: (call-with-current-
| continuation employer)
| tru1ock wrote:
| Simple made easy is the most impactful talk I have watched. Made
| a very big impact and I still think of it frequently. I never got
| into clojure but I am so glad it is around.
| michaelsbradley wrote:
| I feel the same. I was there in the room when he gave the talk:
| it was the first software-devs conference I'd attended and I
| was so green that I struggled to understand if he was making
| references to Haskell or another lang I'd been introduced to in
| the conference's previous days by various presenters.
|
| Some days later I started learning Emacs, Clojure, et al. and I
| was/am definitely the better for it.
| josefrichter wrote:
| I'm a designer and barely ever write production-grade code (coz I
| suck at it), but Rich has been my inspiration for years and I
| shared his talks available online across pretty much all design
| teams I've ever worked with, because they're just full of
| invaluable experience and wisdom. Excited about Clojure future!
| d_t_w wrote:
| I started on the JVM in '97 at University. Damn I'm old.
|
| The company I founded uses full stack Clojure for our product
| development (https://kpow.io).
|
| We're a small team pushing through a big product roadmap at pace,
| love programming every day, no chance we'd have made it in Java
| (and I quite like Java).
|
| Thanks Rich (and Stu, and Alex, and Fogus, and David, and..)!
| draw_down wrote:
| I wonder if he'll still give talks. I don't blame him if not, but
| he's really good at it.
|
| "Simple made easy" was a classic even if everyone proceeded to
| ignore the practical advice contained therein. And "Maybe not" is
| my personal favorite, a great discussion of
| requirements/provisions and the downsides of option types.
| colonwqbang wrote:
| This comment didn't really deserve to die, did it?
| Jtsummers wrote:
| It wasn't flagged. The user's comments are all dead for a
| while now.
| draw_down wrote:
| [dead]
| cutler wrote:
| I'll never forget "gem install hairball" during his talk
| "Simplicity Matters" at Ruby Conf 2012 where he basically told
| the Ruby community they were doing it wrong.
| girishso wrote:
| He specifically said in the post that he intends to work on
| next versions of Clojure. Hope we have many more talks to hear
| from him.
| cwilper wrote:
| Yep, the guy has a gift. I've never touched a line of Clojure
| or looked at Datomic, but I'm repeatedly inspired by Rich's
| talks, which I come back to often.
| zbobet2012 wrote:
| Maybe Not is an excellent video in some ways, but I just
| watched it a few years later and it reminded me that as much as
| I love almost every Rich video, I do wish he'd spend some time
| reading a little deeper on type systems and theory.
|
| For example his note about "Categorical descriptions" and then
| the explanation about maps/and spec at 25:00[1] seems to
| indicate he's unfamiliar with the difference between
| extensional and intensional type theory.
|
| The core difference between the two is extensional type systems
| decide equality on the observable behavior of the output. For
| example if two functions take the same input, and produce the
| same output extensional type systems/theories say they are the
| same. The problem with this is type equality is then
| undecidable.
|
| Extensional type systems also struggle because there are more
| than one way things might be equal! For example two string
| might be equal if you ignore case, but unequal if you don't. So
| if we want our type system to check if two functions are equal
| under case insensitivity an extensional type system will
| struggle with this.[2][3]
|
| Now in fairness to Rich, these concepts come more from the math
| community, especially the notion of types being equal under
| different paths, and in the case of Homotopy type theory are
| burred in unapproachable language and concepts... even by
| mathematicians standards.
|
| He also talks about select from spec, and it not preventing you
| from passing types broader types, and the necessity of
| specifying deeper type.[4] But, that's just an eliminator
| defined on the type[5].
|
| Now most strongly typed programming languages suffer from the
| issue he identifies when talking about not making brittle
| systems [6] and the issues you get with coupling around taking
| a map/struct/product type C = A X B (e.g a map C = {A:
| something, B: something}), and you require A so you're function
| should be good but you fail to compile because the function
| says A, and now you're passing C.
|
| It's frankly pretty annoying in places like Java that if you
| have a Point = Int x Int y you can't use it in functions which
| take a Tuple = Int x Int y. I'd actually say that's the common
| observation that both Rich, the Go Inventors, and the
| TypeScript folks have all made. You need to care about the
| extensional type of your input (and output) fairly often. And
| carring around the intensional type causes both dependency
| issues and just some general PITA's.
|
| [1] https://www.youtube.com/watch?v=YR5WdGrpoug&t=1504s [2]
| https://math.stackexchange.com/questions/4486995/what-is-an-...
| [3]
| https://en.wikipedia.org/wiki/Intuitionistic_type_theory#Ext...
| [4] https://youtu.be/YR5WdGrpoug?t=2668 [5]
| https://www.quora.com/In-type-theory-what-is-an-eliminator-a...
| [6] https://youtu.be/YR5WdGrpoug?t=2823
| w-m wrote:
| I think Hammock Driven Development[0] deserves a spot in the
| classics!
|
| [0]: https://www.youtube.com/watch?v=f84n5oFoZBc
| amelius wrote:
| Somehow this reminded me of Joel Spolsky, who apparently is
| still blogging.
| justin_oaks wrote:
| Because of your comment, I watched this for the first time. I
| agree that it deserves a spot in the classics.
|
| For those who haven't seen it, in the presentation Rich talks
| about figuring out the problem before you work on a solution.
| It's definitely something that could be improved in myself
| and in a lot of people and organizations involved in software
| development.
| [deleted]
| elwell wrote:
| Clojure(+Script) is a most illuminating language. It teaches
| (forces) you to structure the flow of data in a refreshingly
| simple way.
| adityaathalye wrote:
| This is awesome! One, it reinforces the ongoing maturing of
| Clojure, the language as a team project. Two, it portends cool
| new things to come; the kind that can only come from a place of
| personal liberty. Three, BDFL is retiring _from_ an _employer_ ,
| headlong _into_ his life 's work. I for one am cheering.
|
| (edit: typos, formatting)
| mdaverde wrote:
| This was exactly my take. This language just got a whole lot of
| significant focus behind it
| slifin wrote:
| Rich changed my whole career, I owe him a big debt!
| Jach wrote:
| Well deserved, I'm looking forward to seeing what Rich does next
| in his free time. Clojure made me love programming again the same
| way Python once did (the whole Py3k fiasco soured that). I
| haven't used it in quite a while (switched to Common Lisp) but
| I'll always be happy to see more Clojure success.
| [deleted]
| BaculumMeumEst wrote:
| i'm very grateful to rich for clojure, cognitect's
| libraries/tooling, and datomic. all of these have been well
| maintained, stable, and backwards compatible over the years.
|
| although he's no longer working on datomic, i really hope
| cognitect values growing it. it feels like such an improvement
| over sql to work with.
| __jem wrote:
| Could not disagree more strongly that Datomic is well
| maintained. I'd view it as a significant liability in any
| organization using it without _very_ good reason. My experience
| operationally supporting Datomic at even a moderate scale was a
| total nightmare and soured me on the Clojure ecosystem as a
| whole.
| BaculumMeumEst wrote:
| may i ask what you consider moderate scale in terms of
| daily/concurrent users? i've had no issue with small
| projects, but i'm curious to know where it starts falling
| over
| bjoli wrote:
| I look in envy at what Rich has achieved. I think we all have
| ideas of how we would like a language to be, but actually sitting
| down and doing it to Rich's extent is something else.
|
| As a schemer there are so many small things I would like to
| change that put me off using it for my personal projects, but
| regardless I have really enjoyed contributing to other people's
| Clojure projects. It is not far away from what I would consider a
| good starting position for my own perfect language.
| lawrencehong88 wrote:
| Your work on Clojure and other projects has been truly
| influential, and your talks are some of the best out there. I
| remember watching your "Simple Made Easy" presentation and being
| blown away.
|
| The impact of Clojure cannot be overstated. It's amazing to see
| how far it has come since its inception. You've inspired so many
| developers, including myself, to explore functional programming
| and think differently about software design.
| cfcfcf wrote:
| A lot of people have mentioned Rich's inspiring talks over the
| years. Any particular videos folks would like to share?
| addywaddy wrote:
| Simple Made Easy has to be my favourite:
| https://youtu.be/SxdOUGdseq4
| drewr wrote:
| I was about to give up on a career in software development when I
| found Clojure in 2007.
|
| Rich, I'll always be grateful to you for creating a language and
| community that got to the root of so many problems our industry
| still faces today. I'm confident it will continue to change the
| world as it has my own life.
| nenadg wrote:
| Being an independent developer is much more fulfilling than any
| other personal accomplishment
| runevault wrote:
| I remember being curious about Lisp and then seeing a new Lisp-
| style language was coming out for the JVM. I think back in the
| 0.2 days (unless I'm confusing versions with Phoenix but I feel
| like I started using both at that version number).
|
| I didn't end up sticking with Clojure because I don't enjoy the
| JVM tools/ecosystem, but Rich's talks gave me a lot to think
| about and I've been spending time in more FP and FP adjacent
| languages like Common Lisp and F# because of his thoughts and
| ideas.
|
| Thanks for everything and enjoy your retirement from professional
| development!
| yawaramin wrote:
| I remember Rich talking about how much time and money he put into
| Clojure-some of that money taken out of his retirement funds! I
| hope he has a long and fulfilling retirement with lots of
| happiness.
| User23 wrote:
| I'll always have a soft spot for Clojure. It's the only Lisp I've
| been paid to write applications in. Naturally I've written plenty
| of Elisp. I also use SBCL for personal scripts and data
| exploration, but that's always been in support of delivering a
| solution in some other language.
|
| While, as is to be expected, I don't agree with every decision
| made for Clojure, I find it to be an entirely pleasant Lisp to
| work with.
|
| So, kudos to Mr. Hickey, and thanks for sneaking Lisp back into
| corporate America!
| miero wrote:
| Agreed
| brundolf wrote:
| Rich has to be my favorite thinker in this space, absolutely love
| his talks and the way he articulates things, and I often draw
| from his philosophies in my work
|
| But, I've always been turned off to Clojure by the lack of static
| typing (I know spec exists, but it's not really the same thing).
| I did a little project once to try it out, and even there I found
| myself spending time debugging basic issues like passing the
| wrong number or wrong kinds of arguments to functions
|
| Can somebody sell me on it? I feel like I'm the target audience
| delegate wrote:
| It's a matter of habit. Once you get used to it, you quickly
| know how or why it happens and where (especially when you
| follow the correct workflow, see below). Modern editors/IDEs
| help a lot with the typos and wrong number of args.
|
| Some advice I would give myself when I started learning
| Clojure:
|
| Think not in types, but in data. It's a different model that
| requires an 'aha' moment, but it's revelatory when you do get
| it.
|
| If you come from an OO language, think not in objects
| (Elephant), but in information about objects (elephant's
| record, a map).
|
| Clojure is best served REPL driven.
|
| You can technically compile and execute, but this is not how
| the language shows its power. Here's how I use it:
|
| I evaluate code in the REPL as I write it, reload definition on
| every change. Inside a `comment` block, I call the function I'm
| writing with the required arguments. I can quickly test how my
| function behaves in corner-cases. You then construct another
| function, which calls the first. You evaluate/execute the
| function as you write it.
|
| So your program keeps growing, while you keep running/changing
| individual parts of it.
|
| Once you get the hang of immutability and working with
| maps/collections, this process becomes very engaging because of
| the short feedback loop between thought and result.
| Ketan-fullstack wrote:
| yeah REPL driven development is pure joy. Even back when i
| was a JS developer i was developing a lot of my algos in
| devtools and then copying them to code.
|
| It's like having a conversation with your program while you
| are developing it.
| bokchoi wrote:
| clj-kondo helps with catching those types of errors. it works
| really well
|
| https://github.com/clj-kondo/clj-kondo
| kudokatz wrote:
| > I found myself spending time debugging basic issues like
| passing the wrong number or wrong kinds of arguments to
| functions
|
| You'll get over that pretty fast. The bigger issue is looking
| at some code and wondering "just what in God's name is in that
| 10-level map and why?"
| kaba0 wrote:
| I am myself not 100% sold on it, except immediately after any
| Rich talk (honestly, that man could sell me anything :D), but
| it was eye opening to me that static typing is not an end goal
| in itself -- it might be a local optimum, but there are many
| more things it _can 't_ express than it can.
|
| Also, in case of Clojure you usually handle FP code with no
| side effects, written in a REPL-driven, interactive style. This
| combination is not as prone to typing errors in my opinion than
| "traditional" dynamic languages like Python and JS.
|
| Another aspect might be the one being touched in the 'Maybe
| Not' talk: Static types operate on a closed-world basis, where
| the sum of all relevant code is available at the same time.
| While this is common for certain kinds of programs, it is not
| really true of _systems_ which have to interoperate with
| services owned by different companies alltogether, having to
| support many different versions of other interfaces at the same
| time. In that case you want to be liberal in what you accept,
| and arguably, dynamic types are better fit for this job. I am
| not 100% sold on this part, mostly just reiterating what I 've
| seen others claim, notably Oilshell's author is a big proponent
| of this thought.
| tumdum_ wrote:
| I have the same reactions to his talks. Yet, long term, I've
| never been able to convince myself that clojure, common lisp
| or more popular ruby/python, are good choices for me in case
| of long running projects.
|
| I'm not sure how being liberal in what you accept is at odds
| with static typing. Static typing is about encoding the rules
| and shapes of the data that your program *knows* how to work
| on. It's not preventing some other data that you don't care
| from existing alongside.
|
| Even if I'm missing something, that doesn't change the fact
| that in most static typed languages you can fallback to some
| sort of "any" types. Seems to me it's better to have option
| to use static or dynamic types in the same program, instead
| of being forced to do *everything* in dynamically typed way.
| kaba0 wrote:
| Well, spec is there, so it is not only typed vs untyped but
| static types vs contracts. With the added ability to
| generate test data, I think the field is much more equal,
| but as I said, I also tend to fallback to statically typed
| languages, but that's mostly just out of conform.
| joshlemer wrote:
| It is difficult to explain why, but there is actually a
| positive case to be made for dynamic typing. Their benefits are
| real but a lot less immediately apparent than the benefits of
| static typing. I think this article from Eric Normand captured
| some of it https://ericnormand.me/article/clojure-and-types. In
| my opinion languages like TypeScript where the type system is
| only a verification system and has no effect on the runtime,
| combined with its emphasis on structural types, existence of
| union/intersection types, etc, go a long way towards reducing
| the downsides of static types but not completely.
| globular-toast wrote:
| As someone who's written at least as much code in dynamically
| typed languages (Lisp, Clojure, Python) as static, I find this
| question interesting because I really don't know how we know
| what types to pass. I think a big part is naming and following
| conventions. But honestly, somehow, I don't think I've ever had
| problems figuring out or passing the wrong types to anything.
| nathanyz wrote:
| Hammock time seems to be when the best ideas come around. Wishing
| Rich much more hammock time to ponder the life, universe, and
| Clojure.
| Clever321 wrote:
| This is probably great news for clojure devs. It sounds like Rich
| just wants his autonomy back. Being able to choose exactly what
| you do, and do not, work on is precious.
| [deleted]
| tmountain wrote:
| Congratulations Rich! Your talks are a wellspring of inspiration,
| and I consider you a software "hero" (the good guys vs the
| locking concurrency monster).
|
| I've been enjoying the fruits of your labors for more than a
| decade, and I have since introduced my daughter (a budding
| computer science student) to "simple made easy" and a bunch of
| your other talks.
|
| Thanks for everything you've contributed to the software world.
| It's a happier place to be as a result of your efforts.
|
| Enjoy your retirement!
| dudul wrote:
| While I never took the time to learn Clojure in depth or use it
| for any serious project, I feel like I've been deeply inspired by
| Hickey's talks. A lot of the principles he promoted helped me so
| much in my career as a developer.
| typon wrote:
| Watching Rich Hickey's talks turned me from a "software is a
| grind" kind of a guy into a "software can be beautiful". Highly
| recommend watching every single one of his talks if you are a
| young programmer. It doesn't matter if you end up using Clojure
| or not - his philosophies and enthusiasm are infectious.
| zengid wrote:
| Hey idk if Rich reads HN but if you do thank you for being a huge
| inspiration to me when I first started programming around 2014.
| You've helped change the world for the better. Cheers!
| datadeft wrote:
| Clojure was hugely inspirational to me and I could finally enjoy
| programming (focusing on algorithms). Rich has many great ideas,
| the database as a value is my all time favorite from him.
| germandiago wrote:
| Rich has become a legend for me. Btw, he is a remarkably good
| person at doing conferences. One of my favorites together with
| Andrei Alexandrescu.
| yayitswei wrote:
| Congrats Rich! I met you at Stu's house during a rousing game of
| Marvel Champions. Thank you for Clojure, Datomic, Cognitect, and
| your talks. Your creations have enriched my life in many ways. I
| hope retirement affords you ample hammock time!
| mrcwinn wrote:
| I am personally grateful to your contributions and talks, Rich.
| Thank you for everything so far.
| smrtinsert wrote:
| I had a lot of fun in Clojure in the years I used it.
| Congratulations on your retirement Rich, well deserved for sure.
| valbaca wrote:
| (inc hammock-time) ; Congratulations!
| aardvark179 wrote:
| Thank you Rich for everything you've done over the years, and I'm
| really happy to see that Clojure continues to have a future.
| jwr wrote:
| Rich, thank you for creating and maintaining a tool that has
| helped me build a successful SaaS business. I could not have done
| this without your work and your insights. I also learned a lot
| from your talks, and I do hope to meet you again at one of the
| Clojure conferences.
| devgoth wrote:
| Curious, what SaaS space are you in where you found Clojure was
| a good fit? Would love to add this info to my brain-base for
| future ideas :)
| stefcoetzee wrote:
| PartsBox https://partsbox.com/ -- an app that lets you take
| control of electronic parts inventory and electronics
| production.
| jwr wrote:
| I think Clojure is a good fit in a lot of SaaS applications,
| especially those that are complex. It helps in dealing with
| complex problem domains, and lets you reuse the same code on
| the client side (through the magic of ClojureScript). Small
| benefits accumulate, and while it's possible to write
| anything using any language and tools, Clojure reduces the
| amount of code and work that I have to do, thus enabling me
| to run a solo-founder business.
| [deleted]
| quantum_state wrote:
| Wish you all the best, Rich.
| err4nt wrote:
| Congrats Rich, and thanks for everything you've done, including
| being in inspiration for so many!
| deltree7 wrote:
| May have to do with https://finance.yahoo.com/quote/NU?p=NU and
| vesting periods :)
|
| A true computing thought leader. All the best Rich. My only
| complaint about you was not open-sourcing datomic and making it
| free for developers.
| fndex wrote:
| https://blog.datomic.com/2023/04/datomic-is-free.html
| nightwolf wrote:
| FWIW, Datomic still isn't open-source, but it is free:
|
| - https://blog.datomic.com/2023/04/datomic-is-free.html -
| https://blog.datomic.com/2023/06/datomic-cloud-is-free.html
___________________________________________________________________
(page generated 2023-08-05 23:02 UTC)