« first day (1556 days earlier)      last day (1556 days later) » 

7:01 PM
@Mithrandir But is it still naa though?
Yeah, NAA
@Mithrandir Just been deleted anyway now :) deletion rate on SO is so quick compared to other sites for low priority flags
But last I heard, the flag queue was 2k+...
What's it at now, @Undo? :)
... I won't deny your previous statement :P
[ SmokeDetector | MS ] No whitespace in answer: ¿Cómo mostrar resultados en un input mediante Javascript? by user76160 on es.stackoverflow.com (@iBug)
7:05 PM
@JakeSymons Review tends to snag a lot of the simpler flags. 900ish of ours are 'other' flags right now.
@Undo hahahahaha
tpu- by Jake Symons
Just wondering, is there a script that translates the box on the non English language sites?
Spam is always at the top, no matter the language. Ordering is maintained
(long way to say "no")
@Undo And how many of those are @mag's?
7:11 PM
What do I have to do with it?
I'm always lurking
@Magisch you know what
you need your own queue, tbh
Ahh that
I didn't put 2 and 2 together
like just a dedicated "Magisch" queue
I have 196 pending custom flags on SO right now
so 10%
7:12 PM
@Magisch I only have 45
I think you have a plurality
Bhargav tells me serial voting flags take 20+ minutes to investigate
So i'm unsurprised that they sit for a long time
They can take hours...
some of those are from last year still, I think
Depending on how well they're hiding and how large the ring is
7:13 PM
@Magisch Grrrrr.
All hard ones too, probably
@Undo All serial voting
About a third voting rings
about a third (uncorrelated) multiple incidents from what just I can see
so yeah
Around 250 more or so coming this week if I can be bothered to actualize and flag them
@Magisch Why do you need to do custom flags, whats wrong with the normal ones?
'custom' == 'other'
7:15 PM
There is no normal flag for serial voting
Custom flags are just those where you type in extra text
don't see the votes reversed
@Magisch I know what they are, so you use them for serial voting. How do you find it?
The serial voting, not the flag
@quartata Still pending
7:16 PM
@JakeSymons they have a SEDE query
@quartata I'll have to have a look at it, I really need some more flags on SO, only got just over 1k
it's not really a public thing
@quartata so I can't use it at all, or if I found it I could?
I really really recommend against it
It's not easy or intuitive
I don't post it publicly for a reason
can you not link that
but no
it's not
7:18 PM
It's encouraged to build your own. Once you can do that, you probably know enough to tell whether the results are valid.
If that's not the right one, then why was it immediately deleted?
that one isn't even by me
because I imagine the mods would prefer people wouldn't play with any of them
Because scripts like that lead to witch-hunts if used incorrectly
Also please don't flag just for the sake of more helpful flags...
7:20 PM
@Magisch it's also not very good
The problem is
these queries all have false positives
and they're hard to spot
@Mithrandir mods . . .
@Mithrandir I'm pretty sure I had this discussion in here yesterday.
@Andy yeah, different person
and people tend to see people pop up on these queries and then make a big deal out of it and call people out when they can't tell
users don't have a lot of the info mods/cms do
so we gotta tread extremely lightly around user-behavior moderation stuff
pretty sure the CMs don't approve of what I'm doing either
@SmokeDetector fp
@NogShine Registered answer as false positive.
@Magisch Well, I've found the right one now, so I'm going to give it a go. Obviously I will use it wisely, thanks for the tips :)
see that's not the word you meant
7:23 PM
but it kinda fits
@JakeSymons I'm so glad you listened to what was just said...
@JakeSymons Honestly... please don't.
this is the kind of stuff shog warned me about
but I didn't listen enough apparently :/
K, what is going on here?
7:25 PM
[ SmokeDetector | MS ] Link at end of answer: Como firmar XML con XAdES-EPES by Luis Orellana on es.stackoverflow.com (@iBug)
@Magisch maybe next time don't save the query
that might work
@quartata it auto saves when you run it
With access to the query and two mods looking at stuff, we still managed to misinterpret stuff. I'd advise not fooling around with it.
@Magisch oh bugger, I forgot
@SmokeDetector no es una respuesta
I thinko, at leasto
7:26 PM
I think I might be a serial voter, I do vote a lot of posts quickly together, I'll have to check the FAQ on it
@JakeSymons the number doesn't matter
It being targeted at someone, on the other hand
If you vote blindly, we can't blame you, because that's how you used your right to vote.
However, spending a little time on a site usually grants you the ability to judge a post's merit in seconds
If you are caught serial upvoting are you told, or are the votes just reverted in the background>
you are """told"""
with a suspension
not strictly true I think some people are warned
and if the script reverts you chances are a mod isn't gonna look at it just yet (I think)
7:41 PM
@quartata Yeah, I might take it easy on the voting, I don't fancy the bench I need to get more gold badges :)
not sure you get what serial voting is
serial voting is upvoting/downvoting a specific person
to get them rep
or make them lose rep
if you're just upvoting a lot of stuff nobody cares that's how this site works
@quartata I know what it is, but sometimes the same person posts multiple questions/answers which I vote on at the same time so it is for the same pearson, but not in the aims of given them rep
I'm just going to change my pic hold on a sec
Time to take a selfie
@ArtOfCode find_or_create_by! is a thing right
also if I do ActiveRecord::Base.transaction will it do multiple transactions if I use multiple tables
or do I need to explicitly stack it
like Bot.transaction do Subscription.transaction do Command.transaction do FeedbackType do <...> end end end end
(if so then I quit rails)
@quartata The non-! version definitely is, don't know about the ! version
miiight have been dropped in recent release.
@quartata wat
ActiveRecord::Base.transaction is just a wrapper for an SQL transaction, which are totally independent from what tables you're using.
Bot.transaction is exactly the same thing, it's just inherited from base
7:53 PM
You probably don't need transactions unless you're hitting perf issues or something
@Undo or you want atomicity for something
yeah, or error handling
See those comments on the meta post?
@ArtOfCode er sorry I thinking of multiple connections, I'm dumb
@Undo I actually do need them
@Undo hrm
if you know you need them, you probably need them
@Undo aye, haven't got round to it yet
7:55 PM
k, just making sure it didn't get lost in the void
We've got plenty of time anyway. Got to get stats figured out
Did you want Shog's CSV still?
@Undo aye
Also throwing my latest Windows issue out there in case anyone's had the same thing/knows how to fix it
@ArtOfCode check your inbox in five minutes :P
@ArtOfCode solution: don’t watch YouTube. I’ve been doing it for a while now, and it’s not that bad.
@JF yeeeah
@ArtOfCode Where do you find the time to watch youtube, I thought you were on here like 24/7 :)
7:58 PM
Art's days are 48 hours long because he's in the UK
that's how timezones work
@Undo that's how like
life works
@Undo GMT punks getting all the goodies
I bet they also have a time travel ticket once a year.
They just have to find a blue police box. Time travel problems solved.
@DJMcMayhem @Mego Congrats! Welcome to the blue crowd :)
Thanks! :)
Where diamonds are made...
8:04 PM
@ArtOfCode Thanks :) I'm looking forward to joining
@DJMcMayhem I haven't got any diamonds yet
My name is blue too. Just a little fainted.
@JakeSymons dude, you haven't arrived yet
Ooh congrats @DJMcMayhem and @Mego, what site?
Results aren't up yet, but I ran the ballot manually
8:06 PM
Loading ballots from file codegolf-stackexchange-com-2018-election-results.blt.
Ballot file contains 3 candidates and 580 ballots.
No candidates have withdrawn.
Ballot file contains 580 non-empty ballots.

Counting votes for Programming Puzzles & Code Golf Stack Exchange Moderator Election 2018 using Meek STV.
3 candidates running for 2 seats.

 R|PhiNotPi       |DJMcMayhem     |Mego           |Exhausted      |Surplus        |Threshold
Q: 2018 Community Moderator Election Results

Jon EricsonProgramming Puzzles & Code Golf's second moderator election has come to a close, the votes have been tallied, and the 2 new moderators are: They'll be joining the existing crew shortly — please thank them for volunteering, and share your assistance and advice with them as they learn the ropes...

They just went up
Resyncing profiles
@DJMcMayhem @Mego 2 Smokey mods, we do make diamonds here :)
Hey look, I'm all blue now
8:07 PM
@DJMcMayhem have fun finding all the tools
Hint: They are everywhere...but we're not giving you a map to find them
@JakeSymons Some advice I got a looooong time ago, when I was in your same position and probably mindset: Don't try to make it happen. That doesn't work.
As soon as you stop trying, you're ready.
@Undo I think I need to answer one question somewhere other then MSE first, that's kind of the first step :)
it'd help ;)
@DJMcMayhem chat.stackexchange.com/rooms/4 for the TL
8:10 PM
@DJMcMayhem hint: look at the buttons, but don't push them
Now that is followable advice
Except if the buttons are red
then don't even look at them
@ArtOfCode Does internet die for just the single machine or everything connected to the access point (or even router)?
@Andy not a clue, but I'd suspect machine only
particularly given that it doesn't happen on Ubuntu
Ahh, I can't find a decent pic of me to upload
I can have a video open but not playing and the connection is stable
start playing it and we're done
8:16 PM
Does a VPN change anything?
Different browser maybe?
I think I had a similar issue earlier where my computer would keep disconnecting from the internet, not related to YouTube IIRC, but uninstalling/reinstalling network drivers fixed it
Except when mine connected it would bring down the whole house
anyone know of a good tutorial on Python coroutines?
[ SmokeDetector | MS ] Potentially bad keyword in answer: How do I install Python 3.6 using apt-get? by Aryal Bibek on askubuntu.com
I have no idea what I'm doing (work project)
8:20 PM
@Undo do you know how regular coroutines work
fp- by Mego
@Undo will keep trying, but right now it's working VPN or no
@quartata Probably not
@Undo do you know how generators work
Context: I need Tornado to serve multiple long-running requests in parallel.
8:23 PM
Python webserver
very good web server
ok so generators are actually a special case of coroutines
8:23 PM
so it's helpful for thinking about them like that
not finished
so you know how when you do a yield you essentially yield control back to the caller
(hence the name)
so now you have two "threads" of control flow: the generator and whatever the caller was doing
but only one is running at a time
that's basically the concept of coroutines
The "only one is running at a time" part doesn't sound like it'll help with parallel requests
8:26 PM
remember though that in Python only one thread can run at a time anyways
It's basically a proxy endpoint - something calls this handler, handler calls another internal webservice with ~10s latency. No real work done in there.
the difference is that coroutines let you schedule things however you like
now for Python specifically
before Python 3.5 with the fancy async/await syntax
the concept basically was just built on top of generators
it goes like
So yield basically lets you return from a function multiple times
right: but the key part is that it suspends that function and you can resume it later
Reading an example of a prime number generator
8:30 PM
ok what was I going to say again
oh right
so Python 3.5 kinda muddied the waters by introducing a separate coroutine type
this was a good thing so that you keep them separate from generators that were actually being used to, y'know, generate stuff but it kinda obfuscates the connection between them
fundamentally await is identical to yield from
which is to say: yield into this generator and don't come back until it's finished -- when it yields, yield back the same value to my caller
Makes sense.
An inverse yield, of sorts
It's equivalent to for i in generator: yield i
Whooo! Congrats @Mego and @DJMcMayhem :D
it runs through the generator and yields everything it yields
Thanks! :)
8:33 PM
Oh, okay. A passthrough.
yeah that's the idea
rather than blocking on something, you basically hand that off to whoever called you
But that still doesn't make it parallel - at this point, we're still blocking the request handling thread, right?
but you always will be
k, following
good luck getting true parallelism in Python though
8:34 PM
8 mins ago, by quartata
remember though that in Python only one thread can run at a time anyways
if you actually want that, you use processes
If you can run multiple processes you can do it
tornadoweb.org/en/stable/faq.html sure looks like you can
I was getting to that
in a proper asyncio setup when you "hand that off" eventually you bubble your way up to some sort of event loop
this is kinda like a scheduler
it decides which of several different coroutines it has as tasks to yield into
when one of those has something it needs to wait on, it gets control back and does something else
[ SmokeDetector | MS ] URL in title, potentially bad keyword in body, potentially bad keyword in title: makreviews.com/lean-belly-breakthrough-review-works-scam/ by Isobel Ally on apple.SE
we actually are using this in SmokeDetector right now
I'll show you
8:36 PM
tpu- by Tinkeringbell
these don't spawn threads
there's one thread running the event loop
it gets tasks from the various functions .do, .later, .periodic
And it intelligently schedules these tasks
for varying definitions of intelligent. it cannot do everything a kernel level scheduler does
there's very little magic to it
if you take a look at Tasks.periodic you can see I'm constructing a coroutine
looks like this:
    def f():
        while True:
            yield from asyncio.sleep(interval)
            func(*args, **kwargs)
asyncio.sleep is a special coroutine
Right. So it's saying "do this as often as you can, but it'll stall for n seconds between executions and let you do something else in the meantime"
8:40 PM
the logistics of where asyncio.sleep comes from isn't important
for something like say, waiting on a socket, the underlying coroutine that does the I/O may use a special syscall that lets it check if stuff is available
If it didn't yield from, though, that function would just never give up the event loop.
So I'm getting a clearer picture - it sounds like what I actually need is an async implementation of requests or similar
@Undo Yes. This is what user-land schedulers don't do: pre-emptive scheduling
which is interrupting something while it's still working
However this is not as big of a deal as you might think
8:42 PM
Because it's single-threaded, so it can't run a hypervisor-type thing and kill off other stuff.
Has to wait for it to relinquish control of that one precious thread
The kernel has a big advantage which is that it can get interrupts from the CPU
Almost all things relinquish control eventually though -- even something like a print means giving up control to wait for STDOUT to be ready to write to
asyncio has some good debugging tools to help tell when coroutines aren't getting scheduled
Also I would point out that Rust and Go do all of their scheduling in user-land like this
Guys, please tell me what you think of my new profile pic before I upload it
they do what's called M:N threading: M coroutines on N real threads
that's to take advantage of multiple cores
Never mind the link doesn't work, guess I'll have to upload it blind. Quartata sorry for breaking your conversation just then
no it's fine
8:44 PM
@JakeSymons in general, I recommend people not use their real face for privacy reasons - but it's your call.
I think Undo gets the concept and I'm just being long winded
Oh right requests
So for HTTP requests
@quartata Learning a lot from all of this
liking it
there's a module called aiohttp
Sounds scary
oh, not too scary
no it's pretty nice
not quite as clean as requests itself but
this is the page for all of the asyncio stuff by the way: docs.python.org/3/library/asyncio.html
aside from coroutines, the event loop and a future class it offers lots of wrappers to handle TCP and what not for you
aiohttp just builds on top of that to abstract away the, well, HTTP
8:47 PM
So that's what I need, then. And figure out how to plug NTLM auth into it, but that's a separate issue
so it looks like Tornado uses its own internal event loop by default
but you can get it to work with asyncio:
A: Using tornado with aiohttp (or other asyncio-based libraries)

kwarunekAccording to docs, you are doing it almost right. You have to create/init Tornado's ioloop with corresponding asyncio, since aiohttp is running on asyncio. from tornado.ioloop import IOLoop import tornado.web import tornado.httpserver import aiohttp from tornado.platform.asyncio import AsyncIOMa...

> you are doing it almost right
story of my life
@Undo That is a good point actually
this talks about it some: tornadoweb.org/en/stable/asyncio.html
basically all you do is just AsyncIOMainLoop().install() first
then do asyncio.get_event_loop().run_forever() to start the asyncio event loop like normal
@quartata This looks like exactly what I want.
8:50 PM
yeah should be good stuff
let me know how it goes
I will. Thank you so much for taking the time on this. Very helpful
just remember
when in doubt
Its a test, I've got to get a better one later :)
It hasn't changed
'Subroutines are special cases of ... coroutines.' - Donald "WHERE IS VOLUME 4B" Knuth
sorry that last part was me
I'll be pretty sad if he croaks before it comes out
selfish of me to mandate that his entire life revolve around writing books for us
Kinda like that Game of Thrones guy
8:54 PM
ha yeah
like, I'm sure the books are awesome and all, but... he probably wants a life
to be fair Knuth did get a 32 year vacation between 3 and 4A
makes half life 3 look like a joke lol
So what do you guys think? just uploaded
@Undo Is this part of a larger system or a new thing you’re writing?

« first day (1556 days earlier)      last day (1556 days later) »