California Homeowners: Please Convert Garages into Apartments - <AUTHOR> https://www.citylab.com/perspective/2019/04/convert-garage-apartments-affordable-housing-crisis-adu/587434/ <comment><USER2> No; this a band-aid, not a solution. A solution is changing laws and allowing or encouraging development to happen and allow all kinds of development, from mixed use, luxury, middle class and subsidized, not necessarily in the same place. Allow gentrification to happen, but also build housing for the poor.

<comment><USER3> No? No you're against a good idea that helps because it doesn't outright solve the problem?

Band-Aid or not, it's solid and well thought through. Don't be so quick to dismiss something because it doesn't solve all the world's problem immediately.

<comment><USER2> Look, what's going to happen? Garages prove to be a safety valve, it'll become a new normal that allows this "can" of housing issues to get kicked down the road. I don't see how this helps.

It's not all that different from saying allow six to a room or something. Sure, it increases "density" but it's not a solution.

One of their examples is garages in the mission (SF). Those things are low ceiling, dingy, etc. Students might be okay. Not grown adults. Like I said, it'd become a new normal, an accepted solution. But it's not a solution. It just postpones things and makes sub-par acceptable.

<comment><USER3> Tackling a solution from multiple angles isn't a con.

If I had the choice of a garage in SF or a 2h commute to my barrista job for a something more in my price range it would be a no brainer. You're dismissing a good idea because it doesn't help you personally... I expert more from HN commenters than "no because this doesn't benefit me or conform to my world view".

</comment></comment></comment></comment><comment><USER4> Not to be a grump, but really we need to repeal Prop 13 in part or whole, while creating some new possible issues, I think it will solve more than it causes.

Converting to garages just passes more windfall to people who just happened to move to California a while ago.

<comment><USER5> Prop 13 will never be repealed, especially not with housing prices the way they are now. If you want to see one issue unite every single demographic with great vengeance and furious anger, then try to take on prop 13.

<comment><USER6> I don't think prop13 needs to be repealed entirely, just changed so it only applies to the owner's primary home.

Then prop 13 will meet its ostensible purpose -- so the elderly don't get forced out of their homes by taxes, while those that own investment properties pay taxes on the market value of their property.

(note that I say this as someone that owns a couple rental properties in the California and benefit from Prop 13)

<comment><USER7> Or we can restrict it to just the elderly and disabled, instead of letting every single incumbent hitch a ride.

One of my favorite alternatives is to bring back regular tax reassessments, but owners can choose to cede excess property value to the city/state. This forces a choice between having your cake and eating it too.

<comment><USER6> I'm ok with rewarding people that choose to live in one community for a long time by reducing their property taxes -- living in one area is what helps build communities.

<comment><USER8> Long term communities need young adults forming new households to survive past a single generation.

<comment><USER6> True, but the elderly will leave through attrition, forcing them to leave through high taxes that make their homes affordable doesn't seem like a good way to ensure neighborhood turnover.

I lived in a rent controlled apartment in San Francisco, and about 30% of my neighbors were over the age of 60 including an 80 year old neighbor who'd been there for 40 years and had great stories to tell.

Then I lived in a 20 year old building with no rent control, and almost all of my neighbors were age 30 or below working in the tech field (few lived there for more than a couple years) -- with no elderly people that I was aware of. (we had a few months of of false fire alarm activations, so it was pretty easy to see all of the residents)

<comment><USER8> Grandma's low property tax bill is not the problem _per se_ , it is the punitively high property tax bill we charge more recently sold properties to make up for it. This is popular because it punishes techie migrants, but it also punishes downsizing late and life and new household formation early in life.

If we don't need the extra revenue from rising property values, we should cut property tax rates accordingly. City residents getting the same public services for a smaller percentage of their wealth would be an immensely positive impact of tech's prosperity.

If we do need it (and I suspect we do, because higher prices mean government facilities and staff are more expensive), we should collect it fairly across the board. Maybe "fair" means flat, maybe it means progressive, maybe it even means "tenure in city" or "tenure in neighborhood," but "tenure in current address" is crazy. At least use a mechanism with some thought put into its incentives and possible unintended consequences.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER9> Yeah, no thanks. I do not want anyone else living on my property. Especially not in my garage.

</comment><comment><USER10> The article mentions something called "Naturally Occuring Affordable Housing" that doesn't require public subsidy and then goes on to talk about a plan to publicly subsidize these conversions in the very next paragraph. Feels like a bait and switch.

</comment><comment><USER11> Yeah they're already doing that in Santa Cruz and it sucks across the board.

Evidence: I live there and I like to go to open houses just to gloat at how badly people have f __*ed up otherwise perfectly workable floor plans to make a little extra cash.

OTOH reducing the cost of in-law unit permits to zero across the board would work wonders.

<comment><USER12> A lot of those conversions are illegal and substandard. It has been going on for decades. The various city fees for a 500 sq ft ADU, when I investigated it about a decade ago, ran well into 20-30% of the budget for the ADU.

<comment><USER11> You are preaching to the choir here. I loved when Micah Posner, one of the chief NIMBYs of Santa Cruz, turned out to be an illegal ADU slumlord. That in my opinion explains a lot about how Santa Cruz really works. Or as I refer to it to outsiders: Mayberry politics by the sea.

</comment></comment></comment><comment><USER13> Shouldn't we wait for a solution to our traffic and resource issues before trying to increase our density? Is it really so terrible for people to consider living somewhere besides California?

I'm a renter now, so I sympathize with people like me who are suffering from the current situation, but I feel like efforts like this just create sub- standard housing and enable more irresponsible growth. Are we just trying to lower the quality of life for everyone in CA until enough people leave?

<comment><USER8> Density is the solution to traffic issues. (Rather: traffic issues are never going away, the best we can do is minimize the need to drive).

If small apartments are substandard, the roommate situations that are most people's best alternative are then sub-substandard.

</comment></comment><comment><USER14> Doesn't really make sense. Even less parking in our low density residential neighborhoods? No thanks.

My understanding is the issue is really about rezoning. Homeowners are willing to sell to each other so I assume they'll be willing to sell to a high density high-rise but no one wants to approve the new construction. We should figure out how to get it through city planning. As we increase density we can more efficiently manage public transit.

</comment><comment> your-nanny I am generally in favor of supply side solutions to housing, but I'm also pissed about the environmental cost of that develop ent, especially in a market favoring construction of giant homes on giant lots.

Not just environmental. Very productive and irreplaceable farmland in the east side of California's Central Valley is be being eaten up by housing development.

<comment><USER15> > productive and irreplaceable farmland in the east side of California's > Central Valley is be being eaten up by housing development

seems like an under reported story.

where is this happening?

is it housing tracts with hundreds of units or individual homes with large lots?

<comment> your-nanny most cities in the central valley are growing. My hometown has grown from a population of 27k in 1970 to 133k today, with massive developments on West side replacing walnut groves. Same story pretty much everywhere. Farmers can make a lot of cash selling land to developers, and people complain about the dust and smell and other pollution from farms neighboring their new homes.

</comment></comment></comment><comment><USER16> My bedroom in LA was like this. 10x20 ft, so a distinctly "long" room. It actually worked really well. My bed was in one end, then there was a tall paper divider, then a loveseat, coffee table, and desk in the remainder. Basically a room that divided in thirds for bed, living, and study.

</comment><comment><USER17> No thanks. I have hobbies.

<comment><USER18> Even if you don't have hobbies, that's square footage you own. You should be able to use it how you want, within legal limits. Even if you want to store boxes full of crap, that's your right.

</comment></comment><comment><USER15> This ADU law was passed at the state level. The state could, if it had the political will, go even further. It could re-zone every SFD lot (even ones in Larkspur, Palo Alto, Beverly Hills and Berkeley) into one that would allow, say, a 4 unit apartment. Magic!

</comment><comment><USER19> I know a guy who owns large sheds / warehouses around the place and he finds homeless people around the place and allows them to live in the sheds so that he always has someone protecting them from theft.

</comment><comment><USER20> At a seminar for HOA managers in Irvine, there was a panel discussion on the impact of higher Housing costs. Converting garages into dwelling units was top of the list for action plans. Number two was look for ways to solve parking issues, but there was no actual solution proposed by the panel. Besides some system like Parking Boss, I can't see how any community is supposed to manage the increase in cars, especially if garages are out of the question.

</comment><comment><USER21> I know people who did this. They were a nice well-behaved family, though a bit clueless about some things. Converting to add an apartment exposed them to stuff that hadn't really been a part of their world, like prostitution and drugs. Yep, renters ran that out of the apartment.

The downsides are real. If you dislike having police raid your house in the middle of the night, this isn't for you.

<comment><USER22> My parents lived in the front half of a duplex house and rented out the back half for years. One night, the tenant fell asleep with a cigarette in his mouth and burned our house down.

The downsides are real.

</comment></comment><comment><USER23> Maybe the state should just be filled with apartment blocks a-la Le Corbusier. Put them on springs for the earthquakes.

</comment><comment><USER24> Seems more practical in Los Angeles than it would be in San Francisco. Though I suppose it's not impossible to imagine building down in a one car garage (though in a state with lots of earthquakes, that would be expensive, and not everyone will want to sleep in a batcave).

<comment><USER15> this will probably result in more cars parking overnight on the streets. at a certain point in the future, the streets in LA will become as over-parked as the streets in SF.

</comment></comment><comment><USER25> ... And then my garage gets rent controlled and I lose control of part of my house.

</comment><comment><USER26> i think we should just try convincing the big tech companies to build offices in less populated areas of the country.

</comment><comment><USER8> Much as I respect the logic, there is something symbolically icky about living in another household's outbuilding.

</comment><comment><USER27> From an outsider point of view, why aren't there any high-rise residential buildings in that area?

<comment><USER28> The article is referring to the entire state which is geographically diverse. Cities like San Francisco, L.A., San Diego, and even Sacramento have some taller housing options. Also, CA has major earthquakes so high-rises are generally not as common. We've been building out vs up but can't match the demand. Part of it is also due to CA's strict building/environmental regulations that make any construction project a slow and tedious process.

</comment></comment><comment><USER29> There was a couple who lived out in somebody's garage for a few years after they got married and bought a house cash. I heard if on that Dave Ramsey show or whatever, it's amazing what people do to get through life. Some are strategizing ahead of others. Here in Florida if you live in a garage you might die without a proper A/C in there.

<comment><USER30> It should be obvious from the word "convert" in the title, you don't simply call it a living space and bingo, you're done. You actually have to outfit it as such.

<comment><USER29> My last bit about florida was a sidenote, because I never considered people living in a garage a thing. Here in Florida I never see that kinda thing anywhere I've lived, but I'm just one person and there's a whole lot of Florida I have not seen.

</comment></comment></comment><comment><USER31> Before eeking out the small spaces in people's garages, we need to solve the issue of houses sitting empty due to money laundering and foreign investment. Why try to encourage people to convert their garages when they are hundreds of thousands of living units sitting completely empty for people's portfolios? I am libertarian, but I feel like in a housing crisis this is something that needs to be tamped down on ASAP

<comment><USER32> Think about why an investment property might sit empty. At first glance, that seems absurd. An investor wants to earn money, and rent would be one way to get that.

As high as rents might be, they are clearly not enough to put these properties on the market. Find the cause and fix it.

Possible causes: too difficult to evict non-paying tenants, too difficult to sue tenants for damages, too many expensive upgrades required (fire protection, disability access, etc.), too difficult to avoid getting sued by the government, etc.

Investors don't leave property idle for fun. There is a reason.

<comment><USER33> Many investors find a property momentarily unprofitable and set it on the back burner while the neighborhood they dont have to live in goes down the drain. It is a huge negative externality that affects millions directly. But prvitizing gains and socializing losses seems to be the cali way.

</comment></comment></comment><comment><USER34> earth scrapers + hyper loops</comment>


World's Most Admired Companies for 2018 - <AUTHOR> http://fortune.com/worlds-most-admired-companies/list <comment><USER2> ... as chosen by "executives, directors, and securities analysts" only.</comment>


Need a Job? Learn Linux - <AUTHOR> http://techcrunch.com/2012/02/14/need-a-job-learn-linux/ <comment><USER2> A big kudos to Dice.com for getting such traction out of this non-story. The actual content of their infographic - [http://www.linuxfoundation.org/sites/main/files/dice_lf_linu...](http://www.linuxfoundation.org/sites/main/files/dice_lf_linux_jobs_report_2012.pdf) \- is full of revelations that would be very interesting in 2008.

</comment><comment><USER3> I had to double check the date of this story</comment>


The Caves of Clojure - <AUTHOR> http://stevelosh.com/blog/2012/07/caves-of-clojure-01/ <comment><USER2> _Despite its Rubyesque culture of brokenness, rampant lack of documentation, and warty JVM interop..._

This has not been my impression.

<comment><USER3> Ha, this is funny. I came here to say that this has been exactly my impression (sans Java interop warts since I haven't done much there).

There is a lot of missing documentation -- and by that I mean high-quality, contextual, human-readable, practical documentation -- though the community has been working to remedy that.

There is a particular definition of "culture of brokenness" that I'd agree with but there are a lot more that I wouldn't. I'd have to hear the author's definition of what he means by that before I agree.

That being said Clojure is downright _beautiful_. I wish I had opportunity to work with it more.

<comment><USER4> To me the most frustrating thing about programming in Clojure (not that I'm generally frustrated by doing it, in fact I love it) are the totally cryptic/useless error messages, especially syntax errors that don't contain a line number (or they do but it's invariably 0).

Thank goodness for syntax-coloring editors or it would take me hours to track some of these things down.

<comment><USER5> > the totally cryptic/useless error messages

I can but agree with this, Clojure rivals template-heavy C++ in GCC for the uselessness and pointlessness of the humongous heaps of cryptic error messages it produces.

<comment><USER6> Not that this is an excuse, but once you know a bit more about how Clojure and the JVM work, stack traces become a lot easier to interpret. Most of the time, there's at least one line in the stack barf that tells me exactly where to look to find the problem.

This may actually be a _bad_ thing, because it disincentivizes those who have the ability to fix things to be more newbie-friendly.

<comment><USER7> I've been wondering if the fix would be as simple as filtering stack trace entries generated by higher lower level code (ie, from Clojure itself rather than the application code.) It seems like such a simple fix that I wonder why it hasn't been done.

<comment><USER6> It has, several times (the clojure.stacktrace lib, also <https://github.com/mmcgrana/clj-stacktrace>).

The problem is that these require a running, working system to format and print the stacktrace (as well as inspecting the state of the Clojure runtime). Unfortunately, uncaught exceptions will also quite often FUBAR the REPL, if not the entire JVM, meaning that improved stacktrace tools can only work some of the time, and will sometimes even make things much worse (if the JVM throws an exception from within the stacktrace formatter itself.)

</comment></comment></comment></comment></comment></comment></comment><comment><USER8> Keep us posted, Steve. As someone learning Clojure, I enjoy every bit of its code out there that shows me how things could be done idiomatically.</comment>


Ask HN: Does anyone have experience with Mechanical Turk for business? - <AUTHOR>

I am thinking about using it, or a service like it where I can hire simple manpower very cheaply, for various SEO needs (like submission to directories). Has anyone here ever used it for business before? What were your experiences? <comment><USER2> I used it for a project for a client. If you want directory submission (and mass directory submission isn't really that helpful), there are plenty of people who will do that as a service for you, and their average quality will be better than the Turkers.

In general, quality is about what you would expect from someone with 2 cents on the line. You pretty much have to write your own logic to pit Turkers against each other for every unit of finished output, or some of the abysmal ones will escape into whatever the project you're doing. (My client just filed 10 bugs against my data set caused by a) turning the floor for data quality down in options and then noticing b) "amusing" Turker understandings of the instructions.)

That said, a few hundred bucks saved me a week of work (and by implication, saved my client several thousand dollars) of having me have to hand-classify a few thousand datums. For their specific need, Turker accuracy was good enough.

<comment><AUTHOR> Thank you for your excellent advice - I'll be sure to be very clear in instructions.

</comment></comment><comment><USER3> hey KLbarry -- i'm a PM on mechanical turk. Did you end up trying the service? you can ping me at natala @ amazon dot com if you have questions.</comment>


Add detailed message to NullPointerException describing what is null - <AUTHOR> https://openjdk.java.net/jeps/8220715 <comment><USER2> When Firefox tried to make the "X is undefined" JavaScript exception message user-friendlier, it broke flipkart.com. The website's JavaScript explicitly depended on the exact wording of exception messages. Simply loading the flipkart.com home page caused "X is undefined" exceptions, which it tried to parse with regular expressions. The new exception message had to be reverted. :(

[https://www.fxsitecompat.com/en-CA/docs/2018/improved- javasc...](https://www.fxsitecompat.com/en-CA/docs/2018/improved-javascript- error-message-breaks-code-relying-on-the-legacy-format/)

This is an unfortunate example of Hyrum's Law: "With a sufficient number of users of an API, all observable behaviors of your system will be depended on by somebody."

[http://www.hyrumslaw.com/](http://www.hyrumslaw.com/)

<comment><USER3> Software relying on undefined behavior like that deserves to be broken and made fun of. I fully support breaking it and the idea that they had to revert the error message change horrifies me.

This is why we can't have nice things.

<comment><USER4> I wouldn't be so quick to jump to that conclusion. Was there a better, more defined way to catch that error type globally? if there is not, that is not the site creators fault, that is on mozilla

<comment><USER5> Not sure I follow, if your code throws an exception, you should be able to code against why that exception would have been able to occur, not against "the toString() output of the exception", especially in a landscape with multiple browsers that all have different exception text.

</comment></comment></comment></comment><comment><USER6> In JavaScript I often find my self running the code in both firefox _and_ chrome to get the full picture of _what is undefined_ : (firefox)

        window.foo.bar
        //=> TypeError: window.foo is undefined

and _what I 'm trying to get_: (chrome)

        window.foo.bar
        //=> Uncaught TypeError: Cannot read property 'bar' of undefined

Personally I find the firefox error message more useful, but often I get a better understanding of whats wrong when I run it in chrome. I don't know why they are mentioning undefined at all and don't say something like:

       TypeError: Cannot read property 'bar' of 'window.foo' (undefined)

\---

Edit: Formatting

<comment><USER7> The worst part is that Firefox tried to change the error message it throws to include the "bar" piece of information, and that had to be reverted because it broke sites that were parsing the exception message with regexps. :( See [https://bugzilla.mozilla.org/show_bug.cgi?id=1498257](https://bugzilla.mozilla.org/show_bug.cgi?id=1498257) for the gory details, though it was not the only site affected: see also [https://bugzilla.mozilla.org/show_bug.cgi?id=1490772](https://bugzilla.mozilla.org/show_bug.cgi?id=1490772) (fixed by site author) and [https://bugzilla.mozilla.org/show_bug.cgi?id=1512401](https://bugzilla.mozilla.org/show_bug.cgi?id=1512401) (fixed by the backout).

<comment><USER8> Wow. One would generally not consider exceptions part of a public API but I suppose they really are; if one rewrites it as a sort of Haskell-ish `Input -> Either Error value` one can see this directly... then if one church-encodes one also gets the way JS promises work, `Input -> forall z. (Error -> z, value -> z) -> z`...

I suppose that the "normal" response is just to say "yeah people will write bad code in any language," but maybe there was something we missed out that could have signaled to someone that this was a very bad thing they were doing? It's something that could easily happen to a junior developer. So if we had the language of our dreams, is there some other option?

Erlang's "just let it crash, do not attempt recovery but rather monitoring" comes somewhat to mind. Standardizing the error message also comes to mind, but seems a bit banal. Error codes are handy but with C I have noticed that every single piece of software has some different idea of which integers mean what things, so that developers have to absorb a hodgepodge.

Really it's I guess that you don't want any sort of conditional dispatch to happen on such a value? You would like the ability in an hypothetical programming language to mark a field as "advisory", and then the programming language checks that it never performs any sort of conditional dispatch on an advisory field. That gives you a way to make the API contract, "this contains a string but I might change that string at any later date." So if a junior dev runs into that, they are intimidated and get that sort of instant feedback they need.

<comment><USER9> > Wow. One would generally not consider exceptions part of a public API

Interestingly this happened with Java exception stack traces too. Joshua Bloch remarked that one needs to provide access to all info through standard API, if it's not there people start using toString and others and it bacames a de facto API.

<comment><USER10> Even then exceptions are likely being logged and the 'API' may be getting consumed by other processes, reporting scripts, log formatters, email rules and god knows what else. Changing an exception string can ruin a lot of peoples day.

</comment></comment></comment></comment></comment><comment><USER11> This sounds like a good addition.

It happens quite often that we get a bug report with "We got a NPE". Our users often attach a screenshot, just showing the standard "NPE error" message, which does not really help.

<comment><USER12> That's like every bug report I get from non-technical users at my company. "The device doesn't work. Can you log in and take a look at the logs?" Yeah, if you can give me some information about which device it is I'd be happy to.

</comment></comment><comment><USER13> > Computation overhead > NullPointerExceptions are thrown frequently.

"Frequently" is obviously a relative term, but are NullPointerExceptions really common enough to be a performance concern? It's good that they are taking performance overhead into consideration of course, I'm just surprised it's even an issue.

<comment><USER14> A lot of those NullExceptions (and a lot of boilerplate code) could be linted away if Java gave compiler-level semantics to @NotNull annotations.

Letting null values propagate through your program is frequently a code smell, you want to constrain it at the boundaries of your program logic if possible. Unfortunately, Java does not have a semantic way to do this, just documentation and discipline.

<comment><USER15> Checker framework [1] can be used to add compile time checks on such annotations. Unfortunately I found it non trivial to setup (that was some time ago though, I'll have to check again). I noticed also that a recent version of Wildfly application server can do those check at runtime, but I haven't investigated it enough to see if it is configurable and the performance impact of the checks [1] [https://checkerframework.org](https://checkerframework.org)

</comment></comment></comment><comment><USER16> This would be good, but I'd prefer that Java have something like the null operators that C# has.

[https://docs.microsoft.com/en-us/dotnet/csharp/language- refe...](https://docs.microsoft.com/en-us/dotnet/csharp/language- reference/operators/null-conditional-operators)

<comment><USER17> Well, Kotlin has it at least [https://kotlinlang.org/docs/reference/null- safety.html](https://kotlinlang.org/docs/reference/null-safety.html)

<comment><USER18> Groovy's had it forever, AFAICR.

<comment><USER19> Groovy has the safe dereference operator but no notion of non-nullable types.

</comment></comment></comment></comment><comment><USER20> This would be immensely beneficial, and long overdue in my opinion.

<comment><USER21> Imagine how many thousand man-hours would be saved in debugging if this existed a decade ago. Little things like this over time adds up.

</comment></comment><comment><USER22> Funny thing, some JVM's already do exactly this for many years:

Failed to write HTTP message: org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: while trying to invoke the method de.hybris.platform.catalog.model.CatalogModel.getId() of a null object returned from de.hybris.platform.catalog.model.CatalogVersionModel.getCatalog();

<comment><USER23> It would be useful to know what JVM is that.

<comment><USER24> Probably SAP's, since Hybris is an SAP product.

<comment><USER25> SAP's definitely does this, I just checked.

In fact I relied on it so much that I thought every JVM does this.

</comment></comment></comment></comment><comment><USER26> I am not really that familiar with Java, but I don't understand how to get a JVM heap dump if there is an exception that brings down the JVM or even a thread. Is it even possible?

I work on mainframe (z/OS), and it is completely normal there that when an application fails with exception (they're called ABENDs - from ABnormal ENDing), you can get a dump of memory of the application. From that, you can see all the values of the offending variables and all the relevant system areas and so on.

<comment><USER27> You can turn this on but the dumps are kind of huge. Also, you can attach to a running JVM and get a memory dump that way. NPEs don't bring down the JVM though unless that happens in your main method of course, in which case the process exits normally.

<comment><USER26> What I mean, to produce the dump in the case of exceptions that percolate to top level and exit the process or thread (such as NPE). I am aware that I can attach, but that kind of defeats the ability to get the information in case of unexpected error (in production). Dumps might be huge, but is that really a problem on modern hardware? On z/OS this is doable (and common practice).

<comment><USER28> > _What I mean, to produce the dump in the case of exceptions that percolate > to top level and exit the process or thread (such as NPE)._

Why not have a top level try catch then?

<comment><USER26> If you have a top level catch, then you lose the local context of the error (local variables, parameters, stack trace). I mean seriously, this is a solved problem on z/OS (the ABEND condition bypasses normal stack, so to speak), it has been solved for over 50 years. I don't see why JVM couldn't do the same thing - is it a technical problem? It seems like a purely cultural problem to me.

<comment><USER29> Maybe because in Java it's usually considered a very bad practice to halt your program. All the web containers that run your code will catch any error, to prevent bringing down the whole web service if only a small piece of it fails (for example, cannot serve one URL, but can others).

So instead, in Java, it's your responsibility to catch and correctly handle all the exceptions.

Also, variables in the last function (where exception was raised from) are unlikely to give me understanding of the bug, because it's usually thrown somewhere deep in others code, and also I'm more interested in _why_ it happened, not just _what_ happened.

We could dump all the variables in the stack trace, but I'm not sure I would like to read the whole dump of every variable in stack trace, that's just too much. I'd better write my code with proper logging, so I would be able to read the logs in order to understand not only _what_ happened, but _why_ it happened. With good logs you rarely even need to debug anything, I'd say 95% of the time it's pretty clear where to fix.

<comment><USER26> Again, on z/OS, this is a solved problem. If the application runs inside an "application server", for instance CICS, you can still get the dump and the CICS can continue or even restart your app (or it can be restarted through other things). You can get the dump of the process even if just one thread will fail.

I know from experience on z/OS how useful full dump can be, and I sorely miss it in Java. You wouldn't have to read the full dump yourself - a good postmortem debugger can do that work for you - displaying stack trace, locals, etc.

Good logs can certainly save you.. if you have them, and you happen to log exactly what you need. But it's much easier to look at the memory and see what went wrong. (Personally, I think logs are great on the boundary, to describe inputs and outputs.)

I also think that the exceptions are kind of wrong approach (compared to z/OS ABEND conditions), and it's not entirely true that failing loudly is a bad practice, but that's for another discussion.

</comment></comment></comment></comment></comment></comment></comment><comment><USER30> Can we add column numbers to the stack traces? Seems like that would solve this in the general case.

<comment><USER31> no, not really. Java Class format doesn't support columns, just lines.

<comment><USER5> Just imagine the request read "Can we add column numbers to the stack traces? And to whatever code that relies on to add column numbers to stack traces?"

<comment><USER31> All the existing code and libraries have to be recompiled. Non-javac compilers have to be updated, etc.

Pretty much all byte code editing tools would be obsolete as the constant pool needs change and so on. Also the generated byte code would be more verbose (worse load times)

The current change is easy to implement and it'd work on code compiled for/with java 1.0.

</comment></comment></comment></comment><comment><USER32> After 20 years, first in Java and then in Scala I've been tortured by this error message. Some years ago they fixed ClassCastException which for a long time also didn't tell you what was wrong. There are some others if I remember correctly with bad error messages, like NumberFormatException. In general error messages on the JVM are very bad, wish they would take a look at Elm error messages.

I've left this year the JVM for TS, but glad for everyone who uses the JVM.

<comment><USER33> The default compiler options for java provide a lot of information on null pointer exceptions. I'm sort of blown away that so many on this thread are confounded by NPEs, in my view they are dead simple to track down _if_ you have access to the source.

<comment><USER32> As I'm running a legacy larger Scala app, what would that compiler options be? e.g. for the line

        service.withName(customer.getName().firstName);

with a NPE in line 25?

<comment><USER33> Break out the line into multiple lines...

String s = customer.getName().firstName;

service.withName(s);

<comment><USER34> So the answer is rewrite your code to work around tooling deficiencies?

I'd prefer this be fixed in the JVM, so you can decide to write your code in the way that's most readable, and not be forced to write it a certain way because the tools suck.

</comment></comment></comment></comment></comment><comment><USER35> If nothing else, it is really interesting to see exactly why this is hard.

<comment><USER36> Historic reasons, Java used to be bloated so things like these were not included, not computers are faster, have more memory and object metadata can be expanded.

<comment><USER37> > have more memory

The L in Java stands for Low Memory.

<comment><USER36> Nice joke from 2002

<comment><USER37> Last time someone was let down by Java...

</comment></comment></comment></comment></comment><comment><USER38> Better than nothing, but worse than having a type system than disallows the exception it in the first place.

<comment><USER39> Maybe or optional types don't really help because your "get value" functions also throw exceptions, or have undefined behavior, if the value doesn't exist.

Examples:

[https://en.cppreference.com/w/cpp/utility/optional/value](https://en.cppreference.com/w/cpp/utility/optional/value)

[https://docs.oracle.com/javase/8/docs/api/java/util/Optional...](https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html#get--)

<comment><USER40> The distinction here is that those implementations aren't a type system, they are types in the existing c++/java type system.

In many languages that support Optional types as first-class citizens, it is a compile-time error to ignore the fact that it may be null/none. Your code must deal with this, and you won't have any surprise exceptions, even if you are lazy.

<comment><USER41> Which languages? In the languages that I'm somewhat familiar that support Optionals (Kotlin and Swift) you can still get NPEs, there's just some nice syntax that makes it harder to do accidentally (e.g. by using !! or ! on a null/nil optional)

<comment><USER42> Rust does not allow null values without resorting to unsafe code.

<comment><USER43> Technically, it does: std::ptr::null and std::ptr::null_mut are not unsafe. (Of course, you cannot try to dereference the resulting pointer without using unsafe.)

</comment></comment></comment></comment></comment></comment><comment><USER44> I don't know why i find this so funny but it's definitely something that would be greatly appreciated!

</comment><comment><USER45> It is almost 2020 so it is reasonable to know what the actual error is.

This reminds me of old C/C++ parsers that couldn't tell you what line was expecting a bracket or semicolon and you got to manually find the parse error.

</comment><comment><USER46> This is awesome! I ran into this exact issue yesterday evening trying to debug a NPE on foo.bar().baz().hello()

IMO overhead should not even be a consideration. It doesn't make sense to sacrifice detailed reporting just so someone can repeatedly handle NPEs as part of their application's logic. I can't imagine a situation in which I would look at code that throws enough NPEs for overhead to be a concern and say "yes this is well designed code"

</comment><comment><USER47> This is too much of a hack; I predict it will be unreliable, at times sending programmers on wild goose chases more time-wasting than an uninformed investigation.

<comment><USER48> Because of some track record of Java, or because you just have a feeling about it?

I don't program in Java at all, and frankly, I was flabbergasted to see a change as obvious and useful as this wasn't already in there a decade ago. Or at least 3-4 years ago where a lot more languages started advertising better compilation error messages.

<comment><USER43> > Because of some track record of Java, or because you just have a feeling > about it?

It's proposing to reverse-engineer the corresponding source code from the bytecode when encountering the exception. That does sound like a potentially unreliable hack.

<comment><USER49> Not necessarily. The sort of dataflow analysis they're talking about is an inherent part of bytecode verification already. A more advanced version of it is done every time a class is loaded. JVM bytecode is designed to make this sort of thing possible.

</comment></comment></comment></comment><comment><USER50> I wonder if it's possible to add something similar to the protection you get in Haskell to other languages via some static analyzer or something.

In Haskell, it's pretty much impossible to have unexpected nulls because the ability to return nulls is something that is expressed in the type and needs to be handled before working with the possible type to be able to pass the type-check of the compiler.

For example, if I had a function:

      findFistOdd :: [Int] -> Maybe Int

That returned the first odd number in a list of numbers, the Maybe wraps the return value so the result is either `Nothing` or `Just someNumber`. I can't work with the result directly like

      1 + findFirstOdd [2,3]

It would fail the type check, because I need to tell the compiler what the program should do if findFirstOdd couldn't find an odd number. (1 +) is certainly not expecting a NULL as its argument type is Int. I can tell it, "Just die if that happens":

      1 + (fromMaybe (error "couln't find odd number") $ findFirstOdd [2,3])

or I can tell it to work on the inside value if it's there, returning Just (1 + someOddNumber) if it's there or Nothing if it's not:

      (1 +) <$> findFirstOdd [2,3]

Conversely, if a function says it returns an Int:

      addOne :: Int -> Int

That means it returns an Int, guaranteed. That's never going to be some null value. It's not something you'd ever have to consider.

Kind of wish all languages were like this. Nulls are probably the cause of most unexpected exceptions and it could be something that could always be caught without even running the program.

<comment><USER51> Optional is Java's impoverished version of Maybe:

[https://docs.oracle.com/en/java/javase/12/docs/api/java.base...](https://docs.oracle.com/en/java/javase/12/docs/api/java.base/java/util/Optional.html)

Of course, an Optional reference can still be null because it's still Java. There are also other implementations of Maybe-like types, and implementations of Either-like types, etc in the Java ecosystem.

</comment></comment><comment><USER52> > Given the bytecode, it is not obvious which previous instruction pushed the > null value. To find out about this, a simple data flow analysis is run on > the bytecodes.

This is a petty nit on what sounds like some great work but please do not use the word "simple" in technical contexts like this. Having you assert that it is simple does not make it easier for anyone to understand, and it is really quite irritating. I don't even know what "data flow analysis" is and I've been involved with computer programming and data analysis for 15 years.

<comment><USER43> > I don't even know what "data flow analysis" is and I've been involved with > computer programming and data analysis for 15 years.

You probably haven't been involved with compiler development in these 15 years; data flow analysis is one of the techniques used by optimizing compilers to reason about the code. Given the context (not only there is a compiler converting Java source code to Java bytecode, but also the Java Virtual Machine acts as a "just-in-time" compiler from the Java bytecode to machine code), everyone involved most probably already know what "data flow analysis" is. And by "simple" the author most probably means that a basic data flow analysis, with no extra bells and whistles, would be enough for the described purpose.

</comment></comment><comment><USER33> Interesting, so they want to go beyond the line number of the exception and include information on what on the line is null.

It's sort of funny that their example doesn't follow the usual Java style guidelines of encapsulating member variables in the parent and using set() and get() methods for access.

a.to_b.to_c.to_d.num = 99;

This could be rewritten as a method in 'A' as...

protected void setDNum(int num) {

      C c = b.getC();

      D d = c.getD();

      d.setNum(99);

}

In this case, a nullpointerexception would include the line number (using default compiler options) clearly indicating which is null.

</comment><comment><USER53> >As computing the NullPointerException message proposed here is a considerable overhead, this would slow down throwing NullPointerExceptions.

You could lower the overhead by not producing these messages if the exception is thrown frequently. It would be similar to the existing OmitStackTraceInFastThrow mechanism [0].

[0]: [https://www.oracle.com/technetwork/java/javase/relnotes-1391...](https://www.oracle.com/technetwork/java/javase/relnotes-139183.html)

</comment><comment><USER54> I don't see that many NPE in kotlin these days but pretty sure that on java/Android I get a useful error message.

Is that an ART/Dalvik feature ?

<comment><USER55> I don't remember getting any useful error message, but I've been using Kotlin for 3 years now, so I might not remember correctly. Can you post a stacktrace of what you're referring to?

<comment><USER54> as stated in another comment, you get : s exception: Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Integer.toString()' on a null object reference

the name of the method causing the crash (toString in that sample) + the line number and location thanks to the stacktrace (although in some rare case it is 100% accurate, but still pretty close, maybe that's due to runtime inlining) and it is very trivial to know where the exception comes from.

</comment></comment></comment><comment><USER56> Meanwhile, for as long as I can remember, Visual Studio could easily jump straight to the offending null variable when debugging C#.

<comment><USER57> There's a difference between an IDE offering it, or the JDK

<comment><USER58> The CLR gives you all that information. It's not just an IDE thing.

<comment><USER59> Still an open issue [https://github.com/dotnet/coreclr/issues/25](https://github.com/dotnet/coreclr/issues/25)

The debugger in VS2017 does give the information, but I suspect thats just by re-evaluating the expression.

</comment></comment></comment></comment><comment><USER60> Java is pretty weird land. It's 2019 and there's still this issue with Nullpointer Exception and the other big limitation is that you cannot create a new instance of a generic type in a generic function, making programs dynamic, like in C++. Funny, because the whole JVM is based on C++

</comment><comment><USER61> I'm a bit torn on this because I always avoided having too many method calls on the same line. Code Complete recommended this a long time ago.

However now I see just about everyone stacking this method calls one after the other. Is this just acceptable now?

state = stateFromPostcode(customer.getAddress().getPostCode());

<comment><USER62> Depends really. Can getAddress() return null or is it guaranteed to be there per your system design? If it's not then that code is wrong, but if you know your invariants and enforce them higher up the chain then perhaps not.

I realize that all sounds very obvious, but like most things... it really does depend. It can certainly make debugging harder if you need to step through. Personally I try to write code which simply doesn't allow nulls below the first layer they may be encountered. Not always possible though (e.g. nullable fields in entities and whatnot.)

<comment><USER63> This is where annotation based null analysis can really help.

[https://dzone.com/articles/eclipse-annotation-based-null- ana...](https://dzone.com/articles/eclipse-annotation-based-null-analysis)

</comment></comment></comment><comment><USER64> this is good stuff. please come back 10 years ago and do it!

<comment><USER65> I am so frustrated at the slow pace of java but then I remember that for some reason everyone is using JS now and laugh in at-least-some-semblance-of- typesafety (also stacktraces, a module system not invented by a SF hobo, a real compiler and build systems that aren't a complete disaster)

</comment></comment><comment><USER66> I don't write Java, but support an application written in Java that gets null pointer issues and aborts all the time. It's also annoying that there is precious little information for me to go on.

<comment><USER67> It generally means that an object was supposed contain data, but it doesnt. This typically could mean the network disconnected or a file was not read. You could be missing .jar files that contain the appropriate classes. It can also be a programmer mistake.

Its not a very clear error, but you can narrow down the issue to a few things even when doing application support.

<comment><USER66> In our case it is reading from an antiquated non relational database and usually one of the millions of fields that were being parsed had a "null" value. It is easy to fix, but only if I know which ones the app needs.

<comment><USER67> sounds rough

</comment></comment></comment></comment><comment><USER68> Finally someone noticed it!

</comment><comment><USER69> But they are still calling it NullPointerException, not NullReferenceException. I guess this change is too invasive

<comment><USER5> Only a little: it would be a backwards incompatible change affecting pretty much all production java code ever written, requiring everyone on the planet spend time and money on uplifting all their code for what is really just a cosmetic change =)

</comment></comment><comment><USER70> Better idea:

      Optional.ofNullable(foo).orElse(new Foo())

<comment><USER29> In kotlin: `foo ?: Foo()`

Although I'd rather creating objects if not needed to be easier on memory.

<comment><USER71> In Java that's

      Optional.ofNullable(foo).orElseGet(Foo::new)

to avoid side effects from building a throwaway object.

</comment></comment></comment><comment><USER72> JEP draft: Remove NullPointerException from language

</comment><comment><USER73> hopefully we'll see the same thing in "Object reference not set to an instance of an object" exceptions in .NET

</comment><comment><USER74> I hope I'm not the only one who read the title as adding some helpful text to the exception for n00bs, which explains about the very concept of null.

</comment><comment><USER75> That moment when you step out of your safe Scala world just to realize that people still face NPEs.

<comment><USER76> I write exclusively in Scala, but NPEs still exist. The moment you introduce a java library to your code, you become vulnerable to them. And if you have an inexperienced java developer switching over to scala, you'll get nulls in scala code as well.

And in performance critical code you might find them as well. Sometimes dereferencing an option is too costly, so you put up with an anti-pattern in order to get lower latency or higher throughput.

</comment></comment><comment><USER77> Other than supporting and working with legacy software, I cannot muster any reason to write code in Java at this point... it's just a terrible language to work with.

<comment><USER51> Java sucks in a lot of ways, but the reasons why it sucks and the methods for mitigating the parts that suck are well-known. On the plus side, you get an ecosystem with high-quality libraries and tooling that actually come with documentation and examples, you get a good-enough type system to allow reasonably safe and strict development, and you can easily find solutions for any pitfalls you fall into because it's likely 1000+ people have already done the same. As a member of the [http://boringtechnology.club/](http://boringtechnology.club/), I embrace Java's warts and enjoy its usefulness.

My advice:

\- avoid frameworks like the plague

\- write in a functional style

\- lean on the type system as much as possible

\- don't chase the trendy stuff

\- avoid annotations

\- use code generation</comment></comment>


The Subway Is So Late, It's Making New Yorkers Early - <AUTHOR> https://www.nytimes.com/2018/04/06/nyregion/subway-late-early-new-york.html <comment><USER2> It's interesting seeing the ways people work around this, even for people who don't have hard start/end times (e.g. tech employees).

I have one friend who uses Citi Bike to get to important meetings < 30 blocks away, because they don't trust the subway to get them there on time (and during peak hours, cabs are even slower). I have another who goes pretty far out of their way to avoid the more troublesome lines (the F, specifically). Some have started using the bus much more regularly, because at least the bus doesn't break down for an hour at a time. One manager I know just stopped scheduling any meetings before 11, because they got tired of having people miss meetings or come in late because of the trains.

I think people who don't live in the city don't realize how (relatively) stressful it can be when the trains are late. Riding the train during peak hours is already a pretty stressful experience: The sardine analogy is very real, and it's fairly common for trains to be so packed that I literally don't have room to even put my phone in front of my face (let alone a book or anything else) to pass the time.

Now imagine that, but the train platform is also similarly packed. And people are fighting (sometimes literally) to get onto the packed train. And you'll have to wait for 2-3 trains to pass, because there's no empty space on the trains. And you're late, and you have no idea when you'll get to where you're going because the train ETA board just says "Delay". And when you need to get off the train, you'll have to just pray that people make room for you or you'll have to really force your way through the crowd on your way out.

<comment><USER3> I purposely live within easy biking distance of the office for this reason, which I'll admit is a luxury that not everyone can afford. Fortunately tech pays well.

Between my own bike and Citi Bike I can get everywhere I need to without relying on any form of mass transportation. Biking is frequently the fastest form of transportation, depending start/end point of the trip anyway. It certainly is for my daily commute.

<comment><USER4> Strangely enough, even in cities such as mine, which aren't so packed, cycling is _still_ faster. Busses are faster than cars because they don't need to park, but still take 30-35 minutes. I can cycle in in 20 minutes. Note there is no train in my direction.

I think this is partially because bicycles are not that popular here, but there are provisions for bikes that go above and beyond cars. Having seen Bruges in Belgium, The bike queue can be comparable to a car queue (narrower, but none the less). I imagine other cycling heavy countries are similar.

<comment><USER5> I live in Palo Alto and this is frequently true even though biking is definitely an afterthought in most cases. By car, I can get to work in about 30 min (+/-10 with traffic) but can bike there in consistency less than 20.

<comment><USER6> Same here in the east bay, driving to work in Emeryville takes 15-25 minutes and then add another 5-10min to park, even in the garage. If I bike to work its less than 25, usually around 20 and I can leave my bike in the small garage in the basement or just take it up to my office. Takes me longer to get home since have to climb back up 300ft to my place in Piedmont. The bus is pointless and would take about 20min of walking + the time on the bus.

<comment><USER7> Spinning is winning. Instead of using high torque shift to easier gears and spin as fast as you can while seating on the saddle. You're going to get there with fresher legs though a bit hotter in general—it's a nice cardio—but that shouldn't be a problem because you're steps away from your shower.

<comment><USER4> I've been doing higher RPMs for a while now (I'm going to guess about 80) but I think this may have impacted my knees more. I've shifted to higher gears to try and reduce the number of repetitions my joints have to do, to shift load to the muscles

</comment></comment></comment></comment></comment></comment></comment><comment><USER8> The fundamental reason for worsening subway service in recent years may be more mundane than we assumed: [https://www.villagevoice.com/2018/03/13/the- trains-are-slowe...](https://www.villagevoice.com/2018/03/13/the-trains-are- slower-because-they-slowed-the-trains-down/)

It was slowly driving me insane at my last job. Now, I just have to dial in to the morning meeting, then I can work from home for about an hour before heading in to the office, and we've been asked to stay home even for fairly light snowstorms this winter. I wouldn't be surprised if other tech companies in the city are adding more flexibility to their work hours.

<comment><USER9> The system is a century old with original electromechanical controllers.

<comment><USER10> that is no excuse. it's called maintenance. other cities manage to maintain their transit system . NYC has zero excuse . See Tokyo's transit history for how often they've upgrade the entire system a piece at a time.

<comment><USER11> ... and do most of those upgrades take place when the Tokyo subway shuts down each night between 1am and 5am? It's hard to replace signal systems on tracks with a train passing every few minutes.

<comment><USER12> So if the Tokyo subway shuts down each night between 1am and 5am, why can't the NYC subway shut parts down periodically? It's common here in Melbourne to have whole lines shut down during the summer for maintenance or other service changes (e.g. removing level crossings). We hate it but we cope.

There's literally no excuse for not maintaining your infrastructure. Every probably can be solved. Shut down a line every night till the job is done. Or shut it down for a day or two. Is the line integrated with others? Maybe you'll have to shut down three or four lines. People will hate it. But if it avoids months and months of problems to have a few days, they'll cope.

<comment><USER11> It's not to say that they can't — it is to say that they don't due to history and expectations. New Yorkers expect it to run 24/7 because it always has and people routinely make life decisions about where to live and work due to that. You can't just change it without a pretty drastic social effect that would take years to smooth out.

<comment><USER13> Ok then if noone wants the change then honestly stop your whining

</comment></comment></comment></comment></comment></comment></comment><comment><USER14> To me (as a life long New Yorker) this is yet another sign of our decaying society - our crumbling empire. I've often wondered if the people of Rome understood that their empire was crumbling. Did they actually see the signs as it happened, or did it occur in such a way that the slow-motion decline wasn't sharply felt? The problems here aren't just the subways. The roads, the bridges and other infrastructure are also crumbling around us. The airports are a disaster of endless construction that never get completed and just add to the misery of travelers and the sense of overall decay. The LIRR is as bad or worse as the crumbling subway system. More New Yorkers are living paycheck to paycheck as the cost of housing, healthcare, insurance, and education soar far beyond what working people can afford. Our bloated bureaucracy continues to grow like a cancer, guided by the likes of the eminently corrupt Andrew Cuomo (and his allies in both political parties who serve the same moneyed interests), draining ever-more resources while providing ever-fewer critical services. Homelessness and poverty are increasing, while those at the very top of the economic pyramid are growing fabulously wealthy. Among this myriad of growing problems, we as a nation continue to ignore these issues and pour our limited resources into endless foreign wars and occupations. Unfortunately, dark days are ahead.

<comment><USER15> Increased demand for the subway is not a sign of decaying society, it's a sign of prosperity and growth. It's a sign that people feel more safe using the system and living in New York, and that there are more opportunities for people living there.

I for one would much rather live in a NY dealing with some temporary growth success issues than live in NY during the 70s (or really, any time before).

<comment><USER14> I've lived in New York City for over 40 years. If you view crumbling infrastructure, 44% of NYC residents living at or near the poverty line and soaring homelessness as signs of "prosperity", that's your prerogative.

[https://patch.com/new-york/new-york-city/nyc-homeless- popula...](https://patch.com/new-york/new-york-city/nyc-homeless-population- grew-4-year-data-show)

I suggest you fly into Laguardia airport to see some world class prosperity.

[https://www.usatoday.com/story/travel/flights/2015/07/28/lag...](https://www.usatoday.com/story/travel/flights/2015/07/28/laguardia- worst-airport-crowded-concourses-terminal-weather-flight- disruptions/30782433/)

[http://abc7ny.com/traffic/traffic-nightmare-for-drivers- head...](http://abc7ny.com/traffic/traffic-nightmare-for-drivers-heading-to- laguardia-airport/2702148/)

If you want to enjoy even more "prosperity", you can pay $344 a month to ride the LIRR (as long as you don't have to get anywhere on time).

[https://nypost.com/2018/03/15/last-years-lirr-delays-cost- ri...](https://nypost.com/2018/03/15/last-years-lirr-delays-cost-riders- millions/)

</comment></comment></comment><comment><USER10> it's frustrating to read this thread and watch people make excuses for NYC . NYC is not special. Tokyo has old subways 3-4x the stations and 10x the riders. They manage to rebuild , change tracks, build new ones and generally do the maintainence and upkeep required to keep it running well and on time.

NYC's issues are entirely about politics and leadership and nothing to do with anything unique to NYC

que more excuses

<comment><USER16> NYC is unique in that they are one of the few systems running non-stop. Any maintenance results in delays. Other large systems (Tokyo, Moscow, London) shut down most nights. Those 4-5 hour windows can make a lot of difference.

<comment><USER17> As I mentioned in another comment: what stops NYC from running replacement busses while one of the lines is under maintenance during the night? A bunch of cities do that, for example Berlin, I don't see what stops NYC from doing the same...

<comment><USER16> The economy of Berlin is based on available transport. Using buses prolongs journeys a lot, e.g. in London the city estimated that a sizeable chunk of people will see a 30+ minute journey reduction due to night tube.

Using replacement buses works but would likely damage 24h businesses and take one of New York's advantages away.

</comment></comment></comment></comment><comment><USER18> Many readers have quoted the superiority (rightfully so), of Moscow and Tokyo subway systems.

Both these systems operate from around 5am till midnight (approx). NYC Subway operates 24 hours. These few hours downtime, make a huge difference with respect to maintainability and upkeep. These 4 hours each day adds up to ~60 full days of maintenance window.

Maybe NYC can stop the late-night services for a year or so and I am sure better brains than mine have considered this.

On a separate note, it might help to note that usage of NYC Subway has increased by 80% over the last ~20 years (1). It will be interesting to see the same trend for Moscow and Tokyo subways.

NewYorker here and Subway rider here.

(1)[https://www.nytimes.com/interactive/2017/06/28/nyregion/subw...](https://www.nytimes.com/interactive/2017/06/28/nyregion/subway- delays-overcrowding.html)

<comment><USER19> Late night tho... that 2am subway home is a lifeline for a lot of folks. I remember getting home at like 4am once thanks to the subway. I could probably live without it, but it wouldn't be as nice.

<comment><USER20> You need to boost other public transport services to provide at least some level of late night service. In Sydney, they run substitute buses between many railway stations from 0000-0430 - it's not great, but it's possible to use buses to provide a minimum level of service coverage when the railways are shut down.

</comment></comment></comment><comment><USER21> What does it exactly mean for a subway that's supposed to run every 3-5 minutes to be "late"? Are NY metro trains so infrequent that a schedule is that important?

<comment><USER22> It's a cascading failure issue. Toronto has the same problem, on a smaller scale. What I see here:

Step 1: a train gets delayed for a minute somewhere on the line. A dozen common reasons exist- someone becomes ill, mechanical issue, debris on the tracks, etc.

Step 2: Because it's rush hour, there's minimal buffer time between trains so the train behind it must also stop (and the one behind it, and the one behind it, etc). Even a 60 second delay of one train can back up the whole line.

Step 3: Because a train is late, there's more people trying to get on and off, which makes it take more time per station. As well, with more people per train, there's more human-related delays per train. The additional delays mean "go to 1".

With large enough buffers between trains, the system is stable- the problems get smoothed out. With small buffers, like during rush hour, the system can get into a feedback-loop total system failure. A 30 minute trip becomes hours long.

<comment><USER23> The subway equivalent of gridlock :(

<comment><USER24> Traffic waves. Interesting topic. I just enjoy the surfing to work and let the waves take me gently along :-)

</comment></comment></comment></comment><comment><USER25> Maybe they should have scheduled maintenance closures that reoccur over the same parts of the day every day. Say, 1-5am?. So, it would be a 20hr/day instead of 24hr/day subway, but would be dependable during those 20 hrs.

<comment><USER26> Then how do people get home from the bars? That's my major complaint about BART, that it stops running too early. If I'm out late enough in the city, I can't return to the East Bay easily, so I either end up stressing to get the last train, or end up having to use my car, which has its own stress involved.

<comment><USER27> In Moscow where Metro is officially closed from 1:00 up to 5:30 there are special night buses and trams for this.

<comment><USER28> Same in London (buses, not sure about trams). Catching a night bus home from Trafalgar Square along with eighty other people who are also at the wrong end of a big night out is a classic rite of passage for Londoners.

It got a bit less overwhelming when they started running the night buses from all over central London rather than just from Trafalgar Square. It's changed again recently now that some underground lines are 24 hour.

<comment><USER16> London night tube remains weekends only, though. And even then, 30% of passengers are going from/to work. The importance of a 24h subway is not to get drunk people home but to help people working night/early shifts. The main reason London will not get intra-week night tube anytime soon is because of the maintenance issues this causes. The NYC subway was explicitly mentioned when this was proposed.

</comment></comment></comment></comment></comment><comment><USER29> I have a limiting rule, living in New York, to leave for meetings no later than 1 hour before the start time. It ensures I'm relaxed and on time. It gives me a moment to observe before the action begins. And it forces me to be more judicious about the number of meetings I book. (Granted, this only works since I can be productive on my phone while I wait.)

<comment><USER30> I have exactly the same rule, unless I can got to my appointment by foot.

</comment></comment><comment><USER31> I'm confused as to why the US seems to fail or fall so far behind in infrastructure compared to other developed nations. It seems that we throw money at our problems but seemingly get nowhere. It's sad because there's many amazing things about this country, but we cannot do basic things like make trains run on time.

<comment><USER32> In almost all cases I think this is a valid critique, but not against the MTA. It's one of the oldest, most complex, largest and among the ten highest daily ridership. To me, it remains an absolute marvel.

Of course daily riders do and will forever complain. As someone who riders infrequently and is warned about impending doom, I find myself too often pleasantly surprised.

<comment><USER33> Why does the London Underground mostly run to schedule, though, then? Because it's older, arguably as complex (especially the subsurface railway), and not that far below NYC in ridership…

<comment><USER34> The biggest difference is the Tube doesn't run 24/7\. You have a guaranteed maintenance cycle.

Also my understanding is that European unions are less corrupt than American ones.

<comment><USER35> Why are American unions singled out to be maligned? French unions will kidnap their boss if negotiations breakdown. American strikers have been fired upon by the local police.

I get it, you've driven a poorly made American car once and it your blaming the union workers who built it. Not the factory managers, not the engineers who design with poor tolerances, not the accountants who choose cheap, poor material.

I've met unionized school teachers who get fired in June and rehired in August. Why? So the schoolboard won't have to pay mandatory cost of living increases that the union negotiated for. Better to pay teachers less every year.

</comment></comment></comment></comment></comment><comment><USER36> Just to put things in perspective.

[https://www.moneycrashers.com/worst-us-cities-traffic- commut...](https://www.moneycrashers.com/worst-us-cities-traffic-commute- time/)

I've been commuting (by car) for 30-60 minutes one way depending on my job for 20+ years in Atlanta. I didn't realize that a 30 minute commute was considered "bad".

It really doesn't bother me. I put on a podcast and enjoy the downtime. I also don't have young kids.

When my 15 year old son has to stay late and I can't get to him,I just tell him to take Uber. My wife and I have agreed to "work hard, play hard". We cherish our weekends.

All that being said, I can understand the difference being stuck outside in the cold at the whims of public transportation and being in your own car.

<comment><USER37> The idea of spending all weekday hours working and "cherishing" weekends is terrible to me. If I can't go out on any weeknight and enjoy time with friends or family due to having to commute, then I'm looking for a change.

<comment><USER36> My friends are so disbursed in the metro area we wouldn't even think about trying to deal with the traffic in the evening. I have a group of friends that work close enough together to meet for lunch with proper planning but we wouldn't dare voluntarily deal with evening traffic to meet up.

When I was dating my now wife, we lived in opposite sides of town - 38 miles apart. That's life in a major metro area.

You either live in the burbs where you can get a nice affordable big house or live closer to where the jobs are and live in a shoebox.

</comment></comment></comment><comment><USER38> Pure coincidence? Meet the Brit in charge of fixing NYC's subway. [http://www.bbc.co.uk/news/world-us- canada-43561378](http://www.bbc.co.uk/news/world-us-canada-43561378)

</comment><comment><USER39> The trains should only run on tracks that are completely enclosed (More control on the environment will realize better reliability, and as an aside nicer living space. Raised tracks are ugly.), Also they should run on rubber wheels like the Montreal metro has since 1966.

Both metros should have barrier between platforms and tracks since they know where the doors will open. It's sad but a non-negligible cause of delays are due to people jumping on the tracks.

<comment><USER40> > Both metros should have barrier between platforms and tracks since they know > where the doors will open.

This only works for environments with _one_ type of rolling stock only. It's not uncommon that you take a ride in a decades-old train (e.g. the oldest trains in the Munich subway hail from 1971, they are expected to run for essentially over 50 years!), switch lines at a station and end up in a train that rolled off the factory line 2 years ago. Each new train generation has, for example, different door widths, door positions, even the _number_ of doors per wagon can change.

<comment><USER39> That's true. Montreal just upgraded their rolling stock: (The MR-73 didn't owe them anything [https://en.wikipedia.org/wiki/MR-73](https://en.wikipedia.org/wiki/MR-73)) but the new cars ([https://en.wikipedia.org/wiki/MPM-10](https://en.wikipedia.org/wiki/MPM-10)) have the doors in the same place as the MR-73 cars.

Admittedly I hadn't thought of that, but I don't think there's that much variety in rolling stock for a given location, and when speccing out replacements I don't think it's too much to ask that the doors are in the same place (cars are purchased in dozens...), maybe I'm wrong. Montreal is a much smaller network than New York.

<comment><USER41> >when speccing out replacements I don't think it's too much to ask that the doors are in the same place (cars are purchased in dozens...)

that pretty much only works if you have 1 generation of rolling stock currently in use, and you know (or forsee) that you want to install platform doors. considering that the new york subways were built before platform doors were a thing, I can totally see how door location wasn't even a concern when purchasing rolling stock.

</comment></comment></comment></comment><comment><USER42> I took a trip to ny last week and the area i was staying at (near trump tower, off lexington), the closest subways were the 2/3/E/M but apparently on Saturday the 2 and 3 weren't available going downtown, so I had to walk a block or so to get to another line to get where I was going.

Then I was in Brooklyn to watch a show that night, we got out around 9PM and was trying to figure out how to get back into the city, the line that was suppose to take us wasn't running it's normal route, so we had to take one stop into Barclays Center which renamed another line to the line that we wanted to go on. Seemed like the locals knew about this though.

I didn't experience any major delays, but it was more like there was so much work being done that you had to spend extra energy remembering which line was available only one way and starting at which station. Google Maps was definitely very helpful.

<comment><USER34> > Seemed like the locals knew about this though.

I think about this a lot. I know what it means when the AC is rerouted along the F to West 4th and can plan accordingly. How the hell is a tourist supposed to figure out how to get to Fulton?

<comment><USER43> +1. Signage in NYC metro is woefully poor IME.

In the London Underground pretty much everywhere you look in the carriage, there is a map or route diagram, with clear announcements and digital signage telling you where you are and where the train is going. Same with the platforms - the station name is repeated many many times everywhere on the platform and there are maps, signage and route plans all over the place.

In NYC it seems that maps and signs are kept to a minimum, with some stations just having a singal initial (!) on a grubby ceramic wall tile to identify the station IIRC. The driver might mutter something over the tannoy, but if you're not familiar with the vernacular or plain just don't understand what they said, your often left confused about where you are or if you are going in the right direction.

</comment></comment></comment><comment><USER44> I haven't been in NY for over 10 years. When I was there, the subway was fantastic. On time, cheap and clean (ish)

Has there been some very rapid drop in service? is this something which forseeably could get better soon, or is it a one-way hole without a huge capital investment?

<comment><USER45> [https://www.nytimes.com/2018/02/20/nyregion/mta-train- delays...](https://www.nytimes.com/2018/02/20/nyregion/mta-train-delays.html)

</comment></comment><comment><USER46> I've had a couple instances where the MTA was so messed up either through delays or a weekend schedule change that I had to get off the subway and order an Uber to reach my destination...

SHOWTIME folks seem to be starting again. I still have a strange anxiety that some crazy person will push me into the tracks if I get too close after those string of incidents a few years back. And now I also wonder when the next train derailment will be since those seem to now be a real possibility. Some of our trains are literally past their expiration date and begging for an accident. .

</comment><comment><USER47> NYC will never know how bad it is until they go out of the U.S. to such places in Asia like Thailand, HK, Taiwan, or Japan and experience those subway stations. There is no such thing as a "weekend service" and subways arrive on- time without question, there are clean restrooms and WiFi. The NYC subway is decades behind. It has remained stagnant in advancements and has now broken down due to lack of development and overcrowding. It's a problem.

</comment><comment><USER48> There is one benefit of leaving early: not having to deal with vast crowds of riders on an overpacked train. Another side effect of underfunding.

</comment><comment><USER49> After I started riding motorcycle instead of public services or my car, time spent during transportation reduced almost %80. I live in Istanbul, when I leave work to go home (prime time) it takes up to 2 hours with car and 1.5 hour with public transportation to reach home. With my motorcycle it is around 25-35 minutes.

<comment><USER49> There are many advantages (and few disadvantages) riding, for me time spent on road was the killer and you can not imagine how much I recommend it.

</comment></comment><comment><USER50> Wow, not one person read this article and saw the NYC cultural commentary? Don't you all know we hate being early as much as we hate being late?

</comment><comment><USER51> I'm confused about the part with the teacher. Where I went to school ALL the teachers arrived 15-60 minutes earlier and went into their dedicated room. I don't remember exactly, but one of them coming in late was a "once every few years" thing.

Sure it sucks if you're early but I suppose they could also just get some take-home work (like grading tests) that's not due that day or prepare some stuff. Sure, some of them probably killed the time with morning newspaper and coffee... but still.

<comment><USER52> Oh man. Where I'm from (Singapore), tests are more of a never-take-home- unless-you-absolutely-have-to work.

</comment></comment><comment><USER53> Similarly, I've come to rely on BART being late—although instead of arriving too early, I'm more likely to arrive late when I bet on a few minutes to spare, but the train happens to be running on time…and then end up working later to compensate.

</comment><comment><USER54> God I'm glad that I live in a city where the public transit fans have soundly lost.

</comment><comment><USER55> Same with driving with variable traffic</comment>


Show HN: Fog computing with beacon local storage API - <AUTHOR> http://blog.estimote.com/post/151748617310/our-latest-innovation-beacon-storage-api <comment><AUTHOR> Hi HN, this is Jakub, Founder of Estimote (YC S13).

We have just enabled in our SDK simple key:value storage for 1Mb built-in memory in our Location Beacon.

Your simple beacon apps don't need to store data in the cloud anymore; for some application you can keep content/sensor data/analytics directly in the nearby beacons.

Happy to answer any questions here : )</comment>


Our entire credit bureau system is broken - <AUTHOR> https://www.theverge.com/2017/9/8/16276584/equifax-breach-social-security-number-broken-system <comment><USER2> The fact that your SSN is still used as a national ID in today's age of tecgnology is what astounds me the most. Why is it my fault and my credit ruined when my identity gets stolen? All it takes sometimes to steal an identity is to convince a teller or whoever that you're someone you're not! If that happens, that's the business' fault, not mine.

Here's a scary fact: take your SSN and add 1 to it. That's a valid SSN! There's no checksums or any security features at all. If you were assigned a(n) SSN at birth, that new SSN has a high likelihood of even being someone born in the same hospital as you.

<comment><USER3> What LOE (Level of Effort) would it take to replace our current SSN with a public/private key system? More than just a massive bureaucratic shift and public reeducation movement?

Could we have a memorizable public key and still have any meaningful level of security?

<comment><USER4> > What LOE (Level of Effort) would it take to replace our current SSN with a > public/private key system? More than just a massive bureaucratic shift and > public reeducation movement?

You are thinking about this from the wrong direction. The problem isn't that the government hasn't provided a PKI, the problem is that social security numbers are being used for identification.

This was a serious fear when social security was originally created. For many years social security cards had the words "not for identification" printed on them. They contain no biometric data, not even a picture. Their purpose _is not identification_.

So the solution is obvious. Actually prohibit social security numbers from being used for identification. Don't allow creditors to even ask for them.

Then people will figure something else out on their own. Instead of a credit reporting agency existing at all, new credit applications could ask for your account numbers at existing creditors and then the new creditor can get your credit history directly from them. It would be straight forward to automate this -- and even require you to prove that you're the account holder by presenting your card from the other bank (or signing into its website if online).

There is no need for a national identification system. Having a bad one was the original problem. Replacing it with some differently bad one is no better.

<comment><USER5> But it is used that way for the lack of a better alternative. In my opinion the solution is a free federal ID card, where all the information on the card (including the picture) is digitally signed, to make forgery nearly impossible.

The only non trivial element is how to sign the photo. I guess there must be a way to sign a degraded version of the picture so that even an average scan of the ID card would be verifiable. Or the card could contain a small, cheap, water resistant memory chip which contains the picture in digital format. Then you can have a high degree of confidence in this physical document.

And there could be other usage of that card. Like if you make it a chip & pin so the card could become an unforgeable digital signature (physical signatures are absurdly unsecure too).

<comment><USER6> Many other countries have these exact cards. They are not new technology.

In fact, your US passport has that. Look for the biometric symbol on the front. It means there's a chip inside (not sure how to read off it) that includes your digitally signed identity details, including photo.

If you're willing to go the centralized route, then a minimalist ID card would just be a QR code that anyone can open and compare the official photo to you.

<comment><USER7> > If you're willing to go the centralized route, then a minimalist ID card > would just be a QR code that anyone can open and compare the official photo > to you.

"Just a qrcode" would be a weird and inconvenient format.

Other countries (Estonia, Spain, Belgium) have smartcard IDs. You can add a qrcode to that, but the primary data store can be secured (and accessed and updated) in much the same way a regular smartcard is, you can access it from your home with a regular card reader and the relevant access application. And of course the size is completely standard. And you can add contactless support to it if desirable.

Plus the US already has experience with these types of IDs: DoD has issued 17 million Common Access Cards.

</comment></comment></comment></comment></comment></comment><comment><USER8> Erm, what do you mean "our"? This system cannot even be justified via the usual democratic collectivism - the commercial surveillance complex is a purely independent adversary that has formed on its own!

It certainly has had help and encouragement from government mandates (SSN, drivers license/plate, monetary surveillance, etc), but even if those were eliminated it would continue just fine using its own primary keys.

As such, it can't really be top-down reformed much [0] except for correctly assigning liability for the fallout from its negligence. For instance, having to repudiate an incorrect debt from a libelous bank or surveillance company should entitle one to easily claim reimbursement for the expenses occurred (including time) to do so.

In the coming weeks we'll undoubtedly see calls to "reform" this system through the technical strengthening of the identifiers it assigns onto us. This is a recipe for rekindling belief in the authority of private surveillance as well as an invitation for it to invade even more aspects of our lives. This is not the direction we want to go!

[0] Of course we can all work on solving the problem from the bottom up by cloaking ourselves. Spend cash when possible, rotate your grocery psuedonyms often, etc.

<comment><USER9> > This is not the direction we want to go!

Erm, what do you mean "we"? ;)

While I agree with you on all other points you mentioned, it's pretty clear to me that the voting public are _perfectly_ okay with the authority of both private and public surveillance, so long as it satisfies one or more of the following criteria:

* Reduces, or is thought to reduce, the cost of credit to the individual concerned. ("I'm okay with it, if it means I can trivially get access to credit because my credit score is good.")

* Prevents, or is thought to prevent, the risk of terrorist action or harm to children.

* Is limited to "others" (poor people, immigrants, other races, etc.).

</comment></comment><comment><USER10> Freezing credit needs to be free and one button until we have this fixed. Freezing and unfreezing needs to happen quickly.

We also need to know every time our credit is accessed and updated, not monthly like current reports, realtime.

This right should be in the digital Bill of Rights that need to happen as well that you should be able to protect yourself in the case of a breach at no cost to you.

Blockchain seems like the direction, but with how slow we move in everything legislatively, we need something now that allows freezing to be free, fast and easy.

The three credit bureaus, because they are in a fixed market and not truly in a competitive fair market with a privileged position, they got lazy just like the ratings agencies during housing crash. Lack of focus on their core missions due to no competitive threats.

<comment><USER11> Freezing I can see being fast and easy. At best you can troll someone by freezing their credit at an inopportune time - which might cause them to lose money, but less likely in general, surely.

Unfreezing? The whole point is to delay access, it _can 't_ be fast or it defeats the purpose. "They" have everything they need to unfreeze (otherwise why would freezing be necessary), so the only real protection you have is to forcibly delay access until you can prevent it.

<comment><USER12> It's not hard to come up with a scheme where it's fast to unfreeze when you have a key generated while freezing.

</comment></comment></comment><comment><USER13> I was intrigued by the idea of using a blockchain to anonymize and secure lending, so I looked it up and a trial of such a thing was run a few months ago. I found this gem:

> TransUnion and Equifax said they are always assessing new ways to secure > consumer credit data, an area that is tightly regulated by governments > around the world.

[https://www.reuters.com/article/us-canada-blockchain- credit/...](https://www.reuters.com/article/us-canada-blockchain-credit/u-s- credit-agencies-test-canadian-blockchain-identity-network-idUSKBN1802OR)

The irony aside, it seems like the exact sort of thing a blockchain is good for: verifying transactions with a high degree of anonymity among parties that fundamentally do not trust each other. If I say I've had transactions that I say I have, I should be able to send you a code for you to verify it. There's no reason why I shouldn't have to consent for my private financial information to be disclosed to strangers in the first place.

<comment><USER14> I don't see how using an anonymous blockchain is useful for storing credit data because it makes it trivial to walk away from a bad credit score and start over from zero.

Also, FWIW you do have to consent for someone to run a credit check on you.

</comment></comment><comment><USER15> > This is a terrible way to manage identity. From afar, a Social Security > number looks kind of like a password. But you can change a password, and you > shouldn't use the same one with every service.

Going on a tangent, Apple has made the same mistake with TouchID.

<comment><USER16> TouchID is better than no passcode, that's the purpose for it.

Joe/Jill Public won't use a passcode on their phone, because it's too much hassle. But they WILL enable TouchID, thus rising the bar for random phone thieves/hackers.

<comment><USER17> People didn't start picking my phone up and trying to get into it until I set a pin. Back when I had an android there wasn't even a lock screen and no one ever touched it.

</comment></comment></comment><comment><USER18> > I'm sure Facebook, Google, and PayPal would all love to take over from the > credit bureaus, and there are real reasons to be wary of that. Some people > will tell you we should put it all on a blockchain, decentralizing the > system and querying discrete pieces of information as needed. New solutions > bring new problems, and there's no perfect answer to any of it.

This is what concerns me most as we move from this to implementing solutions. We now have a glut of technology companies, some large and trusted, and many that will be created specifically to address this, that will permute the risk factors an pitfalls of such a business infinitely. One hundred companies doing credit bureau things means 100 places you'll have to put your sensitive info, 100 places that will have some different vulnerability, and 100 more targets on your attack surface.

Granted, one of these solutions may be sound, viable, secure, and advantageous to consumers. But the extant bureaus and any company that comes in to compete is a business, needs to make money, and will resist competition, will resist security over profit, and will never capitulate to a better competing solution until their last dollar is raised and spent.

</comment><comment><USER19> Some government agency should publish a list of all SSNs, thereby ultimately destroying the illusions that SSNs are secret.

If anybody still uses SSNs for authentication afterwards, they are grossly negligent.

<comment><USER20> This is the case in many european countries. European VAT IDs are usually recorded in some kind of publicly accessible registry and usually build by prefixing ID of tax payer with country code.

For example in czech republic:

\- everyboby has "birth number", which is more or less equivalent of SSN except it in clearly encodes gender and for most people also DOB.

\- corporations and any entity that is licensed for trade (including sole proprietorships) have "ICO" (which somewhat funilly translates into "personal identification number"), in essence it is equivalent to US's EIN.

\- any entity which directly deals with tax office has DIC (tax identification number), which for natural persons is "CZ" \+ birth number and for other entities is "CZ" \+ ICO, same string is also an EU-wide VAT ID.

Once you start a bussiness or even own part of non-tradeable public company (which includes things like homeowners association) all three of these numbers are readily available in various open access government registries, together with first and last name and usually with registered address and thus nobody uses knowledge of one of these numbers as serious authenticator (but from time to time it is used as kind of filter for who given bussiness is willing to deal with).

</comment></comment><comment><USER21> When the system begins causing big losses for creditors, they'll start to take notice and develop a better system. Until then, the best thing you can do is freeze your credit and only unfreeze it when you need it.

<comment><USER22> Thanks, 'free market.'

<comment><USER23> Free market does _not_ mean "no regulations".

<comment><USER22> That's not what I'm suggesting. Rather, the feedback loop you identified sadly lends itself towards marketing or financial stratagem as or more easily than making substantive changes.

</comment></comment></comment></comment><comment><USER24> Here we go again. A new great example how the neoliberal thinking and narrative just simply fails on humans. You want to give your data to corporate America and assume that they will be careful about protecting it? Than I am laughing hard at you. SMH The stupidity of free markets and the myth of self regulation. Ridiculous.

That's why it's more important than ever that we support and implement new important initiatives like that of Tim Berner Lee's. He wants a platform that gives users control of their data. Very good idea IMO.

<comment><USER25> I am pretty familiar with the idea and conceptually I am a proponent for it but the question becomes who pays for the hosting of your data, what's the incentives to get me to store it and for others to use only the data that I have?

I am also sceptic with regards to corporations having the data but government owning it doesn't make it much better.

In Denmark you mostly need to get access to one place in the system and you potentially have access to the data across the different verticals, Danish system is also SSN based.

The biggest problem though is what is the alternative to a credit bureau system?

</comment></comment><comment><USER26> [https://washpost.bloomberg.com/Story?docId=1376-OV5NGV6JIJUQ...](https://washpost.bloomberg.com/Story?docId=1376-OV5NGV6JIJUQ01-6G4M3JT0SU7I3KID9LHOC0L246)

</comment><comment><USER27> I have friends who are twins and they both were issued same SSN number. Apparantly their primary key is first_name(first 6 chars)+last_name(first 6 chars)+DOB

<comment><USER17> I don't think that's quite right, the city you're born in is included as well.

<comment><USER28> Twins most likely have been born in the same city, unless the birth happened e.g. on a high speed train and they decided to file different birth places depending on the closest station.

</comment></comment></comment><comment><USER29> We have an SSN equivalent in the UK called NIN (national insurance number).

I've never been asked for it as an authenticator though.

<comment><USER30> > I've never been asked for it as an authenticator though.

What are you asked for as an authenticator? Do you have a drivers' license number, or a tax identification number, or a birth certificate number, or a passport number, or some other national identification item?

A consistently formatted identifier that's unique to every person in the country just seems like it would be too tempting for businesses not to use.

<comment><USER31> We're asked for a complex hodgepodge of government issued ID ("who I am") and utility bills, benefit letters, etc ("where I live").

Here's the Gov advice for online services: [https://www.gov.uk/government/publications/identity- proofing...](https://www.gov.uk/government/publications/identity-proofing-and- verification-of-an-individual)

Here's how they examine ID: [https://www.gov.uk/government/publications/recognising- fraud...](https://www.gov.uk/government/publications/recognising-fraudulent- identity-documents)

</comment></comment></comment><comment><USER32> Damn you Russia

</comment><comment><USER33> Not only this, but the entire banking system is fucked up. I have an account number and routing number, then I can do whatever I want to your account. That's bizarre.</comment>


I Wrote a Book: "JavaScript Application Design: A Build First Approach" - <AUTHOR> http://www.manning.com/bevacqua/?a_aid=go&a_bid=e6de0d9d

<comment><AUTHOR> Hey guys, OP here.

I just finished the year plus journey of writing a book, and I'm thrilled that I'll be soon finally holding it in my own hands. I wanted to share here a bit of what it is about. "JavaScript Application Design" is a book about quality in JavaScript software design. The agenda is split between quality in our automation processes (build, testing, release, deployment) and quality in our development processes (creating modules, testing, refactoring, using MVC, dealing with asynchronous code, etc) If you'd like to know more, chapters 4 and 5 are freely available from the link.

You can also get it from Amazon, they're already taking pre-orders.</comment>


In-Game Gold Farming a $500M Industry - <AUTHOR> http://news.bbc.co.uk/2/hi/technology/7575902.stm <comment><USER2> "true size of the sector was hard to estimate - it could easily be twice as big"

Or half as big. The article and study aren't convincing.

</comment><comment><USER3> Link to the report:

Current Analysis and Future Research Agenda on "Gold Farming": Real-World Production in Developing Countries for the Virtual Economies of Online Games

[http://www.sed.manchester.ac.uk/idpm/research/publications/w...](http://www.sed.manchester.ac.uk/idpm/research/publications/wp/di/di_wp32.htm)

</comment><comment><USER4> The only thing I fear is the health of those poor chinese workers' eyes...not to mention their overall well-being.

They might be better off doing labor work and going gold-farming only when they're too old to do labor.

Thats not to say I'm happy that they're stuck with these options, I'm chinese also and I feel for the 240 million impoverished Chinese....

<comment> daniel-cussen I've read that gold farmers usually spend their spare time playing even more WoW.

<comment><USER5> I've read that too. James Fallows has an interesting piece about these and other workers who populate the factory-dormitory world in China. A lot of us assume they're being exploited, but Fallows argues that they're more entrepreneurial than that. They can save enough money in a few years to go back home and buy land, something which wouldn't have been possible before. It would be interesting to know how many actually do this.

<comment><USER6> Sometimes it's better to be exploited.

</comment></comment></comment></comment><comment><USER7> On the one hand, it's great people who need the money have this as an option.

On the other hand, the system owners could undercut any price by selling resources created by fiat, with a few keystrokes. So in a sense, all this activity is burning away hours -- human potential -- in an inefficient process someone else could do effortlessly. And, the whole market exists only as long as the system owners won't deign to offer such services directly.

So I can't quite decide if the whole phenomenon is encouraging or discouraging.</comment>


Venice Organizes Online Vote to Become Independent From Italy - <AUTHOR> http://mashable.com/2014/03/17/venice-independence-referendum/

<comment><USER2> That's crazy talk!!!</comment>


Custom Cross-Platform Data Synchronization (slides) - <AUTHOR> http://iphone2009.crowdvine.com/talk/presentation_file/5104/Grover_Syncing.pdf

<comment><USER2> Any recommended reading on synchronisation? No specific scenario in mind, just curious.

<comment><USER3> The best paper there is: <http://www.ysaito.com/survey.pdf></comment></comment>