rak has quit [Quit: Segmentation fault (core recycled)]
rak has joined #ocaml
Haudegen has quit [Quit: Bin weg.]
alfiee has joined #ocaml
alfiee has quit [Ping timeout: 260 seconds]
williewillus` has joined #ocaml
williewillus` has quit [Changing host]
williewillus has joined #ocaml
ygrek has quit [Remote host closed the connection]
alfiee has joined #ocaml
alfiee has quit [Ping timeout: 244 seconds]
<discocaml>
<jalsol> Jane Street is actually the place with the best intetview experience I've ever applied to as an intern
<discocaml>
<jalsol> on the other hand, ahrefs was definitely not pleasant at all
<discocaml>
<jalsol> Jane Street is actually the place with the best interview experience I've ever applied to as an intern
Tuplanolla has quit [Quit: Leaving.]
<discocaml>
<yawaramin> indeed, i have written OCaml professionally*
<discocaml>
<yawaramin>
<discocaml>
<yawaramin> `* a moderate-sized script that made some API calls to our billing provider to implement price increases according to a specific logic`
jutty has quit [Ping timeout: 276 seconds]
jutty has joined #ocaml
ygrek has joined #ocaml
alfiee has joined #ocaml
alfiee has quit [Ping timeout: 252 seconds]
euphores has quit [Ping timeout: 265 seconds]
euphores has joined #ocaml
alfiee has joined #ocaml
alfiee has quit [Ping timeout: 252 seconds]
<discocaml>
<diligentclerk> same
jutty has quit [Quit: jutty]
alfiee has joined #ocaml
alfiee has quit [Ping timeout: 244 seconds]
alfiee has joined #ocaml
alfiee has quit [Ping timeout: 246 seconds]
ygrek has quit [Remote host closed the connection]
ygrek has joined #ocaml
<discocaml>
<gooby_diatonic> Why?
alfiee has joined #ocaml
ygrek has quit [Remote host closed the connection]
alfiee has quit [Ping timeout: 244 seconds]
<discocaml>
<jalsol> if you are an ahrefs employee, I would like to sorry in advance
<discocaml>
<jalsol> I would like to work for ahrefs as well
<discocaml>
<jalsol> I was told that I could email the backend hiring team for clarification regarding the take home assignment
<discocaml>
<jalsol> I emailed them and made sure to send a follow up email as well, no response
<discocaml>
<jalsol> that was frustrating
<discocaml>
<functionalprogramming> hmm
<discocaml>
<functionalprogramming> interesting
<discocaml>
<jalsol> I decided to just submit anyway and gave them a feedback, HR was kind enough to respond that they did not receive any emails from me(??) and he would forward the words from me to the team
<discocaml>
<jalsol> but I already submitted
<discocaml>
<gooby_diatonic> I'm not, but I was interested in the company as well so thought I'd ask
<discocaml>
<gooby_diatonic> Though there's at least one of their employees here, careful what you say 🕵️
<discocaml>
<jalsol> the role was backend intern in OCaml, they prefer Singaporean applicants but I made it past the screening
<discocaml>
<jalsol> the role was backend intern in OCaml, they prefer applicants in Singapore but I made it past the screening
<discocaml>
<jalsol> I might also point out that the HR's emails were sort of unprofessional with random formatting, but him contacting me for feedback was actually the most pleasant part of the whole process
<discocaml>
<jalsol> I might also point out that the HR's emails at this point were sort of unprofessional with random formatting, but him contacting me for feedback was actually the most pleasant part of the whole process
hsw__ has joined #ocaml
<discocaml>
<jalsol> on the other hand, I believe Jane Street has the most elegant and enjoyable interviewing process, and I do think that they should copy their style if they can
slothby has quit [Ping timeout: 246 seconds]
hsw_ has quit [Remote host closed the connection]
slothby has joined #ocaml
alfiee has joined #ocaml
alfiee has quit [Ping timeout: 265 seconds]
alfiee has joined #ocaml
alfiee has quit [Ping timeout: 268 seconds]
wickedshell has quit [Ping timeout: 260 seconds]
alfiee has joined #ocaml
alfiee has quit [Ping timeout: 252 seconds]
Serpent7776 has joined #ocaml
williewillus has quit [Quit: ERC 5.6.0.30.1 (IRC client for GNU Emacs 30.1)]
wbooze has joined #ocaml
wbooze has quit [Ping timeout: 268 seconds]
keyboard has quit [Quit: keyboard]
keyboard has joined #ocaml
semarie has quit [Ping timeout: 260 seconds]
alfiee has joined #ocaml
semarie has joined #ocaml
alfiee has quit [Ping timeout: 248 seconds]
bartholin has joined #ocaml
wbooze has joined #ocaml
mange has joined #ocaml
alfiee has joined #ocaml
bartholin has quit [Quit: Leaving]
alfiee has quit [Ping timeout: 246 seconds]
wickedshell has joined #ocaml
Haudegen has joined #ocaml
alfiee has joined #ocaml
alfiee has quit [Ping timeout: 245 seconds]
mange has quit [Read error: Connection reset by peer]
mal`` has quit [Quit: Leaving]
mal`` has joined #ocaml
<discocaml>
<contificate> lol, if it's any consolation, a few companies never even responded to my applications back when I was OCaml job hunting - eventually got one, though (alas, now coming to an end)
<discocaml>
<gooby_diatonic> I am surprised there were even a few companies using OCaml
<discocaml>
<contificate> there's a few, but it's not like the options are endless
<discocaml>
<cod1r> facebook uses ocaml for the flow typechecker
<discocaml>
<cod1r> it's sort of lost to typescript but eh
<discocaml>
<cod1r> ocaml use is higher than what people think, it's just lowkey
<discocaml>
<contificate> it's higher than people know about
<discocaml>
<contificate> but at the same time
alfiee has joined #ocaml
<discocaml>
<contificate> these companies often don't hire for those roles, so it's almost like it doesn't matter if they use it
<discocaml>
<contificate> it matters if they use and it actively hire and build up teams that use it
<discocaml>
<contificate> pretty sure ARM also used it for a time when they were writing converters for their machine spec language to sail
<discocaml>
<contificate> from the top of my head: Jane Street, Meta, Tarides, OCamlPro, Ahrefs, TriliTech, Citrix, Nomadic Labs, etc.
<discocaml>
<contificate> I think some have spontaneous application - which is unlikely to go anywhere, in my experience
alfiee has quit [Ping timeout: 252 seconds]
<discocaml>
<gooby_diatonic> Would you be willing to work remote cont?
<discocaml>
<contificate> I already do (until the start of April)
mange has joined #ocaml
<discocaml>
<gooby_diatonic> Ah, then do you plan to continue doing so? I don't think I'll ever find OCaml positions locally, but working remote doesn't seem very tempting either
<discocaml>
<contificate> Not necessarily. Full disclosure: I am in the process of being laid off.
<discocaml>
<contificate> "Not necessarily" because I'm unsure when I'll get another software job (and, indeed, if I even want one).
<discocaml>
<cod1r> unemployment is where programmers truly achieve peak power
<discocaml>
<contificate> Not to bore everyone here with my life ambitions, but there's things I neglected to do in my early adulthood that really sting
<discocaml>
<contificate> for example, I never got my driving license, and that's more important than much else in life
<discocaml>
<cod1r> well, that's only if you live in an area where getting around requires a car
<discocaml>
<contificate> not really
<discocaml>
<contificate> it always applies
<discocaml>
<contificate> there's a definite exhaustion that accumulates in life when going to the shops is a 30-40 minute walk instead of a 3 minute car journey each way
<discocaml>
<contificate> where I live (Scotland), not having a car is just having no autonomy
<discocaml>
<contificate> as I like to say, I am 25 but living the life of a 15yr old
<discocaml>
<contificate> because I have no ability to really do anything without incurring major time wasting costs
<discocaml>
<contificate> practically, for me, a job means moving down to England (which I did once before), and that would be all the better if there was more flexibility about where you live
<discocaml>
<contificate> you can mitigate living in a horrible houseshare, paying extortionate rent, etc. if you can just get a place somewhere outside, but that requires commuting, which somewhat requires a car
<discocaml>
<contificate> if you ever believe this viewpoint, you should read car-related subreddits where people are near-suicidal about their car being in the repair shop for more than a week
<discocaml>
<cod1r> hmmmm
<discocaml>
<cod1r> 30-40 min walks basically means you live in an area that "requires" a car
<discocaml>
<cod1r> the nearest bus stop where i live is a 10 min car drive 🤣
<discocaml>
<contificate> torture
<discocaml>
<contificate> perhaps I shall move to a desert and acquire a trusty camel
<discocaml>
<cod1r> lmao
<discocaml>
<cod1r> i got my drivers license at 18
<discocaml>
<contificate> the last straw will be when I encounter a traveller on my journeys who says "heh, reminds me of the Perl logo"
<discocaml>
<cod1r> some people that live in high density cities get it later on average i think
<discocaml>
<contificate> for me, I had no money and then the pandemic hit, which delayed it a lot
<discocaml>
<contificate> and now there's so many bots that are auto-booking spaces to resell at a premium
<discocaml>
<contificate> the whole system is a complete joke
<discocaml>
<contificate> these spaces being driving test spaces, to be clear
mange has quit [Quit: Zzz...]
<discocaml>
<gooby_diatonic> That's crazy
<discocaml>
<gooby_diatonic> UK has fallen
<discocaml>
<contificate> indeed, and now we're trapped thanks to Brexit - brilliant
olle has joined #ocaml
alfiee has joined #ocaml
alfiee has quit [Ping timeout: 268 seconds]
<discocaml>
<JM> To take the other side of that arguments, I've been a couple of time on the end of the firehose that is a public job opening (alas not for OCaml). There is literally not enough time in life to give a proper answer to each applicants, the quantity of (almost irrelevant) applications is overwhelming.
<discocaml>
<JM> People hate recruiters, but if I'm an hiring manager ever again I want them to curate the process for me.
<discocaml>
<contificate> Yeah, no doubt - comes as no surprise that networking is everything in job hunting, cuts through a lot of nonsense
<discocaml>
<JM> true
alfiee has joined #ocaml
alfiee has quit [Ping timeout: 272 seconds]
malte has quit [Ping timeout: 252 seconds]
alfiee has joined #ocaml
alfiee has quit [Ping timeout: 244 seconds]
alfiee has joined #ocaml
alfiee has quit [Ping timeout: 244 seconds]
Haudegen has quit [Quit: Bin weg.]
alfiee has joined #ocaml
<discocaml>
<Joe> I have to say I love OCaml's module system so much -- it just works.
<olle>
We filtered by bachelor degree and a 1h assignment
<olle>
1-2h perhaps
<olle>
Then the secretary took care of first interview to assess social ability
<olle>
30 min or so
<olle>
Worked pretty well
alfiee has quit [Ping timeout: 244 seconds]
Haudegen has joined #ocaml
alfiee has joined #ocaml
alfiee has quit [Ping timeout: 252 seconds]
<discocaml>
<contificate> that sounds pretty good
<discocaml>
<contificate> I like it a lot too - compared to SML's, it's great
alfiee has joined #ocaml
alfiee has quit [Ping timeout: 252 seconds]
olle has quit [Ping timeout: 260 seconds]
Haudegen has quit [Quit: Bin weg.]
wbooze has quit [Ping timeout: 276 seconds]
alfiee has joined #ocaml
alfiee has quit [Ping timeout: 248 seconds]
wbooze has joined #ocaml
euphores has quit [Quit: Leaving.]
euphores has joined #ocaml
Haudegen has joined #ocaml
alfiee has joined #ocaml
alfiee has quit [Ping timeout: 245 seconds]
jutty has joined #ocaml
nalkyu has joined #ocaml
alfiee has joined #ocaml
alfiee has quit [Ping timeout: 248 seconds]
bartholin has joined #ocaml
fmira has quit [Remote host closed the connection]
fmira has joined #ocaml
ygrek has joined #ocaml
remexre has quit [Ping timeout: 252 seconds]
alfiee has joined #ocaml
alfiee has quit [Ping timeout: 244 seconds]
<discocaml>
<gooby_diatonic> Though it would be cool to have a file-level functor
<discocaml>
<gooby_diatonic> Though I guess it wouldn't be easy to compile it
<discocaml>
<contificate> I thought the same, at a time, but who cares - you just accept a convention like `module Make(...)` as a sub-module functor
<discocaml>
<contificate> SML is almost degenerate because of the way it works
Haudegen has quit [Quit: Bin weg.]
<discocaml>
<contificate> SML has no notion of applicative functors, which is what is really brilliant about OCaml
<discocaml>
<contificate> and enables separate compilation of shared things to work so well
<discocaml>
<contificate> because the compiler applies stamps to determine a kind of lexical equivalence between functor invocations
<discocaml>
<contificate> meaning the `Map.Make(Int)` in `foo.ml` is the same as `bar.ml`
<discocaml>
<contificate> whereas, in SML, you get `utils.sml` defining globally-used module instantiations
<discocaml>
<contificate> because if you do it somewhere else, it's generative, and not considered to be the same module
<discocaml>
<contificate> so when people ever compare SML's module system to OCaml's, you have to remember how good OCaml's actually is
<discocaml>
<contificate> I may have done an inaccurate explanation of how applicative checks work in the compiler with my example, but oh well
<discocaml>
<yawaramin> dead academic language: 🥰
<discocaml>
<yawaramin> active industrial-level language: 🤢
<dh`>
erm
<dh`>
it's sml that has applicative functors
<discocaml>
<contificate> generative
<dh`>
ocaml's functors are generative
<discocaml>
<contificate> false
<discocaml>
<._null._> OCaml's functors can be either
<discocaml>
<gooby_diatonic> Objective Caml
<discocaml>
<contificate> OCaml even has a notation for generative functors that's just an empty listing
<discocaml>
<leviroth> I wouldn’t say the resulting modules are the same. It’s just that the types are the same.
<discocaml>
<yawaramin> OCaml added a specific syntax for generative functors that was added later on
<discocaml>
<contificate> fair point, they are considered to be "compatible" for lack of proper terminology, equal inputs is compatible outputs, because it's effectively a lexical equivalence
<discocaml>
<gooby_diatonic> Does the module equivalence come into play during development, or is it just a property the compiler can use to avoid redundant allocation?
<discocaml>
<contificate> yes
<discocaml>
<contificate> in SML, functors are generative
<discocaml>
<contificate> so you better refer to the same module as the module you're calling into is using
<discocaml>
<contificate> so you hoist it out somewhere and do that
<discocaml>
<contificate> this is why "functions as a universal interface" is a good go to in ML programming
<discocaml>
<contificate> why return a hash table of results when you can return a function, whose closure captures the hash table, queries it, and never exposes that detail?
<discocaml>
<gooby_diatonic> Elegant
<discocaml>
<gooby_diatonic> I guess it's like other values, the equivalence is important for modules which maintain state whereas for the compiler it's nice regardless for optimisation
<discocaml>
<contificate> I will need to see if I agree with "I wouldn't say the resulting modules are the same", it may well be that it's hash consed for a single module's compilation, so they really would refer to the same module later
<discocaml>
<contificate> it's a stamping mechanism internally, that just describes ints to access paths in effect
<discocaml>
<yawaramin> a precursor to content-addressable programming languages
<discocaml>
<gooby_diatonic> Though wait, if the functor contains a mutable reference, then is the functor forced to be generative?
<discocaml>
<leviroth> If you mean that two functor applications result in modules that share mutable state, I’m fairly confident that’s not the case.
<discocaml>
<gooby_diatonic> Yeah that's what I just realised after typing it out
<dh`>
ok wtf
<dh`>
did the world change behind my back?
<discocaml>
<contificate> well, they can refer to the same mutable state, of course, by simply sharing the pointer to a ref record
<discocaml>
<contificate> but if you initialise it inside the functor, it's a fresh thing
<discocaml>
<contificate> no, dh, I think you've mentally replaced "transparent ascription" with "applicative" in your mind, SML has that feature
<discocaml>
<octachron> It is type-level compatibility which is important. Functor with "meaningful" state at instantiation ought to be generative, but this is not enforced.
<discocaml>
<octachron> (but there will be at some point a notion of "pure" applicative functor in preparation of modular implicits)
<discocaml>
<gooby_diatonic> Possibly a far away point, but we'll welcome it
<discocaml>
<contificate> not as far as you might think
<dh`>
maybe
<discocaml>
<yawaramin> so maybe 5 years instead of 10
<discocaml>
<contificate> you mean like.. effect safety?
<discocaml>
<gooby_diatonic> Yes
<discocaml>
<yawaramin> i'd rather we redesigned our error messages 🙂
<discocaml>
<octachron> An effect type system would happen (much) later
<discocaml>
<gooby_diatonic> I guess the biggest utility for effects currently are schedulers and such where a type system wouldn't change much anyways
<dh`>
ok, coq still has generative functors so I'm not completely losing my mind
<dh`>
anyway I thought being applicative was the only thing the sml module system had going for it, so I guess it's got nothing at all?
<discocaml>
<octachron> Typically, both modular explicits and a json (s-exp) format for error messages have implementation currently under review.
<discocaml>
<octachron> Ergonomic effect system are still an open research subject.
alfiee has joined #ocaml
<dh`>
meanwhile I am embarrassed to have apparently screwed this up
<discocaml>
<octachron> dh`, transparent ascription is good to have and currently missing in OCaml.
<discocaml>
<deepspacejohn> I feel like I've seen some popular opinions about how we shouldn't "encourage" effects until they're typed, but that seems like it would be the distant future then? For some reason I had the impression that typed effects were basically planned to be added "soon" after effects landed in 5.0.
<discocaml>
<deepspacejohn> Although I wouldn't be surprised at all to learn that I was wrong about that.
<discocaml>
<shon_18152> Alose, n the absence of the mentioned purity checks, arguably SML is just erring on the side of correctness. And isn't that it's thing 🙂
<discocaml>
<._null._> Coq has applicative functors only ?
<discocaml>
<shon_18152> Also, in the absence of the mentioned purity checks, arguably SML is just erring on the side of correctness. And isn't that it's thing 🙂
<dh`>
transparent ascription is definitely not what I was thinking of
alfiee has quit [Ping timeout: 252 seconds]
<dh`>
(also after a 30-second look at someone's slides saying what it is, I'd say it's not a good feature)
<discocaml>
<eval.apply> don't see the downside to it, just lots of less `with type t = ...` on signatures
<dh`>
wrong granularity
ygrek has quit [Remote host closed the connection]
<dh`>
less verbose forms of "with type t" seem better
<dh`>
also to the extent the goal is to avoid having to cutpaste type definitions into signatures, there are better ways to deal with that
<discocaml>
<._null._> Coq has no mutable states (except for all metathings like tactics and options), so its functors have no reason not to be applicative, right ?
<discocaml>
<._null._> Coq modules*
<discocaml>
<._null._> have*
<dh`>
null: yes, so you'd think so
<dh`>
there are some exotic concerns with applicative functors that I don't particularly claim to understand and the intersection of that with coq types and proofs is probably a minefield
<discocaml>
<octachron> @deepspacejohn , work on a typed effect system was planned for after 5.0. However, at the mid-point of 5.4, my estimation for an eventual design and implementation of typed effect has shifted to ... later.
<discocaml>
<deepspacejohn> ah I see, thanks for the insight.
<discocaml>
<octachron> And yes, type system people did feel a bit uneasy with exposing naked effects, but the more pragmatic side ( "effects are not far more dangerous than exceptions, and as hard as exceptions to design an ergonomic type system") felt that the feature usefulness was worth an usable syntax.
ygrek has joined #ocaml
eilvelia has quit [Remote host closed the connection]
eilvelia has joined #ocaml
alfiee has joined #ocaml
Tuplanolla has joined #ocaml
alfiee has quit [Ping timeout: 244 seconds]
euphores has quit [Ping timeout: 245 seconds]
alfiee has joined #ocaml
alfiee has quit [Ping timeout: 252 seconds]
Everything has joined #ocaml
ygrek has quit [Remote host closed the connection]