Hacker News new | past | comments | ask | show | jobs | submit | braythwayt's comments login

Never mind Europe. As a Canadian, I question how we can permit Facebook to act as a massive conduit for official American propaganda like QAnon.

If it's a national security issue for Tiktok to operate in the US, it's a national security issue for facebook to operate in Canada.

It is. FB would never have been tolerated during the Cold War, not even in Europe. We let our guard down after the Cold War, and mostly for the better, but some corporations are exploiting the openness. Everyone on Earth needs to find a way to deal with these companies or continue being exploited.

There is a “Red Queen’s Race” between the accelerating productivity gains of abstractions, frameworks, libraries, and other stacks we can leverage, balanced against the fact that each one is a leaky abstraction, and the leaks interfere with each other in weird, mysterious ways.

Programming with all these tools is wonderful. Debugging problems in such am environment, not-so-much. But net, it’s a massive win.

First, I think you and the OP are correct. It’s not Barbara’s money, and Barbara’s career is driven by hiring and developing productive people. If her group is shipping good product, nobody in a growth company is sitting down and asking why a group that ships 30% more product costs 10% more per head.

That will come much later in the company’s trajectory.

One small exception to this from my n=1 experience is that all other things being equal, when hiring Barbara would rather pay at the low end of the range and then be generous with a raise, than pay at the top end of the range and have to fight to get you a raise.

That first performance review and raise set the tone for years to come, and good managers want it to be a happy experience for everyone.


But that’s only if all other things are equal. Barbara doesn’t want to lose you to another employer by over-negotiating, so ask for what you want.

Let her worry about fighting for your first raise. That’s the job she signed up for.

That’s a good point, and How to do this depends on the exact rules for handing out raises at the company. Where I work it’s better to hire someone at a lower level and promote them later - what I said earlier applies within a single pay grade and not between grades.

"Tabloid is a real, turing complete programming language written in JavaScript, inspired by _cilckbait_ headlines."

I like the deliberate misspelling of "clickbait," it layers a spam email feel on top of the clickbait ethos. Bravo!

The equally interesting implication of your comment that "we don't get a stack trace from an ordinary loop" is that maybe we should have logging and introspection the behaviour of loops, and the fact that we have them for function invocation but not for loops is combination of a historical accident and a lack of interest in rethinking how languages are implemented.

And indeed, in Scheme (the language that originally made tail recursion famous) you can get stack traces from loops too! Well, at least in one Scheme implementation, MIT Scheme.

The MIT Scheme debugger has a notion of "reductions and subproblems" [1], which basically correspond to tail calls and non-tail calls. You can step "backwards" to the previous reduction, or "upwards" to the previous subproblem. In terms of other programming languages, that corresponds to going back to the previous loop iteration, or going up to the previous call frame.

Behind the scenes, this is implemented using a "ring-buffer or ring-buffers" [2], which stores the values of local variables for, e.g., the last 10 iterations through a loop. So if you step back further than that you will lose history and jump back to the start of the function call.

(The second link goes to the same blog as OP, I guess he has been writing a lot on this topic!)

[1] https://www.gnu.org/software/mit-scheme/documentation/stable... [2] http://funcall.blogspot.com/2009/05/you-knew-id-say-somethin...

What information should be logged? And if the loop iterates for a million times, should we log it every time?

It could be an option when debugging like adding a trace to your function calls. And the amount of tracing (how much is stored) could be configured.

Depending on the loop syntax, presumably you'd want to know (in the case of a for loop) what variables are initialized, what the test condition is and its result, and what is altered. But, in the case of C for loops as an example, this wouldn't be easy to automate since the user can always do something like:

  for(;;) {
    if(condition) break;
    // other logic
In the best case (which would be the most data-ful case and hardest to use) you'd log all changes that occur within the loop. What you really want would be smaller, like detecting the break and the condition leading to it and watch that.

More realistically, you probably want to document your loop invariants with assertions which could be optionally recorded in your trace output.

This sounds like watchpoints which can be used both for loops and (tail-)recursive functions.

I guess you're suggesting that adding a million lines to a log is excessive. But in my math, you can count lines like this: 1, 2, 3, ..., the-number-of-lines-that-fit-in-a-window, many.

Once you have more lines than fit in a window, you've already got "many" and now it's time to talk about tooling like searching logs.

A million lines of log feels like an excessive waste intuitively, but that's only because I was brought up on 8-bit computers with 16K of RAM. Now my watch has more power than probably all of the computers I owned in the 20th century put together, and a single image it displays might have more bits than a million lines of a log file.


I know this stuff isn't free, but we should at least consider the possibility that what we really need are proper and comprehensive logs/traces, and a "stack trace" is nothing more than an abbreviated execution trace that just happens to be relatively cheap to collect when something goes wrong.

how hard is it to log a million messages?

I have a feeling that as a Canadian, I really cannot cross the chasm between our society and America's, but I'll try.

Here in Toronto, the libraries are open to the public. Borrowing material or using their online facilities requires membership, still known as "having a library card," and for that you need to live, work, or study in Toronto.

(Update, courtesy xatt: There are also paid memberships available for those who don't qualify for free membership, approximately CAD10/month: https://www.torontopubliclibrary.ca/using-the-library/your-l.... But physical access to the library is free to everyone.)

I also think there are other allowances, such as if you care for a relative who lives there, but the gist is:

1. Anybody can walk in and use the physical library, and; 2. There are additional resources for those who have a connection to the jurisdiction.

There are similar things around community centres. During public swim, everybody can swim. During certain programs, you may need to be a member of the facility. I am aware that some physical parks have special programs, and you may need to register with the city and be a resident to use them.

But the park itself is public, and anybody can go there. You just may not be able to drop into an outdoor yoga program.

So clearly, we have a two-tier system, and the broadest tier is literally "everyone." The second tier is the size of a municipality.

In a certain very generous sense, Toronto's libraries, community centres, and park programs are similar to "gated" parks for a neighbourhood, as they have some features/programs that require membership and/or some connection to the municipality.

But in another, they are manifestly different. Neighbourhood parks are usually set up to exclude "the wrong people." They're about constructing gated communities, with all the classist and racist implications associated with these structures.

Whereas, public libraries are exactly what they say on the tin: They're for the public. Rich, poor, from near, or far.

Nearly all parks and libraries and other public places & services in the US are exactly what you describe... there is no such chasm. The reason this article was written is because of one single ugly exception to what is a vast system of public access to community centers, libraries, parks and other open spaces. Please don't make assumptions and jump to the incorrect conclusion that a single example suddenly means that's how it works everywhere.

I have been to excellent public facilities in the US. Excellence is not evenly distributed anywhere, but the discrepancies of available public services between rich and poor neighbourhoods, between predominantly white and predominantly black neighbourhoods have been stark in my (n=1, granted!) observation of the US.

I think that the reality for the underclass in the US is that in theory, public services, voting, parks, community centres, education, jobs, and so forth are equally available, but that is not how it works in practice.

Excellence is not evenly distributed anywhere in the world including Canada, right? But the goal post seems to be walking away from me a little here. I'd agree that the US has social issues between rich and poor. Weren't we discussing actual stated policy restrictions to public access above? That's what the article is reporting on, and what @Arainach was talking about, isn't it?

What would be the solution to the much bigger problem you're bringing up? Perhaps the problem is that we allow our citizens to become poor in the US, not that we have some of our public facilities located near rich people?

Foothill park is located miles away from urban Palo Alto, in the midst of many other open-space preserves, which are all open to the public. Except this one. In fact, there is a guard house where you are asked for proof of Palo Alto residence, and are unceremoniously turned away if you can not produce said evidence. This is very unusual; I have never encountered such a thing anywhere else in the United States.

This is also emblematic of Palo Alto for me: hypocrisy through and through. Residents make a big fuss about being liberal: signs up on every other house declaring the occupants' high-minded support of illegal immigrants, gay, transgender, and bi people, the "reality" of science, and so on. At the same time, the city rips up comfortable benches on the sidewalks and puts in benches that are so uncomfortable, they make you think why the city bothered with this stuff (as you can guess, they are there to discourage homeless/indigent people from sleeping on them). City residents also made a big fuss about a neighborhood (private) girls' school from expanding enrollment (lots of flimsy reasons given, but the real reason is that the increase in traffic would have made a small dent in already astronomical home values).

I could go on and on, but on the whole, my take on this: Serves them right, and they deserve to lose. We need more cases like this to show these people they still live in the United States.

That sounds identical to anywhere I've ever lived in the US

> Borrowing material or using their online facilities requires membership, still known as "having a library card," and for that you need to live, work, or study in Toronto.

I'm surprised at that. Here in the UK you can generally get a temporary library card pretty easily (as in, walk up to the counter and fill out a form and get one there and then easy) if you don't live in the area

TPL still offers paid memberships to non-Toronto residents.

Not sure the chasm is as big as you think. This is exactly how things operate for the most part in the US as well.

Doesn't Toronto have one of the highest levels of wealth inequality in the world?

This comment is a master class in civil argumentation, and informative to boot. Thank you.

I believe it's somewhat correct, based on some random diving training.

There is a thing where you deliberately hold your breath, which starts with taking a big lungful of air, which presumably is at normal pressure and contains 21-ish percent oxygen.

Even untrained individuals can hold their breath for a while like this.

There's another thing, which is what happens if the air you're trying to breathe either is at lower pressure, or has lower oxygen proportions. Either way, each breath has fewer oxygen molecules.

If you haven't prepared for this and try to continue breathing, you can quickly become short of breath, and then cognitive abilities become impaired, hampering your attempts to rectify the situation.

I wonder if the problem is that if cabin partially depressurizes by the time the masks drop, you may no longer be able to take a deep breath and hold it while taking your time putting on a mask.

I acknowledge that I do not have training in dealing with cabin depressurization. As luck would have it, my sister has worked for Air Canada for more than 30 years, I will ask her about it.


I see some other comments about the oxygen actually coming out of your blood into your lungs at low pressure, and the air coming out of your lungs because the cabin is lower pressure than your lungs.

Those make sense, and had I trained for summiting 8,000m peaks instead of tech diving, I would have known that!

It matches diving.

Suppose you're 2000 feet down, breathing hydrox or hydreliox. It's mostly hydrogen, maybe some helium, and less than 1% oxygen. You suddenly ascend to the surface. Instead of changing gas mixture, you try to hold the gas in your lungs and maintain the pressure.

You won't hold it in. As the pressure drops in your lungs, the dissolved gases in your blood will escape into your lungs. That drops the oxygen content in your blood.

I make software that is broken ALL THE TIME. And what do I do then? Find the faults and then fix them. Just because software is not perfect does not mean that I sit like a dog in a house fire saying, "this is fine."

Killing 300+ people is broken. And our obligation is to admit that it is broken, and fix that thing. When we find another thing, we admit that the system is broken there as well, and go fix that.

Trying to diminish the seriousness of 300 deaths with mealy-mouth terms like "imperfect" is pure spin. If a plane, staffed by pilots allegedly trained on how to fly it, crashes from pilot error... TWICE, the system is broken. terribly broken.

See also: Security, physical or digital.

Terrorists flew planes into the World Trade Center. The system was broken. We fixed some of it. We put on some secuity theatre too. But we didn't say, "It's impossible to fix everything, so the system is fine." We didn't shrug it off as "imperfect."

We always begin by being truthful with ourselves about the fact that we have discovered that the system is broken. And if the consequences of its broken-ness are unacceptable, we fix it.

"Imperfect" is a word that should only be used for acceptable faults. Like, "The seating in economy is imperfect." It's too close together, but we don't have planes falling from the sky because they're cramming passengers together.


And now a footnote: Please avoid ad hominem arguments like "please name one system you've..." If the speaker's argument has a logical fallacy, point it out. If the speaker's argument is sound, it doesn't matter whether they write faultless software, or even whether they write software at all.

It's the argument we are discussing, not the person making it.

> Trying to diminish the seriousness of 300 deaths with mealy-mouth terms like "imperfect" is pure spin. If a plane, staffed by pilots allegedly trained on how to fly it, crashes from pilot error... TWICE, the system is broken. terribly broken.

Wait until you find out how many people die in car crashes every single day. It does not mean “the system is broken”. In the real world systems can be improved without throwing disruptive tantrums to make fundamental changes.

>Terrorists flew planes into the World Trade Center. The system was broken. We fixed some of it. We put on some secuity theatre too. But we didn't say, "It's impossible to fix everything, so the system is fine." We didn't shrug it off as "imperfect."

Excellent example of an extreme overreaction that caused immense destruction to the aviation industry because emotional politicians wanted to fix a “fundamentally broken system”. The correct approach would have been, “we’ve found a big flaw in security, we will now install flight deck door locks”. Instead, some dim politicians went with the “system is broken” approach and now we have nudity machines (or grope-downs if you don’t submit) at every major airport in the US.

You don’t drastically change a system on the discovery of a single flaw, no matter how big. You fix the flaw because it’s one known bad vs the giant pile of unknown flaws with fundamental redesigns.

"Wait until I find out?" Don't patronize me, I am keenly aware of automobile deaths, and furthermore, it's a complicated problem to solve for many, many reasons, some of which are caused by greed, lack of oversight, recklessness, and other social issues.

Nevertheless, in my lifetime cars have gotten safer by several metrics, most notably by distance traveled.[1] And they did not get better by thinking that driving around in deathtraps without seat belts and swigging whisky behind the wheel was acceptable.

They got better when people like Nader and MADD stood up and defied arguments like yours and loudly complained that yes, the system was BROKEN and needed to be fixed.

And then other people went about trying to fix automobile safety. Imperfectly. In fits and starts. And sometimes entirely wrongly. But nevertheless, progress happened when people attempted to fix things they acknowledged were broken.

[1]: https://en.wikipedia.org/wiki/Motor_vehicle_fatality_rate_in...

> They got better when people like Nader and MADD stood up and defied arguments like yours

I don’t think you understand. Cars are still killing thousands of people and the system is not considered broken right now. You’re emotionally lashing out and assuming I’m promoting drinking and driving when I said no such thing.

The entire point is that deaths alone do not indicate a broken system. Society is riddled with acceptable death rates in countless industries and people don’t childishly accuse politicians of being “okay with people dying”.

There is a world where nobody can accept any deaths and then there is reality where the adults exist and make trade-offs to have a functioning society.

All systems do have flaws. Even if we had very intrusive security, 9/11 may have still happened. It's possible no amount of security could have prevented it.

And it's possible in attempting to launch several thousand pounds of metal into the air that sometimes your testing is off and people die. That may mean the system is broken, it may mean it's just imperfect - it is not sufficient for either of those claims by itself. That people died does not mean the system is inherently broken - life is not without risk nor should our goal be to make that risk non-existent.

Security, to use your example, is fundamentally a trade off - accessibility vs security. Are we willing to trade a more intrusive screening process to prevent some set of attacks? Even if we make that tradeoff and an attack still happens, should we keep it? Would you be willing to be stripped search each and every time you fly if it lowered that risk of an attack another 10%?

Your call out of an ad hominem is incorrect. Parent is generalizing human behavior in an uncertain world, not attacking you as an individual. Nobody can write a perfect system, even NASA has failures. A super abstract argument about flawless systems loses to real life statistics every time - theory is great but only reality matters.

I think we must reiterate to help you “get” it. One accident is a tragedy, a sign of imperfection, and we allow for accidents in most cases.

The difference between an accident and what happened here is that the issue was caused _deliberately_ by a series of bad choices, reflected in the fact it happened twice in exactly the same way. Yes, it took a lot of bad choices to get to the point of creating the issue, but that doesn’t really matter, and in fact, might only serve to further the point.

When a system allows for deliberate choices to cause an issue, the system needs to be addressed.

Anecdotally, I have never worked at a company where the management didn’t have an outsized say in how we broke apart our time between product development and stability.

I suspect this is endemic of a system that lacks accountability for people in managerial positions, and is probably even beyond the scope of the FAA, MCAS or Boeing.

> I think we must reiterate to help you “get” it

Have you considered you may not be correct here? I know that may be difficult to comprehend, but you are not a teacher shedding light on the unenlightened - you're just another layperson attempting to understand a complex system.

> what happened here is that the issue was caused _deliberately_ by a series of bad choices

Are you suggesting Boeing intentionally downed it's own planes? That would seem to be an extraordinary claim - and not one reflected by any news source.

> When a system allows for deliberate choices to cause an issue, the system needs to be addressed.

What was the deliberate choice here? Only enabling one MCAS sensor or having calibration issues? Was it not making the need to disable the MCAS sensor in some situations clear? Was it changing the altitude model without changing the plane model number and forcing a pilot relicense?

Or, was the issue with Boeing being able to do their own testing? Was it due to a lack of guidelines on MCAS sensor calibration and placement?

> I suspect this is endemic of a system that lacks accountability...

Yet we are talking about this after their fleet was grounded, a congressional inquiry has happened and the investigation and analysis are ongoing. That doesn't seem like a lack of accountability to me.

Again, you're making the claim that the system is broken intrinsically because this occurred. You keep even saying it's deliberate - do you have evidence here? Because making poor choices is not the same as intent, and a bad actor does not a fundamentally broken system make. You seem to be in the position that because bad things happened we must dismantle the entire system without actually proposing a replacement - it is not enough to throw stones, we must actually put forth a solution set.

"Killing 300+ people is broken. And our obligation is to admit that it is broken, and fix that thing."

This is a massive trivilisation of the problem.

This is not 'code' - it's a massively complex system of large companies, various bits of tech, supply chains, varying international standards, considerably amount of legislation and that's before we get into the humane issue of 'acceptable loses' because '0 deaths' may not actually be feasible. Maybe, but maybe not.

"Terrorists flew planes into the World Trade Center. The system was broken. We fixed some of it."

Again, this is a misrepresentation. The system was not 'broken' because culturally, people 'didn't do things like that'. The 'fix' for this wouldn't be 'more security' but rather to encourage a civil culture where people don't take over planes and fly them into buildings. And some of the solutions are systematic, i.e. not 'safety checks on planes' but externalities like 'invading countries and destroying places where terrorist plan things' - which isn't so nice.

These are very complicated problems that don't have obvious solutions.

They may not have obvious solutions, but we recognize that they are broken and we try to find solutions. We then find places the solutions don't work and we iterate or even replace the solutions with new solutions.

All systemic problems have complex sets of interactions and unexpected consequences. Racism, automobile deaths[1], and yes, air transportation.

We still don't shrug our shoulders and deny that the causes of deaths reflect a broken system, nor do we refuse to attempt to find solutions just because it's damn hard to make progress.

[1]: Sometimes, making the vehicle safer makes drivers more reckless. Making cars safer in practice is not as obvious as it appears in theory.

There are two completely separate issues here, and they need to be disentangled to have a productive discussion.

First, there is the question of the right-to-repair and to what extent Apple is hostile to the existence of a viable second-party and third-party repair ecosystem, neutral to it, or actively supports it.

Second, there is the question of the relationship between the costs of the product and the costs of the things needed to repair the product, like replacement screens.

The two are not entirely orthogonal, because many strategies for reducing the costs of the product or increasing the utility of a working product have consequences with respect to the costs of components and the ease of third-party repair.

An example discussed on HN many times is the choice between user-removable batteries and building a battery in. When it's built-in, engineers have more options for miniaturization or increasing battery size and product life. The consequence, of course, is that batteries are now expensive to replace, and the batteries themselves are harder to get in a third-party ecosystem because there is little standardization: Every device might have a different battery optimized for that device.

If batteries were standard sizes as they are for many consumer devices with removable batteries, engineers have less flexibility to increase battery life, reduce weight, or reduce device size.

The same reasoning extends to replacing screens and keyboards. Supporting a vibrant and viable third-party ecosystem means making engineering compromises that have a distinct effect on the product's price and competitiveness in a world where every review discusses device weight, size, battery life, &tc.

The very best thing for a third-party repair ecosystem is to have fewer device-specific parts, fewer proprietary connectors, fewer components hard-wired into place, fewer components that change from device version to device version, &c.

The more different parts there are, the more that are introduced for a model or two and then discontinued, the harder it is for the viability of a third-party ecosystem with affordable options.

I feel that there's a deep and challenging tension between repairability and the immediate, out-of-the-box product value. In some industries, consumers value the ability to wrench their own product higher than in others. In bicycles, for example, there is a great deal of conservatism around engineering.

For all the bragging about new technology, the bicycle industry doesn't really advance very quickly. What do we have now, twelve-speed rear clusters? Whereas when I raced in the 80s, there were seven speeds back there. Whup-dee-doo, where are the internal gearboxes? And the other big innovations are disc brakes and electronic shifting? Compared to the advances in telephones, this is nearly nothing. When I had a mechanical seven-speed rear mech, I also had a physical phone hard-wired into my car. That was "mobile communications" back then.

I'm not defending Apple, it's up to everyone to decide for themselves which choices they think Apple should make. But we should accept that any choice for making things repairable has an impact on the out-of-the-box value of the device itself.

And if we want right-to-repair to be a viable and profitable business choice, something has to change about the marketplace itself, namely:

1. Get consumers to repair their devices far more often than they replace them, and;

2. Regulation.

I prefer regulation, personally. Yes, it's the bogeyman of "regulated marketplaces." But it also creates a level playing field, so that repairable devices do not have to suffer product reviews complaining about their price, weight, size, lack of differentiation from other devices sharing common standards, &c.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact