« first day (1212 days earlier)      last day (2905 days later) » 

15:00
Ah, thanks
naa- by Cerbrus
Whoops...
That should've been rejected by FIRE
BWAHHA Eat that invalidated feedback
tpu- by Cerbrus
15:01
@SmokeDetector K
@SmokeDetector k
15:15
Restart: API quota is 3111.
[ SmokeDetector | MS ] Bad keyword in answer, bad keyword with email in answer: Can you cast an immediate action spell while you are casting a one round spell. by Obehi Edna on rpg.SE
tpu- by Undo
naa- by Cerbrus on NoneNoneNoneNoneNone [MS]
[ SmokeDetector | MS ] Offensive body detected: What is your favorite novel? by jackman on english.SE
tpu- by Yvette
@SmokeDetector Oh testing :P
But you're right. That's definitely not an answer.
@Glorfindel Whaha
Waiting to see how many invalidated feedbacks come out of this
@Glorfindel @Cerbrus It was vandalism.
15:22
Yea, I know.
I was testing disabling the "naa" button instead of just now showing it
@ArtOfCode I've been trying to figure out a way to design a useful cache for the SEAPI, but it gets complicated quickly. Different filters, different scan times, different scan criteria.
@Magisch Hey
Whick makes the keyboard shortcuts 1-5 more intuitive.
@Andy I guess you just sort the query string parameters, and cache the query URL against the query results
Or you do clever things and go for merge caching.
o/
@Undo @ArtOfCode I'mma refactor the logon process slightly. We may all have to 'pull' then.
@ArtOfCode Right, but the point of the cache is to reduce hits on the API when the second bot comes along. So, BOT A scans for 10 minutes of posts right now using 1 filter. In four minutes BOT B comes through and wants 10 minutes and a different filter. Now - we have a 4 minute gap in the cache and potentially 6 minutes of posts that could be deleted. The two different filters aren't easy either. One may want user information, the other may want scores and mark down text.
15:26
40 lines are gonna condense to a smaller number of lines :p
@ThomasWard Do it in 1 :)
I've just updated FIRE again. There's now a bunch of keyboard shortcuts / aliases that work. I aslo added a "Rude/Abusive" button, but it doesn't flag yet, it only sends MS feedback.
2
Looks like the CSS needs fixing though
@Andy Aye. So the other way to do it is to cache individual posts by their IDs. The first query for, say, post creation date, caches the post creation date. The second query from Bot B wants score and markdown, so you query the SE API again for those. Then when Bot C comes along and wants creation date and score, you serve both entirely from your cache.
@ArtOfCode: could you clear the caching for https://charcoal-se.org/userscripts/fire/fire.css?v=0.7.8 for me, please?
when I can find the password, sure :)
15:31
Hm, looks like it fixed itself already :-)
[ SmokeDetector | MS ] Bad keyword in body, pattern-matching website in body: Would I Recommend This Product? by lotfimilan on graphicdesign.SE
tpu- by Cerbrus
What's with better beards nowadays?
I think they are saying our beards aren't good enough
They're beardist
@JF: Your FR for FIRE is done, by the way ^
15:35
i have a sneaking suspicion i broke CI again
CI on 158e861 succeeded.
oop, nope. yay!
!!/pull
death to EC2 lol
runs
[ SmokeDetector ] SmokeDetector started at rev 158e861 (Thomas Ward: Slight refactor of chat logon handling.) (running on ArtOfCode/EC2)
Restart: API quota is 2958.
you wish
you'll have to try harder than that
OK
pushes breaking code that kills the EC2 instance, then fixes it after Aurora comes back up
@ThomasWard I've been SSH'd into EC2 for the past hour, it would take me less than 10 seconds to rollback a Git revision and reboot Smokey
:P
nah i'm restarting my backups anyways
When I say "harder than that" I mean you actually have to put some effort into breaking it
oh that part's easy. accidentally disrupts everything with EMPs
15:38
heh my "UPDATE DAMN YOU" script seems to work. albeit slowly :p
@ThomasWard We're talking about EC2, pretty sure their datacenters are EM shielded.
instead of 3 logon loops for chat, we have one.
@ArtOfCode Then go bigger...nukes.
how about orbital strikes with tungsten carbide rods from space :p
Waiting on space on the next SpaceX launch to get ammunition into orbit
15:41
@Andy If you're dropping a nuclear warhead on a datacenter because you want to disrupt a spam-detection bot... you have bigger problems.
'sides, I can just move availability zones :P
@ArtOfCode More nukes
Obviously
y'know there's an easier way
just hit the power plants.
no more electricity to power the EC2s.
Or anything.
you'd have to nuke a significant proportion of the planet to completely kill any chance of me rebooting, and I think some people might have something to say to you about that
@ThomasWard nope, datacenters have generators
We're going to kill a couple birds with this: 1.) Smokey is broken, main mission objective is complete. 2.) Probably knocked out a lot of spam bots too. Secondary mission objective: In progress
15:44
Though, I suppose it's easier to just get a job at amazon and typo a command to take down EC2 than it is to get a hold of nuclear material
On a more serious note, the two refactoring issues for Smokey...any one have comments on those?
which ones?
we'd still be passing strings to the objects. I don't see how replacing strings with dedicated objects simplifies things.
Sounds like overcomplication IMO
aye, but it's easier to pass a Post around than it is to pass post_title, post_body, post_tags, post_owner_username, post_link, post_owner_link, post_score, post_markdown, post_creation_date
15:50
Same reason we have models that contain all that data in Rails.
mmm, true.
@ArtOfCode we'd need to error-check code for None values, etc.
but you're not wrong.
What do we need in a Post object?
i can start working on that class of objects :P
wow i'm blind nevermind
(I need more coffee)
It also means the *args that I added for the similar username check isn't needed any more. Which means we don't have to guess which arguments a check will actually use. Instead, we just pass the object and if a check uses the title and body, so be it.
@ThomasWard don't rely on my list up there ^, I made it up on the spot
@ThomasWard We need everything we get on a post from the API.
15:52
@Andy which also means we can get rid of those fields in the rules object
@ArtOfCode \o/
With a post model, we can also accommodate for checks that look at both an answer and its question. Hard to do that with strings without have 2x the arguments
anyone willing to give me an example of what we get from the API for a post heh.
(I'm lazy xD)
As a start, could probably just look at the list in github.com/Charcoal-SE/SmokeDetector/blob/master/…
title, body, user_name, user_url, post_site, post_id, is_answer, body_is_summary, owner_rep, post_score
Same list in github.com/Charcoal-SE/SmokeDetector/blob/…. Should be pretty easy to switch out, really
do we want to have a new module for the post class? such as from classes import Post or such?
(where classes.py is where we would define the classes)
16:00
That'd probably make sense
could do objects.py too, but eh
classes sounds better to me
OK
i'll start poking this locally. Because I can.
Awesome, thank you! :)
@Undo I presume we want to be able to just init from the JSON we get or something?
or, init with the same format we have there
16:01
@ThomasWard Could do both, or neither - your call. Whatever makes sense.
For now I'm just going to do what we do there currently with the parser. More or less that I'm not 100% familiar with parsing.
So let's do it piecemeal :)
Yep, that works
@ArtOfCode Ooh!
@ThomasWard gah! No! Make a classes directory, have an empty __init__.py and make a Posts.py in there
throws sticks at @Andy
@Andy how about we let me actually start by structing the class in a sandbox first THEN i put it in the codebase like that :P
16:11
Impatience mostly
:)
Compromise: Make a posts directory, then refactor the strings into a Class class we can pass around
I actually like @Andy's idea
except that I"m creating in a sandbox first so. :P
;)
@ArtOfCode Off topic but QPixel's Rakefile doesn't work if you don't have a letsencrypt_plugin.yml
(couldn't find another room where you were pingable)
16:26
...Rakefile?
wasn't aware it even had such a thing
The Rake commands for building the database I mean
rake db:create && rake db:schema:load && rake db:migrate && rake db:seed
Rakefiles are firmly within the realm of "magic you don't touch unless you copy-paste some stuff from SO" for me
@ArtOfCode Yes.
Errno::ENOENT: No such file or directory @ rb_sysopen - /home/quartata/qpixel/config/letsencrypt_plugin.yml
16:27
so... create a letsencrypt_plugin.yml?
Well it shouldn't need it. I'm not using LetsEncrypt.
so... create an empty file?
Now it says something else
NoMethodError: undefined method 'fetch' for false:FalseClass /var/lib/gems/2.3.0/gems/letsencrypt_plugin-0.0.8/config/initializers/letsencryp‌​t_plugin.rb:2:in '<top (required)>'
what's on that line?
Obviously it doesn't like a blank file :P
YAML.load_file(Rails.root.join('config', 'letsencrypt_plugin.yml'))
i.e loading the config
16:31
uhm...
@Undo we have two separate "handle_spam" cases
one from JSON and one where we parse API responses without JSON
do we want Post to handle both?
or do we want two Post items
Post can handle both
i'll have to create two inits then. from_response, and from_json
unless I init the args to "none" and permit a json= argument
but that gets... ... nasty
do you have line numbers with these two cases?
[ SmokeDetector | MS ] Link at end of answer: Uso de jQuery en prestashop by Jose Clemente Pulido Rodriguez on es.stackoverflow.com
@Andy well, handle_spam is the core issue
@Andy github.com/Charcoal-SE/SmokeDetector/blob/… is the check_spam_json item
16:43
Ah. I understand what you are saying now. I agree with @Undo. One Post object. How does it get nasty if you have a json argument?
@Andy I have to have an "if" statement that then parses things.
What exactly is the point of having a deploy branch on remote?
I mean locally I understand (although you could just do detached HEAD)
But why remote
@Andy and if json= isn't defined, then parse as normally we'd construct with arguments
@quartata 'remote' and 'local' are connected
Yup. I'm in agreement with that.
the 'local' deploy branch and the 'remote' deploy branch are synced
a !!/pull command pulls the remote deploy branch to Local
16:45
I thought pull pulled from master.
they're identical branches, but we launch Smokey instances from "deploy"
or whatever branch you specified
if json: call parse_json_post else: call parse_api_post
@quartata you should reread the code - we moved the functionality to the 'deploy' branch by default a while ago
Oh. All right.
16:46
@Undo @ArtOfCode want to explain the process of branches to @quartata
I know how branches work dammit
@Andy yep, and redefine the parsing specifically in the class as internal-to-class functions.
I just didn't get why master and deploy were separate on the remote end
@quartata All we do is automatically update deploy to point to master, and we run Smokey off deploy
It's there for if we want to add code review checks, etc. in the future
Ah. That makes more sense.
Although you do have the CI now -- Smokey won't pull from anything without the CI
16:47
and we can always force it by hand without using the gitmanager functions. If we have to that is.
@JF I seem to have gotten logged out of Coal and now I can't log in -- the button doesn't do anything
Still not understanding the problem @ThomasWard. Who says the parsing has to be internal to the Post object?
@quartata We've had that for a long time, but CI doesn't necessarily catch badness.
We're thinking of the "someone trying to autoflag all the posts" type of badness.
Oh fun.
We could require a review on everything merged into deploy, if we wanted to. This just gives us the flexibility to do that.
16:52
If that commit had --autopull what would happen?
I guess on master it wouldn't do anything just deploy
@quartata If it's not on deploy, it's not run
Realistically, we're less concerned about that now. It was an early consideration.
@Andy If we're initializing the Post object to pass it around, we can set up the parsing there.
@Undo for JSON parsing, the "url" field from the JSON data, what does that correspond to, user URL or the post URL?
Post URL
fp- by DavidPostill
17:43
fp- by DavidPostill
[ SmokeDetector | MS ] Pattern-matching product name in body: Game of life issue with rules and nextGeneration by Jilani on codereview.SE
fp- by DavidPostill
@SmokeDetector why?
@MartinSleziak Post - Pattern-matching product name x x x
^^^ It's off-topic on CodeReview though ... broken code
18:03
@Undo first dissenter:
The fact is, gibberish is neither spam nor rude/offensive, and importantly IMHO not "harmful". Gibberish is just noise/nuisance that should be deleted for sure, but not as a matter of urgency requiring moderator intervention. VTC or downvote/VLQ can handle it quickly enough. — Bohemian ♦ 9 mins ago
Great
Good to have differing opinions. No debate means no policy.
3
@Undo...you are going to go far in the real world.
this is what being an SO mod does to you, apparently
Heh. We'll see about that one.
but thanks ;)
18:13
"YAGNI" - "You aren't going to need it", correct? — Andy 26 secs ago
Wow, I was assuming some variation of "assume good intentions"
But that makes more sense
fp- by NobodyNada
@SmokeDetector why
@NobodyNada Post - Contains 5 unique characters
Oh, he vandalized it and then got blacklisted
@NobodyNada User removed from blacklist (31292 on arduino.stackexchange.com).
18:26
@ArtOfCode That's exactly why you should use a red flag IMO
That is, it'll get it out of everyone's face faster than anything else
A normal flag might take a long time to get handled and furthermore if it's NAA/VLQ it could be handle by some random person
You are welcome to join in in the comment thread.
wherein I am happily posting stats because numbers are hard to argue with
@Art do the stats include vandalism?
@NobodyNada good question
18:42
@ArtOfCode Where are you getting those stats?
If it's metasmoke data, probably good to qualify with "caught by Smokey"
@Undo bah, just missed the edit window. Mind editing one or both of those stats comments to say "caught (by Smokey)..."?
aye
Don't have an issue using privs to do that, because otherwise you'd just delete them and repost them and we'd have more pings going out.
you read my mind :)
also, if anyone wants an AR query to burn their eyes:
StackExchangeUser.where(:id => Post.joins(:posts_reasons).where(:posts_reasons => { :reason_id => Reason.all.map { |r| [r.id, r.reason_name] }.map { |x| x[1].downcase.include?("repeat") ? x[0] : nil }.compact }).map(&:id)).where.not(:reputation => nil).group(:reputation).count.select { |k, v| k < 100 }.map { |k, v| v }.sum
I thought ActiveRecord was supposed to be beautiful
It is. You try doing that in raw SQL.
18:49
Fair...
Although I suspect this wouldn't be so bad if it wasn't a one liner
aye, but try telling a console to do anything but one-liners
19:18
@ArtOfCode I'm gonna get this framed
@Undo if you're framing things, I can probably come up with something better than that :P
API quota rolled over with 1354 requests remaining. Current quota: 9999.
stackoverflow: 274
askubuntu: 77
superuser: 61
drupal: 58
unix: 57
electronics: 48
math: 37
salesforce: 30
scifi: 29
gis: 28
english: 26
travel: 23
workplace: 22
money: 21
dba: 21
gaming: 20
worldbuilding: 20
es.stackoverflow: 19
ru.stackoverflow: 18
stats: 18
security: 18
rpg: 18
codegolf: 17
physics: 17
softwareengineering: 17
mathoverflow.net: 17
tex: 16
ell: 16
sharepoint: 15
philosophy: 15
diy: 13
chemistry: 13
wordpress: 13
pt.stackoverflow: 13
graphicdesign: 12
movies: 12
apple: 12
mathematica: 12
What happened last night? We hardly flagged anything
Indian holiday?
I wondered that this morning
19:21
found it
Well, I think we have just created the world's most complex holiday detector.
Add it to the DST library ;)
19:34
@Undo here, have another:
Post.all.joins('inner join posts as p2 on posts.id = (p2.id - 1)').where('posts.id < ?', Post.all.count).joins(:reasons).group('reasons.reason_name').average('timestampdiff(second, posts.created_at, p2.created_at)').sort_by { |k, v| v }.to_h
not quite as good, but it's something
tpu- by dorukayhan
And, for your amusement, the data from that query: average time between posts, separated out per reason.
@ArtOfCode This isn't that bad.
any other wacky ideas for data to graph?
19:54
really hating on those non-latin users
20:22
Oooh, SU election underway
I hear @DavidPostill was planning to nominate
[ SmokeDetector | MS ] Few unique characters in answer: Running DNS locally for home network by dns on superuser.com
tpu- by Glorfindel
@ArtOfCode I raised my rep on SU to above 150 just to vote for him :P
20:37
[ SmokeDetector | MS ] Blacklisted website in answer, mostly non-Latin answer, non-English link in answer, non-Latin link in answer: When does using a car's start-stop system become more economical? by شركه تنظيف on sustainability.SE
tpu- by Glorfindel
sd - autoflagged?
!!/alive?
Uhhhh
@Undo @ArtOfCode @ThomasWard Something happened and it's not failing over
failover still isn't automatic
@ArtOfCode Why not?
Wait what?
Meant to ask about that earlier. It should be
Don't touch anything. I want to look into this
20:40
touches
teward/Aurora received failover signal.
There it goes
Yeah, so it just waited until @ArtOfCode's instance went red (3 minutes)
[ SmokeDetector ] SmokeDetector started at rev 158e861 (Thomas Ward: Slight refactor of chat logon handling.) (running on ArtOfCode/EC2)
Restart: API quota is 9999.
Restart: API quota is 9540.
!!/standby teward/Aurora
teward/Aurora is switching to standby
[ SmokeDetector ] SmokeDetector started in standby mode at rev 158e861 (Thomas Ward: Slight refactor of chat logon handling.) (running on teward/Aurora)
20:42
So what exactly happened?
I assume !!/errorlogs doesn't work if it's on standby
Art's instance went down, then metasmoke waited the three minutes to trigger a failover
[ SmokeDetector | MS ] Bad keyword in answer, bad keyword with email in answer, email in answer: Will a tourist have any trouble getting money from an ATM India because of demonetization? by monica moore on travel.SE
No I meant why was it down in the first place
tpu- by Glorfindel
!!/errorlogs 100
20:45
2017-03-10 07:03:42.598958 UTC
  File "/home/ubuntu/ws/SmokeDetector/excepthook.py", line 48, in run_with_except_hook
    run_old(*args, **kw)

  File "/usr/lib/python2.7/threading.py", line 754, in run
    self.__target(*self.__args, **self.__kwargs)

  File "/home/ubuntu/ws/SmokeDetector/ChatExchange/chatexchange/browser.py", line 714, in _runner
    self.on_activity(json.loads(a))

  File "/home/ubuntu/ws/SmokeDetector/ChatExchange/chatexchange/rooms.py", line 85, in on_activity
    event_callback(event, self._client)
sd - - autoflagged?
1. [:36016857] <skipped>
2. [:36016854] <skipped>
3. [:36016841] That post was automatically flagged, using flags from: Undo, Magisch, quartata.
Oh so it wasn't me then
might've been my ssh session disconnecting, somehow
screen is a good idea
20:50
tmux
Never figured out how to use that
same thing, nicer interface
basically infinite terminals without having to open infinite ssh sessions
!!/location
@quartata ArtOfCode/EC2
But wasn't it on Aurora before?
Huh guess not
21:00
no, I've had it for the past few days
@Andy IIRC when you made the PR for the "Username similar to website in answer" reason you had a tp/fp breakdown - how did you get that
Since it's not a regex
The feedback splits per reason are available on metasmoke
But before the reason was added I mean
I bet he downloaded the MS data
Search will let you get them 10k at a time, in a few requests you have the whole database
Nope, I didn't do anything tp/fp related
21:15
Oh I must be misremembering
@Undo I have several MS dumps although they're about a month old
I guess I'll make a new one for this
@quartata Does SQL work for you?
Pretty sure @DavidPostill just won the SU election
[ SmokeDetector | MS ] Bad keyword in link text in answer, pattern-matching website in answer, blacklisted user: How much time should someone take to respond to a PhD admission offer? by Johny Thomas on academia.SE (@Wrzlprmft)
tpu- by Undo
@Undo how did you manage to get two feedbacks on that post?
Is posts.id MS ID or SE ID?
Played with the tpu- button on FDSC.
@quartata MS
You can extract the SE ID from the URL
21:26
@Glorfindel As far as I can tell MS doesn't care about that. I accidentally submit multiple feedbacks via FIRE all the time
@Undo ok cool
@Undo I haven't even answered the questions yet :)
@quartata It should reject them, but there's been something broken with that for a while
@quartata shouldn't work; MS should only allow one feedback per person per post per type of feedback.
@ArtOfCode I just did. Spent the last 90 minutes thinking about writing my nomination. Now I'm drained. Will work on the questions tomorrow.
OMG OMG OMG
21:28
@ArtOfCode Thanks.
I need to get some rep so I can vote for David
Oh crap, that's 25 edits
@DavidPostill anytime :)
@Glorfindel No onebox for election stuff
IIRC the comments were broken too
So they weren't linked
[ SmokeDetector | MS ] Bad keyword with email in body: Using HLM - using intercept to predict slope by Peter Ji on stats.SE
21:39
@SmokeDetector Hmm, if it's not a troll like Thierno M. Sow I don't see a problem
@SmokeDetector f
J F
J F
21:50
@quartata Can you quit and restart coal?
Huh, dunno why editing on SU feels easier than on SO.
@JF No effect
J F
J F
@quartata Anything in the console?
Yes but I can't copy paste it so one second
Uncaught TypeError: Error processing argument at index 0, conversion failure from undefined
  at HTMLAnchorElement.$.on.event (<...>/coal/ui/index.js:19:17)
Any time I click on a link that would open in an external browser
J F
J F
@quartata Are you up to date (git pull)?
22:05
Just pulled (I was one commit behind), no difference.
J F
J F
@quartata I forgot to push the fix for that. Try pulling again.
perfect
thanks
J F
J F
Turns out arrow functions aren’t just fancier versions of regular functions :)
They're not?
J F
J F
@quartata The this value is the same inside the function and outside it, and I used the this jQuery provides in event handlers.
22:17
[ SmokeDetector | MS ] Link at end of answer: Index Caching and Cookies by Sonu Kumar on webmasters.SE
J F
J F
@Cerbrus Could you re-add the href tooltip to links in the post please?
naa- by quartata
@SmokeDetector @Cerbrus Does FIRE not cast NAA flags yet? I didn't get a flag issued for this post

« first day (1212 days earlier)      last day (2905 days later) »