« first day (1123 days earlier)      last day (2696 days later) » 
00:00 - 15:0015:00 - 00:00

3:04 PM
@Glorfindel Actually, MS only caught the second instance. The first instance may have been caught and unaddressed, maybe?
 
Yeah, could be.
 
hmmmm, interesting
 
hm?
 
it never pinged for the first one
@ArtOfCode just musing about how something was caught the second time it cropped up by Smokey, but not the first.
which is why the blacklist directive for that website was just called by me :P
shrugs We may never know why it went uncaught but meh
sd fp-
 
3:12 PM
[ SmokeDetector | MS ] Manually reported answer: How do I measure the output voltage of an RGB LED controller? by Andrew on electronics.stackexchange.com
[ SmokeDetector | MS ] Pattern-matching website in answer: Calculate Panchanga elements Ending time by Coupons and Deals on stackoverflow.com (@dorukayhan)
 
@SmokeDetector k
 
@SmokeDetector tpu-
 
[ SmokeDetector | MS ] Few unique characters in body: who am i in linux or windows by Mono pendenciero on stackoverflow.com (@dorukayhan)
tpu- by Glorfindel
[ SmokeDetector | MS ] Blacklisted user: How do I get the date from a datepicker using PHP? by Mono pendenciero on stackoverflow.com (@dorukayhan)
 
3:28 PM
@SmokeDetector vandalism
 
3:40 PM
[ SmokeDetector | MS ] Few unique characters in answer: Formatting output of comparison between elements of a list -scala by meme on stackoverflow.com (@dorukayhan)
tpu- by Glorfindel
 
3:57 PM
[ SmokeDetector | MS ] Bad keyword with email in answer: Toggle text/plain and text/html in email client such as yahoo, gmail, or hotmail by allen on webapps.stackexchange.com
tpu- by Glorfindel
[ SmokeDetector | MS ] Bad keyword in answer, bad keyword with email in answer: What is the size of udp packets if i send 0 payload data in c#? by Merrith Donalson on stackoverflow.com (@dorukayhan)
tpu- by Glorfindel
 
4:31 PM
[ SmokeDetector | MS ] Manually reported answer: How can I change MAC address in router ASUS DSL-N11? by grknben on superuser.com
tpu- by Glorfindel
 
4:50 PM
[ SmokeDetector | MS ] Link at end of answer: Duplicate home page URL in Google Analytics by Jasmin Khan on webmasters.stackexchange.com
tpu- by Glorfindel
 
Okay. I've just done some data flow modelling of how this autoflagging system needs to work, and there are things we need to expand on before we can even start building the platform for it. I'm gonna create a google doc detailing those, with a RFC in it for everyone to pile in on.
 
[ SmokeDetector | MS ] Offensive answer detected: Contact names are gone, but still shown in Messages by Jeff on apple.stackexchange.com
 
[ SmokeDetector | MS ] Manually reported answer: Duplicate home page URL in Google Analytics by Jasmin Khan on webmasters.stackexchange.com
tpu- by Glorfindel
 
!!/blacklist-website umrahvisaonline\.co\.uk
 
4:55 PM
@DavidPostill You don't have code privileges, but I've created a pull request for you.
 
@DavidPostill is there some special consideration for that blacklist? We've only seen it in one tp so far.
 
5:14 PM
@ArtOfCode Two posts above by the same user. He forgot to add the payload link to one of them :)
 
Hm
shrug okay
 
CI on 24359f9 succeeded.
 
@ArtOfCode can you pin it when it's posted?
 
Autoflagging RFC #03: System Design. Your comments, please, on the few things we need to go over before we can get moving.
@Andy ^ pinned
 
Wow. That was quick
 
5:22 PM
I'd just finished writing when you pinged.
 
Do you want us to answer the questions as comments, @ArtOfCode?
 
Answers, or any additional considerations, or just generally any comments
 
Looks good
 
5:43 PM
Despite my comments in the document, it looks good. Most of my comments are clarifications or areas that I think need to be expanded upon
 
@ArtOfCode Looks good, I can't think of anything to add at the moment.
 
[ SmokeDetector | MS ] Bad keyword in answer, bad keyword with email in answer, email in answer: Getting a UK Provisional (learners) driving license, as a newly arrived EU Citizen? by tyler owen on expatriates.stackexchange.com
tpu- by Undo
 
6:03 PM
I got interesting results of trying to run a neural network using the existing smoke detector reasons to flag posts (so the neural network never looked at the existing feedback). Running on the last 10 000 posts (8 110 had valid feedback of those), it found a pattern to flag 105 posts of those, with a helpful rating of 100% (in simulation based on the feedback given to MS)
 
Reasons only?
 
@Undo reasons as bitmap & a bit if it was a answer or question
The network has an input layer with 73 neurons (all active reasons in the last 8 110 valid posts), a hidden layer with 7 neurons, and an output layer with 1 neuron
 
@Ferrybig On GitHub?
 
6:20 PM
Not yet, the code is more/less hacked together at the moment
 
6:40 PM
@Undo here is a list of posts its concurrently detecting (and the amount of posts for each reason): gist.github.com/ferrybig/50e3bbbf39a7205f59f544408ebf397f I personally can't the exact thing it triggers on
 
@Ferrybig question: we know that probably around 80% of those 10k posts were actually spam. This thing found what, 105 posts to flag? Is there some way you can increase the number of posts it finds to flag and still keep it within acceptable bounds? There's a lot more there that it could flag
 
@ArtOfCode I will try now...
 
7:03 PM
[ SmokeDetector | MS ] Offensive body detected: what's lewis structure of [Sb2F7]2- by Sajad Malekpour on chemistry.stackexchange.com
 
swearword ninja-edited out. F?
 
Another question: what controls do users need to have in this system? Obviously, we want (a) use or don't-use my account for flagging, (b) a limit on numbers of flags per day. Anything else?
 
Flag/don't flag per site (unless the system is going to handle it when a user doesn't exist on a site)
 
Tell SD not to auto-flag a certain post
though I guess that would be implied by a regular f
 
@Andy system can handle whether a user exists on a site, I think
@JanDvorak yeah, that
 
7:14 PM
@Andy yeah, just check the network account's associated site IDs for that
Let a user exclude sites if they really want
Okay, so I'll throw this out there: I really don't like the weight thing at a first-implementation.
Now you're dealing with tracking weights across reasons and sites, storing them for analytics, etc. Ugh.
 
Can we at least have 0/1 weight?
 
@JanDvorak As in?
 
As in experimental rules that don't count towards autoflags
 
Oh, of course
I'm envisioning something along the lines of "flag things in this reason, on these sites, that match at least x reasons, where user rep is <x, etc."
Default-off for all reasons
 
I'm working out a basic system design. It involves adding a weight to every reason, and there's no reason why we can't let that be 0.
@Undo I think Andy's idea of setting reason weight based on reason accuracy isn't a bad idea.
then we don't actually have to track anything, just let the system do it
 
7:29 PM
@ArtOfCode Not a bad idea, no. But it does require a whole new level of complexity.
 
It's actually not too difficult technically. Add a weight field to the Reason model, and a scheduled task once per day to update the weights automatically.
 
@ArtOfCode quick status update, its now flagging around 5314 posts (out of the 8800 ish it know to have valid feedback) and is getting a helpful percentage of around 78, it will sort out the best ones at the end, and continue with them
 
@ArtOfCode Technically, yes, but I like being able to see exactly what will and won't be flagged. Anything dynamic makes it harder to see that.
 
@Undo Okay. Let me drop the current state of my design in an editor somewhere, and I'll ping you a link for comments
 
Queries to find what qualifies under some set of conditions just became a lot more expensive, if I'm imagining right.
 
7:38 PM
@Undo Total weight of all the reasons a post was caught under. post.reasons.pluck(:weight).reduce(:+)
 
@ArtOfCode Yes, but now do the reverse.
List of posts matching a given weight
might actually just be a SUM in the SQL somewhere, not sure
yeah, that might work
 
Post.joins(:reasons).where('SUM(reasons.weight) = ?', 92)
yup
@Undo collabedit.com/4msk8 tell me what you think of that
 
oh, well that's easy enough
 
I think that lets us keep track of everything we need to
 
7:53 PM
@ArtOfCode Could probably flatten it a little bit, but structurally it seems okay
I'd vote s/autoflag/flag on everything for simplicity
 
I did wonder about that, but I couldn't find anything to flatten
@Undo I didn't do that because we already have a Flag model
 
@ArtOfCode oh, is that the 'needs admin attention' thing?
 
aye
 
I'd almost suggest we just remove it (or rename the model)
 
we get a gentle trickle of reports, so probably rename it
AdminReport
 
7:54 PM
yeah, that'll work
Any reason FlagSite can't just be in the Site model?
oh, you're using it to track user prefs
FlagUser can definitely be smashed into just User.
 
that's the FlagUser model... FlagSite could be merged with Site, I think
@Undo I don't think so, actually, we need multiple FlagUsers per person
so that we get FlagSite.users and FlagUser.sites
 
Just a sec, lemme try something else.
That association seems a little weird
 
merge that into User and everyone would have twenty different actual user accounts on metasmoke
@Undo how so?
 
@ArtOfCode Hold on, why?
API tokens are network-wide
 
Hm
Does User has_many FlagSites work?
 
7:58 PM
just a sec, lemme think on this
 
No, because we need the FlagSite.users call to determine which users are available for flagging on a certain site
 
It makes sense if you are able to adjust the max flags per site, especially if you are a moderator and don't want to flag on the diamond sites
 
i.e. we need a site has_many users assoc
@Ferrybig oh, that's something I hadn't thought of
though we can get around that with this structure by not creating the link record if the user is a moderator, so that the user isn't included in FlagSite.users for a diamond site
 
@ArtOfCode we can just check account status before flagging and simply refuse to flag if we have a diamond account.
Don't trust the user to provide that info, and don't trust it to not be stale.
 
yep, that's better, but even better if we can store that info too
 
8:00 PM
Why would we?
well, I suppose it's okay to store it
 
I guess it's just a conditional, nothing heavy if we already have the data from an API call...
 
um... why not have a simple HABTM relationship between User and Site?
 
@Undo lemme think about that one
Gives us Site.users and User.sites... without duplicating records? I think? Yeah, that works
Does mean that the Override record is now a regular Site and will show up in things like search, though
 
Override?
Why do we need that
 
Big Red Button
 
8:03 PM
oh, that can be a FlagSettings model on its own.
I've done that before.
 
what are you thinking for that?
 
oh, forgot we don't store tokens yet
@ArtOfCode Anything global we need to store.
 
[ SmokeDetector | MS ] Offensive body detected: What If The Sky Was Green or yellow? What would it be like? by Edward Smith on physics.stackexchange.com
 
Actually.... @Art
2.3.3 :002 > "criteria".pluralize
 => "criteria"
 
@Undo are you thinking a name and a value field and lots of records, or one record with lots of fields?
@Undo sweet, what does it think the singular is?
 
8:06 PM
@ArtOfCode I've done both, name and value seems a little cleaner.
2.3.3 :003 > "criteria".singularize
 => "criterium"
 
@Undo that's what I was thinking. Also what I did for qpixel, so that works.
@Undo that's... wrong.
 
... a one-day bicycle race on a closed course?
 
tpu- by teward
 
@Undo eh?
 
8:07 PM
oh
yeah, that's definitely wrong
singular is criterion
 
"criterion".pluralize
 => "criterions"
So maybe we need a more Rails-friendly name :P
 
let's make that FlagCondition instead
 
that works
that is the most inconvenient way to chat ever
@ArtOfCode Maybe.
I'm considering a system where users could have control of what they want to flag, but we put some sanity checks on it up front, like:
"To create a FlagCondition, it needs to match at least x posts with at least y accuracy"
 
like min/max validations server-side
 
Where x and y would be global FlagSettings
aye
 
8:12 PM
@Undo this would be clever, how do we do it?
 
@ArtOfCode Well, we have that giant repository of stuff already.
 
Aye, but I'm trying to work out the calls we need to find what posts it would catch from that giant repository, and if there's enough and if it's accurate enough.
 
When you say "I wanna automatically flag things on this site matching these conditions", we check the database for what that would have caught in the last <timeframe>. If it matches some sanity checks we have, you can create it. If it doesn't, then we just don't allow creating of it
@ArtOfCode We can figure that one out easy enough, I'm not worried about it
Technical issue
 
Honestly, I think I'd do that by working out what sane values are, and just validating to restrict to those. As in, you can choose the max rep you want to flag, but it can never be over 100. You can choose your minimum weight, as long as it's over 5. Etc.
 
yeah, that might be okay.
Same basic model
Lemme see how hard it'd be to do this
 
8:16 PM
I'm just thinking that the actual checking what it would catch is significant custom logic. It's possible, but it's also more likely to go wrong.
 
I suggest we log everything we flag in the name as a sanity check, it allows us to have a paper trail if metasmoke suddenly flags all posts
 
@Ferrybig Of course
Not in that model yet. Probably should be
 
Morning
 
@angussidney o/
 
Morning @angus
we're having fun
 
8:21 PM
@Undo That site keeps kicking my out with an error occurred btw
 
norepro, but should probably be on Docs
 
@Undo ideas on how to let users configure max flags per site?
 
@ArtOfCode Heh, maybe we do need a FlagSite thing
Or a FlagUserSiteConfig model
It configures flags, per-user, per-site
 
hm
 
8:30 PM
Can't be in FlagCondition because you could have two of those on one site and that'd get hairy fast.
 
Take a look down at the Workflow section.
I've got a list of users who could flag based on the conditions set. Now what we need is to select users out of that list based on who has flags left that they'll allow us to use.
 
Maybe condition.can_flag(post)
 
Instead of .validate!?
 
Yeah
flags_used is just user.flag_logs.successful.where('created_at > ?', last_utc_midnight)
 
@Undo that's another query, though, and this is already getting expensive
 
8:41 PM
@ArtOfCode Don't worry about it, I can optimize it quite a bit if we need to
 
we can use that for reporting, but storing it on the UserSiteSetting model will make things quicker
 
Just do the simplest thing that might work
@ArtOfCode let's not start caching stuff until we need to. Implementation detail.
 
store, not cache
 
Also, in reality we're going to async this to the background so it doesn't really matter how expensive it is. Posts are rare
 
I know what I meant :)
 
8:43 PM
Let's just focus on basic structure for now, performance details can come later.
 
Actually, storing it on the USS model makes the queries simpler in the end
UserSiteSettings.where(:user_id => available_user_ids, :site_id => @post.site.id).where('flags_used < max_flags')
If you get flags_used from FlagLog, then you have to replace flags_used in that ^ query with... something else
where something else is more complicated
 
!!/test .
 
> Would not be caught for title, body, and username.
 
What?
 
yeah, we'll figure it out.
 
8:46 PM
I think that should do it, @Undo - Workflow, down the bottom. Couple methods we need to write, but those are easy.
 
!!/test-a $
 
> Would not be caught as an answer.
 
Wow. I've been out of the loop. Autoflagging...
 
Looped, @Undo
Initial proposed system design, if you understand Rails/MVC.
4
 
Restart: API quota is 3014.
 
what about it
 
spam? I only post here for that :D
 
Um. Good question.
I'm gonna leave that to the SO mods.
who will probably say it is, but I'm not sure
 
ok thanks, going with NAA for now...
 
@ArtOfCode yeah, I can't pin it down to self-promotion
 
9:17 PM
Nor me
 
[ SmokeDetector | MS ] Few unique characters in body: creating rounds in a card game by Darklord098 on stackoverflow.com (@dorukayhan)
 
@SmokeDetector vandalism-
but now reverted
@SmokeDetector vandalism
 
[ SmokeDetector | MS ] Few unique characters in body, no whitespace in body, repeating characters in body: Rounds in a card game by Darklord098 on stackoverflow.com (@dorukayhan)
 
@SmokeDetector vandalism
@SmokeDetector vandalism
 
@SmokeDetector vandalism
@SmokeDetector vandalism
@Undo you're a mod on SO right? you might want to modmessage that user
 
9:24 PM
yeah, already did
 
maybe temp-suspend even
wow lag.
@Undo cool. :)
ah I see you did :)
 
9:35 PM
[ SmokeDetector | MS ] Pattern-matching website in body: .NET Framework can not install by user121979 on stackoverflow.com (@dorukayhan)
tpu- by dorukayhan
 
sd why
 
@ThomasWard [:34119580] That's not a report.
 
boo
@SmokeDetector why
 
@ThomasWard Body - Position 169-190: bestdoublestroller.co, Position 292-313: bestdoublestroller.co
 
@SmokeDetector that's kinda clever, posting spam disguised as a question
 
9:36 PM
indeed
@dorukayhan that's what someone was doing the past couple days, on Ask Ubuntu, got squished with bans finally, but it prompted this blacklisting. Tried to disguise the spam link as a link to "software" that solves the original question...
shrugs Spammers getting more sneaky.
 
9:48 PM
@Undo @ArtOfCode wrt the autoflagging system, should we be concerned about 'level of information accessible' by the autoflag system admins? If we are, then should we be looking at SE Mod Agreement as a limiting factor for admins (so that there's the implied agreement for admins to properly handle PII when it comes across their plate)
 
I don't think so... I don't think we're exposing PII anywhere
 
@ThomasWard What kind of information are you thinking of?
API tokens are happily tucked away in the database, I'm not concerned about those
 
@Undo do we have a clear definition of information being displayed to admins and what might be PII or privileged beyond the API tokens, etc.
I didn't see a clear definition in the RFC
 
@ThomasWard There is no PII that I can think of
 
9:50 PM
The only potentially sensitive data is who-flagged-what, since that isn't exposed on SE
but even that I'm okay with exposing, because it's the system flagging not the user
In fact, I'd argue we should expose that, if not publicly then at least to admins
 
@ArtOfCode we already have that with FDSC. I'd say that transparency here is just a condition of you signing up for it.
 
@Undo I'd go with that
@Undo do you know - do after_save callbacks get executed inline (i.e. before the response is sent), or background?
 
@ArtOfCode inline
I would think
We'll probably just do Thread.new do
 
i've put some comments on the RFC in case you care.
the one pinned ---> there
 
another one close to spam... note OP has two identical answer stackoverflow.com/a/41152851/5292302, however I can't judge if app has any sense related to questions
 
10:03 PM
@PetterFriberg The fact that the linked website is all in Italian makes it look even more spammish. Flag as NAA?
 
@Undo so that's the equivalent of the user.flag(post) method in the workflow thing?
 
yeah
 
11:05 PM
[ SmokeDetector | MS ] Bad keyword in answer: Using Telephony Manager in android to find IMEI number by lisa marie on stackoverflow.com (@dorukayhan)
naa- by Rob
 
11:21 PM
pin please - everyone should know that from now on smokey can or will flag obvious spam chat.stackexchange.com/transcript/message/34120362#34120362
 
@dorukayhan not yet it won't
that's just a framework method that we'll need when we do make it flag things
 
00:00 - 15:0015:00 - 00:00

« first day (1123 days earlier)      last day (2696 days later) »