gchristensen changed the topic of #nixos-chat to: NixOS but much less topical || https://logs.nix.samueldr.com/nixos-chat
<infinisil> Damn, this is heartbreaking: https://www.youtube.com/watch?v=blv3s89i8u8
<gchristensen> infinisil: https://twitter.com/ClickHolePeel
<samueldr> haven't finished the video, but I was instantly reminded of https://twitter.com/sakeriver/status/1017079423546212352
<infinisil> gchristensen: Yeah, they also post them on youtube :) (I think these 3 min shorts much more interesting though)
jtojnar has quit [Remote host closed the connection]
<gchristensen> ok so yesterday I hacked together that nixops thing, this afternoon the idea was approved. do I dare do the actually hard work of _doing_ it?
{`-`} has quit [Ping timeout: 264 seconds]
sphalerit has quit [*.net *.split]
Guanin has quit [*.net *.split]
lassulus has quit [*.net *.split]
noefk_ has quit [*.net *.split]
clever has quit [*.net *.split]
tilpner has quit [*.net *.split]
ldlework has quit [*.net *.split]
aither has quit [*.net *.split]
adisbladis[m] has quit [Ping timeout: 245 seconds]
dtz has quit [Ping timeout: 260 seconds]
Drakonis[m] has quit [Ping timeout: 245 seconds]
hedning[m] has quit [Ping timeout: 260 seconds]
unlmtd has quit [Ping timeout: 260 seconds]
<infinisil> gchristensen: What are the chances this gets finished before you lose motivation for it? (I can lose motivation rather quick when something isn't interesting anymore)
mudri[m] has quit [Ping timeout: 256 seconds]
pstn has quit [Ping timeout: 276 seconds]
<gchristensen> depends how annoyed I get :P but ... possibly low chance I finish it.
<gchristensen> in reality I'm quite busy with things to do and have to take care to keep on top of important projects like ofborg
Guanin has joined #nixos-chat
aither has joined #nixos-chat
clever has joined #nixos-chat
lassulus has joined #nixos-chat
noefk_ has joined #nixos-chat
tilpner has joined #nixos-chat
ldlework has joined #nixos-chat
pie__ has quit [Remote host closed the connection]
pie__ has joined #nixos-chat
Lisanna has joined #nixos-chat
unlmtd[m] has joined #nixos-chat
jtojnar has joined #nixos-chat
pie__ has quit [Remote host closed the connection]
pie_ has joined #nixos-chat
pie_ has quit [Excess Flood]
kalbasit has joined #nixos-chat
pie_ has joined #nixos-chat
<kalbasit> infinisil: yep, I'm here :)
<kalbasit> infinisil: check out https://tour.golang.org/welcome/1 when you have time
<infinisil> kalbasit: While yes go is typed, it doesn't have as good of a type system as other languages
<kalbasit> can you give me a for instance? :)
<infinisil> Swift, Haskell, Idris all have a more powerful type system
<gchristensen> there is no `map`
<gchristensen> and I don' like null
<gchristensen> but Go is fine probably
<kalbasit> gchristensen: no map?
<kalbasit> `map[string]string`
<gchristensen> kalbasit: you've sort of walked in to a lions den of people who like functional programming, hehe
<kalbasit> gchristensen: I know lol
<gchristensen> like a list comprehension in python
<kalbasit> I love Go, well for the use case of Web servers it really shines
<gchristensen> basically my gripe about map is the same gripe about no generics :P
<kalbasit> especially doing multi-thread owork
<gchristensen> nice
<infinisil> Really the generics thing is what annoys me the most lol
<kalbasit> gchristensen: I had an issue with no generics before, but I came quickly to realize that you do not need generics at all
<infinisil> That's the only thing I know of in which the type system sucks
<infinisil> ...
<kalbasit> that's mostly because we are used to use generics
<gchristensen> infinisil: be nice :)
<kalbasit> give it time :)
ghasshee has joined #nixos-chat
<infinisil> I honestly don't agree at all
<kalbasit> there's also `// go:generate` thing that can replace generics (well sort of)
<gchristensen> kalbasit: yeah, I used Go to build a small distributed database a couple years ago. it was pretty good!
Linus[m] has joined #nixos-chat
adisbladis[m] has joined #nixos-chat
dtz[m] has joined #nixos-chat
philipp[m] has joined #nixos-chat
Drakonis[m] has joined #nixos-chat
<gchristensen> it isn't my cup of tea, though :)
<kalbasit> but it's amazing how lack of generics makes things simple. We have two web-devs at the company that really knows nothing outside of JS. Go was was a breath to understand the 30k+ project we have
<kalbasit> gchristensen: not functional I know I know lol
<gchristensen> it is definitely optimized for that use case, which I totally respect
<kalbasit> yea
<gchristensen> kalbasit: I'm not such a functional programmer, but I do like Rust, which does have generics and no null :)
<kalbasit> I don't and will never claim a language X is the only thing you need
<infinisil> I respect it too, the tooling seems to be great and fast compile times and fast execution
<kalbasit> it's by use case
<gchristensen> kalbasit++
<{^_^}> kalbasit's karma got increased to 1
<kalbasit> :)
<samueldr> no list comprehensions in Go?
<gchristensen> samueldr: it was a bad example, I meant to be saying generics
<infinisil> But using generics and co. in Haskell really makes me appreciate them
<kalbasit> I like Rust too, unfortunately I haven't had a chance to use it yet
* samueldr still isn't sure what generics are
<kalbasit> infinisil: until you learn that they are not necessary :P lol
<samueldr> even though I probably undrstand what they are
<gchristensen> yeah, Rust is pretty good. a bit intimidating to start :D
<kalbasit> samueldr: something like `sort<T>` where T can be anything
<gchristensen> samueldr: an array of type List<String>, means a List which only contains Strings
<samueldr> ah, so I knew :)
<kalbasit> yep
<gchristensen> samueldr: List<_> is a generic list which can contain any type
<samueldr> I love me some good list comprehension
<kalbasit> Go does not have that, you are forced to write a sort for every time out there
<infinisil> And Go apparently does have generics, but only for a couple of its standard library types
<kalbasit> or, you know, use reflect instead with an `interface{}`
<infinisil> You can't use generics in your own code..
<gchristensen> kalbasit: *hides from interface{}*
<kalbasit> lol
hedning[m] has joined #nixos-chat
<samueldr> and all those times I saw Go+generics I thought it was something more... abstract
mudri[m] has joined #nixos-chat
<kalbasit> gchristensen: yea interface can be quite overwhelming
<samueldr> pun not intended :(
<infinisil> kalbasit: Can you explain what interface really is in short?
<kalbasit> whenever I have to deal with reflect, my head feels on fire: https://godoc.org/reflect
<kalbasit> that's one thing I HATE about Go
<gchristensen> samueldr: generics let you do cool stuff, like if you have `function head(items: List<A>) -> A` you know it can only do one thing, take a thing from the list and give it to you.
<gchristensen> because it doesn't know what "A" is
<kalbasit> infinisil: sure, interface allows you to pass in anything, so for instance,`func say(msg interface{}) { fmt.Printf("hello %s\n", msg) }`
<samueldr> yeah, I knew what they were, turns out I never looked up what "generics in go" meant, and never really made the connection :)
<gchristensen> :D
<kalbasit> say can take anything really, including other functions
<infinisil> kalbasit: Oh.. So it's like a dynamic thing that can be anything? Whew
<kalbasit> yea with one exception
<kalbasit> you can ask it, what type are you?
<kalbasit> you have to know that at compile time
<kalbasit> let me write a quick play.golang.org brb in 5g
<kalbasit> s/5g/5m/
<gchristensen> cool
<gchristensen> is star trek VOY any good?
<infinisil> Function in Haskell often use almost only generics lol, example:
<infinisil> bimap :: Bifunctor p => (a -> b) -> (c -> d) -> p a c -> p b d
<infinisil> There's absolutely no concrete type in there
<gchristensen> looks like soup to me :(
<kalbasit> infinisil: I don't know Haskell at all, but yea that looks overwhelming compared to Go
<kalbasit> simple syntax
<infinisil> kalbasit: I see
<infinisil> so it doesn't allow explicit types
<kalbasit> infinisil: it does of course
<gchristensen> interface{} is just a bit of an escape hatch
<infinisil> gchristensen: kalbasit: It's really not that complicated once you get into Haskell, and soon enough you end up wanting to play with all kinds of fancy things you can't even dream of in other languages :P
<infinisil> And then you discover Idris and your mind explodes
<kalbasit> infinisil: updated example: https://play.golang.org/p/i1Y_a8ETFLx
<samueldr> there's the issue here: I'll never learn haskell, otherwise I won't be able to work
<gchristensen> samueldr: same :D
<kalbasit> lol same here
<kalbasit> having trouble wrapping my head around Nix when I have trillion things to deal with
<gchristensen> don't worry, don't rush in to it. you'll learn as you need
<kalbasit> but I can't go back anymore, no way going to Arch!
<kalbasit> gchristensen: yea, true
<gchristensen> I didn't know any FP when I started Nix... Nix was my first functional programming langueg.
<infinisil> Haskell has the tendency to stick around with you, once you are into it, you'll never want to use anything else
<gchristensen> infinisil: that is what I'm afraid of!
<kalbasit> hehe
<samueldr> oh, I'm applying so much functional paradigms in JS and Ruby, only way to stay sane
<kalbasit> I should stay clear of that then :)
<kalbasit> where are you guys located?
<infinisil> That's a good thing!
<infinisil> You learn a lot
<gchristensen> America/New_York, kalbasit
<kalbasit> I love the timezone syntax lol
<kalbasit> I'm in SF bay area
<samueldr> America/Montreal
<samueldr> oh no, I'm not willing to relocate
<samueldr> (is that meme now too old?)
<gchristensen> right on, I do some contracting for a few co's out that way.
<kalbasit> lol
<kalbasit> gchristensen: cool!
<infinisil> Switzerland for me
<kalbasit> yea it's pretty crazy here
<kalbasit> infinisil: wow, what time is it there now? :)
<infinisil> 3:14 :)
<infinisil> am
<kalbasit> I used to live in France, other side of Geneve from lake Annecy
<kalbasit> wow
<samueldr> π o'clock
<infinisil> 3:14:59
<infinisil> Oh shit
<infinisil> It should be 15
<infinisil> 3.1415926535..
<kalbasit> lol
* infinisil was the kind of kid that learned 100 digits of pi because he wanted to impress everybody
<kalbasit> oh brb, shit on fire at work :(
<gchristensen> good luck
* samueldr wonders how impressed infinisil's friends were
<infinisil> samueldr: Very!
<samueldr> let's hope no literal combustion
<infinisil> Oh, just one more thing regarding Haskell: I'm now afraid of every mutation when I see imperative code, and will want to rewrite it into a purely functional form
<infinisil> Not very good when university almost exclusively uses java & co.
<samueldr> :)
<infinisil> kalbasit: Oh, does Go have sum types?
<samueldr> infinisil: ever worked on a mess that only worked *because* of the bugs, side-effects and mutations from the whole mess?
<gchristensen> infinisil: no
<infinisil> Not really, but that sounds like fun :)
<samueldr> had a client in the past with such a website, no it wasn't fun
<infinisil> gchristensen: Oh rly? :(
<gchristensen> sum types are too new and edgy
<samueldr> see an unbalanced <div>, fixes it, now the website is all screwy
<infinisil> I got so frustrated with not having sum types in java, not sure if i could handle go
<gchristensen> you get sum types by setting all the other variant fields to nil ;)
<infinisil> samueldr: Hehe
<samueldr> I still think strict xhtml with browser error on mis-formatted content should have won
<samueldr> even though it causes *a huge amount of issues* (with regard to speed, pre-rendering, slow internet)
<gchristensen> agreed
<infinisil> samueldr: How does it cause such issues?
<samueldr> at least it would have been more correct :(
<samueldr> infinisil: can't begin rendering without the full document IIRC
<samueldr> while with html you technically can
<samueldr> (not that it matters with SPAs
<infinisil> Huh
<kalbasit> infinisil: what do you mean by sum types?
<samueldr> (you basically traded XML strictness for a full programmed framework underneath, which will fail at around the same point)
<infinisil> kalbasit: aka tagged unions, something that can either be of one thing or another and have different types associated with it
<kalbasit> infinisil: oh, that's what `interface{}` is for
<kalbasit> and you can pass anything in
<infinisil> Um yeah no
<kalbasit> a scalar, a struct, a list, map etc...
<kalbasit> lol
<infinisil> This is an instance of what you need sum types for ^^
<infinisil> Another huge application of sum types are AST's
<infinisil> which is what I had to work with in Java, which also doesn't have sum types, it was horrible
<gchristensen> kalbasit: with Option type you can get rid of null / nil, and have type-checked proof you don't have null pointer dereferences
<gchristensen> instead of fn mything(*foo) you'd do fn mything(Option<foo>) and then you have to check to see if it is None or Some-thing
<infinisil> Sum types also combine great with pattern matching
<kalbasit> infinisil: you should see this old presentation by Rob Pike (one of Go's early creators): https://www.youtube.com/watch?v=HxaD_trXwRE
<kalbasit> it hilights why Go is just the language when you want to operate at scale (like a web server)
<infinisil> I don't have the time or will to watch that, but yeah, that is a probably a good use case for go :)
<kalbasit> infinisil: I don't blame you, who does at 3:30AM lol
<infinisil> I'm a night owl, I'll be awake for some more hours heh
<kalbasit> infinisil: I used to be too, in fact I used to work from France with a US company doing 8 to 5 US time
<kalbasit> I can't do that anymore, my kids jump on me at 7AM :)
<infinisil> I see
<gchristensen> ok y'all, wish me luck. talk to y'all like wednesday or so unless the rules changed and I can come back sooner.
<infinisil> gchristensen: Good luck!
<kalbasit> gchristensen: good luck, also not sure where you're going :)
<samueldr> take some time doing stuff you wouldn't otherwise, take a longer walk!
<infinisil> ,luck gchristensen
<{^_^}> gchristensen: Good luck!
<gchristensen> <3 thanks :)
gchristensen is now known as gchristensen`wed
gchristensen`wed is now known as gchris`wednesday
<infinisil> Oh btw, if you want to confuse yourself with Haskell, this is a great short read: https://github.com/quchen/articles/blob/master/loeb-moeb.md
<infinisil> Wait, never mind that
dmc has joined #nixos-chat
dmc has quit [Client Quit]
sir_guy_carleton has joined #nixos-chat
lassulus_ has joined #nixos-chat
dmc has joined #nixos-chat
lassulus has quit [Ping timeout: 264 seconds]
lassulus_ is now known as lassulus
ghasshee_ has joined #nixos-chat
ghasshee_ has quit [Ping timeout: 240 seconds]
pie_ has quit [Remote host closed the connection]
pie_ has joined #nixos-chat
Guanin has quit [Ping timeout: 264 seconds]
Guanin has joined #nixos-chat
pie_ has quit [Read error: Connection reset by peer]
pie_ has joined #nixos-chat
Sonarpulse has quit [Ping timeout: 276 seconds]
pie_ has quit [Ping timeout: 244 seconds]
pie_ has joined #nixos-chat
sir_guy_carleton has quit [Quit: WeeChat 2.0]
ghasshee_ has joined #nixos-chat
ghasshee_ has quit [Quit: leaving]
ghasshee_ has joined #nixos-chat
{^_^} has quit [Ping timeout: 276 seconds]
<manveru> i really wish Go had an option type...
<manveru> like 90% of the bugs we had in production over the years were because of nil pointers :|
<ghasshee> Do you have the difference between 'nil pointer' and 'null pointer' ? I do not know Go well..
<sphalerite> there is none, it's just terminology
<ghasshee> I see.
ghasshee_ has quit [Quit: leaving]
<joepie91> follow-up on Online.net price increases: https://www.lowendtalk.com/discussion/comment/2838002/#Comment_2838002
<joepie91> cc sphalerite
<joepie91> never realized that the Online CEO(!) is active on LET
<joepie91> lol
Guanin has quit [Ping timeout: 248 seconds]
<sphalerite> nice
__Sander__ has joined #nixos-chat
<ldlework> i could really use licecap on nixos...
<sphalerite> ldlework: the website says it reportedly works in wine?
pie_ has quit [Ping timeout: 276 seconds]
Linus[m] has quit [Read error: Connection reset by peer]
unlmtd[m] has quit [Read error: Connection reset by peer]
Drakonis[m] has quit [Remote host closed the connection]
dtz[m] has quit [Remote host closed the connection]
hedning[m] has quit [Read error: Connection reset by peer]
adisbladis[m] has quit [Read error: Connection reset by peer]
philipp[m] has quit [Read error: Connection reset by peer]
mudri[m] has quit [Read error: Connection reset by peer]
{^_^} has joined #nixos-chat
{^_^} has joined #nixos-chat
{^_^} has quit [Changing host]
unlmtd[m] has joined #nixos-chat
Linus[m] has joined #nixos-chat
adisbladis[m] has joined #nixos-chat
Drakonis[m] has joined #nixos-chat
dtz[m] has joined #nixos-chat
philipp[m] has joined #nixos-chat
hedning[m] has joined #nixos-chat
mudri[m] has joined #nixos-chat
jtojnar has quit [Ping timeout: 276 seconds]
jtojnar has joined #nixos-chat
<maurer> manveru: I know you probably can't swap unilaterally, but if you want something with systemsy performance, but type safety and thread safety, looking at rust could be good
<maurer> err, sorry to necro
<infinisil> Oh my god
<infinisil> I just discovered the coolest youtube channel ever: https://www.youtube.com/watch?v=hagana4Qwck
Guanin has joined #nixos-chat
__Sander__ has quit [Quit: Konversation terminated!]
__monty__ has joined #nixos-chat
__monty_1 has joined #nixos-chat
__monty__ has quit [Read error: Connection reset by peer]
jtojnar has quit [Ping timeout: 276 seconds]
jtojnar has joined #nixos-chat
Sonarpulse has joined #nixos-chat
<sphalerite> infinisil: awesome
jD91mZM2 has joined #nixos-chat
pie_ has joined #nixos-chat
obadz has quit [Ping timeout: 256 seconds]
<sphalerite> samueldr: what is it?
<samueldr> kind of top, but for nix build processes
obadz has joined #nixos-chat
<sphalerite> ooooh neat
jD91mZM2 has quit [Quit: WeeChat 2.0]
<samueldr> (related to an earlier conversation)
<samueldr> has minecraft modding gone too far?
<sphalerite> samueldr: without having looked at the video, yes.
<sphalerite> :p
<samueldr> subject of the video, https://git.asie.pl/asie/lunatic86
<sphalerite> heh
<etu> samueldr: Someone needs to do that but with NixOS :p
<etu> But that's probably too big
<samueldr> size isn't the issue, but instruction set :)
<sphalerite> surely you could just use qemu
<etu> lua can bind to c/c++ libraries (this is a question)? Then you can hook up anything :p
<samueldr> inside opencomputers, iirc, it's a java lua vm, which don't have ffi or C/C++ bindings, or at least, let's hope it doesn't :)
<etu> :D
<etu> But it can talk to sockets? Then it can be bridged... :D
<sphalerite> just don't use opencomputers
<sphalerite> use qemu via JNI
<samueldr> though, I now wonder how good a WASM-like thing could get on lua, and then, compile linux for it, nix for it and... that's a bad idea
<samueldr> because you know it'll end up used for mission-critical purposes :)
<sphalerite> minecraft seems to be a good layer for preventing that
<sphalerite> the most serious thing it seems to end up being used for is education
<samueldr> (I was thinking lua generally, not adding minecraft in the mix)
<sphalerite> ah right
<samueldr> not the lua part, but ASM-like and having an OS built using it would be... counter-productive at best
<etu> sphalerite: well, one could build a workflow in minecraft
<etu> like have different rooms with different emulated computers
<etu> for different tasks
<sphalerite> hah, have an office in minecraft
<sphalerite> minecraft + mumble + VDI client in minecraft = turn remote work into not-so-remote work!!
<etu> And there are crazy people out there I tell you. Someone would do it.
<sphalerite> I know, that's the scary bit
<sphalerite> I bet there are already people doing remote work in a virtual office via VR chat or some crap like that
<etu> Probably
<etu> It's rare to be the first one to think about something :p
<samueldr> I would love an AR workstation, better yet if AR+VR, so you get your own workstation screens in your environment, but can get colleages around in a virtual space for $workthings
<samueldr> (hardware isn't there yet)
<srk> I want to replay nixpkgs in minecraft
<srk> could evolve to AR afterwards
katona has joined #nixos-chat
unlmtd[m] has quit [Ping timeout: 255 seconds]
mudri[m] has quit [Ping timeout: 256 seconds]
Linus[m] has quit [Ping timeout: 256 seconds]
Drakonis[m] has quit [Ping timeout: 256 seconds]
adisbladis[m] has quit [Ping timeout: 256 seconds]
philipp[m] has quit [Ping timeout: 256 seconds]
hedning[m] has quit [Ping timeout: 256 seconds]
dtz[m] has quit [Ping timeout: 260 seconds]
__monty_1 has quit [Quit: leaving]
sir_guy_carleton has joined #nixos-chat
unlmtd[m] has joined #nixos-chat
adisbladis[m] has joined #nixos-chat
Linus[m] has joined #nixos-chat
philipp[m] has joined #nixos-chat
dtz[m] has joined #nixos-chat
Drakonis[m] has joined #nixos-chat
mudri[m] has joined #nixos-chat
hedning[m] has joined #nixos-chat
Sonarpulse has quit [Ping timeout: 256 seconds]
katona has quit [Quit: Connection closed for inactivity]