Internet Archive, after Trump win, looks to create alternate site in Canada - <AUTHOR> http://www.computerworld.com/article/3144757/internet/internet-archive-after-trump-win-looks-to-create-alternate-site-in-canada.html <comment><USER2> Previous discussion: [https://news.ycombinator.com/item?id=13065599](https://news.ycombinator.com/item?id=13065599)

</comment><comment><USER3> a) Having redundant copies of data in different locations and legal jurisdictions is a great thing. Didn't they have a fire at their office a few years ago that destroyed a bunch of equipment? But why Canada and not someplace in Europe or Asia, for example? Having it in a location that's so completely friendly with the US government like Canada might not be an advantage if you're concerned they'll go after you for political reasons. Hell, put it in the Philippines or something: if the US ever goes after them, they'll be tickled for an opportunity to embarrass the US.

b) If you're scared of guys like Trump having too much power to shut down the internet, don't let the government take it just because your guy happens to have the power. Generalizing a bit here, but the Right tolerated gross government expansion of all aspects of society when Bush was in charge and then got hysterical when Obama took over as they were concerned about him abusing it. Now the Left is freaking out about all of the power that Trump will have. When will both sides learn that no government should be left untrusted with unchecked power?

c) Has Trump threatened to go after sites like the internet archive in any special way? I don't think he has any significant relevance here. I think they're invoking Trump because a lot of people are overly hysterical about him right now and it probably makes it easier for them to raise money. If I was running any kind of charity right now, essentially saying "Trump is bad, give us money" would be a great message for a nice boost.

<comment><USER4> I don't think Trump knows what the Internet Archive is much less wants to shut it down.

There is a lot of panic from the left-wingers basically accusing Trump of many different things and even GWB wasn't demonized this much.

I guess their data recovery plan now has an surviving the Trumpopclypse?</comment></comment>


Docker registry is hard-coded and other registry is a second class citizen - <AUTHOR> https://github.com/dotcloud/docker/issues/1988 <comment><USER2> While I am glad that you linked this issue, and it looks like there's no "satisfactory resolution" from skimming to the bottom, maybe you could give us the TL;DR? Did you post this issue because you're a Docker dev? Something you wanted us to see, or just saving the link for posterity?

I think it looks like a flamewar, so for my benefit can you tell me what is the behavior: (I think I have it)

1) The docker index (public registry) lives at index.docker.io. If you push an image like "yebyen/foo" then you need to log in as "yebyen" and you're making yebyen/foo public.

2) The docker-registry project, when you deploy it, takes up port 8080 by default. If you push an image like "registry:8080/bar" or "my.registry/bar" the dot or the colon are detected before the slash, which are not valid parts of a username on the public index, so you push to that registry (your registry, or your organization's registry server ostensibly.) These connections are unauthenticated.

Is that about the state of things? Where is the confusion?

<comment><AUTHOR> you are right. My confusion is that adding URL prefix is not convenient.

<comment><USER2> yeah, that seems to be the thread here...

git has this concept of "remotes" which can be defined per project, but Docker has no such concept of a remote or even of a project. You have a Dockerfile and you have an image.

To be fair, there should be some kind of an "enterprisey" caching proxy that enables IT departments to act as a supervisor or man-in-the-middle, blessing some trusted images and forbidding the downloading of others, holding any pushes in a queue for "public release approval."

The docker-registry open source tool is rudimentary. I think there will certainly be alternatives to index.docker.io, and eventually even a configuration directive to select a different image host as the default.</comment></comment></comment>


Changes to Evernote's Pricing Plans - <AUTHOR> https://blog.evernote.com/blog/2016/06/28/changes-to-evernotes-pricing-plans/?origin=email_silverpop&utm_source=silverpop&utm_medium=email&utm_campaign=EVN-NOT-888-88-88-8888-Gnome_Notification_Basic_Users_P1_062816&utm_content=blog_evernote_com_blog_2016_06(3)&spMailingID=14846861&spUserID=MzMwODYzNzYxMDIS1&spJobID=802100688&spReportId=ODAyMTAwNjg4S0 <comment><USER2> Here's a blog post that summarizes some of the changes:

[http://lifehacker.com/evernote-limits-device-sharing-for- fre...](http://lifehacker.com/evernote-limits-device-sharing-for-free-users- bumps-up-1782744350)

> _Today, Evernote announced a change to its pricing plan alongside a new > limitation for its free service. Both the Plus and Premium paid tiers get a > price bump while the Basic plan now restricts you to just two devices._

> _The biggest sting is the fact the free Basic plan now limits you to two > devices per account, like a computer and a phone, two computers, or a phone > and a tablet. You're also still limited to just 60MB of uploads a month. The > Plus plan is now priced at $3.99 /month, up from $2.99/month (or > $34.99/year), while the Premium plan bumps up to $7.99/month from > $5.99/month (or $69.99/year). The price increase comes from what Evernote > says is a "significant investment of energy, time, and money." If you're > affected by the price change, look out for an email from Evernote letting > you know what to do. The price change won't go into effect until after > August 15, 2016._

</comment><comment><USER3> I don't use Evernote much, but I do like it and for $25/year it is worthwhile. When it is time to pay for another year, it looks like my price increases to $35/year, which I will probably pay for again, but maybe not. I am used to pricing on web services to slowly decrease, not increase.

</comment><comment><USER4> Good thing I just paid for it yearly! But I would still happily pay for this even with the price increases, as long as Evernote continues to get better. I've noticed the strings of improvements recently, and now with Markdown support coming, it's going to be very promising, definitely up from a year ago when it was going through turmoil. Right now I'm just a happy Evernote user that literally has his whole life on the platform. I would be lost without it.

</comment><comment><USER5> This is a shame, I love using Evernote but not enough to pay $50USD/year for it. I use it as a reference point for various software/commands and it's quite convenient that it sync's across all my devices. The encrypted text feature is handy for sensitive information too.

Dropbox with encrypted sparsebundles is a convenient enough replacement though.

</comment><comment><USER6> I wish they would announce that they've made Evernote less buggy on MacOS and that they've removed all of the unnecessary me-too add-ons like "work chat". I'm a premium user but have been contemplating a switch to OneNote since Evernote crashes about once a day.

</comment><comment><USER7> If you're spending hundreds of hours using a piece of software, paying about the price of a beer or fancy coffee once a month doesn't seem unreasonable.

<comment><USER8> Conversely, I use it maybe once a month. The free plan is still there, but there's a 2 device restriction and I don't have 2 primary devices and the web version is kind of sucky.

For me, $10-$12 per year is about what it's worth.

</comment></comment><comment><USER9> Not something we haven't seen before, culling unprofitable users.

Agree with the commenter that said the app is worth about $10-15, and should never have been made subscription-based.

<comment><USER10> I wish I could find it, but the CEO Phil Libin gave a talk about how to price goods. He split pricing models into 3 camps, based on how they deliver value over time:

1\. Fixed price goods correspond to items where you realize the value upfront, then over time the good decays. Like food, physical goods like clothing, etc

2\. Fixed price subscriptions correspond to services which deliver constant value over time, like a newspaper or utilities

3\. Freemium subscriptions start free, then charge more money over time, and correspond to services which deliver increased value over time. Lots of free 2 play games work this way, with people paying hundreds of dollars as they get serious. He also argued that Evernote was in this camp, since as you store more of your information in Evernote, it becomes more valuable to you

So charging a one-time fee for evernote is mismatched with the value delivered. They would get payment as a one-time event but the more you use it, the more it costs them to support you, without you paying them more because you like/need it more.

<comment><USER9> Only looking at lifetime value delivered ignores the competition, much of which is free and easy to switch to.

Also support costs typically go down over time; most support effort is spent in onboarding and getting users up and running. Although now that you mention it, Evernote may have huge technical drag because they have bugs outstanding from over six years ago. Indeed, the only time I reached out to support (I couldn't install PC version because it was incorrectly detecting that I already had it installed) they weren't able to assist. $10 lifetime value may be a bit generous.</comment></comment></comment>


6 tips to make the most of a startup accelerator program - <AUTHOR> http://ngrasset.org/post/34101867864/6-tips-to-make-the-most-of-a-startup-accelerator

<comment><USER2> But would you recommend it, as a general path or as a pitch for DreamIt? Do you think you are better off for having done it and how might things have turned out if you had not been part of DreamIt?</comment>


Architects and engineers are turning old shipping containers into mobiled ICUs - <AUTHOR> https://www.cbc.ca/radio/day6/architects-and-engineers-are-turning-old-shipping-containers-into-mobile-intensive-care-units-1.5527523 <comment><USER2> speaking from experience as someone whos worked with shipping containers (tunnel, opentop and swap-body) repurposing these containers can be a bad idea unless you know exactly what was stored in them last.

Some containers come with their interior and moving parts slathered in Cosmoline and other toxic corrosion inhibitors. Others may have stored precursor chemicals to industrial adhesives or fertilizers. finally, theres no real regulation on what you can do with an over-iso (super heavy sticker) shipping container and many of them ship metals, or degraded plastics in various stages of recycling. Nuclear? sure. Walk through any port storage facility and theres sure to be a shipping container or two that will light up a geiger counter because the type-A containers inside have cracked from the heat and are leaking thorium tailings or other common low-level waste the USA ships out to third world countries and back.

<comment><USER3> > Nuclear? sure. Walk through any port storage facility and theres sure to be > a shipping container or two that will light up a geiger counter because the > type-A containers inside have cracked from the heat and are leaking thorium > tailings or other common low-level waste the USA ships out to third world > countries and back.

And here I was searching to make sure somebody mentioned methyl bromide. Holy shit.

<comment><USER4> France is not a third world countries and reprocess most of nuclear waste...

</comment></comment></comment><comment><USER5> My company works with shipping containers daily - we modify them for industrial and manufacturing purposes. We reached out to the CURA team several weeks ago, offering our capacity if they scale/deploy their concept. They are currently building their very first pilot unit(s), so we'll see!

As a basic structural shell, shipping containers are great - plentiful, compatible with global logistics, cheap, dense/stackable. But, to bring them up to habitable standards, let alone medical standards, takes A LOT of work. Hard manual labor and also precision assembly work. We have some custom equipment to help speed that retrofit process for our own purposes, but most container mod providers don't - so while yes, you can deploy finished units anywhere, stack them densely and connect them quickly, there isn't a reserve of these units standing by, and you have no scaling advantage up-front in manufacturing them right now.

I'll add that by the time you retrofit insulation, ventilation, utilities and paneling inside (and you have to put this inside if you want to maintain side- by-side stackability and weather impermeability) what was a "decent" small room size becomes a bit claustrophobic.

For modular, dense, deployable, and durable emergency hospital facilities, it's best to look at one of the many architectural prefab approaches - volumetric, panelized, or otherwise. See: BLOX, Blokable, FullStack Modular, Katerra, etc. This field is growing rapidly, and many of these companies are already tooled to produce room and structure modules very efficiently.

Some pose the question of re-tasking hotels as temporary alternative medical spaces. I could see it for housing medical staff in a more dedicated and perhaps centralized manner, if nearby a hospital. There are several military slide decks circulating around that describe exactly what's necessary to create a field hospital out of a hotel/office - including ripping up the carpet in the entire facility, heavily modifying HVAC (central or standalone units) etc - and that's all doable, but I've wondered about the implications afterwards. You'd have to basically rebuild the interiors entirely, battle future customer perception ("Oh, the hotel that 100 coronavirus patients died in?") and I'm certain the insurance situation will not be straightforward...

<comment><USER6> I would love to see a walk through of taking a container of unknown origin through a process to make it ready for a living space.

My uneducated assumption was that you walked into one and sprayed your sand/particle blaster at the interior surfaces until you've got raw metal everywhere, then you paint the interior with a metal sealant, followed by a powder coat. Then set up heating coils inside, take the interior temperature up to 210 to 220 degrees C, go back and remove the heating coils and then be ready to start installing flooring/walls what have you.

But I have no idea how practical that set of steps are, or even if they are sufficient. Hence the desire to see the process that someone has used successfully to prepare containers.

<comment><USER5> Can't speak to living spaces since we don't do that, but you have the basic process in mind. You might rip the floor planks/panels out entirely, eliminating the smelly, pesticide- laden lumber and giving access to more metal surfaces during blasting. Or, much less ideal but possible: you can seal over the nasty flooring with epoxy then leave it or put another flooring layer on top.

Haven't heard of powder coating interiors - that would be a lot of wattage! - but maybe doable with radiant methods and insulation blankets, or putting the whole thing in a giant curing oven? Most often it's just spray-on epoxy over rust-converting primer. There are low(er)-toxicity formulations out there. For undemanding applications you can paint with household enamel over primer - wouldn't hold up on the exterior though.

Interestingly, the Cor-Ten steel many (most?) containers are made of is a weathering steel that forms a protective rust layer when left to its own devices. So you could conceivably just leave it there to develop a fine rusty patina!

All told, there isn't a single "right way," to clean up a container, but there are some best practices and trends. YouTube seems to have a wealth of folks documenting their container home builds.

</comment></comment></comment><comment><USER7> A friend of mine has been doing this for some time. It works well but you're gonna need some iterations with stakeholders to make it work. This includes medical staff, transport experts etc. What's quite cool about my friends engineering is that they manage to keep the containers sterile by pressure [https://hospitainer.com/](https://hospitainer.com/)

</comment><comment><USER8> Sounds like another half-baked "gotta do something" project.

What's needed is more quarantine areas the size of Javits Center or Moscone Center, not shipping containers, which are essential for ending the lockdown.

One of the problems with the shipping container method are you're distributing the facilities maintenance tasks into a distributed system of multiple failure points.

Another is that if you do lose cooling, containers rapidly heat up in the daytime.

<comment><USER9> They can just temporarily convert hotels, which are underused at the moment with the effective collapse of most traveling, tourism and business trips. Hotels have good rooms, air conditioning, power, and are fairly controlled environments.

<comment><USER10> Wouldn't central air without HEPA filtration be an issue in a hotel setting? I don't think it's easy to retrofit (it can be done but not quick and cheap).

<comment><USER11> Most hotels don't have central air per say, at least in the room. Each room has one of those standalone units usually near the window.

I can't find the clip right now but in one of NY Gov Cuomo's briefings they had an guy from (I think from the Engineers Corps) talk about this.

<comment><USER12> This one [https://twitter.com/USArmy/status/1241185656094801923](https://twitter.com/USArmy/status/1241185656094801923)

<comment><USER13> Can this dude just be the spokesperson for everything during this pandemic? Clear, concise, no bullshit straight to the point. Here is the issue, here is the plan, here is what we're doing.

</comment></comment></comment></comment></comment></comment><comment><USER14> Why use shipping containers when portable shelters exist?

E.g. [https://fortsusa.com/models/military/portable-military- shelt...](https://fortsusa.com/models/military/portable-military-shelter/)

<comment><USER15> Presumably because there's millions of excess containers and that site you've linked builds those on demand?

</comment></comment><comment><USER16> When China was building the special modular hospitals in 10 days, I thought why didn't they just choose to convert old shipping containers instead?

Since it could be mass manufactured offsite, and trucked in. Then they'd just have to assemble it onsite.

Then, they could ship it all over the world, to hotspots that needs emergency field help.

But it turned out, ocean transport time is horrendous. It takes 21 days to transport from China to Los Angeles. Then, the time to load the ship, and unload the ship, and transport by land to the actual hotspot, would add another week. Then the time to actually assemble it onsite would add a few more days. So now, you're looking at over 30 days to build that emergency hospital. By which time, you'd already have a bunch of dead people, just because it took you too long to transport it.

So in retrospect, it was probably better that they built it modularly onsite instead. At least this way, you can still fly the components to your hotspot.

</comment><comment><USER17> software engineers use "containers" to densify deployments. But in cases like this, real containers can't densify or offer mobility. Indian Railways engineers have submitted a proposal to mobilize trains for quarantine and mobile hospitals. Retrofitting is not too difficult and a prototype with designs have been shared. (even to SAARC nations, I guess).

[https://theprint.in/india/governance/rail-coach-as-icu- how-m...](https://theprint.in/india/governance/rail-coach-as-icu-how-modi- govt-plans-to-beat-healthcare-gaps-in-remote-areas/388043/)

Most related excerpts below:

'A good idea' According to media reports, a Kochi-based firm called Asset Homes had submitted a proposal to the Prime Minister's Office (PMO) where it offered to fashion hospitals out of trains.

"We have 12,617 trains with 23-30 coaches in our country. We can easily convert them into 'mobile hospitals' with facilities like consultation rooms, medical store, ICU and pantry," the firm's managing director reportedly wrote in the letter.

"Each train can accommodate at least 1,000 beds. Using the 7,500+ railway stations, the patients can be admitted to the trains."

A senior railway official said it was good idea to convert coaches into mobile isolation wards, but added that it would be easier to first convert the railways' Accident Relief Medical Equipment Vans (ARME) — or rail ambulances — into isolation wards.

"These are basically moving hospitals meant to provide medical treatment and assistance in case of rail accidents," the official said. "It might be easier to convert them into isolation wards since they already have some medical facilities."

Among other steps taken to check the pandemic, the railways have been instructed to introduce isolation wards at railway hospitals.

</comment><comment><USER18> We changed the URL from [https://www.engineeringpassion.com/engineers-are- converting-...](https://www.engineeringpassion.com/engineers-are-converting- old-shipping-containers-into-mobile-icus/) to the article it copied from.

</comment><comment><USER19> As people already mentioned, containers are hot in summer. I spend couple weeks in a such temporary office. Daily 30 degrees, not enough windows, sweat and very bad smell around.

At the moment a school in neighborhood is being demolished and a temporary container building was assembled as replacement. It's very comfortable and nice inside, though school has vacation in summertime and this application is ok. ICU in a container might be good for Scandinavia or Alaska...

<comment><USER20> You can put an air conditioner on them. I worked in a medical station built in a shipping container in the Afghan desert in 40 degree heat for a summer and it was fine.

<comment><USER19> The problem is, that there are enough buildings in other places than Afghan desert and containers make no sense at all. One can find many empty government buildings in every city. From offices left days ago, empty schools to not yet finished hospitals or empty exhibition halls.

<comment><USER21> You also need to consider the build out. I feel like it'd be easier to get the experts required to build out a mini-icu in one central location and develop methods to mass manufacture the standardized container than it would be to fly people around the country to one off a bunch of buildings.

The portability also brings other benefits.

<comment><USER19> Think about availability of doctors, not the ICUs. There's a need to accommodate 2-3 shifts of doctors and nurses. And these are not endlessly mobile unlike containers.

</comment></comment></comment></comment></comment><comment><USER22> These things are flimsy AF. Better off with tents or temp wood structures.

<comment><USER23> In what sense are they flimsy? They can support a few more (loaded) containers on top of them, so... fifty tons roof load?

If you're worried about impacts on the side walls, I'm pretty sure your tent is going to be even more flimsy. Your temp wood structure might well be, too.

So how are they flimsy?

<comment><USER24> They are only strong at specific points, namely the corners and to a lesser extent, the edges. If you have a load on top, or an impact on the sides, they deform easily and that can cause structural collapse.

In situations where people bury the containers, they often have to weld in additional squarestock steel pillars and ceiling joists to improve the structural integrity of the roof, and the pillars often add needed support to the walls that face substantial forces from the weight of the earth</comment></comment></comment>


Here's why the next 100 years will be awesome - <AUTHOR> https://medium.com/@goncalogordo/heres-why-the-next-100-years-will-be-awesome-947c1ad2a3d6 <comment><USER2> This article proves parallel universes exist.</comment>


Ask YC:going to Flash Camp? - <AUTHOR>

just wondering who else is going to adobe http://www.flashcamp.org/<p>i am trying to decided what to hack on. <comment><USER2> My 12-year old nephew recently finished a day camp where he learned how to create Flash games. But he was much more interested in another day camp where he learned card magic tricks!</comment>


Ask HN: Should I submit this? - <AUTHOR>

So tonight I submitted some stuff on Forth. Last night I submitted stuff on Prolog. Both of these languages are things I learnt about as a kid.<p>My question to HN is thia, I'm obviously not going to submit a new language every day, but does HN think it'd be good  to have me pick an old school language at the start of the week and start posting stories about it so those that are interested can learn? <comment><USER2> Well, I like learning about new languages (uh, well, old ones I haven't really learned about count too), so if you have some _useful_ or _interesting_ links, I say post them.

</comment><comment><USER3> I say post it. The community will decide if they continue to find them interesting or not. If your links stop landing on the front page, or someone creates a "bitch" thread about your posts, then you'll know to consider stopping. But those are the right topics for this community. Do it, ask permission later ;)

</comment><comment><USER4> I kinda like the idea. I'd say go for it, personally. Of course, you've already done two of the cooler ones, out of the set of "old school languages." Not sure how well articles on SNOBOL, RPG, FORTRAN, etc. will go over with this crowd... Hopefully there are some other cool choices left to hit on.</comment>


New BBC Podcast: 50 Things That Made the Modern Economy - <AUTHOR> http://www.bbc.co.uk/programmes/p04b1g3c <comment><USER2> Direct link to the downloads: [http://www.bbc.co.uk/programmes/p04b1g3c/episodes/downloads](http://www.bbc.co.uk/programmes/p04b1g3c/episodes/downloads)</comment>


Question: What exactly do companies do with seed/VC money? - <AUTHOR>

Obvious answers include: pay themselves, pay for servers, etc. Why do companies need so much? Why do they need money at all especially for a web startup?<p>The bigger question I have is what does the VC money earn you, besides taking away more ownership over the company that doesn't make a dime yet (as opposed to a bootstrapped product idea) ? <comment><USER2> _Why do companies need so much?_

How much?

 _Why do they need money at all especially for a web startup?_

Oh, I don't know... maybe the founders want to pay themselves a salary so they can work on the project full-time and still pay rent/electricity bill/car payment/mortgage payment/gas bill/car insurance/phone bill/etc. And as cheap as computing cycles are, they still aren't free. Sure, a small Slicehost or Linode node for development is dirt cheap... but what if your webapp traffic starts to grow and you need to scale it out? Or maybe there are expenses for traveling to trade-shows, conferences, customer sites, etc? Maybe you want to buy advertising or pay a PR agency for some work? Maybe you want some graphics designed by a professional graphics designer? There are all sorts of things that go into running a business that cost money.

 _The bigger question I have is what does the VC money earn you_

Runway and the ability to move faster. If I'm trying to bootstrap something, the amount of code I can produce in, say, 6 months, is equal to how much code _I_ personally can write in that time. If I can hire, say, 2 more developers, we can - in theory, and allowing for Brooks' Law - get a lot more done. Getting done quicker, maybe getting a certain feature finished in time for a big-splash product launch at an important trade show, etc.; are places where being funded would give you an advantage over pure bootstrapping. Obviously this won't apply to everybody, and not everybody chooses to pursue VC money. Different strokes and what-not...

<comment><USER3> A good answer, though I sense a bit of sarcasm/contempt in there!

Maybe the OP is only familiar with the negative aspects of taking outside investment, and is perfectly comfortable with bootstrapping (and has a venture that can be successful with bootstrapping alone). Given that, it seems that it might be fairly difficult to see why people would take VC money.

<comment><USER2> _A good answer, though I sense a bit of sarcasm/contempt in there!_

Yes, I tend to be a bit sarcastic by nature. Too much time spent watching British television and hanging out with Brits, I suppose. Or maybe it's just genetic, who can say about such things.

Actually the original post struck me as almost a bit trollish itself, although maybe I just misread it. So yeah, maybe my response a bit snippier than usual. <shrug />

FWIW, I'm bootstrapping my own startup at the moment, and am very leery of taking outside capital. But I'm certainly open to the possibility if the situation dictates it. The thing that would be nice, would be being able to work on the project full-time, not just nights and weekends (outside of the $DAYJOB.) That's the one area - in particular - that makes it very tempting to start trying to raise money.

</comment></comment></comment><comment><USER4> Mostly salaries, sometimes buying customers.

<comment><USER5> what do you mean by buying customers? advertising?

<comment><USER6> Advertising, insider/off the shelf deals, wining & dining "influential" bloggers, charging very low prices to outsell competitors.

</comment></comment></comment><comment><USER7> The ability to work on a project full-time is worth the equity you give away.

</comment><comment><USER8> Equity is overrated, success is much better. ;-)</comment>


Ruby or Python? Well, it depends... - <AUTHOR> http://batsov.com/2011/05/03/ruby-or-python.html <comment><USER2> _"but python + any python IDE < Java + IntelliJ IDEA(Eclipse/NetBeans)"_ (and I suppose s/python/ruby/g and s/Java/C#/g too)

I don't quite agree with this statement as I find python and ruby development easy, perfectly usable and well performing in a generic code editor (vim, emacs, textmate) whereas doing Java or C# almost mandates a full-blown heavyweight IDE with smart code completion like IntelliSense to get anywhere near the same efficiency. I've tried a few IDEs for python and ruby, and they seemed almost more of a hindrance than a help, and definitely not a significant improvement.

<comment><USER3> This has been my experience as well. IntelliSense, import resolution, auto refactoring etc are all good, but I always find myself going back to vim because I've finished editing by the time eclipse starts up...

</comment></comment><comment><USER2> Python's REPL has autocompletion. It is just not enabled by default as it lives in its own module and python prefers to start in an absolutely clean state.

        >>> import readline
        >>> import rlcompleter
        >>> readline.parse_and_bind('tab: complete')

See this article for the details (and more, like history persistence and REPL startup file): [http://valueerror.wordpress.com/2009/11/03/python-shell- hist...](http://valueerror.wordpress.com/2009/11/03/python-shell-history- autocompletion-and-rc-file/)

<comment><USER3> Who doesn't use ipython these days, though?

<comment><USER4> I've read about it but never used it - I write all my code in TextMate, Notepad++ or Nano, depending on where I am and what I'm doing.

Could you outline what you see are the main benefits of using an enhanced interactive interface to Python such as IPython?

<comment><USER2> It actually makes python a full-blown shell (which python REPL is not):

        $ ipython
        Leopard libedit detected.
        Python 2.6.1 (r261:67515, Jun 24 2010, 21:47:49)
        Type "copyright", "credits" or "license" for more information.

        IPython 0.10.1 -- An enhanced Interactive Python.
        ?         -> Introduction and overview of IPython's features.
        %quickref -> Quick reference.
        help      -> Python's own help system.
        object?   -> Details about 'object'. ?object also works, ?? prints more.

        In [1]: ls
        Applications/ Downloads/    Movies/       Public/       Workspace/
        Desktop/      Dropbox/      Music/        Sandbox/
        Documents/    Library/      Pictures/     Sites/

        In [2]: ls | grep App
        Applications/

        In [3]:

</comment></comment></comment></comment><comment><USER5> Python and Lua were the first languages I used that had tuples as a native/core/whatever type. Absolutely love them. Changes how you program sorta thing. Mind blown that every language doesn't have them.

Despite this, I can't get into Python (having tried 3 or 4 times the last couple years). The Ruby ecosystem is simply more polished...gem, rvm, capistrano, rails, sinatra bundler, .... I really tried to fall in love with Python/Django, and it just isn't as good as Rails by a wide margin.

When languages are as close as Ruby and Python (or C# and Java), frameworks/ecosystem/community matters a ton more.

<comment><USER2> I suppose some things fit in one mental's model more easily whereas others don't, and there's no reason to contrive yourself in doing so, especially given how close Python and Ruby are in the general landscape of all programming languages.

For reference, each element of the Ruby ecosystem has a similar Python counterpart.

\- gem -> easy_install or pip

\- rvm -> virtualenv

\- capistrano -> fabric

\- rails -> django

\- sinatra -> itty, bottle, web.py, or twisted http module

\- bundler -> setuptools (install_require directive)

also,

\- rake -> scons, paver

\- rspec -> unittest / unittest2 /nose

\- watchr -> autonose

\- rdoc markdown -> docstrings+restructured text

Of course they're not 1:1 mappings, but python itself is not a 1:1 mapping to ruby, and any project is not a 1:1 mapping to any other project aiming to solve the same task either.

Admittedly it seems that Rails pushed Ruby more towards web development resulting in some more polish, whereas Python became more of a generalist, but that's a slight advantage either way, and they are definitely not worlds apart.

<comment><USER5> As I said in another comment..my easy_install/pip experience wasn't polished, but yes, that might just be me.

The rails -> django thing is where I'm not so humble. It didn't take me more than 5 minutes of doing Windows Mobile (6) programming to know that it sucked. Django doesn't suck (no way), but it isn't where Rails is. And I really think that, if you're doing web dev, the web framework is as important as all the other smaller pieces (package management, deployment, ...) put together.

<comment><USER6> Some people like magic, and some people like underscores. That's why they make chocolate _and_ vanilla ice cream flavors. I don't think the goal of the Django team is to ever get to where Rails is, there are plenty of other frameworks trying to do that.

</comment></comment></comment></comment><comment><USER7> > Ruby and Python do not have statements - only expressions.

Unfortunately this is not true for python. The reason his print-example doesn't show the returned value is that there isn't one. In ruby, puts actually returns Nil, and we can assign it:

         >> x=puts(0)
         0
          => nil

Whereas in Python, we get a syntax error

         >>> x=print(0)
           File "<stdin>", line 1
             x=print(0)
                   ^
         SyntaxError: invalid syntax

<comment><USER8> that's fixed in python 3

[edit: sorry, yes, i agree the general problem remains.]

<comment><USER7> For the specific example of print, then yes. But in general it is not. Another example is if-statements in python:

        >>> x=if True:
          File "<stdin>", line 1
            x=if True:
               ^
        SyntaxError: invalid syntax

whereas in Ruby:

         >> x=if true:
         ?>   5
         >> end
         => 5

Other Python statements from the top of my head: for, while, def, import.

My point is that there absolutely are statements that are not expressions in Python. (You can easily tell by trying to assign the return value: x=<statement>).

<comment><USER9> Heck, assignment itself is a statement. That's why you can't say while x=y: ... (and you'll notice the REPL gives no return value for an assignment).

This "Python has no statements" error was one of my biggest annoyances with this article, as Python has a very strong statement vs expression dichotomy.

</comment></comment></comment></comment><comment><USER10> "If you're looking for a flame post - this is not one of them. I love both languages and I'll simply compare some of their features and possible uses."

This was an interesting post, and I'm sure the op didn't mean any of it as a "flame". Problem is, on a lot of the comparisons, the op just said "I won't get into this, but I prefer Python" (or Ruby, depending on the feature). Those kinds of statements don't really advance anyone's knowledge, but are sure to get some people annoyed.

As someone who uses Python but hasn't learned Ruby, this article got me to the same conclusion I alway get - while Ruby has a few very interesting differences and clever tricks I'd love to learn, it's so similar to Python that I'm better off learning a completely different language.

One thing I think is tiny, but incredibly helpful in Ruby, and I don't understand why more languages don't have it - the ability to add "?" and "!" to operators. That's an actually useful convention.

<comment><USER11> > One thing I think is tiny, but incredibly helpful in Ruby, and I don't > understand why more languages don't have it - the ability to add "?" and "!" > to operators. That's an actually useful convention.

My primary languages are Ruby and C. After working in Ruby for a while and then switching back to C I often find myself naming predicates with a trailing _q. I don't have an equivalent for !, though.

<comment><USER10> In C/C++, I was usually in the habit of adding "Is" in front of predicates. "something.IsDone()", "something.IsOver()", etc.

</comment></comment></comment><comment><USER12> I thought it was a pretty good article until I got to:

"Since they are often used for the creation of webapps one should consider the deployment issue. Most web hosting companies provide cheap Python hosting, but very few companies provide Ruby hosting."

Which pretty much killed it. Doesn't Heroku alone pretty much blow this statement away?

<comment><USER13> > Doesn't Heroku alone pretty much blow this statement away?

Not really - he said "very few", not "there aren't any". You can find mod_python all over the place - where are your shared ruby hosting options?

<comment><USER12> I just mean that it implies that finding cheap hosting for a ruby webapp is problematic. If the purpose of that statement is to say that more places will support Python than Ruby, then it should probably be worded differently.

<comment><USER11> Heroku may be a good value for what it is, but it's vastly more expensive than a lot of entry-level shared hosting services - you know, the kind of place that starts at $5 or $10 per month and runs cPanel or an equivalent. Lots of those support Python these days; Ruby support still seems to be much rarer.

<comment><USER14> Heroku's free hosting is leaps and bounds beyond what a typical $5-$10 shared host offers, and there's an easy upgrade path. Sure, you can come up with specific usage levels where a shared host is cheaper on a bit-to-dollar basis, but you're still not accounting for Heroku's main selling point: convenience and saving developer time. This plus the fact that the vast majority of sites on $5-$10 shared hosting would fit easily on Heroku's free plan means that value-wise, Heroku faces much stiffer competition from Linode than any shared provider.

I like and am comfortable with both Python and Ruby, and one of the biggest reasons I choose Rails for projects nowadays is Heroku, and I'm not alone. Given this, I really don't see how you could claim Python has any edge when it comes to hosting. If you're concerned about what tons of shared hosting providers have installed, why not just use php?

</comment></comment></comment></comment></comment><comment><USER6> > _Ruby's REPL(irb) seems to me more advanced since it allows you to do TAB > smart completion(amongst other things)._

You can easily have tab completion and a bunch of other good stuff (like preserving history across sessions) with the Python REPL. You have to use the PYTHONSTARTUP environment variable to indicate a script that is run when the Python shell begins, and that script has to use adjust some rlcompleter and readline setttings.

It's all right here: <http://docs.python.org/library/rlcompleter.html>

Incidentally, this is the first result on Google for "python tab completion"</comment>


Coding: The next blue collar job? Sure hope not - <AUTHOR> https://www.linkedin.com/pulse/coding-next-blue-collar-job-sure-hope-ray-villalobos <comment><USER2> All developers think they are smart and have skills that are hard to acquire. Reality Check - anyone can be a programmer. If you want to be a part of an exclusive club go become a doctor or a lawyer or take up some other career that requires a professional degree -- think about it 3 years from now you can be a lawyer and about 7 years from now you could be well on your way to being a doctor -- or you could be a blue collar programmer with 3 years or 7 years experience respectively. What's the problem? You say you're too smart for a blue-collar job right.

In short programmers need to get over themselves. Just because your job requires reading (Rails tutorials) doesn't make you a genius that deserves $170,000/yr salary. Its funny because this haughtiness and ego of the average programmer is what sometimes makes otherwise wonderful work environments miserable places to work. I can't tell you how many job offers I've turned down because I encounter the 26 year old who introduces himself as the "Lead architect" of a simple monolithic rails application but now I digress.</comment>


Howto: Mac OSX on KVM - <AUTHOR> http://d4wiki.goddamm.it/index.php?title=Howto:_Mac_OSX_on_KVM

<comment><USER2> I have been using this: [http://alex.csgraf.de/self/?part/projects&folder/Qemu%20...](http://alex.csgraf.de/self/?part/projects&folder/Qemu%20OSX&type/&project/projects&parameters/id=Qemu%20OSX) in a triple booted MacBook for some low-level testing on OS X, just to see how it works following the Mac OS X Internals book, the performance is passable, I use virtualization because Apple don't have an ADC Hardware Purchase Program for Brazil and Apple hardware are really expensive here.

<comment><AUTHOR> This is the same project discussed in the wiki.

</comment></comment><comment><USER3> I wonder how performance compares to VMWare? The last time I tried OSX in a VMWare session it was so slow that it was useless.

<comment><AUTHOR> I'm trying to do it right now, I'll let you know when I've succeeded. Unfortunately, the packaging is in rpm format and my distro doesn't support it (well, I can install rpm, but it appears to be broken, so I have to hack around).

<comment><USER4> 10.5 or 10.6?

<comment><AUTHOR> 10.6

</comment></comment></comment></comment><comment><USER5> Chrome says this link is malware.

<comment><AUTHOR> Really? Chrome didn't tell me it was malware.

But, as far as I can tell, it's not - it's just a wiki page.</comment></comment>


Ask HN: Non-cellphone long distance - <AUTHOR>

After my first month as a web entrepreneur, it has become painfully clear that I need to talk on the phone long-distance without cell-phone glitches.  I live at the top of Potrero Hill in SF, and the cellphone reception here is horrible (I've gone through two carriers).
I'm moving in two months, so I'm not keen on buying a landline unless I really have to.  I've tried Skype on and off for years.  Skype is a disaster, far glitchier than cellphones, just not workable for business talk and project talk.
What service do you use for talking long-distance?  Or is spending the $$$ on a landline my only real option? <comment><USER2> Maybe an SIP phone and Asterix is the right answer? That gives you real VOIP over an internet connection.

</comment><comment><USER3> skype.

maybe its just you, but i've not had problems.

<comment><AUTHOR> Hmm, maybe it's me. Does Skype on Mac OS have special difficulties?</comment></comment>


Python wats - <AUTHOR> https://github.com/cosmologicon/pywat <comment><USER3> Of these, only += on tuple elements and indexing with floats strike me as WTFs, and many others are evidence of the author really going out of their way to look for behaviors to nitpick on. The absolute majority of these are things that Python programmers either will never encounter, or can easily explain from Python "first principles" (e.g. most of the nitpicks on string and sequence behaviors).

I can tell you what I consider WTF worthy - things that I and others have undoubtedly been bitten by because they are ubiquitous. Those are mutable defaults, lack of loop scoping, and "global"/"nonlocal" scoping. Oh, and add the crazy "ascii" I/O encoding default on 2.7 (and the inability to cleanly reset it) to that list.

<comment><USER4> Truthiness values are also WTF worthy (although not mentioned above).

        if not x:
            do_something()

Where do_something will occur if x is None, zero, 0.0, a blank string or even _midnight_ in some versions of python.

This has bitten me multiple times. It's a violation of python's explicit over implicit. It's an example of weak typing in an otherwise strongly typed language. There's really no good reason for it.

IMO, if x isn't a boolean, that line should just throw an exception. If you want to check for x being 0.0 or "", you should do x == "" or x == 0.0.

<comment><USER5> Why not do `x == False` then? Arguing about a language not being as strongly typed when you're not being as explicit about your own types seems pretty roundabout.

<comment><USER4> >Why not do `x == False` then

Because it's no more explicit than "not x" and because it's 5 characters longer.

There's always a trade off to be made between clarity and verbosity.

Judging by the number of bugs I've squashed caused by the developer either not realizing or simply forgetting that ("", 0, 0.0, midnight, False, [], {}, None) _all_ resolve to false, I've come to believe this is one of those times where the clarity should probably take precedence.

You can go to the other extreme by making everything explicitly statically typed which will make your code _much_ more verbose (e.g. see Java). I believe that trade off isn't worth it either, despite the small increase in type safety.

<comment><USER6> > You can go to the other extreme by making everything explicitly statically > typed which will make your code much more verbose (e.g. see Java).

Java is not an example of a good static typing implementation and is not exemplar of verbosity in modern statically typed languages.

</comment></comment></comment></comment></comment><comment><USER7> I would argue that the vast majority of behaviours described here are precisely the desired behaviour.

In fact, I think the ones he picks reflect tremendously on his skill as a programmer.

Take for instance his apparent insistence that int(2 * '3') should produce 6. Cool. Magic "special" behaviour for the multiply operator if the string happens to contain a number.

The same goes for his desire for the string "False" to be falsey. Wonderful magic special behaviour dependent on the (possibly unknown) content of a string means I've got to go round checking my strings for magic values.

<comment><USER8> I agree, but there's enough weird shit going on here that it's still a worthwhile "article". For me, the `mixing numerical types`, `Operator precedence?`, `extend vs +=`, `Indexing with floats`, `all and emptiness`, and `Comparing NaNs` were all interesting.

</comment></comment><comment><USER9> I don't find many of these wat-worthy.

In python 2.x you could redefine True and False, and this is fun:

        >>> object() < object()
        True
        >>> object() < object()
        False
        >>> object() < object()
        True

But python3 dropped a lot of wat-ness.

This one is fun too: [https://bugs.python.org/issue13936](https://bugs.python.org/issue13936)

</comment><comment><USER10> I interpret "wat" in the original "wat" presentation as "certain behaviors that can't be predicted by reading the code". In this regard, I don't think many things pointed out in the article can be considered as "wat". I could predict the behavior of many items fairly easily. The same thing could not be applied when I watched the original "wat" presentation.

The only exception I think is the bool coercion. Even though I _can_ predict the behavior, I find it fairly disturbing. I believe that should have been removed when transitioning to Python 3. It is very unfortunate, considering Python is generally reluctant to implicit type conversion.

</comment><comment><USER11> Besides the mentioned debunks of wat, the

       all([[[]]]) == True

makes perfect sense, because the all all does is check the truthiness of the argument's elements. An empty list is false, non-empty is true, no matter the contents.

<comment><USER12> By itself, yes, but

      >>> all([[[]]]) == True
      True
      >>> all([[]]) == True
      False
      >>> all([]) == True
      True

is pretty counter-intuitive at first glance.

<comment><USER11> At first glance, yes. Needs a moment to think this through. But not a wat because this works exactly as the logic says.

If we denote

      x = []

then

      bool(x) == False    # empty list is falsy
      bool([x]) == True   # nonempty list is truthy
      bool([[x]]) == True # nonempty again

and finally,

      [bool(elem) for elem in [[x]]] == [True]  # all True!

which is the thing `all' is interested in. It is more like a newbie mistake or careless document reading if the user thinks `all' runs through the lists and all of the nesting too.

</comment></comment></comment><comment><USER13> Can someone explain why the first one is a wat? To me it seems perfectly logical

Cast false to a string, then check the Boolean value of that string. It's not an empty string so of course it would be true.

<comment><USER14> Because people from normal langs or without cs background expect type cast roundtrip to return original value if temp type can represent any value of source type (e.g. string can represent any value of bool)

<comment><USER15> So someone would expect that an int cast of "2" would be 2? What would an int cast of "a" be?

<comment><USER16> I'll add to that - In what "normal langs" is this not a problem?

What would a C or C++ programmer expect? Because my experience in those languages says "casting" is a meaningless way to understand what's going on.

Perl doesn't have bareword true/falue values. Ruby doesn't use "casting", I think. That is, I think the idiomatic way to express this in Ruby is:

      >> !!true.to_s
      => true
      >> !!false.to_s
      => true

</comment></comment></comment></comment><comment><USER17> I have a favorite NumPy wat:

       >>> import numpy as np
       >>> 'x'*np.float64(3.5)
       'xxx'

(on recent NumPy releases this raises a deprecation warning)

Clearly the correct answer is 'xxx>' ;)

<comment><USER18> How about

>>> type(np.uint64(1) + 1) numpy.float64

</comment></comment><comment><USER19> Okay, I don't get this one:

      >>> False == False in [False]
      True

<comment><USER20> Both "in" and "==" are comparison operators that can be chained and so it's interpreted as

        False == False and False in [False]

[https://twitter.com/marcusaureliusf/status/55794887300903731...](https://twitter.com/marcusaureliusf/status/557948873009037312)

<comment><USER21> >>> 1 in [1] in [[1]]

True

<comment><USER22> Again, chained comparisons. For any comparison operator (comparison operators are <, >, ==, >=, <=, <>, !=, 'is', 'not', 'is not', 'in' and 'not in'):

        x (operator1) y (operator2) z

is defined by the language as equivalent to

        (x (operator1) y) and (y (operator2) z)

So

        1 in [1] in [[1]]

is equivalent to

        (1 in [1]) and ([1] in [[1]])

For any comparison operator

<comment><USER23> Though, according to the docs, `y` in your first example is only evaluated once when using the shorthand chained method.

</comment></comment></comment></comment></comment><comment><USER24> The very first example is stupid. What sane language would assume a non-empty string should be converted to a False boolean?

<comment><USER25> isn't it doing the opposite? str(False) is the string "False", which bool() casts to True because it is a non-empty string; Non-empty strings are cast to True booleans.

This is much faster than checking if the string has some semantic meaning first, which would have to be localized.

<comment><USER26> That's exactly what the grandparent is saying

</comment></comment></comment><comment><USER12> I thought this was going to be about the "Investigating Python Wats" talk Amy Hanlon (my co-worker) gave at PyCon last year: [https://www.youtube.com/watch?v=sH4XF6pKKmk](https://www.youtube.com/watch?v=sH4XF6pKKmk)

<comment><USER27> Excellent talk. Her use of the dis module to explain wats by showing bytecode was particularly enlightening. It inspired me to give a similar talk next week end at PyConFr: [https://github.com/makinacorpus/makina- slides/blob/master/py...](https://github.com/makinacorpus/makina- slides/blob/master/python/bizarreries/index.md) (in French but the meat of it is Python code).

</comment></comment><comment> nv-vn It seems like these all are exclusive to dynamically/weakly typed languages. Anyone have examples of wats for languages with strong static typing?

<comment><USER28> Java:

* Reassigning interned integers via reflection

* private fields work on a class level, not an instance level, i.e. Instances of a class can read private fields of other instances of the same class.

* Arguably package-private fields as the docs like to avoid mentioning they exist.

* ==, particularly in regards to boxed types.

* List<String> x = new ArrayList<String>() {{ add("hello"); add("world"); }};

* The behaviour of .equals with the object you create above

* Type Erasure

<comment><USER29> to add another:

        System.out.println(0.0 == -0.0); // true
        System.out.println(java.util.Arrays.equals(new double[] {0.0}, new double[] {-0.0})); // false

(It's documented in the contract for Arrays.equals, but still kind of ridiculous.)

</comment></comment></comment><comment><USER30> To me the first two: "Converting to a string and back" and "Mixing integers with strings" aren't "wats" at all.

</comment><comment><USER31> actually almost none of these seem like wats to me.. Just what I would expect.

The one wat was adding a float to a huge integer. Granted, I assumed something fishy might happen with such large numbers, so I steer away from doing those operations.

<comment><USER32> Well to be fair it is only a wat if you don't know about floating point imprecision. Because that is exactly what is causing this contrary to what is stated. Also python just gets this behavior from C, so the other claim that this is a special case of python is also not true.

Since the 1 is shifted 53 bits to the left the number is right at the start of the number range where only even numbers can be represented.

You get 900719925470993 as the decimal number which you cast to float : 900719925470992.0

Then you add 1.0 and get 900719925470992.0 because of floating point imprecision and rounding. The next floating point number would be 900719925470994.0.

92 is less than 93 and this gets you this seemingly weird x+1.0 < x = true.

<comment><USER33> It's still unfortunate that `x + 1.0` rounds incorrectly. Python is one of the few languages that has correct (infinite-precision) float-int comparisons, so it's reasonable to expect addition to work similarly.

That said, I'm not aware of a language that does better, and I'm aware of many that do much worse.

<comment><USER34> There is Frink ([http://futureboy.us/frinkdocs/](http://futureboy.us/frinkdocs/)) which has interval arithmetic which seems so much more sane than floating point numbers..

<comment><USER33> I looked at Frink a little; it doesn't seem to implement integer-floating addition properly either.

        9999999999999999999002 + 49.0

rounds to 9.9999999999999999990e+21, whereas the lesser value

        9999999999999999999000 + 50.0

rounds to 9.9999999999999999991e+21.

Plus, I'm not a fan of computing with decimal arithmetic, since it's less stable. For instance,

        min(a, b) <= (a + b) / 2 <= max(a, b)

doesn't always hold for decimal floats, whereas it does for (non-overflowing) binary floats. Decimals are generally more prone to this kind of inaccuracy, since they lose more bits when the exponent changes.

(Consider a = 1.00000000000000000001, b = 1.00000000000000000003.)

Interval arithmetic support is cool, but not useful without effort - <USER2> like to grow. Plus, Python has bindings for them anyway ;).

</comment></comment></comment></comment></comment><comment><USER35> > all and emptiness [...]

If all would work any other way, it would be seriously broken. (Given the rules for how to convert list to bool.)

</comment><comment><USER36> Anyone know the story behind the converse implication operator? What it's useful for, and why it's undocumented?

<comment><USER37> ∗∗ is the exponentiation operator. True is implicitly converted to 1, and False to 0. It's a coincidence that 0^0, 0^1, 1^0, and 1^1 line up with converse implication.

<comment><USER38> Maybe someone can explain better, but I don't think it's a coincidence.. In category theory, there is a general notion of "exponential object". This works like normal exponentiation in various categories of numbers, and like modus ponens (and also reversed - given exponent and power, you can deduce the base) in various categories of logic.

</comment></comment></comment><comment><USER39> Working in Python, my biggest wat is that a test can cause a failed assertion in the code and still succeed (if AssertionError is caught somewhere upwards in the code, which will happen at any `except Exception`).

<comment><USER26> I've hit this too, it would be really nice if AssertError didn't inherit from Exception. There's a whole Exception object hierarchy but it seems like none of the parents of Exception are actually useable for anything

<comment><USER39> That would partially solve this problem (it's far rarer to see bare excepts or `except BaseException`), but could cause others. The question there should be what is (or should be) intended when someone says `except Exception` - it's not clear to me whether that should or should not include AssertionError.

A more direct solution might be to have a means of storing off every assertion failure into a (clearable) list. The test harness could then check that list at the end of each test. If a particular test should succeed after triggering an assertion failure, it can check the list to make sure it triggered exactly the expected failures and then clear it.

<comment><USER26> > The question there should be what is (or should be) intended when someone > says `except Exception` - it's not clear to me whether that should or should > not include AssertionError

Right, I guess I'm not suggesting changing the language today to do this. Rather, I'm suggesting that it would be better if it were already done that way from the beginning. If it were designed that way from the start then there would be no question about the intention because it would just be part of the definition of Exception

<comment><USER39> _" If it were designed that way from the start then there would be no question about the intention because it would just be part of the definition of Exception"_

Heh, doesn't that argument apply currently? I think I was trying to ask, "when someone fails to think deeply enough about it, what is likely to give the 'correct' results"?

</comment></comment></comment></comment></comment><comment><USER40> I always run into trouble in Python with closures and assignment. E.g.,

      def f():
          x = 0
          def g():
              x += 1
          g()
      f()

<comment><USER33> Here's a quick interpretation of Python's method:

Any assignment operator (compound or not) follows the same namespace rules. Scope lookups are consistent within a scope, regardless of order. Any "namespaced" lookup (`x[y]` and `foo.bar`) will act inside that namespace.

Non-namespaced identifiers will always assign into the nearest enclosing scope (a scope is always a named function) by default, since clobbering outer scopes - particularly globals - is dangerous. You can opt in to clobbering with `global` and `nonlocal`. If you don't ever assign to a name in the current scope, lookups will be lexical (since a local lookup cannot succeed).

\---

Hopefully most of these value judgements should be relatively obvious.

</comment></comment><comment><USER41> the behavior of is seems pretty hard to predict

      >>> 3.1 is 3.1
      True
      >>> a = 3.1
      >>> a is 3.1
      False

<comment><USER41> It seems to be a case of leaky abstraction, where the way python caches small objects becomes visible, another example:

      >>> a = 'hn'
      >>> a is 'hn'
      True
      >>> a = ''.join(['h', 'n'])
      >>> a is 'hn'
      False
      >>> a
      'hn'
      >>> a = 'h' + 'n'
      >>> a is 'hn'
      True

Edit: found another interesting case

      >>> a = 1
      >>> b = 1
      >>> a is b
      True
      >>> a = 500
      >>> b = 500
      >>> a is b
      False

<comment><USER42> Second case is because of the range of integers that are cached, right?

<comment><USER33> It's actually more complicated than that. CPython will cache constants within a scope, so

        a = 500
        b = 500
        a is b

will give `True`. But the REPL forces each line to compile separately and CPython won't cache across them. However, there's a global cache for integers less than 256 so in that case they're `is`-equivalent even in the REPL.

</comment></comment></comment></comment><comment><USER43> How are the converse implication operators worthy of a wat? That's completely normal...

</comment><comment><USER44> I thought I knew python .... I guess I do not know python ...

awesome idea - thank you

</comment><comment><USER45> False as a valid fd: os.stat(False) (False == 0)

</comment><comment><USER46> Not sure if I can call this as `wat`, but this one puzzled me at first:

        foo = 1.0 + 2 # Foo is now 3.0
        foo = 1,0 + 2 # Foo is now a tuple: (1,2)
        foo = 3 # Foo is now 3
        foo = 3, # Foo is now a tuple: (3,)

source - [https://wiki.theory.org/YourLanguageSucks#Python_sucks_becau...](https://wiki.theory.org/YourLanguageSucks#Python_sucks_because)

<comment><USER47> The ',' in always creates a tuple. Why is that puzzling?</comment></comment>


Baltimore mayor orders security review after employee found with hacking tools - <AUTHOR> https://www.carrollcountytimes.com/news/government/bs-md-ci-employee-hacking-security-20190117-story.html <comment><USER2> _The employee had also installed apps for accessing pornography_

So...web browsers?

<comment><AUTHOR> ...after close inspection it was determined that "safe search" had been disabled.</comment></comment>


AMD Said to be Readying Massive Layoffs - <AUTHOR> http://mashable.com/2012/10/12/amd-readying-layoffs/

<comment><USER2> So sad to see AMD suck hard; I remember the day when AMD was the preferred gamer/hacker/tinkerer solution, and now where are they?

<comment><USER3> Seems to me like they competed with the giant (intel) on its own turf (x86) and failed, rather than skating to where the puck was going to be (ARM).

<comment><USER4> An accurate (but incredibly biased by hindsight) analysis. If this were a matter of ML, I'd say you way over-fitted to the working data.

It would've required forseeing the sea-change in the smartphone/mobile market produced by the iPhone in order to predict that it would explode the market for high performance ARM chips so wildly. This wasn't in the cards at the time. At the time, everything but the Blackberry was a joke.

Anybody in a position to direct capital, with the faculty for this kind of prescience, would then know the _real_ best use of capital in that circumstance is to direct it at Apple, not for AMD to make ARM chips. It likely would've been more profitable for AMD to sell off the entirety of its assets and buy Apple stock in 2005 than for them to try to jump on the AMD bandwagon.

More to the point, AMDs brief reign as the gamer/hacker/tinkerer chip maker of choice was a byproduct of the Pentium 4 architecture, especially the Prescott gen, being such an unmitigated disaster. The moment Intel rolled back to the Core Solo/Duo series based on the Pentium III architecture, it was clear they were going to retake the lead and probably keep it.

All AMD did to "succeed" was not fail as hard at chasing the megahertz demon. In particular, by choosing not to sacrifice pipeline efficiency for higher clock rate, AMDs chips were significantly more performant for virtually every use-case except SSE-heavy vector operations.

</comment></comment></comment><comment><USER5> Actual source:

[http://allthingsd.com/20121012/exclusive-amd-to-cut-up- to-30...](http://allthingsd.com/20121012/exclusive-amd-to-cut-up- to-30-percent-of-workforce/)</comment>


US software 'blew up Russian gas pipeline' - <AUTHOR> http://news.zdnet.co.uk/software/0,1000000121,39147917,00.htm?r=2

<comment><USER2> Story also covered by Damn Interesting: <http://www.damninteresting.com/?p=829>

</comment><comment><USER3> Perhaps the U.S. government is smart enough and coordinated enough to do such a thing but...

Who's to say that this isn't a fantasy spun to enhance the reputation of the U.S. intelligence community whilst providing a coverup for some poorly-written software?

I certainly wish I had the option of saying "The CIA made me do it!" when a bug is found in _my_ code.

</comment><comment><USER4> See <http://en.wikipedia.org/wiki/Farewell_Dossier>

</comment><comment><USER5> best news i've herd all week.</comment>


Show HN: Akrito – Online fiction with donation incentives - <AUTHOR> https://www.akrito.com/ I wrote a short post with more about the site https://www.akrito.com/s/19/1/ <comment><AUTHOR> Creator here. In short, all stories are free, but the latest chapters and ebooks are locked to donors. The length of time (and amount) can be customized by the author.

For a bit more about the site, and why I think it has more to offer than the "$5-10 for an ebook" model, I wrote a short post: [https://www.akrito.com/s/19/1/](https://www.akrito.com/s/19/1/).

Any feedback is much appreciated.</comment>


Lisp Is Too Powerful - <AUTHOR> http://c2.com/cgi/wiki?LispIsTooPowerful <comment><USER2> This old argument. I won't say a thing about Lisp. Let's talk about Ruby. For those of you who were using Ruby in 2005 when Rails was released. Are there any of these arguments that you haven't heard at least _once_ in the last eight years about Ruby? That it's too powerful, that programmers make their own idiosyncratic worlds, that programs are too complicated to understand, &c. &c.

Yet, somehow, There is tons of working Ruby code in production and people have found a way to harness its power. People are awfully clever, I very much doubt that any serious language (i.e. a language not designed to confuse) can't be whipped into shape by a team of reasonable people who are motivated to succeed.

The "failure" of Lisp has a very simple explanation, so simple that people gloss over it. Every successful language began as the scripting language of some system that was itself exploding in popularity.

To be a hit, a language must arrive in the mass market's consciousness in tandem with its "platform." Objective C failed until the iPhone was a hit. C was a hit with Unix and then Windows. Ruby was a hit when Rails was a hit.

Lisp was the scripting language of Lisp machines. When the "AI Winter" hit Lisp machines, it hit Lisp. It never became the scripting language of something else that was exploding in popularity.

Today JavaScript is the scripting language of browsers, so it is a hit, and it doesn't matter whether its first-class functions are elegant (they are), whether its semantics have stupid corner cases (they do), or whether its inheritance model is obscure (prototypes!?).

Just show me something exploding in popularity, and I'll show you a successful programming language.

UPDATE:

I see folks are arguing about what colour to paint the phrase "Scripting Language." Must a scripting language be interpreted? Is Java interpreted? What about JIT techniques for JavaScript? When we transpile CoffeeScript to JavaScript, what is going on? I have a CPU that executes microcode. Is ASM for this CPU really an interpreted language?

All good stuff. By the way, Lisp was originally interpreted, compilers didn't come along until later. So... Was it a scripting language until it was "compiled?"

Have fun, but please remember to leave room in the shed for me to park my tandem.

<comment><USER3> COBOL, Fortran, C++, Ada... were the scripting languages of what exactly?

If I were staying in your argument, then Lisp was the language of symbolic AI. The language where things like symbolic mathematics (Macsyma, Reduce, ...), planners, theorem provers, natural language understanding, reasoning systems, expert systems, knowledge-based systems (Cyc, ...) were explored and first tried to commercialize (mid 80s). Symbolic AI funding went away with the cold war ending...

Lisp was actually invented and designed for this. John McCarthy was designing Lisp as a vehicle for (his) AI research.

There might still be a lot of Lisp users. Even among AI researchers (and related domains) there are many using Lisp tools which you probably have never heard of - like ACL2 (a theorem prover), PVS (a theorem prover used at NASA), ACT-R (a cognitive architecture with more publications written about then you can ever read). The usage of Lisp may even be constant in these domains. There was an explosion of programming in general. Outside these domains Lisp never really participated in this explosion (with a few exceptions like Lisp in Autocad, Lisp in Emacs, ...).

But should it? Lisp's almost unbounded flexibility is obviously not needed by the average programmer. It is actually a something which makes a bad programmer worse.

'Lisp Machines' were just one development/deployment platform - 10000 sold in a decade. Lisp was used before Lisp Machines and after Lisp Machines.

> It never became the scripting language of something else that was exploding > in popularity.

Autocad sold millions of copies and is still widely used today. Several Autocad 'clones' support the use of Lisp for CAD scripting.

<comment><USER4> "COBOL, Fortran, C++, Ada... were the scripting languages of what exactly?"

Isn't Ada the scripting language of the U.S. Department of Defense? As far as I know, most real world Ada usage is in DoD funded projects.

C++ won the battle over Objective-C to become C's successor for many applications, so fills a similar ecological niche.

First sentence from History section of Fortran Wikipedia page:

"In late 1953, John W. Backus submitted a proposal to his superiors at IBM to develop a more practical alternative to assembly language for programming their IBM 704 mainframe computer."

So Fortran was the scripting language of the IBM 704.

COBOL's Wikipedia page indicates it was championed by a committee of all the major computer industry players of its day, making it the Java of its time. So COBOL and Java may be exceptions to this "scripting language of..." rule, and instances of the "successful language created by a committee" rule. (Common Lisp, of course, being an example of "unsuccessful languages created by a committee".)

<comment><USER5> I think you misunderstand scripting here. Scripting languages are interpreted, and can be quite a bit simpler to implement and code in than compiled languages.

Ada, C++, et al., are compiled languages.

<comment><USER6> The "scripting language of" argument is normally presented with the first example of C and UNIX - scripting is used here to describe the purpose it's being used for, not the nature of the language itself.

</comment></comment></comment></comment></comment><comment><USER7> The original post is right: Lisp by itself is an incredibly powerful yet incredibly basic language. It's a functional Assembly for declarative DSLs. The most talked about Lisp nowadays is arguably Clojure, and this is probably so because Clojure provides much more built-ins and libraries out-of-the-box than other Lisps, where you'd have to build these things yourself. At the end of the day, we just want to call "solveMyProblems()", commit that 1 function call, and move on to our next project. The lower-level a language is, the further away from that goal it is, and the less reasons there are to use it.

</comment><comment><USER8> I suspect LISP is too unstructured for its power. It's very hard to scale something to more than one programmer or to a large size in a completely free- form dynamic language. It's easy to blow off other peoples' feet, and totally dynamic languages with many contributors to a project often yield an unmaintainable rats' nest of mixed metaphors and hacks.

Java is one of the most successful languages for massive projects because it imposes a set of common idioms and semantics. Look at Eclipse... an absolute monster but a living, breathing, and pretty darn successful one.

I can't imagine Eclipse in Ruby or JavaScript, let alone LISP... not with the number of contributors it has. It would melt into a puddle of slag not unlike the "corium" that forms at the bottom of a melted-down nuclear reactor.

For those dismissing this as FUD and ignorance: LISP, despite its power, isn't really used for much. I think there _has to be_ a reason for that, and I don't think "everyone is dumber than me" is a valid reason. There are tons of outstanding programmers, and the majority of them do not choose to code real- world stuff in LISP.

I suspect Ruby, which is fairly powerful but not as freeform or succinct as LISP, is more successful because it has more structure around its power. It seems to have enough structure to make large long-lived code-bases possible in the "real world." (But like I said I'm still skeptical that you could write Eclipse in Ruby.)

The question is: would it be possible to build enough structure _or tooling_ around LISP to fix this problem? Could something like Light Table with deeper refactoring and visualization tools deliver a workable LISP environment for modern large applications? I know there were things done in the past during the "80s AI era" that might bear re-examination and resurrection.

<comment><USER9> You say it like it is essential that we scale to lots of programmers up front.

The problem is that there is an organizational barrier. It is easy to have teams of under 8 programmers. It is doable to scale teams of 20+ programmers. But if you're between those numbers, small team dynamics fall apart horribly, and large team organization leaves you with less productivity than the small team.

For a small company, the cost jump from 8 to 20 programmers is pretty significant. Therefore it is worth considering the strategy of getting the most out of your existing programmers and not trying to cross that chasm. If you succeed, you eventually will have to face the scaling problem. But success tends to take care of itself.

<comment><USER10> I think GP meant the number of people touching the software over its lifetime, not necessary at the same time in one location like in a company. e.g. Eclipse must have hundreds if not thousands of contributors, loosely networked and hardly seen each other, contributing over a long period of time. Yet they are able to understand each other's code and build on top of each other. The readability of a language is a must to foster this kind of cooperation. Java is a very readable language and the knowledge in the code can be easier shared among developers.

</comment></comment></comment><comment><USER11> This is just a giant page of FUD.

Every language has flaws and using languages effectively means knowing what those flaws are and how they affect your program's processes. Does Lisp code produce unmaintainable masses of code? Perhaps. Ever read the IOCCC entries? Or pull apart exactly what a given Ruby script is actually doing? Yet people write good software using these languages all of the time and the world hasn't blown up yet.

<comment><USER12> Not really, it's just C2 being C2. You can often see a lot of conflicting opinions on those pages, but the arguments tend to be solid. Try reading these two:

<http://c2.com/cgi/wiki?WhyWeLoveLisp> <http://c2.com/cgi/wiki?WhyWeHateLisp>

</comment></comment><comment><USER13> The page is down for me, so Google cached: [http://webcache.googleusercontent.com/search?q=cache:c2.com/...](http://webcache.googleusercontent.com/search?q=cache:c2.com/cgi/wiki?LispIsTooPowerful)

<comment><USER14> Webserver clearly not written in Lisp.

</comment></comment><comment><USER15> Lisp is perhaps the most powerful language there is. But no language is 'too powerful' considering the software that is being built today. It has not enjoyed commercial success because it gained reputation as an inefficient language and the average programmer cannot become proficient in it unless he has a certain amount of discipline and learning he is prepared to invest. C and C++ are much easier to learn and are taught more in colleges. So the reason lisp isn't popular is because people are not learning it. And even those who learn it have less opportunities to use it because of the C, C++ and Java legacy.

<comment><USER16> It seems that you are cherry-picking. Lots of "inefficient" languages that were never taught in schools have gained incredible ground -- consider python, ruby, perl, and PHP.

<comment><USER15> On the contrary, all of those are being taught in schools python is now being taught at introductory classes in MIT, Cal and Stanford to name some. Ruby and PHP are taught too. At lest in grad school. Don't forget the private turoring and certification programs you can enroll in. I have not seen a single certification course that involves Lisp. Also, consider the ages of those languages. Lisp has been around for more than 50 years now. The others are not even half its age.

</comment></comment></comment><comment><USER17> Lisp is the most powerful language in the world - as witnessed by its power to cloud the minds of otherwise intelligent and articulate engineers and scientists.

</comment><comment><USER18> 13 years ago I spent a LOT of time on C2.com. Every time I see one of those pages I have flashbacks.

<comment><AUTHOR> I didn't know it yet. The content is very good.

</comment></comment><comment><USER19> <http://imgs.xkcd.com/comics/lisp.jpg>

<3 Lisp

<comment><USER20> <http://xkcd.com/312/>

Always makes me smile.

<comment><USER21> I prefer thinking of myself as a Lisp warrior, valiantly carrying on the good fight of my predecessors: <http://xkcd.com/297/>

<comment><USER20> May the s-notation be with you.

</comment></comment></comment></comment><comment><USER22> Cached Article here: [http://webcache.googleusercontent.com/search?q=cache:pfmf4-8...](http://webcache.googleusercontent.com/search?q=cache:pfmf4-8kdAAJ:c2.com/cgi/wiki%3FLispIsTooPowerful+&cd=1&hl=en&ct=clnk)

</comment><comment><USER16> What is the definition of a "powerful" language?

It sounds to me like arbitrarily taking a word with good connotations to mean something that is convenient for promoting what you're interested in; regardless of the literal meaning.

</comment><comment><USER23> Things are too complicated. There is too much boilerplate. Software is hard.

</comment><comment><AUTHOR> Here is a nice 1986 MIT lecture on Lisp given by... Harrison Ford? :) - <http://www.youtube.com/watch?v=2Op3QLzMgSY>

</comment><comment><USER24> "But I have yet to see a good demonstration that Lisp significantly simplifies things beyond what other languages can do... It only slightly simplifies things."

The circularity is impressive.

</comment><comment><USER25> _Lisp_ is not a problem. Lisp is fine. So are Scala, Ocaml, and Haskell, under most use patterns. Python's not perfect, but I'll gladly use that. It works. Actually, I like Clojure better than CL, but that's irrelevant. I had one experience of being burned by "Lisp's power". I was in a company where I had to work with a programmer who used Lisp in ways the rest of us found to be irresponsible (poor documentation).

He actually wasn't a bad programmer. He was actually a pretty good one, but management had been riding him with unreasonable feature requests and ridiculous deadlines, so no one ever got to do anything right in that company. My code was better, not because I'm inherently better but because I fought back and simply padded the shit out of estimates so I _knew_ I'd have the time to do things right.

These problems that get blamed on languages are usually the result of terrible management.

Even bad code is not pure evil. Bad code is just logic, poorly fashioned and presented, often because of shitty business practices rather than poor programmers. The evil is the manager who _forces you to use_ bad code (instead of letting you replace it) because "we can't afford" doing things right, even though you're in a rich company that pays managers extremely well. That's the enemy. Let's stop warring about cosmetic differences among good languages and focus on that guy.

<comment><USER26> Lisp is too powerful only for unexperienced developers because the way of programming in Lisp is totally different from all other languages.

Actually many modern languages (Python, Ruby, Java, even C++11) copy more and more features from Lisp since the language designers suddenly realized how useful these features are.

Lisp was never "too powerful" but simply far ahead.

<comment><USER25> Lisp makes it really easy to build infrastructure and multiplier-level (Level 2) contributions that affect the whole shop. When you have 1.3-1.4 programmers (scale here: [http://michaelochurch.wordpress.com/2012/01/26/the- trajector...](http://michaelochurch.wordpress.com/2012/01/26/the-trajectory- of-a-software-engineer-and-where-it-all-goes-wrong/) ) who aren't ready to take on projects that will affect other people in such a major way, you can get bad results. That's a management problem, though. Inexperienced developers _need_ to have opportunities to experiment, but if others are forced to sit downwind of their work, then management is behaving badly.

</comment></comment></comment><comment><USER27> That writing style is almost schizophrenic. Tangents upon tangents, it gives a restless impression.

<comment><USER28> It's a Wiki. In fact it's THE wiki. Those are multiple voices.

<http://en.wikipedia.org/wiki/Portland_Pattern_Repository></comment></comment>


Sliding Window Data Store in Erlang - <AUTHOR> http://stratus3d.com/blog/2015/05/19/sliding-window-data-store-in-erlang/ <comment><USER2> Queue based implementation is obviously the cheapest but author does not mention that queue.erl time complexity is O(1) amortized. It does introduce latency spike when "in" list needs to get reversed because "out" list is empty.

<comment><AUTHOR> Your right. There will be a huge latency spike when the out list needs to be refilled.

My throughput benchmark does take this into account though. It attempts to add 100,000 events to a window that only keeps events for 10 seconds. Adding 100,000 events takes much longer than 10 seconds, so the out list will be repopulated a couple times before the test is complete. The throughput benchmark is only an average though... And a longer running throughput test would yield a more accurate average.

I will update the post with this information.

</comment></comment><comment><USER3> Is there some possible optimization to be made here by bucketing seconds and dropping buckets wholesale rather than having to peel off items until you find the start of the window?

You'd end up quantizing the window, but.. dunno, just spitballing here.

<comment><AUTHOR> I had thought about that but never got around to building a sliding window that worked that way. The challenge is that then the `events/0` call might return events outside the window of time. But there is a potential performance improvement if we don't have to always be removing old events one by one.

I'll have to try improving the list implementation with "buckets"... I wonder if buckets could be represented as lists stored inside a tuple or another list...

<comment><USER3> Right, you'd end up returning one bucket too little, or one bucket too much, of your full time window, depending on what tradeoff you decided was OK to have.

And yeah, I was thinking of buckets as append-only lists that got dropped in their entirety when out of range.

</comment></comment></comment><comment><USER4> Looking at this code I really can't help but think the biggest opportunity out there for PL designers is Pythonic BeamVM language.

Elixir is great, but I think a language like this would pull away so many Python guys from their migration to Go and Python3 and take Erlang to a new level.</comment>


The End of California? Dream On - <AUTHOR> http://www.time.com/time/nation/article/0,8599,1931582,00.html?cnn=yes <comment><USER2> As a life-long resident of California, I should like to say that if this is where the rest of the country is headed, then the Republic is doomed. Adopting the policies of California will bankrupt any other state in the country as it has this one. If this be the future, then we as a nation are headed straight off a cliff.

<comment><USER3> Well, Silicon Valley is in good shape anyway. It still produces things, unlike most of the rest of the country. Hollywood is likely to keep ticking, too, and I don't see the wine country having much trouble either. Meanwhile, the state is a pretty damn good place to grow tasty, nutritious fruits and vegetables.

As a California resident, all this doom and gloom has struck me as utter nonsense. California has especially noticeable problems because it is such a huge and dynamic economy. So perhaps it reacts to U.S./World economic conditions in an especially intense manner. But this is something like a healthy immune reaction in my opinion. California will get over it, and it will be stronger in the end.

Perhaps I sound too infatuated with California. Well, come here and see for yourself. It almost makes me feel patriotic---for California, that is.

<comment><USER4> I agree with you that the state of California is, all things considered, not doing too badly, and it looks as though it will be doing better in the near future. I think that the original commenter was referring to the _government_ of the state of California, which is in serious fiscal trouble. And it looks as though the state government's problems are going to be exacerbated in the future by the tendency of the state legislature for the last several years to "solve" any fiscal problems with temporary fixes and postpone real solutions. The state itself certainly still has a very bright future, but unless the legislature makes some drastic changes in the near future, the state government's future looks very troubled. "California" and "the government of California" are two very different things, and it's important not to conflate the two as often happens in these "California is going down the shitter" debates.

<comment><USER5> Something else to consider when looking at all the doom and gloom around California is the relative income of the average person in California vs. the rest of the US.

      Median Household Income
      California $61,021
      United States $52,029
      Personal per capita income
      California – $33,749
      United States of America – $31,632

      Taking the population 35,893,799 of California * the income gap ($33,749 – $31,632 ) = 75,987,172,483 call it 76 billion per year.

So yes they had a state budget gap of about 1/3 of the extra per person income vs. the rest of the country. But the idea it's bonds or IOU's became worthless is silly.

Median income tends to reduce the apparent income gaps. If you look at the simple average, California makes a lot more money than the rest of the country on average. But they solved the problem by reducing spending and not taxing people more. <http://online.wsj.com/article/SB124814401981267445.html>

PS: I expect USA to do the same thing, a minor tweak to our spending and taxes can quickly stop deficit spending.

<comment><USER6> _PS: I expect USA to do the same thing, a minor tweak to our spending and taxes can quickly stop deficit spending._

The Congressional Budget Office predictions were for the combined deficit for the next 9 years to be $9.27 trillion, and half of that from new spending. Those "tweaks" you are counting on to stop deficit spending don't seem to be so minor, and aren't even going in the right direction.

<comment><USER5> Stop fighting wars in the Middle East and then double check those numbers.

[http://www.usgovernmentspending.com/federal_deficit_chart.ht...](http://www.usgovernmentspending.com/federal_deficit_chart.html)

<http://www.usgovernmentspending.com/defense_chart_30.html>

Also breakeven is having the national debt grow as fast as inflation even though CBO considers that a deficit. 12 trillion * .03 = 360 billion / year.

PS: There is still a gap but doing things like increasing the SS minimum age by 1 year and cutting back on defense spending might hurt but they don't exactly break our society. Next up remove the tax break on charitable donations.

<comment><USER6> So, then, the "minor tweak" you are relying on is for the U.S. Government to pull out of Iraq and Afghanistan tomorrow? I don't see any indication of that happening.

When the government actually puts any of those ideas into practice I'll be elated. Until then it's nothing but fantasy, and sure as heck no reason to expect that our deficit spending is under control.

<comment><USER5> I don't expect anything to change quickly.

The US federal government is a long way from a true crisis and without that impetus it's far easier for politicians to keep spending silly amounts of money. However, when looking at budget projections you need to realize there is no mandatory spending. "Fixing" SS seems like a deal breaker but we have already increased retirement age with few real grumbles. In the past we drastically cut defense spending with few problems. And despite all the fear pulling out of Vietnam was hardly the end of the free world.

So, yes, I think we will pull out of the middle east within 10 years but a few trillion her or there is not going to break the US economy assuming the government can keep paying such low interest rates. The important thing is adjusting future spending so we can keep those low interest rates.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER7> _microchips, freeways, blue jeans, tax revolts, extreme sports, energy efficiency, health clubs, Google searches, Craigslist, iPhones and the Hollywood vision of success_

So much bullshit, any intelligent person will have stopped reading immediately. TIME seals its status as the worst newsweekly.

 _microchips_

From wiki:

 _The idea of an integrated circuit was conceived by a radar scientist working for the Royal Radar Establishment of the British Ministry of Defence, Geoffrey W.A. Dummer (1909-2002), who published it at the Symposium on Progress in Quality Electronic Components in Washington, D.C. on May 7, 1952.[1] He gave many symposia publicly to propagate his ideas._

 _freeways_

Hitler.

 _blue jeans_

Strauss came from California, blue Jeans did not. Again, see wiki.

 _tax revolts_

Fuck you. The Pennsylvania Whisky rebellion is BY FAR the most prominent tax revolt in American history, and it is 1000s of years too late to be considered the inventor of the phenom.

 _extreme sports_

Rome.

 _energy efficiency_

Watt.

 _health clubs_

Rome.

 _Google searches_

Altavista essentially the same, CMU.or Massachusetts, I forget.

 _Craigslist_

Charging zero for an established service is not an innovation.

 _iPhones_

Finland.

 _Hollywood vision of success_

Marx.

<comment><USER8> "That gave us" doesn't always mean "that invented".

<comment><USER7> What does it mean then? One example: Energy Efficiency. I draw attention to this because:

Energy efficiency has ALWAYS been a concern of industry. And James Watt has done more for industrial efficiency than the entire state of CA will ever do. Sorry, but that's a fact. Even if you discount the low-hanging fruit of efficient steam-engines, then companies like Toyota are still at the forefront, not California. I am simply pointing out bullshit where I see bullshit.

And _Freeways_? Really, _freeways_?

EVERYBODY, and even the ignorant part of American society knows that the US freeways were years behind Germany. I'm just pointing out gross stupidity. Nothing else.

</comment></comment></comment><comment><USER9> Anywhere's probably better than Detroit. Having never visited California in my life (closest I've come was living in Texas), I really want to see how great it is. So please, Paul Graham, if you are reading this, please at least give me an interview so I can fly there for free.

<comment><USER10> I'm not sure Texas counts as getting close to California... (I've lived in both, currently in Austin.)

<comment><USER9> Well Michigan vs Texas, which one is closer to california? Texas is hot like California, and it's economy is better than michigan's. I said it's the closest I've been, and I also didn't mean physically either.

<comment><USER10> It's true, and there are parts of Texas that remind me a lot of parts of California.

<comment><USER9> Also both make me think of the color orange.</comment></comment></comment></comment></comment>


How Insight and Epiphanies Work (New Yorker) - <AUTHOR> http://126.96.36.199/search?q=cache:R882hcua0cwJ:web.mit.edu/ekmiller/Public/www/miller/Lehrer_Insight_New_Yorker.pdf+the+eureka+hunt&hl=en&ct=clnk&cd=4&gl=us&client=firefox-a

<comment><USER2> Thanks for submitting this. I might actually get in touch with the researchers at some point because this is something I'm interesting in. (Even though I think they're on the wrong track.)</comment>


Ask HN: Help developing tech-focused curriculum for Bay Area high school - <AUTHOR> Hello!
Background:
I am a high school teacher at a school in the Bay Area that is adopting a focus in tech. Our goal is to have our kids get jobs in tech after they graduate. We're offering courses in computer literacy and introductory coding, and are trying to get all teachers to integrate more tech-focused assignments in classes, including discussing tech as a topic and using more tech in all classes. I have been designated tech curriculum developer, because I am young and proficient with tech for an English major (i.e. I make documents in LaTeX and have played around with coding). However, I am dealing with tech-phobic faculty, so myself and a few other colleagues do not have much support in finding opportunities for our students.
I work at an alternative school in a rough area. Our kids face enormous challenges, but are incredibly tough, resilient, and learn quickly (most have had really terrible school experiences, many were not their fault). We are in a high-poverty area and few of our students go to 4 year colleges (many go to community college). Most get low-paying service jobs after they graduate and continue to live in poverty. But they have dreams, and they are intelligent and wonderful. I want the best opportunities for them, and with the growing tech world in the Bay Area, I want them to be prepared for the future.
Questions:
My questions for this community are: what opportunities exist within your fields for students such as mine? What internships and entry level jobs are available where you work? What skills should we teach them to be prepared for those jobs? What areas (frontend, backend, IT infrastructure) within the tech world would be best for students who will not be able to go to a 4 year college?
We're working to create a partnership with Hack the Hood and Girls Who Code, but any other organizations that you know of that are trying to outreach to high schools would be great. <comment><USER2> Code.org

I routinely hire from outside the four year degree path. I wish these entry level folks knew:

\- Linux CLI fundamentals \- Some SysAdmin \- Arrays and Collections and Loops \- Data Parsing (scanf, regex) \- SQL basics \- HTML+CSS basics

<comment><AUTHOR> Thank you so much! This gives us some good specifics to work toward. Now we need to learn these things ourselves!</comment></comment>