« first day (1227 days earlier)      last day (2585 days later) » 

12:00 AM
Probably something like that
 
It wasn't really about Andy, it was about a collection of mods whose collective opinion differed significantly from the person who posted that meta post.
 
@ArtOfCode well, now all I need to do is init the chat sockets for the Post object, or we refer to another one heh.
and we're all good.
The HTMLParser seems to work, because I don't know if BS4 can inherently unescape the entities
 
CI on 8ac43cd succeeded.
 
^ that's just comments, no need to pull in
but may as well
!!/pull
 
Restart: API quota is 18856.
 
12:08 AM
@ThomasWard OK in the 45 minutes it took me to eat dinner I decided to change my chat module
Now there's going to be a config file something like this:
 
you haven't even linked me to your code yet
i'd rather just see code lol
 
"rooms": [
  "11540": ["debug", "feedback", "all_sites"]
  "201": ["site-askubuntu.com"]
]
And then you can just do broadcast_rooms_with("debug", <msg>)
 
ehhhhh, I'm not a fan of that
personally.
 
What's wrong with it?
 
because we use a lot of other things for 'rooms' here
some are watchers, some are "IgnoreCertainReasons", etc.
the whole 'chat room' thing here is VERY complex
 
12:11 AM
That can encompass this though.
Like, we would first send a report to all_sites then to site-<url>
 
@quartata I'd rather use dicts within dicts, IMO, which is kind of what we have now
 
I really like the idea, but it might be a bit complicated to implement
 
it also is VERY hard to implement in your idea
yes we can simplify it
but you're complexifying it
 
does Python support lambdas? It might make that easier
 
dicts can make it easier to interpret and quite possibly impelemtn.
 
12:12 AM
@NobodyNada When I load the config file I'm turning it into a dictionary like this:
 
@quartata why not enter data in the config file as a dict
 
{"debug": ["11540"], "feedback": ["11540"], ...}
 
and then json.load(file)
save yourself a step
ehhhhhh
@quartata that's...... not exactly nice.
 
@ThomasWard Because then when you're adding a new room you have to add it in multiple places
 
nor is the existing system, but that'd be very confusing.
 
12:13 AM
It's an implementation detail.
 
@quartata I don't think your implementation will be easy to achieve what we're talking about - if you can prove otherwise then meh, otherwise...
 
Not sure if this is spam smokey didn't catch: stackoverflow.com/a/43057476/445131
 
@quartata and actually to add a room?
we only need to add it to one location currently.
as for debug/feedback for the most part that's only reported to here, IIRC
 
@EricLeschinski it does disclose affiliation, but it might be NAA
 
And if we wanted it to go to, say, SOBotics someday far far away?
 
12:14 AM
the only time Smokey is defined twice, @quartata, is in the websocket and the room list
@quartata for reporting targets or "Accept Debugging Here", etc.?
 
@ThomasWard Debugging.
 
@quartata 'debugging': True in the dict that we already populate
just like we have 'watcher': True for watcher rooms for feedbacks
 
Also right now I'm seeing stuff like this:
 non_tavern_reasons = [    # Don't report in the Tavern
        "all-caps body",
        "all-caps answer",
        "repeating characters in body",
        "repeating characters in title",
        "repeating characters in answer",
        "few unique characters in body",
        "few unique characters in answer",
        "title has only one unique char",
        "phone number detected in title",
        "offensive body detected",
        "no whitespace in body",
        "no whitespace in answer",
 
@quartata that's a 'reporting' refactor part
not a 'chat room storage and structure' part
@quartata you also need to take into account the different chat sockets
 
Well with this I could do something more like broadcast_rooms(with=("all_sites"), without=("no-all-caps body"))
 
12:17 AM
if SOBotics is a subsite of SE, then we just add to a single dict that already exists for destinations.
if it's its own chat system, we need to have the dict and the socket.
(and that is a limitation of ChatExchange)
blurgh i just want to go home and sleep now >.<
 
@ThomasWard That's fair. I can just turn it into this then:
"rooms": {
  "11540": {"host": "chat.stackexchange.com", "msgs": ["debug", "feedback", "all_sites"]}
}
Then it'll check when it opens the rooms
 
still not a fan
because of "host"
 
Hm?
 
how do you turn "host" into which chat socket to send to? How do you know if chat.se is going to the SO wrapper or the SE wrapper? Or the Meta.SE wrapper?
 
I mean I can't magically know if a room is on SE or SO
@ThomasWard ChatExchange lets you just specify the host when you create a Client
 
12:19 AM
point.missed
 
Room objects you get from that client are then associated with that site
 
jeez this is like talking to a brick wall can we continue this discussion tomorrow after I rest and restore my stability, my brain is probably close to bringing a shotgun to my 'conscious' state and forcibly go to sleep to NOT destroy the earth...
 
Yes, sorry.
I'll make code examples
 
yes my brain thinks in code examples better than it does textual descriptions of theories of execution and implementations :P
i still desperately need sleep though so probably going to go sleep
 
@ThomasWard good idea; see you later!
 
12:26 AM
Dammit, I forgot with is a keyword.... :P
 
12:37 AM
[ SmokeDetector | MS ] Repeating characters in answer: How do you link "o" and "s" in cursive font? by dffffffff on ell.SE
[ SmokeDetector | MS ] Username similar to website in answer: How is Gosper's approximation to factorial derived? by JAVeeh on math.SE
naa- by NobodyNada
 
meh, I'll go NAA
@SmokeDetector k
 
12:59 AM
@ThomasWard Only partially tested. tell_rooms and parse_room_config are the important parts:
import ChatExchange.chatexchange.client
import json

import smokey_secrets

_init = False

_clients = {
  "stackexchange.com":      None,
  "stackoverflow.com":      None,
  "meta.stackexchange.com": None
}

_room_permissions = None
_rooms = {}

def verify_init(function):
  def f(*args, **kwargs):
    assert _init
    function(*args, **kwargs)

  return f

def init():
  global _clients
  global _room_permissions
  global _rooms

  assert smokey_secrets.secrets

  for site in _clients.keys():
    client = ChatExchange.chatexchange.Client(site)
Yeah, the implementation is ugly I'll grant...
OH CRAP
I forgot that rooms can have the same ID on different networks...
Hrm.
 
@quartata Also, use with blocks instead of closing files explicitly.
 
@ArtOfCode Sorry, was in a rush
Anyways suppose we wanted to send a report that had a certain reason on a certain site. We can just do tell_rooms(report, ("site-" + site_name,), ("no-reason-" + reason_name,))
If Ask Ubuntu hated "Blacklisted user" then their config could be "201": ["site-askubuntu.com", "no-reason-Blacklisted user"]
A simple example but it can extend to more things
 
@quartata I like your thinking, but not your implementation :P
 
It'll be better with a few comments
 
Instead of mashing strings together and relying on string splits, use objects/dicts since they're made for that purpose.
 
1:12 AM
Elaborate?
 
lemme do a gist
 
How would we store those in the JSON though?
 
in objects?
 
I guess I'd need to see what you mean exactly
I'l grant there's a tricky trade off between human readbility of the config and machine readability here
 
I'm gonna create what I'd call an ideal rooms.json
 
1:23 AM
Interesting.. I think I can make it so that we can add new things like "reasons" without any modifications to smokey_chat
 
the "control" role would grant commands and feedback
figured it was easier to roll those into one
 
That one would need to be special. Currently I'm joining rooms on demand but those need to be joined and watched first
I called it "commands"
in init
 
shrug names are semantics
don't really matter what it's called as long as we know what it does
 
Oh I know. Just wanted to point out where it was in my code
How should we handle rooms with the same ID on different networks
oh wait nvm
Didn't read carefully
This is for rooms not users.
Although I'll add that too eventually
 
multiple permission levels could be done though, I guess
 
1:30 AM
No use for it now but since we'll be reworking commands anyways might as well
 
though to be honest we should probably pull and cache them from MS instead of inventing a new permissions system
 
@ArtOfCode That's a really good idea
 
Is that exposed in the API?
 
The disadvantage is that it adds more dependency on Metasmoke
 
@quartata only code admins are at the moment, but it's not much work to add the lot
@NobodyNada yeah, but at this point it's pretty stable, and if we cache them locally as well then we're not totally reliant on it
 
1:31 AM
@NobodyNada Not a big deal if it's cached
Although it would need to be on disk
 
The problem is that it makes it more difficult to run a testing copy of Smokey
 
Could add an override list
locally that is
 
That'd work
 
@ArtOfCode MS would need to tell Smokey when to invalidate the cache via websocket
 
@quartata pull on startup and add a command for manual pull
 
1:34 AM
@quartata or we could just restart Smokey when we change privileges
 
Is it that rare?
I guess.
 
@quartata yep; maybe once every couple of weeks
 
Mkay. That's easy.
 
Is everyone OK with AES-256 for secrets? I'm storing email password and MS key in one encrypted blob that you provide the key for at startup
 
1:37 AM
@SmokeDetector why
 
@NobodyNada Body - Position 159-168: putlocker
 
sd - f
Does it need to be encrypted at all?
 
Yeah.
 
@quartata as an encryption standard, yes, but Smokey's password should generally not be stored on disk. Let hosts pass it on the command line.
use the getpass module if it's available
 
@QPaysTaxes @quartata is going to store the encrypted creds on GH?
I thought it was just on disk
 
1:39 AM
@ArtOfCode I mean it's more because the MS key is just as dangerous as the SE password, and this replaces two passwords with one
 
@quartata but at the same time, some people have one and not the other
yeah, if we're storing in the repo AES/Rijndael-256 isn't the right choice
but storing in the repo is a bad idea, so let's not do that
 
And the email, GH email, GH password, MS key?
@ArtOfCode oh of course
 
@quartata in the current version, they're all just stored unencrypted on local disk, in config.
 
And for that matter it doesn't need to be the same secret store and key for everyone. Each instance could have a different password
 
@QPaysTaxes course not
we're not that bad :P
in fact, except for EC2 config, everywhere else I store them is 4096-bit RSA private key protected
no because I like being practical
8192 is more than necessary
4096 is already multiple-universe-lifetimes to crack
 
1:45 AM
@ArtOfCode probably a lot less than that (centuries at the most, probably)
because quantum computers can break RSA with Shor's algorithm
 
@NobodyNada again, being practical. Universe lifetimes for not-governments.
 
That's why I use AES
 
@quartata but AES is symmetric
RSA is asymmetric, so it has a (mostly) different set of use cases
 
it's all about the key exchange problem
 
Yes. For storing passwords that's fine, and quantum computers can only do Grover's against it
(by storing passwords I mean a password manager not authentication)
 
1:50 AM
Anyway, to return to the original discussion, @quartata it'd be pretty cool if I could run python set_creds.py, have it ask me for the various creds, and store them in an encrypted format that it could access later
 
That was my plan
Just not Smokey's pass right
 
I guess you could, actually
yeah, why not
Smokey'll still have to ask for any creds that aren't in the encrypted store, obviously
 
I can arrange for that
 
Dinnertime; see you later!
 
I'm revamping findspam to use a thread pool
At least I plan to
 
2:04 AM
@quartata Does a thread pool stop other applications from using those threads?
 
If you mean the cores we already spawn a thread per post so there's more threads than cores
 
aye, but I'm trying to work out resource impact
which, ideally, should stay as low as possible
 
[ SmokeDetector | MS ] Manually reported answer: Burn ISO Audio CD by Annie on askubuntu.com (@ThomasWard)
 
2:09 AM
[ SmokeDetector | MS ] Manually reported answer: How can I convert audio from ogg to mp3? by Annie on askubuntu.com (@ThomasWard)
 
Yeah that. I'm using the threads to parallelize running the rules over a post.
You can do !!/allspam also
 
ah, til. thanks.
 
@KazWolfe User blacklisted (670501 on askubuntu.com).
 
it helps to use the right command i'd think.
 
@quartata I'm not sure that's necessary. That's one of the quickest bits of the existing smokey.
 
2:26 AM
Hm?
Yes I'll probably do that
 
2:53 AM
@QPaysTaxes On mobile. What's up?
Heh, fun. There's some limited brimstone raining ability on mobile
Ideally, yes
I know it's kinda painful with that five second delay, but it makes some things easier on our end
An other flag also works, or a custom flag on one of the comments
Hah, I wrote one of those way back in the charcoal days.
Like real charcoal
Room was originally for some comment mass-flagging operations. Ancient history
 
The first Charcoal was a comment flagging thing in PHP
ninja
 
No I'm not doing anything currently
I'm trying to comprehend bodyfetcher
 
@QPaysTaxes Oh, yeah. If that's what I think it is, there are probably better things to spend time on.
I have no data that says we're being held up by that part of the code.
 
3:05 AM
[ SmokeDetector | MS ] Manually reported answer: Hosting d3.js visualizations on Squarespace by Trần thị chiêu kiều on stackoverflow.com
 
I was going to use concurrent.futures actually but multiprocessing might be easier here
 
tpu- by Rob
 
@QPaysTaxes What about it?
 
[ SmokeDetector | MS ] Bad keyword in link text in body, pattern-matching website in body: So Adidas took an essential gamble as soon as it thought by rose12314 on webmasters.SE
 
API queue is the vast majority of that delay, you can't increase it by more than a few hundred milliseconds without adjusting API quotas
s/increase/decrease
Mostly, I'm saying that any gain to be had there is so small as to be immaterial, and then we have the maintainability overhead from dealing with thread pools
As in "I can 98% you that this won't cause issues now or in the future?"
*guarantee
Because if that's the case, then sure.
Just don't want to be chasing down hiesenbugs for a month. Or have Thomas do it ;)
 
3:13 AM
naa- by DraconicPenguin
 
3:53 AM
[ SmokeDetector | MS ] Phone number detected in title: love problem solutions specialist +91-9829594036 Mumbai by sivamsastri07 on webapps.SE
[ SmokeDetector | MS ] Bad keyword in title, blacklisted username: How to help a postgraduate student to write a book? by Anonymous Teacher on academia.SE (@Wrzlprmft)
[ SmokeDetector | MS ] URL in title, bad keyword in body, bad keyword in title, link at end of body, pattern-matching website in body, +2 more: maleenhancementshop.info/magic-rock-rx/ by Magic ROck RX on drupal.SE
[ SmokeDetector | MS ] Bad keyword with a link in answer, link at end of answer: SoundPool: Error creating AudioTrack by bom bom on stackoverflow.com
tpu- by DraconicPenguin
 
@SmokeDetector why
 
Title - Position 1-52: How to help a postgraduate student to write a book?
Username - Position 1-18: Anonymous Teacher
 
Troll?
 
4:08 AM
naa- by Rob
[ SmokeDetector | MS ] Bad keyword in body, bad keyword in title, link at end of body, pattern-matching website in body: what is skin care? by melarx on security.SE
[ SmokeDetector | MS ] Bad keyword in body, pattern-matching website in body: Youth Renu Cream by grintcolt on apple.SE
[ SmokeDetector | MS ] Username similar to website in answer: SharePoint 2013 Designer Workflow - Let user select approver by bizloadsolutions on sharepoint.SE
tpu- by tripleee
tpu- by tripleee on Youth Renu Cream [MS]
tpu- by tripleee on what is skin care? [MS]
 
@bwDraco yeah, most recently discussed here just a few hours ago, search back for "write a book"
 
@bwDraco which was when the user name got blacklisted
24 hours ago, by tripleee
!!/blacklist-username Anonymous\WTeacher
 
4:23 AM
Wow. This guy is persistent.
 
@SmokeDetector good question btw
 
tpu- by tripleee on Burn ISO Audio CD [MS]
 
> Username similar to website in answer
When was this introduced?
Anyway, it's getting late here. Good night.
 
[ SmokeDetector | MS ] URL in title, bad keyword in body, pattern-matching website in body, pattern-matching website in title: powerupmale.com/avalure-cream/ by Jipilyk on graphicdesign.SE
tpu- by DraconicPenguin
 
@bwDraco three weeks maybe? it's been fairly useful
you can see from the chart actually, it's a clickable link in the MS report
 
4:36 AM
[ SmokeDetector | MS ] Blacklisted website in body, repeated URL at end of long post: Magic Rock RX typically by yuduz obefa on apple.SE
 
not a fabulous TP rate actually
1
 
tpu- by tripleee
[ SmokeDetector | MS ] Bad keyword in body, blacklisted website in body, link at end of body: A Healthy via limitation of Defy Aging by ksjxdtefgsa on askubuntu.com (@ThomasWard)
 
@tripleee FIRE has been slow lately, is it just me?
 
tpu- by tripleee
[ SmokeDetector | MS ] Link at end of body, pattern-matching website in body: All natural is easy methods by jorjadriano on superuser.com
[ SmokeDetector | MS ] Bad keyword in body, blacklisted username, blacklisted website in body, link at end of body, repeated URL at end of long post: Helps to repair damage skin by jordanjuriya on gaming.SE
tpu- by tripleee
tpu- by tripleee on All natural is easy methods [MS]
 
4:52 AM
!!/notify 11540 ja.stackoverflow.com-
 
@SmokeDetector vandalism
flagged for mod attention, don't have the rep to edit
 
[ SmokeDetector | MS ] URL in title, bad keyword in body, bad keyword in title, pattern-matching website in body, pattern-matching website in title, +1 more: nuvieskincareserum.com/youth-renu/ by Ferranti Joen on graphicdesign.SE
tpu- by tripleee
[ SmokeDetector | MS ] Bad keyword in body, pattern-matching website in body: Nuvega Lash: Natural and best to get beautiful lashes faster by nuvegalash on superuser.com
tpu- by tripleee
 
@SmokeDetector they actually edited it while it was collecting downvotes, -7 so far
is it just me or is spam on graphicsdesign.SE a lot slower to delete than other sites?
ah finally
good morning @Glorf (-:
 
5:14 AM
Morning
 
[ SmokeDetector | MS ] Bad keyword in body, bad keyword in title, pattern-matching website in body, repeated URL at end of long post: Parisian Glow.. is the future and the future is now. by Dinabulam on apple.SE
tpu- by tripleee
[ SmokeDetector | MS ] Pattern-matching website in body: Andro Enhance Having the by nuce jon on graphicdesign.SE
tpu- by tripleee
[ SmokeDetector | MS ] Bad keyword in body, bad keyword in title, link at end of body, pattern-matching website in body, repeated URL at end of long post: This nuriva serum works for the soundness by Chle1982 on superuser.com
tpu- by tripleee
 
5:30 AM
@SmokeDetector again graphicsdesign.SE hanging on longer than the others
 
[ SmokeDetector | MS ] Bad keyword in body, bad keyword in title, link at end of body, pattern-matching website in body: Renuglow Serum Reviews by Gurnesflepis on gaming.SE
tpu- by tripleee
 
5:42 AM
@tripleee smaller userbase and less-known spam magnet
 
@angussidney I thought I remembered they had a chat room where Smokey posts notices for their site but I guess not
they seem to get spammed pretty much in tandem with the Apple site
 
they don't IIRC
Their main chat is very inactive last time I checked
 
I barged into their room just now, let's see if somebody turns up there eventually ...
 
@YvetteColomb it was originally a FP, but then it was deleted as spam by a mod and Art invalidated the feedbacks and made it TP. No need to worry about that now.
 
[ SmokeDetector | MS ] Link at end of body, pattern-matching website in body, repeated URL at end of long post: Apex Cleanse Wash excessively are more by nibge rciler on drupal.SE
tpu- by tripleee
 
5:49 AM
@angussidney do we have any per-site spam deletion statistics?
 
@tripleee if someone were to run some DB queries, yes
I have a 2ish week old copy of the DB if you would like it to have a look at. MySQL.
 
sure, though not sure what I can pull off, my SQL skills are atrocious
 
[ SmokeDetector | MS ] Bad keyword in title, link at end of body, pattern-matching website in body: Helps you enjoy blissful sex life due to a high boost in testosterone level by user354663 on meta.SE
 
Just realised that I only have it on my ubuntu drive, I'll have to reboot to get it, but I can't do that right now
 
tpu- by tripleee
 
5:57 AM
@angussidney no worries, maybe later
 

« first day (1227 days earlier)      last day (2585 days later) »