Fork-join shows contention on high numbers of cores (48).
Aphyr: Non-determinism is evil, but where our power comes from
Tesser allows distributed system calculations that pipe together reducers and combiners.
Many data operations can be combined together into a single traversal.
Transducers use state for some of the traversals. E.g. take and partition.
Aphyr just formed a monoid hug with audience participation.
Also the video of this talk is going to record some truly terrible accents.
Interesting talk on Lenses that was slightly more humane than previous talks on the topic I've attended.
Lenses offer the ability to hold a focus on multiple points in a data structure and apply operations to them.
This becomes more relevant where, for good reasons, we want a single data structure to represent the whole of the applications data.
I feel like I'm being trolled with boredom. Like there's some weird challenge in how bored you can be before you walk out.
Meta talk about talks.
Project had a classic frontend/backend split.
Frontend prototype iterated and varied far more than anticipated. Little value in trying to link the many variants in an actual app.
Templates reloading was hard as resource changes don't trigger reloads, ended up touching the namespace file to reload the associated templates.
Amusing story about Donald Michie and Alan Turing about failing to find Turing's buried silver after the war.
By not providing an identity service the government is avoiding collecting user data but has created the problem of which private company you trust to represent your identity.
Direct testing of ring handlers with Kerodon
Complex journeys (such as off-site authentication) can be wrapped as a single function in the journey description.
Thanks Glen Mailer, for fixing a redirect bug in the library.
Project used the reloaded pattern rather than strict Component architecture, interesting.
Did consider switching to Component half-way through the project but didn't feel it was the right thing to do.
Your hobby code is always exciting and great because you don't have to share your product direction with others and if you get stuck you can just ditch the project with no consequences.
Good point from Philip Potter.
Gov.UK Verify uses an Identity Hub to indirect the service you are trying to access and the identity provider.
The project was experimenting with OpenID Connect.
You can give the Scala developer Clojure but you can't take the Scala out of their code.
I don't think you can do remote CSP without knowing about the nodes in the channel. I think the speaker might confusing core.async and Erlang.
Both of the MixRadio talks have been interesting and have had a strong Devops influence, the first on infrastructure and deployment and the second on performance tuning.
Again though we're learning to RTFM.
Lots of praise for YouKit.
James Henderson has slipped a load of Haskell-inspired monads passed the crowd here in his talk about Flow.
Slightly odd closing keynote from Bodil who was taking a perspective of someone who considers herself "outside" the community now.
There was praise for the community but acknowledgement that it is still mostly white men. There was a lot of funny pictures and back-handed compliments.
There was a lot of praise for Erlang, which seems to have been one of the themes of the first day of the conference. I'd be the first to acknowledge the strengths of Erlang but I honestly think there is a massive difference between the core competencies of Clojure and Erlang and both actually scale in their own ways but there are things that both are going to shine at and I suspect then Venn diagram of those things don't intersect much.
Bodil also name-checked Racket another really interesting language worthy of attention.
She also mentioned core.typed and her disappointment that it hasn't really taken off but I don't think you're really going to get a lot of type lovers in a Clojure crowd.
Ctries: linear access, can reconstitute a structure from the history of its operations. Source coming soon on Github.
Transient data (or mutable by another name) that you can make immutable snapshots from in O(1)
Deref creates independent mutable structures based on the original
Designed for safe concurrent modification.
DataScript is an in-memory datastore with a DataLog query interface.
It can be used to model the state of a SPA in a powerful way where queries can be used to generate views.
DPP is a kind of presentational chameleon, this time he's completely adopted Bodil's pony-style.
This is not really a talk about performance testing but about an arrogant development team.
Okay this is really bad, apparently people are selecting * from multiple relational tables and joining in memory. That's a serious cultural problem, not really an issue with the technology itself.
Over-engineered code is slow, shocker!
Cached data is fast, double-plus shocker!
Korny Sietsma is kind of making Malcom Spark's point about Ring and Jetty not being suitable for modern Clojure web development.
If you remove laziness from a Clojure program you tank performance as you realise all structures.
Why would you use a macro in Compojure to measure performance instead of Ring middleware? Why? Why?!
There seems to be a ThoughtWorks disease of creating web apps with performance issues. Presumably because they build and then deliver on on timeline rather than building iteratively into a requirement or perhaps because they don't externalise scalability into the platform.
There is quite a strong showing of Clojurians from Bristol, Glasgow and other user groups here.
This nice thing about a single-track conference is that you don't have to choose and everyone is in the same conversation.
The venue is packed though, at the limits of what the Skillsmatter building can hold.
Arrived a bit late on a very cold, foggy and drizzily day. The first talk I caught actually ended up with the speaker recommending the use of Erlang.
I kind of agree: there's a set of distributed low-level problems where building a fake Erlang on top of the JVM is a poor fit.