HNHacker News
TopNewBestAskShowJobs

bcbrown

1,462 karma · joined February 23, 2012

brenden.brown@gmail.com

Seattle, WA

submissionscomments
bcbrown··on Developers spend most of their time figuring the system out
> We started from the assertion that if a software project loses all of its devs it will not be maintainable anymore by new hires.

I recognize that this is due to my imperfect summary/introduction of the paper, but it doesn't make that assertion. I highly recommend reading it; it's not that difficult or technical.

I've maintained systems where I could talk to the original developers, and I've maintained systems where I couldn't. I know there's a difference in outcomes between the two cases, but I wouldn't say the latter is "not maintainable". Certainly buggier and slower to develop against, though.

bcbrown··on Developers spend most of their time figuring the system out
Relevant to this article is Peter Naur's paper on Programming as Theory building: https://pages.cs.wisc.edu/~remzi/Naur.pdf

He argues that the biggest determinant on whether maintainers on a system they did not build will succeed is whether they will have access to the original developers: "The conclusion seems inescapable that at least with certain kinds of large programs, the continued adaptation, modification, and correction of errors in them, is essentially dependent on a certain kind of knowledge possessed by a certain group of programmers who are closely and continuously connected with them."

bcbrown··on Ask HN: Anyone else suddenly become a 'prepper'?
One thing I've been curious about for a while now is exactly what sort of food goes into a three month emergency supply. I don't generally eat canned/preserved foods, so I can't just buy a three month supply of the food I usually eat, and my impression is that most canned food has best-by dates of a couple years; do you have to renew your emergency supply every few years?
bcbrown··on Why coding interviews aren't all that bad
> That, of course, would be absurd. If anyone is actually interviewing people that way, they're doing a terrible job.

Perhaps you have never experienced that sort of interview, but it doesn't mean it doesn't exist.

I was once asked a question where the solution involved implementing a trie. The naive design involves a 26-element array to hold all the possible next-letter entries, which obviously takes a huge amount of memory. The interviewer expected me to know the trivia answer on how to avoid allocating all that memory, and was clearly disappointed that I didn't know (using a linked list instead of a fixed-size array: https://en.wikipedia.org/wiki/Trie#Implementation_strategies). This was a principal engineer interviewing another principal engineer, FWIW. The company was Qualtrics, a survey/customer satisfaction company, not a bare-metal algorithms-heavy company.

Obviously you've managed to have a successful career without encountering interview questions that hinge on algorithmic trivia, and I'm not doubting your experience. But saying "it's never happened to me so therefore it can't exist" isn't an especially strong argument.

bcbrown··on Why coding interviews aren't all that bad
> Technological fields are blue oceans where only junior people spend significant time near the safe harbors. Experienced people have sailed far away and seen lands you don't know about yet.

I really like this analogy.

bcbrown··on Linux History: How Dot Files Became Hidden Files
This is pure speculation, but perhaps it has to do with executable lookup. How should you execute a binary in the current working directory? `./bin_file` is very convenient.
bcbrown··on My lizard brain is no match for infinite scroll
Try reading the same sort of books you'd stay up late as a kid to read.
bcbrown··on Testing Without Mocks: A Pattern Language (2018)
This is almost exactly my approach to testing. I'm going to have to save this for sharing with teammates.
bcbrown··on The writers who translated Goethe became some of the best writers in English
It has nothing to do with Hegel and Marx in this case, if you read the article. Around the time of the Cultural Revolution, Xi was banished to "a miserably poor mountain village", where the only book available was Goethe's Faust, which he reread until he knew it by heart.
bcbrown··on Ask HN: Not liking my first dev job. Any tips?
Do something small, submit on your timesheet, and then ask for feedback. If they don't like it, it's just a couple hours, so less of a big deal than a couple days or weeks of work.

If you ask your boss for feedback on what's possible to submit on a timesheet, I'm pretty sure you're guaranteed a response.

bcbrown··on Bugs are evolving to eat plastic
The linked text is titled "Biological Decomposition of Solid Wood". It's pretty fascinating, and also covers destructive decomposition mechanisms.
bcbrown··on The growth of command line options, 1979-Present (2020)
> Every option doubles the amount of testing required to exhaustively test the program.

True, but pairwise-independent combinatorial testing provides almost-exhaustive coverage with non-exponential growth in test cases: https://github.com/microsoft/pict

bcbrown··on The STEM Crisis Is a Myth (2013)
All my experience is with the job market in Seattle. A decade ago I took a job at 80k (via craigslist), against competing offers around 95k, because it involved NLP and Hadoop. A year later I got a 40% raise to a Series E startup that ultimately flamed out, working on ML-adjacent big data stuff. I slowly bumped along until, with an average job tenure of ~2 years, until in the past four years I went from ~160k to slightly over 300k. Technologies have been Hadoop/Spark/Kubernetes ecosystems. First two job hops were via LinkedIn, next two were personal referrals.

The two books I think had the most impact were Mining Massive Datasets by Ullman et al, and Data-Intensive Text Processing by Lin & Dyer, but neither is very cutting-edge now.

I've never worked at a FAANG, but I've had a ~40% interview success rate with them.

My advice would be:

- If you're early in your career or want to switch subspecialties for higher potential remuneration, be willing to take a slight pay cut or work for a slightly shady/low-prestige company for the right experience.

- Actively maintain a detailed profile on LinkedIn. It's a shitty site/company, but that's where the recruiters are. Another tip I've used to get interviews is to do a search for recruiters at a company of interest, and just visit all their profiles. They'll get the notification, and if your profile has the right keyword bait, they'll reach out. Probably more effective than cold submitting a resume through their website.

- Be really lucky. There seems to be a huge amount of variability in terms of how well interview questions match your experience/competencies, as well as being lucky in picking sub-specialties in technologies that end up booming. Also I'd say my personal productivity across all my jobs had probably a 3x variation, so be lucky in that wherever you end up working happens to match your personal strengths and weaknesses. Productivity (and promotions/experience to showcase in interviews) is not just a function of the developer, it's a function of the developer plus the working environment.

A final comment I'll make is that I have a STEM BS, but it's not in CS. Instead I gave myself a virtual CS degree by working through textbooks over 3-4 years, covering the entire course curriculum of a CS undergrad. I'm probably lucky in being temperamentally suited to completing that sort of project.

bcbrown··on Ask HN: Do software engineers have leverage?
Coasting is getting your kicks outside of work hours.
bcbrown··on In praise of --dry-run
Are you worried about that intermediate call changing between the dry run and the actual run? That can be avoided by saving the execution plan and allowing the actual run to load the execution plan from the dry run.
bcbrown··on Old-growth forest carbon sinks overestimated
You're not listening to what I'm saying. I'm not talking about carbon sequestration, I'm refuting the argument that "once trees have grown tall enough, they tend to slow down". Here, I pulled a source for you: https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.45...

> Wood production of the entire main trunk and whole crown both increased with size and age up to and including the largest and oldest trees we measured.

This is even supported by your own link:

> In the past, some researchers have suggested that converting old forests to young, fast-growing plantations, whose harvested wood products could store carbon for several decades, would create a net increase in long-term carbon stocks. This approach was based on the idea that old forests are slow growing and thus carbon sequestration slows down as forests age. More recent research generally does not support this idea, as a global survey of old forests found that many continue to sequester carbon and have stocks that far exceed young, managed forests.

bcbrown··on My Love Affair with Dozens (1972) [pdf]
Ah, that makes some sense, thanks.
bcbrown··on Old-growth forest carbon sinks overestimated
> Once trees have grown tall enough, they tend to slow down, so you'd expect them to not grab as much carbon anymore.

I don't think that's accurate (or at least not very precise). Studies have shown that when evaluating the metric of annual addition of tree mass per acre in the rainforests of the Pacific Northwest, old-growth forests add as much or more when compared to "young" forests.

I don't have any specific sources, but if you want to know more the research by Robert Van Pelt should be a good starting point.

bcbrown··on My Love Affair with Dozens (1972) [pdf]
I don't understand the benefit - either system can accurately represent any integer number of pounds, right? And as you said, after a while the "weird" numbers become normalized after a little while. And it seems like you need the same number of different smaller-weight plates either way (45/25/10/5/2.5) vs d(40/20/10/6/3). If you want the plates to be integer multiples of each other, why not go with the already-widely-adopted kilogram weights?

Also, with d(6/3/1.6/0.9), you're still summing up odd numbers.

bcbrown··on Buy Don't Build
I feel similarly. I find the most satisfaction in maintenance of an existing system, as opposed to greenfield development. Finding the optimal way to add new features inside an existing system is deeply satisfying. Improving tooling and infrastructure that leads to quality-of-life improvements across the team is very fulfilling.
bcbrown··on Why should I do production support?
This seems very telling:

> I no longer work at Gojek

bcbrown··on Smoke has caused temperature forecasts to go crazy
Some species are specifically adapted to either be able to survive frequent brush fires, and some even require them for seedlings.

Douglas-fir trees have very thick, insulative bark that prevents the live tissue from dying as readily when there's fire. Sequoia trees have cones that are glued shut by resins that only melt after a hot-enough fire, so they can then land and germinate in burnt-over ground.

https://en.wikipedia.org/wiki/Serotiny

https://en.wikipedia.org/wiki/Pyrophyte

bcbrown··on Ask HN: How many of you are employed, self-taught SWEs?
I played around with programming as a kid, programming things like Mandelbrot sets on my TI calculator. In college I didn't take a single CS class, other than a EE signals class using Matlab. I graduated with a degree in Physics. After college I ended up in a training program at a big tech company, spending 9 months learning to be a test developer. After a couple years, I took some time off, studied the CLRS book and the first Coursera course on databases, and found a job as a developer in a "big data machine learning" company. Over the next couple years, I completed a self-taught CS degree through textbooks, video lectures from big CS schools, and a couple MOOCs.

My tips would be to take self-education slow and steady. There's an infinite amount of stuff to learn out there, and I found one "course/textbook/lecture series" per quarter to be sustainable for me.

I also recommend alternating theory and practice; studying to pass the interviews until you have a job, then emphasizing the theory that is semi-relevant to whatever job you get; and accepting that a lot of what you learn may not seem very useful/relevant until it suddenly is - six months after reading a couple books on Mapreduce program design, I was able to use that knowledge to ace an interview at a company that used that technology.

bcbrown··on Who the Hell Is This Joyce (1928)
Yeah, you're probably right.
bcbrown··on Who the Hell Is This Joyce (1928)
Sir Tristram: Tristran is the hero of Tristan and Iseult, introducing the theme of the two lovers. Also referencing the Earl of Tristram, lord of Howth Castle from the prior paragraph: https://en.wikipedia.org/wiki/Earl_of_Howth, https://en.wikipedia.org/wiki/Tristan

the short sea: the English Channel

North Amorica: North America

penisolate: combination of pen, peninsula, penis, and isolated

topsawyer: Tom Sawyer, an American character written by Mark Twain. Also, for lumbermen, the top sawyer stands above log, while the bottom sawyer stands below the log, introducing the theme of a sibling rivalry.

Oconee: There's a river Oconee that flows through Lauren County, Georgia, and the county seat of Dublin: https://en.wikipedia.org/wiki/Dublin,_Georgia

Laurens County: during the Anglo-Norman conquest, the archbishop of Dublin was Lawrence O'Toole; Dublin would be "Lawrence's County": https://en.wikipedia.org/wiki/Lorcán_Ua_Tuathail. Also, the Earl of Tristram changed his family name to Lawrence (https://en.wikipedia.org/wiki/Earl_of_Howth)

doublin their mumper: doubling their number

thuartpeatrick: Saint Patrick. 'taufen' is German for baptize. Peat symbolizes Ireland. The fire references the miracle of Saint Patrick's Purgatory, where he drew a circle on the ground and the earth opened in flame.

kidscad ... isaac: the Old Testament story where Jacob, in rivalry with his brother Esau, disguises himself with a lambskin, to steal the blessing of their dying father Isaac. "not yet, but very soon after, Jacob, disguised in the kidskin, duped blind old Isaac". This reinforces the theme of sibling rivalry. Also a reference to https://en.wikipedia.org/wiki/Isaac_Butt.

Vanessy ... twone nathandjoe: two/one, nathandjoe is Nathan and Joe, another sibling rivalry. Also, an anagram for Jonathan (Swift): https://en.wikipedia.org/wiki/Cadenus_and_Vanessa

sosie sesthers wroth: transformations of Susie/Susannah, Esther, Ruth, the heroines of Biblical stories.

In vanessy: Inverness was the castle from Macbeth.

Pa's malt, Jhem, Shen: the Biblical story of Noah getting drunk and discovered by his sons, Shem, Japhet, and Ham: https://en.wikipedia.org/wiki/Drunkenness_of_Noah. This introduces the theme of the fading of the father into the sibling rivalry.

Yeah, it's dense stuff, but I find it fascinating. This paragraph is introducing a bunch of themes that are explored in depth throughout the book. It's impossible to get much meaning without a guidebook; I've used A Skeleton Key by Joseph Campbell.

bcbrown··on Happiness is a freshly organized codebase
On codebases that have had this sort of mass file-moving, one tactic I've used is keeping a link to the commit prior to the file-moving. Then I can check out that version, manually browse to the file's prior location, and use git blame. It's manual and tedious, but it works.

Perhaps one mitigation could be to include a message describing something like this in the git commit for the mass-move.

bcbrown··on Launch HN: Art in Res (YC W20) – Buy art directly from artists
Nice launch! Here's some feedback:

At first I found it hard to find the "next" arrow at the bottom. After scrolling through the first page, I gave up trying to find the next arrow and moved on to looking at the filters. Because all the text was greyed out, at first I thought they were unavailable, like perhaps you have to first sign up for an account before you can use the filters.

I would have liked the "size" filters to be multiple-selection; I wanted to see all medium and large art, but couldn't select both.

One suggestion: add the ability for some people to create curations. I know I'm not going to like a majority of the art that's listed, so being able to find a couple people with similar taste and browsing their selections would make it more likely I'd stay more engaged with the platform.

But perhaps I'm just not the target audience, too. I'm an art collector with a couple dozen pieces, in the $X00 to $X000 range. I prefer galleries to online marketplaces, because the curation provides real value to me; I consistently patronize the couple of galleries that match my preferences, and the limited selection in each exhibition reduces decision fatigue while providing reasons to come back consistently over time.

Good luck!

bcbrown··on Launch HN: Art in Res (YC W20) – Buy art directly from artists
The Seattle Art Museum does this. There's an attached/affiliated gallery that sells art, and also provides rentals, as long as you're also a member of SAM. It's 10% of the price to rent for 3 months, renewable once, and if you decide to purchase, half the rental amount goes towards the purchase price. I used it quite a bit when I first began collecting art.
bcbrown··on The silence of the owls
Here's one of my favorite passages from a field guide:

Silent flight enables owls in flight to hear the movements of small rodents, while in turn it keeps the sharp-eared prey in the dark over someone coming for dinner. This tempts one to fancy that mice live in utter ignorance of owls except as invisible agents of disappearances from the family.

bcbrown··on Unix as IDE (2012)
> iTerm2 automatically identifies paths in the stack backtrace, so I can mouse click them and open in TextMate at the correct line.

That sounds super convenient! How do I learn more? A quick search didn't turn up anything relevant. What should I be searching for?

← PreviousPage 4 of 20Next →