Fork me on GitHub
#clojure-uk
<
2017-08-29
>
thomas07:08:23

morning 😼 mogge

seb23107:08:29

ah thank you @dominicm and @chrisjd I was assuming as all I could ever see was \", that was what was being returned

yogidevbear07:08:02

@jonpither how was the cruise? Or are you still on holiday?

jonpither07:08:17

Back at work today 🙂 The cruise was excellent thanks, saw a bit of Pompeii, Naples, Nice. We started in Barcelona - arrived during a media invasion and marches over the terrorist incident which was a bit surreal and sad. I now need some health living after eating Amercian style - the cruise was run by Disney. The kids loved it, safe to say.

yogidevbear08:08:22

Sounds like a really memorable trip. You can pester Catharine for healthy living tips 😉

jonpither09:08:13

a healthy living recipe that mitigates for drinking too much wine would be good 🙂

maleghast09:08:43

@jonpither - “too much wine”…? I am not sure that I understand,,,

maleghast09:08:55

(glad you had a good holiday)

jonpither09:08:39

I can no longer procrastinate over my ClojuTre talk... although it's amazing the tricks your mind plays on you when you're trying to force it to do something

jonpither09:08:19

I have the outline of the talk planned, it's just.... write it all up and practice to an empty room

jonpither09:08:39

so, what's the weather like outside?

maleghast09:08:55

Cloudy and chillier than it’s been for a while up here…

dominicm09:08:04

Sunny Milton Keynes today

dominicm09:08:21

I'm wearing shorts ☀️

yogidevbear09:08:49

Sunny in West Sussex

yogidevbear09:08:21

My procrastination monster is starting to rear it's scary head and chase the mindless monkey away. I've got less than two months until my (first ever) talk in October.

yogidevbear09:08:08

Been playing around a little with Gorilla-REPL and think it works quite nicely as a tool for giving the talk

yogidevbear09:08:48

Thinking I might save a few Gorilla-REPL worksheets and load them in as/when I need to cover different topics

yogidevbear09:08:05

"What could possibly go wrong?"

otfrom09:08:24

slightly overcast in Dundee today. Should clear up a bit later

thomas09:08:28

very sunny and warm here in Rotterdam (28c) 🌞

otfrom09:08:33

oof. too hot

otfrom09:08:47

but then I moved to Scotland for the comfort

dominicm09:08:51

@yogidevbear Been talking with @malcolmsparks about this recently. I think there's some room for a new notebook that: * Works outside leiningen * Works with your normal editor: emacs/vim/etc. We have a concrete use-case for Malcolm's talk coming up also. I have a design that looks like it should work, but haven't proof tested it yet.

dominicm09:08:24

The works with part should ofc be optional. But that can always come later.

yogidevbear09:08:40

I remember you mentioning this a few weeks back

yogidevbear09:08:45

I really like the idea

yogidevbear09:08:05

I'd be happy to help out with testing (and maybe some development down the line maybe), but I'm not an emacs/vim user so I'd fall into the "etc." part there

dominicm09:08:47

There shouldn't be any requirement. You could type stuff into a lein repl prompt & it should work.

thomas11:08:01

@otfrom yes, it is quite hot... but I am stuck inside anyway.

jonpither11:08:36

Hi All, @mccraigmccraig was kind enough to give this interview. Please please show some clojure-uk LOVE and RT it? https://twitter.com/juxtpro/status/902495940291985408

yogidevbear12:08:40

But it looks like a polar opposite to your slack profile pic... Does not compute 😉

mccraigmccraig12:08:54

slack profile pic was from a party, there was fancy dress and giant wigs were involved... the rest of the difference is accounted for by time and a deep-seated aversion to razor blades

danielneal12:08:56

maybe the image is upside down

chrisjd12:08:38

Nice interview! 🙂 Really enjoy reading those; it's a good source of motivation and just interesting to get the insight.

jonpither12:08:22

thanks @chrisjd. The next one is Yogthos. He just happens to speak a million words a minute full of interesting stuff and so it will take us a little longer to transcribe. He's doing a guest Clojure In - the first one outside of Europe.

maleghast13:08:16

Yeah, great interview - really enjoy this series, @jonpither

maleghast13:08:39

(give me another year, as long as the funding holds out and I will have enough of a tale to tell myself… 😉 )

conan13:08:28

I'm about to start re-writing the infrastructure of an application which uses too many records at the moment. I'd normally reach for component for this kind of thing, but in the spirit of avoiding records maybe integrant makes more sense? I will have to repeat this refactoring process several times for different applications, so I'm interested in any experience you lot may have of using the two in comparable circumstances?

mccraigmccraig13:08:40

@conan integrant scratches most of the component itches i had (principally record infection), and if i didn't also want clojurescript support and an ability to deal with factory functions which return promises of things then i would go with it

conan13:08:04

oh, is it not cljs-friendly? that's a showstopper for me, too

conan13:08:18

i hadn't thought that far ahead yet, thanks for the heads-up

mccraigmccraig13:08:24

oh, i'm wrong - it is cljs friendly

mccraigmccraig13:08:45

but i don't think it works with promises

conan13:08:10

yeah it seems all to be cljc

mccraigmccraig13:08:51

(i.e. you can put a promise of something into your system, but if you want to pass the value in that promise to the constructor of something else you are out of luck)

conan13:08:00

i love that the benefits of writing the same language on the frontend and backend extend well beyond syntax, having the same infrastructure and workflow is awesome btw

dominicm13:08:03

this is a general cljs problem, no promises there.

dominicm13:08:31

@conan Not gone deep on integrant, but I did port JUXT's starter repo to it. It was a very pleasant experience.

mccraigmccraig13:08:34

i wrote something that does deal with promises - https://github.com/employeerepublic/deferst - but i'm not nearly as good at supporting my stuff as weavejester 😊

dominicm13:08:47

@mccraigmccraig curious to know of concrete examples of async component creation in cljs?

mccraigmccraig13:08:12

@dominicm i have components which depend on cordova filesystem DirectoryEntrys and getting these presents a callback API, which we then wrap in a promise API... i think there are some other cordova plugins we use too which return a promise of an object on initialisation

dominicm13:08:19

Interesting. I couldn't think of anything in the browser.

dominicm13:08:37

@conan Curious to know what you put into components on the front-end? (never needed it myself)

conan13:08:31

it's pretty much the same as on the backend, just a different set of running things. the biggest project i worked on had a couple of event-handling loops, a websocket connection, a logging system, that sort of thing

conan13:08:43

it's so nice to have the same keyboard shortcuts for (go) and (reset) in my IDE for both clj and cljs REPLs

dominicm13:08:43

I wonder if I should use it for that. Those mostly end up in a defonce, then passed around. I can recall a handful of times where nothing worked until a hard refresh, possibly related.

conan13:08:57

it's the same problem i always used to have in my java days, but less bad: you start a new project, including a big workflow library or framework doesn't seem worth it, then 30 minutes later you're making progress and start to wish you'd done it from the beginning

conan13:08:35

except in java it was like 3 minutes later but it took 3 days to implement

conan13:08:10

right, well i'll try integrant and if i find anything interesting i'll write a blog post

jonpither13:08:36

we're looking at taking on a medium sized clj codebase, and debating whether or not we should carry on with what's there, or do a big port to techs we would prefer. In the past, I've always been surprised at how quickly you can port across a technology.... once you get into the rhythm you can become somewhat robotic about it.

dominicm13:08:01

@jonpither that somewhat makes me question whether the libraries are all that different?

danielneal13:08:40

what are the technologies you're thinking of migrating to/from

jonpither13:08:47

our choice is going from JS & React.js -> Cljs & Postgres to Datomic

jonpither13:08:30

@malcolmsparks is more up for the second one than I, but I would definitely migrate a JS front end to cljs and I wouldn't expect it to take that long

danielneal13:08:57

yeah, it makes sense with being a clojure shop as well 😄

jonpither13:08:57

Malcolm would also prefer his Yada stuff 🙂

jonpither13:08:26

I think also the CLJS would be better architected... Reagent etc, modularised

danielneal13:08:23

what's making you hesitate about the second one

jonpither13:08:00

I was once on a project where talking about changing a tech was much more involved and arduous than doing the actual change (Storm -> raw core.async)

conan13:08:30

i generally believe you should be rewriting your high-value applications anyway, so i'd always say to run a test of the port for a short time and see how far you get

conan13:08:29

if the system is keeping your company ahead of the competition, you need to keep the system ahead of the competition

jonpither13:08:37

@danieleneal - I like Datomic, but I wouldn't automatically sign off a rewrite without sizing up how much SQL there is... and if there's funky PSQL extensions used etc

jonpither13:08:00

Also Datomic needs more devops - the transactor etc

conan13:08:13

(i'm also considering a PSQL > Datomic migration, but that is a bigger job so comes later)

jonpither13:08:31

hehe. Let's hold hands and jump off the cliff together

jonpither13:08:53

what's your thinking @conan ?

conan13:08:13

the other day somebody asked me how frequently a value in our DB changed. i immediately promised that it would be easy to get that data, until i remembered it wasn't datomic and so there was no accessible record of changes

conan13:08:48

@jonpither i'm actually thinking of building a new system with a new, Datomic DB, and slowly borging the other systems into it

conan13:08:39

but then we also have other reasons to avoid distribution in our architecture which may not apply everywhere (for example, we don't really have to worry about scalability)

jonpither13:08:17

yeah Datomic and scalability is the interesting intersection

jonpither13:08:08

theoretically it's great for horizontal scaling of Peers, but it's not for big data, and for where performance is massively important, then you'll likely be relying on other caches also (cloud front caches)

conan15:08:01

i really think the datomic scalability problem is overemphasised

conan15:08:38

if you're in a very high write throughput environment then it might be troublesome, but actually you'll find similar problems with other systems, i'm not convinced that datomic will add a smaller bottleneck than the underlying storage it's running on (unless you're backing it with a massive cassandra cluster or something)

dominicm15:08:58

Who really has big data?

dominicm15:08:01

@conan the problem really is that high write environments + datomic = datomics datom limit quite quickly.

conan15:08:39

i haven't hit that myself

dominicm15:08:44

from my notes: Datomic has a 10B datom soft limit<<dod10>>. The current hard limit reported by Cognitect is 100B datoms<<dod100>>. [quote, Stuart Halloway, 'http://www.datomic.com/day-of-datomic-2016-part-5.html[~39:40 100 Billion limit]'] __ If you're gonna put more than 100B datoms in datomic. Just don't __

dominicm15:08:21

The advice is to call cognitect if you're going to exceed 10b, & do special capacity planning with them.

maleghast15:08:00

Plus there are good reasons to use PostgreSQL for some__ things… 😉 (I like Datomic and think that I may love__ it given more exposure, but there are solid reasons for using other tech choices instead and / or as well in a lot of cases.)

conan16:08:23

i broadly agree with that statement, but beyond integration or skill reasons (i.e. you want to use another tool or a person that uses SQL) then i can't think of any reason to use Postgres. Maybe geo stuff, does Datomic do that? I'm basically in love with Datomic.

conan16:08:36

actually price is a good reason

maleghast16:08:17

@conan - Price, GIS and JSONB are all (potentially) good reasons to use PostgreSQL either alongside or instead of Datomic.

maleghast16:08:41

I am currently building a platform that uses both

otfrom16:08:55

hmm... 10B rows is 5-8d of one particular table for me

otfrom16:08:01

do I count as big data now?

conan16:08:47

if you can grep it, it's not big

otfrom16:08:03

@conan how long do I have to wait for grep to return?

conan16:08:30

you don't have to wait, you just have to prove that it will for your given input

conan16:08:13

@maleghast yeah that makes sense. i've used elasticsearch alongside datomic before, so i can see the use case

conan16:08:29

definitely the alongside use case, not the instead of...

maleghast16:08:44

Oh for sure! I am using ES as well as both in this one, actually…

conan16:08:00

i actually don't know why they bothered including any kind of lucene full-text search in datomic, it's so poor

maleghast16:08:44

I imagine that there was a concern that it could not completely lack such a thing…