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

> Evidence has mounted that the program so far is achieving its two main goals — reducing congestion

It's reducing congestion by removing the people who don't want to pay $9 to drive to town.

Paying to be there: what a lovely concept! It works wonders for reducing density, too. Fewer people live in a desirable area, and they are richer and more pleasant, what are the downsides?

Maybe it should not be linked to affordability; it should be a lottery, for fairness.

For instance, if your license plate ends with certain numbers or letters (changing daily, and known months in advance for any given day), you don't get to drive into town.

Knowing well in advance the days when your car is admissible into the city allows you to plan. E.g. reschedule certain appointments so they occur on an allowed day, or else make alternative transportation plans.

Imperfections in lottery systems:

- Not fair toward people who often have to drive to town for whatever reason: they drive everyday or many days out of the week or month. Still translates to an extra cost, like driving to some parking lot outside of the city core, paying for parking there, and then paying for transit into the city. This could be people who are not well off: they work some job in the city that is not well paid, and have to live far away. In America "have car" != "affluent".

- Unfair advantage enjoyed by people who own multiple vehicles; we have not entirely eliminated pay-to-drive-here.


Obviously we would like to have high quality public transportation that makes the city easily accessible to people of all economic classes. See European cities for examples.

Our infrastructure isn't there yet. We are doing poorly. This is a first step. Yes, it will favor the wealthy for now. But its longterm effects will be to favor everyone. Stop being shortsighted. I don't believe that the ends always justify the means, but this is not a particularly horrible short-term sacrifice to make.


You're not explaining why my idea doesn't have long-term effects compared to the currently implemented idea, only arbitrarily calling it short-sighted.

Or do you mean that declining any opportunity for a rent-seeking cash-grab is categorically short-sighted? I can accept that.


Operating as designed.

If you have a car, you can already afford purchase/lease, insurance, registration, fuel, maintenance, etc., so affording a reasonable and variable toll is not an issue. If your need to take that vehicle into that zone at that specific time is so great, a $9 toll will not be a deterrent, and if it is just convenience, then rearrange your schedule or transport mode to a time/mode that balances the cost and convenience.

Sure it sounds nice to have it done by lottery system (e.g., plates with the rightmost numeral = "3" are banned next Tuesday), but that is much harder to tune and could present a far more serious impediment.

Far easier to tune it with price: Tuesday mornings have an extra-high traffic spike, ok, "Fee increases to $11 Tuesdays 0:830-13:30". We want to get to 15% less traffic instead of 10%, now we need to say "plates with the rightmost numerals in the range '00'-'15' banned Tuesdays", etc. etc.. Every time they make a change, everyone must check... what a mess.

And for people who MUST be there at a specific time, e.g., your cancer treatment center has only a Tuesday 10:20 AM slot for you, being banned because of a license plate is a real hardship, whereas an extra $2 toll is a trivial inconvenience compared to the reason for the trip.


> If you have a car, ...

Sounds vaguely like, why are you begging, and why should I give you anything, if you can afford cigarettes?

A lot of low-income Americans drive cars, and would be way more fucked without them, because of the way things are.

> that is much harder to tune and could present a far more serious impediment.

What impediment, and how is it harder to tune?

In principle, you can tune the system to such a fine granularity that, for instance, one specific license plate is permitted to enter the city, every four years on February 29th. And that is no easier to declare than any other tuning, like alternating daily between two halves of the license plate space.


>>why are you begging, and why should I give you anything, if you can afford cigarettes?

The expense profile of a motor vehicle in the USA in 2025 is quite different than cigarettes. And yes, if you are buying two packs per day of cigarettes, at $11.96 NY State average [0] you can skip one to drive into the congestion zone in congestion time.

>> A lot of low-income Americans drive cars

Yup. It is near-absolutely critical to have a car in rural America. But that is a long drive from Manhattan. How many of them NEED to drive cars into Manhattan during congestion periods? When I lived in Manhattan long before congestion pricing, I sold my car because it was such a hassle to have while living there.

>>What impediment, and how is it harder to tune? In principle, you can tune the system to such a fine granularity that...

I already provided such an example. There are many types of appointments that are very difficult to get, and adding the hassle of being ILLEGAL to drive your car on that particular day will be a real hardship, not a mere inconvenience.

Sure, the city planners could tune any license plate scheme down to an individual vehicle, but only at the cost of a massive hassle to everyone involved. The general algo of "ya, it'll cost me to go during congestion times; oh woah, they just added $2 to the 11h-14h time slot" is waaay different from "I have a doctor appointment Tuesday, is the third character of my plate 4, 5, M, or N?...[runs out to look at plate]...damnit, I've got to change to... oh, no appointments for another seventeen weeks?... (real example from my own doctor)" The person who could have taken care of it for a $9 fee is now either seriously delayed or needs to pay $80 for an Uber.

Meanwhile, you want to add all that burden to everyone to accommodate a population of low income people, near Manhattan, who want to drive their cars into the city on a regular basis. But they will NOT be able to do this to get to their job daily, so will still need to make other arrangements initially every other day anyway.

This convinces me there is even less of a case for lottery allocation than even the first post.

edit: add LF for formatting

[0] https://boxprintify.com/how-much-do-cigarettes-cost/


Why don't you just send Altman all your passwords?

This says, "trust all code coming from OpenAI".


CSE doens't only identify; it eliminates (hence the E!). It refers to the complete solution.

I don't think you necessarily have to compute the dominance relation because it can pop out implicitly.

If CSE is done on intermediate code, the dominance relation will pop out from thedirecton in which the instructions are followed around the basic blocks.

E.g. simple case: we see t3 <= t2 + t1. So we make a note in some CSE hash table that we had a t2 + t1, and that the result is cached in t3. Then if we see t2 + t1 again in the same basic block, we can replace that with t3. The dominance relation is that earlier instructions in the basic block dominate later ones, but we don't have to explicitly calculate it.


> This transformation is affectionately known as sharing

No, it is ubiquitously known as CSE: common subexpression elimination.

The original DAG representation of the abstract syntax, on the other hand, exhibits substructure sharing.

> Of course, that invariant eventually changed. We added a way in the source langauge to introduce lets, which meant my algorithm was wrong.

Because you have to identify variables by more than just their symbol, due to shadowing, like De Brujn indexing and other schemes.

CSE is not particularly difficult in a functional language. Variable assignments throw a monkey wrench into it. Any terms with side effects also.

By the way, CSE can be done over intermediate representations, rather than abstract syntax. In an intermediate representation, you look for identical instructions with the same operands, not arbitrarily large expressions, while paying attention to variable liveness.

Another by the way is that not only do we have to worry about side effects, but we also cannot do CSE on expressions that guarantee returning a fresh object. E.g. if we are compiling Lisp we cannot merge two occurrences of (cons 1 2). The expressions must produce fresh cells which are not eq to each other. Ultimately that is linked to side effects; being able to mutate one cell with no effect on the other. Construction per se is not a side effect, even if it guarantees freshness.


Mountain people and anyone who goes abroad, where they use a different SIM card.

People who perpetrate SMS 2FA are pure scum.


The analogous program in pretty much any modern language under the sun has no problem with this, in spite of multiple references being casually allowed.

To have a safe reference to the cell of a vector, we need a "locative" object for that, which keeps track of v, and the offset 0 into v.


> The analogous program in pretty much any modern language under the sun has no problem with this, in spite of multiple references being casually allowed.

And then every time the underlying data moves, the program's runtime either needs to do a dynamic lookup of all pointers to that data and then iterate over all of them to point to the new location, or otherwise you need to introduce yet another layer of indirection (or even worse, you could use linked lists). Many languages exist in domains where they don't mind paying such a runtime cost, but Rust is trying to be as fast as possible while being as memory-safe as possible.

In other words, pick your poison:

1. Allow mutable data, but do not support direct interior references.

2. Allow interior references, but do not allow mutable data.

3. Allow mutable data, but only allow indirect/dynamically adjusted references.

4. Allow both mutable data and direct interior references, force the author to manually enforce memory-safety.

5. Allow both mutable data and direct interior references, use static analysis to ensure safety by only allowing references to be held when mutation cannot invalidate them.


That’s a different implementation, and one you can do in Rust too.

> Why would a stack frame want to move ownership to its callee

Happens all the time in modern programming:

callee(foo_string + "abc")

Argument expression foo_string + "abc" constructs a new string. That is not captured in any variable here; it is passed to the caller. Only the caller knows about this.

This situation can expose bugs in a run-time's GC system. If callee is something written in a low level language that is resposible for indicating "nailed" objects to the garbage collector, and it forgets to nail the argument object, GC can prematurely collect it because nothing else in the image knows about that object: only the callee. The bug won't surface in situations like callee(foo_string) where the caller still has a reference to foo_string (at least if that variable is live: has a next use).


We have that choice now. If movies based on human-versus-{human,nature,aliens,supernatural,...} conflict is not your thing, you can go to YouTube (or similar) and watch, say, people collaborate in making something. It's still a kind of conflict with resolution: people or a person versus the tooling and materials, using their knowledge and skills to show solutions, and then it's all resolved when the thing is made. At every turn, you don't quite know what they are going to do next, or sometimes even what they are working on and how it will fit into the big picture. (E.g. it something that will be a part of the finished work, or is it a tooling jig?)

It's not easy to get away from the three parts of introduction, development and conclusion, in any work that exhibits sequence. Not even in something abstract like music. (I should say, it's certainly easy to forcibly get away from it, if you don't care about the result being boring.)

There is also comedy. If you manage to make people laugh throughout the work, the plot doesn't have to necessarily follow the formula.


AI is not easily going to "steal" any properly gatekept jobs that require a licensed practitioner.

Machine learning technology can be used to search for artifacts in medical diagnostic images that humans might miss. The flagged situations still have to be interpreted by a radiologist.


> I even hit rock bottom: opening myself up to the thought of on-site dev work, which is an absolute red line for me.

Yeah; no more chillin' out in your camper upstate in the middle of nowhere.

Bummer!

(Writing from on-site office chair here.)


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

Search: