Fork me on GitHub
#clojure-europe
<
2021-04-29
>
dharrigan06:04:10

Good Morning!

simongray06:04:42

good morning

agigao07:04:10

დილა მშვიდობის! I had an interesting discussion with fellow Georgian engineers yesterday. My nephew, 2nd year CS student received “an offer” from a tech company with a half of the wage of a regular student job and I got curious about Georgian practices regarding dealing with beginners - some of them insist that unpaid internships in software development are fine and even encourage it - people who apply for it “express genuine interest” in the field, and the employer spends so much resources already and shouldn’t pay a living wage. What does fellow Clojurians thinks about it?

otfrom07:04:57

I think unpaid internships aren't great and exclude people who can't cover the expenses of working, and therefore make our industry less diverse in lots of ways

☝️ 6
3
dharrigan07:04:27

Unpaid Internships == slave labour IMHO.

djm07:04:52

At a previous job, we had placement students doing a "year in industry" as part of their degree. I have no idea if we paid them or not. It would seem reasonable to pay people in that scenario, but not terrible not to

djm07:04:08

Unpaid internships outside of a program like that seems awful

borkdude07:04:27

I've heard one time of a woman who did an unpaid internship for web development at a company, because she had little to no experience and this turned into a full time job. I guess it can work out differently for different people and contexts.

borkdude07:04:10

Supervising an internship does take time and energy from a company so it's never 100% free.

borkdude07:04:09

At a consulting company I worked for there were always 1 or 2 interns (as part of their degree) and they probably got paid a few hundred euros but not much. They usually would not work on customer projects but rather on some internal or experimental tool.

borkdude07:04:53

Often these interns would return to become an employee later on, so that's the investment paying back itself rather soon.

djm07:04:06

How much mentoring/training were they given? Nowhere that I've worked would have had the time/resources for that

slipset07:04:29

That’s the model we’re doing at Ardoq. First summer job, then possibly internship, then possibly employee. All paid, of course.

borkdude08:04:03

> How much mentoring/training were they given? Don't remember, maybe an hour or two a week?

borkdude08:04:57

I was also a lecturer in the past and visited many students from the university who did internships at companies, so I also could see how it worked from the other side.

dharrigan08:04:56

In the UK there are a few laws around what is classed as a "worker". In most cases, all internships are legally entitled to the national minimum wage

dharrigan08:04:43

there are a few exceptions (natch!), but for someone who is doing an internship at a company in the promise of future work (amongst other conditions), they would be legally entitled to having the minimum wage.

djm08:04:50

We had one placement student who was basically left to work by himself for the whole year (on a project no one else was working on) 😢

borkdude08:04:08

@dharrigan From the student's perspective there was no promise for a future job. It was a one time engagement which is required as part of their education program. A student should be lucky if they could find a nice company to spend 3 or 6 months. After that the student got his/her diploma and that's it. But in practice, because the student and the company already knew each other, often the student would come back.

jmayaalv08:04:43

There are other ways for companies to find out if a person is motivated or not. . imho It shows a lack of empathy for the trainee

jmayaalv08:04:23

It reads to me: “We are so awesome, that you have to sacrifice your time, for some minorities even suffer, because you want to work with us”.

jmayaalv08:04:57

i myself was an immigrant in Germany. I had a paid internship with a very low salary, but at least could pay my basic needs.

slipset08:04:06

@pez regarding your talk(s) Check out this tweet from Alex Miller: https://twitter.com/puredanger/status/1387566420662304768

❤️ 6
pez08:04:06

That’s a great observation!

dharrigan08:04:46

I think it's a basic human right. You exchange your time and effort for some financial reward. I don't see why companies (who, generally have far greater resources than their employees) feel the need not to honour that. It puzzles me.

👍 3
dharrigan08:04:28

and as pointed out above, unpaid internships are ripe for abuse and exploitation and causing less advantaged people to be put at a greater disadvantage.

dharrigan08:04:34

Also, being paid brings a degree of dignity.

pez10:04:42

Good morning! I now see that the recording of the meetup yesterday is already published in its entirety: https://www.youtube.com/watch?v=M91VlKOa8jM Please don’t hesitate to give me feedback. This public speaking thing is important to me now, I want to get much much better at it. I have looked a bit at it now myself and it wasn’t the train crash it felt like yesterday, I think. Really a pity that my brain shut down so completely in the end so that I couldn’t fix the stupid bug on air. But other than that, I will stop beating myself up about this.

jmayaalv14:04:13

as a heavy emacs user, i have to say the calva experience looks amazing.. not sure if good, but you managed to make me download vscode again 🙂

pez15:04:01

Hahaha, I take that as a win!

simongray10:04:37

@dharrigan We have something similar to what @borkdude has described here in Denmark. In our case, students spend a whole semester where they have to have a specific project agreed to by both the school, the company, and the student - and they have to write a report about it at the end. They are funded by our universal education grant that everyone gets while studying since the internship replaces their academic work during that period.

simongray10:04:07

I had one such intern last year. She spent 10 weeks with me.

dharrigan10:04:38

seems more like work-experience rather than an internship, but semantics I suppose.

simongray10:04:40

The amount of work she could produce in that time was not as much as the amount of work I could do myself if I didn’t have to also supervise her.

simongray10:04:03

Maybe. We call it praktik. Same word for us here 😉

dharrigan10:04:17

🙂 Cultural interpretations 😉

simongray10:04:04

I agree with you about the exploitation of “real” internships. In Denmark, it seems to mostly be creative work that gets abused like that, but a lot of that is down to how getting paid creative jobs usually requires a portfolio. Many new graudates often lack such a thing, creating this need for them to go and do unpaid internships to build one.

simongray10:04:00

For software development, the only people doing unpaid internships are those doing it to collect unemployment insurance (it allows you to skip some mandatory job-seeking classes).

simongray10:04:21

And that is only for 4-6 weeks.

simongray12:04:57

Just got done setting up an nginx reverse proxy with automatic SSL renewal and it was incredibly easy to integrate with my existing Dockerfile using https://github.com/JonasAlfredsson/Docker-nginx-certbot - hard recommend in case you need to do something similar.

simongray12:04:37

Now I never need to worry about that again, just gonna copy-paste some lines from a Docker-compose.yml file

dharrigan12:04:52

I would have recommended caddy

dharrigan12:04:59

Caddy does it all, including automatic renewals

dharrigan12:04:08

pretty darn sweet, caddy

simongray12:04:56

Of course there is something even easier available... :face_with_rolling_eyes:

simongray12:04:07

Did not know about caddy.

dharrigan12:04:10

I use caddy extensively. A lot easier to setup that nginx (and haproxy)

dharrigan12:04:39

and once configured, (just a few lines), you can forget all about it, it'll auto renew the TLS itself

simongray12:04:10

Is caddy essentially a replacement for nginx?

djm12:04:23

I listened to a podcast episode about Caddy recently (https://syntax.fm/show/340/servers-with-matt-from-caddy), but I haven't used it

dharrigan12:04:36

it does reverse proxying, or it can also act as a file server

dharrigan12:04:47

A simple caddyfile looks like this

dharrigan12:04:51

 {
reverse_proxy 127.0.0.1:8080
}

simongray12:04:19

Gonna need to gzipping and rate limiting too, but I guess it's got something built in

dharrigan12:04:35

gzipping is done via a directive, i.e., encode gzip

dharrigan12:04:54

 {
encode gzip
reverse_proxy ......
}
`

simongray12:04:49

Thanks for the recommendation. I'll definitely check it out for future projects, but this nginx stuff was pretty easy to do and I don't think I'll redo it now anyway.

dharrigan12:04:55

No problemo! 🙂

dharrigan12:04:00

Always good to know options for the future 🙂

simongray12:04:59

Yeah, and I really hate this devops stuff so I appreciate recommendations that will further shorten the time I spend on it.

simongray12:04:46

So that I can get back to writing s-expressions

mccraigmccraig14:04:49

i would love to be writing s-expressions but i seem to be having classloader issues instead 😬

otfrom14:04:06

at least I'm used to things being classpath or classloader issues

otfrom14:04:27

I feel strangely comforted when something blows up in the java (I don't really, pls don't tell my code)

😂 3
raymcdermott18:04:51

myself and my son were fiddling with some clojure and after cut n pasting some data this happened

raymcdermott18:04:08

(:x :y :z)
:z 

borkdude18:04:23

the default value

raymcdermott18:04:31

definitely fun to think through

borkdude18:04:51

this also tripped up @viebel with multimethods, see #clojure , it created a memory build-up in his production system since multi-methods cache dispatch return values

raymcdermott18:04:02

main problem was that that we were doing (rest (:x :y :z))

borkdude18:04:06

he used a keyword as the dispatch function

raymcdermott18:04:27

and CLJS said :z was not ISeqable

raymcdermott18:04:03

main reason was that the cut n paste was (:x :y :z) and not '(:x :y :z)

raymcdermott18:04:04

this is the complete summary of the session

raymcdermott18:04:13

(def x {:foo (:x :y :z)})
#'user/x
user=> (rest (:foo x))
Execution error (IllegalArgumentException) at user/eval9 (REPL:1).
user=> Don't know how to create ISeq from: clojure.lang.Keyword
(:x :y :z)
:z
user=> (:x :y)
nil
user=> (:w :x :y :z)
Execution error (IllegalArgumentException) at user/eval15 (REPL:1).
user=> Wrong number of args passed to keyword: :w

raymcdermott18:04:47

keywords are fun fn

borkdude18:04:15

IFn to be exact :)

borkdude19:04:57

@pez Watching your talk, great work, nothing to be ashamed about. And you got an hour, which is quite long for a talk

✔️ 4
pez20:04:13

Thanks! Yes, the time thing was to large parts a miss-communication. Threw me off balance, but watching the talk it doesn’t show very much how tough that hit me. Except for maybe there in the end… 😃

pez20:04:24

Here’s the video with only my talk, btw: https://www.youtube.com/watch?v=LR7Wv6bSZqE