Fork me on GitHub
#clojure-uk
<
2018-05-21
>
alexlynham07:05:20

morrrrrrrning

rhinocratic08:05:51

Morningtide salutations.

alexlynham08:05:21

looks like I get to do some serverless and actual code this week \o/

alexlynham08:05:38

but it's javascript/node probs 😞

alexlynham08:05:47

cba doing it in python tbh

danm08:05:02

ello ello

danm08:05:08

Good weekend?

danm08:05:23

Stone days?

danm08:05:07

I got mobbed by squirrels for nuts in a park in Stoke once. It was cute until one of them bit me on the ankle, and when it turned around it noticeable had myx...

yogidevbear09:05:47

The squirrels mobbed you for "buts"?

yogidevbear09:05:08

They sound real gangsterish

otfrom09:05:25

no, but I'd love to know if it works. 😉

alexlynham09:05:11

one of the python devs on that team really wants to learn clojure so maybe I can swing it

alexlynham09:05:16

otherwise I'll have to just JS it

rhinocratic09:05:46

😁 Often easier to beg forgiveness than to seek permission. Sometimes you just gotta, for the sake of your sanity.

guy09:05:06

I always find this idea a bit awkward really

rhinocratic09:05:39

I guess a lot depends upon the environment. No scope for it in my current role.

guy09:05:16

Yeah i agree. I think it depends on what you’re trying to do as well haha.

danm10:05:20

I don't think anyone's suggesting that a massive project should be started in Clojure without business buy-in. But the joy of microservices, serverless etc is you can probably implement it in Clojure in a day to demonstrate it, then reimplement in another language for comparison (or t'other way around)

👍 8
rhinocratic10:05:03

As a bonus, a good proof of concept really helps in obtaining buy-in.

guy09:05:52

morning people!

rhinocratic09:05:54

Never having had the luxury of a full-time Clojure gig, my incursions have been limited to "one-off" tasks like data migration where no-one's going to have to maintain the code. 🙁 My attempts to evangelise haven't gone down too weil - eliciting responses such as "that just makes my eyes bleed!".

😅 4
alexlynham09:05:03

the problem with a full-time clj gig is that your next gig isn't full time clj haha

alexlynham09:05:19

and you're like "why the er, fudge can't I dev in the repl?"

alexlynham09:05:29

seriously, TDD < RDD by such a huge margin

guy10:05:15

have you tried using a repl and spec at the same time? It’s been quite nice i’ve found. Create the spec for the function / create the function and try exercising the spec / running the function etc. I think it adds a new layer to RDD

alexlynham10:05:17

I've done some stuff for spec yeah

alexlynham10:05:33

although I think I prefer schema at the mo

guy10:05:24

ah interesting, i used schema a little, but found spec’s test data generation to be so useful!

alexlynham10:05:43

the generation is delivered by another library (I forget which) but Schema uses it for test data generation as well

alexlynham10:05:58

I think for me Schema makes more instant sense and is easier to reason about

alexlynham10:05:00

spec is fiddly

guy10:05:22

ahhh nice nice. Defo agree. I read the spec guide about 10 times and i still haven’t gotten it 100%. I think schema is real easy to pick up tbh.

alexlynham10:05:49

^ this is the one I think

guy10:05:40

ah yeah nice

alexlynham10:05:56

give it a try, personally it was simpler than spec... I didn't realise it was avail until after I did my last spec thing and I was kicking myself

mccraigmccraig09:05:11

@rhinocratic computer science also advances one funeral at a time

🙂 4
rhinocratic09:05:30

I like the sound of HDD, but there's no room for a hammock here.

rhinocratic10:05:54

I do seriously miss the REPL when in exile.

alexlynham10:05:47

not having a flexible feedback path so tightly coupled to the lang is painful when you're out of clj land

mccraigmccraig10:05:01

two samples of the pool of programmers : [A] # of people i have ever managed to convince lisps are a good idea ? 1 maybe 2 [B] # of interviews required to find a single good-fit dev in clojure vs ruby or java: <5 vs >10

alexlynham10:05:05

I think it's the python paradox maybe

3Jane10:05:26

python paradox?

alexlynham10:05:10

TL;DR - good devs want to go towards FP

alexlynham10:05:38

anecdotally I hear this is the case with advertising scala jobs to java devs

alexlynham10:05:10

the most motivated java devs want to crosstrain out of pure java (so I'm told by people building scala teams)

3Jane10:05:23

I would disagree with “good devs want to go towards FP”

alexlynham10:05:28

(they said they've found it relatively easy to hire good folks)

3Jane10:05:50

rather, part of what makes a good dev is the interest and courage to push their boundaries

alexlynham10:05:56

> I would disagree with “good devs want to go towards FP” oh yeah, I just mean in the original article the hypothesis is good devs want to do python

3Jane10:05:11

and this makes them learn new languages that aren’t “default” for whatever they work with.

alexlynham10:05:18

I'm just 1:1 equating it to the argument. I know plenty of amazing OO guys

alexlynham10:05:40

(although I am an FP evangelist because I'm a poor programmer and it makes me better)

3Jane10:05:41

thus, if you seek for programmers who are proficient at a non-default language, by definition you’ll find someone who self-educated, rather than was spoon-fed and stopped there.

alexlynham10:05:52

^ absolutely

3Jane10:05:26

It manifests in other areas of life too, though not necessarily consistently; you can’t say that if X is non-default then they’re better than default Y… but they probably had to give it more thought before they made that decision.

3Jane10:05:24

> (although I am an FP evangelist because I’m a poor programmer and it makes me better) Nah 🙂 Using tools that make you better is the definition of a good programmer. You see a problem, you create a solution.

alexlynham10:05:40

> It manifests in other areas of life too, though not necessarily consistently; you can’t say that if X is non-default then they’re better than default Y… but they probably had to give it more thought before they made that decision. that's interesting... kinda sounds similar to the whole hacker ethic thing I guess

alexlynham10:05:46

tinkerers gonna tinker

alexlynham10:05:59

also that david nolen talk

3Jane10:05:36

Not sure if it’s about tinkerers… just different interests and having to justify them, or deal with things not being built for you and so not being smooth

alexlynham10:05:49

one of the juniors I work with recently built her own keyboard, and that's kinda why I suspect she's going to be an amazing engineer

😱 4
👍 12
3Jane10:05:19

Classic example would be “a woman engineer” in a field that is male dominated (something people don’t realise is that it can be hard to make friends in your profession if you don’t share default hobbies like playing shooter games and lifting.)

😞 8
guy10:05:19

what would you say similar hobbies would be out of interest?

3Jane10:05:34

sorry, similar to what?

guy10:05:12

>if you don’t share default hobbies

guy10:05:25

What default hobbies would people share in your experience?

3Jane10:05:32

Counterstrike

guy10:05:35

no sorry lol

guy10:05:47

I mean between “a woman engineer” etc

3Jane10:05:59

oh you mean like what women would share with men as default hobbies?

guy10:05:27

Sounds dumb but i’m just interested to know your opinion on it

3Jane10:05:30

er… I don’t know, I fall out of default in so many ways

guy10:05:38

ah ok sorry

3Jane10:05:56

it sounds stupid, but I actually don’t know any women engineers

alexlynham10:05:51

at my place it's 50-50

alexlynham10:05:56

music is the most common

alexlynham10:05:08

cycling probably second(?)

3Jane10:05:32

I’m used to being the only woman in the engineering, or if there’s someone else they’re in design, manual QA or data science

3Jane10:05:38

but for truly universal hobbies I think exercise (yoga, but running/cycling would work as well), and funnily enough theatre

guy10:05:46

Yeah i know maybe two women engineers

guy10:05:04

@U79NZHC6A 50/50 is amazing haha

alexlynham10:05:14

yeah it's really cool

rhinocratic10:05:24

My last job was the only one in my career where I worked on a team that was > 50% female. Current workplace is probably the least diverse I've known.

alexlynham10:05:54

having the diversity is awesome. You don't realise what you've been missing if you were in a less diverse team before

guy10:05:05

Yeah i agree with that

3Jane10:05:13

do you find that it changes things?

rhinocratic10:05:18

True - there's definitely a different dynamic.

3Jane10:05:20

and/or what does it change?

alexlynham10:05:43

our community is a bit more friendly I think

guy10:05:53

I find idea generation and different perspectives to be quite refreshing. Also it reduces laddish culture to some extent, which is always good

alexlynham10:05:54

I'm a hothead and I know I'm a lot calmer

alexlynham10:05:12

but also just yeah having a different perspective on things

alexlynham10:05:08

we're also moderately good on LGBT+ diversity too and that has a huge effect on things like UI work, language and that

3Jane10:05:26

I see - it’s interesting that gender influences idea generation. I’ve never seen myself as tending towards different tech solutions because of my gender. Makes me want to do a study 😄

guy10:05:12

I think ideas/perspective/life experiences can potentially give you different approaches to problem solving

3Jane10:05:37

IME it’s more seniority (been there, done that, seen the side-effects, are we sure we want to do that?) but maybe?

otfrom10:05:39

@U79NZHC6A I'm sure you've told me before, but where are you working?

rhinocratic10:05:44

I find it hard to draw any inference from my experience on a mainly female team - but then we were disadvantaged by not being co-located (London and Manchester). However, I concur with @U79NZHC6A - a diverse team definitely raises awareness of (e.g.) just how un-inclusive many web forms are.

alexlynham11:05:31

@U0525KG62 Co-op Digital in Manchester

otfrom11:05:02

d'oh. of course. I'll go back to sleep. zzzzz....

alexlynham11:05:05

we're I think 18 permies, 9 identifying as female and two new joiners (both female juniors) incoming in the next couple of months

3Jane10:05:44

that junior sounds like a keeper 😄

alexlynham10:05:02

yeah I mean long term she's probably going to want to go somewhere that's a bit more challenging. We only have two speeds - low hanging/easy fruit and really really really hard legacy architecture

alexlynham10:05:44

so there's a lot of fresh faces and enthusiasm in the web camp (former) and a lot of grey hair in the latter tho

rhinocratic11:05:37

Found one of my first ever computer programs the other day. Damned if I can tell what it did - it's on a punched tape. 😢

😱 16
😄 4
mccraigmccraig11:05:04

oh wow - what system was it for @rhinocratic ? i think i missed out on the punched card era by a couple of years - my first professional programs were all entered on VT320 amberscreen terminals attached to a DEC mini (cross-compiling to 186), but consequently no souvenirs

rhinocratic11:05:18

I honestly can't remember - it was owned by Burnley College, and our secondary school computer club was allowed occasional use of it (and also the one at Blackburn College, which used cards rather than tape). I think we ran BASIC code on the Burnley machine, but on the Blackburn one we were mainly supplying parameters to pre-existing programs, which some poor soul (possibly a student) would have to transfer onto cards. There would then be a wait of a few weeks before receiving a printout saying that the job had fallen over. It lacked the immediacy of the REPL, for sure!

rhinocratic11:05:26

Things improved a lot when I saved up enough for a Microtan 65. Think it's still gathering dust in the attic. :thinking_face:

xlevus15:05:27

started working on a project this week that I've been trying to get momentum on for the past month or so. previously been using luminus or some other template, and just gotten lost in mounds of everything. this week, just did lein new myproject and oh my so much easier. I actually know what stuff does now!

seancorfield17:05:00

@xlevus That's why I always recommend beginners in Clojure don't just lein new luminus myapp and try to build an end-to-end web app -- these large framework-y library collections have so much "magic" interacting that even if a beginner successfully gets a web app running, they often have no idea how/why it works.

seancorfield17:05:24

Start from the basics: an empty app project, add Ring as a dependency and get a simple "Hello, World!" page served, add Compojure or Bidi and get some simple routes working, add java.jdbc and a DB driver and get some simple CRUD stuff working. Then maybe go through a modern ClojureScript "getting started" tutorial and ramp up with cljs too.

seancorfield17:05:59

And only at that point start looking at the all-in-one libraries/frameworks -- when you understand the basics and can see what, say, Luminus adds to that model.

seancorfield17:05:58

(but of course "everyone" comes to Clojure(Script) and wants to build an SPA immediately, because they know Ruby on Rails or whatever makes web dev "easy" -- rather than "simple")

xlevus17:05:44

yeah, I built a rough idea of how Luminus was held together, and how things worked. but i didn't touch every bit of it all the time, and couldn't keep it all in the noggin at once.

xlevus17:05:42

still, pretty much going from 0 to luminus, with a few steps in the process and skipping the 'fundamentals', but eh. it's either that, or just do it in my mother tongue and not learn Clojure.

dominicm17:05:08

I think building from scratch once is very important, the basics are entirely skipped when people do that. Then they have no idea why nothing works, or where to look to find out more. They're at the top of their jenga tower, and the foundations are invisible.

mccraigmccraig17:05:47

i dunno, when you start out with rails you don't (i didn't) have much idea of what works where and how, and yet it's still a pretty good experience

mccraigmccraig17:05:12

i did quite a lot of ag on my first few rails projects tho

seancorfield17:05:12

@mccraigmccraig Rails is exactly the "magic" I'm criticizing here. Sure, you can get simple stuff up and running quickly -- it's Easy(tm) -- but as soon as you need to do something not on the happy path, there's a huge mountain to climb in understanding parts of Rails. It's not Simple(tm).

xlevus17:05:01

I think a part of the problem is Luminus isn't a framework. It's a template. You need to read the documentation of 50 different micro-libraries and work out how the lego pegs fit together or which bits of tape hold them together instead. I think Clojure could do with a more structured framework to hide a lot of that away. Even if it's mapping calls in places. Sure it's not idiomatic, but it'd bring some 'legitimacy' (and legitimacy being, how low is the bar to entry, which imo is pretty high at the moment).

mccraigmccraig17:05:44

sure, there's lots of magic in rails, but i don't think that's bad per se: as magic goes, rails is quite easy to explore, and quite easy to change (until you get all tangled up in impossible to follow monkey patches, but that's more ruby's fault than rails)

alexlynham17:05:51

I think onboarding in clojure is hard on the whole

😉 4
alexlynham17:05:17

The person we brought up to speed was initially working on etl pipelines so you could see all the moving parts

xlevus17:05:04

I wrote an ORM library/hack/monster, I found that very helpful.

xlevus17:05:11

it also works pretty good, so win/win

alexlynham17:05:32

I find that compojure-api is a good mini web stack for showing new people as it's so simple but tbh I've had zero luck onboarding folk to clj after much trying

mccraigmccraig17:05:53

@xlevus i did an ORM thing too a while back... still very much in use

dominicm17:05:05

Jenga was a very conscious analogy I chose. There's lots of parts. You either build a tower once to get a rough idea of how it fits together, or you start at the top and try to flap about.

jcthalys17:05:46

is not an ORM but I liked a lot the honeysql project, is very helpful do some dynamic queries

👍 4
xlevus17:05:09

yeah, my project sits on top of honeysql. Originally I was generating sql by hand but oh lord. Honeysql just does quoting so much better. also, much easier to extend

alexlynham18:05:54

At an F# talk and the enthusiasm for the lang vs actual jobs situation seems even more acute than clj

xlevus18:05:28

At least with F# you've got some sort of Segue into it. "Oh yeah we do .Net stuff... I guess you can do that in F#, it'll work with our existing stuff" vs Clojure "uwotm8? Brackets?"

alexlynham18:05:10

Yeah the devs here seem to say they'll spike something in F# and then it gets rewritten