HNHacker News
TopNewBestAskShowJobs

munchbunny

6,784 karma · joined April 24, 2012

submissionscomments
munchbunny··on Activision Blizzard Sued Over ‘Frat Boy’ Culture, Harassment
It is, but being an indie game dev is a lot like founding a tech startup. It's extremely risky if you don't already have industry experience to understand how producing games works, and you get industry experience from well established studios.
munchbunny··on Why don't tech companies pay their engineers to stay?
I agree with this. While the flavor of the year frontend stack might change, since 2008 when I started dabbling in frontend, the fundamentals really haven't changed: understanding DOM, understanding the JavaScript execution model, understanding the layout models, understanding the complexities of dealing with data binding over asynchronous events and simultaneous users, and so on. jQuery didn't change any of that (although it drastically improved ergonomics). Angular didn't. React didn't either.

My experience has been that paradigms and tools can move fast and are relatively straightforward to pick up. Deep understanding of the underlying problem domain and the systems underneath the abstractions is harder to pick up, but the concepts move more slowly.

munchbunny··on Activision Blizzard Sued Over ‘Frat Boy’ Culture, Harassment
Gaming companies do have a monopoly on working in gaming though. "Working on games" is the main motivator, not resume building.
munchbunny··on Why don't tech companies pay their engineers to stay?
I'm not fully convinced that this is just about the devs. 2-3 years is also about how long it takes for a nascent project to transition into a mature one, and when that happens the culture and energy of the team tends to shift. The same dev that thrives in one setting might end up out of place in the other.
munchbunny··on Show HN: An app that helps engineers fight back against pointless meetings
Oh, I agree, I think it comes off as passive aggressive and wouldn't use it. But I also still don't see it as a technical solution to a social problem, which is what we see with the way certain tech giants are trying to handle content moderation.

I just ask up front whether we can accomplish the same thing without a meeting, and if we can, I just say no to the meeting. If I'm actually necessary, then it'll get done one way or another without the meeting. If I'm not, then it's most likely not my battle to fight. (Substitute "We" for "I" if I'm the manager or a mentor or tech lead or something.)

munchbunny··on Show HN: An app that helps engineers fight back against pointless meetings
I don't see this as a technical solution to a social problem. I see this as a technical tool to help with a social solution to a social problem. Specifically, finding a way to communicate the opportunity cost of a meeting, which is a social solution to the social problem, because I don't need this app to do it, but it could help.
munchbunny··on Counterfactuals are not causality
I don't think you're contradicting my post.

Yes, it wasn’t my intent to contradict your overall point, just to correct your logic.

My argument was that if the statement "if the light is on it was turned on by me" is true (i.e. the me turning on is a necessary condition) then it follows that if the light is off, I have not turned it on.

I disagree with you here. The counterfactual, or at least the logic theorem, for the statement [light is on] => [I turned the light on] (me turning it on is necessary for it to be on) is [I did not turn the light on] => [the light is not on]

That’s sound, though it’s not a particularly insightful leap of logic.

If you translate this to the author’s point, they’re basically saying that !A => !B doesn’t tell you that A => B. And that’s correct as far as Boolean logic goes. I am unclear on whether we disagree on that point.

munchbunny··on Counterfactuals are not causality
If me turning on the light is a necessary condition for the light being on, then it implies that if I did not turn on the light the light is off.

To be pedantic, it’s not quite that either. The logic theorem states if A => B then !B => !A. The => means that A is sufficient for B, because “false => true” evaluates to “true” but “true => false” evaluates to “false”. If it were “necessary”, those statements would evaluate the opposite way.

This means that if me turning on the lights is sufficient for the light being on, then the light being off is sufficient to deduce that I did not turn it on.

munchbunny··on Modern C++ for C Programmers (2018)
If you have the luxury of making a clean break from old style C++, possibly. But, for example, in my case the only reason to touch C++ is precisely older stuff like native API’s. Because of that, I’m never writing purely modern C++. If I’m writing C++, it’s going to be a mixed bag of stuff with naked pointers, naked pointers to pointers, mallocs, and other fun stuff, meaning the subtle interactions between old and new features are always on my mind.
munchbunny··on Beating the L1 cache with value speculation
I could imagine behaviors like this happening with object pools, though it does still feel a bit contrived.
munchbunny··on “I would buy a Mac today if I was not working at Microsoft” (2004)
Generally speaking you can as long as the team's product and tooling are not Windows specific, so it varies by team, but there are significant parts of the company that do not care about Windows for your development environment.
munchbunny··on Why is the university of California dropping the SAT?
Google used to ask college candidates (I was asked). I don't know if they still do.
munchbunny··on If Richard Feynman applied for a job at Microsoft (2002)
tease out if someone is a creative thinker

While I get your point and have been in a similar position myself as the interviewer, the longer I've been working the more I think "creative" is just as much of an overloaded and under-defined term as "smart". These days I just look for the ability to think through complex things methodically, and the creative spark will show itself later, and in place of innate creativity, the ability to churn through lots of ideas when it's needed is a serviceable substitute.

And if by "creative" the interviewers (not necessarily you) mean the ability to come up with novel but compelling ideas, that's something that happens on timescales longer than an interview and certainly not under interview pressure. The people I know who are best at generating novel, compelling ideas do it on the timescales of weeks to months.

munchbunny··on MS Windows Defender and DeCSS
Not just the binaries. The source code too.

A common practice is to exclude both the whole repo and the compiler from Defender.

munchbunny··on Your idea is brilliant, your idea is worthless (2016)
> The execution is secondary, because a lot of execution is mediocre, and you just have to be good enough.

While that's true, you still have to execute. And when you see mediocre execution, that's still someone who put in the work.

In the context of games, which are more like creative works fighting for mindshare, an idea is analogous to a business opportunity, which is to say that the idea/opportunity will likely look different once it's actually executed on, and that journey is the valuable part even if it fails.

That's not to discredit someone who is good at identifying opportunities. That's a wonderful skill. But I think the author's take which I agree with is that someone who tries to execute, even with a flawed idea, makes more progress than someone who has an idea/strategy/proposal.

Also I think it's important to point out that this blog post is in the context of (board)game design. Everyone has an idea and the vast majority are under-baked, and the process of designing it and playtesting it is how you calibrate on what other people actually like or find fun. I think that's analogous to, say, tech startups, but game ideas are even cheaper than startup ideas.

munchbunny··on I had to give a wrong answer to get the job (2017)
> The whole point of big-O analysis is to be able to reason about how fast a program will be given input size.

It's an important technicality that matters when you are doing performance tuning of code on modern CPU's. Big-O is asymptotic but omits the constant multiplier, so if you're comparing, for example, deletion from a naive binary search tree vs. an unsorted array, it's not necessarily obvious that a tree search on a naive pointer based tree (O(log n)) is faster than a find, swap, and delete (O(n)) until n is sufficiently large.

Another example is iterating through the pixels of a very large bitmap on the order of 10m+ pixels. While iterating through all pixels should be linear to the number of pixels (O(width * height)), assuming it's a row-oriented bitmap, which most are, scanning row by row can be substantially faster than scanning column by column because of caching behaviors.

Point being, big-O and actual performance are not always the same thing because the constant factor can sometimes dominate depending on what you're trying to do.

munchbunny··on Is This Prime?
It isn't standard in the US, although at some point I memorized them to prepare for buzzer races in math competitions. It was in no way reflective of anything useful in real life, but it was fun.

There were a few sets of common numbers, formulas, and mental calculation tricks that were useful to just always have in the back of your head. Perfect squares and cubes under 1000, powers of 2 and 3, prime numbers below 100, interior angles of regular polygons up to 10 sides, binomial coefficients, Pythagorean triples, factorials up to 9!, common roots out to 3-4 decimal places, and a few others that I've no longer needed for almost 20 years at this point.

munchbunny··on Facebook users said no to tracking, and now advertisers are panicking
This is key: "on all of our remarketing campaigns"

The discrepancy is that a 75% reduction in users opting into Facebook tracking is leading to only a 30% reduction in iOS share on the highest ROI ad campaigns. 30% is big but not 75% big.

Another possible explanation is that opting out of tracking in iOS doesn't make you invisible. It just makes it hard for Facebook to correlate your off-app/non-Facebook.com web activity, but there are ways around that. So what 30% means hinges a lot on how the 1st touch -> 2nd touch leap is done, and the data for that leap doesn't always come from Facebook.

munchbunny··on Valve Steam Deck
Having a screen resolution of only 1280x800 helps a lot. Steam Deck specs say up to 1.6 TFlops from the GPU.

That's half as many pixels as the 1080p screens that people in 2014 were playing on. Keeping "rendering quality" fixed, pixels and flops aren't necessarily linearly correlated, but half the pixels does mean approximately half the flops to hit the same quality targets, ignoring the new upscaling tech that will almost certainly be used to close the gap. So 1.6 TFlops today vs. approximately 2.5-equivalent 2014 TFlops is probably not that dramatic of a gap.

And running on a battery. That's actually really damn impressive.

munchbunny··on The unreasonable effectiveness of just showing up everyday
I found that I tend to get backlash if I start with too ambitious of a goal. Instead, I'll aim for something stupidly easy and just focus on getting started at all. I've found that works much better.

At first I aimed for 1 hour of exercise a day. That failed within a week. So then I aimed for 10 minutes a day, which barely felt like exercise, but it got me to the starting line consistently! The trick for me was treating anything past 10 minutes as beating expectations, rather than treating anything under 1 hour as falling short. In practice it means I'm able to get about 20 minutes per day consistently, which is still much better than 1 hour never.

The key for me was making it so I could consistently feel good about a reasonable goal instead of constantly feeling like I was falling short of my own expectations.

Now if only I could apply that to flossing.

munchbunny··on The unreasonable effectiveness of just showing up everyday
I don't think it's just about successful startups or successful projects.

Personal example: growing up I practiced the piano for about a decade, 30 minutes at a time, usually 4-ish days each week. I got more disciplined about it as I got older. After 10 years, I went from not being able to play at all to being able to play genuinely impressive stuff. I'm not especially talented, but the consistent application of 30 minutes at a time really did add up to something wonderful.

No survivorship bias needed here. Anyone with access to a keyboard or piano could have done the same thing. Yes, you would've needed to want to learn to play at least a little, and yes, you would've needed to practice at least a little intentionally, but given those things, just showing up consistently over a long period of time can do wonders.

munchbunny··on C++ Is the New Python
As someone who learned C++ when it was C++03 and followed the language as it went through 0x all the way to 20, I have no idea how you would be able to avoid crippling a newcomer with the sheer volume of permutations of symbols and language behaviors that a C++ developer might regularly encounter. As a consequence of the ecosystem of older libraries, I've never had the pleasure of fully stepping away from old C++-isms. There's always a naked pointer or a malloc floating around somewhere in code I have to be able to read.

I still occasionally write C++ when I need to, but it's been a long time since I actually enjoyed doing it.

munchbunny··on How to Review Code as a Junior Developer
> Even as someone thats only just above a junior engineer, I feel like I've been made to feel stupid or that I was wasting other peoples time or such for "just asking questions" so many times.

Assuming you’re not a help vampire (I’ve worked with junior engineers like that, and it’s frustrating because they eat up time unnecessarily), then to the extent that you can, I would recommend finding a new team that doesn’t do that. It’s toxic to your growth and career development. Junior engineers might be junior, but “junior” is not the same as “incompetent”, and teams that don’t appreciate the difference are probably not good places to spend your early career.

munchbunny··on How to Review Code as a Junior Developer
I think it’s a useful shorthand to represent a set of traits and capabilities that good developers acquire over time. Just because there are junior developers punching above their weight or senior developers who don’t deserve the job title doesn’t mean the label isn’t useful.

I do agree though that regardless of your level or the level of the person you’re talking to, you should be respectful, humble, and generous.

But the junior/senior labels definitely exist on a spectrum. I have definitely moved from a more junior place on it towards a more senior place on it over time, even if exactly where I stand on it is for my colleagues to judge.

munchbunny··on Lee Ross and the “Fundamental Attribution Error”
I think it's a credit to Lee Ross and the idea that I remember the concept but not the name, or the originator of the idea.

I think programming as a discipline is chock full of examples of attribution error. When I think back to the less experienced version of myself, or even the current version of myself on a bad day/intellectually lazy moment, or just reading programming forums for more than a few minutes, I can easily come up with examples.

And I can find plenty of examples where I commit this exact error: many, many seemingly stupid technical decisions that can be explained by the context in which they were made, and more importantly, if I were in the exact situation that spawned the decision, it's not clear that I would have chosen differently either. It's only with the benefit of hindsight that I can disagree with the decision, and the really hard, important, career-spanning question is "how would I have arrived at the right decision in the same context?"

The only remotely good answer I've found to that question is reading extensively, especially outside of my comfort zone, which of course I don't do enough of.

munchbunny··on Risk Assessment of GitHub Copilot
> It also raises the ethical question of whether these creators are responsible for the misuse of their products. Is it enough for them to say "This is how this product should be used. You are on your own if you use it outside these settings."?

I don't think you have to answer the ethical question to address the level of readiness that Copilot or self-driving cars are at. It definitely raises the question, but you don't have to answer it to talk about suitability for use cases.

As you say, it might address the requirements of some specific people. My argument is that Copilot is not good enough yet for the bulk of imagined use cases, whether or not you call that MVP, and I think the post makes a good argument about why.

munchbunny··on Risk Assessment of GitHub Copilot
> I don't think that is the goal just like the goal of the current generation of self-driving cars isn't for you to be able to take a nap in the driver's seat.

I think the issue is that the MVP from a customer perspective is, effectively, being able to take a nap in the driver's seat. From a research perspective there are obviously intermediate milestones, but that doesn't make it fit for what people would want to use it for. Same goes for Copilot.

munchbunny··on JavaScript Object Signing and Encryption is a bad standard (2017)
I know responding to my own comment is taboo, but I wanted to add some more nuance to the statement.

I think it's uncontroversial to say that RSA in practice is a fraught proposition. There are a lot of foot-guns that even the mainstream libraries don't protect you from, so just using RSA means you need to spend a lot of time making sure you're not using it the wrong way, and "how to use it right" isn't elegantly contained in a Stack Overflow answer anywhere. And because RSA comes with so many knobs to turn, it ends up being an extensive analysis task for the poor developer whose job is to write the code. I've been that developer.

However, if the choice is between (1) using RSA, with caveats, because the tech stack is already mostly RSA, and (2) updating the whole tech stack to ECC based algorithms, we are not yet at the point where option #2 is always the right answer.

munchbunny··on JavaScript Object Signing and Encryption is a bad standard (2017)
In my experience the recommendation to move away from RSA is only true for building entirely new systems. RSA isn't yet recommended against in the sense that using RSA (with sufficient key length, and avoiding the known footguns) to talk with systems that are too old to understand the newer curves is not considered insecure.
munchbunny··on A Look into CBL-Mariner, Microsoft’s Internal Linux Distribution
Also Docker and installing applications that have lots of small files.

In general NTFS doesn’t do well with lots of small files because opening files is expensive compared to ext4 (dramatic oversimplification). This shows up in random places where very little actual file reading/writing is happening for each file, like yarn, docker, installing video games, etc.

← PreviousPage 9 of 34Next →