Amazing Ideas that blew your mind

Priority queues make the world go round :slight_smile: Wait until you start looking into all the heap variants (binomial, fibonacci, etc.).

Funny enough about the push toward arrays + binary search, Alexander Alexandrescu had a great talk on optimizing the sorting implementation in C++, and focusing on mechanical sympathy that ended up being counterintuitive to algorithmic analysis.

3 Likes

People here may find this amusing, but the concept of property-based testing is new to me (this year). Prior to learning this concept, “testing” was synonymous with example-based testing to me.

You mentioned it, but homoiconicity is itself absolutely amazing, We’re still discovering new ways to take advantage of this language feature decades on.

3 Likes

I was a programmer for 5 years, using imperative languages then I took 30 years off and have restarted with Clojure. I feel like I’m having my brain rewired but I’ve slowly realised that some of the things I’ve learned aren’t Clojure specific.

Learning about collections and Clojure’s abstract data abstractions, it hit me explicitly that ‘ordered’ and ‘sorted’ are different things but we use the words very carelessly. Humans classify and put things in order in experimental ways that help us think and make decisions. That isn’t easy(/possible?) to do with algorithms. ‘Sorting out your old clothes for the charity shop’ is a personal-values-based filter, though you might do it through prioritization with a cut-off point. This is a similar process to using relative-value ordering to select the user-stories for a Scrum sprint.

4 Likes

This blew my mind. I’m still trying to pick my brain together.

8 Likes

So many golden nuggets in 30 minutes :slight_smile:
It’s worth to take the time and print out some papers to read (sorry paper you still rule). It certainly helped me understand the tools I’m using better and create better things with them.

1 Like

You know, that is not a bad idea. You need a printer like a few times a year, and so I have always been too cheap to purchase one. But if I was going to view it as a tool to make me read more papers…

I can recommend getting a printer with refillable ink tanks. The cost will shift from cartridges to paper. They are also great at printing photos which can delight dinner guests or non-tech savvy relatives. Much cheaper over the long run over cartridge ink-jet printers.

1 Like

Polylith. The idea is brilliant and the execution is just plain beautiful. I say without having put it to use yet, but I was given a demo during lunch today and my mind was blown for the second time in short succession. (I had been watching David Nolen’s talk just before the demo.) Got reminded by this reddit post:

5 Likes

I’ve been thinking about buying something like a Papyr or a Remarkable for a similar reason, like can they really replace paper?

@PEZ Can you elaborate on why Polylith was so brilliant/beautiful for you?

1 Like

@didibus I got a Remarkable2 for my wife some time ago, and she uses it all the time. It really has a great feel for writing, and if you’re used to doodling diagrams and taking notes, it’s a very viable replacement for pen and paper.

I can at least try. It is all a bit over my head still. What’s extra cool is that the idea, at its core, is super simple, if you arrange your dependencies and interdependencies in a certain way, whole categories of problems never arrive at your doorstep. There seem to be zero drawbacks with it. I know it was the architect of Polylith that gave me the demo, but anyway.

And the way it separates development from deployment, and thus lets you keep deployment options open, and deployment decisions deferred until really needed, is yummy for me who think development is fun and deployment issues dreadful. Then those well crafted CLI commands giving you overviews of your full project.

Speaking about developer fun. I too want to be able to use the same REPL for my whole project. I am not going to settle for something less than that next time I build something new.

Also, I think the ability to treat your other sub-projects (components) as if they were libraries, without having to make them libraries, enables 100% healthy reuse of your code.

I’m going to spend the weekend opening this box a bit more, maybe I will. be able to articulate this feeling of sensation a bit clearer after that. :smiley:

3 Likes

There are two episodes of the ClojureScript podcast where Jacek Schae interviews the team behind Polylith, btw. Here’s Part 1:

Thanks. I’ll be interested to hear how you feel about it after thinking about it more.

When Polylith first appeared, my first reaction was “It’s a monorepo that you can build multiple artifacts from and have a REPL that encompasses all your code… just like we have at work”. Only they were tying themselves in pretzels with symlinks and Leiningen and we had already moved on to Boot.

I’ve kept looking at it each time they come back and announce a new version, and it’s been kind of interesting to see them try to address all the “pretzels” in their earlier approaches and, to be honest, they’re still struggling with deps.edn because their current approach relies on things that are deprecated and will not be supported in future: specifically :paths/:extra-paths that reach outside the project tree.

We’ve also had to go through a few evolutions – since we switched to deps.edn in 2018 – and I recently blogged about where we’d ended up with monorepos and deps.edn. I guess we just didn’t think we’d discovered anything new and didn’t feel like writing an “architecture” website/project about how we have been working for years.

Polylith feels to me like exactly what we’ve been doing at work for ages, except with a lot more formalism, proscribed naming, and boilerplate.

2 Likes

That is being fixed as we speak.

I’m so happy the Polylith team did realize how this could benefit so many more. Joakim Tengstrand took three months pause of earning money to do the do the rewrite from Leiningen to tools/deps. Devotion.

I think it is much of what you have been doing. Didn’t get the impression of much boilerplate, though. And in addition to formalism and conventions there are also the command line tools around it. Don’t know how much of that is out there in projects using similar ideas.

3 Likes

This is a very similar talk by Guy Steele talking about similar things (I just skimmed the talk you posted but it looked to cover a lot of the same material only more low level)

3 Likes

thi.ng geom, which does very cool mathematics in a completely polyglot framework that uses emacs org-mode to output Clojure.

2 Likes

The Wolfram Language (principles) because of two things. First, the language consists of symbolic expressions => they can represent anything, data, programs, formulas, graphics, documents, …; and you can work with these in macro-ish ways to transform them. Second, it aims to make the whole world “computable” and comes with a huge built-in knowledge base (from physics to crops to historical people and works of art - think wikipedia, but in a structured way) and thousands of functions (from high-level math to physics to machine learning…).

4 Likes

Also, Fulcro, the full-stack webapp solution (and a successor of Om.next), because it is based on a small number of very well thought-out principles, that enable the implementation of powerful extra features (such as UI State Machines and Fulcro Rapid Application Development) with just “little” work and because it provides a complete, integrated solution for webapp needs

If you look at the Fulcro book, it seems overwhelming because there is hundreds of pages - but the basics are really simple (though it takes time to “get” them) and a lot of it is about the additional features (and thus safely skipped at first). I think the framework is really cool and powerful, saving you a ton of work that any non-trivial app will (eventually) require - once you get over the learning curve. Shameless plug: I have tried to make it more approachable and less scary than the official Dev Guide with my Minimalist Fulcro Tutorial.

9 Likes

This topic was automatically closed 182 days after the last reply. New replies are no longer allowed.