Recent submissions

Comment · 11 years ago
No, I recognize it's a hard problem, that's why we should be devoting significant resources to doing things now.

I get the point about unintended consequences with cascading problems (and cascading solutions to the new problems) (https://news.ycombinator.com/item?id=2743879) but the odds of screwing up here are much less than screwing up on AGI, whose work has already significantly started and may be completed first anyway making this whole discussion moot. Geoengineering is risky, but it's not as risky as other things, including inaction, which as the status quo guarantees loss of thousands of lives. Even if the climate change alarmists' greatest fears come true we still easily have 50 years to try things on smaller scales before time is up. Anyway I think it's a lot more feasible for a strong nation to lead a technological solution than to convince all strong nations to curb their development. Call it a plan B if you must, but at some point I expect climate change alarmists are going to say something like "China and Russia and India aren't playing ball hard enough, their emissions are still causing global warming that will end humanity in x years unless they immediately reduce to the levels of the USA and the EU whose combined efforts bought us y years but it's still not enough, so it's time for war to make them."

Comment · 11 years ago
When you have treated all symptoms and stopped them from arising again, the disease is effectively cured even if you still carry it. The final solution will be complete mastery over our planetary weather, it's better we do that sooner than later. Tsunami and earthquake deaths total far above terrorism deaths, we only need funding to fight terrorism to the extent that they get in the way of building to that final solution. Even if we "fix" the climate change disease (say perhaps by wiping out industrial-era and beyond humanity, the disease?) those other natural phenomena will still be killing many.
Comment · 11 years ago
I'm a fan of: http://stanford.edu/~moore/Boon_To_Man.html

Near the end: "If mankind had to choose between a warmer or a cooler climate, humans, most other animals and, after adjustment, most plants would be better off with higher temperatures. Not all animals or plants would prosper under these conditions; many are adapted to the current weather and might have difficulty making the transition. Society might wish to help natural systems and various species adapt to warmer temperatures (or cooler, should that occur). Whether the climate will warm is far from certain; that it will change is unquestionable."

Comment · 11 years ago
Buy iron, dump in ocean. (https://en.wikipedia.org/wiki/Iron_fertilization) Donate to geoengineering efforts and lobbying against insane moratoriums against geoengineering efforts.
Comment · 11 years ago
"Runtime", or "REPL" time, or "doc time" are all ways you can just "look at it". Do you think knowing "x" is type "Foo" tells you anything about what you can do with "x", other than use it where you can use "Foo"s? You need to figure out what you can do with "Foo" by reading the docs around "Foo". Yeah, I know a priori I can call a method on Foo that returns an int and pass that to other int-taking methods, but is that what I want to do? Which method returning an int do I want to call? You need to look at what "Foo" is to determine this. Rich's example is HttpRequestServlet in https://www.youtube.com/watch?v=VSdnJDO-xdg I'd recommend watching that and ignoring me. A lot of the issues he raises, as contextfree points out, are around OOP rather than static typing in general so take these as my views and not necessarily his...

If "Foo" is just dynamic data, perhaps in a map, composed of other data, and it's values all the way down, any of those three points of time are easy ways to look at "Foo" and can generally be faster than reading a JavaDoc page or ctrl+spacing figuring out what you have access to and what it all means and what you want to do with the data and code associated with "Foo". Since you're going to be looking at the thing you want anyway, I find it very uncommon in practice that I accidentally divide a string by 2. Static typing would let me know before I run the thing that I was an idiot (maybe, see next paragraph), but I'll find out almost as quickly when the code I just worked on (either in the REPL, which is very nice, but even from the starting state) actually does what I want -- you do that regardless of static/dynamic typing, right? You don't just write code and never verify it does what you want, trusting that it compiled is good enough? Anyway when I run it, I'll immediately hit a runtime error (which can be handled in Lisp in ways way more flexible than exceptions in other languages) and realize my stupidity. So I don't find that particular situation or class of bugs very compelling.

Nor do the presence of declared types alone guarantee my safety -- I need to know about any conversion rules, too, that may let a String be converted to an int for division purposes, or if there is operator overloading that could be in play. Conversion rules and operator overloading are interesting regardless of the static/dynamic typing situation because too much or too few can lead to annoyances and bugs. Java lets you concatenate ints into strings with "+", Python doesn't, but Python lets you duplicate strings with "*".

What I have run into in both static and dynamic languages is division-by-zero errors, which, unless you go all the way to something like Shen that supports dependent typing, your type system with "int" declarations will not help you with. I've run into errors (in both static and dynamic languages) parsing string contents to extract bits of data. I've run into errors around the timings of async operations. I've run into null pointer exceptions (though much less frequently in dynamic languages, maybe once the Option type is in wider use I can rely on that too but its issue is poisoning the AST). I've run into logic errors where I thought the system should be in state C but instead it transitioned to state E. The bugs that take the longest to diagnose and fix are simply due to not understanding the problem well enough and having an incorrect routine coded, so I have to figure out if it's a logic error or an off-by-one error or simply using the wrong function because it had a suggestive name and I didn't read through the doc all the way. Rich made an interesting point in one of his talks that all bugs have both passed your type checker (if you have one) and your test suite. My point is that I'm not convinced static typing as I'm given in the languages I work in is worth it for any reasons beyond performance because I don't see any other improvements like making me more productive or writing less bugs. I'm not opposed to types and schemas themselves in general, just static typing. I'd rather see pushes towards full dependent typing and systems like TLA+ (which has seen more industry usage than Haskell) and Coq than things like core.typed in Clojure.

The last point I'd raise is that I agree with you developer efficiency is more important than code efficiency. But this has been one of the mainstay arguments from the pro dynamic typing camp for many decades, with static typing advocates conceding that yes the developer will be more productive in a dynamic language but the performance is terrible for anything serious. If you want to argue static typing was actually more efficient all along from a developer perspective than dynamic typing, you have a lot of work to do. I'm not particularly interested in that argument (at least today) but the point still needs to be raised.

Comment · 11 years ago
I doubt Rich will ever push for it, but stranger things have happened. Types get in the way of data. When you ask a request "What's in you?" in Clojure you can just look at the data and find out. In Java you can ctrl+space in your IDE and look for public methods that by convention start with 'get', and then for the return values of those things also look for things that start with 'get', but that's a pretty impoverished way to get at the data. Try printing it out and you're likely to just get a memory address, great. So what do types buy you? Sometimes performance, but if that were always true then all static languages should be about as fast as C. The other thing is this "certainty" mentioned, and that certainty is just that you didn't make a typo or spelling error, woop-dee-doo, those are among the fewest sets of errors dynamic programming language users run in to, especially when you change your workflow to take advantage of the nature of dynamic languages, and a more valuable certainty is that this piece of data you have isn't going to change underneath you. You have to go all the way to Haskell (I'd argue Shen) to get real benefits of typing beyond performance and typo-protection, and most programmers are unwilling to do that for very good reasons.
Comment · 11 years ago
Any goal by the President must be fulfilled within 8 years at most, otherwise there's no chance. See for instance https://en.wikipedia.org/wiki/Lunar_outpost_%28NASA%29 initiated by Bush and killed by Obama.

Greater than any technological or Presidential initiative challenge is the challenge of culture and media. Human lives matter a whole lot more now than they did during the Apollo missions, and a disaster resulting in the deaths of astronauts is the worst thing that can happen to NASA. As long as it is subject to public scrutiny and criticism that affects its budget and goals, it will continue in the fashion of the medical industry -- accepting all the consequences of do-nothing neglect instead of doing something that carries the risk of the deaths of a few individuals. In the medical industry, hundreds of deaths some of which could have been averted with not-yet-FDA-approved surgeries or drugs; in the space industry, the always looming threat of an extinction-level asteroid or other existential threats.

Comment · 11 years ago
And as long as they do pop up scary warnings when the DV certificates change possibly due to a MitM attack it'll be even more fine.
Comment · 11 years ago
Comment · 11 years ago
Liberals simultaneously believe they can outlaw guns but they can't outlaw drugs. Hypocrisy can be fun to notice in your hated enemy, but sometimes you have to dig into the details of each idea separately without analogies to similar surface level ideas.
Comment · 11 years ago
Comment · 11 years ago
Just another instance of dunning-kruger. When he's older and had more interactions with lower IQ people, he may come to terms with his gifts...
Comment · 11 years ago
But magic powers at 30.
Comment · 11 years ago
Flooding the country with Arab speaking immigrants with the goal that some will filter up to the TLA agencies to help with surveillance on their former countrymen is ludicrous. If you want the numbers of Arabic speakers increased, you teach the language or hire existing talent. In any case, machine translation is pretty good these days -- even if Google doesn't perform that well on Arabic. Encryption is a much bigger barrier than language.
Comment · 11 years ago
I was an October baby, so I started "a year late". I only had one good friend a year above me, we got out of touch when he went to Junior High while I was stuck in 6th grade. My other friends were in the same year and considering the older friend grew up to have lots of legal problems, I'm not disappointed on that end.

I do wish I had finished a year earlier, though. It would have meant cheaper college and would have also meant starting a career sooner, which for me is above $100k/yr. It would have also increased the chance of my mother still being alive since she died right after I was hired and I think if she didn't have to work until the end because I'd have been paying her bills she'd still be around.

I'd suggest going with what your kids want. If they want to learn, go for it. If they're perfectly happy with pre-school/daycare, or have lots of friends in that age group, maybe reconsider. They'll make new friends regardless of the grade, though.

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton