Greg Hurrell Profile Banner
Greg Hurrell Profile
Greg Hurrell

@wincent

3,311
Followers
14
Following
1,048
Media
11,595
Statuses

Staff Engineer at @datadoghq , Ex- @github , Ex- @facebook

Joined February 2008
Don't wanna be here? Send us removal request.
Pinned Tweet
@wincent
Greg Hurrell
4 months
Where Relay Modern was born, 2016 — also pictured: React (as Fiber was being born), Flow, GraphQL. Quite possibly my favorite time at FB. Open-plan offices aren't always bad.
Tweet media one
5
3
59
@wincent
Greg Hurrell
1 month
Resigned from GitHub. Joining Datadog. Observability is the new version control.
36
18
754
@wincent
Greg Hurrell
6 years
JavaScript is the ideal language for procrastinators. Whenever you want to work on something other than the actual problem you are supposed to solve, you can configure/update/maintain/tune/fix auxiliary stuff: Webpack, Babel, Flow, node_modules etc. No other language comes close.
17
122
523
@wincent
Greg Hurrell
5 years
Thread: [In which a programmer opines about how to interview other programmers]. I interviewed well over 400 people in the SF Bay Area over the last 8 years, and along the way got to see a lot of other interviewers work.
1
87
319
@wincent
Greg Hurrell
6 years
My favorite poster at Facebook. The phrase wasn't coined there but rather comes from Alfred A Montapert (or so my Google search tells me). I love the universality of it: I've seen this mistake played out at every level from megacorp down to small start-up down to me working alone
Tweet media one
3
88
299
@wincent
Greg Hurrell
7 years
A behind-the-scenes take on how we built Relay Modern: — @en_JS : this one's for you. #relayjs #graphql
3
38
128
@wincent
Greg Hurrell
5 years
The most common mistake I saw interviewers make was treating the interview as a search for everything the candidate *didn't* know, instead of everything they *did* know. It's an unfortunate mistake, often leading to false negatives, a poor candidate experience, and a monoculture.
3
23
119
@wincent
Greg Hurrell
6 months
@BenLesh Would be better as a slider
7
0
99
@wincent
Greg Hurrell
5 years
In 8 years in the Bay Area I never left my corp laptop at work overnight. I walked around with a company-provided phone in my pocket, full of company apps. In Spain, I leave my laptop at work. No company phone. I arrive at and leave work with energy. I get just as much done. 🤓🧘‍♂️
1
0
90
@wincent
Greg Hurrell
5 years
When I joined FB I immediately felt the pain of how slooooow everything was in the enormous monorepo. I knew, however, that if we'd gone the opposite end of the spectrum (hundreds, thousands of tiny repos) we'd just be trading one set of unpleasant problems for another.
3
13
89
@wincent
Greg Hurrell
7 years
So I just replaced 476 lines of JS with 153 lines of @reasonml . The type system compactly encodes lots that JS can only enforce with code.
3
23
83
@wincent
Greg Hurrell
6 months
@cpojer 100% correct. Home automation is a solution looking for a problem. Being able to hit a button from a phone (or not even having to hit a button) instead of getting up and walking across a room is a WALL-E Dystopia, not Utopia.
11
0
81
@wincent
Greg Hurrell
7 years
Orthodoxy: Beware grand rewrites, second system effect etc. Learned at FB: Sometimes you just have to throw it away and start again.
6
29
76
@wincent
Greg Hurrell
8 years
Happy open source anniversary #relayjs
Tweet media one
3
24
71
@wincent
Greg Hurrell
7 years
As promised, blog post on the never-ending but misguided search for the perfect programming language:
5
34
70
@wincent
Greg Hurrell
6 years
Goodbye Facebook. It's done. Handed in my corporate laptop, phone, badge — and gun (haha, just kidding). I'm going to miss you. One last ride up the 101 in the company shuttle. 😭 At the same time, not setting the alarm to wake up on Monday morning is going to be pretty neat.
Tweet media one
6
0
67
@wincent
Greg Hurrell
3 years
I'm doing my first on-call shift at GitHub. Please be gentle. In fact, might I suggest that everybody just take the next few days off.
3
0
64
@wincent
Greg Hurrell
8 years
Big refactoring in #haskell : 0. Huge refactor. 1. See 1,000 type errors. 2. Fix type errors. 3. Run tests; all pass on first try.
2
32
64
@wincent
Greg Hurrell
8 years
New blog post, "Conquering my demons", about managing fear as a software developer:
5
36
62
@wincent
Greg Hurrell
8 years
The #relayjs team at Facebook has started posting their internal meeting notes on GitHub:
3
23
61
@wincent
Greg Hurrell
8 years
Wow. One of my longest-standing gripes with Homebrew just went away most unexpectedly.
Tweet media one
3
22
60
@wincent
Greg Hurrell
9 years
I put together a gist with some answers to questions about #relayjs I got at #reactjsconf yesterday:
6
45
59
@wincent
Greg Hurrell
5 years
How do you prefer to order functions within a module? (1) alphabetically (eg. a(), b(), c()) (2) dependencies first (eg. thingMainNeeds(), otherNeededThing(), main()) (3) dependencies last (eg. main(), thingMainNeeds(), otherNeededThing()) (4) main first, then alphabetical.
52
5
52
@wincent
Greg Hurrell
9 years
Just pushed Relay v0.3.0 (Changelog: ) #relayjs
1
30
51
@wincent
Greg Hurrell
4 years
Lincoln: "Give me six hours to chop down a tree and I will spend the first four sharpening the axe." Wincent: "Give me a series of simple programming tasks to do and I will spend 10 years of my life tweaking my dotfiles repo".
0
10
50
@wincent
Greg Hurrell
8 years
Long overdue #relayjs status update:
6
28
50
@wincent
Greg Hurrell
5 years
Software Developers who tweet 😩😩😩 Software Developers who only read tweets 😫😫😫😫😫😫😫😫😫😫😫😫😫 Software Developers not on Twitter 🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂
@hashim_warren
Hashim Warren 🌄
5 years
Software Developers who tweet 🙋🙋🙋 Software Developers who only read tweets 🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋 Software Developers not on Twitter 🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋🙋
30
240
2K
2
5
48
@wincent
Greg Hurrell
7 years
Threads in JS.
0
28
48
@wincent
Greg Hurrell
8 months
Disappointingly controversial opinion: 1. Well-executed monoliths are good (you can still have modularity and clear architectural boundaries in a monolith) 2. It's easier to produce a well-executed monolith architecture than a well-executed service-oriented architecture
6
6
44
@wincent
Greg Hurrell
6 years
What my website used to look like 20 years ago. This is about the oldest screenshot I have. It used to look worse before this.
Tweet media one
10
4
45
@wincent
Greg Hurrell
8 years
OMG fuck touch bar so much. I don't want to look at my keyboard in order to use it, ever.
1
12
44
@wincent
Greg Hurrell
7 years
Pattern matching for JS proposal:
3
16
44
@wincent
Greg Hurrell
7 years
Relay 1.0.0:
2
19
43
@wincent
Greg Hurrell
5 years
Seen on Stack Overflow — creating a named JavaScript function dynamically at runtime without `eval` (or Function constructor etc): function makeNamedFunction(name, body) { return {[name](...args) {return body(...args)}}[name]; }
3
6
41
@wincent
Greg Hurrell
7 years
Just released graphql v0.10.0 to npm: #graphql
0
12
41
@wincent
Greg Hurrell
9 years
How gzip trumps everything. Wrote this a while back but never shared it:
2
18
39
@wincent
Greg Hurrell
1 year
Me too!
Tweet media one
2
1
38
@wincent
Greg Hurrell
8 months
@matteocollina Yes, I would, will, and am. But only because it is the "right tool" for this particular job. Next project, and every project, I'll reevaluate.
0
0
38
@wincent
Greg Hurrell
2 years
My dotfiles repo recently reached 1k GitHub stars, and now my life is complete... 😜
Tweet media one
1
1
38
@wincent
Greg Hurrell
7 years
React + MIT license:
0
14
37
@wincent
Greg Hurrell
8 years
Just published v0.10.0 of #relayjs — mostly a maintenance release, paving the way for things to come:
0
8
37
@wincent
Greg Hurrell
5 years
I think React hit its "explainability sweet spot" around the time ES6 class components "replaced" create last (ie. 2015, I think). No suspense, no hooks, no (documented) context etc. Since then, API has gotten much bigger (better too, no doubt).
1
2
35
@wincent
Greg Hurrell
5 years
Great presentation on full-stack type safety with GraphQL and TypeScript from @rbzhu
1
6
35
@wincent
Greg Hurrell
3 years
A fun walk down memory lane:
0
11
36
@wincent
Greg Hurrell
3 years
Emoji completion in Vim 😍
Tweet media one
3
1
35
@wincent
Greg Hurrell
5 years
So, yeah. Instead of treating the interview as a mistake-cataloguing exercise, you should be viewing it as a search to expose as much of the candidate's knowledge and skill as possible. It's not hunting for errors, it's searching for expertise.
1
9
35
@wincent
Greg Hurrell
7 years
It's easy to become blasé about Google Sheets. Really, it's a stunningly powerful app, and an astonishing demo of what a browser can do.
1
2
35
@wincent
Greg Hurrell
3 years
I first came across Martin via his work on CRDTs, but most know him thanks to this well-regarded tome. Looking forward to diving into this one.
Tweet media one
4
3
35
@wincent
Greg Hurrell
11 months
Fuck cancer (or whatever it was).
Tweet media one
1
0
33
@wincent
Greg Hurrell
9 years
Relay 0.4.0 is out! #relayjs
0
19
34
@wincent
Greg Hurrell
5 years
FB 2014: we were already trying to prove that React + Relay (not called Relay then) could scale to implement the full experience of . A bunch of smart, tenacious people have been at it ever since. Pretty exciting to see it work out:
0
1
33
@wincent
Greg Hurrell
3 years
Literally the worst thing ever: being interrupted while in INSERT mode.
1
3
31
@wincent
Greg Hurrell
7 months
"Building JS tooling in Rust is bad because it makes it harder for JS programmers to contribute" is a feeble argument. - The Rust community is plenty large. Not only that, but there is a growing intersection of people with Rust expertise who are also interested in building
2
2
33
@wincent
Greg Hurrell
3 years
If you want to enhance Neovim, don't learn Vimscript — it's utterly useless everywhere except in a single text editor. Instead, learn Lua, which you can additionally use to make a World of Warcraft add-on, a custom imapfilter set-up, and a bunch of other things.
4
3
33
@wincent
Greg Hurrell
6 years
One of the great things about working for FB is the opportunity to meet stellar folk from the OSS world who work here too. Today, I had the pleasure of meeting @gnachman over coffee (and showering him with thanks for his work on iTerm over the years). Great guy and amazing eng.
2
2
31
@wincent
Greg Hurrell
5 years
End of rant for now. Just remember: your job is not to catch mistakes (or rather, not *only* to catch mistakes), but to find out the most you can about what the candidate knows and can do. Now, go forth, and make the poor suffering fools scrawl on whiteboards!
4
0
32
@wincent
Greg Hurrell
5 years
The other half is ensuring the candidate feels they were judged fairly, treated with empathy and with respect, and that they walk away with positive feelings about the experience even if they failed. You want them to leave the interview wanting to work at the company.
1
4
31
@wincent
Greg Hurrell
6 years
Non-technical people regard me as a "computer person" with a mystical ability to fix any problem they are having with their computer or phone. The secret of my success: I read the words on the screen and follow their indications.
1
5
32
@wincent
Greg Hurrell
5 years
Window seat, flight today, I can see a guy coding in the aisle seat and continuously flipping back to a Gantt Chart. I'm like, WTF, is this guy a master procrastinator or something? Doing Gantt-Chart-Driven Development? Then I realize he's developing a Gantt Chart application. 🤦‍♂️
3
1
31
@wincent
Greg Hurrell
9 years
An intro to Relay and GraphQL, just posted to the @reactjs blog: http://t.co/Km73mfy6YD
0
28
30
@wincent
Greg Hurrell
6 years
After working at FB for 4.5 years I have done the commute up or down the 101 approximately 2000 times (as per Back of The Napkin™ calculation). In that time, I've read about 120 books and listened to half as many podcasts, which I guess means I am now 7.5% smarter as a result.
4
1
31
@wincent
Greg Hurrell
11 months
Starting to put together a list to algorithm and data structure implementations I've made over the years. I often think, "I've done this before", but it can be hard to actually remember where, so hopefully this wiki page helps me find stuff in the future:
1
4
29
@wincent
Greg Hurrell
8 years
If you're using #relayjs in production, we'd like to hear from you. Please submit a PR adding your project to:
0
18
29
@wincent
Greg Hurrell
7 years
Seriously, I don't need my laptop to be 1.4mm thinner than the previous generation, I just want it to have a working keyboard. Oh, and ports
4
9
29
@wincent
Greg Hurrell
2 years
Thinking of switching my profile pic to this.
Tweet media one
1
0
29
@wincent
Greg Hurrell
5 years
Let's not lose sight of what is really important. We need to know our tools well in order to make the best use of them. But there is a reasonable definition of "well" that is far from the elevated heights necessary to be a language implementor.
5
7
29
@wincent
Greg Hurrell
6 years
The word "own" here is sure to ruffle feathers, but the uncontroversial bit (I hope) is that what the user experiences as "the product" is manifested in the front-end, and so the front-end should *drive* development of the back-end, not the other way around.
@Sander_Spies
Sander Spies
6 years
The frontend should own the backend. Not the other way around.
6
14
92
1
6
29
@wincent
Greg Hurrell
5 years
What I miss about Rails: that it was a no-brainer, batteries-included choice for rapidly prototyping an idea, full stack. And you could go pretty far past mere prototyping too. The current JS ecosystem is way more flexible and sophisticated, but the amount of choice is paralyzing
5
2
28
@wincent
Greg Hurrell
7 years
Sync notes from today's #relayjs team sync:
2
6
28
@wincent
Greg Hurrell
9 months
Merb made Rails better. Yarn made npm better. Neovim made Vim better. JSC and V8 make each other better. Bun will make Node better. Every JS bundler made every other bundler better. Not all competition is good, but the right kind is immensely beneficial.
1
1
26
@wincent
Greg Hurrell
7 years
Neat new GitHub feature.
Tweet media one
0
16
28
@wincent
Greg Hurrell
6 years
Engineers love a Single Source of Truth but fear a Single Point of Failure.
2
7
28
@wincent
Greg Hurrell
10 months
I'm kind of amazed that Bun got so far, so fast. This isn't just "1.0" as a mere marketing exercise; it really does feel complete/solid at this point. It's one thing to have a good/ambitious idea, another to execute on it to completion, and still another to do it so damn fast.
@bunjavascript
Bun
10 months
Introducing Bun v1.0 - a fast, all-in-one toolkit for running, building, and testing JavaScript and TypeScript
187
1K
6K
3
2
27
@wincent
Greg Hurrell
8 years
That time the Facebook GitHub bot asked the @greenkeeperio bot to sign a CLA.
Tweet media one
0
8
27
@wincent
Greg Hurrell
7 years
We just released — a server for building GraphQL features (autocomplete, diagnostics etc) in editors and IDEs.
0
9
27
@wincent
Greg Hurrell
9 years
Check out the new Relay blog post by @yungsters #relayjs
0
5
27
@wincent
Greg Hurrell
3 years
Madrid: not really prepared for this kind of weather...
Tweet media one
2
1
27
@wincent
Greg Hurrell
5 years
"With TypeScript, the code practically writes itself, freeing you up to do other things, like configure webpack." 😂
2
3
27
@wincent
Greg Hurrell
7 years
I have a shortest path algorithm for walking city streets. Appalled when I walk with other nerds and find they chose non-optimal routes, or worse still, don’t even seem to have a conscious algorithm.
7
1
25
@wincent
Greg Hurrell
4 years
Monorepos are good for grouping together closely related NPM packages, but sometimes get used for projects that shouldn't be separate packages in the first place. Misguided enthusiasm for "modularizaton" creates friction and overhead in the name of "re-use" that never happens.
2
2
26
@wincent
Greg Hurrell
11 months
My dotfiles. This is fine.
Tweet media one
4
0
26
@wincent
Greg Hurrell
1 year
Diametric opposite of my own feelings and experience. TypeScript has provided me with documentation, autocompletion, confidence, a whole extra layer of verification, and much more. Programming vanilla JavaScript feels like leaping back by an entire decade by comparison.
@dhh
DHH
1 year
TypeScript sucked out much of the joy I had writing JavaScript. I’m forever grateful that @yukihiro_matz didn’t succumb to the pressure of adding similar type hints to Ruby. May we forever enjoy this beloved language without 🙏
286
240
2K
1
0
25
@wincent
Greg Hurrell
3 years
Today I deployed for the first time 🎉 —Commands were issued. Graphs were watched. Issues were checked. In then end, all was well. 😀 You may wonder what the change was, but it was down in the plumbing and probably not very interesting to hear about😂
1
0
25
@wincent
Greg Hurrell
4 years
Programming languages hidden inside obfuscated syntax in "declarative" configuration files. May as well just make them actual programs at that point, so that they don't need their own bespoke linters, formatters, runners, syntax-highlighting, editor integrations etc.
3
2
24
@wincent
Greg Hurrell
7 years
If Apple goes with an all Touch Bar laptop lineup, my next machine will either be an iMac or bloody PC laptop running Linux.
6
1
24
@wincent
Greg Hurrell
8 years
Latest #relayjs team meeting notes are up: (1) (2) (3)
1
11
23
@wincent
Greg Hurrell
4 years
Tweet media one
2
1
23
@wincent
Greg Hurrell
10 months
This project was always absurdly ambitious (wanting to replace basically everything in the JS tool chain all at once), so failure was the most likely outcome. But you can't blame them for trying. Some good may yet come from the reboot, even if only in the form of new ideas.
@rometools
Rome Tools
10 months
The Rome project is officially discontinued, the repository is archived. Follow @biomejs , the official community project.
0
54
286
3
1
24
@wincent
Greg Hurrell
7 years
Updating a 2-year-old React app or just starting a new one with create-react-app then copying over the components? Picking the latter.
2
1
23
@wincent
Greg Hurrell
7 years
If you're not convinced that "10x" engineers exist, could I persuade you that 1/10th engineers do? 😂
3
5
23
@wincent
Greg Hurrell
5 years
lowers the activation energy required to do things with an AST to the point where you actually do it instead of taking the easy way out and using a regex. This is evidently much more robust! @fkling42 has saved uncounted Bothans by building such a tool.
0
7
24
@wincent
Greg Hurrell
5 years
Questions and expected answers become narrow, closed instead of broad, open. The narrower the question, the less likely it becomes that even a skilled candidate will surpass "the bar". In my experience, this led to a higher than necessary false-negative rate.
2
2
24