Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
OSCON - Haunt
Search
fat
July 19, 2012
Technology
6
880
OSCON - Haunt
Introduction of Haunt at oscon
fat
July 19, 2012
Tweet
Share
More Decks by fat
See All by fat
Bootstrap.js?
fat
15
2.8k
Borges
fat
9
12k
Brûlons les musées
fat
6
1.8k
Ender
fat
6
590
Other Decks in Technology
See All in Technology
Datadog Cloud SIEMを使ってAWS環境の脅威を可視化した話/lifeistech-datadog-cloud-siem
gidajun
0
480
GoとアクターモデルでES+CQRSを実践! / proto_actor_es_cqrs
ytake
1
150
頼られるのが大好きな 皆さんへ - 支援相手との期待の合わせ方、突き放し方 -/For_people_who_like_to_be_relied_on
naitosatoshi
1
290
データ分析を支える技術 生成AI再入門
ishikawa_satoru
0
380
Github Actions 로 Android 팀의 효율성 극대화
hadonghyun
0
160
シフトレフトで挑む セキュリティの生産性向上
sekido
PRO
0
270
地理情報とAPIのトレンド
nagix
0
160
サービス開発を前に進めるために 新米リードエンジニアが 取り組んだこと / Steps Taken by a Novice Lead Engineer to Advance Service Development
nologyance
0
180
What is DRE? - Road to SRE NEXT@広島
chanyou0311
3
630
How to Think Like a Performance Engineer
csswizardry
4
590
AWSで”最小権限の原則”を実現するための考え方 /20240722-ssmjp-aws-least-privilege
opelab
10
4.3k
スタートアップにおける組織設計とスクラムの長期戦略 / Scrum Fest Kanazawa 2024
yoshikiiida
13
3.6k
Featured
See All Featured
Debugging Ruby Performance
tmm1
71
11k
Learning to Love Humans: Emotional Interface Design
aarron
269
39k
Designing on Purpose - Digital PM Summit 2013
jponch
113
6.6k
Imperfection Machines: The Place of Print at Facebook
scottboms
262
13k
Designing for humans not robots
tammielis
247
25k
Building Effective Engineering Teams - LeadDev
addyosmani
47
2.2k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
228
16k
5 minutes of I Can Smell Your CMS
philhawksworth
200
19k
Web Components: a chance to create the future
zenorocha
307
41k
Being A Developer After 40
akosma
72
580k
Keith and Marios Guide to Fast Websites
keithpitt
408
22k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
26
1.6k
Transcript
@fat Jul 2012 OSCON Thursday, July 19, 12
I’m @fat Thursday, July 19, 12
I work at twitter Thursday, July 19, 12
I write libraries Thursday, July 19, 12
Bootstrap, Ender, Hogan.js Thursday, July 19, 12
MooTools-flot, Stache, snapysnap Thursday, July 19, 12
Sometimes when I’m feeling saucy I open pull requests Thursday,
July 19, 12
These are largely rejected or backed out after a merge
Thursday, July 19, 12
I’ve been #1 on hacker news twice Thursday, July 19,
12
Thursday, July 19, 12
This is my real avatar on the internet Thursday, July
19, 12
People always think I’m high when I give these presentations
Thursday, July 19, 12
People always think I’m High when i give these presentations
Thursday, July 19, 12
Don’t tweet that, it hurts my feelingz Thursday, July 19,
12
I say “like” a lot Thursday, July 19, 12
I curse Thursday, July 19, 12
The only thing which consistently impresses me is 4chan Thursday,
July 19, 12
I live in the tenderloin Thursday, July 19, 12
I have a .xxx domain Thursday, July 19, 12
And perhaps worst of all I read books Thursday, July
19, 12
And not particularly good ones Thursday, July 19, 12
One of the authors I read a fair amount of
is Karel Čapek Thursday, July 19, 12
Thursday, July 19, 12
ČČapek wrote a number of works on brutal fascist dictatorships
Thursday, July 19, 12
But he’s most famous for a sci-fi play he wrote
in 1920 R.U.R. Thursday, July 19, 12
A dystopian work about a factory populated with androids Thursday,
July 19, 12
Thursday, July 19, 12
It start’s with a story about a man named Rossum
Thursday, July 19, 12
Who accidentally discovers a chemical similar to protoplasm Thursday, July
19, 12
Rossum attempts to make a real dog and man, but
fails Thursday, July 19, 12
Old Rossum was trying to prove God not just useless,
but absent Thursday, July 19, 12
Nephew comes to visit uncle and argues with old uncle
Rossum Thursday, July 19, 12
Young Rossum just trying to… Thursday, July 19, 12
Eventually, Young Rossum locks his uncle in a laboratory Thursday,
July 19, 12
And uses the formula to build robots Thursday, July 19,
12
Soon he’s building factories and robots by the thousands Thursday,
July 19, 12
By the 1950s, you can get robots on the cheap
Thursday, July 19, 12
The economy is amazing and so is the quality of
life Thursday, July 19, 12
Then this girl Helena shows up Thursday, July 19, 12
Thursday, July 19, 12
what if computers don't like being programmed prince M I
L Ǝ S @iano 25 JUN Thursday, July 19, 12
maybe computers just want to chill and play screen savers
all day prince M I L Ǝ S @iano 25 JUN Thursday, July 19, 12
Then there’s a robot revolt and it turns into a
whole thing Thursday, July 19, 12
But what about dat quality of life thing? Thursday, July
19, 12
A few months ago I was at Thursday, July 19,
12
Between sessions I was talking to TJ Holowaychuk Thursday, July
19, 12
We bonded over having panic attacks about github notifications Thursday,
July 19, 12
Thursday, July 19, 12
Turns out, this is a pretty common problem Thursday, July
19, 12
It’s a good problem Thursday, July 19, 12
But still a problem Thursday, July 19, 12
What makes it worse is github doesn’t offer maintainers much
help Thursday, July 19, 12
Out of desperation you begin to see things like… Thursday,
July 19, 12
Thursday, July 19, 12
Thursday, July 19, 12
But I still found myself spending 3-5 hours a week
on issues alone Thursday, July 19, 12
What’s worse, most of these issues aren’t issues with the
library Thursday, July 19, 12
They are support questions, duplicates, incomplete reports, etc. Thursday, July
19, 12
This becomes both exhausting and incredibly discouraging Thursday, July 19,
12
What’s worse, we get so overrun that we forget to
innovate Thursday, July 19, 12
I can close 50+ issues without committing a single line
of code ಠ_ಠ Thursday, July 19, 12
I’ve seen a few solutions to this problem Thursday, July
19, 12
Some projects add contributors who only manage tickets Thursday, July
19, 12
But it’s hard to find people, let alone the right
people Thursday, July 19, 12
Some projects begin moving ticketing off network Thursday, July 19,
12
But this means inconsistent ticket locations and implementations Thursday, July
19, 12
Instead, what if we could just clone ourselves? Thursday, July
19, 12
This of course is the Old Rossum approach Thursday, July
19, 12
But wut if we focused on really simple tasks a
la Young Rossum? Thursday, July 19, 12
The evening after I wrote some docs for a new
service Thursday, July 19, 12
A bot which would implement Necolas’s issue-guidelines Thursday, July 19,
12
But it shaped up to be a huge undertaking with
limited value Thursday, July 19, 12
Which is to say, value for Nicolas and I, but
no one else Thursday, July 19, 12
About a month later Thursday, July 19, 12
how did your github bot thing go? TJ Holowaychuk @TJHolowaychuk
1:10 AM Thursday, July 19, 12
Translation Can i use ur robot pls? Thursday, July 19,
12
@tjholowaychuk sadly haven't had time to finish it yet :(
I added @sayer to the project but we've both been pretty busy ♒∆✝ @fat 1:11 AM Thursday, July 19, 12
Translation I abandoned it, but blame @sayrer Thursday, July 19,
12
haha ok cool, I could definitely use something like that
these repo issues are getting out of control TJ Holowaychuk @TJHolowaychuk 1:15 AM Thursday, July 19, 12
Translation FML. ok. I’ll write my own. Thursday, July 19,
12
bahaha my bot backfired on me and started closing the
wrong shit, definitely needs a dry- run mode TJ Holowaychuk @TJHolowaychuk 2:26 AM Thursday, July 19, 12
Translation fuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu Thursday, July 19, 12
Naturally, I first lol’d at all the wrongly closed issues
Thursday, July 19, 12
Then got obsessively interested in actually building this thing Thursday,
July 19, 12
But with a new, goal: I wanted it to be
“Universal” Thursday, July 19, 12
To begin I started researching bots Thursday, July 19, 12
Chatterbots, spambots, botnets, gaming bots, votebots, etc. Thursday, July 19,
12
I found Bots are just apps that run automated tasks
over the web Thursday, July 19, 12
But I wanted something slightly different Thursday, July 19, 12
An app that ran automated tests over the web Thursday,
July 19, 12
I was hoping this would offer more flexibilty and be
easier to evolve Thursday, July 19, 12
So for the past two months, i’ve been working on
just that Thursday, July 19, 12
And today I’m happy to be open sourcing it Thursday,
July 19, 12
Haunt something similar to Rossum’s protoplasm Thursday, July 19, 12
Which is to say, a node module for creating robots
|| services Thursday, July 19, 12
Haunt allows you to run unit tests against issues and
pull-requests Thursday, July 19, 12
Then make decisions about closing, tagging, and commenting Thursday, July
19, 12
All programmatically Thursday, July 19, 12
For bootstrap I wrote the following simple assertions Thursday, July
19, 12
Pull-Requests should always be made against -wip branches Thursday, July
19, 12
Pull-Requests should always be made from feature branches Thursday, July
19, 12
Pull-Requests should always include a unit test if changing js
files Thursday, July 19, 12
Issues should include a jsfiddle/jsbin if tagged as JS Thursday,
July 19, 12
These 4 tests invalidate 37 of 42 pull requests and
63 of 88 issues Thursday, July 19, 12
Issues which I would have had to manually comment and
close Thursday, July 19, 12
But it doesn’t stop there Thursday, July 19, 12
You could write more complex assertions to check for duplicates
Thursday, July 19, 12
Or already resolved issues in your code Thursday, July 19,
12
You could even use it to run your actual test
suite Thursday, July 19, 12
Or use it to run a linter like jshint Thursday,
July 19, 12
Or simple things like tagging all issues with >10 +1’s
as “popular” Thursday, July 19, 12
Because this is just JS the potential is limitless Thursday,
July 19, 12
So just checkout http://git.io/haunt to find out how it works
Thursday, July 19, 12
thx and follow @fakeangus <3 Thursday, July 19, 12