This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2020-01-30
Channels
- # admin-announcements (1)
- # announcements (1)
- # babashka (8)
- # bristol-clojurians (1)
- # calva (36)
- # clojure (115)
- # clojure-europe (5)
- # clojure-italy (4)
- # clojure-nl (3)
- # clojure-norway (3)
- # clojure-uk (161)
- # clojuredesign-podcast (3)
- # clojurescript (71)
- # core-async (34)
- # cursive (26)
- # datomic (43)
- # docker (2)
- # emacs (24)
- # figwheel-main (1)
- # fulcro (36)
- # graalvm (7)
- # immutant (2)
- # jackdaw (1)
- # jobs (2)
- # leiningen (8)
- # luminus (5)
- # off-topic (29)
- # onyx (1)
- # other-languages (5)
- # pathom (6)
- # pedestal (3)
- # reagent (11)
- # ring (8)
- # shadow-cljs (42)
- # spacemacs (17)
- # specter (6)
- # tools-deps (80)
- # videos (1)
Does Godwin’s law still apply if I’m complaining about other people doing the comparison ;)
@otfrom Seriously though, I just cringe a bit when people make these fictional shows and claim that they’re going to “take on” some real world political issue. They get to define the world in which those choices are made. I can make anything look like the right decision if I get to write the context and consequences in a script. It’s dumb. In an ideal world, everybody should recognize the dumb immediately. People just have a blind spot for this “trick”, when it suits their own personal politics. It’s better to engineer that world in a way that the decision is controversial, or had unexpected consequences that may have left the protagonist wishing they had done something else. I hope they’ll do this, because if it’s going to be 10 or whatever episodes of them hammering on about how obviously right certain things are, because the script says, then it’s playing tennis without the net. We’ll see... 🙂
something something fictional show something 🙂
@seancorfield best to read all or none. “Some” is less effective;)
(I'm always surprised at how animated people get about opinions expressed in fictional shows)
(and, yeah, I read the entire scrollback)
@seancorfield Well, fair enough. I grew up on TNG so it’s my “thing”. That said, I do think there is a wider point about, Hollywood, celebrity and politics... but Ricky Gervais said it better at the golden globes :)
For some definition of "better". Mr Gervais says a lot of things that upset various groups of people at various times.
@seancorfield Haha! Yeah. It’s great 😉
now, the effects etc., do not age well what so ever, but the storyline was fantastico!
what I find funny/amusing/fascinating how Start Trek completely missed out on wireless... Cmd. Data would have a constant connection with the ships computer(s) and not use a console to interact with.
if anyone wants to follow along with my core.async fun: https://clojurians.slack.com/archives/C05423W6H/p1580380955324000?thread_ts=1580379349.323300&cid=C05423W6H
and here is some commented code showing how I use core.async to turn some input into multiple outputs
(let [;; set up the input
input-chan (a/chan 32)
input-mult (a/mult input-chan)
;; set up the reduction end points
plus-chan (a/reduce + 0 (a/tap input-mult (a/chan 32)))
all-chan (a/into [] (a/tap input-mult (a/chan 32)))
zero-chan (a/into [] (a/take 1 (a/tap input-mult (a/chan (a/dropping-buffer 1)))))]
;; pipe in the data
(a/pipe (a/to-chan (range 34)) input-chan)
;; collect the results
{:all (a/<!! all-chan)
:plus (a/<!! plus-chan)
:zero (a/<!! zero-chan)})
what does core-async
get you in this case that plain old clojure doesn't?
(for me it comes down to back-pressure-as-killer-feature)
modularity and using all the cores (esp when I use pipeline or pipeline blocking rather than a/pipe if I have expensive data generation, which I do atm)
there are a few sharp edges on the chan interactions (the mults, chans, and dropping-buffers as I learned today) but I like that I'm still doing things essentially with map/filter/remove transducers and then into/reduce/transduce at the ends
so in a lot of ways it is very similar to my "plain old clojure" code. I just use a/
a lot more often. 🙂
I'm doing some work with a simulation model for Looked After Children atm and the simulation is reasonably expensive (calls out to R to do some work). It was really good to be able to make it so easily parallel with this
(a/pipeline 3
input-chan
(map #(projection/project-1 projection-seed model-seed max-date %))
(a/to-chan (-> (rand/seed seed)
(rand/split-n n-runs))))
@reborg some of the transforms might be trickier than just map-values, but in this case I think it is
was just trying to understand the use case, I think I see now, it’s taking the same stream of data and doing 3 different computations with the same data, in parallel?
thanks, not very proficient with core-async, always good to see how it used in the wild
for this example. In my actual code (this was me creating a small example for some stuff I didn't understand) there will be more than 3 different computations.
btw, I have no idea if I'm using core.async in a reasonable way or not. All the examples I see are about dealing with concurrency and use go blocks directly. I almost never use go blocks directly (unless I'm doing something with an atom or in cljs)
couple dozen maybe. Some will go through a few steps of processing before getting to a point they get written out. I do lots where I want to output/capture intermediate calcs so that we can explain what the simulation is doing so I use a lot of mults on mults on mults
for my current work on LAC I at least need to show: - total LAC pop my week - total LAC pop by month - age break down of LAC by month/week - placement break down of LAC by month/week - age & placement break down of LAC by month week - number of care starters by month week (age/placement/age & placement breakdowns), do it again for care leavers - show people moving from one care type to another (age/placement etc)
we do the same for SEND, but I've not retrofitted this structure to that model. It is very similar tho
I totally have to get my head around this stuff - I can see a million ways I could use it.
this kind of splitting up data through the process is something I always wanted to be able to do in hadoop or spark but couldn't do
here are my real chicken scratchings if you want to see something real: https://github.com/MastodonC/witan.cic/pull/25/files#diff-44e7d3a1eaefad433d81ca89b652afcfR226
@otfrom is the input all going to memory? I guess the dozen+ transforms are mostly reducing thing?
@reborg yeah, most of the transforms are reducing (turning counts across simulations into histograms)
so there shouldn't be too much data in flight at any time if back pressure, lazy seqs, and buffer sizes work
there are some things I want to write out to file directly as they might get a bit large. I'm still working on that bit.
@otfrom Super nice! Just goes to show, somebody can be wrong about trek but still a whizz with core.async 😛. Seriously though, appreciate the sharing. It's quite timely for me because I need to do a little API work today and tomorrow and need to be aware of rate limiting. Perhaps a pipeline with a timeout channel is a nicer way to do this than a "sleep".
@wesley.hall I didn't know you were a whiz w/core.async
Morning.
Just looking through job listings on StackOverflow. I find it interesting that companies appear to use the Clojure
tag as a "lure" - then make no further mention of it in the body of the ad (or merely say "it would be great if you were interested in...").
No, honestly, it's like asking for people with any degree: you're sure they can put enough sustained effort to get a degree. Most people learn Clojure after work, so in effect the job adverts are asking for people who self-train after hours. (And also are known to be somewhat-senior developers, and also functional programming is "known to be hard" so prestige, etc.)
(Maybe I'm too cynical and someone in the company wants to introduce Clojure and it's easier with other fans, but the lack of mention in the body of the ad is conspicuous)
I think you're correct - that was my interpretation, so maybe I'm a cynic too. I also have a fondness for brackets, and have no problem with nesting them in prose!
Agree with @lady3janepl here. Also outside possibility that they have some small Clojure deployment that just works, and a boat load of JS that is coming apart at the seams ;)
They’ll mention the techs in deployment but focus on the skills they most need to fix current mess.
Well, we have a position open and we are Clojure / Clojurescript top to bottom, real apps in Production and everything... 😉 (I mean we are not posting it on StackOverflow, but hey...) https://cervest.earth/jobs-platform-engineer/
Hello @maleghast - I emailed Conan to ask about the vacancy, as it sounds really interesting (and very much "my sort of thing"). Unfortunately, the requirement to move to London scuppered it for me!
Sorry to hear that @U0HJFE43U - I am happy to offer some flexibility up to the same amount that I have; I am in the office every other week, pretty much all week and occasionally I do 2 weeks back to back. If you are prepared to do that much commuting it's an option. There is no doubt that the role can't be advertised as "remote" because we do want regular office-based time, month in month out, but we can talk about options.
@maleghast Says there flexibilty with location, guessing it's not that flexible that you can be in another location in the UK?
@glfinn83 - It means that the role is London based, we are prepared to discuss some flexible working.
@maleghast you should also post over in #jobs
@maleghast - I see a second career in marketing for you! 😉
@jasonbell - Been there, done that, chose Software Engineering 😉
I should probably ask this in a specific channel, but just on the off chance. CIDER REPL "jacked-in" from a deps.edn project. How do you go about increasing heap space? Anybody know?
Ok, great thanks. I assume I can just put these opts at the root level in deps.edn too right? Don't really need the alias if I can do it without.
Oh, OK, fair enough, will add the profile. Seems a little odd that you can't do this globally. I was sure I could do that in lein.
can do in lein. can't do in deps.edn (at least that I've seen, you can always ask in #tools-deps )
Alias approach is not really a problem. Was just being curious. Just testing the setting with an alias now.
I found manifold easier to work with than core.async but that might just have been because using core.async had trained me how to break down problems in the way you need to for both of those libs. Suppose the big drawback to manifold is that it is clojure only whereas core.async works in clojurescript too.
I think core.async is a good primitive for expressing complex computations. I think manifold is good for "gimme async that works with all the fast java async things"
core.async working in clojurescript is still something that amazes me a fair bit. Stellar engineering effort there.
i don't think there's any reason why manifold couldn't work in js - node streams + promises are roughly the same as manifold streams + deferreds
although there's a bunch of difficulties with the manifold streams api that i'd want to correct in an ideal world
i've also found manifold (plus some stuff i'd also need to implement on top of core.async) very expressive for calculation mixed with i/o - it's all mostly map
and reduce
in the end, although an alts!
equivalent would be nice
oh, nice - i had no idea!
This repo: https://github.com/dm3/manifold-cljs ?
it seems to have all the stream fns i care about too
Hey guys, do know if there are many companies using Clojure in Scotland? Concretely Edinburgh.. :thinking_face:
what kind of Scottish clojure work are you looking for @marc.sabates.gelpi?
Yeah, remote work is a possibility but I imagine if the companies are near London and every now and then there a face to face meeting/activity the trip down to London would be.. hmm long? 🙂
London is not my cup of tea.. I must confess I hate the commute and well, so many people.. I am now living in Cambridge, but there is something I miss a lot.. hills.. 😞 I lived in Somerset for 4 years and though there there are the Somerset levels.. one can always find some hills going to Dorset or even the Mendip hills.. Absolute nothing in the Silicon Fen.. 😞 And the main road exits are almost all with roadworks..
The job above from @maleghast is commuted from Scotland by him
I worked with him in Entrepreneur First.. In fact he was the one who believed in me when I just started in the Clojure world..
Ah, cool - I'll remember you to him, and please do stay in touch if you think that you might be interested in the future as I hope / expect that we will have remote engineering team(s) before long...
@marc.sabates.gelpi - Also, Skyscanner in Glasgow are a Clojure(ish) shop IIRC
There used to be Clojure dojo’s run out of the Skyscanner office in Glasgow. There’s no Clojure in production.
thanks guys. Everything Clojury I’ve seen so far in Scotland is a bit old.. The Skyscanner dojos is one and a one off Clojure Bridge in Edinburgh.. Thanks for the suggestions 🙂
Oh how I wish...sadly this is not the case
The only option I am aware of for Clojure in Glasgow was the Student Loans Company, however some contractors I knew that worked there stated Clojure was deemed too niche and teams were being directed to use straight up Java.
@marc.sabates.gelpi http://devtechscot.slack.com for the Scotland specific tech scene. About 500ish members so could be a way to build up contacts. Invite link: http://links.devtech.scot/slack