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.
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.
There is quite a strong showing of Clojurians from Bristol, Glasgow and other user groups here.
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.
Why would you use a macro in Compojure to measure performance instead of Ring middleware? Why? Why?!
If you remove laziness from a Clojure program you tank performance as you realise all structures.
Korny Sietsma is kind of making Malcom Spark's point about Ring and Jetty not being suitable for modern Clojure web development.
Over-engineered code is slow, shocker!
Cached data is fast, double-plus shocker!
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.
This is not really a talk about performance testing but about an arrogant development team.
DPP is a kind of presentational chameleon, this time he's completely adopted Bodil's pony-style.
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.
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.
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.
James Henderson has slipped a load of Haskell-inspired monads passed the crowd here in his talk about Flow.
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.
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.
You can give the Scala developer Clojure but you can't take the Scala out of their code.
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.
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.
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.
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.
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.
Amusing story about Donald Michie and Alan Turing about failing to find Turing's buried silver after the war.
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.
Meta talk about talks.
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.
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.
Aphyr just formed a monoid hug with audience participation.
Also the video of this talk is going to record some truly terrible accents.
Transducers use state for some of the traversals. E.g. take and partition.
Tesser allows distributed system calculations that pipe together reducers and combiners.
Many data operations can be combined together into a single traversal.
Aphyr: Non-determinism is evil, but where our power comes from
Fork-join shows contention on high numbers of cores (48).