jemc changed the topic of #ponylang to: Welcome! Please check out our Code of Conduct => https://github.com/ponylang/ponyc/blob/master/CODE_OF_CONDUCT.md | Public IRC logs are available => http://irclog.whitequark.org/ponylang | Please consider participating in our mailing lists => https://pony.groups.io/g/pony
pzel has quit [Ping timeout: 245 seconds]
pzel has joined #ponylang
Sargun has quit [Read error: Connection reset by peer]
Sargun has joined #ponylang
pzel has quit [Ping timeout: 245 seconds]
pzel has joined #ponylang
jaro has quit [Ping timeout: 264 seconds]
acarrico has joined #ponylang
pzel has quit [Ping timeout: 260 seconds]
SenasOzys has quit [Ping timeout: 248 seconds]
endformationage has quit [Quit: WeeChat 1.9.1]
Tulah268 has joined #ponylang
<Tulah268> ARE YOU LOOKING FOR A HELP CHANNEL WHERE THE HELP DON'T KNOW SHIT BUT INSTEAD OF SAYING THEY DON'T SHIT THEY WILL SPEND 10 MINS JERKING YOUR CHAIN?? LOOK NO FURTHER THAN #UBUNTU A CHANNEL FULL OF DUMB NIGGERS THAT DON'T KNOW SHIT!!
<Tulah268> ARE YOU LOOKING FOR A HELP CHANNEL WHERE THE HELP DON'T KNOW SHIT BUT INSTEAD OF SAYING THEY DON'T SHIT THEY WILL SPEND 10 MINS JERKING YOUR CHAIN?? LOOK NO FURTHER THAN #UBUNTU A CHANNEL FULL OF DUMB NIGGERS THAT DON'T KNOW SHIT!!
<Tulah268> a c a r r i c o S a r g u n m 6 w 6 a t u r l e y a l e x a s h k a 2 a t k R o b d o r j m i v e n i n a r a j o n b r w n _ k r i g [ m ] _ w h i t e l o g g e r j o n r h k e a t h l e y j t f m u m m g o r n i k m s t r m p n k d a r a c h o m a r k j s l f r i t c h i e L i c e n s e r c a t e r n A m u n _ R a S c h w a r z b a e r D D R d o m 9 6 B o m b e C c x W r k m i s t e r _ z
Tulah268 has quit [Client Quit]
<Tulah268> acarrico Sargun m6w6 aturley alexashka2 atk Robdor jmiven inara jonbrwn_ krig[m] _whitelogger jonrh keathley jtfmumm gornikm strmpnk darach omarkj slfritchie Licenser catern Amun_Ra Schwarzbaer DDR dom96 Bombe CcxWrk mister_zombie tokenrove voldyman betawaffle emilbayes cquinn magicbit doublec saolsen dlowe kempe bougyman larshesel bbhoss j14159 wyvern ericbmerritt_ jeremyheiler kjsnavely bibi dch SeanTAllen Viknet krig jbk oldsk00l malthe Miikka
vaninwagen has joined #ponylang
gokr has joined #ponylang
SenasOzys has joined #ponylang
SenasOzys has quit [Ping timeout: 245 seconds]
SenasOzys has joined #ponylang
Bombe has quit [Ping timeout: 256 seconds]
m6w6 has quit [Ping timeout: 265 seconds]
inoas has joined #ponylang
m6w6 has joined #ponylang
SenasOzys has quit [Ping timeout: 245 seconds]
_whitelogger has joined #ponylang
SenasOzys has joined #ponylang
vaninwagen has quit [Ping timeout: 245 seconds]
jmiven has quit [Quit: co'o]
jmiven has joined #ponylang
SenasOzys has quit [Remote host closed the connection]
SenasOzys has joined #ponylang
SenasOzys has quit [Ping timeout: 240 seconds]
SenasOzys has joined #ponylang
_andre has joined #ponylang
Bombe has joined #ponylang
jaro has joined #ponylang
vaninwagen has joined #ponylang
vaninwagen has quit [Ping timeout: 256 seconds]
gokr has quit [Ping timeout: 264 seconds]
jemc has joined #ponylang
_rck has joined #ponylang
<hmans> Seeing as HTTPServer is being removed from the standard library (right?), what would be the recommended place to head to if I were interested in building a HTTP server with Pony?
<SeanTAllen> well, if you are interested in performance, i would suggest writing a high-performance http parser first.
<SeanTAllen> that is a project unto itself and then many different http servers can be built around that
<SeanTAllen> lots of good start performance notes here: https://www.ponylang.org/reference/pony-performance-cheatsheet/
<SeanTAllen> or you could find a c http parser that is "high performance" and start by wrapping that with a pony shim and then using that to build the http server you want
<hmans> I don't know if performance is terribly relevant to me at this point.
<SeanTAllen> do you like the API for the http server that exists?
<hmans> Taking https://github.com/ponylang/ponyc/blob/master/examples/httpserver/httpserver.pony as a reference example of what an actual program consuming the API would look like, I would say it feels sane enough, yes. I haven't written anything against it so far.
<SeanTAllen> well then, i would say, it the performance and API for that are to your liking, fork the http server and start a project to do what you want with it and try to get other folks involved as well
inoas has quit [Quit: inoas]
<SeanTAllen> maybe roll in theodus' jennet if you want to provide a more "sinatra" like api
<hmans> *bookmarks*
<hmans> I'm happy jennet's there, but I'm personally not very keen on Sinatralikes. Part of my ongoing pet project (the one I'm currently using Crystal for) is a small routing-tree-style framework that I like very much, so I'm generally interested in finding out how it would work in the context of Pony actors.
<hmans> But note taken
<SeanTAllen> well, that works as well
<SeanTAllen> i think in general things like jennet or what you describe that are at a higher level are probably better for getting people involved.
<hmans> Yeah, I will definitely check it out, at the very least for learning from its code.
endformationage has joined #ponylang
<_rck> SeanTAllen: is there a way to check if an actor is getting overloaded?
<hmans> Right now I'm mostly trying to get a feel for what are the current Pony projects within the domain of web servers/apps/frameworks
<_rck> TCPConnectionNotify has a throttled/unthrottled to let it know that is experiencing backpressure, but I'm curious to know if there's something general for any actor
<SeanTAllen> _rck nothing general has been done yet. throttled/unthrottled are related to events external to the runtime
<SeanTAllen> its your choice of whether to apply/release runtime backpressure
<SeanTAllen> there's nothing that is surfaced to the programmer at this time about being muted/unmuted
<SeanTAllen> given that would be a message send,
<SeanTAllen> you wouldnt be told you were muted til after you were running again
<SeanTAllen> hmans: basically there are none. its a pretty greenfield for you to have fun in.
<_rck> ok, I guess one way is to consume messages as fast as possible to an internal queue and check for overload there
<SeanTAllen> well, not really.
<hmans> SeanTAllen: \o/
<SeanTAllen> _rck: what is your worry/concern?
<_rck> I was experimenting with the partitioned global key-value store we discussed the other day, but over time my latencies were increasing linearly
<_rck> I'm assuming the partition actors were getting overloaded, but I saw no way to check
gokr has joined #ponylang
<_rck> I might go with the persistent map impl that vaninwagen suggested, but I wanted to experiment with other solutions first
<SeanTAllen> if an actor gets overloaded, then the senders will be paused.
<SeanTAllen> i cant comment on latencies as i dont know how they are being measured.
gokr has quit [Ping timeout: 245 seconds]
<SeanTAllen> if you are getting backed up writing over tcp, you do need to apply/release backpressure yourself to account for that.
<_rck> this was round-trip latency from a client performing reading over tcp until they got a value back
<SeanTAllen> so quick question: how do you know the latency is coming from your pony app?
<SeanTAllen> can you do some per request timing inside the pony app to verify that you see latencies increasing over time?
<SeanTAllen> you could steal the metrics histograms from wallaroo perhaps...
<_rck> that's interesting, any pointers?
<_rck> oh, I see you wrote some posts on the blog about how you do it
<_rck> I'll take a look there!
<SeanTAllen> i can point you to the specific bit of code
<_rck> but to answer the question about latency, the clients are not really doing anything with the data, this was showing up during simple load testing
<SeanTAllen> you'd need a way to record incoming and outgoing timestamp then could add the simple histogram.
<SeanTAllen> i understand the client isnt really doing anything but
<SeanTAllen> depending on how you are timing, then unrelated issues in a client could be being measured
<SeanTAllen> for example gc pauses in the client
<SeanTAllen> memory pressure in the client
<SeanTAllen> it could be getting scheduled oddly on the cpus
<SeanTAllen> (cpu pinning is a good idea there, set aside cpus only for client and only for server)
<_rck> ah, yeah, I see
<SeanTAllen> benchmarking is... fun?
<SeanTAllen> so, your test
<_rck> haha, yes it is
<SeanTAllen> are you adding new keys to k/v or just storing?
<SeanTAllen> errr
<SeanTAllen> just reading
<_rck> just reading, database prepopulated with random data
<SeanTAllen> so the data set is consistent across the run yes?
jemc has quit [Ping timeout: 248 seconds]
<SeanTAllen> and your access to it should be consistent (as in, your arent suddenly only reading a couple keys where earlier you were reading many or vice versa or anyhting like that)?
<_rck> yeah, the key distribution is pretty uniform
<SeanTAllen> are you monitoring memory usage of the server process? could there be a memory leak? from the sounds of it, the memory should grow for a but then settle into something stable.
<_rck> not right now, no
<_rck> right, that's something to keep in mind
<_rck> when I'm doing erlang, observer is a very valuable tool
<SeanTAllen> are you using master or the last release?
<SeanTAllen> ie master or 0.21.3 ?
<_rck> last release, yes
<_rck> is master stable enough for day to day usage?
gokr has joined #ponylang
<_rck> thanks for taking the time to go through this, btw
<SeanTAllen> well, there's a "memory" leak in 0.21.3 that might impact you.
<SeanTAllen> there's a number of breaking changes on master that may or may not impact on what you are doing
pzel has joined #ponylang
<SeanTAllen> but if you see memory growth, it might be related to the change that was reverted on master
<SeanTAllen> and will be released this weekedn
<_rck> ah, that's great to hear
<_rck> I guess I'll be lazy and wait to check if the new release fixes the issue then haha
<_rck> thanks for the effort in putting a new release together
<alexashka2> quick question: is there a map literal, like the one for array? Something of the form of {a: b}?
<SeanTAllen> alexashka2: no
<alexashka2> perhaps the obvious follow-up: why not?
<alexashka2> also, why is inserting into a map, a failable operation?
<SeanTAllen> the answer to the first would be "because there isnt"
<SeanTAllen> you'll have to be more specific re the 2nd
<alexashka2> fun ref insert(key: K, value: V): V ? => - this is a method in map.pony in collections. Why is there a question mark for an operation that can't fail as far as I can tell?
<SeanTAllen> because of
<SeanTAllen> that comment should be removed as its misleading
<SeanTAllen> if any error is encountered, it will throw an error
<SeanTAllen> that error would have to be handled.
<alexashka2> I understand, I am asking how an insert operation can ever fail
<SeanTAllen> there's no way at this time for the compiler to prove there will never be an error there
<SeanTAllen> you arent
<SeanTAllen> you are asking with its partial
<SeanTAllen> those arent the same question
<SeanTAllen> im not trying to be pedantic for the sake of it
<SeanTAllen> its just an important distinction here
<alexashka2> SeanTAllen: as far as i can tell, the implementation is partial, whereas it could easily be total
<SeanTAllen> how?
<alexashka2> SeanTAllen: the same way it is in Idris as one example?
<alexashka2> a langauge that makes far stronger totality guarantees than pony as far as I can tell?
<SeanTAllen> right
<SeanTAllen> ok
<SeanTAllen> im going to call that trolling
<SeanTAllen> "easily"
<SeanTAllen> just add dependent typing
<alexashka2> SeanTAllen: well you're asking me how one would implement a core data structure in pony, a language I have no familiarity with. That's a rather strange ask
<SeanTAllen> you told me it could easily be total
<SeanTAllen> i asked you how
<SeanTAllen> " the implementation is partial, whereas it could easily be total"
<alexashka2> let's remove the easily part :)
<SeanTAllen> sure anything can be total in any language if you add enough features
<SeanTAllen> im going to step away from this conversation now
gokr has quit [Ping timeout: 248 seconds]
alexashka2 has quit [Quit: Leaving...]
pzel has quit [Ping timeout: 245 seconds]
_rck has quit [Quit: WeeChat 2.1]
pzel has joined #ponylang
droman has joined #ponylang
gokr has joined #ponylang
droman_ has joined #ponylang
droman has quit [Ping timeout: 240 seconds]
jeremyheiler is now known as Guest91270
dch is now known as Guest54240
Amun_Ra is now known as Guest42791
krig is now known as Guest44022
bougyman is now known as Guest90958
Guest54240 has quit []
droman_ has quit [Ping timeout: 245 seconds]
droman_ has joined #ponylang
Guest91270 is now known as jeremyheiler
jeremyheiler is now known as Guest98372
Guest98372 is now known as jhei
droman_ has quit [Ping timeout: 276 seconds]
vaninwagen has joined #ponylang
<vaninwagen> alexashka2: from the looks of it HashMap.insert could be total by just returning the given value in the else clause of the try, to make the compiler happy. As this case should never happen, but the compiler cannot know about it, we need to trick him a bit here.
<SeanTAllen> vaninwagen: that would be a bad idea
<SeanTAllen> it "cant happen" right now
<SeanTAllen> that could end up being a legit error at some point
<SeanTAllen> there's nothing to do for that until eventually the value dependent types come along
<vaninwagen> SeanTAllen: couldn't we ensure insert does insert in a unit-test, which fails if there is a swallowed error and thus the value is not properly inserted?
<SeanTAllen> sorry, i dont understand vaninwagen
<SeanTAllen> how does that get rid of insert being partial?
<vaninwagen> SeanTAllen: let me come up with a playground...
<vaninwagen> ah no
<vaninwagen> it is not possible
<vaninwagen> my bad, value is consumed
<vaninwagen> it needs to be partial, you are right
<vaninwagen> you're the real pro-Sean
<SeanTAllen> i look forward to the day we get value dependent types
<vaninwagen> me too
<SeanTAllen> see how hopeful i sound?
<SeanTAllen> one day, one day luke will open that pr
<vaninwagen> we need to send someone to get him off this irish island https://img.rasset.ie/000e1a91-800.jpg
<vaninwagen> _rck you have a partitioned key value store in pony?
pzel has quit [Ping timeout: 245 seconds]
gokr has quit [Ping timeout: 256 seconds]
vaninwagen has quit [Quit: WeeChat 2.1]
Guest42791 is now known as Amun_Ra
pzel has joined #ponylang
acarrico has quit [Ping timeout: 245 seconds]
pzel has quit [Ping timeout: 252 seconds]
pzel has joined #ponylang
pzel has quit [Ping timeout: 252 seconds]
<SeanTAllen> Pony-stable release coming tonight.
Guest44022 is now known as krig
gokr has joined #ponylang