HNHacker News
TopNewBestAskShowJobs

zb

1,803 karma · joined August 27, 2007

submissionscomments
zb··on The History of the Design of Unix’s Find Command (1995)
find . -name '*.orig' -delete
zb··on Japan’s Parliament Approves Overseas Combat Role for Military
While some people believe that, it's worth noting that the participants claimed that the pacifist clause was inserted by MacArthur on the request of the Japanese Prime Minister.

https://en.m.wikipedia.org/wiki/Article_9_of_the_Japanese_Co...

zb··on 14-Year-Old Boy Arrested for Bringing Homemade Clock to School
How much do teachers in her school system who have 25 years experience make?

In my state, which has comparable starting salaries, $56k assuming they obtained some professional certification along the way. Otherwise, $50k. (For comparison, an engineer straight out of college could expect to make maybe $75k.)

I find the idea that we should destroy the entire school system to ensure that a small handful of undeserving people are not able to serve out their career on a still-very-modest salary quite mad.

zb··on The Failures of “Intro to TDD”
I can't detect any difference between his proposed approach and Harlan Mills's Top Down System Development. Basically, he's going to take this 'traditional' team and introduce them to the hot new development methodology of 1970, all while showing no awareness that he has done so. What's that saying about people who don't understand history?

At least they won't have to change the acronym.

zb··on Show HN: 'git inject' – amend commits other than HEAD
If you find that this is a regular part of your workflow, then you should consider trying Stacked Git:

http://procode.org/stgit/

(That page is actually out of date; it's actually somewhat better maintained than it appears there.) It seems to have fallen out of favour somewhat as Git's own native porcelain has improved over the years, but I know there are still some kernel developers using (and maintaining) it.

Personally, I find it allows me to do things trivially and routinely that others find difficult or impossible. I still prefer it even though I know how to accomplish the same thing using native Git commands (like rebase -i).

One of the things I like most is the lack of global (as opposed to per-branch) state of the kind that Git rebase relies on. So if I want to go switch to another branch in the middle of a rebase, I can. If I have unapplied patches that I haven't deleted, they'll still be there in a month or a year. I never have to worry about whether I am in Git's weird rebase mode or not, or decide whether I have to use "git commit --amend" or "git rebase --continue" (it depends on whether you specifically asked to edit the patch or there was an error applying it, and if you forget and guess badly Git does the Wrong Thing) because the commands are always the same, and the list of applied and unapplied patches is always right there to see.

zb··on Toyotas Unintended Acceleration and the Big Bowl of “Spaghetti” Code (2013)
Locally-scoped (i.e. static) variables are, by definition, not global variables. The article is pretty clear that the 10,0000 figure refers to truly global variables, and I would hope that the original expert witness has not misled us by referring to static variables as 'global'. (Of course, without being able to see the source, there's no way to make our own judgement.)

Sadly, you would be surprised at the number of embedded systems that store and pass around their state using global variables, despite the obvious stupidity of that approach.

(For the record, I am not a web dev and I did indeed spend several years working in the field of embedded development.)

zb··on Ask HN: Python Enthusiast – How to get my foot through the door?
This may or may not be of interest to you personally, but this is probably a good time to remind everyone that:

1) OpenStack is written almost 100% in Python

and

2) Nobody involved heavily in OpenStack ever has to go looking for work - recruiters will come to you, whether you want them to or not.

As a bonus, it's an exciting project and a great community: http://www.openstack.org/community/

zb··on Founder recommendation after working at a YC startup can help get you into YC
Oh, no need for scolding. It wasn't like you submitted this to HN yourself, and you're entitled to write whatever linkbait you like on your own blog. FWIW I found it mildly amusing.
zb··on Founder recommendation after working at a YC startup can help get you into YC
Technically this was more of a parody rather than satire. Satire would imply that you were making a deeper statement about Buzzfeed. In fact you were just re-using the form in a joke-y way as a linkbait headline for something unrelated.

Hopefully the mods will enforce the HN guidelines and rename this submission with a non-linkbaity title :)

zb··on Kim Dotcom Megaupload case falters over sharing Canadian data
The article states quite clearly (in the fourth paragraph) that the amount of data in question is 25TB. It later mentions that the data was spread across 32 servers and that lawyers compared it to the amount of data in 100 laptops - which would fix the lawyers' estimate for the average amount of data in a laptop at around 250GB. I haven't bought a laptop recently, but that sounds like an entirely reasonable guesstimate to me. The comparison seems like an appropriate way of conveying the order of magnitude of the amount of data that needs to be searched to a non-technical audience.

This thread adds nothing interesting to the conversation. Please just stop.

zb··on NTP's Fate Hinges on 'Father Time'
…commercial software such as the Coverity system for security checking on code, must come out of the $7,000 monthly stipend or be charged to his consulting business.

Coverity is free for Open Source projects, why is he paying for it at all?

zb··on The joyless world of data-driven startups
It's possible to make that exact argument in reverse. Those goals are, if not quite universal human values, products of a rich and extremely broad-based cultural tradition.

In contrast, being data-driven means selecting goals that are easy to measure without any attempt to justify them as intrinsically more valuable than other, more difficult to measure goals.

The reality is that goal-selection is always at least somewhat arbitrary, and words like 'data' and 'science' can be and often are used as a cudgel anyone who might support different (arbitrary) goals.

zb··on Why 40-Year Old Tech Is Still Running America's Air Traffic Control
Note that this is the FAA's second attempt to replace the system. The first one, in the 1980s, went even worse - one participant called it "the greatest failure in the history of organised work": http://www.baselinemag.com/c/a/Projects-Processes/The-Ugly-H...
zb··on Croatia just canceled the debts of its poorest citizens
A similar act occurred as part of what may now be regarded as the foundation of Western democracy:

https://en.m.wikipedia.org/wiki/Seisachtheia

was a regular feature of the ancient world:

https://en.m.wikipedia.org/wiki/Jubilee_(Biblical)

and occurs on a smaller scale in our own society on a daily basis:

https://en.m.wikipedia.org/wiki/Bankruptcy

So if we ask a so-called expert on the subject, what will he say?

Among economists, the scheme is regarded as unprecedented and exceptional. "I can't think of anything comparable," Dean Baker, co-director of the Washington-based Center for Economic and Policy Research, told The Washington Post.

Of course he's against it anyway.

zb··on 2015 Gates Annual Letter
> If US can grow 159 bushels of corn per acre, and African countries are currently at 29, why is the 15 year goal for African countries only 48 bushels per acre instead of somewhere close to the US?

And getting yields to that point has come at the cost of an environmental and social catastrophe in the US. It's also uneconomically expensive - though it's easy not to notice because the government pays junk food companies to buy the excess and feed it to us at ultra-low prices.

Why on earth would you want to inflict that on Africa too?

zb··on On the Origin of Circuits (2007)
There's an interesting extended discussion about this experiment in Richard Gabriel's essay "Design Beyond Human Abilities" as well:

http://dreamsongs.com/Files/DesignBeyondHumanAbilitiesSimp.p...

zb··on Computer intrusion inflicts massive damage on German steel factory
They do, it's called Windows Embedded, and OEMs customise it to include only the components they need.
zb··on A Poor Imitation of Alan Turing
Enigma is an outstanding book, but once you've read it the film is pretty disappointing in the way it falls back on Hollywood tropes. However, a 'gratuitous' spy plot is not one of them; Enigma is not a documentary, the plot is the story.
zb··on The audacious rescue plan that might have saved space shuttle Columbia
IIRC it was done deliberately because the astronauts demanded that the shuttle not be able to fly without them. I always assumed this was a job protection scheme, though more charitably I guess it could have been to make sure that NASA was always equally focused on getting the astronauts home as on getting their expensive hardware back.
zb··on Show HN: Addict – a Python dict whos values can be get and set using attributes
The only permitted keys are str, and the rest are silently ignored. This is another bug in his implementation (only the first line should be indented, but both are).

Your code is fine - you're not storing everything twice, but he is (in _set_both()).

zb··on Show HN: Addict – a Python dict whos values can be get and set using attributes
I haven't tried it but here's some issues from a superficial code review:

This uses twice as much memory as it needs to (and opens the door to potential inconsistency) by storing everything redundantly in both the attributes dictionary and the underlying dict.

Setting an item with a non-string key (e.g. An int or even unicode) is silently ignored.

    myDict[u'foo'] = 'bar'  # <- this ought to do something
Setting or deleting an item with the same name as an existing attribute (e.g. the name of a method) will replace or delete that attribute.

    myDict['get'] = 'foo'  # <- should not replace the method myDict.get
This can't be initialised with kwargs or an iterator like an ordinary dict can.
zb··on Show HN: Addict – a Python dict whos values can be get and set using attributes
Almost, he is also converting ordinary dicts that get added as items to his own Dict class to enable you to keep using this syntax further down the tree, so you'd need a small wrapper around __setitem__.

But yes, the idea of storing everything twice (once as an item and once as an attribute) just so you can unconditionally add defaults in __getattr__ is… bizarre and will break things horribly as soon as you accidentally do something like:

    myDict['get'] = 'foo'
zb··on Streem – a new programming language from Matz
Because if there's a \ you want to skip over the next character, even if it's a ", but if it's not escaped then you want " to be the end of the string.
zb··on Immigration is about talent, not costs
The problem with H1-B is that it's not even a speed bump for those it is supposedly trying to stop, while it's a total road block for everyone else.

If all you care about is rotating in another 19000 warm, cheap bodies every year then you have no worries: just submit 40000 applications every year and roll with whatever comes out of the lottery.

If, on the other hand, you are like the author and want to hire one particular person with a specific skill set, you have a roughly 50% chance of being able to do that in between 6 and 18 months from any given point in time. (Note that there's no way to do it in less than 6 months.)

The system works well only for the very companies that are exploiting it. I know that the US missed out on 2.5 years of tax revenue that it could have had from me had I not moved to another country that made getting a work visa trivial because of this issue. That worked out great for me, but I still struggle to see how it made America better off.

zb··on A New Software Engineering
> I don't think waterfall is actually used in other disciplines, perhaps we were just cargo culting back then?

I think this is half right. There was quite a bit of cargo-culting going on. But the fundamental error was to try to apply the project-management process for the construction of other kinds of artefacts to the design of software. I wrote about this very topic here:

http://www.zerobanana.com/essays/reclaiming-software-enginee...

You're correct that no other engineering discipline attempts to use waterfall-style project management of its design process. They don't really use it in the construction process either (in practice, design tends to continue alongside construction), though it probably has at least been attempted.

It was no surprise to see that the authors of this piece are in fact among the originators of the Rational Unified Process. They claim to have corrected their mistake; in fact they are still pushing the same wrongheaded ideas as they were in the 1980s.

zb··on I quit: Miseries of an Uber driver
He should be using pre-tax numbers for everything - not only is he not deducting any expenses, he's comparing the final after-tax number with the before-tax minimum wage.

Still, assuming his research is accurate at best it comes out at like ~$12 per hour before tax, unless you play russian roulette on the insurance. This of course assumes that it's your full-time job, otherwise the car payments will further reduce the hourly rate.

zb··on I quit: Miseries of an Uber driver
The one time I ordered an Uber, we spent 25 minutes waiting while the driver drove around a similarly (but still quite distinctly) named street on the other side of town. After several phone calls, she ended up using her own GPS navigator to find us.

So I can corroborate what this article is saying: Uber has absolutely no clue where you are even given both an address and map co-ordinates. Presumably they rely on a terrible reverse geocoding implementation and discard the other information. That's surprising, because years ago I used to work on firmware for navigation devices and I don't recall reverse geocoding ever causing major issues (there were always minor inaccuracies when you round-tripped the data, but you never ended up on the wrong side of town) - I thought it was a solved problem.

For the record, neither Google Maps nor Apple Maps have ever had trouble distinguishing between those two locations (though humans sometimes do), so they broke it all by themselves.

zb··on The Unreasonable Effectiveness of C (2013)
C++ compilation is much slower than C, and linking is off the charts slower. I don't think that's even controversial?
zb··on Kim Dotcom: “I'm broke” (german article)
He was a convicted fraudster long before the Megaupload thing ever happened. Just saying.
zb··on A Suicide Epidemic in Utah, and One Neuroscientist Thinks He Knows Why
I believe a vingtile is like a quartile, except that there are 20 of them instead of 4 (vingt = 20 in French). So I'm guessing each bucket contains an equal number of counties, rather than being an equal size.
← PreviousPage 5 of 15Next →