« first day (1488 days earlier)      last day (2330 days later) » 

12:01 AM
I don't have epoll since I'm on OS X atm so I have no idea if that's any different
Anyone who knows Linux better than me?
 
teward/Solar Flare received failover signal.
Restart: API quota is 19999.
 
ok
@ArtOfCode your instance died randomly
that's great
 
@SmokeDetector tpu-
 
12:14 AM
[ SmokeDetector | MS ] Offensive answer detected: How can I solo mine using Bitcoin Core? by pussygetter on bitcoin.SE
tpu- by Rob
 
@SmokeDetector k
 
!!/test insurance
 
> Would not be caught as a post, title or username.
 
!!/test life insurance
 
> Would not be caught as a post, title or username.
 
12:22 AM
!!/test loan
 
> Would not be caught as a post, title or username.
 
!!/test spell caster
 
> Would not be caught as a post, title or username.
 
Strange. These keywords used to be caught.
 
not by themselves
 
12:25 AM
!!/test qwertyuiopasdfghjklzxcvbnm
 
> Would not be caught as a post, title or username.
 
@quartata Why wouldn't this obvious garbage be caught?
 
Because it isn't? Not sure what to say :P
Oh I forgot that few unique characters doesn't work that way
 
Could've been flagged as rude very quickly on a real site...
 
12:29 AM
Part of the regex reads shit(t?er|head)
 
@iBug Yeah. That doesn't match shit by itself.
6 messages moved to trash
 
OK I got it. Maybe I should read the regex thoroughly first
!!/test private show
 
> Offensive body detected, offensive title detected
----------
Title - Offensive keyword: *private show*
Post - Offensive keyword: *private show*
 
Ah, I forgot there isn't a question mark after the capture group:
 
Still needs a flag or 2: stackapps.com/questions/7712/…
 
12:35 AM
It's (t?er|head) not (t?er|head)?
Does reporting twice help?
 
@iBug You are not a privileged user. Please see the privileges wiki page for information on what privileges are and what is expected of privileged users.
 
!!/remote-diff
 
[?1h=
bad_keywords.txt
blacklisted_usernames.txt
blacklisted_websites.txt
chatcommunicate.py
rooms.yml
watched_keywords.txt

[?1l>

SmokeDetector will require a full restart to pull changes: True
 
!!/pull
 
!!/amiprivileged
 
12:37 AM
[ SmokeDetector ] SmokeDetector started at rev 0d948da (SmokeDetector: Auto watch of hiri\.com by Thomas Ward --autopull) (running on teward/Solar Flare)
 
@iBug try again
 
@iBug ✓ You are a privileged user.
 
@iBug Sometimes. But usually wait a bit longer for that (next shift).
 
Restart: API quota is 19769.
 
oh there we go
 
12:38 AM
Good. Garbage gone~
 
And... gone! Less than 30 minutes this time. \o/
 
I could remember an obvious spam is gone from SO in a blink
5 seconds. Rapid response. I hadn't even refreshed the page.
 
Still is, usually. Praise robo-flaggers...
 
Is robo-flagging a function provided by MS?
 
You need an MS account and then load one of the userscripts. See the MS wiki.
 
12:41 AM
Thanks. I'll spare some time on this this weekend.
 
Never installed a script myself. I like to look into a spam's eyes as it dies...
 
SEAutoComments is a must-have plugin.
It's the top voted one on Stack Apps
 
Don't get me wrong, I write userscripts every day and have over 100 installed. Just not for flagging.
 
Got it. I don't prefer too much for performance issues.
 
Better a slow page that's useful, than a fast one that barely is...
 
12:52 AM
The real problem is, I browse SO on my 5.5" Android phone most of the times, rather than my working laptop.
Installing userscripts to Android Chrome isn't that practical. In fact not possible at all.
 
Hrm. My chatexchange_extension is getting rather invasive...
Maybe I should fork
or maybe I'll just toss out the "taking out _worker" part
 
I just learned a new term yesterday: Spam hour.
Someone mentioned it to be the business hour in India.
 
!!/status
 
@thesecretmaster Running since 00:37:28 UTC (28 minutes, 19 seconds)
 
Rob
1:24 AM
@BrockAdams Do you actually need the script installed? I thought you just provide MS with your API key
Though one of the userscripts does that automatically
 
I think they were referring to FIRE
not autoflagging
wow
tfw you get friend zoned by SE chat:
websocket._exceptions.WebSocketConnectionClosedException: Connection is already closed in the middle of the friggin' handshake
 
YO. I may have just made a breakthrough with Smokey+ML, thanks to @thesecretmaster. Ya know how we've never managed to build a classifier better than 50/50 before? I have a 95% accurate classifier.
and that's without any attempt to improve it off the baseline
 
@ArtOfCode smokey+ml?
 
machine learning
 
1:37 AM
did someone ping me then delete it?
 
@micsthepick probably a Smokey report
 
probably.
@ArtOfCode that’s impressive. ML never fails to impress.
 
@micsthepick eh, some of our regexes are way more accurate
but it's better than any previous attempt
 
of course manual efforts would be able to be more accurate with tp’s, but the fact that the computer can reach that accuracy without telling it the logic to use is still impressive
 
2:00 AM
!!/location
 
@ThomasWard teward/Solar Flare
 
oops?
 
angussidney/EC2 received failover signal.
 
eh, that works
 
Restart: API quota is 19999.
 
2:03 AM
!!/standby angussidney/EC2
 
angussidney/EC2 is switching to standby
teward/Lunar Eclipse received failover signal.
Restart: API quota is 19999.
 
um, what? I gave Solar Flare the failover signal :/
 
nice
 
2:05 AM
 
lol whoopsies.
 
@ArtOfCode that's odd that Solar Flare didn't actually failover when I told it to
and I just ctrl+c'd it so blurghl
 
tpu- by ArtOfCode
 
2:18 AM
@Rob Don't you? I don't use autoflagging myself and it's been a long while since I looked at the tools, but it was in the form of userscripts once upon a time. Check out the wiki for what's current.
 
2:37 AM
@ArtOfCode Give me the sordid details
 
@quartata Currently testing it over here
 
@quartata not as good as first thought :(
Excellent on the MS dataset, but that's a biased set
 
So I take it that was training accuracy
not validation accuracy
 
tpu- by Rob
@BrockAdams Post 1: Could not find data for this post in the API. It may already have been deleted.
> Would not be caught as a post, title or username.
> Would not be caught as a post, title or username.
> Would not be caught as a post, title or username.
> Would not be caught as a post, title or username.
> Would not be caught as a post, title or username.
:41731324 > Repeating characters in body, repeating characters in title, title has only one unique char
----------
Title - Repeated character: *aaaaaaaaaaaa*
Title - Position 1-13: aaaaaaaaaaaa
Post - Repeated character: *aaaaaaaaaaaa*
:41731327 > Would not be caught as a post, title or username.
:41731340 > Would not be caught as a post, title or username.
> Offensive body detected, offensive title detected
----------
Title - Offensive keyword: *private show*
Post - Offensive keyword: *private show*
@iBug Post 1: Could not find data for this post in the API. It may already have been deleted.
tpu- by ArtOfCode
Recovered from BrokenPipeError: [Errno 32] Broken pipe
 
I have been summoned
 
2:45 AM
@quartata no, that was validation accuracy on the MS dataset
 
@SmokeDetector I knew that
told me already
 
Restart: API quota is 18104.
 
@ArtOfCode oh OK
Is @thesecretmaster in here too
 
@SmokeDetector interesting
 
2:50 AM
12 mins ago, by thesecretmaster
@quartata Currently testing it over here
 
Would you rather we talk about it here or in there?
 
I don't really care -- I was over there because that's where I've been testing Smelly.
 
@Undo I think we just repro'd your weird reply thing by the way
Looks like it's caused by a failover
@ArtOfCode @thesecretmaster OK. I've had an idea for an ML approach that's pretty different from what we've done in the past. I've pitched this to @tripleee before but I put it to the side when working on chatcommunicate
 
@quartata pitch me
 
Split spam into different types of spam, not just spam v not spam?
 
2:54 AM
Here's the thing: once we discover a spam domain, nothing will ever be as accurate as the blacklist. That's why we make reasons based on discovering new domains and keywords: things like link at the end of post, pattern matching product, bad NS...
I'm thinking an ML approach should focus on the keyword or domain name level, not the whole post level:
 
Restart: API quota is 18096.
 
Basically we extract out really rare or never before seen keywords, or URL domain names and tails (kind of like what Half-Life) does and run them through something that goes character by character -- I was thinking some ensemble form of NB
When you see the really blatant spam stuff you can tell just by reading the product name that it's spam. it's marketing health buzzwords
 
Worth a try
 
we can exploit that and discover new things to blacklist
 
we also need some ham training data, though
 
2:57 AM
SE data dump
 
we've got plenty of spam, but no ready-made ham dump
 
Make sure the corpus are balanced
 
[ SmokeDetector | MS ] Potentially bad keyword in body: Which is professional cycling clothes manufacturer by ontheroadcyc on superuser.com
[ SmokeDetector | MS ] Potentially bad keyword in body: Which is professional cycling clothes manufacturer by ontheroadcyc on superuser.com
tpu- by ArtOfCode
tpu- by ArtOfCode
 
!!/standby ArtOfCode
 
ArtOfCode/EC2 is switching to standby
 
3:00 AM
By the way, an ensemble method basically trains more than one model and takes the average of their outputs
I think that could be a good idea because one model could be weighted more towards a particular type of spam
 
@quartata you're thinking train one on bodies and one on domains?
because with Bayes, any two models trained on the same data will be identical
 
Maybe. usually ensemble methods just randomly assign the data
 
@SmokeDetector ¿Hruh?
 
soooo... @Undo how much spare memory does the MS server have?
 
Usually you hear about ensemble methods with decision trees: hence random forests
That would be doable too
 
3:18 AM
@NobodyNada how much memory does your Pi have?
 
?
 
@ArtOfCode 1GB
 
hm
 
Do you need my Heroku
 
@quartata If we can get this to an accuracy good enough to use it in Smokey, I'm debating how we do it.
Not entirely sure on exact numbers, but it's taking somewhere between 500 MB - 1 GB of RAM to keep in memory and classify with.
 
3:21 AM
Ah. You're worried about peformance
 
No, I'm worried about running out of RAM
 
Not time
 
@quartata yes, but it's quick at classifying, so that's not an issue
 
FireAlarm stores the Naive Bayes filter in a SQLite DB
 
But even the lower end of that range rules out the Pi and my EC2; probably angus' too. It rules out a number of our Smokey hosts, actually.
If the MS server has enough RAM, we can keep it there and have an API route to do classifications.
 
3:23 AM
Well
 
but I have a nasty feeling that MS is also a t2.micro
 
What input does your model take
 
post body
 
but like
what encoding
 
@quartata UTF-8
which can't be changed, it has to be UTF-8
 
3:25 AM
not text encoding
like what is the vectorizer
 
@quartata ask these guys
 
ok that's bag of words
woops sorry I'm a little sleepy
 
Maybe before we discuss implementing this in smokey, we wait until we see a single tp come out of it?
 
anyways that will always take up a lot of memory since it needs a dictionary
 
@quartata got a better implementation?
 
3:31 AM
no but thats a word based model
 
...that's what Bayes is
 
We could try to sort out why LSI was angry earlier
 
no naive bayes is just about assigning probabilities to something
 
@thesecretmaster I threw a comment on the issue about it
@quartata yeah, words
okay, "tokens"
 
I was talking about something with characters
 
3:34 AM
@quartata ...that's called a word ;)
 
since we're only operating on a single n-gram
 
@quartata bigrams won't reduce the memory usage, though - you still have to store both halves of the bigram.
 
no thats not what I'm talking about
 
[ SmokeDetector | MS ] Link at end of answer: Site snapshot service with archiving for outgoing links by a deleted user on webapps.SE
 
let's chuck NB out the window for now though since I realized a decision tree will be better
 
3:37 AM
@quartata got a description and an implementation?
 
Currently you're operating on a list derived from each word of the post body. What I was talking about was data based on what characters are present in the URL domain we extracted
@ArtOfCode sklearn has a random forest I believe
but heres how it works:
the models themselves are simple, constructing is more complicated. at each node of the "tree" (really a graph) the mdel compares one of the input variables with some value, then takes the appropriate branch. the leaves (endpoints) represent the possible output labels
most of the construction algorithms are greedy -- they pick a variable and comparison that best splits the set of data that's taken the previous branch into the next two branches
hmm. something recurrent might be better though to factor in the order better
the hard part is getting data and extracring the urls and keywords to be honest. we can try a lot of types of models from there
 
3:52 AM
[ SmokeDetector | MS ] Repeating characters in answer: more than one instance of overloaded function matches the argument list by Yo boi Andy VanT on stackoverflow.com (@micsthepick)
tpu- by Tetsuya Yamamoto
 
Would it make sense to use regular string parsing to extract the main portions of the urls before using ML to analyze keywords in the domain name and the rest of the post?
 
Yes. That was my plan.
Halflife already has decent regexes for URL domains and tails, I was thinking just somthing tfidf-esque for keywords
 
@quartata Ruby: URI.extract(text)
literally what metasmoke does
 
From a whole post?
 
I'm still hung up on how to get a good dataset of good URLs, though
 
3:56 AM
I volunteer Smelly to run any ruby projects
 
@quartata yeah, it just does URI.extract post.body
 
wow nice
The SE data dump?
 
gives you an array of string URLs
@quartata is a massive pain to work with, yes
and SEDE doesn't do multi-site queries
 
@ArtOfCode Don't they have an all-site sqlite dump?
 
@thesecretmaster nope
 
3:57 AM
it would be the best ham data though
 
and it's still all in separate files
shrug I guess I got time
 
@ArtOfCode If you want to offload some of the sites to me, send me a gist for whatever you end up with.
 
honestly the painful bit is gonna be downloading the thing
 
I would add we don't want all the data. We can just randomly select posts until we get enough URLs to balance the spam ones
 
@quartata sure, but you've still gotta download a good selection of sites to avoid topic bias
 
4:01 AM
oh yeah
 
SU might be a good option, actually
good mix of technical and non-technical
 
[ SmokeDetector | MS ] Offensive body detected, offensive title detected: German translation for Tina Fey's quote, "Bitches get stuff done." by AdrienCara on german.SE
fp- by Tetsuya Yamamoto
 
@ArtOfCode Linky to the dump?
 
Oh, you've gotta download one by one
Ew
 
4:04 AM
yup
48 GB is too much for them to zip up for you :P
Gah, 7Z compression
and XML :(
 
[ SmokeDetector | MS ] Blacklisted website in body, pattern-matching website in body: Nuts Furthermore Brain Functions by onicaedraza on graphicdesign.SE
tpu- by Tetsuya Yamamoto
 
Aha! I found the magic wget to download all the files!
For fun :)
 
[ SmokeDetector | MS ] URL in title, bad keyword in body, bad keyword in title, blacklisted website in title, pattern-matching product name in body, +1 more: gomusclebuilding.com/ptx-male-enhancement/ by jlmllyskahdy on meta.SE
tpu- by thesecretmaster
 
4:19 AM
Okay. I have SU loaded. Next problem: extracting URLs takes 5 minutes on the MS dataset, about 80k posts. SU has several hundred thousand, if not over a million already. Yeah.
 
@ArtOfCode probably not enough if you have to ask that question
 
@Undo got a spare gigabyte lying around? :)
 
doubtful. Lemme look
But really, if we have a recurring task that needs an hour every week or something on a giant server I can make that happen
 
@Undo no, it'd need to be constantly available
:(
 
What are you wanting to do?
 
4:28 AM
Honestly, I doubt there's enough spare either :)
@Undo load a Bayes model into memory so MS can respond to API requests for classification
said model takes about a gig in memory
 
[ SmokeDetector | MS ] Bad keyword in body, bad keyword in title, blacklisted website in body, pattern-matching website in body: What Testo Boost XS do? by accghoblunt on meta.SE
 
@ArtOfCode Sounds like scope creep
 
but if this is going to be a thing we need to improve the model first, it's not great right now
 
@SmokeDetector k
 
sounds like really cool scope creep, but still something that should be its own thing
 
4:29 AM
@Undo yup, totally. But putting it on individual instances has the same problem - not enough memory.
My t2.micro is out, for one
UPC would handle it - 16 GB - but that ain't on 24/7
 
Could we build it into Smokey and have it as an opt-in command line flag, for the instances that can pull it off?
Then have metasmoke communicate with the opted-in ones over the websocket, acting as a weird async API?
I.e. I bet some of Thomas' VPS things could handle it fine, and there's usually one of those up.
 
@Undo so... every Smokey has access to the classifier, by making an API request to metasmoke, which forwards it to a capable instance, back to MS, back to requester?
 
aye
 
O.o
 
um...ew?
 
4:33 AM
Totally possible, also totally crazy
the kind of totally crazy that we're pretty good at, that is
 
Don't know how else we get hardware that can do it. The only iffy thing there is making websocket reqs synchronous on the MS side
@Andy see: room tags
 
I have space, although I haven't done any hosting for CHQ before and it's not reliably 24/7
 
@Undo nah, go totally async and even more crazy: API request made, MS sends 202 Accepted, drops the request. Forward to a capable instance in the background, wait for response. Once response is available, throw it down smokedetector_messages.
 
please no
 
@quartata Where is the documentation on how to set up Smokey with NG?
I agree with @quartata. Please don't go this route
 
4:36 AM
@quartata I think this should be the new litmus test of "is this an idea that is dumb enough to work"
 
I know there are new yml files and config options somewhere
 
@Andy No different than the usual.
 
@Andy TL;DR: the rooms object in ws.py has been replaced by rooms.yml
 
It comes with a rooms.yml that joins all the usual rooms
Do you want it for testing
 
yes
 
A J
4:37 AM
!!/alive
 
@AJ plz send teh coffee
 
Oh OK. make a new file clled rooms_custom.yml
Set it up like so:
<chat host (stackexchange.com)>:
  <room id>:
    commands: true
    msg_types:
      - debug
      - all
      - experimental
    privileges:
      - <your user id>
@Andy when you want to switch to production just delete the rooms_custom.yml, it'll switch to the other rooms.yml
 
@Undo while you're semi-around, can you dump spam domains?
 
The table?
 
@ArtOfCode good idea
 
4:44 AM
File.write('domains.txt', SpamDomain.all.map(&:domain).join("\n"), encoding: 'UTF-8')
just need the domain names
@quartata I've got a ham set
 
that was fast
 
In related news: I'm currently up to downloading emacs :)
 
How do I create a chat room that isn't associated with a site? It's defaulting to a site and I can't clear it
 
@Andy assign it to the Stack Exchange Network
 
@thesecretmaster congratulations. A new set of achievements are waiting to be unlocked
 
4:46 AM
Info -> Edit -> Host -> [change] "The Stack Exchange Network"
 
@thesecretmaster vim all the way :P
 
emacs .se
 
@ArtOfCode Thank you, sir
 
@thesecretmaster vi.se is a thing too :P
 
4:47 AM
[ SmokeDetector | MS ] URL in title, bad NS for domain in body, bad NS for domain in title, bad keyword in body, bad keyword in title, +3 more: bestagingcare.com/kotolena-cream/ by user267906 on apple.SE
 
@Undo ta
 
@ArtOfCode But e comes before v
 
@ArtOfCode tripleee would probably fight you on that
 
@SmokeDetector k
 
ok so currently I'm leaning towards at least trying a character based LSTM to start. it has the most potential
 
4:49 AM
@SmokeDetector @ArtOfCode The classifier caught this!
 
@thesecretmaster along with several hundred FPs :)
 
have to start somewhere.
 
@ArtOfCode Hey, I didn't make the classifier!
 
The somewhere just happens to be deep in a hole :P
 
@thesecretmaster touche
 
@SmokeDetector Classifier caught this too!
 
tp- by Tetsuya Yamamoto
 
@SmokeDetector Possibly cat on keyboard, edited by OP :)
 
@ArtOfCode the FP collection in MS is always a start
@quartata though of course ^ this is not balanced at all
 
@tripleee aye, but that comes with the same problem that we're fighting on the body classifier
it's a biased set
@quartata I also have a Bayes domain classifier
 
4:55 AM
@ArtOfCode Want me to pass it to Smelly?
 
Wait really? I didn't know you tried that
 
@ArtOfCode this is how the (now dormant) DeepSmoke was set up; I have a sturdy EC2 running the classifier and accepting posts to classify over a simple HTTP API
 
@thesecretmaster might as well. Different file, check inbox
@tripleee what type of EC2?
 
@ArtOfCode nothing too odd, it was the first thing I set up on Amazon
 
@ArtOfCode I will load 2 models into memory and my computer will not mind.
 
4:57 AM
the training is apparently somewhat resource-intensive but the resulting model is just a Tensorflow file
 
@tripleee I'm guessing t2, but what level?
 
hang on, lemme check
 
@tripleee Yeah, I'm transporting models around in binary files. Training is intensive, but keeping it loaded in memory takes a significant chunk of RAM
 
pretty sure it's t2.micro
 
huh
must have been a smaller model then
 

« first day (1488 days earlier)      last day (2330 days later) »