HNHacker News
TopNewBestAskShowJobs

holman

5,782 karma · joined November 14, 2009

cofounder: workon.co. investing: tifo.com. formerly: github, gitlab.

http://twitter.com/holman + http://zachholman.com

submissionscomments
holman··on Firing People
I'm really not even sure a16z has corporate apartments. It's just poking a little fun in the middle of a dreary subject. I don't even own a single robe, much less twelve, although I'd be into it.
holman··on Firing People
It didn't have anything to do with my departure, nor is it my story to tell.
holman··on How to Deploy Software
Thanks! Was thinking of open sourcing this soon as a one-off. I'll see what I can do. :)
holman··on How to Deploy Software
I can't speak to them now, but it happened a number of times while I was at GitHub. We'd have a number of things staff-shipped for weeks or months (occasionally a year!) and it was just... there... and nothing happened much to it.

As you might expect, it wasn't really the fault of feature flags but rather indicative of a process problem. We'd either have to prod the team or person in charge of it, verify that work was actively pushing things forward to ship, and so on.

At various times we'd have, for lack of a better phrase, the "No (wo)man", who would come in and say "no" to a lot of things. One of the best ways to achieve this is to see that nothing has happened on a feature flag for awhile and then send a pull request to remove the feature flag (and the feature entirely). This got people out of the woodwork who said waiiittttt a minute let me just finish that up, or if no one vehemently disagreed with the pull then you could actually just remove it entirely. But it did take some explicit reflection on whether the flags were defensible to remain flags.

holman··on How to Deploy Software
Yeah; I tried to stay away from really low-level aspects (just because they're hard to generalize across languages), and also just because the damn thing was so long already, ha. :)

As far as database migrations are concerned, GitHub (and others, of course) takes the perspective of migrating before the code that uses those migrations go out. In other words, as @herge says in a sibling comment, the code that gets pushed needs to support two branches of code and two branches of data simultaneously. It's certainly some extra work (and can be pretty gnarly depending on the scope of the migration), but once you get to a certain point it's kind of the only way to do no-downtime migrations.

There's many possibilities to help with the actual migration process, depending on what database you're using. With MySQL, for example, you can do something like the process in lhm: https://github.com/soundcloud/lhm

Zero-downtime deploys aren't super difficult in Rubyland anymore (many have written how they achieve it in Unicorn, for example), although I'm not as familiar with how other folk do it across other languages and platforms these days.

holman··on Fixing the Inequity of Startup Equity
> If you have 5% of a company locked up by people who no longer work there, you have to find a way to reward current employees

We need to get past this line of thinking. Why do companies not say the same thing for the salaries they've paid former employees? "Boy, I wish we could get back the $30,000 we paid Bob between July 2011 and October 2011."

We don't say that because the employee earned that and once they've earned it, it's out of your account and into theirs. Stock, though a different mechanism, needs to be thought of the same way. If someone has worked there long enough to vest that stock, they should have the option available to own that stock. Just because they made the company successful enough to not be able to afford to exercise their options in time doesn't mean we should take that possibility away from them.

Whether or not it was intended years ago when it became a norm, the 90 day exercise window, at this point, is a surrogate mechanism for companies to steal compensation from employees after the fact. That's horrible.

holman··on Comparing Confusing Terms in GitHub, Bitbucket, and GitLab
For what it's worth, GitHub came up with the awkwardly-sounding "Pull Request" nomenclature because the initial cut of Pull Requests was based on `git-request-pull(1)` (https://git-scm.com/docs/git-request-pull). After a few years, the pull request evolved into what you see today.

We always kind of hated the term "pull request". It's pretty confusing for a beginner, and for a number of years led to the idea that GitHub didn't have code review at all in the product. (For that reason, I always thought we should just call them "Code Reviews", or just "Reviews".) There were a number of attempts to change it, but they all died.

It wasn't until last year when I got a beer with an ex-Atlassian employee when we chatted about this and realized we both had hated the term and had a number of attempts to change the nomenclature, but they fizzled out. Funny how things work out.

holman··on Gilt Groupe Is a Cautionary Tale for Startup Employees Banking on Stock Options
> Some (very few) are converting ISOs to NSOs if you leave, allowing former employees to wait until the security is liquid before buying it

I care pretty deeply about this, and I want to start pushing more startups in this direction. I think the tide started turning in the last six months or so and more companies are allowing for a >90 day exercise window on NSOs, but it's still a pretty small club. I've been keeping a list in a repo, since I think it's important to help promote companies that are doing this for their employees: https://github.com/holman/extended-exercise-windows

holman··on Dear “Dear GitHub”
I wrote Issues, so I've likely thought through these problems more than anyone else.

I really disagree with the general sentiment of this post, and very much agree with the original "Dear GitHub" letter. The product needs a lot of work, and that I couldn't address these problems while I was there really, deeply depresses me.

Issues hasn't been touched since I shipped the third large iteration a year and a half ago. It was never intended to be a finished product at that point; it was intended to evolve quite a bit from that initial vision. There's a lot of pain that open source developers and private source developers face today, and I really hope we all can start seeing that pain in our community eased soon.

holman··on The Product Engineer
It depends on the company, but I'm a big fan of pairing with a developer on something they're working on for an hour or so. The dynamics of the interview completely changes from "I need to figure out hidden knowledge that the interviewer knows already" to "I need to work with this person to find out a solution together", which I think is quite a bit less stressful. You're also working on real problems that — though they might not be a glamorous interview question — will be much closer to what "real" work at the company will be.

Put another way: I've probably done a dozen or two product interviews this year, and have still never seen a full stack web request. I mean, I haven't seen a controller action, or a view, or even a model for that matter. And that's the area that's my entire job, really: I build screens and hook things together and make things work for users. As much as feasible, I'd like to be able to demonstrate those types of talents in the interview process.

holman··on The Product Engineer
Was hoping this would be about hiring, because I've been thinking a lot recently about how shitty hiring is for these people.

I've been interviewed for a lot of these ostensibly "product" positions this year. A lot of it has to do with the company not even understanding what they're hiring for. Initial screeners would be all about product, product, product, but then they'd give me a new grad programming trivia test about rearranging chars in a string. Such a weird mismatch of aspirations vs. reality on the interviewer's part, and, most importantly, I've never come away from these interviews feeling the interviewer has a solid understanding of what I might bring to the table.

I'd push more for it before leaving the interview, but by that point the interview itself has soured me on the company overall.

I think this is exacerbated in the startup world in particular, because even "straight technological" roles in a sub-10 person team will inevitably include a ton of product decisions throughout the course of fast-paced development, and I worry too many startups focus on these type of algorithmic hiring tests being some sort of qualifier for these people when it's not.

holman··on Dentists reveal new tooth decay treatment
My dad, grandfather, and sister-in-law are all dentists. This was something we'd chat about every now and then, and the answer inevitably came down to "whatever is better for patients is good for me".

Sounds a bit like a platitude, but there are so many different treatments and procedures modern dentists do that I think it the profession would generally be fine for quite some time. In a large sense, there'd probably be a transition towards more emphasis on repair and fixes of traumatic injury rather than preventative procedures, but it would likely take awhile before things dramatically change for the profession.

holman··on We’re Bad at Interviewing Developers – Interview with Kerri Miller
I wish you could see how a potential employee acted in a Slack room and in pull requests for a week or two before hiring them. (It's doable, but fairly rare in the industry right now.)

As we move more and more towards working in a distributed fashion, using tools that don't require us to even meet someone in person for months at a time, it's a little strange that there's so much emphasis placed on in-person interviews (which is inherently a fairly stressful process). How someone communicates in person is fine, but that's sometimes only part of the picture.

On top of that, some people are much more comfortable communicating over the internet, and weighing in-person interviews so heavily ends up discounting their real talents. Ideally you find people have skills with both asynchronous and synchronous communication... but you need to be keeping an eye out for both qualities for that.

holman··on How a Ban on Plastic Bags Can Go Wrong
I don't have strong feelings about a plastic bag ban, but the one thing that sort of surprised me after living in San Francisco the last few years is that I take far fewer plastic bags when I have a small number of items. I'll just opt to carry the few items in my hands instead. It's gotten to the point where every time I travel somewhere without a bag ban it just feels weird to get them for free.

Like I said, not something I have strong feelings about either way, but thought it was interesting that it did change my usage habits.

holman··on Safari is more energy-efficient than Chrome and Firefox on OS X
cmd+number works in El Capitan.
holman··on Benchmarking GitHub Enterprise
FI was JRuby; as part of the naming switchover and product overhaul to the first release of GitHub Enterprise, we switched it over to MRI in late 2011.
holman··on Read-only deploy keys
I like to pride myself on never having used a clumsy phrase like that. That said, machine users were en vogue at GitHub, although maybe that's changing with more consideration being given to deploy keys nowadays.
holman··on Rearchitecting GitHub Pages
I never heard anyone gripe about it... not even once. The cost is pretty negligible, and there's a lot of halo benefit (i.e., you just get more people involved on GitHub the platform itself).

The fact that a lot of non-technical employees in marketing and other fields are using it for corporate blogs is actually a nice bit of pressure on the organization to make Pages and web editing even simpler for those users. It becomes harder to lean on "oh it's a developer site so they'll figure it out".

Mostly, though, I think it's just a matter that we wanted it for ourselves. It's pretty awesome from an industry bystander's perspective to have something free, simple, and static, so we can all benefit from more stable docs, blogs, and so on. Maybe that'll change in the future and something Totally Different will change the industry, but for right now I think it's pretty rad, and totally worth the investment.

holman··on Show HN: Discover your ranking on GitHub
I've been thinking about this a lot recently. You wouldn't believe the number of people (VCs, marketers, recruiters, etc.) who strongly have pushed for a similar system implemented in GitHub over the years. The entire concept of open source on GitHub would have basically been a front to become a LinkedIn of developers.

I don't mind sites like the one here coming along and attempting to do this (it has some value), but I'm really proud that GitHub didn't head in this direction, even though there was a fair amount of pressure towards it.

holman··on Show HN: Git version control hosting service
Just messing with you. :) Your assumption is wrong.
holman··on Show HN: Git version control hosting service
> GitHub makes nearly ALL of their revenue from GitHub Enterprise, there is not enough money in their standard monthly plans.

Whoa, didn't expect that at all. Super interesting. Do you have a source for that?

holman··on This Uncanny Valley of Voice Recognition
I'll give it a shot:

> Buzz Lightyear walks into a bar called the "Uncanny Valley" and asks the bartender for a vodka soda. The bartender gives him a vasectomy. Voice recognition is important!

holman··on Move Fast and Break Nothing
Actually caught this last night and fixed it literally everywhere but the important place: this image. :) Fixed! Thanks for pointing it out.
holman··on Move Fast and Break Nothing
It doesn't. The author goes on a long, ambiguous tirade about Skittles™ and how they aren't as aerodynamic as once initially thought.

You did good by refusing to read the rest of the post and informing everyone of that fact on Hacker News. Cheers!

holman··on Upgrading GitHub to Rails 3 with Zero Downtime
Yup; one monolithic app. Tests run in a tad over two minutes.
holman··on Upgrading GitHub to Rails 3 with Zero Downtime
We already have the app booting on 3.2; the goal is to try to get to 4.0 and track master fairly quickly. No one's eager to have to go through this whole process again in a year. ;)
holman··on Upgrading GitHub to Rails 3 with Zero Downtime
Lots of conditionals, yeah. This isn't really a bad thing, to be honest; it's far better than maintaining two separate branches. We already use similar conditionals when dealing with feature flags, so it's not really something that feels out of the ordinary in our app at all.

What's more, we found that if there was a file that had a ton of complicated, interwoven logic between the two versions of Rails, it was a clear sign we should see if we could instead backport a Rails 3 or 4 component so that we could nix the entire Rails 2.x-style functionality.

holman··on How We Work on Queries at GitHub
We do!

https://github.com/github https://github.com/libgit2 https://github.com/boxen

When it's easy to extract, well-documented, and has a clear team of maintainers, we try to open source. Sometimes it's difficult to nail one or all of those bullet points, though.

holman··on The New GitHub Issues
Related: `no:label` will show you everything that's not labeled in your repository, too.
holman··on Locking GitHub Conversations
@steveklabnik (since hn won't let us nest further): why not just hit the subscribe button on the right?
← PreviousPage 4 of 11Next →