hacker news with inline top comments    .. more ..    1 Dec 2014 Best
home   ask   best   5 years ago   
1
Wanderers: a short film of humanity's expansion into the Solar System [video]
507 points by Thevet  1 day ago   110 comments top 38
1
arethuza 16 hours ago 0 replies      
What a fantastic video.

My favourite part: BASE jumping from Verona Rupes - the tallest known cliff in the Solar System - somewhere from 5km to 20km vertical:

http://apod.nasa.gov/apod/ap110404.html

By comparison the tallest vertical drop on Earth is on the surreal Mount Thor at 1250m:

http://www.amusingplanet.com/2013/03/mount-thor-greatest-ver...

[Some great details - like the Earth coastlines used in the asteroid interior (mentioned on the film's website) and the Taijitu in the crater at 1:54].

2
Kronopath 20 hours ago 0 replies      
I love the details in this film. Things like the winged people flying on Titan, possible due to its dense atmosphere. There are things on these other worlds that we could never experience here.

Even the title has multiple meanings to it:

In ancient times, astronomers noted how certain lights moved across the sky in relation to the other stars. Ancient Greeks called these lights (planetes asteres, "wandering stars") or simply (plantai, "wanderers"), from which today's word "planet" was derived.

Source: https://en.wikipedia.org/wiki/Planet

3
ca98am79 23 minutes ago 0 replies      
My wife's grandfather is dying, and he is suffering now at the end, and it has been a hard day for her, and me. It has been depressing to see the end of his life - it is not hard to imagine your own end, and to wonder the meaning of the things you do in your day to day life.

And I don't know exactly why, but watching this video turned things around for me for a bit. I guess it's nice to remember that life keeps expanding and people keep accomplishing great and wonderful things.

4
abrichr 1 day ago 0 replies      
This is beautiful.

For me, Carl Sagan's voice is incredibly inspirational. He knows just what to say and how to say it to elicit a beautiful and optimistic feeling of wonderment.

And the visuals were stunning. A tantalizing glimpse into the next century or two of human exploration and experience.

Thank you for this.

Edit: Reddit thread at http://www.reddit.com/r/Futurology/comments/2nseb3/wanderers...

5
evaneykelen 17 hours ago 4 replies      
Frustrating to realize that perhaps only 1 or 2 years of Earth's military spending would enable mankind to achieve this (approx $1700 billion/year). Not saying we don't need to spend money on defense, merely taking one the world's expenditures as a yardstick. It would be so great if mankind is able to cooperate in the colonization of our solar system.
6
blisterpeanuts 1 day ago 3 replies      
Wow; that was incredible. I wish it were three hours long.

That dude floating in that debris belt (ring of Saturn?) -- that looked a bit dangerous. Hopefully he had a force field around him.

There's so much out there, just waiting for us to get off our duffs and explore. We have much of the technology; if we could just stop spending trillions on machines of war and instead spend it on machines of exploration....

7
nkoren 12 hours ago 2 replies      
Kim Stanley Robinson's Mars Trilogy is apparently being made into a TV series now. This guy must work on the visuals for that. He gets it; he really, really gets it.
8
thomasfl 15 hours ago 1 reply      
I would like to see a full length Wanderers movie. The optimistic feeling of adventure, travel and belief in science, would make it well worth spending a couple of hours watching.
9
tobr 15 hours ago 0 replies      
Beautiful.

You might be interested to learn that Erik Wernquist is also the person who created Crazy Frog some ten years ago.

10
yogrish 23 hours ago 1 reply      
Awesome creation. Image Gallery and Explanation: http://imgur.com/a/Ur5dP
11
hmottestad 17 hours ago 1 reply      
Don't forget that you can download the video using youtube-dl (if you like me, get annoyed that Vimeo doesn't continue buffering when you pause it, and deletes the current buffer if you rewind)

http://rg3.github.io/youtube-dl/

12
Osmium 14 hours ago 0 replies      
As a first step, I wonder how feasible it would be to have a constant presence around these planets and moons? A 'standard' orbiter, mass produced? I was reading about the Jupiter Icy Moon Explorer mission, and it's incredibly exciting, but it won't get there until the 2030s, and even then it'll be a temporary presence.

The reason I think of this is that I recently came across this animation from New Horizons showing a 330km-high eruption that recently happened on Io:

http://en.wikipedia.org/wiki/Io_(moon)#mediaviewer/File:Tvas...

It's utterly captivating, at least to me, and I can't help but wonder what effect it would have on the public's imaginations to be able to see images like that every day, in high definition, from all over our solar system.

13
rbanffy 5 hours ago 0 replies      
I never thought I'd use this quote here, but:

If you want to build a ship, dont drum up the men to gather wood, divide the work, and give orders. Instead, teach them to yearn for the vast and endless sea.

Antoine de Saint-Exupry

14
hiphopyo 17 hours ago 1 reply      
Crazy how one man can do something that normally would take hundreds of people to accomplish.

Wouldn't it be nice if Erik Wernquist was in charge of the filmatization of "2312" (the novel that inspired his "Iapetus Ridge" scene).

http://en.wikipedia.org/wiki/2312_(novel)

15
shmerl 21 hours ago 2 replies      
16
frinxor 22 hours ago 1 reply      
Check out Reid Gower's videos as well, the Sagan Series, a collection of videos he did that also used Carl Sagan's voice.

https://www.youtube.com/watch?v=oY59wZdCDo0&index=1&list=PLF...

And of course, Cosmos, which is where all the audio is from in all these videos

https://www.youtube.com/watch?v=dADUBcoEEHw&index=1&list=PLB...

17
ogig 23 hours ago 2 replies      
All these visuals made by just one guy? I'm impressed. It has higher quality than many hollywood fx products.
18
airlocksoftware 21 hours ago 0 replies      
In the same genre, I watch this when I need a touch of inspiration. They're quotations from The Pale Blue Dot, again with the Sagan voiceover.

http://vimeo.com/2822787

Often we forget how far we've come, and how far we have to go. It's easy to get bogged down in the minutiae of regular life. When I listen to Carl Sagan sometimes I feel like I've glimpsed a bigger perspective.

19
Ygg2 23 hours ago 2 replies      
Amazing video.

I especially like the world play here. Latin Planetes (as in planets) means wanderer. The name of this film can be understood as Planets.

20
anw 23 hours ago 0 replies      
Videos like this make me truly yearn for our civilization to expand off of our home planet.

I've finally gotten into some of Philip K Dick's works, as well as adventuring in the game Eve Online.

Both make me question how far we could be in technology, medicine, civilization, if we all could work together and not have schisms divide us.

I suppose it's the same as wishing for a utopia, though.

21
ijk 23 hours ago 1 reply      
What makes it for me is that every place depicted in here actually exists, right here in our solar system.
22
dmix 23 hours ago 1 reply      
"As for me, I am tormented with an everlasting itch for things remote. I love to sail forbidden seas, and land on barbarous coasts." - Herman Melville

Wonderful quote by Sagan.

23
wcoenen 14 hours ago 0 replies      
Definitely check out the imgur gallery[1] with explanations of all the scenes!

http://imgur.com/a/Ur5dP

24
a3n 22 hours ago 0 replies      
We went to the Moon, and yet we're still killing each other, or getting rich off of other people's poverty.

Peace on Earth is not going to come from going somewhere else and proclaiming "Look at us!" It's not a side effect.

Or, as the Quakers say, "There is no way to peace. Peace is the way."

25
brador 15 hours ago 0 replies      
Which planet would allow for the largest/densest brain size in an organism that evolved to maximum size there?
26
zan2434 21 hours ago 0 replies      
That was beautiful. I'd love to read more about how exactly the visuals were generated. This is a lot more than spheres rendered w/ NASA photo textures.
27
devgutt 14 hours ago 3 replies      
Todo list:1- Invent powerful machines for simulations and calculations(ok)2- Stop with childish religious beliefs altogether (in progress - 5ys)3- Review completely the social contract (in progress - 50ys)4- Fix mortality (urgent - 100ys)5- Explore the universe (2114)
28
dojo999 12 hours ago 0 replies      
Beautiful short film, excellent effects and voice-over. Like.
29
machinshin_ 23 hours ago 0 replies      
I want to go to there
30
eklavya 14 hours ago 1 reply      
How I wish I was born in a time when mankind can travel the vast cosmos.
31
houseofshards 19 hours ago 0 replies      
Wow ! This is beautiful. Stunning graphics + Sagan's legendary voice almost left me in tears.
32
booleanbetrayal 11 hours ago 0 replies      
absolutely stunning. i will feel incredibly deprived if my exhaust without witnessing this sort of endeavor by mankind.
33
urza 11 hours ago 0 replies      
I'll just leave this here: http://youtu.be/FbpIwT9nV3Y?t=7m7s
34
graycat 1 day ago 2 replies      
Wander? From earth into the rest of the solar system? If we'd grown up anywhere elsein this solar system, then the place, thedream destination, in this solar system wouldbe earth.

Since I'm already here, no way doI want to leave!

Send some machines to gathersome data and transmit it back to us here onearth? Fine. Maybe terrific. Go there, inperson? For me, no way!

35
pkaye 23 hours ago 0 replies      
I really loved this. Are there anything else similar elsewhere?
36
molmalo 1 day ago 0 replies      
I loved it, thanks!
37
spiritplumber 13 hours ago 0 replies      
Very uplifting.
38
tbolse 23 hours ago 0 replies      
Waiting.
2
Mean People Fail
462 points by grellas  1 day ago   453 comments top 125
1
mattmanser 1 day ago 35 replies      
Perhaps pg and I have a different understanding of the word mean, but I doubt it as the opposing word he uses to describe the founders is "good people". These are just the ones coming to my head:

Apple, Steve Jobs, widely known for being an asshole. Fucked over early employees.

Facebook, Zuck, completely fucked over his mates when money appeared.

Microsoft, Bill Gates, ruthlessly exterminated opposition and known for bullying staff.

Oracle, Larry Ellison

Zynga, Marcus Pincus, "I Did Every Horrible Thing In The Book Just To Get Revenues".

Uber, acting like complete dicks.

Kim Dotcom, nuff said.

I think once you've been mean/ruthless/evil in business you may come out the other side and do some nice things, but you have to ask, will it ever be enough? Will Bill Gates ever make up for the billions of damage he caused humanity by using underhand tactics to destroy his opposition? Maybe. But while everyone praises him at the moment, I can't help but think he deliberately held the internet back for 6 or 7 years for his own profit. You almost can't start calculating the damage he caused precisely because it is so mind boggling.

Perhaps you don't agree with me, but imho this is the most bizarre essay I've read by pg, and I really don't agree with most of his political leanings, so for me that's saying a lot.

The truly great startup founders have to be nice on the outside but when push comes to shove, complete assholes on the inside. And of course investors are going to see the nice side.

Edit: And it occurs to me, funnily enough pg seems to be one of the major counterexamples, a good founder, as when he setup YC it was a game changer because here was a rich dude taking time out to help a bunch of young people and then put his money where his mouth was when people started asking him "so where do we get this seed funding". It was so remarkable because he actually took the time.

Edit 2: There seems to be some debate on the meaning of "mean". I'd point to pg's own essay on philosophy to dismiss this sophistry. He uses "good" and "benevolent" as the opposites, not "polite" or "diplomatic". I also appreciate BG created trillions of value, so he's definitely an overall net +ve, but he destroyed as well as created.

2
bokonist 1 day ago 1 reply      
The trouble with this thesis is that most people are situationally mean or nice.

People like Steve Jobs or Lyndon Johnson were legendary for being charming to people they needed but abusive to people who were under their thumb. Zuck can be a nice person to many people, but also can be an asshole to people who he thinks are not useful to him and who are wasting his time.

It goes the other way too. Paul Graham compares founders to internet trolls. I know someone in real life, who got banned from this forum and real life events due to trolling and hurling insults. That person is quite nice in real life (or, at least he is nice around me). In many cases the troll on the internet is the person who in real life has to always bite their tongue and say the nice thing, trolling on the internet is the one place where they can be the Steve Jobs asshole and not suffer consequences.

PG is a millionaire investor. I can readily believe that any founder who cannot shield their mean and ruthless streak from PG, would not be a good founder. Successful people are very adept at knowing when to work the charm, and when to be ruthless, knowing when they have to hold their tongue, and when they can speak their mind without consequences.

I'm trying to think of what evidence would convince me that founders were actually less mean than your average high-level person in some other industry. I think you would need to do a series of private interviews with their subordinates and ask questions about how often they get berated or screwed over.

I'd also be interested in hearing the experience of anyone who has switched from being mid-level in finance to mid-level in tech. Is there really a difference in "meanness"? PG cites Jessica's experience, but she was switching to a position in tech where she had the position of dominance over the founders, so she always seeing their good side.

It has been my experience that the people at the top in tech generally have a ruthless streak. Tech founders and execs are more ruthless/situationally mean than the people at the bottom. The founders have the ability to turn a switch and treat employees as tools, rather than people. This may be necessary if you have to fire people and make other hard decisions. I do not think that this ruthless streak is necessarily a bad thing.

"There is also a complementary force at work: if you want to build great things, it helps to be driven by a spirit of benevolence...They may not say so explicitly, but they're usually trying to improve the world."

Keep in mind that a desire "to improve world" is a synonym for a "lust for power." The first is a positive way of putting it, the second is a pejorative, but it is the same thing. A neutral phrasing is that founders "desire influence". Founders hold on to their startup rather than selling because they like being in the thick of things, having attention, being able to shape and move a service that millions of people use, and have an impact on tens of millions of people. This desire for influence is not at all incompatible with being an asshole to people who are not useful or who are in the way.

"Another reason mean founders lose is that they can't get the best people to work for them."

Anyone who is mean all the time will certainly fail. Who are these people though? Most people who are indiscriminately cruel are probably also low IQ (they are not even smart enough to manipulate) and max out at being a sales manager for Dundler-Mifflin.

All things being equal, an employee would rather work for a nice boss than a mean boss. But employees also want to work for a winner, and will often accept a boss with a mean streak as a trade-off in order to work for a winner.

"Increasingly you win not by fighting to get control of a scarce resource, but by having new ideas and building new things."

The "but" should be an "and". The "scarce resources" are market opportunities for capturing a lucrative monopoly with only minimal upfront costs. Based on the underlying state of technology, there are only so many opportunities for a small team of hackers to build simple apps that can gain traction and turn into wildly successful products.

Startups also require a large amount of hustling. You have to convince a lot of people to bet on you before there is solid evidence that you have a great product. The amount of hustling, salesmanship, confidence games, self-promotion, "naughtiness", that can be required would make a lot of us hackers feel very uncomfortable. So while there is a selection for makers, there is also a selection for people who have a fair amount of narcissism and who are comfortable pushing ethical boundaries.

It might be that YC is particularly good at picking and accelerating startups based on having founders who are great makers rather than great sellers. This really would generate a better class of founder, and would make their startups more ethical and less mean than the typical VC backed startup. If this is the case, then kudos to YC.

3
AndrewKemendo 1 day ago 4 replies      
PG needs to get out more because his economic arguments are way off. Perhaps SV is a magical land where money just falls into your lap but for the rest of us in the real world it's a knock down drag out fight.

Increasingly you win not by fighting to get control of a scarce resource, but by having new ideas and building new things.

This is insane - nothing has fundamentally changed that makes scarcity no longer a primary driver for competition. The metrics for all startups etc... are scarce resources, namely cash and labor. Even if you assume that there is a glut of startup cash, the process proves that VC/Angel dollars are still scarce. Maybe that is a narrow interpretation of that phrase though.

Maybe he means that instead of "capturing" real goods like real estate, or oil or something like that which would be more apt for the "scarcity" title, the economy is leaning towards "knowledge" jobs. This just shows me how extremely disconnected from reality PG is.

The reality is that the world that he lives in (technology dev/VC etc...) rides on top of the cutthroat international game of resource dominance that he ignores. The real estate, energy and hardware resources that underlie the technology market are absolutely fixed pie games (when analyzed from production/consumption standpoint) where the most ruthless win.

Very disappointing that one of the start-up world's "thought leaders" has his head so high in the clouds he can't see his foundations.

4
sillysaurus3 1 day ago 4 replies      
And yet while there are clearly a lot of mean people out there, there are next to none among the most successful people I know. What's going on here?

You live in a society where successful people aren't mean. That's different from the rest of the world.

Maybe a more accurate title would be "Mean People Fail in Silicon Valley"

But there are at least big chunks of the world that mean people don't rule, and that territory seems to be growing.

I wish more of the essay was devoted to evidence of this, because it'd be amazing if true. But I don't personally see any evidence that mean people are becoming less influential.

When you think of successful people from history who weren't ruthless, you get mathematicians and writers and artists.

One specific counterexample: Gauss was extremely mean. And not only mean, but mean to his family:

Gauss eventually had conflicts with his sons. He did not want any of his sons to enter mathematics or science for "fear of lowering the family name".[36] Gauss wanted Eugene to become a lawyer, but Eugene wanted to study languages. They had an argument over a party Eugene held, which Gauss refused to pay for. The son left in anger and, in about 1832, emigrated to the United States, where he was quite successful. Wilhelm also settled in Missouri, starting as a farmer and later becoming wealthy in the shoe business in St. Louis. It took many years for Eugene's success to counteract his reputation among Gauss's friends and colleagues.

http://en.wikipedia.org/wiki/Carl_Friedrich_Gauss

I feel bad pointing out a counterexample like this, because it's easy to cherrypick an example of a mean person here, a mean act there. More difficult to show a general trend. But isn't the difficulty of finding examples of nice people evidence that niceness isn't very pervasive, especially throughout history?

5
acjohnson55 1 day ago 4 replies      
This sure sounds nice, and I believe Paul when it comes to his perception. But I'd need more convincing that this is objectively and not just something Paul sees because he's good at filtering out the people he doesn't want to work with.

A couple counterexamples come to mind. Steve Jobs, Larry Ellison, and the Uber executive team, the Github husband and wife with the Horvath incident. Of course I can't generalize these cases either, but these are prominent companies where the truism doesn't hold.

6
tacos 1 day ago 2 replies      
What a strange and weak word to build an essay around. Especially since counterexamples are so easy to find.

I've certainly found that when I'm in a position of power people are kinder than when I'm not. And I've met a lot of "mean" people that I can disarm in a few seconds once I determine where that energy is coming from. (Are they scared? Overwhelmed? Defensive due to another, more buried issue?) Works online and off, in tech and the arts. Sometimes even while driving.

This essay offers no insights into the human condition -- and the detour into aggression/fighting is particularly weak and unsupported.

People have lots of reasons for being mean (or an asshole) in certain situations. And I'm certain pg, like all of us, has exhibited those behaviors at times.

7
gfodor 1 day ago 1 reply      
I've worked with a few successful CEOs, some of which were 8-9 figure net worth, and one 10 figure net worth. One relatively consistent trait I've seen is that they all were brutally honest about the work people did and a person's particular strengths and weaknesses. This is often construed with meanness.

I don't think it's the same trait, but many people often interpret criticism of their work as meanness. Sometimes it's quite hard to not see it that way, since an honest criticism may actually point out major flaws in your overall skills, talent, etc, not just some local error you made. Of course, the consensus forms that this person is an asshole. Unlike CEOs and other high level decision makers, most people do not face consequences if they do not call a spade a spade and risk offending others, so this makes it very easy for these types of brutally honest people to stand out as being unnecessarily critical. The net result often seems to be, however, better work out of the people who can take the heat, and a stronger overall team since the people who take criticism personally end up leaving.

Overall I think I completely disagree with pg here, it seems the most incredibly successful people are at least perceived as mean, because they have a character trait which allows them to cut through bullshit and not care about hurting a person's feelings by giving objective criticism.

8
no_future 1 day ago 2 replies      
I've read most of pg's essays and he seems to contradict himself a lot:

From this one:

"There is also a complementary force at work: if you want to build great things, it helps to be driven by a spirit of benevolence. The startup founders who end up richest are not the ones driven by money. The ones driven by money take the big acquisition offer that nearly every successful startup gets en route. [1] The ones who keep going are driven by something else. They may not say so explicitly, but they're usually trying to improve the world. Which means people with a desire to improve the world have a natural advantage. [2]"

From "Why there aren't more Googles":

"Umair Haque wrote recently that the reason there aren't more Googles is that most startups get bought before they can change the world.

Google, despite serious interest from Microsoft and Yahoowhat must have seemed like lucrative interest at the timedidn't sell out. Google might simply have been nothing but Yahoo's or MSN's search box.

Why isn't it? Because Google had a deeply felt sense of purpose: a conviction to change the world for the better.This has a nice sound to it, but it isn't true. Google's founders were willing to sell early on. They just wanted more than acquirers were willing to pay.

It was the same with Facebook. They would have sold, but Yahoo blew it by offering too little.

Tip for acquirers: when a startup turns you down, consider raising your offer, because there's a good chance the outrageous price they want will later seem a bargain. [1]"

Though, I guess when you're that rich you can't help but think that anything that comes out of your mouth is a golden gospel, even if it is at odds with your previous statements. It sure is easy to play the whole holier-than-thou "I don't care about money I care about changing the world" game when you're already loaded.

9
michaelmcmillan 1 day ago 1 reply      
I always find these essays interesting, not necessarily because I agree with them, but rather because Paul has a very special way of looking at things.

    [...] being mean makes you stupid.
Linus Torvalds is definitely not stupid, but I would not hesitate to call him mean [1]. But you can't deny that he's successful and certainly he's not stupid [2].

Business and open source seem to both center around the same things: creating something people want [3] and surrounding yourself with other smart people. I would imagine that the latter is hard if you're mean - but not impossible. Take Linus or Steve Jobs, none of whom are very nice.

[1] https://www.youtube.com/watch?v=5PmHRSeA2c8#t=883

[2] http://www.wincent.com/a/about/wincent/weblog/archives/2007/...

[3] http://paulgraham.com/good.html

10
PaulAJ 1 day ago 2 replies      
I think PG is conflating the personal spite of Internet trolls with the ruthless drive to acquire wealth that marks out investment bankers, warlords and drug dealers. The latter might do some very nasty or underhanded things, but they regard it as "just business", as opposed to the personal bile you get from trolls.

Trollery is certainly not conducive to success because it destroys trust between you and the people you need to work for you. But if you can create a trusting circle of cronies then together you can lead them to do great but terrible things.

11
YuriNiyazov 1 day ago 1 reply      
The current top comment, and a lot of the discussion here seems to conflate "mean" with "rude" or "dick" or "evil" or "unethical", or "does illegal things", and from there we get things like "This essay is crap because Bill Gates (because of IE) is mean and successful".

"Mean" has a very particular meaning. At least it seems to in this particular essay, if I may speak on behalf of PG regarding his use of it. He even hints at what it may be without explaining it directly:

Children (especially children of PG's age - both under 7 or so, I believe), when fighting with or teasing or blaming each other, are not usually described as "dicks" or "evil" or "unethical", or even "rude". They are too young to have those properties ascribed to them. It is common, however, for children to call each other "mean" while fighting, and it is also common for parents to tell their children "don't be mean" (as opposed to "don't be a dick", which is what teenagers tell their friends, or "don't do illegal things", which is what courts tell everybody). So when PG uses "mean", he uses it to describe behavior in adult-ish YC founders that is isomorphic to little kids being bad.

12
trevelyan 1 day ago 0 replies      
Worth mentioning that the vast majority of statistical research in psychology disagrees with Paul, and shows pretty conclusively that "agreeableness" negatively correlates with business success and skill at things like problem-solving:

http://en.wikipedia.org/wiki/Personality_and_life_outcomes#C...

Startups may be different, but if Paul is correct what he is saying implies that successful founders are less likely to succeed when working for other companies. This would be interesting if true, but also such an unexpected finding that it seems more likely he and Jessica are simply nice people who are personally biased towards surrounding themselves with other nice people.

13
lnanek2 1 day ago 2 replies      
It would be nice if he had more data in this essay. His findings don't match my own. As a software engineer, all the nice people tend to just hand wave and OK and write kind of crappy, worthless features and implementation that don't do their job very well - they aren't good for the users or even the business. You end up with things like the Google IO conference app stuck with a couple different events and called a new product.

Mean people on the other hand are willing to say, hey, doing work on the UI thread and giving the user a bad, unresponsive user experience is bad and it needs to be done right. It's mean and it sucks, but you have to throw all this out and rewrite it better. Hey, just shoving new data in a complex data browsing framework doesn't give the user what they want when they want big pictures and easy to flick through options, etc..

Sure it is nice to let crappy ideas and implementations and whatnot through and just be nice to the person you are dealing with or working with, but it doesn't produce good results. In my experience it usually just produces me working weekends to fix their broken shit while they go around thinking they do a good job.

14
koobz 1 day ago 0 replies      
His point about increasingly non zero-sum games reminds of a Steven Pinker talk.

https://www.youtube.com/watch?v=ramBFRt1Uzk#t=890

"Technology has increased the number of positive sum games that humans tend to be embroiled in by allowing the trade of goods, services and ideas over longer distances and among larger groups of people."

We still have a tendency to revert to meanness when resources become scarce - e.g. dwindling runways without forthcoming funding or competitors eating away at our market share. In many cases, It plays into the death spiral - visionary thinking, paced discovery and creative exploration of a problem space are replaced with short-term thinking, churn, frustration, and ultimately failure.

In developed nations we've had the privilege of being able to take our time, spending at least 12 years of our lives educating ourselves instead of ploughing fields. Hans Rosling's talks get into this too: technology has allowed people to liberate time previously devoted to sustenance farming, washing clothes, 4 hour walks to the market. That time gets shifted to activities like education.

There's a common them here of not letting our immediate needs overwhelm our ability to pursue goals that can dramatically change our lives and the world around us. Our opportunity is rare and the privileged position we have to pursue ideas can often be tenuous. In a way, if we don't hit escape velocity, we don't simply float, we crash.

Meanness is a hack (one that doesn't even have an explanatory comment).

15
pptr1 1 day ago 2 replies      
I would love to believe what pg is saying. However there are strong counter points to his arguments.

Uber and Travis Kalanick don't seem to be failing. They may have some negative publicity, but their growth is strong. Uber is probably worth more than any single yc company including Airbnb.

16
parfe 1 day ago 1 reply      
People aren't mean in front of millionare investor. Duh?

Steve jobs, bill gates, uber, dropbox, zygna. I guess those are all exception?

17
gvr 1 day ago 0 replies      
During my 14 years in Silicon Valley I haven't met any successful founders that I'd characterize as mean. Lots of them have come across as sociopathic and ruthlessly egoistic, but that's something different. They've made their way to success by looking at the economics and optimizing for themselves. If this meant manipulating, lying and breaking promises to cofounders, employees, customers, investors, etc so be it. But... I'm not sure even Steve Jobs was mean; I think he was extremely hard on people because that was the best way he knew to get the results he wanted. I never met him.

Anyway, it seems to me that most people (at least here in the west) would vastly prefer a product created by people that operate with integrity, humanity and decency to one created by dicks all else equal. And that a slightly inferior product can beat a better one out by having a better more positive story behind it.

I think there are already economic incentives for founders to behave well and that this trend will continue. The employees and customers talk freely on secret, glassdoor, etc and I think it's critical to realize that if you don't operate with decency and good values people will a) know about it, b) make purchasing decisions based on that, c) take that into account when considering employment.

I think companies will increasingly make an active effort to (if nothing else for purely financial reasons):a) operate with decency and good human valuesb) protect and elevate the company and it's people by making this clear to the public

18
timdellinger 1 day ago 3 replies      
the inclusion of professors in the list of people who generally aren't mean people is... questionable. being a professor means playing many zero sum games: limited government grants for research, limited number of jobs in academia. perhaps they're nice to pg, but they're often mean to their grad students and postdocs, and to anyone else who doesn't control a scarce resource and who gets in their way.
19
glomph 1 day ago 0 replies      
It is much easier to be nice when you are successful in the sense that you don't have to work as hard to benefit the people around you.

Yet when it is actually measured (by which I mean more than just considering what you think of your wealthy friends) people who are less well off turn out to be much kinder. This has been measured and isn't speculative.

But regardless of the evidence we can just appeal to how people actually behave. How many successful start up people are 'nice' or even good when considered against the world net and the potential they have. We all have the opportunity for radical redistribution, but the ridiculously wealthy even more so. To talk as if they are somehow nice because they help other people of similar privilege is in very poor taste.

The remarks about needing safety come off as particularly horrid in the context of the vast wealth inequality the article is describing in such a joyful way.

Like fuck do successful start up owners and investors need security more than someone working a temporary contract for minimum wage to support a larger family in worse conditions. They are the people that need security and safety.

20
coldtea 1 day ago 0 replies      
1) People are usually mean (or meaner) to subordinates -- so not much reason to be mean to PG for most people he meets.

2) Most succesfull people are also good at PR and pretending to be nice to everybody, especially somebody like PG, but in general too. They can still be very mean in covert ways.

21
SideburnsOfDoom 1 day ago 0 replies      
I note that this is on the front page at the same time as a story entitled 'Being homeless is better than working for Amazon'

https://news.ycombinator.com/item?id=8673726

22
lmg643 1 day ago 0 replies      
This is a very interesting idea. I think this is "becoming more true" rather than "true." Part of the reason why I think this will never completely be the case is that starting a company involves getting lots of people to do "stuff" and there isn't just one method to do so. Being a masterful manipulator of others, right or wrong, has worked many times in the past and I doubt will ever stop working by its very nature. (Now, being an average manipulator just won't cut it...) The bar will be continually raised as long as good people continue to start companies. Hopefully this new culture doesn't fizzle out after the next funding crunch, whenever it may occur.
23
leroy_masochist 1 day ago 0 replies      
This is the first PG essay that I really strongly disagreed with upon reading. I don't think that anyone should aspire to being mean, but PG's arguments seem way off the mark.

PG doesn't stop to define "mean", and from reading his essay, I infer that PG's "mean person" is someone who is insensitive to the feelings of others, abrasive, irascible, and who tends to turn disagreements into knock-down-drag-out-pick-a-side confrontations. I find it odd that PG thinks that people like this don't succeed, because I know quite a few people both within and outside of SV who fit this description to a T and are professionally successful.

In fact, some (certainly not all) people who meet this description are GREAT PEOPLE. They're ornery and they don't suffer fools gladly; you're rolling the dice if you take them to a restaurant because they refuse to play the "I'm not going to say anything about the shitty service because I don't want to make a scene" game. That said, they're the first people you call when you need help with something serious, and they have your back even if doing so makes them lose social status.

It's especially odd that PG wrote this because in one of his most famous essays [1], he recommends that you only hire "animals" as early employees. When I do a quick mental inventory of the animals I know, the majority of them have a bit of a mean streak.

I would be in strong agreement with PG's essay if he defined "mean people" as those who derive pleasure or self-worth in putting down others. Those people are terrible, especially when they use passive-aggressive, plausibly deniable tactics to make other people feel bad. If there's one thing I've learned so far it's to break contact if I catch a whiff of that kind of toxic BS. Give me a productive mean person with a heart of gold over a tactful, toxic politician any day of the week.

[1] http://www.paulgraham.com/start.html

24
ted5555 5 hours ago 0 replies      
I have known successful people who aren't mean but in corporate America ruthlessness, callousness and near sociopathic behavior is rewarded. There is stupid internet meme that goes as follows:

COO to CEO - what if we invest in our people and they leave?CEO to COO - what if we don't and they stay?

Of course the real reply is

CEO to COO - shouldn't we have fired them all by now?

25
alexqgb 1 day ago 0 replies      
It's striking to see how many people rejecting pg's thesis seem not to have read it very carefully. His piece has a lot more nuance than the comments would lead you to believe. Specifically, he's referring to an emerging trend within a specific domain, making historical counter-examples - especially those drawn from other domains - hardly disproves the point.

If you're one of those HN readers who habitually check the comments before deciding whether to read the piece, know that this normally reliable filter is not working here.

26
sytelus 19 hours ago 0 replies      
Doesn't it all depends on the domain you are working in? If you are artist, mathematician or academic researcher then you have don't have pressure to deliver something awesome in limited time or you die. In general businesses are game of survival of the fittest. Your competitors are always on move and you wake up every day hoping it's not your last as running company. You can't be startup founder with limited resource and also tolerate mediocre work or an employee. You can't butter up deficiencies and lack of progress. If you do what your competition can also do then it's most likely game over in few cycles. So you must demand 2X to 10X performance advantage in everything. This requires a certain degree of insistence and lower bounds on tolerance which would necessarily give rise to "meanness". This kind of environment seem necessitates ruthless people dictated by laws of evolution.

However I think meanness are generally not intrinsic, i.e., person isn't mean because they are naturally mean. It comes out because of the pressure of this survival game. You make a bad hiring decision and you don't have option to not let go the person even if they moved across country for you and took on expensive mortgage and have 3 school going kids. If you came to know that a competitor is going to release a product 6 weeks before you do then you might not have an option other than everyone work their every waking hour, including Christmas. Your admin brought down site 3 times because of an error and being "nice" to him risks this happen 4th time. And so on... These are the stuff painters, mathematicians and scientists don't have to deal with every day.

27
timruffles 1 day ago 1 reply      
Great to see PG trying counter Steve Jobs inspired asshole-dolatry. Certainly I think it accords with my experience: I've stuck around in jobs because of the people when better ones were available. Conversely, meanness in founders creates a mean atmosphere, and people will not be loyal.
28
Xcelerate 1 day ago 0 replies      
I agree with some of the others on here saying this might be a case of confirmation bias. I have found that people are "nice" to me when they can get something out of it. It's only when I catch them treating (or talking about) someone else in a certain way that their true colors reveal themselves.

I have exceptionally poor skills at judging a person's true intentions and moral character. Hence, I trust almost no one. That's not to say that there aren't any trustworthy people -- I'm sure there are plenty. It's just to say that I've had some bad experiences that have led me to lose complete confidence in my ability to judge which people are really kind and nice people, and which are essentially faking it (it's one reason I'm scared to get married).

And with someone like PG, most startup founders want something from him (capital, networking, etc.) and so you could argue that he isn't going to notice the ones who have successfully faked being a "nice" person toward him.

> Jessica and I have always worked hard to teach our kids not to be mean.

I really like this. It makes me happy to see someone else state it. If I ever have children, the one thing I want them to be more than anything else is kind people.

29
graeme 1 day ago 0 replies      
This essay needs refinement. The other comments have rightly pointed out some flaws (people more likely to be nice to PG, known prominent counterexamples, etc.)

I'd like to add a counterpoint. My own niche is nearly devoid of meanness. There are several participants offering products. They overlap, but none compete directly with each other. Customers typically use materials from multiple sources.

I think this influences those of us in the niche. Being nice is rewarded more than being mean. Competitors tend to collaborate.

I think this is a growing phenomenon. Unlike traditional business, the internet tends to create businesses without perfect substitutes. Cooperation becomes relatively more important than competition. Peter Thiel's argument about monopolies resonated with me for this reason.

In this environment, niceness becomes relatively more useful, and meanness becomes relatively more harmful.

The keyword being relatively. Where I think PG misses the mark is that there's still a lot of meanness. I think the interesting question to explore is whether there's less of it in the internet sector than in others.

(There may or may not be. I don't know what other niches and offline niches are like.)

30
pillain 20 hours ago 0 replies      
Mean is what we perceive to be a quality of a great leader. We spend half our adolescence dealing with mean people and mom says we will have to for the rest of our lives. We are built on the principle strive to be a better person, strive to be honest and truthful and strive to the best you can be but often we do nothing of the sort. We focus on the unnecessary and not on the real. Im not sure if its intentional that there is a perception that mean is something that needs to be there to be successful or if mean is the bilateral issue created by the humans we are and perceive to be a part of a strong leader.

It is not what we choose to become but who we are as a person that determines our success. Mean people do fail all the time morally and point proven they fail as founders too. We can continue to discuss what we think is mean but really we should be discussing character. Mean people will fail at least thats how its supposed to work from a karma standpoint sadly it doesnt happen. But as a founder, success does depend on the person you are and the environment and culture you create. Fighting is only a force but time and acceleration you are able to go the distance even from zero. That distance you create eventually leads to momentum, which then leads to transcendence. It is changing. For us improving the world is an advantage and for us having a moral standard is advantage. At this point we have an advantage do we become the mean people or the good people. Are we building good character or bad character? To overcome adversity create ingenuity that is unbelievable.

31
jayshahtx 1 day ago 0 replies      
I've thought about this topic quite a bit, and I don't think the root emotion in many "mean" people is, well...meanness. I think it is a strong desire to control. This desire stems from the importance of managing execution.

To be quite honest, if Steve Jobs wasn't dominating, maybe the iPod Nano would have been much thicker. Maybe the Facebook experience would have sucked. Maybe Tesla would have filed bankruptcy. There is a long list of "Maybes" which could go here. From a societal standpoint, it's interesting. Ask someone in 1991 if Jobs in an asshole, the resounding answer is likely to be "yes". Ask someone today, and it's almost always pardoned with a "but he was a genius".

I had this very internal debate with myself throughout undergrad, particularly when you are placed in a group where you care the most for what ever project. The one who cares the most tends to have the most complete vision, and thus will strongly desire the pieces to fall a certain way.

I'd like to believe that not everyone is mean, but I can't help but wonder how possible it is to avoid "meanness" when the success of your organization hinges on your ability to execute a vision no one else can realize.

32
applecore 1 day ago 0 replies      
The problem with this argument is that a person's identity is more complex than the manifestation of a single personality trait. You may judge character at its worst, but those mean people on the internet are also loving in other, more meaningful contexts.

If you're going to ask whether meanness and success are "inversely correlated"a phrase peculiar to statisticsthen you should present actual data to support that argument.

33
stonogo 1 day ago 0 replies      
This headline may as well be "nobody is mean to the rich guy."
34
aelaguiz 1 day ago 0 replies      
It seems like many of the commenters here are confusing corporate strategy/tactics with individual mean-ness. I'm not saying its good when a corporation takes action to derive profit at the expense of the public interest or that of one of their competitors - however, it's not nearly the same as an individual being malicious or petty when given power over others (such as a founder routinely has).
35
flipped_bit 10 hours ago 0 replies      
This article intentionally or otherwise distorts how the real world really works even in the bubble of SV. The game in SV is more subtle - the meaness comes in different forms by silent exclusions, cliques forming to backstab other members and so on.... just like any other human enterprise.

Add to this, the 'false humility', and self-deceptions, SV is actually way more narrow-minded than it used to be - very intolerant to anything that deviates from a certain expectations of conformity.

36
practicalpants 1 day ago 1 reply      
Being on the Internet just means you get to be honest, brutally honest, no polite formalities. It's a wonderful thing, really.

OTOH, working with people face to face means you must keep appearances, and you almost always cannot be brutally honest. Even if you claim your company has a culture where you can be honest about things, no one is actually going to be totally honest, that would be a mistake. And you can never know whether someone who seems 100% authentic and kind isn't going to go online and rip apart things he thinks are dumb/ act "mean."

I think his essay is really more about how successful people just know how to be diplomatic and hold back honest opinions.

I would however be interested for PG to write about whether he thinks selfish and overly narcissistic founders are successful or not. I haven't meant any "mean" people working professionally (with engineers at least), but selfish to the point where you feel like punching them I most certainly have met in the startup world.

37
evanwarfel 1 day ago 0 replies      
It's not so much that pg has a different definition of 'meanness', it's that he has a broader notion of 'success'.

If we define successful as playing the capitalist game well, then sure, Steve Jobs, Zuckerberg, Gates, Ellison and others are all successful because they were sufficiently ruthless. Yet this too is selection bias, as there will surely be plenty of examples in the intersection of "people who don't fit pg's thesis" and "rewarded by society". There are, however, counter-examples: Warren Buffet comes to mind.

Just because something is rewarded by society doesn't automatically mean it is good.In fact, if you can succeed at capitalism and not be a dick, seems to me that's an even rarer thing to do, and all the more respect for doing it. In light of the current state of society, it seems a good idea to re-examine what society happens to reward.

We'll never know if Steve Jobs and others were/are truly happy. In fact, in a certain light, Jobs wasn't successful. For all his money, he happens to be rather dead. Who knows what truly great things he could have done after a successful battle with cancer. Every time Jobs is mentioned, until he fades from public view, people will talk about his storied career, his reinvention of Apple, his vision, etc. Everyone will also mention that he was an ass and died too young, because he couldn't get out of his own way and seek proper medical care soon enough.

Given that we all operate in contemporary society, there is of course a place for being assertive and ruthless when one needs to. But PG / Ycombinator is starting to tweak his/their definition of success. In 200, 500 or 1000 years, will anyone remember Loopt? Not likely. But if a YC company successfully develops a fusion reactor the size of a shipping container, or successfully develops a cure for HIV/AIDS, and does something truly great, then YC will still be talked about for quite a long time. Much like how we still talk about Archimedes today.

38
bootload 5 hours ago 0 replies      
"Ezra was so good to me." @holoway ~ https://news.ycombinator.com/item?id=8676140
39
robg 1 day ago 1 reply      
Thomas Edison is perhaps the best counterexample, especially as compared to Tesla. Edison won exactly because he was willing to be very mean.

http://www.amazon.com/Topsy-Startling-Crooked-Elephant-Ameri...

40
rajacombinator 1 day ago 0 replies      
Yikes this is clearly wildly inaccurate wishful thinking. If history has shown us anything, it is that the worst usually rise to the top. Nice sentiment by pg, but simply horribly untrue.
41
anateus 1 day ago 0 replies      
I wish this was true. I think what PG really means is "unpleasant people fail (more often than not)". Not being mean is generally construed to indicate you're kind. But PG didn't title this essay "kind people succeed".

I understand the sentiment behind the essay, which is that the ones that succeed in the log term in tech are those that operate in mutually beneficial ways and encourage positive feedback loops. But I think conflating this with lack of meanness is a red herring.

Edit: I should add that with "what PG really means" I don't intend to put words in his mouth. It is my potentially incorrect interpretation of his intent.

42
zwischenzug 1 day ago 0 replies      
It's a nice essay, but the fact is that PG is no philosopher or historian.

He treats "mean" as a known and monolithic entity that can be attached to individuals. "Mean" is a vague term that people might be sometimes, and not others. Sometimes being "mean" works to make you more successful.

Was Bill Clinton mean? Richard Feynman? Dan Quayle? Gerard Depardieu? Baudrillard? Did they fail? Succeed? Reducing people to binaries of mean / not mean and successful / failures is absurdly reductive.

Newton was a pretty mean thinker (in at least two senses) and is a good counter-example to some of these arguments.

43
maddalab 1 day ago 0 replies      
I am going to guess, what you really mean, is that you have not met successful people who have been mean to you or someone you associate with, or your inference is driven by a sampling bias.

Some points I agree with(a) Increasingly you win not by fighting to get control of a scarce resource, but by having new ideas and building new things.(b) that being mean makes you fail (* increases the likelihood of you failing)(c) Start ups win by transcending

Some points I disagree with(a) Mean people fail(b) Successful startup founders, programmers, professors, aren't (all) mean (c) Startups are not just one random type of work in which meanness and success are inversely correlated -- This is just a sampling bias

44
efuquen 1 day ago 0 replies      
I've rarely met people he would be openly mean or hostile to others they consider their equal or above them. But watch how they treat people who they would perceive as beneath them and then you'll see if they really are an asshole or not.

I'm just really surprised PG didn't even mention or think about the fact that founders just might seem so nice because that's they way they choose to present themselves with someone with as much renown as himself. If I was sincerely trying to think about this critically that's the first thing that would pop into my mind.

45
theyellownoon 1 day ago 0 replies      
There is something religious about this. Like in Calvinism where wealth is a sign of salvation.

If you keep this belief it is important to remember that it is not the case that that everyone that fails is mean.

Regarding the truth. It seems to me like the underlying claim that mean people fail is sadly false. However, it's likely that there are a lot of entrepreneurs that Paul and other investors turn down that get upset and fail for lack of support. I'm sure they aren't mean people in more favorable circumstances. Also, those that are funded generally are appreciative and nice.

46
noobplusplus 1 day ago 0 replies      
When I was in 2nd Grade. I used to think my maths teacher was the most intelligent mathematician in the world, and then I grew up.

He still teaches maths, the way he used to do. There are still students in the 2nd Grade, they might think alike.

But then, I look back at him, his teachings(maths lessons) do not add value to me anymore.

On the other hand, there are mean people I know of amongst the meanest on earth. They do play tricks, figure out people who are inexperienced and trick them. They will keep doing the same, its in their genes. Those shameless jerks, will remain shameless. Desperate for success, by hook or by crook, and so will their off springs be. Desperate.

47
brianstorms 1 day ago 0 replies      
I remember one famous startup I was in, one that went public, where the founder/ceo was genuinely mean, as in a nasty, litigious, selfish, self-centered, emotionally immature son-of-a-bitch, and ran the place like a tyrant. I quit two years in. Simply could not stand being in the same room as that ceo. But did he fail? No and yes. No, financially; he made over a hundred million. Yes, personally, I would say; his reputation as a tyrant has stuck with him, and most friends I know who worked at that company would never in a million years work for him again. He's the only truly mean-to-the-core founder/ceo I've dealt with in startups.
48
iandanforth 1 day ago 0 replies      
The funny thing about this is that there are plenty of people who would call PG mean. He's famous for having no filters on his opinions so he's at least rude and if he thinks an idea is dumb he doesn't just say so, he will usually have an apt analogy as to how dumb it is. He gets away with this by being right more often than not. In contrast Jessica is nice. In fact she's super nice. Her criticisms are no less insightful but they are presented with careful (seemingly effortless) social grace.

"Mean" though is a very imprecise term. I would much rather he use the phrase 'malice.' Or even better 'malice' and 'schadenfreude.' PG is mean in the way that the weather is mean, it can hurt if you're not prepared but it's not out to get you. And it's likely people interacting with PG are careful not to demonstrate malice or schadenfreude because he is someone they wan't to have a good opinion of them.

Even given all that though, the basic thesis that successful people are somehow less likely to demonstrate fewer negative valence personality traits is born out by no research I know of. Here is some popular media coverage of the matter.

http://www.patheos.com/blogs/drishtikone/2013/10/are-ceos-an...

49
chacham15 1 day ago 0 replies      
The problem with an essay like this is that it creates a dichotomy of good and mean. If a person is good or mean at one point in life, it doesnt mean that they were always that way or will always be that way. For example, as @mattmanser points out: Steve Jobs, Zuck, Bill Gates, Larry Ellison, Marcus Pincus, Uber, Kim Dotcom may all have done mean things in their lives but as @paul attests, at least some of them are actually good people. In conclusion, I think that the definition of "good person" and "mean person" are just too broad to make any sort of scientific conclusions.
50
metaphorm 1 day ago 0 replies      
PG may want to examine his own confirmation biases. "I am a nice person and I like to work with nice people. Therefore, when people I work with succeed it means that nice people succeed".

That doesn't strike me as a universal truth. My own experience in the world has been that many incredibly mean and heartless people succeed, even in the "nice" tech startup scene. My own experience is hardly a proof, but it certainly gives me reason to suspect PG's perspective is a little off on this one.

51
jriley 1 day ago 0 replies      
I attended a VC dinner event a few years ago. A networking session followed. I felt shut out of conversation by most of the "money" folks and a few aggressive MBAs.

The only two polite people were 1) an open source developer and 2) a guy who turned out to be YC alum. Neither wanted anything from me, and both offered good advice.

Perhaps it comes from the top. Thanks.

52
clarebear 1 day ago 0 replies      
I find it more useful to see "mean" as a power dynamic than an emotion or character trait. If someone asks you to do something and you have a choice, it is not likely to seem mean. If someone asks you to do the same thing and you feel like you do not have a choice (because you work for them, or other reasons) it is much more likely to seem mean, especially if you don't think they are fit for the role of deciding things for you. If a parent holds down a screaming child during a shot, they are loving, but if a stranger does, it can be perceived as mean. If people perceive you as being mean, it likely means that you are invoking traditional power structures more often than other people perceive you should. Successful founders probably do better on both fronts: 1) not making people do stuff because they are the boss but getting them to internalize the underlying framework and pick the right answer themselves and 2) they probably have an easier time being perceived as a boss than average, so when they do force an issue, followers don't mind acquiescing. Given all that, this essay says people who are good at accumulating power organically do well in start ups. Successful minorities probably have to be super good at (1) because they likely take a hit on (2).
53
abecedarius 1 day ago 0 replies      
The most successful people I know are all admirable. But their success took forms like CTO or director of research or influential programmer; when it comes to founders I have to go by reading about Gates, Jobs, Zuckerberg, the sort of accounts that suggest something like Entrepreneur Personality Disorder. I hope pg will follow up, because I'd genuinely like to understand his idea of meanness better.
54
ThomPete 1 day ago 0 replies      
I have worked with many great leaders and I have been a leader myself too.

Being mean is mostly a matter of perspective. People with power, who need to make decisions that affect other people will almost by definition be seen as mean once their decisions affect other people negatively.

Edwin Catmull spends a considerable amount of time talking about Steve Jobs in his book Creativity Inc. His main point about Steve was that he changed over the years and became more sensible to how his power and style affect others in other words he matured.

The book has some examples of decisions Jobs did that positively affected thousands of people amongst others the merger with Disney again something you can only do when you are in a position of power.

In that word is a plethora of nuances that one have to include when putting on predicates like this (arrogant is another widely imprecise term)

55
guelo 1 day ago 0 replies      
This essay seems like a nice story intended for his kids that got out of control on him and he started believing it himself.

It sucks teaching your kids that the world is a mean, brutal place.

56
m52go 1 day ago 1 reply      
> Increasingly you win not by fighting to get control of a scarce resource, but by having new ideas and building new things.

I don't think the fighting has gone anywhere. It's just changed its form. Any founder/salesperson will tell you it's harder than ever to get a prospect's or consumer's attention.

Being nice has nothing to do with the ageless struggle to stand out and triumph...grit.

Which, if you lack it, is the only trait I believe one can say is a sure shot to failure.

57
diminish 1 day ago 0 replies      
To make the case stronger we now need to move some few prominent "mean" tech figures to "not mean".

Could it be that meanness and failure come in a vicious circle fortifying each other? Put in another way, as people become more successful they become less mean? Hypothetically, the Paul Graham of the failed startup accelerator YC would end up being meaner.

Many homeless people end up appearing mean too. Maybe personal traits aren't innate unchangeable attributes but depend on our current status.

58
codingdave 1 day ago 0 replies      
I suspect there is also something at play here, in that as people become more successful, they tend to want to share their success with others, and they get less mean.

I do question the idea that taking an early big acquisition offer should be called a failure. The definitions of what startup success looks like seems to be highly skewed when coming out of YC vs. what the rest of the world thinks.

I live in Utah, where there are countless small tech companies, with a dozen or so employees, who have been creating their products and building comfortable lives for themselves for years. We're all quite happy with our lives, but because we aren't experiencing 100% year over year growth and "only" pulling in a few million a year, we don't meet the definition of success put forth by YC.

It is important to keep in mind that YC;s purpose is not to help any single specific individual. They work with large groups, with a goal to increase their investment over a diversified portfolio of companies. I see no evidence that they are malicious about it - they do seem to be benevolent. But their ultimate goals do not match up with my goals as an individual coder. So their definitions and philosophy will also differ, and I recommend that people just keep that in mind as they read.

59
guest 1 day ago 0 replies      
In general, social science isn't very scientific. People generally just argue for what they believe, and use multi-syllabic words and some math occassionally to back up their arguments. "Mean" people tend to engender cults of personality. Cults of personality tend to focus on pleasing the leader rather than gettinf accurate reports through. As such, they can rarely organize enough accuracy to produce quality technical items. They can still 'succeed' on an uneven enough playing field. At the moment the playing field is massively tilted to make bets made by big players appear to be good ones at least until they get to the 'greatest fool' , currently the New York Stock Exchange. This process periodically corrects itself. It started to in 2008, but the Bush Administration replaced the helium in the bubble with more bubbles full of hydrogen. Maybe we can get up the cliff before they explode, maybe we can't.
60
mpatachi 1 day ago 0 replies      
If we start by defining a mean person as one looking for either win - lose or even more, no win - lose (aka, being mean for no reason), I think there are several points for which people are less mean in the startup world and being mean give you less chances to succeed. First of all, I believe that being in a startup is less about fighting for an existent market (where someone needs to loose in order for the other to win), but about creating new value and trying to capture the most of it. Founders are (should be) more inclined to think about win-win solutions so that the adoption is high. Secondly, compared to the corporate world, in a startup the focus in on creating value, versus protecting positions and internal politics. On the other side, public profiling and feedback incentivize founders to be at least careful about how they reflect to the world. Nonetheless, being at the beginning of a road, they are more inclined to be nice in order to attract and retain customers & employees. Without saying that theres no meanness in the startup world, I would agree that the degree of kindness is higher here than into the corporate world.
61
thebear 1 day ago 0 replies      
In my experience, successful people tend to be nice to those who can be of use to them and ruthless towards those with whom they compete. It seems to me that startup founders would almost always perceive Mr. Graham as someone who can be useful to them.
62
datashovel 1 day ago 0 replies      
I think there is strong evidence (based strictly on personal experience / insights) that "good" is a far more powerful force than "evil". I think "evil" can and does manifest itself in pockets of the globe, but overall in general if you re-ran the entire history of human civilization 1 million times, you would probably end up with a genuinely "good" outcome 80-90% of the time.

And although it probably sounds like hocus-pocus to most people to be making this claim, I think there are intrinsic properties in what it means to be "good" that may even allow this hypothesis to be scientifically proven one day (that "good" is a more powerful force than "evil").

Some of the far more disturbing human behaviors to me are complacency and selfishness.

63
Hermel 1 day ago 0 replies      
There are plenty of counterexamples, also in Silicon Valley. For example, both Mark Zuckerberg and the Winklevoss twins made a lot of money, but depending on which side you believe, at least one of them is mean.

Anyway, the basic message is correct: when it comes to startups, it pays of more to focus on baking a bigger cake, than on fighting for a bigger slice.

64
zeeshanm 1 day ago 1 reply      
I think PG's point-of-view is rhetorical to discourage founders to be mean.

Who knows if being mean directly or indirectly correlates with being "successful" as a founder. One may have to spend five years researching historical evidence to prove or disprove such a broad perspective.

65
webwright 1 day ago 0 replies      
PG is pretty careful with his word choices, and I think he's probably right about being mean interfering with success. You can not be mean, but still be a healthy distance from kind, good-hearted, honest, justice-minded, generous, etc.

A question successful people ask themselves is "Why be mean? What do I get out of it? What does my company get out of it?" They can be ruthless but realize that treating people with respect and warmth is smart in the long-game. Forum-trolls don't ask that question-- they just get emotional satisfaction from being mean.

Note that I'm not saying successful people are necessarily ruthless and manipulative-- just that they CAN be and still correctly be called "not mean".

66
fasteo 1 day ago 2 replies      
At least for me, this is a good case of lost in translation. I am unable to find a good translation of "meanness" to Spanish.

I have come up with "miserable" or the more slangy "cutre", but I am not sure that these words capture its full meaning.

Any hint ?

67
snappy173 1 day ago 0 replies      
I think pg forgot that he is in the privileged position to be handing out large sums of money to these people.
68
softdev12 1 day ago 0 replies      
So I remember there were studies and a book that showed successful CEOs are 4 times more likely than the general population to be psychopaths (i.e. dangerous evil predators).

One of the most successful CEOs was this guy Al Dunlop (http://en.wikipedia.org/wiki/Albert_J._Dunlap). They called him Chainsaw Dunlop because he fired so many people.

Here's a Forbes article from 2011 that talks about the book and why (some) psychopaths make great CEOs.

http://www.forbes.com/sites/jeffbercovici/2011/06/14/why-som...

69
geofft 1 day ago 2 replies      
I'm curious to know pg's thoughts on Mahbod Moghadam (although I expect that there are several reasons he'd be unable to make that public anytime soon, if ever). Did he miss the meanness when he funded Rap Genius? Is his behavior something else entirely that "mean" doesn't capture?
70
Anchor 1 day ago 0 replies      
I think I agree with pg on this more than most here. To me, being mean means enjoying the suffering of others in itself (that is, without any other benefit). Most examples mentioned here refer to CEOs etc. who have been ruthless in their actions, but have benefited from it (financially and otherwise). They have not been mean in the sense that they would have done it even if it wouldn't have benefited them in other ways. I think this applies to Linus too, he may get so upset about the minor things that he, quite literally, verbally assaults people, but I don't think he enjoys being that upset.
71
McKittrick 1 day ago 0 replies      
This is just silly. (and i don't mean that in a mean way...). Most people instances of perceived meanness are really just acting on a set of interests that don't align with your own. There's no malevolence involved, yet the perception is the actor is mean. Im quite sure Paul has in the past acted in a way that was perceived as mean by a non-aligned party, as have we all. Acting out of pure malevolence/meanness is different than that. That type of action is hopefully so rare that it is a terrible proxy for success/ failure.
72
paulhauggis 1 day ago 0 replies      
"The startup founders who end up richest are not the ones driven by money"

I disagree. Money is the lifeblood of any company. You need to be thinking about it at all times..or you will quickly find yourself in bankruptcy with a ton of debt.

Startup founders shouldn't only be driven by money, yes. But money should be one of the main factors driving them to succeed.

All of the ridiculous startup ideas I've seen were created by people that were not driven by money in any way and had no solid path to profitability (besides being purchased by a large company).

73
jokoon 1 day ago 0 replies      
I would not say meanness, I would rather consider humility, the ability to be humble, to make abstractions of animal emotions.

There are different kinds of success. There is victory, and there's progress. In victory, you prove you're relatively better than others. In progress, you allow the whole society to lift itself into something that is just better.

That's true that you should not put money on a pedestal, but you should also understand that in order to do a better job, you should adopt a profit model just because you're in a capitalist country.

Of course mean people fail. Mean people don't have any intention or long term goal for what they want to do in their field of work, they lack strategy.

But on the other hand, hell is paved with good intentions.

74
JoseVigil 1 day ago 0 replies      
Around Paul and Ycombinator there are a certain amount of policies that apply to the creation of killer startups and they have been very successful on proving them, being good is one.

A good person inside -and outside acting on behalf- of a company is definitely in the checklist for creating a great startup, I can personally tell. Modern leaders do not fit into the vertical violent commander type and simply loose followers without assembling.

However real life is much more grotesque, dantean and mean than that and bad people sometimes win. In my country there are lots of them and usually respond to a much larger and corrupted ecosystem.

75
presty 1 day ago 0 replies      
> For most of history success meant control of scarce resources. (...)> That is changing. Increasingly the games that matter are not zero-sum. Increasingly you win not by fighting to get control of a scarce resource, but by having new ideas and building new things.

I'm not an economist and my mental model of things is probably wrong, but how is business never a zero-sum game? Are users and their money not scarce resources that they'll either spend in your products (and thus funding your survival and your competitors' demise) or in your competitors' products (and thus funding their survival and your eventual demise)?

76
asdkl234890 1 day ago 0 replies      
People need to feel that what they create can't be stolen.

It's quite a leap from Archimedes getting murdered to fear your ideas might be copied. Ideas can't be stolen. And if you really are motivated by wanting to make the world a better place, even copying your ideas shouldn't stop you.

Peace and rule of law are necessary. Rent seeking with over powered copyright laws and patents, not so much.

77
s3nnyy 1 day ago 0 replies      
I agree with PG on this trend. In "Reinventing Organizations" by Frederic Laloux you'll get more evidence that lack of meanness leads to success:

https://www.youtube.com/watch?v=gcS04BI2sbk

Particularly the example of Buurtzorg, a Dutch healthcare provider, is quite convincing: They went from 0% to 80% market-share by basically being less mean to their employees and clients.

(This Ask-HN discussion is also related to this: https://news.ycombinator.com/item?id=8662376)

78
slewis 1 day ago 0 replies      
Not sure if it's true that mean people fail. But here's a theory as to why nice people succeed: niceness is correlated with a sense of empathy, empathy is the ability to understand people unlike one's self, the understanding of people is critical to generating large swathes of change in the world (which is made up of people).

Or to put another way, a smart person who wants to effect change should try to develop a sense understanding of those they want to effect, it's harder to be mean to people whose "shoes you've walked in".

79
Sakes 1 day ago 0 replies      
From my life experience suffering and overcoming obstacles builds not only character, but more specifically empathy. People that have experienced success too quickly or inherited it don't have the correct vantage point to understand their success or the struggle of others.

I love that right now in silicon valley there is an abundant amount of successful good willed people. But if those lessons are not correctly passed down to their children, and this period of mobility stops (as it has in every other industry) the successful will be overpopulated once again by disconnected self important inherited wealth elites.

80
crimsonalucard 1 day ago 0 replies      
Does PG ever consider the fact that people can be deceptive? A person you consider to be nice only appears to be nice. Whether that appearance correlates to the person actually being nice is a whole different story.

I thought these facts were obvious. People can lie, have secrets and thus appear nice... This article has such a sheltered, naive view of the world.

81
grandalf 1 day ago 0 replies      
I've seen a few startup developers who are mean toward other members of their team. In the cases I've seen these were insecure guys (based on other behavior) who felt very threatened by some junior members of the team who were smarter and more technically skilled.

The worst part was that the senior management had the impression that "good developers are mean" and so the situation wasn't dealt with.

It's one thing to be blunt and honest, but some people get mean when their own skill level isn't sufficient to make a convincing technical argument.

82
rvn1045 23 hours ago 0 replies      
Maybe the relationship between being mean and successful is the opposite? Being successful makes people less mean, because they are already successful and don't need to be mean.

Bill Gates was known to be quite ruthless during his time at Microsoft, but he's changed that image of himself quite drastically.

83
hoodoof 1 day ago 0 replies      
Maybe "mean people fail".... within the YC ecosystem, because it is so dependent on networking and relationships.

Not so true in the wider software world.

84
vincentchan 1 day ago 0 replies      
I think LinkedIn CEO Jeff Weiner said it best regarding this topic: "being an asshole was way easier than putting in the work and showing the compassion required to be a good leader."
85
vorg 1 day ago 0 replies      
> People need to feel that what they create can't be stolen.

To create a society based on protection of property, the government must be mean to outsiders so it doesn't have to be to the insiders. When the government of a country with 4% of the world's population but 25% of the world's wealth enforces citizenship and residency rights (a form of property), then that's considered mean by the outsiders.

86
dredmorbius 1 day ago 0 replies      
Rather than read pg on this (his essay is a lot of wishful thinking backed by zero evidence), I'd suggest the master:

http://www.gutenberg.org/ebooks/1232

"Is it better to be feared or loved" comes straight from old Nick.

87
RockyMcNuts 1 day ago 0 replies      
You have to act nice when youre the underdog.

But being mean sometimes pays when youre the big dog, and thats when people show their true colors.

88
carsongross 1 day ago 0 replies      
"Mean people fail" seems like a reasonably testable hypothesis. Paul could have his wife meet a random sample of startup founders in as double-blind a manner as possible (not just at social events or where they are attempting to curry favor with YC and mixed in with plenty of non-founders) then track the results of them.

I am not optimistic that the results would be what he'd like, but I'm always willing to consider new evidence.

89
VuongN 1 day ago 0 replies      
While I think successful folks do a fair share of "rewriting history" especially about spots in their timeline which could be considered "mean", I would much prefer PG's optimistic view. It keeps me more hopeful and that I could make the harder choice to be a good person for long-term success than to be a bad one for instant gratified returns. There's no problem in being hopeful and I welcome such positive "opinions".
90
nichochar 1 day ago 0 replies      
I think that the whole argument holds better if you replace the word fail with "do not become incredibly successful".

I'm thinking of a whole realm of mean, arrogant, pretentious, often business oriented people who usually sell and don't create. And I wouldn't say they fail, they often do quite well. But to his point they don't become the best.

91
japhyr 1 day ago 0 replies      
> Startups don't win by attacking. They win by transcending.

This is a wonderful quote, and a wonderful guiding principle. It's not correct in every single situation, but I don't think pg is speaking in absolutes.

How do you revolutionize a field? Not by immediately trying to replace an existing player, but by building something so useful that it gets adopted until it is a major player in the field.

92
flurie 1 day ago 0 replies      
This essay seems to spend quite a bit of time talking about a term that it never defines. And, assuming there's a definition, does meanness count if it is not made manifest? I think we can probably agree without a more specific definition that a sociopath is mean, but are they only mean if we catch their sociopathy? And if we consider aggression a mean behavior, is aggression universal, or is behavior only aggression in certain contexts?
93
OoTheNigerian 1 day ago 0 replies      
To show how far tangential PG's position is to reality, there is a saying that goes "nice guys fish last". So much so that when a good person succeeds people go out of their way to mention "this is a good person that did not finish last.

Of course, although I do not advocate meanness and I do not like mean people, the reality states otherwise.

94
ryguytilidie 1 day ago 0 replies      
I wonder what Paul would think if he was interacting with these "not mean" people in a capacity other than super successful rich guy that these people need in order to make money.

Seems like a bit of a lack of self awareness to say "welp, these guys are nice to me, the person they most need to be nice to, so they must be nice guys".

95
gct 1 day ago 0 replies      
PG decided this: https://www.youtube.com/watch?v=ii1jcLg-eIQ#t=2179 was the right way to shut down a question he didn't think was up to snuff so I guess I'm not going to take his opinion on what is/isn't "mean" too seriously
97
leephillips 1 day ago 0 replies      
Woz is nice. Jobs was mean. We know who got more money. But I know whose hand I'd rather shake.
98
return0 1 day ago 0 replies      
Successful people have no reason and mentality to be mean, hence they are not. They can also afford to be generous.
99
untilHellbanned 1 day ago 0 replies      
Coincidentally, I wrote this about cynicism a few weeks ago. Lots of same messages. https://medium.com/@timrpeterson/cynicism-21258dc48246
100
Mz 1 day ago 0 replies      
It struck me recently how few of the most successful people I know are mean. There are exceptions, but remarkably few.

I imagine damn few people, especially in the tech startup world, are mean to pg or in front of him. He is too influential and his dislike of "assholes" is well known.

So I imagine there is a certain amount of bias in his opinion here: Successful people aren't mean to him or in ways he would personally disapprove of. Of course, currying favor with him is one the things that helps lead to success in the tech startup world, so that bias no doubt runs both ways.

As someone who is a demographic outlier on most fronts for hn, I have certainly had people here be mean to me, some of them quite successful, some of them quite popular here. I don't talk much about it in part because that's probably a good way to shoot myself in the foot. Attacking people here isn't going to make me more well-liked, popular or connected. Some of them did horribly cruel things in a way that made sure they had plausible deniability and I was the one who ended up looking bad. I mention that not to badmouth anyone, but as testimony that I have reason to believe, based on firsthand experience, that pg has a blind spot here.

101
xftp 1 day ago 0 replies      
A lot of mean people succeed, but they don't show it, succesful mean people have charisma (polititians, drug dealers etc...) that's why they succeed, so you can be mean as long as you have charisma and leadership. Beeing mean is part of success.
102
capex 22 hours ago 0 replies      
> "I only know people who work in certain fields: startup founders, programmers, professors."

This list is missing VCs.

103
jeeb_X 1 day ago 0 replies      
I don't think you can generalize being mean. There is various cultural interpretations of what it means to be mean. History is replete with cases of mean and cruel people succeeding in their objectives.
104
bshimmin 1 day ago 1 reply      
The first five comments I read more or less all disagreed with pg's basic premise. Whether or not those people are even right, that's quite depressing in and of itself.
105
michaelochurch 1 day ago 0 replies      
It's the other way around. Failure makes people mean. Success softens people and when they're relaxed, they can afford social polish, especially around important people like their investors.

Of course, there are people who remain dickheads even after success (several were named here and I won't repeat) because they're either (a) so ambitious that they'll never have enough or (b) the meanness has become part of their "personal brands" but that's rare. Most people become more polished (and, superficially, nicer) when they're well-rested.

106
iolsantr 1 day ago 0 replies      
I think that pg's observation is probably perfectly valid. People who are mean to pg (and his peers) fail.
107
whitneyrzoller 1 day ago 0 replies      
pg could have done this thread a major service and defined the central term of his essay's thesis
108
ebbv 1 day ago 0 replies      
I am kind of speechless at this assertion. I'd ask if Mr. Graham is serious, but he clearly is.

I think instead of the assertion "mean people fail" being true, I think instead we can more truthfully say:

People who lack the interpersonal skills to hide their meanness when it can be damaging fail.

Mr. Graham, you are a well known millionaire investor. Of course start up founders are going to be on their best behavior around you. And the ones who aren't, are going to fail because not only will you not be interested in helping them, but none of your friends will either. If someone lacks the self control to behave around you, then they probably lack the self control to behave around others.

But knowing how to behave is not the same as being a nice person.

Someone can act very nice to everyone and still be a cold hearted son of a bitch. You can be really polite and friendly while you are destroying someone's life.

109
javajosh 1 day ago 1 reply      
This essay bothers me, not because of it's sentiment (which I appreciate) but because of it's methods. In particular, it seems like pg is comparing people he knows from the present (with a strong selection bias that he acknowledges) with people he's read about in the past. The number of historical figures to pick from is much larger, and so you'd be able to pick out more people with virtually any characteristic you care to name from the larger pool.

In my limited world view, mean people often win. Mean police win. Mean politicians (like Putin) win. Mean business people like Steve Jobs, Donald Trump and Larry Ellison win.

No-one likes to be the target of meanness because it is a kind of psychic assault, an expression of derision or hatred or contempt. But it is remarkable what people are willing to tolerate, or even support, if they believe that it is in their best interest to tolerate it.

I wish the world was more like the one pg describes, and I can see how it is becoming more like that in certain areas, which is good. But that is a far cry from equating meanness with economic failure.

110
danbmil99 1 day ago 0 replies      
At least one counter-example comes to mind. By most accounts, Steve Jobs was a pretty mean guy.
111
pbreit 1 day ago 0 replies      
I read this as "I hope Uber doesn't continue on its path to domination".
112
no_future 1 day ago 0 replies      
The idiom "nice guys finish last" isn't an idiom for no reason, Paul. Just because you're good at picking out people who you want to give money and support to doesn't mean that their niceness has any correlation with the hundreds of other founders who you don't, much less the business world in general.
113
guiomie 1 day ago 0 replies      
I see a lot of posts with counter-examples, the biggest one being Steve Jobs. Perhaps, the conclusion PG should have had was: being mean will increase you chances of failing, thus limit your success.

Maybe if Steve Jobs would have not been mean, he would have accomplished even more great things ...

114
swasheck 1 day ago 0 replies      
came here expecting to see a discussion of how those who fall within the statistical mean of society (which dimensions?) have a higher-than-average failure rate (according to which measures)?
115
droptableusers 1 day ago 1 reply      
Perhaps they are just good at suppressing any inconvenient opinion or thought.
116
MisterNegative 1 day ago 0 replies      
I know that the author only means to give advice. But the message can easily be misinterpreted into a generalization, which kind of makes the author seem like a mean person.
117
Codhisattva 1 day ago 0 replies      
Kindness is it's own reward.
118
graycat 1 day ago 0 replies      
Apparently PG's essay can use some reflection, andthere are a lot of perceptive, well written posts inthis thread.

Maybe one of the main points in several of thecomments in this thread is very old:

     And oftentimes, to win us to our harm,     The instruments of darkness tell us truths,     Win us with honest trifles, to betray's     In deepest consequence.     -William Shakespeare, Macbeth Act I, Scene iii
For something deeper, there is the classic ErvingGoffman, The Presentation of Self in Everyday Lifewith a good summary at

http://en.wikipedia.org/wiki/The_Presentation_of_Self_in_Eve...

The main point is that some people in how theypresent themselves to others, "in everyday life",put on an act something like in a stage play orplay a role and where the act/role is not who theyreally are but, under the circumstances, tomanipulate others.

119
freshflowers 1 day ago 0 replies      
Successful people have the luxury of isolating themselves completely for the consequences their actions have on the "little people".

They can afford to be "nice" in person while their actions fuck over multitudes in way that is a thousand times uglier than being a dick to someone in person.

120
yatoomy 1 day ago 0 replies      
Dear, Larry Ellison...
121
peterwwillis 1 day ago 0 replies      
Um, what?

Brutal dictators use 'meanness' to remain in power for decades. Pimps, drug dealers, gang leaders, etc. Violence and intimidation is an excellent tool for success.

Going down a rung, you get political bosses, union leaders, etc. Powerful people are often mean in their dealings; they have to be. Being cold and calculating and using information to your advantage is one of the best ways to win a deal without using violence or intimidation.

Down another rung you have CEOs and other multi-millionaires/billionaires. Does the name Rupert Murdoch ring a bell? Or how about the Koch Brothers? (sorry, I have a liberal bias; i'm sure there's plenty of liberal millionares who work the same way) There's even a paper that describes a tendency for higher-paid CEOs to treat regular employees worse: http://www.cps-news.com/wp-content/misc_pdfs/When_Executives...

Let's face it: capitalism is a cutthroat way of doing business. Competition is good for individual people, but the true purpose of a capitalist entity is to effectively crush its competition in a way that doesn't bring it negative attention. Even so, often corporations treat people like shit, covering up widespread abuse and getting away with it because it can afford to. Being mean is practically a requirement of any successful multinational corporation.

As a final example: Wall Street. Tank a global economy, put people out of their homes, screw over businesses, all the while knowing what you're doing. You don't even have to serve jail time! Being mean pays. The better you are at it, the less consequences there are, too.

Finally, being mean doesn't make you stupid. Being angry makes you stupid; that's been effectively proven. The heightened emotional state changes the way you think and reduces the ability to reason. But being mean doesn't mean you have a heightened emotional state; it basically just means you lack empathy or compassion. And you can still reason pretty well with a lack of empathy.

Mean people don't fail. Stupid people fail.

122
DanielBMarkham 1 day ago 0 replies      
Business is where friends meet each other and help each other out.

Now _big_ business? Different story entirely.

I've been privileged enough to work with lots of different businesses, of all types and sizes. I find that as a business grows, it becomes easy for managers and planners to become distanced from the "friends" they are trying to help.

It's no wonder PG sees mean people fail at startups: startups are supposed to be extremely emotionally close to problems or inefficiences that huge numbers of people face.

123
d_luaz 1 day ago 0 replies      
it seems to me people here are pretty mean.
124
regency 1 day ago 0 replies      
I take it Uber didn't get the memo.
125
tbarbugli 1 day ago 0 replies      
bullshit
3
3D.City Game built with three.js and sea3d
431 points by huskyr  2 days ago   81 comments top 28
1
bhouston 2 days ago 5 replies      
Beautiful work with Three.js. But the simulation work is also really impressive -- and a lot of work.

Simulation code here:

http://lo-th.github.io/3d.city/build/city.3d.js

Background worker (neat idea) that handles all user input and costly events, to keep the 3D animations consistently fast:

http://lo-th.github.io/3d.city/js/worker.city.js

2
Kequc 2 days ago 4 replies      
In Chrome on OS X I find myself clicking to place a zone then having to wait, then move my mouse a tiny bit before the zone would appear. If I started moving the mouse too much after clicking it gets put in the wrong place and if I don't move the mouse the zone never appears.

After 10 minutes I hit a bug where adding more zones seemed to place an 'invisible' zone. Which deleted the trees that were there and could be connected to electricity but didn't draw anything on the ground and would never populate. Or at least I couldn't see if it was populated and I couldn't play anymore.

3
mxfh 2 days ago 0 replies      
The developers, Laurent Thillet, blog is here:http://3dflashlo.wordpress.com/

including other crazy stuff like this:http://3dflashlo.wordpress.com/2014/02/17/png-to-script/

4
diltonm 2 days ago 0 replies      
The Load and Save worked, the game is amazingly good. The use of "use strict" blew me away, I had no idea that existed, it gives me a sense that JavaScript is becoming a solid language.

The game, day/night, seasons, I would buy this. It might need to be converted to Java to lower CPU usage but even as JavaScript it actually uses less than I'd have thought.

Very nice work.

On "use strict" I can't believe all the stuff JavaScript allows when it's not used, so I'm glad it exists: http://www.w3schools.com/js/js_strict.asp

5
jplahn 2 days ago 0 replies      
Really enjoy this! Like everyone else, the nostalgia is so strong.

The only thing that seemed off for me was the "Drag", which I think somebody else mentioned. I found myself clicking and re-clicking it multiple times to pan around the map, which got old after a bit. That was in latest Chrome on Mac OSX.

Great work however!

6
ceeK 2 days ago 1 reply      
Thanks for wasting away the last 30 mins of my life (really it's fantastic, great job!).
7
nakedrobot2 2 days ago 0 replies      
Awesome! Brings back old memories of late nights and precious cities with the very first simcity.

At this point, my browser has ground to a halt, my retina macbook is running very hot, and the little green rectangle does not follow the cursor anymore to aim where i'm going to plant the next building: https://dl.dropboxusercontent.com/u/14314213/Screen%20Shot%2...

cheers!

8
odiroot 2 days ago 0 replies      
Surprisingly it runs on my Jolla. I thought the browser is not enough bleeding-edge. It's pretty smooth as well, although switching to snow kills it a bit.
9
willvarfar 2 days ago 0 replies      
Here's what Simcity 3D ought to look like! http://media.tumblr.com/tumblr_m1ouer157w1r3qp3f.jpg

(Found it http://www.darkroastedblend.com/2012/03/retro-future-gloriou... here and used it as a desktop wallpaper for ages!)

10
erikb 2 days ago 1 reply      
It's nearly killing my whole computer. What are the requirements to run it?
11
johnloeber 1 day ago 1 reply      
Wow, this is very impressive. Some people say that anything that can be done in a C-type language will be done in JS between five and ten years later -- this is evidence for that point.

The gameplay feels nice, and it reminds me of Caesar II, if that game is familiar to anyone. That being said, I think the game would benefit from introducing a few objectives.

12
fffrad 2 days ago 0 replies      
This is amazing. I remember playing this game before and it was all choppy. I am not sure it used threejs before. Good job in improving it.
13
olofd 1 day ago 0 replies      
Feel asleep after playing the game. I woke up rich!http://imgur.com/BTZdkCo
14
bobajeff 2 days ago 0 replies      
It ran pretty well in Chrome for Android.

A few observations about it: The drag view was buggy so I had to re-click it over and over again. It also crashed on me a a couple of times. Also placing objects was hard to do and it took me awhile to figure out how to drag the screen.

15
msie 1 day ago 0 replies      
Didn't work until I reenabled Hardware Acceleration in Chrome settings. Doh!
16
ilija139 1 day ago 1 reply      
What to do to solve the pollution problem? :D
17
make3 2 days ago 0 replies      
pretty awesome. just wanted to say that in latest chrome on windows 8.1, when the city gets in 30k population range, new buildings and zonings model's don't appear; well, everything new doesn't appear, pretty much. also, wire seems to have trouble being built over steets most of the time
18
Shengbo 2 days ago 0 replies      
This is beautiful, thank you for posting.
19
jguimont 2 days ago 0 replies      
The last 10 min reminded me how much time I spent playing SimCity, SimTower and Civilization.
20
judk 2 days ago 1 reply      
It runs almost as fast as simcity native ran on my 33Mhz 486 in 1991.

Is WebGL evere going to really work?

21
cturhan 2 days ago 0 replies      
As a three.js fun, I enjoyed very much. Great job.
22
Nmachine 1 day ago 0 replies      
Crashes Firefox mobile
23
DonHopkins 2 days ago 0 replies      
I'm really glad to see this wonderful work that people have done based on the original SimCity source code! many thanks to Will Wright and the people at EA/Maxis and OLPC for helping make it open source, and to everyone who worked on making it run so nicely and easily in the web browser. This project shows exactly why that was an important thing to do, and I hope it inspires others to do similar things.
24
clarry 2 days ago 1 reply      
Got any screenshots?
25
Apofis 2 days ago 0 replies      
Doesn't work Chromium 38.0.2125.111 Ubuntu 14.10
26
aikah 2 days ago 0 replies      
Nice! quite fun!
27
PsychopompPoet 2 days ago 0 replies      
wow thanks this is awesome
28
Animats 2 days ago 0 replies      
Breaks Ghostery:

Exception { message: "", result: 2147746065, name: "NS_ERROR_NOT_AVAILABLE", filename: "resource://gre/modules/addons/XPIProvider.jsm -> jar:file:///home/john/.mozilla/firefox/ifg18hmm.default/extensions/551f2920-3c19-11e1-b86c-0800200c9a66@jetpack.xpi!/bootstrap.js -> resource://gre/modules/commonjs/toolkit/loader.js -> resource://firefox-at-ghostery-dot-com/ghostery/lib/ui/desktop/button.js", lineNumber: 60, columnNumber: 0, inner: null, data: null, stack: "create@resource://gre/modules/addons/XPIProvider.jsm -> jar:file:///home/john/.mozilla/firefox/ifg18hmm.default/extensions/551f2920-3c19-11e1-b86c-0800200c9a66@jetpack.xpi!/bootstrap.js -> resource://gre/modules/commonjs/toolkit/loader.js -> resource://firefox-at-ghostery-dot-com/ghostery/lib/ui/desktop/button.js:60:11

Reported to Ghostery support.

4
A Eulogy for RadioShack
408 points by Thevet  4 days ago   166 comments top 59
1
morganvachon 4 days ago 4 replies      
I'd be willing to bet that this is exactly the way it was at most, if not all, corporate RadioShack stores. On the other hand, the franchise stores (which mostly no longer exist) could be great places to shop and to work, because they were owned by actual breathing human beings, not faceless corporate overlords.

My first "real" job after high school was at the local RadioShack, which was owned by one of the most amazing people in my early adult life. I had shopped there for years as a teenager, as it was the only place I could find electronic parts without cracking the Mouser catalog. This was the mid 90s, and there was nearly no e-commerce yet. One day I was in there looking at the HTX-202, RadioShack's entry into 2-meter amateur radio handsets, as I had just been licensed as a Technician Class ham for the first time. Richard said "Hey, Morgan, you still looking for a job?" "Sure, but what happened to Dennis?" I replied. He said "Well, Dennis kinda died." Poor Dennis, his only employee and an elderly gentleman, had suffered an aneurysm and just like that, he was gone. Thus, thanks to the untimely death of a nice old man, I got my first and only RadioShack sales associate position.

Working there was an absolute blast; the pay sucked and the only commission to be had was on Primestar satellite sales, but Richard was like that cool uncle everyone has. I learned a lot about how to run a small business from him, and there was never a day that we didn't have fun. Christmas season could be hectic, but in a good way, with parents who were delighted to see that we carried batteries for all the toys their kids were getting (along with some nifty toys like R/C cars, too).

Even after getting a better full time job a couple of years later, I stayed on part time with Richard for over a year, until he could hire someone to replace me. I still drop in when I'm in my hometown to say hi, and we still keep in touch via email. It really saddens me to know that he'll likely have to drop the RadioShack name one day soon, but I know his store will continue operating for the foreseeable future. His kind of salesmanship stands far above what you get at the corporate stores.

2
chipotle_coyote 4 days ago 3 replies      
While it's glib to say that Radio Shack was lost for the want of a space, the change in their corporate identity from "Radio Shack" to "RadioShack" -- 1995 -- coincides with their slide to irrelevance nicely enough to seem kind of symbolic. We don't really know what the Internet is, but we've noticed that cool companies are using CamelCase.

I suspect it's hard for people who are under 30, maybe even 40, to believe how different RS once was from the sad sack we have today. I don't think they were ever really cool -- that air you now get from their '70s and '80s catalog of old white dudes trying to be hip is an air you got from those catalogs even when they were brand new, trust me -- but they had big selections of really interesting stuff, most of which was exclusive to them, and frequently had salespeople who were genuinely enthusiastic about electronics and computers. And the importance of the TRS-80 in the early computer scene seems to be vastly underestimated today, I suspect in part because of that perpetual lack of cool. You might dimly remember "Trash-80" jokes, but you may not remember that for a few years it was the best-selling computer in the world. And unless you followed the company, you almost certainly don't remember that they had separate "Tandy Computer Center" stores, or that they sold an IBM PCjr "clone" called the Tandy 1000 that fixed all of the PCjr's problems and became so popular that big name games had exclusive Tandy 1000 features, or that they actually shipped a frikkin' Xenix workstation (The TRS-80 Model 16) years before most people had any idea what that was or why they should care.

And, really, that last one sums up Radio Shack in a nutshell, especially with computers: always either a few years ahead of their time, or a few years behind it. As someone who grew up with the TRS-80 Model I and later Model 4 (and who did a lot of strange mad science stuff with it up even into the early '90s), I'll miss RS -- but the RS that I have fond memories of has been gone a long time.

3
IvyMike 4 days ago 0 replies      
Obligatory link to The Onion article "Even CEO Can't Figure Out How RadioShack Still In Business":

http://www.theonion.com/articles/even-ceo-cant-figure-out-ho...

That's from 2007, making the continued existence today even more perplexing.

4
pud 4 days ago 3 replies      
I worked at Radio Shack.

I was in high school and lived with my folks. I had almost no expenses. It didn't occur to me until much later what a bummer it all was.

- You get paid commission, something like 1% per sale. Commission was pointless because almost everyone already knew what they needed (AA batteries or a headphone adapter...).

- If your commission didn't add up to minimum wage, you got minimum wage. Since it was nearly impossible to sell $800/hr at Radio Shack, everyone made minimum wage.

- There was a computer screen in the back room that showed a leaderboard of on-duty employees, and how much each sold for the day in real-time. So even though everyone was making minimum wage, the employees were pitted against each other. This made every employee your enemy.

- If somehow you made a commission for the day, when the item was ever returned, they dock the commission from your next paycheck. So you ended up making less than minimum wage.

5
bane 4 days ago 0 replies      
I actually remember the point that RS became irrelevant to me. After spending lots of free-time hanging out there in the 80s at the local malls, and getting much of my early computing stuff from them, I ended up with a 386sx bought from another local computer store. It was my real first entry into IBM compatibles and I remember how easy it was to mix and match various parts and cards and extend your machine into something much better than what you bought without too much fuss or expense.

And I remember lots of those old early games had special settings for Tandy computers, special video modes, 3-channel sound, that sort of thing (I don't remember the specifics), I wondered what all the fuss was about since you couldn't buy a Tandy video card or audio card and they weren't really "industry standards" in the way a VGA graphics card or a Sound Blaster was.

I went back and visited my local RS to see one of their Tandy machines and came away singularly unimpressed. I realized then that there was really nothing Radio Shack could offer me that I couldn't get easier and cheaper from dozens of other, larger, stores with better selection.

Years later I stopped by to pick up a cuecat and I've never visited a RS outside of that.

I never understood why they didn't start aggregating their small stores into bigger stores. Heck, even Office Depot offered me more selection than my local Radio Shacks. With the coming and going of Circuit City, the entrance of Frys, Best Buy, CompUSA, etc. I never understood why they stuck by the old '70s electronic store tucked away in the corner of a strip mall next to the Laundrymat model.

6
plg 4 days ago 3 replies      
I remember flipping through the Radio Shack catalogue as a kid in the late 70s, early 80s, and making my virtual xmas shopping list (I almost never got the things I actually wanted). radio-controlled cars, walkie-talkies, metal detectors, tape recorders, electronics kits.

I also remember being able to walk into a Radio Shack in my local mall and stroll over to the electronics section and pick out just the right resistor that I needed to complete my circuit project at home. I think I was 12 at the time.

7
vibrolax 4 days ago 0 replies      
Radio Shack had a lot in common with Sears, now also on death's doorstep. Sometimes the contract manufacturers making RS's house brand speakers or Sears "Craftsman" power tools or "Kenmore" appliances would turn out a top-performing product for a great price. As the actual manufacturer might change from year-to-year, one could never rely on the brand to deliver a good value. One had to read magazine or other reviews to discover where the diamonds were hidden.
8
brianberns 4 days ago 3 replies      
I learned to program in the early 1980s by playing with a TRS-80 floor model for an hour or two at a time while my mom shopped elsewhere in the mall. My first program animated a sine wave in BASIC by printing a single character one line at a time, and letting the lines scroll up the screen. I would've loved to own one of those computers, but my dad refused to buy one because he said it would be too tempting for me. He didn't even want me to have a hand calculator, and gave me his old slide rules instead (which were fun - not complaining!). I didn't have unfettered access to computers until I went to college a few years later.

I never made a big purchase at RS, but I always appreciated that I could pop in for electronic sundries as needed over the years. My opinion of them started to go south about a decade ago when they began insisting that they needed to know my zipcode every time I bought something. That was very fishy and heralded their sad decline, I think.

RS has been obsolete for years and I really don't know how they've managed to stay in business this long, but I'll miss the name when it's gone.

9
breadbox 4 days ago 2 replies      
It's awful to read that and compare it with what Radio Shack was for us geeklings in the 1980s. For those of us living far from big cities, Radio Shack was the source of electric parts, IC chips, LEDs, not to mention hands-on access to actual computers.
10
mrbill 4 days ago 0 replies      
Some of the locations have started to carry a bigger electronics component selection again (instead of a single pull-out file of resistors and capcitors), along with 3D printing supplies, Arduinos and related parts (retail packed from SparkFun), and so forth.

Unfortunately, they started doing so 4-5 years too late. I was shocked in 2007-2008 when I needed a couple of resistors to finish a project, the local Nerd Palace (Electronic Parts Outlet, in Houston) was closed on a Sunday, and the local Radio Shack actually had that pull-out file of components with what I needed.

11
adricnet 4 days ago 2 replies      
That's certainly an interesting read... and one I can't really argue with the anecdata of from my own experiences. So I'll add one:

After it was too late by that author's reckoning, the parent of Radio Shack tried another venture, a "big box" store called The Incredible Universe. When that failed and they wrote it off, it wiped out the entire profit of Radio Shack thousands of stores for that financial year.

I still think of it when I'm trying to understand the machinations of large companies.

And I, too hope that the folks I worked with at RS in the 20C found better jobs, especially the poor store managers.

12
realrocker 3 days ago 2 replies      
So last month I was in US for the first time and I was dying to walk into a RadioShack, the temple of cool things as I have been hearing about on obscure and popular electronics hobby forums since I was 16. After checking out 6 stores in 4 cities, I was really disappointed. No cool stuff. All I could find was phone cases, cheap earphones and a few IC's(mildly interesting). To be honest, I didn't know what I was expecting but certainly not what I saw.
13
logn 3 days ago 0 replies      
I wish RadioShack would transition to selling hackable electronics (Raspberry Pi, Arduino, stuff on SparkFun, Maker Bots, etc). That's how they started and now as they're nearing bankruptcy, that market is finally back and getting bigger. Further, most of these parts are made by small-time businesses with suboptimal distribution and RadioShack could be enormously helpful. And I see blogs all the time about how if you have the inside connections to factory owners in China you can get all sorts of cool stuff at very low prices--RadioShack could resell all this.

Edit: but I think RadioShack's future is in the hands of Wall Street types who only see it as an interesting financial instrument where they can cheat some fools out of money before totally liquidating.

14
leoc 4 days ago 1 reply      
> RadioShack is a company of massive real estate, and is peddling a business model that is completely unviable in 2014.

We have good evidence to suggest that the RS business model is indeed viable in 2014: it's Maplin https://news.ycombinator.com/item?id=8328621 followup https://news.ycombinator.com/item?id=8329953 ).

15
blhack 4 days ago 2 replies      
Radioshack, want to save you business? Turn every single one of your stores into a hackerspace.

You don't even need much. Get a laser cutter, a 3D printer, a drill press, free WiFi, some tables, and a stack of arduinos and you'll be doing awesome.

Then build an instructables-esque community website for people to show off their projects.

I'll even consult with you guys on this if you make a big enough donation to the hackerspace I help run in Phoenix.

16
steven2012 4 days ago 2 replies      
The Radio Shack where I grew up gave out free batteries once a month. I did a science fair project that compared how good Radio Shack batteries were to Duracell, etc, and they were superior by far. It's sad that they are basically dead, but it's the Circle of Life, I suppose, and a good reminder to never rest on your laurels or take it for granted.
17
bsder 3 days ago 0 replies      
While Radio Shack deserves the scorn, it had two big problems at a crucial time.

1) Charles Tandy died in late 1978. This was right as the computer revolution was taking off and his loss of vision was bad news.

2) IIRC, one of the corporate officers embezzled an enormous amount of cash in the 1980's right as the IBM PC clone business was taking off. This stalled the company at a point when it needed to be pivoting. Unfortunately, I have only my memory to rely on as I can't seem to pull this out of any of the web search engines.

18
jmspring 4 days ago 6 replies      
Radio Shack at this point is a sad caricature of itself. I remember being able to buy all sorts of ICs, analog parts, interesting radios and kits. Now it peddles cell phones and overly prices things -- I recall needing a battery for my cordless phone recently, they wanted $23 for a battery for a $50 phone? Uh, no.

Two other bay area places that have changed a lot are Frys and the now closed Quement Electronics. Fry's still has a few components, but nothing like the 80s and 90s.

RIP.

19
rbanffy 3 days ago 0 replies      
What saddens me most is that RadioShack was one of the pioneers that sparked the personal computer revolution. I can easily remember my first interactions with a TRS-80 (a clone - I live in Brazil), reading avidly their manuals, understanding how their block graphics worked and writing my own small programs I would go to a computer store to test.

It's a little bit tragic, but we all know RadioShack's time has passed. We appear to be living in a time of rapid transformation. RadioShack will soon no longer exist. Like payphones, printed newspapers and magazines and soon books and bookstores will follow the video rentals and record stores into history. Change can be difficult for those who live through it, but in return, we get stories to tell our grandkids.

It's not that bad a deal.

20
msherry 4 days ago 0 replies      
I applied to work at a Radio Shack when I was 16. I didn't get a job there. The guy interviewing me spent most of the time making sure I knew the difference between being paid hourly, and being paid on commission, and making sure I really knew what a spiff was. In retrospect it was kind of weird. It was kind of weird at the time, too.

Reading these, I don't feel like I missed out on too much.

21
softbuilder 4 days ago 1 reply      
Radio Shack was always two stores in my memory. There was the legit geeky side with electronic parts, and there's the Realistic/Tandy side hawking so-so also-ran consumer electronics. The perspective always seemed to be that parts were sort of a loss-leader for consumables.

The employees almost never knew anything technical, and were often suspicious of nerdy kids like me lingering in the parts section. I remember one time I was building a circuit and needed a .22uF cap. I asked if a .22pF was the same (I was like 10 or 11). Instead of saying "I don't know" the sales guy just kind of stared at the package and then shrugged and said "Yep". My circuit did not work.

I hear people floating the idea of RS reinventing itself as more of a hacker-friendly place, but from an investor's perspective you'd be switching from a giant consumer market to a much smaller niche market. Personally, I think that's a great idea, but I'm not sure you could ever convince investors of that.

22
hagope 4 days ago 1 reply      
I actually think RadioShack can turn things around. "Hacking" electronics is gaining ground esp with Arduino, Rpi, etc. Here's what I would do:- Beef up stock of "maker" electronics, Arduino's, Rpi, modules, kits etc.- Buy/build modules/kits, work with suppliers like SparkFun, Shmart, Adafruit for help in this area- Create "recipes" for building electronics and guide customers through purchasing the materials- Clear out all the rip-off electronics unless you are willing to match Amazon prices.- Get rid of smartphones, who buys these from Radio Shack???- Most importantly, hold regular (weekly) free "maker sessions" for kids to learn principles of electronics and get them excited about it...similar to what Home Depot does

The more they focus on building/diy electronics the better, this is higher margin (and lower price) than simply retailing finished electronics, although they'll need to do some of that too I suppose.

23
ryandrake 3 days ago 2 replies      
This isn't really a story about Radio Shack. It's about how awful it is to be a retail employee. You could have written this about the working conditions inside any retail store in any dying shopping mall: Forced to work off the clock, no overtime pay, pay structure resulting in pay below minimum wage, capricious, last-minute schedule changes, do-it-or-leave ultimatums, callous, abusive management, exhausted and overworked management, management-by-screaming-at-people, nonsensical rules and policies from corporate, revolving door for employees and management, and widespread apathy. Nothing here specific to Radio Shack, folks, this is the standard retail work environment in the USA.
24
NextPerception 2 days ago 0 replies      
I read this post, felt sorry for RadioShack, and decided I would give them one last shot and try their price matching policy for a pair of beats solo headphones. I hoped to avoid the long lines at some of the bigger retail outlets and, by utilizing their advertised "extra 10% off" price matching, avoid mail in rebates as well. Long story short, after waiting close to an hour for one of the two working associates to become available I was denied a price match. They ended up losing my sale because of this and leaving me wondering how they have lasted this long. I had a bit of sympathy for them earlier but the only sympathy I have left is for the people still working for them.

https://twitter.com/MatthewTavares/status/538138578208169984

25
jrapdx3 3 days ago 0 replies      
Honestly, I don't know what to make of the "news" of RS' imminent demise. Just 2 days ago I visited a nearby RS store and bought stuff there. The store was well-stocked and I wasn't the only customer in the store. The employees didn't have that unhappy, "short-timer" look either, that is, didn't emit even a whiff that the store was closing down.

Besides, there are at least 6 RS stores in this city, the furthest I know of being maybe 10 miles away, so I'm guessing there must be a few RS stores out there that I don't know about. Since they've all stayed in business for many years, they have to be selling some items or services or something.

I can report at least two positive aspects of my RS visit. The guy at the cash register actually knew something about the gear I was interesting in and could answer technical questions. Second, prices were low and the quality of items seemed pretty good.

So yeah, there are reasons I would hate to see them go...

26
wheaties 4 days ago 0 replies      
It's not just the company is odd and off the mark. The bond holders are also screwy: http://mobile.bloomberg.com/news/2014-05-13/radioshack-lende...

The bond holders stopped them from closing unprofitable stores...

27
RevRal 4 days ago 0 replies      
Ah RadioShack, where I acquired Jazz Jackrabbit and a circuit board toy with my dad. It's sad that RadioShack isn't as fun as I remember it being, but last time I was in I saw a similar circuit board toy which is nice. It's always sad to hear that a company treats their employees as though they are no more than cattle tugging a plow.
28
Shivetya 3 days ago 0 replies      
I guess one of Radio Shacks biggest problem is the same as most brick and mortar stores, many us just want to order it online have it show up.

They could have tried/could try to become the home tech store. Take your home to the newest level, LED lighting all around, wireless integration of home automation and security. Sharing video all around the home. Then show it off in store. Hell, sell solar panels or such, I don't care. Just give today's geek a reason to come in. I don't need a phone or a computer; but a specialized home automation turn key system... well...

29
conductr 3 days ago 0 replies      
My SO worked at RS corporate for a few years during late 2000s. The Internet is definitely what killed this company. They had loyalty with a older generation and that's how they survived until now. They never found out how to bring young people into the stores in an Internet age. That's what the whole "the shack" thing was all about. It failed. Now that loyal customer segment they did have is 1) aging out of the market 2) coming around to online shopping.

I can't really say much about how store ops ran, but I'm sure it was a result of the financial pressures the company was under just trying to survive.

30
neurobro 3 days ago 0 replies      
I shopped at RadioShack just one time in the '90s. I bought some walkie talkies, and the cashier insisted that I provide my name and address to make the purchase. I said I didn't want junk mail. He assured me that it was only for recordkeeping purposes and that my info wouldn't end up on a mailing list. Within weeks, I started receiving RadioShack catalogues and flyers. I'm pretty sure they spent more on postage, paper and ink over the next few years than I had originally spent on the walkie talkies.
31
amorphid 3 days ago 0 replies      
As of today (Nov 26), Yahoo Finance shows RadioShack as having 3-ish billion USD in revenue, and a market cap of of 83 million USD. I guess there isn't a lot of faith on Wall St. that RadioShack is going to turn itself around.
32
beloch 3 days ago 0 replies      
In Canada radioshack rebranded itself as "The Source". I used to pop into radioshack to find plugs, adapters, and the occasional electronics component. They stopped carrying those years ago and now, if I want anything like that, I either drive across town to a hobby shop or order online. Since "The Source" now seems to specialize in overpriced junk, I haven't set foot in one for years. This article makes me feel good about that decision. It would be better for ratshack's workers to be out of a job and then in a job that treats them as human beings.
33
mgirdley 4 days ago 1 reply      
Just tonight my father-in-law's new TV required a HDMI cable. He suggested RadioShack. I said "I'm going to Target. At RadioShack you have to talk to people."

The days of high-touch service are over.

34
Scuds 4 days ago 1 reply      
Christ, I can't imagine what their corporate IT must be like.

Probably the Windows XP syndrome of never ever ever never investing into your infrastructure, but stretched over fourty years.

35
chipsy 3 days ago 0 replies      
My earliest memory of Radio Shack(which is probably circa 1990, so even before the name change) is that I walked in accompanied by my mother and attempted to play the display miniature pinball game, and then was yelled at by the manager for this crime.

I've had better experiences, I even got a microSD from them the other day(after being tipped by a friend that they were cost competitive on this one item). But it has never been warm fuzzies.

36
no_future 1 day ago 0 replies      
The person who wrote this seems reasonably intelligent. Why did he work at Radioshack for so long if it was so horrible?
37
ArtDev 3 days ago 0 replies      
The RadioShack employee I spoke with had no idea there was a Mini-Maker Faire in Portland.RadioShack could have had a presence there. When the company finally dies, where can you go to grab some Arduino kits or components? I hope another company takes its place.Places like BestBuy don't even carry cables, let alone components.
38
taivare 3 days ago 0 replies      
It saddens me to read this I bought my first computer from Radio Shack a Tandy 1000EX, it's now gutted and hanging on the wall above my desk,my nephew said,look mom a computer with a typewriter built into it !. Upon discovering ,how I memorialized my first computer , my nephew went on a search for his first phone..rest in peace RS.
39
derekp7 4 days ago 0 replies      
Part of the fall of Radio Shack is that the market for discrete components isn't what it used to be. This is because not as many people take up electronics as a hobby. And that, in turn, is because a lot of people that would go into electronics, got sucked into computer programming instead. After all, the decline of Radio Shack coincides with the rise of affordable personal computers.
40
zafka 4 days ago 1 reply      
I still have a cuecat!!! I never intended to use it for it's intended purpose,but thought it was great to get a free bar code reader.
41
Elzair 3 days ago 0 replies      
Here is a good blog post on the history of the TRS-80 that also discusses RadioShack's corporate culture. http://www.filfre.net/2011/06/the-trash-80-part-1/
42
jdeibele 3 days ago 0 replies      
Surprised that nobody has mentioned BatteriesPlus. Checking their website, they have at least 586 stores selling batteries - cell phone, laptop, car, etc. - and light bulbs.

Focusing in those areas seems exactly what RadioShack could and should have been doing.

43
Naga 3 days ago 0 replies      
If you think working on Thanksgiving is bad, the crummy retail store I work at (bookstore in Canada) is open New Years Day. Its actually open every day of the year except Christmas Day.
44
bch 4 days ago 0 replies      
This reads like a revolting Douglas Coupland novel.

Well done.

<not_sarcastic/>

45
sz4kerto 4 days ago 0 replies      
Maybe I have a sad life otherwise, but I was laughing so hard sometimes. Thanks for this.
46
vincentbarr 3 days ago 0 replies      
"We all line up in expectation of hordes of customers. Six on one side of the store, six on the other side, pallbearers of an invisible casket." Lol.
48
GoldenHomer 3 days ago 0 replies      
Oh RadioShack, I hardly knew ye. I do regret getting that crappy Virgin Mobile smartphone, which was the only thing I bought ever from a RadioShack. RIP in pieces.
49
drdeadringer 4 days ago 0 replies      
I just read a description of a business calibrated to "Kafka Settings", or at least a feature biography in "Zombie Business Today".
50
VLM 4 days ago 0 replies      
My Dad worked there in the 80s between contracts for a couple months. "Well this contract ends this month, and I've got an awesome database migration contract starting in 6 months, so I've gotta find something to do meanwhile (decades before FOSS type stuff), and I've spent tons of money at RS since it was allied radio and I was a kid ..." This was before they turned into Cell Phone Shack. About half the time they got well over minimum wage back then, even on low sales stores. Sounds like they earn even less now than in the 80s, not adjusted for inflation! One thing that didn't change was the Shack expanding to own your life, so it starts as part time and somehow 3 months later you're an asst mgr (why?) and "working" 90 hours and then a couple months later you're all WTF am I doing here at 100 hrs a week, my contract job starts next week, bye!

The article had a lot of weird stuff about not understanding why people wouldn't leave a crappy job. Well, perhaps 90% of the time the only crappy part was the paycheck, you just hung out and screwed around and occasionally sold stuff to people. So I'd take the city bus to his store after school and we'd play video/computer games for HOURS during the slow times. We had kind of a game on betting when the last customer would come in, maybe 6pm or so most days, then we had the store to ourselves till 10 or so, literally a kid in a toy store. It honestly was a lot of fun almost all the time, just not much pay. You could make a ton of money at lunch and after work rush, and saturdays, like $40/hr (which in the 80s was a lot), but you had to hang out all night long at minimum wage if you wanted the plum hours. Sales were extremely uneven over time. I still don't understand why they ever opened before noon or were open after 6pm or so.

I can prove he worked there... in the mid 80s each shipment contained a hopeless VCR tape of sales blather not for public consumption. Sell Sell Sell!

51
marincounty 4 days ago 5 replies      
I think Radio Shack could be reborn if it did a few things.Get rid of the cheap toys. Go back to just electronic parts, and today's technology--like having the Ardino and Rasberry always in stock--along with all the less know electronic kits. Try to keep the prices down. Keep all radios and cell phone stuff, but get rid of the advertisements(I don't like to walk into loud stores). I would also devote a small section of each store to used/recycled/surplus stuff. The workers shouldn't be required to wear ties.
52
mbubb 4 days ago 0 replies      
One thing the local radioshack is good for is to recycle old batteries - will have to find a new place to do that.
53
foxhop 3 days ago 0 replies      
This honestly reminds me of Sears Electronics Department, I worked there for 3 years.
54
api 4 days ago 1 reply      
Radio Shack was my toy store as a kid, as far back as I can remember. My favorite toys were volt meters, little electric motors, power adapters, LEDs, bread boards, and those little electronics kits with the spring terminals. Radio Shack deserves some of the blame for making me who I am today. :
55
jumblesale 3 days ago 1 reply      
Brum did not have a song.
56
squozzer 3 days ago 0 replies      
No matter what happens to RadioShack the stories were told masterfully. Stoned Craig is my hero, who reminds me of myself. Hacking the merchandise in an anti-social way is what being a RadioShack customer is all about!
57
amorphid 3 days ago 0 replies      
arrow
58
larrys 4 days ago 0 replies      
Nice bashing of a company fighting for their life. Point being it's easy if you are awash in profitability to do the right things, hire the best people in management, pay for the top consultants. [1] And of course give people massages and free lunch and all sorts of benies. Or if you have been funded with funny money that gives you "runway" to burn through.

The highest quality people don't generally decide they want to join a sinking ship (let's say a store manager or district manager). The quality people are either happy elsewhere already (and not looking) or they take advantage (as a general rule) of the better opportunities either because they can or because they are smart enough to recognize those opportunities and pursue them. At my first company there were people that didn't even show up for interviews. Maybe they saw the facility and didn't like the way that it looked.

Separately, presumably if the author had a better opportunity he wouldn't have suffered for "three and a half years as a RadioShack employee".

[1] But even then if your basic model is not viable you aren't going to stand a big chance of making it. This isn't something like "People still buy cars Chrysler just can't make a car that people want".

59
RickHull 4 days ago 1 reply      
Food for thought: any organization is vulnerable to such stagnation and dysfunction, particularly when it was born for and evolved with a state of affairs that no longer exists. Either the organization must adapt, or it should die. Thankfully, the death of dysfunctional organizations is a given in free markets -- perhaps even a reason for bittersweet celebration.

Governmental organizations, in contrast, have no incentives to adapt, and no "recycling" mechanism. Failure is emphatically not an option. Worse, bureaucracy inevitably takes on the primary mission of preserving itself.

5
Python idioms I wish I'd learned earlier
409 points by signa11  3 days ago   167 comments top 23
1
ims 3 days ago 2 replies      
I think the example in #4 misses the point of using a Counter. He could have done the very same for-loop business if mycounter was a defaultdict(int).

The nice thing about a Counter is that it will take a collection of things and... count them:

    >>> from random import randrange    >>> from collections import Counter    >>> mycounter = Counter(randrange(10) for _ in range(100))    >>> mycounter    Counter({1: 15, 5: 14, 3: 11, 4: 11, 6: 11, 7: 11, 9: 8, 8: 7, 0: 6, 2: 6})
Docs: https://docs.python.org/2/library/collections.html#counter-o...

2
dllthomas 3 days ago 1 reply      
"Because I was so used to statically typed languages (where this idiom would be ambiguous), it never occurred to me to put two operators in the same expression. In many languages, 4 > 3 > 2 would return as False, because (4 > 3) would be evaluated as a boolean, and then True > 2 would be evaluated as False."

The second half of this is correct, but it has nothing to do with whether the language is statically or dynamically typed. It's a tweak to the parser, mostly.

3
shackenberg 3 days ago 2 replies      
If you were underwhelmed by this blog post have a look at:

Transforming code into Beautiful, Idiomatic Python by Raymond Hettinger at PyCon 2013

https://speakerdeck.com/pyconslides/transforming-code-into-b...and https://www.youtube.com/watch?v=OSGv2VnC0go&noredirect=1

Topics include: 'looping' with iterators to avoid creating new lists, dictionaries, named tuples and more

4
__luca 3 days ago 1 reply      
Sincerely, Transforming Code into Beautiful, Idiomatic Python by Raymond Hettinger... http://youtu.be/OSGv2VnC0go
5
euphemize 3 days ago 1 reply      
One of my favorites:

    >>> print "* "* 50
to quickly print a separator on my terminal :)

Previous discussion on python idioms from 300 days ago: https://news.ycombinator.com/item?id=7151433

6
ghshephard 3 days ago 4 replies      
Wow - that's really, really great list.

In particular, #7 is something that I didn't even know existed, and I've been hacking around for 2+ years.

Instead of:

   mdict={'gordon':10,'tim':20}   >>> print mdict.get('gordon',0)   10   >>> print mdict.get('tim',0)   20   >>> print mdict.get('george',0)   0
I've always done the much more verbose:

   class defaultdict(dict):       def __init__(self, default=None):           dict.__init__(self)           self.default = default       def __getitem__(self, key):           try:               return dict.__getitem__(self, key)           except KeyError:               return self.default   mdict=defaultdict(0)   mdict['gordon']=10   mdict['tim']=20   print mdict['gordon']   10   print mdict['tim']   20   print mdict['george']   0
I'll be sure to make great use of the dictionary get method - I'm embarrassed to admit how many thousands of times I could have used that, and didn't know it existed.

7
rnhmjoj 3 days ago 3 replies      
This is something I do instead of writing a long if-else:

    opt = {0: do_a,           1: do_b,           3: do_b,           4: do_c}    opt[option]()

8
ckuehl 3 days ago 1 reply      
> There is a solution: parentheses without commas. I don't know why this works, but I'm glad it does.

It's worth mentioning that this is a somewhat controversial practice. Guido has even discussed removing C-style string literal concatenation:

http://lwn.net/Articles/551438/

You may wish to consult your project's style guide and linter settings before using it.

9
RyanMcGreal 3 days ago 1 reply      
I came across this when I was first learning Python and it has always impressed me:

    from random import shuffle    deck = ['%s of %s' % (number, suit) for number in '2 3 4 5 6 7 8 9 10 Jack Queen King Ace'.split(' ') for suit in 'Hearts Clubs Diamonds Spades'.split(' ')]    shuffle(deck)

10
desdiv 3 days ago 7 replies      
I'm not much of a Python guy, but that chained comparison operator is sweet!

Sure, it's just syntax sugar, but it saves a lot of keystrokes, especially if the variable name is long.

Is Python the only language with this feature?

11
wodenokoto 3 days ago 3 replies      
Can someone direct me to a comparision of subprocess and os? I keep hearing subprocess is better, but have not really read any explanation as to why or when it is better.

(I'm glad I'm not the only one who was thrilled to discover enumerate()!)

12
tomp 3 days ago 6 replies      
Some comments:

1. Am I the only one that really loves that `print` is a statement and not a function? Call me lazy, but I don't mind not having to type additional parentheses.

5. Dict comprehensions can be dangerous, as keys that appear twice will be silently overridden:

  elements = [('a', 1), ('b', 2), ('a', 3)]  {key: value for key, value in elements} == {'a': 3, 'b': 2}  # same happens with the dict() constructor  dict(elements) == {'a': 3, 'b': 2}
7. I see

  D.get(key, None)
way too often.

8. Unpacking works in many situations, basically whenever a new variable is introduced.

  for i, el in enumerate(['a', 'b']):    print i, el  {key: value for (key, value) in [('a', 1), ('b', 2), ('a', 3)]}  map(lambda (x, y): x + y, [(1, 2), (5, -1)])
Note: the last example (`lambda`) requires parentheses in `(x, y)`, as `lambda x, y:` would declare a two-argument function, whereas `lambda (x, y):` is a one-argument function, that expects the argument to be a 2-tuple.

13
rectangletangle 3 days ago 4 replies      
I'm a fan of Python's conditional expressions.

    foo = bar if qux is None else baz
They're particularly interesting when combined with comprehensions.

    ['a' if i % 2 == 0 else 'b' for i in range(10)]
Though this particular example can be expressed much more concisely.

    ['a', 'b'] * 5

14
leephillips 3 days ago 0 replies      
I was grateful for the example of multilined strings, mysterious as it is. The lack of any way to do this has been an annoyance of mine for quite some time.
15
jemfinch 3 days ago 2 replies      
Most of these idioms actually make me sad.

When I first started using Python around 1999, it didn't even have list comprehensions. Code was extremely consistent across projects and programmers because there really was only one way to do things. It was refreshing, especially compared to Perl. It was radical simplicity.

Over the decade and a half since then, the Python maintainers have lost sight of the language's original elegance, and instead have pursued syntactical performance optimizations and sugar. It turns out that Python has been following the very same trail blazed by C++ and Perl, just a few years behind.

(At this point Python (especially with the 2 vs. 3 debacle) has become so complex, so rife with multiple ways to do even simple things that for a small increase in complexity, I can just use C++ and solve bigger problems faster.)

16
polemic 3 days ago 0 replies      
I work with python full time, and the last (#10 string chaining) is one of the few times the syntax had caused me grief, due to missed commas in what were supposed to be tuples of strings. The chaining rules are one of the few sources of apparent ambiguity in the syntax, especially when you include the multiline versions.
17
_navaneethan 2 days ago 0 replies      
There is an sweet in India called [0] phirni when you start eating from outer layer to inner layer, you will feel like walking in heaven.Now you are in outer layer.I hope you enter to the inner level and feel the python still. :)

[0] http://www.wikihow.com/Make-Phirni-%28a-Rice-and-Milk-Dish%2...

18
tinkerdol 3 days ago 1 reply      
"Missing from this list are some idioms such as list comprehensions and lambda functions, which are very Pythonesque and very efficient and very cool, but also very difficult to miss because they're mentioned on StackOverflow every other answer!"

Can anyone link to good explanations of list comprehensions and lambda functions?

19
TheLoneWolfling 3 days ago 1 reply      
I wish there was an interval set in Python's builtins.

I also wish that ranges were an actual proper set implementation - so you could, for example, take intersection and union of ranges.

And I wish that Python had an explicit concatenation operator.

20
retroencabulato 3 days ago 0 replies      
Nice list, but I was confused by the arguments to the dict .get() example until I looked up the definition.
21
panzi 3 days ago 2 replies      
Oh, wow. I didn't know the dict comprehensions. Since when do they exist? I always used:

    d = dict((key(x), value(x)) for x in xs)

22
sherjilozair 3 days ago 1 reply      
Is there any such collection of advanced Python patterns, aimed at Python programmers with more than 2-3 years of experience?
23
flares 3 days ago 0 replies      
haha.. in #1, the easter egg "not a chance" :) :)
6
Ezra Zygmuntowicz has died
358 points by milesf  21 hours ago   42 comments top 34
1
jxf 13 hours ago 1 reply      
One time I was working on doing some tricky distributed routing for a freelance customer that was using Merb. At the time I didn't know Ezra and we'd never personally met, but I explained my problem over email and asked if he had any suggestions. I wasn't really expecting a reply -- it was essentially a cold call.

He immediately dropped what he was doing and emailed me back, "that sounds like a really interesting problem -- can I call you and we'll set up a screenshare?" He then spent two hours helping me get it right, free of charge, and he never asked for anything. (I eventually had to email a few of his colleagues to figure out his office address to send him a thank-you present.)

I think that is the sort of thing that epitomized Ezra, from everything I've heard from his many other friends: he was funny, patient, and most of all kind.

2
eliziggy 3 hours ago 1 reply      
This is Ezra's brother, Eli Zygmuntowicz. Thank you all for you kind comments. I know he valued his programming and tech community immensely. He will be sorely missed by his family, friends and son. If any of you are interested, we are having a memorial service for him in Portland this Wednesday, Dec 3. We are also setting up a memorial trust fund for his son, Ryland. Please email me at eliziggy@hotmail.com if you would like details about either the service or fund. Best. Eli
3
hcatlin 7 hours ago 0 replies      
When I was first releasing Haml, I remember that Ezra piped up and encouraged me. Actually, thanks to the Internets, it's still there https://groups.google.com/d/msg/rubyonrails-talk/UqYlo_N59zo...

Seeing someone as brilliant as Ezra saying he liked my project (Haml was the first thing I ever released) really encouraged me to continue on in OSS development. And, of course, we added iterators to Haml shortly after Ezra suggested it.

Also, Ezra was super helpful when we built m.wikipedia.org using Merb... helping me get everything set up so that we could scale that project to 2 billion pages a month through the three dinky machines I had!

I'm totally surprised and gutted to hear that he's passed. :(

4
antirez 18 hours ago 0 replies      
Ezra was the first to start making Redis popular, wrote the initial implementation of the Ruby client, gave the first talk I remember at lightning conf. One time I met him at EY office with his family, with the 2 months old child. At some point he started to disappear more and more, we were supposed to meet in Portland at a Redis conf and he was not able to make it. I was concerned about him every time I saw a rare tweet. I'm sorry Ezra.
5
mreider 20 hours ago 0 replies      
He used to fly little radio controlled helicopters all over our office at Engine Yard. Playful and fun. The real tragedy has little to do with his departure from the world oftechnology. The real tragedy is that his son, who must be no older than six, has lost his father. So so sad.
6
holoway 11 hours ago 0 replies      
Ezra was so good to me. He helped write Chef, tool our idea and ran with it as a critical part of Engine Yard cloud. We wrote chef solo together . He and his wife made my wife and I feel warm and welcomed in San Francisco. Rest well, big guy.
7
acangiano 1 hour ago 0 replies      
This was horrible news to wake up to last night. The importance of Ezra in the Rails and related communities cannot be overstated. He was a great guy with a big heart; always busy making things whether in the programming world, with glass, or 3D printers. A true hacker. I wasn't lucky enough to call him a friend, more of a professional connection/acquaintance, but I'm glad I reached out to him during his darkest moment and got to know him a little better in the process. He will be missed.
8
milesf 19 hours ago 0 replies      
If you didn't know Ezra, some of his talks are available on Confreaks:

http://www.confreaks.com/presenters/59-ezra-zygmuntowicz

In particular, his last talk at RailsConf 2012 is a fascinating history of Ruby on Rails:

http://www.confreaks.com/videos/911-railsconf2012-what-a-lon...

9
asenchi 15 hours ago 0 replies      
Ezra hired me at Engine Yard about two months before he left. I loved discussing infrastructure and software with him. He did a lot for the Ruby community and brought to light lots of great tech (redis and nginx). He had a big impact on my career and for that I will be forever grateful. Prayers and thoughts with this family. Rest in peace Ezra.
10
mattetti 20 hours ago 1 reply      
The way I will always remember Ezra: https://www.flickr.com/photos/adelcambre/2932034431/in/photo... MerbCamp, 2008
11
tomfakes 7 hours ago 0 replies      
If you were building Rails apps in 2005/6, more than likely you were reading Ezra's blog post on how deploy to your VPS. It was tricky to get right, but Ezra made it so that it was no longer impossible. He was always there to help people with their own tricky configurations too.
12
derekcollison 1 hour ago 0 replies      
I am deeply saddened by this news. I remember trying to convince Ezra to join us to help out with CloudFoundry. I, like others, knew Ezra through the Ruby community where he was a larger than life presence. My thoughts are with his son, his family and friends.
13
Adam_Simms 10 hours ago 0 replies      
He moved to Portland, Oregon for a new job, but I believe mostly to jump back into the glass blowing scene he helped create in the 90's. Ezra was a innovator in the glass pipe world. A world class artist that reinvented lampworking.
14
joshowens 2 hours ago 0 replies      
Wow, this make me really sad. I remember interviewing him about Engine Yard on my old podcast.

He always impressed me and I was so happy he took the time to talk: http://web20show.com/2008/07/episode-47-ezra-zygmuntowicz/.

15
heimidal 19 hours ago 0 replies      
I shared a cab ride with Ezra from the New Orleans airport to the RubyConf hotel in 2010. In the very short time we spent in the car talking about his new role at VMware working on Cloud Foundry, his enthusiasm and passion for Ruby and the community's future left a huge impression on me.

Ezra, you will be missed.

16
GMFlash 6 hours ago 0 replies      
It looks like Ezra has been battling an illness for over a year: https://groups.google.com/d/msg/trinitylabs-talk/f8XOageAwcY...

I'm very sad to hear such bad news about a great person. :( I learned a lot about developing by hanging out in #merb and #engineyard chatting with Ezra and the crew.

17
mikepence 9 hours ago 1 reply      
What do you say about a man who embodied everything that is good and precious about the culture of sharing in software? When we all got that Rails was the next big thing in '05 and '06, Ezra was there in IRC and freely gave of his time and expertise and all but tutored me in Rails and Ruby. I was so deeply moved by his generosity, that on meeting him at the first Rails conference, I just had to hug him.

Goodbye, friend. The kindness you showed to me and to so many others lives on. Thank you.

18
jasonwatkinspdx 9 hours ago 0 replies      
In the early days of both Engine Yard and Kongregate Ezra and I worked closely on solving some problems during high pressure moments. He was smart, dedicated, and genuine. He worked hard to not just solve problems, but to communicate and teach everyone around him.

We lost touch over the years, chatting occasionally and always saying "hey, we should meet up sometime." I'm sorry now we didn't.

19
mk00 3 hours ago 0 replies      
Ezra was a pioneer in the glass-blowing/pipe industry. Here is some of his work: https://www.facebook.com/jason.lee.16568548/posts/1020460894...
20
tmornini_ey 19 hours ago 0 replies      
I woke up this morning to Regan's post on that old photo.

It's an incredibly sad day: a great hacker, founder, and community member has been lost forever.

Goodbye Exra, I'll miss you.

21
rabble 20 hours ago 0 replies      
Ezra was a playful hacker who was never afraid to strike out and build something crazy.
22
bphogan 10 hours ago 0 replies      
He taught me how to deploy Rails apps, and with his help I figured out what I needed to get a production environment running on Windows. Then he asked me to contribute what I know to https://pragprog.com/book/fr_deploy/deploying-rails-applicat... out of print now).

He's one of three people responsible for turning my career completely around back in 2005. He always paid it forward, and I have always done that myself since.

He was amazing. Honestly, we need more of that and less "you're doing it wrong."

23
nathan7 12 hours ago 0 replies      
I'll miss Ezra and his outgoing spirit. Goodbye, old friend.
24
brumir 20 hours ago 1 reply      
I meet Ezra at RailsConf 2007, this was pre Engine yard if I am not mistaken. At this point he was all merb. He was fun to be around, very positive attitude and extremely smart.

Sad day

25
milesf 20 hours ago 0 replies      
I met Ezra back at RailsConf (2007) after a talk he gave. Scary smart, yet friendly and humble. The man left us way too soon.
26
sebie 16 hours ago 0 replies      
He left us to early. It is very, very sad. RIP you will be missed :/
27
imbriaco 2 hours ago 0 replies      
Rest in peace, Ezra.
28
_pius 11 hours ago 0 replies      
This is terribly sad. Profound loss for the Ruby community, among many others.
29
piyushpr134 20 hours ago 1 reply      
:(( What happened ?
30
eternalban 13 hours ago 0 replies      
Ezra is an upstanding human, a generous and helpful spirit. He will be missed.
31
davidw 19 hours ago 0 replies      
Wow... Very sad news. His twitter page shows him living in Eugene, Oregon, my hometown. I wonder what he was doing there.
32
RickHull 19 hours ago 0 replies      
Oh wow. So sad to hear about a pillar and pioneer in the Ruby community.
33
mrkris 4 hours ago 0 replies      
:(
34
JBFromOZ 19 hours ago 0 replies      
shit man! that sucks, you will be missed :-{
7
Meditation study shows changes associated with awareness, stress (2011)
366 points by ekm2  3 days ago   162 comments top 23
1
redmaverick 2 days ago 8 replies      
There are different types of meditation styles. I had experience with a type of meditation mentioned in the article. It is known as mindfulness meditation. Even in mindfulness meditation there are different approaches. Mine is mindfulness through the awareness of bodily sensations.

http://www.dhamma.org/

This is the 10 day course I underwent. It is pretty brutal and intense. You meditate for 8 hrs a day in total silence for 10 days.

Description

The mindfulness meditation consists of two parts. Part 1 is concentration or Anapana. Part 2. is Vipassana which is awareness through bodily sensations.

The first 3 - 4 days are spent in Anapana. You simply observe the incoming breath and outgoing breath. That's it. The problem is that your mind gets hijacked into the past or future frequently. All you have to do is observe the incoming breath and outgoing breath. After a few seconds this new habit pattern of the mind gets disrupted. You don't get frustrated or despondent because this is the way the mind works. You keep bringing your mind back into the present by focusing back on your breath.

You do this for 8 hours a day for 3 to 4 days with breaks in-between. What you realize is that with persistent effort you can actually stay in the present for quite a while. Your mind becomes very concentrated.

Now, this concentrated mind is a tool. With your powerful concentrated mind you start observing the area under the nostrils and above the upper lip. You become aware of an interesting phenomenon. There is an interplay of a multitude of sensations spontaneously occurring in that region. The sensations feel like tiny extremely weak electric currents zapping through on the surface and disappearing. Or it could be a weak throbbing and itching sensation. Sometimes you get the feeling of the area under investigation being in a state of tension. It doesn't matter what the sensation is like. What matters is that you are aware of these sensations.

The remaining days you try to stay in the present via bodily sensations.

Now, instead of just focusing on the area under the nostrils and above the upper lip, you start scanning the whole body from the top of the head to the tips of your feet and then you realize that these sensations are present throughout your whole body. Again, the same thing happens. You start scanning the body beginning from the top but your mind tries to hijack awareness from the present into either the past or future. Again, you just smile to your self without getting frustrated and patiently and persistently you bring the mind back into the present moment.

You do this for the remaining days. Now there are two important things you will experience via mindfulness meditation.

1. The mind and body are very deeply connected. The sensations you feel through out your body react to the contents of the thoughts present in your mind. Some traumatic event from your distant past surfaces up while you are meditating. Your natural reaction is to get caught up in it. Your bodily sensations change in response to that. Now, instead of getting caught up in it you just try to observe the sensations and try to be equanimous. This leads to point#2.

2. All the sensations you experience are impermanent.Your entire body is in a state of flux and so is your mind. Any sensation no matter how pleasant or unpleasant is only transitory. There is no need to crave pleasant sensations or flee from unpleasant sensations because they are all going to change anyways.

This is how you rewire your brain by persistent mindfulness meditation. You teach your mind not to fall into old patterns and to try and be equanimous.

2
radva42 2 days ago 4 replies      
I have been practicing mindfulness meditation for the last 14 months - 30 minutes, everyday and I have to say that it has been virtually the most important skill that I have picked up.Because it's essentailly that - a skill. I was very stressed and the anxiety started to affect virtually every aspect of my life. My family wanted me to seek professional help (take pills), but I decided to try to take care of it myself so I started reading books... a lot of books about the brain, how it works, etc. and this is how I was introduced to mindfulness.Now, 14 months later the effects are so profound that I have hard time imagining what my mind looked like before.The biggest change I have noticed is the ability to not act on thoughts and easily let them go by accepting them.Things that used to trigger me before are just thoughts now: the thought comes, I notice it and it passes. The best word that comes to mind when trying to describe the feeling is ... grounded.I feel grounded, calm.

I know it sounds cliche, but now I realize that it's true that the moment you stop fighing your thoughts and urges, they lose their power. I remember reading things again and aain and could not wrap my head about this concept before.

- Does the anxiety go away? No, but my relationship with the anxiety and stress changed.

IMHO Self-reflection and emotional intelligence are the most important skills one can develop. Because if you develop them, you stop being in your own way and sabotaging yourself and it leads to generally happier life.

This is what I did i nthe last 14 months:- Lay down, close my eyes and observe the sensetion of breathing in my belly.- In the beginning my mind was immediately distracted with thoughts. It took me sometimes a few minutes until I was able to realize that I have been distracted all along. Then I had to force myself to ignore the distrating thought and pay attention to my breathing. It was really hard in the beginning and my sessions lasted usually 15 minutes max.- But as I got better it became easier...now I have no problems to let go of a thought ... even a very emotiaonally charged one. It's like I have a switch in my head.

I have recommended mindfulness to all my friends and relatives and virtually none of them have made more than a few sessions. That makes me sad, because I can see what effects it can have, but there's nothing more than recommending that I can do - it's really a personal commitment.

3
fsloth 2 days ago 1 reply      
Meditation seems to sound really weird to lot of people but the zen breathing exercises I've done are mechanical and completely devoid of mystical culturally relative concepts.

Simple introductory exercise in meditation for those unfamiliar with it. No mystical chanting required. The only caveat is that it can be as boring as hell. I'm not an expert but this should contain the essentials of a simple zen practice:

Equipment: timer and a comfortable place to sit without interruptions

Time: 10 minutes (or 5, whatever you feel like but try to commit to the timespan you choose). Put the time on the timer.

1. Sit down. The position should be stable so you don't fidget around.

2. Get a good posture: keep you back straight

3. Concentrate on your breathing. Keep breathing slow and deep breaths

4. Count your breaths, mentally, from one to ten, starting from one on exhale, two on inhale etc until you reach ten and go back to one.

5.Start the timer

Proceed until timer runs out.

Try to maintain this: sit still, back straight, rythmic breathing, count each breath.

You may observe thoughts arising. Observe the thoughts but do not get lost in them. You will notice you have been lost in your thoughts because you loose count of your breaths, at which point you just start counting from one. Do not try to block the thoughts.

If you can keep complete count throughout the entire span on first try then that's great!

Any weird sensations you might get are just pointless disruptions created by your mind.

4
krick 2 days ago 2 replies      
I surfed through the links quite rapidly, but I haven't seen any description on what exactly exercises they used. "Meditation" is a term so easily abused, you know. There's quite a few schools calling "meditation" something completely different, some techniques almost opposites (quite literally) of each other. Hell, why to talk about different schools when even Zen has both very different zazen and other meditation practices, which all could be commonly referred to as "meditation" by western people!

So I would hope to see some more detailed explanation of what participants were told to do, which I couldn't see somehow. In other case it sounds only a little more meaningful than "Participating in an eight-week doing something program appears to make measurable changes in brain regions associated with memory".

5
burke 2 days ago 0 replies      
It's always funny watching peoples' reaction to meditation as a means to an end. People want to meditate for cognitive benefits, but meditation purportedly teaches that meditation should not be done for any particular benefit.

I think the real source of this dissonance is Zen, which tends to center around elimination the ego, or the sense of self. Doing this type of meditation for any sort of benefit seem incongruous, since you're practicing elimination of self with the intention of improving the self.

There are a lot of kinds of meditation though. The weird paradoxical component is kinda unique to Zen, AFAIK. A lot of styles are quite comfortable with the idea of meditating for cognitive benefit.

Even with Zen, I don't think it's incongruous to practice selflessness via Zen in the moment with the intention of applying that skill in other moments to benefit you in various ways.

6
KobaQ 2 days ago 4 replies      
The goal of meditation is not to get a better brain. As the goal of yoga is not to get a sexy body. These articles and even more the countless yoga ads with young beautiful ladies are really counterproductive from the viewpoint of yoga. They might be helpful from another perspective.

I can't summarize the real goal of yoga properly (meditation is one of the important exercise beside contemplation; the asanas are for preparation only), but it's more to be able to let go of the selfish desires like becoming smarter, getting a sexier body, getting more money, fame, admiring ("Oh, you look so good lately" ... "Yes, you know, I'm doing yoga."). The goal is more to be able to coordinate (not suppress) the desires to avoid doing harm and at the end creating harm for yourself. Meditation gives us insight to where the desires are coming from. Are they essential? Do I need to fullfil them? Or do I need to eat another snickers just because the last one has made my blood sugar go like a rollercoaster?

7
jherdman 2 days ago 1 reply      
I've been using the Headspace app (https://www.headspace.com/) for a few months now and LOVE it. I highly recommend giving it a try. They have a free introductory course you can try too.
8
ozborn 2 days ago 3 replies      
I think if you are looking for mental self improvement this Havard article may be more appropriate (http://www.health.harvard.edu/blog/regular-exercise-changes-...). The short summary is exercise. Not only do you get your "better brain", but the rest of your body benefits as well.
9
louwrentius 1 day ago 1 reply      
I see a lot of anekdotes here on HN about meditation. But anekdotes are not science. I dislike the very close relation between meditation and spirituality that turns into fluffy bullshit.

I distrust peoples self-reporting because it is extremely unreliable.

The 'eight weeks to a better brain' sounds like any link-bait you see on the internet (' 6-pack in 12 days!').

Also, the results may be merely from the fact that these people spent ~30 minutes a day deliberately relaxing. What would happen if the control group would just lie on a couch for 30 minutes, doing nothing? None of that in the article.

10
rohitarondekar 2 days ago 1 reply      
I'm not well versed with reading research papers etc but I have one question. Could it be possible that by simply practicing mindfulness meditation the brain restructured itself via a placebo style effect rather that because of the meditation itself?

For anybody who has access to the paper what did the control group do during the eight weeks?

11
chrissyb 2 days ago 3 replies      
The thing i don't like about the term "meditation" is that its too closely intertwined with spirituality. Where meditation should actually be associated with relaxation.

This article only mentions the control group twice, once to say "None of these changes were seen in the control group, indicating that they had not resulted merely from the passage of time". This is just bad reporting - How about telling us what the control group were actually doing?

If they (control group) were not taking part in any type of consistent relaxation for 8 weeks then how would you expect to see any changes in the control group?

http://www.sciencebasedmedicine.org/yoga-woo/

12
pgrote 2 days ago 13 replies      
What is the best way to learn how to meditate? Any good resources?
13
CWIZO 2 days ago 2 replies      
Does anyone have any experience with meditation and RSI? I've been having RSI(like) problems for almost 3 years now. Recently I've read the Mindbody Prescription book[0] after finding this HN thread[1]. I must say it did help somewhat but I think I'm still in the process of healing myself. The bit I'm struggling is uncovering suppressed feelings and emotions. So I'm wondering wether meditation would help here. Any thoughts?

[0] http://www.amazon.co.uk/Mindbody-Prescription-Healing-Body-P...

[1] https://news.ycombinator.com/item?id=1269951

14
dorfsmay 1 day ago 0 replies      
In case you wonder if this s yet another study about this matter, note that the article is from 2011/01.
15
jahaja 1 day ago 0 replies      
I'd like this to be compared to an equal amount of non-stimulated time that is not necessarily meditation.

I feel that the main issue here could be that a lot of people, in western culture at least, are constantly stimulated.

16
frabbit 2 days ago 1 reply      
16 participants in the study! Neuro-imaging bolloxology. Meditation might be pleasant, but this is a pretty poor piece of science reporting.
17
rd108 2 days ago 0 replies      
This is my old lab! I'm turning these neuroscience findings into consumer products now-- using biosensors for meditation tracking and biofeedback. http://www.brainbot.me Check it out if you're interested, but full disclosure- this is my company
18
lultimouomo 2 days ago 0 replies      
Ought to wonder if today's XKCD is related...

http://xkcd.com/1453/

19
dbingham 1 day ago 0 replies      
20
andersthue 2 days ago 2 replies      
I read Dan Harris' book 10% happier and started meditating for just 5 minutes a day.

I can highly recommend it. I am much more aware and present when doing it than those days I do not.

21
hunterjrj 2 days ago 0 replies      
Another suggestion for anyone who would prefer a guide that is unbiased/free of religion and mysticism: How to Meditate by Lawrence LeShan.
22
jastanton 2 days ago 1 reply      
Are there any other training programs for better memory?
23
robodale 2 days ago 0 replies      
A few lowballs of Jameson on ice combined with a heavy 3D shooter on the XBox is my meditation.
8
Hard-won lessons about money and investing
341 points by sethbannon  23 hours ago   229 comments top 37
1
j_lev 21 hours ago 8 replies      
> If youre an employee working for salary, its going to be hard to reach that level of independence. ... You can try to radically lower your financial burn rate, but few Americans have taken that step.

So many people are quick to dismiss living well within one's means as a way to financial independence. Here's the link to the facts again:

http://www.mrmoneymustache.com/2012/01/13/the-shockingly-sim...

TL;DR: Live on 35% of your after tax income and you're retired in 10 years. Get it down to 25% and you retire in 7.

2
dredmorbius 9 hours ago 6 replies      
Matt's article (and the linked one of Scott Adams' advice) is a good and basic foundation.

Adding to the reading list, I'd very strongly recommend the following:

A Random Walk Down Wall Street by Burton G. Malkiel lays out the basics of portfolio diversification. http://www.powells.com/biblio/1-9780393340747-0

The Great Crash: 1929 by John K. Galbraith tells the story and aftermath of the biggest stock market catastrophe of the past century. It is a slim, highly readable, and incredibly informative book. Parts of it read as if it could have been written yesterday. Much of it provides a background and context on the Crash that corrected a great many misunderstandings and holes in my own knowledge. Galbraith has a dry humor and is a strong (and often disliked by insiders) critic of much of the establishment. Fans of this book are recommended to view his video series The Age of Uncertainty.

http://www.powells.com/biblio/1-9780395859995-9

http://www.powells.com/biblio/1-9780395259474-2

http://fixyt.com/watch?v=KGSID_Uyw7w

And adding to Matt's advice: have savings. The flexibility offered by "fuck you money" as Humphrey Bogart and others have noted is tremendously valuable.

3
grimlck 16 hours ago 1 reply      
"Google worked out a deal with full service broker to give us free accounts"

That is actually really interesting. How much did this broker have to pay to get this box full of highly lucrative leads - access to a large set of newly wealthy individuals, many of which don't have experience with managing large amounts of money. A bunch of people who may be experts of technology, but probably are not experts on finance.

It seems like inviting the fox into the hen house, and telling the hens what it deal it was

4
tacos 11 hours ago 1 reply      
The tone is far too authoritative given the narrow experience of the author. Reading an Googler's quickie blogpost investment guide isn't the path to financial independence. It's barely the bot-filled advice of /r/personalfinance with a better PageRank.

Microsoft pushed giving and 30 years later there are still people blindly pumping money into United Way. (Maybe not the best charity!) Google seems to have pushed their smart people into another half-baked set of assumptions.

I'm forcing myself NOT to get involved on this one (the solution to one person's narrow experience isn't another guy with different narrow experience ranting in the comments) but I will point out that Schwab Charitable (their DAF) has lower minimums and fees than Vanguard.

A lot of nerds spend more time researching a graphics card than a stock pick or charity. Like anything else, put the time in and you'll be rewarded over the long term.

5
jandrewrogers 18 hours ago 1 reply      
For most people, the easiest way to become financially independent is to save aggressively.

That aside, I have always invested in a small number of individual stocks, with minimal management or effort, and only moving positions between companies slowly over time. Basically, I make bets on long-term trends that I view as technologically inevitable. I don't invest in sexy companies (though some become sexy later), I invest in companies that are undervalued relative to the technology trends. That strategy is pretty trivial but it has allowed me to beat the S&P index pretty consistently over decades (famous last words) with the money I don't have a better use for e.g. savings. In fact, the margin by which I beat the S&P has been slowly improving, which I think reflects the increasing ability of tech to move the needle on the economy.

Since this is a tech site, this would seem like a repeatable strategy that anyone could and would use. But apparently people don't. Of course, I could just be really lucky.

6
err4nt 21 hours ago 3 replies      
I'm at the start of a long career and trying to save sacrificially. I know if i over-save i still have it if i need it, but so far every dollar i have put into savings has been on a one-way trip!

I wonder and worry about how to save up for later in life, and who knows what the political landscape will look like then. In my country inflation has been 2.16% on average during the years I've been alive.

Where can I store my money in a way that I know it will be there later whn I need it?

(I'm a little nervous about the bank, one time I had a court order against my bank account so it was drained, and I was beingpaid by cheque, but even when I took my paycheque to the bank to deposit it, until that debt was paid off i couldnt even take out enough for groceries. I want something that cant be taken away at a whim without recourse. I negotiated a deal with the collection agency for a repayment schedule, but they still drained my account 2-3 times after our agreement just because. Oops!)

7
jamesaguilar 21 hours ago 0 replies      
Hedonic adaptation is the devil. You'd hope/intuit that spending more resources would make you happier, but that's just not the way it works. That said, you can use knowledge of this quirk of human psychology to make you richer and more secure compared to your higher-consuming self, not sacrificing any long term contentment or satisfaction to do it. Here's a more in-depth review of the topic[1].

[1] http://www.mrmoneymustache.com/2011/10/22/what-is-hedonic-ad...

8
ballstothewalls 20 hours ago 6 replies      
Lesson number 1 is unequivocally wrong and contradictory with the start of the article. He says you shouldn't invest your money in single stocks, but then advocates for you to invest your money (by way of forgoing salary in favor of equity) into a start up company with (by definition) no track record of success or guaranteed future. Not to mention that when the start-up tanks (which it will do statistically) you will both lose your salary and your investments/equity will be worthless.
9
ingend88 5 hours ago 1 reply      
I am one of those people who have lived this advice and after 10 years of following some of the recommendations here, I can confirm that it works.

Here are my 5 simple rules that I followed, no lottery/IPO, just a steady single income. - Max out 401K and get company match- Max out Roth IRA for me and my wife- Invest in Vanguard S&P 500 Index Funds, some international funds and some bonds- Invested in a property in India- Lived below 35% of the salary - Always bought a used car and kept the car for as long as it runs

Results- After 10 years, I am financially independent- I am working for Google just because I enjoy working and not because I need a paycheck - My wife works as a teacher and she enjoys her job as well. She is working because she likes to and not because we need a paycheck

What was hard ? - To see friends buying expensive cars just after getting their first job and not doing the same- Friends buying > 1M$ houses while I kept renting since I like the flexibility and staying in a community- Friends going on exotic trips

I think at the end, its worth it.

10
influx 20 hours ago 1 reply      
I use Wealthfront, which allows you to park your money into an account, and depending on your level of risk, will automatically balance it across the US Stock Market, dividend stocks, emerging and foreign markets, bonds, and natural resources.

For account values over $100K, they will do tax loss harvesting for you automatically, and prevent wash sales. For over $500K account values, they will actually buy stocks for the entire S&P 500, and allow you to take tax losses on individual stocks (which you can't claim on ETFs).

I found their presentation to be quite helpful:

http://www.slideshare.net/adamnash/personal-finance-for-engi...

If you want an invite, PM me.

11
Animats 20 hours ago 1 reply      
If you do get a lot of money somehow, read The Challenges of Wealth, by Amy Domini. Most people who get a reasonably large chunk of cash all at once blow it, in an average of seven years. A sizable fraction of old pro athletes are broke. So are a sizable fraction of lottery winners.

As a rule of thumb, any investment where they call you is no good. If it was any good, it wouldn't need paid sales reps.

12
steven2012 21 hours ago 5 replies      
I'm of the opinion that the stock markets are now inherently unstable, and they will continue to crash every 7-10 years. I'm expecting a market crash somewhere between 2015 and 2017. Most of my money is in cash, but I do hold a few select stocks like AAPL, GOOG and TSLA.

I also believe that the stock market is a game, not an investment vehicle. The nature of the market has transformed every since the day trader, quants and HFT have entered the markets. As long as you understand this, then putting money in the markets is fine. If you don't want to be a part of the game, then regular people should buy bonds (not bond funds, but actual bonds that pay interest).

My opinion is that Wall Street has shifted focus since the 80s to trying to convince people to dump their money, all their money, into mutual funds. Then these massive fund managers take their 1-3% in various fees and just move money back and forth. I don't trust Vanguard any more than I trust any of these other large mutual fund companies, and I happen to know a lot of people that work at various asset management companies in the Bay Area. They print money without ever beating the SP500, instead they try to change the equation by claiming they beat the SP500 on a risk-weighted basis, etc. The entire thing is a sham, and as the OP remarked, why do the mutual fund managers have yachts but none of the clients do? It's because they make their money from the hundreds of billions of dollars they skim off the top of their customer funds.

13
netcan 14 hours ago 0 replies      
There is an economics article Ive brought up several times on HN. It has a lot of non obvious deep implications: The Nature of the Firm' (1937), By Ronal Coase It tries to answer the question of why companies exist rather than bilaterally trade of goods and services between individuals in a market. IE, if centralised economies are so bad, why are free market economies dominated by enormous companies that are internally run like a Stalinist country. Instead of Apple making all the software and hardware and the babushka doll of precursor software and hardware, couldnt we have Apple replaced by a market?

The economics of the time (especially among proponents of centralized systems) focused a lot on inefficiencies. Why produce hundreds of iPad screen designs when only one is needed. Economies of scale. Coases answer to the question was transaction costs. The cost of weighing all the options and negotiating a deal to have you write a thousand lines of code to go into my bigger bundle of code.

In modern companies like Apple this is extreme. But, if you think about it in a manufacturing economy, it makes more sense.

Anyway, as I said, the more I think about it the deeper some of the concepts and implications seem to be. For example: (a) There are inefficiencies out there on the scale of East/West Germany. (b) Transactions costs are at the root of many/most major inefficiencies.

The part of this blog that got me thinking about this was working for equity vs. salary.

I think that for most people, the choice company they work for wass 80% chance and 20% uninformed bias. Applying for a job and interviewing is a big overhead (transaction cost) and your ability understand the companys chances of success and the magnitude of this success isnt very good. The fact that many people dont know what percentage of the company their stock represents is the glaring proof. Prospective employees dont have anywhere near the information that investors do. How much money is in the bank? What are revenues? Burn rate? Valuation at previous rounds?

The poverty of information and the fact that transaction costs make it impossible for one to consider more than the tiniest semi-random sample of opportunities is exactly the kind of dynamic I think Coases work implies.

14
mcfunley 21 hours ago 4 replies      
> Think about working for equity vs. salary

It's really common for people to drastically overestimate the value of startup equity, or to just not understand the basic mechanics of it at all. In my experience people look at the face value of their options and are pretty clueless about how taxes (or even their strike price!) affect what they might actually wind up with.

15
applecore 10 hours ago 1 reply      
Regarding most of these lessons, in 2004, Google brought in experts on personal investing to educate employees heading into its initial public offering:

http://www.modernluxury.com/san-francisco/story/the-best-inv...

TL;DR: Put your money into some broad-based, low-cost index funds.

16
dave1619 20 hours ago 5 replies      
I added a comment on Matt's blog post but it's waiting moderation so I'll post it here to hear other folks' input.

"Hi Matt, I usually enjoy your posts but I felt this one lacking in a major way.

Investing is something that has huge potential (ie., 100 fold). This is something that Im sure youre aware of as an early Google employee (you were invested in the company via stock options, etc). On the other hand, investing has huge downside as well (you can lose all your money).

Many people are advocating people to take a mindless approach to investing by investing in low-cost index funds. I personally think this is decent/good advice for most people who dont have the time, energy, experience, skills to make investing a lifetime passion. In other words, for the typical person who just wants to focus on his 9-to-5 job and other hobbies and not deal with the world of investing, then sure low-cost index funds are the way to go.

However, there are some people who can benefit in huge ways by becoming experts in investing (whether this be in stocks, real estate, businesses, etc). A few disclaimers first becoming an expert investor is extremely difficult and most people underestimate what it takes. Its not about picking stocks or getting lucky. Rather, its about accumulating the skills, experience and expertise to evaluate investment opportunities in a wise and discerning manner, and to do it exceedingly well. I think it requires an immense amount of time and dedication. And I dont think 98% of the people out there practically have the time, energy, motivation or focus to develop such skills. But for the 1-2%, I think its a possibility if they treat it as a serious lifetime endeavor."

17
gfodor 6 hours ago 0 replies      
This is the typical investment advice, and it's generally outdated and wrong to just invest in index funds based on asset classes if your goal is to diversify away volatility.

For a layman's treatment debunking this view (don't mind the title):

http://www.amazon.com/Jackass-Investing-Dont-Profit/dp/09835...

for a more academic flavor:

http://www.amazon.com/Expected-Returns-Investors-Harvesting-...

the best book on stock picking i've read:

http://www.amazon.com/Quantitative-Value-Web-Site-Practition...

18
vpeters25 5 hours ago 1 reply      
> You are probably a bad stock picker

You might find a stock that looks good, you check financials, fillings, read forum posts and "expert" financial blogs such as Seeking Alpha. They all concur: stock looks good, BUY! BUY! BUY!

So you buy the stock thinking you are making an informed decision only for it to crash the next day after their latest SEC filing hits the wires.

There you learn they all knew the filing was coming, so they pimped the stock hard so suckers like us bite. Corp officials, analysts, "expert" financial bloggers, even the SEC. They are all on it.

19
CurtMonash 5 hours ago 1 reply      
I was a #1-ranked stock analyst (computer software and services industry) in the 1980s. I took a portion of my parents' money and doubled it in 18 months, by splitting it among 5 stocks that went to 4X, 3X, 3X, 0X and 0X. Then I left Wall Street, told them I no longer was in a position to do such stock picking, and they should put their money into Vanguard index funds.

They were not pleased, and felt I let them down by not being more active in investing for them.

20
DanBC 5 hours ago 0 replies      
For a different take people might be interested in "A Mathematician Plays the Stockmarket", by John Allen Paulos (he also wrote the excellent "Innumeracy").

The book explains a bunch of mistakes he made when investing.

http://www.amazon.com/Mathematician-Plays-The-Stock-Market/d...

21
dirtyaura 7 hours ago 2 replies      
What is especially hard in investing is timing. If you followed Matt's advice and put all your investments to index fund (say Vanguard Total Stock Market ETF, https://www.google.com/finance?q=NYSEARCA) in the late 2007, you would have lost almost 50% of your savings in a year. And this example is not far fetched. My startup got acquired in 2007 and I invested some of that money to the stock market in late 2007. Not all, fortunately.
22
netcan 15 hours ago 2 replies      
I'm surprised he doesn't mention real estate or investing in friend/family businesses as an option.

This isn't as safe as index funds, but it is an option where you can increase your success rate by being competent. It probably has a risk profile similar to working for equity at a startup, an option only available to people who work in or around startups.

23
FiReaNG3L 13 hours ago 2 replies      
Literally everywhere for the past years I see the advice to invest in index funds - the only question I have is what happens when a critical mass of people do just that? Wouldn't that influence the market in some way?
24
maguirre 11 hours ago 0 replies      
Interesting topic and one that really resonates with me. I have always been interested in learning how to make money the way "people with money" make it. Personally I have come to the conclusion that a few solid stocks paired with protective puts and/or call options (to make a little extra money for sideways markets) provides a decent way to generate some extra income and greatly reduces risk of losing everything from a single mistake
25
crimsonalucard 17 hours ago 1 reply      
Everybody in the tech world is talking about investing in index funds. Historical evidence says this is the way to go, but when everybody is doing it, it makes me question whether or not it's the right choice.

There's a possibility that the market is in another bubble right now.

26
mathattack 7 hours ago 0 replies      
Remarkably good ideas, and I tend to view most posts like this as Snake Oil.

Almost everyone should be doing most of their equity investments through a passive low cost index like Vanguard's.

27
armansu 16 hours ago 1 reply      
Made me think (as most of the lessons coincide) about the book I'm reading at the moment - 'Money: Master the Game' by Tony Robbins: http://moneymasterthegame.com/
28
arkem 21 hours ago 3 replies      
I've been considering moving from holding Vanguard ETFs (one of their Total Retirement funds) over to Betterment or Wealthfront to take advantage of their automated tax loss harvesting.

Does anyone have any thoughts about whether automated tax loss harvesting is worth the 0.15-0.25% fees that the robo-advisers charge?

29
applecore 10 hours ago 1 reply      
How many people are actually living entirely off passive income from interest, dividends, and capital gains? I feel that goalwhich requires millions of dollars in investable financial assetsis only realistic for a tiny percentage of the population.
30
mbesto 10 hours ago 0 replies      
> Instead of a regular stock broker, I highly recommend Vanguard. Go with Vanguard whenever you can.

This is good advice. YMMV but my retirement fund with Vanguard has been yielding ~10% annually (VWELX).

31
n72 7 hours ago 0 replies      
The tragic thing is that these lessons don't have to be "hard-won". I find it astonishing that a majority of even intelligent people don't do more basic research before making major decisions with something as important as their money. A few hours of research should turn up things like bogleheads.org, Bernstein, Malkiel, etc. Heck, a simple google of "site:ycombinator.com investing advice" should get you on the right track to all the advice you need in a few clicks.
32
ForHackernews 21 hours ago 2 replies      
https://www.bogleheads.org/wiki/Getting_started

Short version: Open a Vanguard account and invest >=15% of your salary in the appropriate target date fund for the year you want to retire.

P.S. Where possible, become a millionaire in Google's IPO.

33
kirillzubovsky 20 hours ago 1 reply      
FYI, if "tax loss harvesting" is something you'd like to consider, there're companies out there which (for a fee), would do it for you. Their entire business model is to lose money for you, in a smart way. That said, if you need to use this method, you're probably wealthy enough to know how/where to use it.
34
g_mifo 11 hours ago 0 replies      
Most of this is standard sane advice, but the tip about "work for equity [in the next Google] instead of chasing salary": well if we all could pick stocks like that, we would not need the rest of his advice!
35
brentiumbrent 9 hours ago 0 replies      
Simple advice: just use Wealthfront and take all of this advice at once, automatically. http://wlth.fr/1fsdN6t
36
briandear 14 hours ago 1 reply      
If you diversify enough, you can ensure a 0% return and a 0% loss. The argument for "diversification" is a recipe for safety, but not real wealth creation. Real wealth creation isn't "sticking your money in an index fund." It's a very middle class approach but as with anything, there's no such thing as a free lunch. If it takes 30 years of index funds to be able to retire, then you're doing it wrong. Investing in actual cash-flow producing assets is how you create wealth. Capital appreciation is only one part, the other part is creating cash flow. That means owning businesses, real estate and other passive income generators (IP, for example.
37
jafaku 10 hours ago 0 replies      
Consider also buying a bunch of bitcoins. The reward/risk ratio is too high in my opinion.
9
Regex Crossword
323 points by anewhnaccount  1 day ago   106 comments top 35
1
pyroMax 1 day ago 6 replies      
How about you save my progress in a cookie?

You might find this hard to believe, but I don't have a Facebook account.

2
throwaway_yy2Di 1 day ago 1 reply      
These crosswords are NP-hard! D: Here's a short encoding of 3SAT:

Alphabet: [01]

Number of variables: N

Columns: one for each clause, i.e.:

    r/.0...|..1..|....1/        (-x2 V x3 V x5)
They're disjunctions of three regexps of length N. Each alternative fixes one positional variable to either 0 or 1, and ignores the rest.

Rows: one for each variable, forcing it to be single-valued across the clauses:

    r/0+|1+/

3
jfmercer 1 day ago 1 reply      
This is fantastic work. Many thanks. One request though: please add one or more alternate logins than Facebook.
4
Robadob 1 day ago 4 replies      
My main problem with this is telling the difference between O and 0, the clue O's look more like 0 so I have to copy paste them. (Although I don't think I've had any numbers required for solutions yet).
5
TylerJay 1 day ago 0 replies      
Nice work overall. That was fun.

Just a heads-up though: There are some typos and grammar mistakes in your explanations, so if you plan to share professionally, you might want to have someone proofread it. Also, your Facebook OAuth window that pops up upon page load is being caught by Chrome's built-in popup blocker. Either way though, I'm always disappointed when Facebook OAuth is the only login method. I get that it's easy to implement, but I can't imagine this is a very security-sensitive app in terms of user-accounts. I would like to save my progress, but it's not worth the risk or analysis required to hook up my Facebook.

6
maaaats 1 day ago 0 replies      
The ability to rotate was really sweet. Fun challenge, some syntax I wasn't sure about (back referencing) but now probably will remember.
7
natch 1 day ago 2 replies      
Nice, but the answers being phrases ruins it for me, because you start seeing the answers without needed to check the regular expressions.

Really nicely designed though. Clean UI. Wouldn't mind if it was enlarged to use more of the screen real estate (tiny fonts are hard to read). I had fun with this.

8
yoha 1 day ago 1 reply      
It would be nice to be switched to the next level automatically.
9
FrankenPC 1 day ago 3 replies      
In case there is someone out there who never saw MIT's entry into the RegEx competition: http://rampion.github.io/RegHex/

This is the web incarnation of that hexagon puzzle.

10
toastedzergling 1 day ago 4 replies      
I really dislike that patterns using * wildcard required using the letters beforehand. The game requires A* to match a row with zero or more A's, but this is absolutely incorrect, as A* will gladly match ANY string, like QQQQ.
11
ryanlschneider 1 day ago 1 reply      
Fun! When I saw the title, I was expecting the opposite: a normal cross word with the usual "42 Across (4): It gets things done" style hints, but the answers were valid regex's. Someone make that too!
12
kowdermeister 17 hours ago 1 reply      
What's wrong on beginner / 01? :Dhttp://imgur.com/eJBJYSx
13
xorcist 17 hours ago 1 reply      
I want to be able to return later, but it's a bit too much to register a Facebook account (which you presumably can't do with a throwaway address?).

I'd be happy to donate more than whatever Facebook pays you for every newly registered account if you would implement a simpler method.

14
source99 1 day ago 0 replies      
Pretty cool but I don't feel like I am actually learning regex. I think the explanations/definitions need to be more clear and probably the answers less easy to guess.
15
Adrien_L 1 day ago 0 replies      
That was fun (in a really nerdy way)!I'm currently trying to educate one of my team member about regular expressions, this could be a fun way to get him practicing.
16
baby 1 day ago 2 replies      
http://regexcrossword.com/challenges/intermediate/puzzles/5

Anyone understand what (.)*DO\1 should match?

edit: Okay, I was writting 0 instead of O that's why it wasn't working.

17
Edmontonian 1 day ago 3 replies      
What does it mean when a reg ex ends with a `\1` (backslash 1) as in this example third beginner puzzle? (.)+\1

http://regexcrossword.com/challenges/beginner/puzzles/3

18
Edmontonian 1 day ago 0 replies      
I got the solution but didn't understand it for the beginner "naughty" puzzle ... http://regexcrossword.com/challenges/beginner/puzzles/2
19
almost 1 day ago 0 replies      
Cool!

I had a lot of fun writing a solver in Haskell for a crossword like this a few months ago. Apologies for the self promotion but here's a link to the article I wrote about it http://almostobsolete.net/regex-crossword/part1.html

20
_jb 1 day ago 0 replies      
So I had a bunch of important stuff to get done today, but now I know what I'll do instead. This is so much fun, well done!
21
mbillie1 1 day ago 0 replies      
I made it to http://regexcrossword.com/challenges/experienced/puzzles/4 before I opted to keep my sanity for the remainder of the day instead of continuing :) very well done. As noted, add non-FB login options!
22
Edmontonian 1 day ago 0 replies      
Wish there were an offline open source version.

With the exception of DHH, do they believe in Open Source in Denmark? (jk)

23
kf5jak 1 day ago 0 replies      
I learned regex this way about a year ago. First I went through the tutorials on http://regexone.com/, then started working the puzzles to burn it in. Really easy and useful once you understand it!
24
kazinator 1 day ago 0 replies      
This is good homework/quiz stuff if you're teaching people regexes, just to spice things up a little bit.
25
greenyouse 21 hours ago 0 replies      
This is fun! I feel like it is also good practice for logic programming too. Combine the regexes and put one or all possible solutions into each cell of the matrix :)
26
jordanpg 1 day ago 0 replies      
This highlights how crossword puzzles are a valuable way to stretch the mind laterally. This is a way to think about regexes that rarely comes up in practice: comparing one regex against another unrelated one.
27
kercker 13 hours ago 0 replies      
Funny, instructive.

Good to practise regular expressions.

28
mfsch 1 day ago 1 reply      
Cool game, it really helped me brush up my regex skills.

I think I found an error in The Lektor Device: The I in WITH could also be a T from the rules, but only the I is accepted.

29
jpetersonmn 1 day ago 0 replies      
No facebook account here either. Would be nice to be able to sign up with email or log in with google.
30
jacksondc 1 day ago 0 replies      
I reluctantly logged in with Facebook and lost all my progress .
31
simarpreet007 1 day ago 0 replies      
Closed as soon as I saw the Facebook login needed prompt.
32
klausseiler 1 day ago 1 reply      
i don't know how to solve beginner 4?shouldn't you be able to put anything into it?
33
dankohn1 1 day ago 0 replies      
Challenging and impressive.
34
ukd1 1 day ago 0 replies      
That was pretty fun!
35
spacefight 1 day ago 2 replies      
"Notice! In order to save your progress you have to login with Facebook."

Yeah, maybe... let me check: NOPE.

10
Sell Services on Amazon
312 points by prostoalex  2 days ago   95 comments top 29
1
paulhauggis 2 days ago 7 replies      
if it's anything like their marketplace, Amazon will keep all,contact information and all of your customers will be the property of Amazon. As a business owner, this is scary, because you can get banned or dropped by Amazon at any time.

It happened this month with DVDs on Amazon. If you aren't a wholesaler or someone that sells a lot in bulk, you can no longer sell DVDs. so if you are a small seller and you build up your customer base over a view years, you now effectively have to start completely over. Still least eBay allows you to keep your customers and build an actual business.

Now with services, I'm not sure how they will enforce this. If you are meeting with the customer, you could easily just tell them to start purchasing from you directly (and avoid Amazon fees). But I suppose if Amazon saw you only getting 1-time customers, they might get suspicious.

Either way, I would steer clear of doing any business with Amazon, unless you are fine with the fact that you aren't building yourself a business. You are building up amazon's

2
buro9 2 days ago 2 replies      
I wonder under which "in-home" service out-call escort services will masquerade as.

It's only a question of time.

When I was at Yell I wasn't that surprised to see how frequently such services would appear on our database, initially as massage and then moving on to ever stranger personal services (with the real service buried in the description or provided by a phone call later).

3
salimmadjd 2 days ago 1 reply      
I'm curious what (if any) startups will be build around this.

For example, what if there is a service that enables you to take your Amazon ratings to another platform but not have to pay the 20% cut. You can imagine the service providers would be willing to pay for the cost of verifications where their Amazon ratings is verified and transformed to platform B where it charges only 10% or 8% cut.

Other interesting angles would be around services and tools you can create to help the service providers market themselves better, engage their customers for reviews, return for repeat business, etc. Very exciting time!

4
rattray 2 days ago 2 replies      
If we thought Amazon's Product Search was a threat to Google, this is taking the battle to a new level entirely.
5
gokhan 2 days ago 3 replies      
From the FAQ:

- For example, if you install car audio, your services would be listed alongside car audio components.

The real benefit for some, not much for others. iPad Repair can't benefit from iPad sales

- Amazon creates pre-defined scopes of work based on common customer requests which you are then able to pre-estimate and offer... Before a job begins, you can review a customers specific scope of work and process a change order if needed.

Isn't this too complex? Also, no mention of procedure if customer does not get satisfied by the service. But anyway, it's very interesting to see Amazon trying to standardize service business. It's too complex, I want them to show me how to do it.

6
hownottowrite 2 days ago 6 replies      
20% cut is a little stiff.
7
Nagyman 2 days ago 2 replies      
Might this compete with Thumbtack [1]? That's the comparable startup that comes to mind.

[1] http://www.thumbtack.com/

8
sargun 2 days ago 1 reply      
This is amazing. They've created the arbitrage market with reputation management that we need -- it suddenly builds a platform for Cherry, Homejoy, Exec, etc..

I wish they introduced the ability to have structured bids / sell orders for things like food delivery, and even transportation service.

9
unklefolk 2 days ago 5 replies      
"Bike Chain Lubrication"??

Do people really need to call someone out to oil a chain?

10
ejz 2 days ago 0 replies      
Is this really something Amazon wants to do? Yes, it's the natural evolution of Bezos' ambitions, and services are really the only category Amazon hasn't quite touched. But it's a lot harder to control people than it is books. Do they want the people who have come to expect toilet paper delivered in 2 days exactly, without fail, to associated with never-on-time plumbers?
11
OoTheNigerian 2 days ago 0 replies      
Amazon is finally becoming "the everything store"

Interesting!

12
omarshammas 2 days ago 1 reply      
Services (unlike products) are typically constrained by the number of personnel available.

How does Amazon determine a company's availability when a customer books a job?

Most of these business I'd guess are probably in the 1-10 people range and probably not the most tech savvy. I can't imagine an adequate solution unless Amazon provides scheduling software and enforces adoption.

13
bonif 2 days ago 1 reply      
Sadly, it does not seem to include Saas/web services
14
netcan 2 days ago 0 replies      
This is interesting.

For the most part, it's still pretty hard to get good reviews for service businesses. It's even hard to get prices. How much does it cost to get a car painted?

My question is why would you pay online? It might turn out that for every sale that goes through amazon 3-4 clients just use this like yelp. Read review/prices and just pay the normal way.

15
akhatri_aus 2 days ago 0 replies      
We offer something similar in Australia[1]. We try and focus on high quality services & try not to commoditize our service desks though.

Amazon has been with this for some time. Its a bit surprising that they've not launch in entirety. (Still looks like a sign up phase)

[1] https://servicelocale.com

16
avighnay 2 days ago 2 replies      
Would this also include software development services?
17
cmapes 2 days ago 0 replies      
Enforcing quality-standards for services rendered sounds nightmarish for either the end user or for the service provider. It's going to be interesting to see how this pans out for amazon.com.
18
galfarragem 2 days ago 0 replies      
Great move. Finally an improvement on Amazon MTurk.
19
eva1984 2 days ago 1 reply      
The inconsistency of UI design style across different Amazon service always bothers me...
20
paul_milovanov 1 day ago 0 replies      
"Love for sale"
21
sidcool 2 days ago 1 reply      
That's like trying to gobble up a huge number of startups.
22
nosage 2 days ago 1 reply      
Service as a Service?
23
imjk 2 days ago 0 replies      
Does anyone have an invite code for this?
24
zatkin 2 days ago 0 replies      
Does this include food delivery?
25
jqm 2 days ago 1 reply      
The 20% fee seems ridiculously high.I suppose this has to get passed on the customers, but the review system alone will probably keep people going there.

On product reviews, I know some are juiced but I still look at Amazon reviews when examining something (and try to figure out which ones appear authentic). I imagine most people take these reviews at face value and reviews are worth a lot when having a service performed. I've never been on Angie's list but it seems a bit scammy from the little exposure I have had. Amazon likely appears more trustworthy, so I grudgingly predict success for this program.

26
imaginenore 2 days ago 0 replies      
No web development?
27
husseiny 1 day ago 0 replies      
The Power of a Brand.
29
nagaiah 1 day ago 0 replies      
http://www.nagaiah.com/ is selling services since 2008

We have been collecting only positive feedback and purge the negative comments.

11
The Unreasonable Effectiveness of C (2013)
282 points by nkurz  3 days ago   306 comments top 33
1
imanaccount247 3 days ago 8 replies      
>Every time there is a claim of "near C" performance from a higher level language like Java or Haskell, it becomes a sick joke when you see the details. They have to do awkward backflips of syntax, use special knowledge of "smart" compilers and VM internals to get that performance, to the point that the simple expressive nature of the language is lost to strange optimizations that are version specific, and usually only stand up in micro-benchmarks.

I see this kind of statement a lot, and it simply does not hold up to even a cursory look. Where are the awkward backflips of syntax, special compiler or VM knowledge, or version specific optimizations here?

http://benchmarksgame.alioth.debian.org/u32/benchmark.php?te...

http://benchmarksgame.alioth.debian.org/u32/benchmark.php?te...

Why are there so many java web frameworks/libraries/servers that offer performance close to C?

http://www.techempower.com/benchmarks/#section=data-r9

>Critically important to developer efficiency and productivity is the "build, run, debug" cycle.

This is a pretty bizarre claim. Sure, having an equally archaic and primitive process but 10 times slower is obviously worse (C++), but that doesn't mean having an archaic and primitive process is good if it is fast. I rarely ever run my code, much less debug it. Freeing myself from that horrible way of working was one of the greatest things about working in a language with a useful type system.

2
nkurz 3 days ago 5 replies      
Discussed a couple years ago here: https://news.ycombinator.com/item?id=5037089

And the followup discussed here:https://news.ycombinator.com/item?id=5075370

I repost because I'm becoming more and more frustrated with C, and wondered if others feel the same. Not because it's too low-level, rather because it seems to be trying (with limited success) to move to being a higher level language. There are times when I really do want a "thin layer over assembly", and C seems to have evolved to a place where that is no longer possible. I explain my distress more completely in the comments of Yann's article here: http://fastcompression.blogspot.com/2014/11/portability-woes...

3
grabcocque 3 days ago 5 replies      
It's basically impossible to write safe code in C. Surely that makes it pretty damn poor at what it does?

Especially since system code is the place where safety matters most.

4
andrewchambers 3 days ago 4 replies      
C is a great language, for fun I'm slowly working on my own highly C like langage - https://github.com/g-programming/glang.

Its basically C with Go like syntax, and a package system instead of headers. I aim to fully interop with existing C code and have no runtime requirements beyond what C has.

I'm not trying to go crazy with extra features over what C has though. An important part of what will make it work, is perfect interop with existing C code.

Yes I understand memory safety issues, but there is always a need for machine independent assembly languages. which C essentially is.

5
byuu 3 days ago 4 replies      
This last bit is so true:

> I always have it in the back of my head that I want to make a slightly better C. Just to clean up some of the rough edges and fix some of the more egregious problems.

I'm always mulling over that. "Maybe just namespaces, better macros, function overloading and member functions (eg this->) would work." Yet I'm sure Bjarne Stroustrup was thinking the same thing when he started on "C with Classes." The power to add features must be so overwhelmingly corruptive. So justifiable in each and every case, in the moment. And then you just can't stop. "Closures would be helpful. I'd love to write generic containers. Inheritance would save so much typing.", and the next thing you know, you're working on virtual inheritance, concepts and user-defined literals. :/

In my opinion, C really does need just a bit more to be great, but it would need someone with a will of steel to stop and leave things be after that.

6
htor 3 days ago 2 replies      
"C has the fastest development interactivity of any mainstream statically typed language."

This is not true. Using debuggers and crash dumps to reason about your running program is not fast or interactive at all. It doesn't matter how good the tools are. They interrupt the workflow.

Working in a REPL on the other hand, is real interaction with your program. You speak the language to the program and the program responds in the same language. This is fast.

7
101914 3 days ago 1 reply      
"You wanted a banana but what you got was a gorilla holding the banana and the entire jungle."

- Joe Armstrong

One could argue, easily, this is true for many of the popular garbage collected languages. It is certainly why I do not care for them. It is also why I do not care for some of the popular OS's, or most of the popular "software solutions". It is the unwanted delivery of the kitchen sink when all I want is a glass of water.

The OP says he's frustrated with C "because it seems to be trying (with limited success) to move to being a higher level language. There are times when I really do want a "thin layerover assembly", and C seems to have evolved to a place where that is no longer possible."

"seems to have evolved"

Some of my favorite programs that continue to work reliably, year after year, are written in what I guess some would call "primitive," K&R-like C and with little need for "the" standard libraries. I am not an expert C programmer, but I have no complaints when reading and editing this "primitive" C. I have seen others complain about it in forums.

One of my favorite source code comments is in the netcat source where the author says he's going to write the program as if he's writing in assembly. In my mind C should be just a thin layer over assembly. Essentially, to me, it should be a kind of "shorthand" for writing assembly. (That implies the author should think as if he's writing assembly. And C just takes away the drudgery of actually typing out all those lines of assembly instructions.) Now, that is just my opinion. I am not an expert C programmer. I know nothing.

8
Elrac 3 days ago 0 replies      
"C has the fastest development interactivity of any mainstream statically typed language."

I wonder if this statement is true since the invention of Go. A very fast compile was one of the design goals of Go, and its authors could afford luxuries (esp. In terms of memory use and object file size) that were unthinkable in the days of C. For example, IIRC object files contain the compiled code of their source plus the top hierarchy of modules called.

People have mentioned that changing a .h file in a large C project could trigger a lengthy recompile. AFAIK, Go minimizes this problem, so if the hype is correct there should be lots of projects where similar situations will be handled faster in Go.

My own empirical experience is very limited. I can confirm that Go compiles much faster than Java for my code, but that will surprise no one and it doesn't help us compare with C.

Does anybody have more tangible data regarding Go's alleged speed demon nature esp. as compared to C when compiled with e.g. VS or gcc?

9
gfodor 3 days ago 4 replies      
So, is Rust a better C? I haven't dug into it too much but that's been my general impression of how it's been presented.
10
arh68 3 days ago 1 reply      
(2013)

First, I think the speed of C relies heavily on the compiler. C is not fast, not if I wrote the compiler. But GCC is very fast, and ICC at least as much.

I was a little confused by the Erlang wariness, but the reasoning seemed sound

> At Couchbase we recently spent easily 2+ man/months dealing with a crash in the Erlang VM. ... ... it was a race condition bug in core Erlang. We only found the problem via code inspection of Erlang.

That does not sound like a fun time, but once the bug is fixed, what's the big deal? Is there good reason to believe more bugs will come? It wasn't my ass that got bitten but I'd forgive Linux even if it had a race condition bug. (or if it crashes touching 1000 files in /etc)

11
yason 2 days ago 1 reply      
The reason I love CI wouldn't like to love it but I am dragged down back to C each time so I think I've just given upis that it costs a bit more to write.

I used to prototype things with Python by the method of sheer experimentation. When I found a suitable design, I'd rewrite it "properly" in Python and if that wasn't fast enough I'd think a bit and rewrite it in C. But that's happening less and less often these days.

Because C costs a bit more to write it makes me think ahead. And I've (once again) found that while prototyping in Python is fast it's even faster to think and then just write C. I write some boilerplate C and start adding the data structures... this could take a "long" time but once I've figured it out, writing the actual C code is a breeze. All the mental work has already been done and once the data structures are right, the implementation just follows.

Curiously, this doesn't exactly happen with Python. Because you can make a Python program run almost immediately, there's nothing forcing you to the productive idleness. In C, you'll have to write a bit of code first until you can get something meaningful up and running: this is the hatching time for what you really want to write.

I'm not sure why I haven't observed this with other languages. I suppose I would need to write hefty amounts of Java until I could get a program running somewhat, but this process of forced productive idleness mostly happens in C. Maybe it's because there are no layer beneath C and assembly and you intuitively know the tradeoffs and only a negligible delta of what you write and what the machine will actually do. Maybe it's because C feels so physical. I don't know. But so far C is the only language that gives me that process in a native, intuitive way, constantly telling me that "you must not rush, because you can't rush anyway".

12
mrcslws 3 days ago 0 replies      
One nitpick:

> That some of the most heavily used and reliable software in the world is built on C is proof that the flaws are overblown, and easy to detect and fix.

Easy to detect? Multiple times per year we find out about a security bug in Linux or Windows that has existed since the 90s.

13
blt 3 days ago 0 replies      
C was built as a replacement for assembly programming. It seems low-level today but it does a huge amount of work for you. Call stack manipulation, computing offsets for nested struct members, converting arbitrarily complex conditionals into the right branching instructions, coalescing a sequence of expressively named intermediate values into the same machine register... these are the things C does for you. I've never written a serious assembly program but I can imagine how annoying it is to do all that stuff manually. It would be easy to screw up.

I think C has been so successful because it made really good decisions about what to do for you. It eliminated a lot of those busy-work programming tasks without taking away your fundamental control of the machine. Automatic array bounds checking, garbage collection, ... they would have been unthinkable for the original goals of C. The stupid warts are annoying but I think C made fundamentally sound choices of what to do automatically and what to leave up to the programmer.

We all talk about modular, abstract code, but back in the day "modular" meant "use the same calling convention for every int(int, int) function", not "dependency injection". From that perspective, C must have felt like a huge leap in modularity and abstraction from assembler.

14
Animats 2 days ago 0 replies      
Some of the unhappiness stems from C++, which was supposed to "fix C". Instead, it created a big mess. C++ is the only major language to support hiding ("abstraction") without memory safety. This turned out to be a poor feature combination, never again repeated. C has neither hiding nor memory safety, so if it's broken, at least it's visible at the user program level. Java/Pascal/Modula/Ada/Common LISP/Go/Rust, and the interpretive "scripting languages", all have both hiding and memory safety. We've at least come to an agreement on that feature set.

Because of the existence of C++, mainstream C language development more or less stopped. ANSI C, ISO C, C99, and C11 don't differ by much.

(At one time, I was promoting an approach to make C memory-safe in a way that allowed mixing safe and unsafe modules to allow a gradual transition and rewriting of old code. See (http://animats.com/papers/languages/safearraysforc43.pdf). It's technically feasible but politically hopeless. I'm now pinning my hopes on Rust and hoping they don't screw up.)

15
aosmith 3 days ago 1 reply      
C is a great language but have you tried go? Feels very c like with a lot of very nice conveniences.
16
danenania 3 days ago 2 replies      
What's a good practical way to get my feet wet with C? I want to learn it, but I'm the sort of person that can only learn a language by actually trying to build something useful in it. Sometimes it seems like a language that everyone thinks is important to know, but that no one thinks should actually be used in a real world project unless you're working on embedded systems or building an OS. What are some ideal (and beginner-friendly) use cases?
17
vezzy-fnord 3 days ago 3 replies      
Honestly, sometimes I think that the best solution for fixing the security quagmire we're in would have been not by creating a new system programming language like Go, Nim, Rust, D or even reviving one of the Wirthian languages (though having them on the table is very much a good thing), but by creating a memory safe dialect of ANSI C, and perhaps standardize on a better string handling library.

In fact, such an effort was started at AT&T back in 2001. The language was named Cyclone [1]. It met its 1.0 release in 2006. It has since been abandoned. Which is a damn shame, because it looked like it had real potential.

Is C a primitive language? Yes. In fact, it's almost stupidly simple compared to most modern languages. But its greatest weakness also proves to be its greatest strength. The main cognitive overhead from using C is in its manual memory management model and certain gotchas in standard libraries. It being bare bones as it is (but not too much) also makes it surprisingly pleasant at times. I get the feeling that plenty of modern languages try too hard to be novel and, for all the freedom you get from not having to worry about anything below program logic itself, you still end up expending a lot of effort into complicated high-level patterns that are frequently interspersed with arcane PL theory.

But that's not even the main reason why something like Cyclone is much needed. No. It's that we've pretty much perfected a ton of our APIs, like POSIX, to work with C. It simply feels most natural to work with POSIX in plain C. FFIs and bindings vary, some of them like Nim's actually feel quite clumsy (otherwise Nim makes it absolutely trivial to create FFIs, which is great).

Finally, refactoring 30 years worth of code into Cyclone sounds far more realistic than rewriting the world in Rust.

[1] https://en.wikipedia.org/wiki/Cyclone_%28programming_languag...

18
maaaats 3 days ago 4 replies      
It claims C has the fastest build/run cycle. Is this true? Many non-compiled languages I can redefine my functions at runtime, and with Java I can hotswap.
19
SCdF 3 days ago 1 reply      
There is currently a really cool project I suggest (if you're interested in learning / seeing C in action) called Handmade Hero[1].

He[2] is making a game, from scratch, in (mostly) C (but with a little bit of C++ niceties thrown in), and streaming[3] the entire process for an hourish, Monday -> Friday. It's intended to be a tutorial in both learning C and learning from-scratch game development (where from scratch means using GDI and like, parsing your own wav files).

It's really cool to watch, he's an entertaining guy, afaict is a pretty decent teacher (I know zero C, but C-style languages, and I _think_ I'm keeping up), so I recommend checking it out.

[1] http://handmadehero.org/[2] https://twitter.com/cmuratori[3] http://www.twitch.tv/handmade_hero

20
Aldo_MX 2 days ago 3 replies      
Every time I see someone praising C I curse Microsoft for not having proper support for C99 in Visual Studio.
21
lordnacho 3 days ago 0 replies      
The boring response would be that different languages have different strengths. C is indeed capable of being very fast, mainly by virtue of letting the dev have fine control over memory. But execution speed isn't the only metric. Sometimes you just need something to be done quickly and you know you aren't going to hit the constraints (time, space) of the system, so you might as well go with something like .NET to reduce your development time.

The point about the tooling I'm not so sure about. There's a lot of languages out there with well developed tools. And the tools tend to address the pain points: you have GC profiling in .NET, and you have Valgrind-type tools in c++.

22
bkeroack 3 days ago 3 replies      
"I always have it in the back of my head that I want to make a slightly better C. Just to clean up some of the rough edges and fix some of the more egregious problems."

This is called Go. Brought to you by the same people who gave you C.

23
facorreia 3 days ago 1 reply      
> C is the fastest language out there.

I thought it was Fortran.

24
TwoBit 3 days ago 1 reply      
C is not the fastest language. C++ is faster than C. For example, the only way you can hope to match C++ inline template algorithms in C is with a horrific macro scheme.
25
plow 3 days ago 0 replies      
Its as if people make asymptotic progress towards the goal of the ultimate programming language, the newer innovations which may well have improvements are too marginal to be beneficial, there is too much existing inertia, that is why the more prominent modern ones incorporate interoperability with C often. It would seem more sensible to say as the author of this post seems to propose, that C is the de facto ultimate.
26
fithisux 2 days ago 0 replies      
In this thread I saw no mention of Freebasic. It has some good features and is comparable to C. TerraLang is another interesting approach (for system programming languages).

But the fundamental flaw is that in many cases a DSl that compiles to something lower level is the way to Go.

27
dothebart 3 days ago 0 replies      
one of the best things C has to offer was omitted herein - the preprocessor ;-)
28
neutronicus 3 days ago 1 reply      
Hmmm. I work on a pretty large scientific computing project written in C++. Complex numbers in C++ are much, much better than they are in C. In general, I'm very happy it isn't in C.
29
otikik 3 days ago 0 replies      
Remember that where there's C, there can be Lua.

Just saying.

30
demarq 2 days ago 0 replies      
call us when the honeymoon is over.
31
Scramblejams 3 days ago 0 replies      
To you downvoters, consider that the top-voted comment in an earlier submission (https://news.ycombinator.com/item?id=5037089) agrees with me in principle, if not in form. If nothing else, the endless onslaught of critical security bugs we see throughout the software world suggests that we should be striving mightily to deprecate memory unsafe languages, not writing lovefests about rediscovering the worst of the offenders.
32
adamnemecek 3 days ago 1 reply      
"When someone says: 'I want a programming language in which I need only say what I wish done', give him a lollipop."

What a shitty, shitty quote.

33
rubiquity 3 days ago 0 replies      
It almost seems cruel to have a blog post written by someone from more than a month ago on the top of HN on Thanksgiving Day. I can picture the turkey and stuffing slowly tumbling out of Damien's mouth as he learns a blog post he wrote from early 2013 is at the top of HN right now.
12
Hard disk hacking
271 points by dil8  3 days ago   52 comments top 17
1
userbinator 3 days ago 1 reply      
I think it's rather unfortunate that the workings of modern HDDs (and other storage devices, like SSDs, microSD cards, etc.) are all hidden behind a wall of proprietariness, as this is mainly a form of security through obscurity; and government agencies probably know about such means of access already, while not many others do.

Although they're largely obsolete today, for many years the most well-documented and open storage device that could be connected to a standard PC was the floppy drive. The physical format was standardised by ECMA, the electrical interface to the drive nothing more than analog read/write data and "dumb" head-positioning commands, the controller ICs (uPD765 and compatible) interfacing it to the PC were based on simple gate arrays (no need for any firmware), and all the processing was otherwise handled in software. The documentation for the earliest PCs included the schematics for the drive, and the ICs on it were documented elsewhere too - e.g. https://archive.org/details/bitsavers_westernDigorageManagem... A lot of the technical details of early HDDs were relatively open too. I've interfaced a floppy drive to a microcontroller before, and being able to see how the whole system works, to understand and control how data is read/written all the way down to the level of the magnetic pulses on the disk, is a very good feeling.

(Many earlier systems that came before the PC, like the C64, also had more-or-less completely open storage devices, enabling such interesting things as http://www.linusakesson.net/programming/gcr-decoding/index.p... )

2
mojoe 3 days ago 4 replies      
I am very curious about how long this hack took to complete. I write firmware for SSD controllers for a living, and this would probably take me many months of full-time work to pull off with an unknown controller (granted, I generally work on algorithms at a slightly higher abstraction layer in the firmware, and some of my colleagues who are more focused on the hardware interfaces could figure something like this out much faster than me). I am incredibly impressed by this effort.

Also, I want to mention that it's common to have multiple processors in storage controllers. I can't talk about the specifics of the drives that I work on, but for SSDs at least there are several layers of abstraction: the host interface to receive the data, a middle layer to perform management of the data (SSDs require things like wear leveling, garbage collection etc in the background, to ensure long life and higher I/O speeds), and a low level media interface layer to actually write to the media. These tasks are often done by different processors (and custom ASICs).

3
schoen 3 days ago 0 replies      
There were several amazing talks at hacker conferences last year about reprogramming storage devices so that they can tamper with their contents. This researcher's talk was one of those. Another significant one was

http://events.ccc.de/congress/2013/Fahrplan/events/5294.html

and I think there were at least two others that I can't find right now (plus recent stuff on USB devices that attack their hosts in various ways). In light of these and other firmware and hardware-borne threats, a good overview of the bigger verification and transparency problems is

http://www.slideshare.net/hashdays/why-johnny-cant-tell-if-h...

4
jarek 3 days ago 3 replies      
Also might be of interest: Bunnie's hack of SD cards last year http://www.bunniestudios.com/blog/?p=3554

"An Arduino, with its 8-bit 16 MHz microcontroller, will set you back around $20. A microSD card with several gigabytes of memory and a microcontroller with several times the performance could be purchased for a fraction of the price. While SD cards are admittedly I/O-limited, some clever hacking of the microcontroller in an SD card could make for a very economical and compact data logging solution for I2C or SPI-based sensors."

"The embedded microcontroller is typically a heavily modified 8051 or ARM CPU. In modern implementations, the microcontroller will approach 100 MHz performance levels, and also have several hardware accelerators on-die."

Was discussed on HN, but Algolia search looks to be down at the moment.

5
dsl 3 days ago 3 replies      
Most people are surprised when I tell them that their computer is a lot of little computers working together on a sort of internal network.

This is why if your machine is compromised, and you have a threat model that involves serious (state or otherwise well funded) attackers, you really should just send it off to be recycled.

6
pronoiac 3 days ago 2 replies      
The server is overwhelmed. Coral cache: http://spritesmods.com.nyud.net/?art=hddhack&page=1
7
bajsejohannes 3 days ago 1 reply      
This reminds me of a quite wonderful talk at Oscon earlier this year: http://www.oscon.com/oscon2014/public/schedule/detail/33943 slides available, but I don't recognize the file format)

The high point for me is where he installs Linux on the hard drive. In the sense that the hard drive itself is running Linux.

There are quite a few venues for attacks like these: A single computer is sprawling with processors.

8
yoha 3 days ago 0 replies      
Here is the previous discussion for those interested: https://news.ycombinator.com/item?id=6148347
9
rasz_pl 3 days ago 0 replies      
10
kev009 3 days ago 1 reply      
This is really interesting stuff. Any pointers for getting into this kind of thing?
11
pingec 3 days ago 0 replies      
I really like his article about dumb to managed switch conversion. I wonder if more projects like this exist perhaps with some existing community. Would be really cool if one could buy a cheapo switch and hack it to a managed one in a similar fashion like you can flash OpenWrt on some cheap routers and make them 100x better.
12
jeffhuys 3 days ago 1 reply      
Aw... Was reading, clicked to page 5:

>Warning: mysql_connect(): Can't connect to MySQL server on '127.0.0.1' (111) in /var/www/spritesmods/connectdb.php on line 2

Edit: seems to work again!

13
larrys 3 days ago 0 replies      
I learned today what a jellybean part was:

http://en.wikipedia.org/wiki/J%E2%80%93Machine

"cheap and multitudinous commodity parts, each with a processor, memory, and a fast communication interface"

This reminds me of when I first went into business and bought some machinery. It actually surprised me (at that young age) to learn that the production machine I bought used standard parts that I could buy anywhere (bolts, screws and the like) and that if I needed one I didn't have to order it from the company that I bought the machine from. That seems obvious to me today but it wasn't obvious back then ("back then" was way before the web of course where info was not readily available)

14
TheLoneWolfling 3 days ago 3 replies      
So... what's the Cortex used for?
15
themoogle 3 days ago 0 replies      
I want to take this and go further. Have a mini linux distro running on my drives :D
16
teknotus 2 days ago 0 replies      
I really like the idea of using this as a defensive measure.
17
jrockway 3 days ago 2 replies      
I wouldn't trust the data on a hard drive anyway, since the hard drive can be removed and the data changed. If you want to make sure you're reading _your_ /etc/shadow, it needs a message authentication code. If you want to prevent others from reading your disk, it needs to be encrypted.
13
Phoenix Elixir Web Framework
269 points by areski  2 days ago   76 comments top 12
1
klibertp 2 days ago 4 replies      
I tried using Phoenix for a simple web app I wrote last month. It was a couple of static html/js files and a single WebSocket connection, so nothing fancy. Unfortunately, I found the documentation lacking, and the framework much too "magical" for me to quickly understand and make use of. I have no experience with Rails but rather with Django, so that may explain a lot. Anyway, in the end I used Erlang and Cowboy instead. I checked out Cowboy from github master which is "almost 2.0" now, and I had no problems at all setting basic project up. Defining routes was straightforward and explicit (which I like), upgrading connection to websocket and handling incoming data was simple and explicit too. I added eredis and jiffy to the project and that's basically it, it did everything I wanted it to do splendidly, with little magic and very little overhead.

Now, I know Erlang much better than Elixir, and I worked with Cowboy before and I needed to make this app quickly, which resulted in me not spending too much time on learning Phoenix. Between controllers, routes, views and channels I got an impression that Phoenix has too many moving parts and that it would take me too much time to fully understand what's going on. Especially because I really didn't need most of these, just a static file server and a single WebSocket.

However, I see Phoenix potential for more complex projects, where investing the time to learn it is going to be worth it. It looks like Phoenix provides an awful lot of conveniences and makes a project much better structured than my "a couple of files in a single directory" approach.

I guess what I want to say is that I almost used Phoenix this time and that I would probably use it if it had better docs - especially a solid tutorial(s) for use cases similar to mine. And that, while I didn't use it this time around, I'm certainly going to keep an eye on it and consider it next time I have to write something similar. It looks very promising and - like Elixir itself - very interesting, I hope for it to only grow in the future :)

2
chrismccord 2 days ago 8 replies      
Phoenix creator here. I would be happy to answer any questions. For those that want an overview of the framework, my ElixirConf talk would be a good start:http://www.confreaks.com/videos/4132-elixirconf2014-rise-of-...
3
rozap 2 days ago 1 reply      
My experience with Phoenix was super positive. I built https://www.vuln.pub with it while learning Elixir (no erlang experience..) and it couldn't have been easier. Everyone was very helpful on IRC if I did run into problems, and the framework itself is extremely well documented and the source is quite readable.

Definitely would recommend trying it out if you haven't. It was a breath of fresh air from where I was in node.js/python land.

4
rubiquity 2 days ago 0 replies      
It's really awesome how Phoenix has come a really long way in a really short period of time. Chris and Jos (and many others) do an excellent job of carefully considering features and how those features get implemented. While many refer to Phoenix as a "web framework" I don't think of it that way in the traditional sense of web frameworks like Rails. I find it closer to a "web library" that does an excellent job of handling Web concerns such as routing, WebSockets, rendering HTML/JSON and internationalization. I think this is a good thing in this day and age of having very diverse model layers.

If you have time and want to see a very well run open source project in action, I recommend you read through present and past discussions on the Phoenix GitHub project: https://github.com/phoenixframework/phoenix/issues

5
dynjo 1 day ago 0 replies      
We are a pretty big Rails shop (30+) devs and are getting pretty excited about Elixir. We are currently writing a series of blog posts about our Elixir journey, first one here http://blog.oozou.com/why-we-are-excited-about-elixir/
6
joshsharp 2 days ago 1 reply      
I've been following Elixir closely and recently built a super-simple chat app using Phoenix and websockets. I agree with other comments here that the docs could use some work, and as I also come from a Django background, rather than Rails, I found it a little magical for my tastes. However, once I understood how things go together, it was pretty trivial to get up and running. The included phoenix.js library makes the websocket pub/sub stuff ridiculously easy.

I'm really interested to see where Elixir is going, and to try building something real with it. I'll probably use Phoenix, just because it's the most active, mature framework. (I like the look of Dynamo - https://github.com/dynamo/dynamo - but not sure how active it is.)

7
lobster_johnson 1 day ago 1 reply      
Elixir is great. I just wish its syntax was more appealing; some of the design choices are a little idiosynchratic. Using "do..end" is natural in Ruby for blocks, but Elixir uses it for everything, and it looks pretty odd:

    Enum.map [1, 2, 3], fn(x) -> x * 2 end
or:

    receive do      {:hello, msg} -> msg      {:world, msg} -> "won't match"    end
The "do" syntax is in fact syntactic sugar for keyword arguments, which is suprising and a little disappointing, especially when you realize that constructs like "if", "case" and "receive" are in fact implemented as functions. Sacrificing syntactic elegance for consistency ("everything is a function") might be clever, but is it an improvement over hard-wiring this stuff into the language as first-class keywords? I personally don't think so.

It's a minor point, and not major enough to make me not use Elixir, but when someone goes this far in putting a nicer skin around Erlang, it's disappointing to find newly-invented blemishes that are as weird as the ones it aimed to smooth over in the first place.

8
davidw 2 days ago 6 replies      
I don't see "database" mentioned anywhere on that page. What direction are you going to head in with that?
9
polskibus 2 days ago 1 reply      
Is providing helpers for authentication and authorization (for example like ASP.NET MVC attributes) anywhere on the roadmap? It would be helpful not to reimplement authentication routines from scratch in every project.
10
insertion 2 days ago 2 replies      
This looks pretty elegant, but it's a shame that Elixir uses the Ruby-style multi-line code blocks with do end. Looking at those code examples, 'end' take up around 25% of the lines with code. Does anyone know if they considered taking the Python approach? Would be curious to hear the arguments behind the decision. I've noticed that most people seem to favor the Python approach after trying it, but that it's rarely used in new languages.
11
jacktang 1 day ago 0 replies      
Wow, glad to see the news. Now we just embed rails web application into cowboy server by using cowboy-rack adapter.
12
codexon 2 days ago 2 replies      
Is Elixir production ready now?
14
One guy's experience with programming
248 points by stephen_hazel  4 days ago   43 comments top 11
1
stephen_hazel 3 days ago 8 replies      
glad yall found it interesting!

side note: if anyone has any ideas about finding beta testers for my baby (erm, pianocheetah) I'd be glad hear em. can't find beta testers to save my life.

Overall, I'd say I'm pretty freakin lucky. Spoiled even. Thanks for the nice replies.

2
lucio 3 days ago 2 replies      
I've also had a Spectra, and after that an 88 weighted keys alesis QS8. had the ZX Spectrum (i'm still using n as default for loop variable) and then got the marvelous commodore 128. good old days. I was born in '71.
3
digitalzombie 3 days ago 1 reply      
> Kathy turned out to be a jerk.

I saw that one coming. She left him a few time and trying to get back with her ex.

Not good at all.

But overall, the dude seems well and surprisingly his Oracle's skill is the one that is the most useful...

4
tomcam 3 days ago 0 replies      
Beautiful story in so many ways. Thank you. Lots of similarities here, though I was self taught & ended up (very, very happily) at Microsoft for a few years. Your stories of family were enormously powerful & bittersweet. what a ride.
5
ianremsen 2 days ago 1 reply      
As someone who happens to be 16 years old, I am incredibly jealous, and can't help but feeling that my experiences with technology and programming in particular are either spoon-fed or diminished in some other manner, and that won't change in the future.Or perhaps it's just differences in perspective and point of view. :
6
ronyeh 3 days ago 1 reply      
Nice story, Steve. It's cool to look back over a career / life and think about what you've done and where you're going still. I think I'm about 15 yrs from where you're at... also a fan of music, although due to coding and career and kid, I end up not doing any music practice. :-| But I code music-related apps! Hehe.
7
thorin 3 days ago 1 reply      
Great story. I went Vic20->Spectrum->Amiga 500->windows PC->Linux.

Given I studied electronic eng I also expected to be doing something low level, but ended up doing enterprise oracle too for most of my career.

8
banku_brougham 3 days ago 1 reply      
I enjoyed it Steve. Shared a lot of the same early experiences I think. Tape drives!
9
jayvanguard 3 days ago 1 reply      
Great article. I love this style of free flowing retrospective with pictures of old technology. The Radio Shack 160-in-one electronics kit was awesome.
10
BorisMelnik 3 days ago 0 replies      
very cool - I think this hit right at the right time when I am semi-nostalgic on Thanksgiving and tend to reflect on my own past with C64s trs80s etc.
11
Spearchucker 3 days ago 2 replies      
I once dated a single mother, and my only regret is that I got cold feet and didn't marry her. Be careful with cavalier advice like that - people and circumstance never match your own.
15
W3C HTML JSON form submission
260 points by ozcanesen  4 days ago   99 comments top 21
1
rspeer 4 days ago 3 replies      
Let me say first of all that I'm glad they're working on standardizing this. When making REST APIs, I find HTML form scaffolds incredibly useful, but it means that you probably have to accept both JSON (because JSON is reasonable) and occasional form-encoding (because forms), leading to subtle incompatibilities. Or you have to disregard HTML and turn your forms into JavaScript things that submit JSON. Either way, the current state is ugly.

Here's the part that I don't particularly like, speaking of subtle incompatibilities:

    EXAMPLE 2: Multiple Values    <form enctype='application/json'>      <input type='number' name='bottle-on-wall' value='1'>      <input type='number' name='bottle-on-wall' value='2'>      <input type='number' name='bottle-on-wall' value='3'>    </form>    // produces    {      "bottle-on-wall":   [1, 2, 3]    }
I've seen this ugly pattern before in things that map XML to JSON. Values spontaneously convert to lists when you have more than one of them. Here come some easily overlooked type errors.

I don't know of any common patterns for working with "a thing or a list of things" in JSON; that kind of type mixing is the thing you hope to get away from by defining a good API. But all code that handles HTML JSON is going to have to deal with these maybe-list-maybe-not values, in a repetitive and boilerplatey way.

I hope that a standard such as this will eventually be adopted by real-life frameworks such as Django REST Framework, but I also hope that they just reject the possibility of multiple fields with the same name.

2
bkardell 4 days ago 0 replies      
In fairness, you have to look at how standards get somewhere - this is an editor's draft which is a starting point of an idea rather than a done deal. Don't be surprised if the final product winds up being significantly different than this - even better, get involved in the conversation to make it what we need. That's not to pour cold water on it: It's good as it is, but there are changes which potentially help explain the magic of participating in form encoding and submission which may be better and allow more adaptation and experimentation over time.
3
luikore 3 days ago 0 replies      
I don't agree with Example 9, we should use data uri scheme for file content

    "files": [{      "name": "dahut.txt",      "src": "data:text/plain;base64,REFBQUFBQUFIVVVVVVVVVVVVVCEhIQo="    }]
http://en.wikipedia.org/wiki/Data_URI_scheme

4
hughes 4 days ago 7 replies      

    {      "name":   "Bender"    , "hind":   "Bitable"    , "shiny":  true    }
Who puts commas at the start of a continuing line? What good could that possibly do?

5
jimmcslim 3 days ago 1 reply      
I'm not sure whether to be heartened or concerned that the W3C is referencing the doge meme in its specifications... see Example 6.
6
lorddoig 4 days ago 3 replies      
It amazes me that we're now at the point of standardizing sticking array references inside strings and yet we're still not having a serious discussion about what comes after HTML.
7
tomchristie 3 days ago 0 replies      
Seems pretty decent. Also neat that the nesting style could be repurposed to support nested structures in regular form-encoded HTML forms.

Main limitation on actually being able to use this is that `GET` and `POST` continue to be the only supported methods in browser form submissions right now, so eg. you wouldn't be able to make JSON `PUT` requests with this style anytime soon.

Might be that adoption of this would swing the consensus on supporting other HTTP methods in HTML forms.

8
tootie 4 days ago 1 reply      
They're still working on XForms after 10 years http://www.w3.org/MarkUp/Forms/
9
chronial 3 days ago 2 replies      
Am I the only one who is worried about the fact that this is exponential in size?

  <input name="field[1000000]">
Will generate a request that is ~5MB.

10
jdp 3 days ago 0 replies      
The latest release of my jarg[0] utility supports the HTML JSON form syntax. Writing out JSON at the command line is tedious, this makes it a little nicer. The examples from the draft are compatible with jarg:

    $ jarg wow[such][deep][3][much][power][!]=Amaze    {"wow": {"such": {"deep": [null, null, null, {"much": {"power": {"!": "Amaze"}}}]}}}
[0]: http://jdp.github.io/jarg/

11
techtalsky 4 days ago 1 reply      
Kind of nice, basically turns form submission into a bare-bones API call.
12
homakov 2 days ago 0 replies      
13
mnarayan01 4 days ago 1 reply      
The JSON-based file upload would be nice (AFAIK there's not great way to do this ATM, but I haven't looked in over a year). The rest seems pretty weak-tea though. I can see multiple issues with more defined type (e.g. numeric rather than string values, null rather than blank string), but without dealing with that stuff, this seems of extremely limited utility.
14
kijin 4 days ago 1 reply      
Why such an emphasis on "losing no information" when the form is obviously malformed?

You need only to look at the crazy ways in which MySQL mangles data to realize that silently "correcting" invalid input is not the way to go. The web has suffered enough of that bullshit, we seriously don't need another. Example 7 (mixing scalar and array types) gives me shudders. Example 10 (mismatched braces) seems to have a reasonable fallback behavior, though I'd prefer dropping the malformed field altogether.

If the form is obviously malformed, transmission should fail, and it should fail as loudly and catastrophically as possible, so that the developer is forced to correct the mistake before the code in question ever leaves the dev box.

Preferably, the form shouldn't even work if any part of it is malformed. If we're too timid to do that, at least we should leave out malformed fields instead of silently shuffling them around. Otherwise we'll end up with frameworks that check three different places and return the closest match, leaving the developer blissfully ignorant of his error.

While we're at it, we also need strict limits on valid paths (e.g. no mismatched braces, no braces inside braces) and nesting depth (most frameworks already enforce some sort of limit there), and what to do when such limits are violated. Again, the default should be a loud warning and obvious failure, not silent mangling to make the data fit.

This is supposed to be a new standard, there's no backward-compatibility baggage to carry. So let's make this as clean and unambiguous as possible!

15
stu_k 4 days ago 3 replies      
Submitting files with this form encoding is of course going to have the base64 overhead, but otherwise this looks great!
16
pmontra 3 days ago 0 replies      
A discussion about the implementation of the spec in jquery. It started on June 21

https://github.com/macek/jquery-serialize-object/issues/24

17
billpg 3 days ago 1 reply      
A new standard for referencing a point in a JSON object? I wonder if they considered RFC 6901 and rejected it.

I personally prefer this new square bracket notation, but being a standard already gets more points.

18
skratlo 3 days ago 2 replies      
Wow, W3C at it's best again. Non-modular, non-negotiable, JSON it is, take it or leave it. Well fuck you W3C. Base64 encoded files? Seriously? What if my app workes better with msgpack encoded forms? Or with XML encoded? So you're going to support one particular serialization format, quite a horrible one, but that's subjective and that's the whole point. Every app has different needs and you should spec. out a system that is modular and leaves the choice to the user, even for the price of "complicating things".
19
edwinvdgraaf 4 days ago 0 replies      
Guessing that it's interesting when using an uniform endpoint for both forms and js-driven requests.
20
Patrick_Devine 4 days ago 2 replies      
Can we just get rid of HTML and replace it with JSON while we're at it?
21
woutervdb 4 days ago 1 reply      
> wow[such][deep][3][much][power][!]

And there goes my interest for this submission. Don't use overused memes in a submission. Liking the idea though.

16
Functional Programming Patterns
225 points by ique  18 hours ago   58 comments top 17
1
tel 11 hours ago 1 reply      
This is one of the reasons why Higher-Kinded Types are such a boon in the languages which have them. It allows you to translate "patterns" into straight-up libraries. This slideshow is good documentation for what the patterns are, but if you go use them in Haskell (e.g.) then you'll start to see that libraries are designed to completely contain that pattern and ensure compatibility between your use of it and others.

Usually this is achieved by representing the pattern exactly in the language. Usually the patterns are just maths. Usually math happily quantifies over higher-kinded types. Thus, you really want HKTs in your language.

And to be fair, Haskell does not go tremendously far in this direction. The languages which will truly profit from this are still in gestation.

2
skybrian 6 hours ago 2 replies      
These slides explain the usual functional patterns but it seems like a bit of a cheat, because it doesn't really explain how to do anything hard (dealing with time, persistence, logging, and so on).

The comparison between Slides 81 and 82 is particularly unfair because the "object soup" actually does deal with the database, SMTP, and so on and the functional version doesn't. If you add those in, you're going to get something complicated: perhaps a bunch of monad transformers or some such?

Slide 104 is misleading. In an imperative language, you can write a decorator function that logs a function's inputs and outputs, and it will have the same API. In a pure language, you can't do that because a function that does I/O has a different type. The flexibility or sloppiness (depending on your point of view) that allows you to do I/O anywhere is really a feature of imperative languages rather than pure functional languages.

3
virtualwhys 12 hours ago 4 replies      
Excellent presentation. Of the leading type safe functional languages (Haskell, F#, and OCaml) I find F# to be far and away the most accessible in terms of syntax and application.

Writing Scala in my day job currently (which, for the most part, I quite enjoy) but can see jumping ship if Microsoft's move to Linux is successful. Being able to develop and deploy F# applications on Linux with full blown Type Providers and decent IDE support? Pretty compelling combo, and that's just the tip of the iceberg.

4
adwf 13 hours ago 0 replies      
I quite liked the types section, particularly the bit about making illegal states unrepresentable so you can enforce business rules, eg. validating email addresses.

One of the things I'm always thinking when people talk about the merits of various type systems and the problems they solve is: "But I don't have those problems". However, there are a few good examples in there that opened my eyes a little and I'll give type-centric programming a go on my next project. Not necessarily solving problems that I have, but certainly presenting a different, hopefully clearer, way of writing some functionality.

5
dschiptsov 12 hours ago 2 replies      
Some guy almost 20 years ago argued, that if you end up with a bunch of "design patterns" then your language is not good enough.)

http://norvig.com/design-patterns/design-patterns.pdf

6
zniperr 14 hours ago 1 reply      
A good read, I especially like the parts about error handling and maps/applicatives. They are well-illustrated and tackle some difficult common problems I had shortly after I started using functional languages.

The part about functors/monads/monoids is also nice, although I feel like it would be better with the accompanying talk to bind it together a bit more.

8
taeric 10 hours ago 0 replies      
Ok, I'm sure the slides get better as they go on. But what the hell? The difference between the patterns that are compared and contrasted are... well, tenuous, at best.

Seriously, it gives off the impression not that these are going to be better patterns. But that someone simply has a bias against "patterns" as they are promoted in Java and then rails against it saying that they are going back to the root of the word patterns. Ignoring that this is the same path.

9
1971genocide 4 hours ago 1 reply      
I Really found the book "Learn you a haskell" to be an really fast way to get functional programming into production.

I did not however continue to use haskell since it doesnt have key libraries I need.

I instead adopted livescript,underscore into javascript and was good to go.

10
mercurial 5 hours ago 0 replies      
Interesting but not always correct.

Eg: slide 64 encourages the reader to "Using sum vs inheritance", and then goes on to show the "good" algebraic datatypes (no behaviour, just data) vs the "bad"... multiple class implementing the same interface (which I wouldn't call inheritance).

11
robert_tweed 10 hours ago 0 replies      
There's a book with the same name plus "... In Scala and Clojure". It is based on the wrong sort of patterns (trying to shoehorn GoF into FP). This presentation is much more what I had hoped that book was going to be.
12
KurtMueller 12 hours ago 3 replies      
I am currently taking EdX's Intro to Functional Programming mooc, taught by Erik Meijer (with his crazy shirts), which uses Haskell to teach functional programming concepts.

I am wondering if there are any other good resources for teaching the functional programming paradigms. Anybody care to recommend me some resources?

Also, I mainly work with Ruby and Javascript in my full time job. Currently, in school, I use Java (in the context of Android, which is on Java 6) and Objective-C (iOS programming). If anybody has any resources regarding functional programming and the previously mentioned languages, it would be most appreciated.

Thanks people!

13
estefan 15 hours ago 0 replies      
This a good read. I like the railway analogy.

"Functional Programming in Scala" is also well worth a read as well if you're trying to learn FP... I've found it to be excellent, especially since it has lots of exercises to use for practice.

14
fdsary 14 hours ago 5 replies      
I thank the lord every day that the language I work in (Javascript) supports functions! I try to write pure functions as often as possible, so it's easy to refactor the code when I come back three months later.

But is there, except for Clojurescript, any true (like Haskell) FP language for browsers? Something that has the tools, and community to back it, so it's viable to actually make projects in it?

15
nathell 12 hours ago 0 replies      
For some reason, when I got to slide 16 I immediately thought "Scala."
16
k__ 14 hours ago 0 replies      
lol, the Patterns of GoF seemed like those of tailoring to me.
17
ExpiredLink 13 hours ago 2 replies      
Patterns exist to compensate for a programming languages lack of expressiveness!
17
The Economics of Seinfeld
217 points by danboarder  1 day ago   23 comments top 4
1
glesica 1 day ago 4 replies      
One of the creators here, happy to answer questions. This is a realllly old project, curious to know how it got submitted :)
2
bachmeier 1 day ago 0 replies      
A colleague of mine put together this site on The Economics of the Office:

http://economicsoftheoffice.com/

One of the creators of the Seinfeld site got his PhD in our department, so it influenced the Office site.

3
oskarth 1 day ago 1 reply      
This is a great idea! Well-executed too, from what I can tell after a few minutes of browsing around. I love Seinfeld and have studied some economics - the concepts are often very simple, but a lot of people seem to lack basic understanding of them. Hopefully this can bridge that gap for people who think economics is boring, theoretical, and generally nonsense (which, to be fair, is often true - but there are a lot of gems, as exemplified on this site).
4
anon4 1 day ago 3 replies      
Sued to oblivion by NBC in 3.. 2.. 1..
18
Vim.js JavaScript port of Vim
218 points by DrinkWater  17 hours ago   54 comments top 17
1
brotchie 12 hours ago 2 replies      
Nice, I had a crack at doing this a while back using emscripten, but couldn't get around that Vim's input handling is blocking.

Looks like coolwanglu has found a way around this by hacking some kind of async transformation into emscripten. I haven't looked at his code, but I suspect he specially handles known blocking libc calls. My guess is some how storing the set of stack frames when a blocking function is called so that the stack can be unwound to let the js engine continue.

Good stuff.

2
Tyr42 12 hours ago 4 replies      
Wow, it's a full vim. I was expecting to find things it couldn't do, but I ran out of things to try. Great work.

It did take a little longer than vim to load, but I guess that's expected.

3
prasoon2211 12 hours ago 2 replies      
Can someone please explain how this is different from CodeMirror vim mode? I am an emacs user and know only the basic vim commands and so, I cannot tell if there is something fundamentally different between the two implementations.
4
jamesbrennan 6 hours ago 0 replies      
This is great - my favourite part is that this works: `:!alert("Hello!")`
6
waitingkuo 7 hours ago 1 reply      
How can I do the pageDown and pageUp in my Mac? I often use ctrl-B and ctrl-F in the terminal. But it doesn't work here
7
bananaoomarang 9 hours ago 1 reply      
Although expected, it is a little clunky/slow to use. Fun to play around with nonetheless, but I wonder whether an Emscripten port of Neovim would be a little sprightlier.
8
ludamad 14 hours ago 1 reply      
Very nice. It first struck me as just a curiousity but honestly I would consider using a browser plugin like this that let me edit web forms with something like this, picking up my local ~/.vimrc. That or for the various interactive code editing tools like ipython.
9
UUMMUU 10 hours ago 0 replies      
This is awesome. I've tried other attempts in the past but none were as smooth as this was. Great work!
10
italophil 14 hours ago 1 reply      
This is really interesting. Perhaps this would allow for vim on ChromeOS without messing with the linux images (crouton) or the like.
11
jqm 14 hours ago 0 replies      
This is very cool. Enjoyed playing around w/ it. Nice job.

But one thing (for whatever it's worth) what makes vim super useful (to me anyway) is the plugins and my vimrc with custom key bindings.

(edit) On second look, it appears you can modify vimrc. Very nice.

12
bayesianhorse 12 hours ago 1 reply      
I can't wait to integrate this into IPython Notebook...
13
make3 8 hours ago 1 reply      
cool. am I the only one who gets weirdly blurry text though? win8.1 latest chrome
14
stray8 10 hours ago 1 reply      
Some way to save the file?
15
vasuadari 9 hours ago 0 replies      
Brilliant work!!
16
Theodores 13 hours ago 4 replies      
...er, don't wish to sound negative, this crashed on me. 8Gb RAM Ubuntu box with Chrome - normally a stable computer that doesn't do things like 'swap'. I might try it again on my ChromeOS box, but, right now, that is as far as I got.
17
Ecco 11 hours ago 1 reply      
Sorry for the negative tone, but what's the achievement? Emscripten has been out for a while now...
19
A Japanese-based multinational made a CD-based console once
218 points by striking  3 days ago   46 comments top 8
1
mey 3 days ago 2 replies      
I'd be interested in them doing a tear down of a FIPS 140-2 Level 3 or higher hardware security module. Basically systems designed to self-wipe on detection of tampering.
2
smtddr 3 days ago 5 replies      
I would pay money to enroll in a class dedicated to game console hacking of this depth.
3
WatchDog 2 days ago 1 reply      
Some really cool pictures and very coy comments here. Id love learn more about the work these guys have done in reverse engineering these systems.Googling combinations of "WIZ Code" and "22.050Khz wobble" didn't yield anything, not even the misinformation referred to.
4
deutronium 2 days ago 1 reply      
This looks very impressive!

Could anyone explain what the R8J32710 chip is?

I'm wondering what the data rate of bits across the bonding wires would be.

5
pjc50 2 days ago 1 reply      
Is that really a small LCD wire-bonded to the top of the chip as a live readout device? That's a nifty trick.
6
scalayer 2 days ago 0 replies      
This was a really fun read! Thanks for sharing!
7
akinder 3 days ago 2 replies      
And an EE with too much time on his hands thought waaay too much of himself
8
usbreply 3 days ago 4 replies      
Reverse engineering silicon seems to have become the new "hacking". Everyone's doing it. Perhaps its time to come up with a term to describe the hardware equivalent of "script kiddie" ?
20
Mozilla accepting Bitcoin donations
220 points by kang  4 days ago   69 comments top 7
1
Mandatum 4 days ago 1 reply      
A little offtopic, has any of the major Bitcoin heists been traced to spending yet? Would be funny to see a portion contribute to a project like this. Especially in the case of Silk Road where no one can really come forward and claim their bitcoin..
2
taariqlewis 4 days ago 1 reply      
Contributed to Mozilla for the first time ever with Bitcoin. Very fast/easy.
3
t1m 4 days ago 3 replies      
When you hit the "Donate" link, it asks you for your email addy. IANAL, but why not accept anonymous donations?
4
finnn 4 days ago 4 replies      
is anyone else seeing a broken image in the middle where I assume what should be the "pay with bitcoin" button is?

https://i.imgur.com/9oAmKDl.png

5
BrainInAJar 4 days ago 2 replies      
No Dogecoin? Requires an email address? Why not just post a BTC and/or Doge address and be done with it?
6
eglover 4 days ago 2 replies      
Not on the main donation page. If it's hidden away in a nook it doesn't count.
7
steven2012 4 days ago 4 replies      
I'm curious why Mozilla needs contributions.

Previously they were getting $300M a year from Google and they were required to spend that every year, from what I've been told from employees that I know. Everything I've heard from them is that Mozilla is a very wasteful company. They spend a bunch of money on things like boondoggles to Europe for the staff, apartments in Paris that anyone can book, employees sitting around with almost no work to do, etc. They also have really lucrative bonuses (>40%/yr) for employees that push salaries over $200k for senior engineers, so I'm just wondering why they even bother with donations? I'm assuming that their contract with Yahoo is even more lucrative than $300M/year, so they must have a lot of money to spend, why worry about donations that might only reach a small percentage of that?

21
Java for Everything
213 points by cousin_it  8 hours ago   204 comments top 47
1
msluyter 4 hours ago 4 replies      
There's the language and there's the ecosystem. A lot of negative feelings that still linger are, IMHO, directed more at some of the painful historical aspects of the ecosystem: J2EE XML configuration hell, EJBs, bloated application servers, XML for everything, JAX-WS, SOAP, ant, classloader problems, maven dependency hell, 10 different logging libraries, etc... A lot of this stuff truly sucked.

But I feel things have improved over time. Dropwizard, gradle, embedded jetty, jersey, guava, Spring boot, etc... The trend is towards minimizing configuration and overall, the ecosystem has become somewhat more manageable. I wouldn't necessarily call it pleasant, but it's better.

An as for the language itself, Java8's lambdas + streams provide significant improvements.

Compare this (Java 7):

  public static List<Integer> sortDescending(List<Integer> ints) {      ints.sort(new Comparator<Integer>() {          @Override          public int compare(Integer o1, Integer o2) {              return o1.equals(o2) ? 0 : o1 < o2 ? 1 : -1;          }      });      return ints;  }
to this (Java 8):

  public static List<Integer> sortDescending2(List<Integer> ints) {      ints.sort((o1, o2) ->  o1.equals(o2) ? 0 : o1 < o2 ? 1 : -1);      return ints;  }
(Example is contrived, since you could use the built in Collections.reverse() to achieve the same result. My main point is that we have eliminated ~4 lines (counting braces) of ceremony.)

All that said, I'd rather be using Clojure.

2
lmm 4 hours ago 3 replies      
Verbosity matters for reading and maintenance far more than it does for writing. IDEs can make the writing faster, but they can't make the code as easy to comprehend as it would be in a more expressive language. And remember that lines of code is the only proven risk factor for bugs.

Most sites are not Twitter. They're not Stack Overflow. They're not even Nanowrimo. I've watched a company spend two years, dozens of developers, and over a million in ESB license fees failing to write a site that was expected to have, at peak, 100 users/day. Their competitor had four guys writing Ruby, and was profitable after the first month. Nor are the performance advantages "permanent"; even if you use Java, you will probably have to rewrite if you reach Twitter scale, because your initial app won't be clusterable (or if it is, it's massively overengineered and your business will fail). So do it the way twitter succeeded - write the first version in Ruby, and then worry about performance when you need to.

The advantage of using the same language on both sides of a boundary are real but overstated. If you have a system with multiple components, you probably need to evolve the interfaces between them, and you need to be able to upgrade without downtime. Which means you need well-defined interfaces for which you understand the compatibility implications - in other words, you need something like Thrift. I've used Thrift even for Java-Java interfaces, but once you're using something like that it doesn't matter which language is on the other side.

Still, the library point is valid, as is the point about spending time with a language. Better to have one language that you know very well than ten in which you dabble. But by the same token it's worth taking the time to make sure that language is the very best available. I use Scala for everything, and there's plenty to learn - maybe even twice as much as a "normal" language. But if I'm focusing on that one language, I can afford to take the time to learn it really well. And Scala combines the expressiveness, clarity and scripting-suitability of Python (yes, it can be unclear if you use silly method names or libraries that use silly method names - don't do that then) with the strong type-safety and performance of Java. It's a great language in any case, but especially if you want a single language for everything, I don't think anything else comes close.

3
Osmose 4 hours ago 3 replies      
A significant amount of the article is arguing that Java for everything is better because the author and his coworkers already knows it. I can make the same argument for Python _for me_. And for my company too; we have a ton of Python developers already, so it makes sense to write things in Python if possible in case someone needs to change or improve anything.

The author also talks about how Java's verbosity is a trivial issue, and in terms of "stuff you have to type", I agree. The point isn't to save a few characters to type. To me, the problem with Java's verbosity is that it _impedes understanding_. The excessive notation required by type declarations and generics and so on are visual noise that distract from what the code is doing.

There are some valid points raised too, such as concerns about Python's scalability, but that's an argument for _choosing the right tool for the right job_, which, while mocked at the beginning of the post as a way to avoid an interview question, is still good advice. For a lot of projects, Python is fast enough to handle the expected processing, has an ecosystem with libraries that handle all of the things the project might need to do, and is portable enough to run on the platforms necessary. For some projects, it fails one of these, and another language may be a better choice. That's okay!

I think the best takeaway here is that it is sometimes useful to see if you can leverage your existing knowledge in one programming language by applying it to a task you don't normally use it for. By all means, write shell scripts in Java, maybe that's really useful! Or maybe write a GUI in Haskell! Transpile BASIC to frontend code!

(For context, I use Python for web development (both small and large sites), scripting, and a few personal projects like a music player or emulator. I did a bunch of Java in college and some internships.)

4
one-more-minute 6 hours ago 6 replies      
The problem with verbosity and repetition is not that it takes longer to type the code, at all. The problem is that it creates dependencies which you have to manage by hand.

Changing `Foo a = new Foo()` to `Bar a = new Bar()` doesn't seem that bad... except when you have to propagate that change through the code base. Half of Java's tooling is dedicated to solving a problem that doesn't exist in good duck-typed languages or those with type inference.

Verbosity is also a warning sign for lack of expressive power. If you have a pattern like `if (cmd == "run") run();` in multiple places in your codebase, you want to make it so that changing one changes them all. Java won't let you factor this out easily, but worse, it won't catch you when you make a mistake (better languages will either do first-class functions or pattern matching and exhaustiveness checks).

Note that this has nothing to do with static vs. dynamic; verbosity is a problem that can be solved in many ways, but it is a problem. The author also spends a lot of time equating statically typed with fast; well, there are plenty of very fast dynamic languages.

There certainly are reasons to like Java, but these aren't them.

5
linuxhansl 2 hours ago 0 replies      
Committer to Apache HBase here:

I agree with the author on some level. All of HBase and Hadoop (except for a little bit of native stuff) is implemented in Java.

I found that to be + and a -.

Java is easy to understand and to follow, lends itself very well to large-team development, and performs well in most situations. The alleged verbosity I do not mind. I have tools, and well structured code is easy to follow.

Java (or the JVM really) does have limits, though. What I miss by far the most are simple pointers and access to the RAM outside of the Java heap. Then again I am working on a low-latency database. Yes there are DirectByteBuffers but they are annoying to use, just gimme a struct (some IBM folks are working on a proposal for that for Java).Everybody in this space who is using Java invents their own off-heap code to avoid heap allocations and the inevitable garbage collections. G1 will make it better, but not eliminate this.

I still user other tools: Python, Ruby, Bash (yes), JavaScript, C/C++, etc, and I disagree with the author's premise. It depends very much on what I attempt to do which language/ecosystem I will use for that.

Edit I: In the end I prefer to versatility of Java over the limits I face with it. Would I write a Kernel in Java: No. At least not with the current JVM.

Edit II: We should not conflate Java with the JVM.

6
zwetan 5 hours ago 1 reply      
I completely buy the idea "write everything in one language", even if I do it with a different language for completely different reasons.

In general I think "use the best tool/language for the job" and anyway any tool/language will have pros and cons, nothing is perfect.

My context is I was a big ECMAScript fan, then I moved to use something called ActionScript 3.0 and there I just found the "right balance" between verbosity, correctness, speed, etc.

That's the work part, I use AS3 and AIR to build mobile app for iOS/Android.

Then there is the hobby part, in 2006 Adobe open sourced their ActionScript Virtual Machine (AVM2), I started to work on it (OSS project RedTamarin) in 2008 because I had this silly idea "it would be fun to run AS3 on the command line".

So, few months ago, with a not too bad release of this RedTamarin project, in the spirit of "use your own dog food" and trying to push the limit of what can be done with this open source project, I kind of decided to use only AS3 for all development, either work or home.

I don't do that because I think it is better or faster, but mainly to see how much I can reuse in code and logic, and if ultimately it make things easier for me (as any dev I'm lazy).

The result is quite interesting, so far I can run AS3 in shell scripts, as server side CGI, as command line tool, and tons of different use case I would have not necessarily explored if I didn't forced myself to use the same language for everything.

My point here is the same way you can learn a different programming language every few months/years to learn new stuff, there is also a value of forcing yourself to use only one programming language for everything.

In my case it forced me to explore some context deeper instead of taking them for granted, sure some ppl could say you waste your time because you're reinventing the wheel, but I would argue you learn a lot more when you try to know all the little details that make a wheel works :).

7
ridiculous_fish 4 hours ago 1 reply      
You have to appreciate bombastic statements like this for forcing you to confront your assumptions. "Everything in Java? Even a kernel? That's absurd." you think, and then wonder what makes it absurd, and realize that it could perhaps be done with some modifications, and remember Singularity, etc.

But on the other hand, this is well trod ground. Everything WAS going to be Java. Remember picoJava, the bytecode-native processor? Remember Cocoa Java, for OS X desktop apps? Remember HotJava, the pure Java web browser? These things were tried, and they failed. Performance issues, especially around startup and memory usage. The weightiness of the JVM, what Jobs called a "big ball and chain." The weird foreignness of Swing apps. The generalized misery of applets. Etc.

So honest question: what's different this time?

8
overgard 1 hour ago 0 replies      
You know, one of the things I notice about Java adherents: they think programming is hard. There's this weird conservativeness to their culture. The only times I've worked on Java teams, I felt like the biggest hurdle was convincing people that things could actually be done. Its like they're convinced that every programmer sucks.

I don't even hate java the language. It's far too mediocre to even bother to hate. I just dislike java the community. It's so depressing.

9
exabrial 5 hours ago 1 reply      
If you're actually using good tools (Something like IntelliJ or Eclipse, and something like Maven or Gradle), and you use sane variable and function names (business oriented instead of tech oriented) verbosity is one of the worst arguments against Java.

The verbosity, static typing, etc, of Java contributes information to the "next guy" about developer intent and is incredibly valuable.

10
jim_greco 5 hours ago 1 reply      
The biggest thing for me is that the tooling around Java makes maintaining large projects extremely easy. Being able to refactor hundreds of files in a few keystrokes without worry lets me sleep well at night. It's certainly a lot faster to get up and running with a dynamic language, but the initial build out is a small percentage of the overall time you are going to spend with a codebase.

I've also built just about everything in Java from HFT algos, to an exchange, to a web server, to thick clients so I have an idea in my mind about how to solve any new problem that comes up.

11
lkesteloot 5 hours ago 3 replies      
It's not so much that Java is great at everything. It's more like it doesn't suck at anything. Every other language has, somewhere, a deal-breaker for some particular use. I've not found one for Java. And Java's biggest downside, frankly, is that it hasn't attracted fresh young talent in a while, so it doesn't have really hot frameworks and libraries.
12
jrochkind1 6 hours ago 0 replies      
I am more convinced by the part "write everything in one language", and less convinced that Java is a great choice for that language.

On the other hand, if you're going to write everything in one language, you do need a language that is capable of doing nearly everything, and doing it well. And I see how Java is a reasonable choice.

But yeah, I think "pick the right language for the job" (and the corresponding "when all you have is a hammer...") under-estimates the extent that the right language for the job is the one you know best, because you'll be able be most effective in it.

13
fenesiistvan 5 hours ago 4 replies      
Java is perfect also for client side.We have a client app (a complex VoIP softphone) with different codebase for all platforms (C++ for windows, java for android, ObjectC for iOS). Right now we are in the way to reduce all this in one single codebase written in Java and the user interface in html/css/javascript, so the user interface is always running in a webview.

-Java for windows desktop (there are pretty installers which automatically download and install the JRE if not present)

-Java for MAC and Linux desktop (same as for windows desktop. the same installer tools can generate also Linux and MAC packages)

-Java for Android (with a very minor conversion for which we already wrote a converter app)

-Java for Web (currently using a java Applet which works perfectly. We plan to use GWT to transform to JavaScript in the future)

-Java for iOS (will see)

This way we plan to cover 99% of all devices with java only (with some minor transformation for some platforms).What is your opinion on this? I am in the right direction?

14
ionelm 27 minutes ago 0 replies      
The argument can be made both ways. One can say that Python is better cause readability.

Many can give examples of successful or failed projects in both languages but it's just conjecture.

The only correct way to look at language choice, and the only objective one, is to use the language you are productive in. The best language is the one you master.

15
chadrs 4 hours ago 2 replies      
This whole "expressive vs. performance" is a false dichotomy. Languages like Scala and Haskell are performant like Java and expressive like Python. Not to mention the work being done on JIT compilers by V8/HHVM/PyPy that are helping to close the performance gap for dynamic languages.
16
rcarmo 5 hours ago 1 reply      
I've mostly embraced the JVM (as opposing to hating it), but I find myself reaching for Clojure a lot more than Java (although I have an Android app that I'm tinkering with). I find that an IDE helps (I use NetBeans for pure Java), but whereas I can hack just about anything in Clojure, Python or Go without much hassle, Java slows me down for some reason - I suspect it's the humungous class hierarchies and the time required to find whatever I need to accomplish simple tasks.
17
bonobo3000 7 hours ago 1 reply      
This is exactly how I feel about Scala now.

I really wanted to like Java because of the ecosystem and the JVM, but there ARE a few warts that you will face everywhere - verbosity is one, all the Spring stuff using annotations to wire up dependency injection and AOP and whatnot is another.

Scala has the whole JVM ecosystem, static typing and forget about DI/AOP/OOP patterns. Feels like best of both worlds for me.

18
Mithaldu 6 hours ago 1 reply      
He learned something that most good Perl programmers learn fairly quickly:

The interpreter/compiler is just the VM; the real language is the combination of all libraries available for it.

19
mythz 3 hours ago 2 replies      
What he said, but C#.

C#'s one of the most versatile languages which can target most of the popular platforms, e.g: iOS/Android (Xamarin), WindowsPhone, Windows, Linux, OSX, Silverlight, PS4, XBox (announced), Unity3D and NaCL.

C#/.NET's biggest weakness of sub-optimal cross-platform support should also be resolved in the near future now that .NET's compiler, core runtime and class libraries are OSS and with Microsoft announcing support and plans to release official distributions for Linux and OSX - so .NET will finally have multi-platform support of a single code-base resolving earlier issues or running .NET on OSX/Linux due to different impls.

20
nickbauman 3 hours ago 1 reply      
In real-world benchmarks in a real app I have tried to make Clojure slower than Java. I can't. In rare cases Java will beat it in insignificant ways in insignificant amounts, but I found that Clojure sometimes beats it in significant ways because of the runtime's tendency toward laziness. Furthermore, Clojure is a very dynamic language that can leverage every library Java has plus all its own.

As a result I will not program in Java willingly. There's just no reason to do it. Not with at least one language that's far better in real, quantifiable ways. There are other languages that run on the JVM that could tell a similar story. Unfortunately those are not Jython or JRuby.

21
harvestmoon 6 hours ago 0 replies      
Java doesn't seem too popular here but used right it can work pretty well, imo.

For instance, I use Java for the backend of a name generator web app. It's astonishingly fast and displays results almost instantaneously despite running a good amount of backend calculations.

This speed became an issue because you'd push the go button and the names would update - but it seemed like nothing happened. So I ended up adding an artificial delay twice (the first time it wasn't enough of a delay).

On the other hand, its structure and methods can at times be frustratingly complex.

22
prohor 6 hours ago 7 replies      
I would just add one more thing - I doubt there is another language where you write native apps for Android, iOS and Web sharing 70% of the code: http://arstechnica.com/information-technology/2014/11/how-go...
23
yawboakye 1 hour ago 0 replies      
The article could be appropriately titled to reflect this wisdom: solve every problem in whichever language is your strong suit. It's not always Java, and arguing that Java is the one-size-fits-all would earn you few friends. For web services the importance of the language is diminishing with solutions such as cache, messaging queue, etc. I'd go on a limb to say getting your cache right is the most important web service optimization.

All statements of the form "it's relatively faster to write programs in language Y than language Z" are incorrect because it disregards important parameters such as programmer experience with languages Y and Z, and whether or not it's a comparison between 2 different programmers.

Also there are some performance gains that only pay off at Twitter or Facebook scale [1]. Sometimes shaving milliseconds costs time but rakes in little to no benefits.

[1]: http://carlos.bueno.org/optimization/

24
ks 4 hours ago 1 reply      
> Map<String,User> userIdMap = new HashMap<String,User>();

1.7 introduced a simplified version:

Map<String,User> userIdMap = new HashMap<>();

25
applecore 1 hour ago 0 replies      
> You can complain all day about public static void main, but have fun setting up 500 servers. The downsides of dynamic languages are real, expensive, and permanent.

Love this quote. This is a thought-provoking article, even if you don't agree with everything as stated.

26
mataug 2 hours ago 0 replies      
I've been writing Python and Java(Android) side by side for a few months. I feel that for all the advantages of initial speed that python offers it takes a lot away. Especially in large projects. I spend a significant amount of my python time trying to understand Types, and if those areas are not covered by tests then I'm Fked, I'll have to spend hours trying simulate the exact conditions of how an error occurred.

Don't get me wrong, I love python, but writing python requires a lot of restraint and experience. Novice programmers who build a python code base just screw things up, especially those who don't yet understand the value of readability and maintainability.

I'd much prefer novice code on Java than on Python.

27
mangecoeur 6 hours ago 3 replies      
You have to admit that for coders, the joy of writing helps a lot for job satisfaction. I write both Java and Python (for very different applications) and I just always feel like Java makes it hard to write anything elegant almost on purpose. The proliferation of huge frameworks and FactoryFactories clearly doesn't help.

I think you can underestimate the value in actually enjoying writing - I'm just more motivated every day I can write elegant python code. Conversely every day I spend fighting Java for an elegant solution and winding up inevitably with something a bit half-arsed because of some limitation in the language I just feel grumpy.

28
x3ro 5 hours ago 0 replies      
The headline does not match his conclusion at all, in my opinion. What he's trying to say is that "dynamic scripting languages are slower and more error-prone than compiled, statically typed languages". And to determine whether or not a scripting language is ever a good idea from 3 or 4 examples does not seem like a good idea. E.g. Lua seems to be a pretty good fit for the WoW UI scripting stuff and EA used Python (apparently successfully) for their Sims 4 scripting (sorry for it both being examples of games, those were just the first that came to my mind :D)
29
zmmmmm 4 hours ago 0 replies      
I think that the argument about verbosity is a subtle red herring. It's not that you just have to write slightly longer words to do the same thing. It's that you can't do the same thing at all because the underlying constructs of the language are lacking in key powers of abstraction that make it easy to simplify the problem you are trying to solve. You end up inventing whole class hierarchies and patterns to emulate things that are either just built into other languages or are easy to achieve because they offer more powerful language features (like reified generics, etc.). Java 8 helps a lot, but there are still fundamental weaknesses.

Having said that, I'm still a fan of Java. There's no other language that I can sit down and reliably navigate through someone else's code in as easily - and that comes partly because it's powers of abstraction are so limited.

30
einrealist 6 hours ago 1 reply      
> Im even taking this to an extreme and using Java shell scripts.

Having a strong Java background, it is a pleasure to write Groovy for shell scripts.

I like the blog post. Whenever I looked into other languages/platforms, I found the "tradeoffs" of Java (as pointed out by the other languages/platforms) to be less important for me. Java/the JVM may be evolving slowly. But it evolves and does it in a reasonable way (JCP, frameworks).

31
jimbokun 2 hours ago 0 replies      
Ok, now your boss asks you to write an iPhone client.

Or web client with a lot of logic in the browser.

Or even a custom, native windows client. (Ok, Swing or SWT, but, ...really?)

"Language X for Everything" is simple not possible, regardless of the value for X.

32
grannyg00se 4 hours ago 1 reply      
"With few exceptions (such as parsers), unit tests are a waste of time."

I was in full agreement aside from this.Unit tests are more than just a substitute for static typing.

33
leke 5 hours ago 1 reply      
I like how the author made the point about the commenting. I never realised it until I started my work training at a big company. I'm reading my colleague's C# (ASP.NET MVC) code and find it requires no commenting to understand even though I started learning C# pretty much on the job.

I then had to laugh when I needed to explain some JavaScript (and jQuery) I wrote to him and exclaimed, "What the hell is this doing!". I had to get back to him a few minutes later on.

As for Java and C# on the web. I just wish it was more accessible to smaller companies. 100% of my freelance stuff are using cheap hosting that rarely support anything more than Perl/PHP.

34
swah 2 hours ago 0 replies      
Do Java/JVM folks miss the simple deployment of Go? I haven't used Java for a while (used Jetty to deploy), but words like "application servers" are the things that make Java sound "heavy".
35
songco 1 hour ago 0 replies      
It's a great idea to make java run like a script...
36
S4M 5 hours ago 1 reply      
This post makes me wonder, what about Jython? I don't use it, but it would be a nice fit for the OP (writing performance critical code in Java, and use Jython as a glue).

Are there any drawbacks with it?

37
tawy3 5 hours ago 1 reply      
That's where Go comes in very well in the interviews assuming interviewer also knows or can understand Go. It has short and precise syntax and the code usually doesn't need explanation.
38
CSDude 6 hours ago 3 replies      
I cannot keep my sanity when I use dynamic languages in fairly big projects. I just cannot organize my code and all the functionality good. So, I looked at the options at Java and most of them looked either very complicated(Spring) or insufficient.

I am developing a very simple framework, insipred from Sparkjava and Play Framework: https://github.com/mustafaakin/WebOM It basically maps either HTTP requests or Websocket connections to Java objects with typed parameters.

39
otikik 5 hours ago 0 replies      
...For a very personal definition of "Everything".
40
jpiabrantes 5 hours ago 0 replies      
It's easy to make python faster, you have PyPy, you can even program everything in python and then make a simple C code for the bottleneck and wrap it with python.

Php it's another example, Facebook uses php and it made changes to its compiler in order to make it way faster.

So bottom line, if people feel better writing in Python let's write Python and improve it to make it faster.

41
jafaku 5 hours ago 4 replies      
Does anyone know a good starting point for learning not just Java, but how to install everything I need? I consider myself the Neo of OOP and a master devops, but every time I tried to use Java I hit a wall of unreadable manuals/guides , software impossible to install/maintain, and mixed opinions among Java devs. Like it can't be used without a dedicated sysadmin.
42
untitaker_ 5 hours ago 1 reply      
The JVM is not usable for short-living processes such as command-line tools.

Apart from the ecosystem and the language itself, it's often the reference (or only) implementation which makes it unsuitable for a particular job.

43
facepalm 4 hours ago 4 replies      
How do you even parse JSON in Java? I remember in the days of XML, there was a kind of specification standard for the xml (a specification for how to specify a specification?). From that you could generate Java classes that would correspond to the elements of the XML. But for JSON there is no such meta description, so you are stuck with manually parsing the JSON and hoping you catch all nuances?
44
mercurial 5 hours ago 0 replies      
"Java for everything, because it's the only statically type language with a fast runtime I know well".

Ok, Java is not terrible (PHP is terrible), and the JVM is a marvel of eat-your-RAM engineering, but this makes me sad, because there are only two things that can be said about Java: it's not terrible and it has a big ecosystem. There is nothing brilliant about it. It is slowly crawling toward convenient feature, but it's never going to be at the same level as a well-designed functional language in terms of correctness and readability-to-expressiveness ratio.

45
fleitz 1 hour ago 0 replies      
LOL, I spend all day next to java programmers trying to get GUIs to work in a performant manner.

Just pickup any Android device and you can see the lag, ever wonder why all the java phones have 4 GB of memory and a quad core processor just to draw a 1920x1080 screen?

46
larrys 5 hours ago 1 reply      
Having literally deciding to learn java last week for no particular purpose other than having enough understanding to be able to comprehend our software (which is written primarily in java) and prevent brain deterioration, I'm encouraged by the fact that the comments in this thread (so far) don't appear to be very negative (like when reading about php).

While I did buy a book, I wonder if anyone has any suggestions on a good java beginner's book assuming someone has "prosumer" programming knowledge (shell programming, some perl, some php, sysadmin skills and so on). Suggestions?

47
freshflowers 5 hours ago 2 replies      
The same argument can be made for any mature language with a solid ecosystem of tools and libraries.

Except the part about scalability, that's just BS. It has little to do with language and is all about architecture. Sure, at some point language can help you squeeze every ounce of performance out of the hardware (although my money would not be on Java for that), but that's only in cases where either performance is critical or the scale is so huge that saving on hardware makes a big difference.

22
Ten seconds of math
244 points by countryqt30  4 days ago   116 comments top 47
1
bvanslyke 4 days ago 1 reply      
Noticed some fun SEO hacking at the bottom of the page:

<p class="hardly-visible">puzzles calculate formula mathematics maths decimal number calculating mathematician multiply measurement probability equation division measure homework units word problem solve converting resources tessellation anxiety math problem problems convert unit ratio number trigonometry perimeter divide mental multiplication calculus math quadratic triangle teselation problems pi change equations homeschool fraction tesellation converter maths problems fractions conversion math prime mathmagic Theorem calculator percent magic homework fractol volume math math tesselation math math math mathematical statistic unit geometry math polygon square math pre-algebra algebra word statistics games area math Pythagorean fractal history trapezoid maths conversion circle numbers circle </p>

2
sillysaurus3 4 days ago 6 replies      
When I was near the end, I pressed backspace to clear my answer, and it wound up navigating me back to HN, wiping out my results.

(I hate backspace-to-go-back. It's the worst feature in a browser. Is there a way to turn it off?)

This mental math exercise is a cool and fun concept! Good execution.

3
mkoryak 4 days ago 3 replies      
I thought that maybe the ranking was real.. no its not

  function getRank(score) {    // TODO we should add a real ranking one day    var ONE_BARELY_REACHES_THIS_SCORE = 200;    return Math.floor(100 * Math.min(Math.E * score / (ONE_BARELY_REACHES_THIS_SCORE * Math.PI), 1));  }

4
mtam 4 days ago 1 reply      
After going for several minutes I gave up.

In addition to a leader board, it needs to: - Have a time limit and see who can get the most calculations done on that fixed time - or, have a fixed number of calculations and see how fast people can answer them - or, it could get faster as you progress

The calculation of the "you are better than X%" needs to be fixed because everybody in my office was better than 100%

5
danbruc 4 days ago 2 replies      
For me there is a set of calculations I can do without thinking and there is a set where it takes several seconds to figure the solution out. No smooth transition. Is it the same for you? If yes, this would make tuning this game pretty hard because it is either to easy or to hard.
6
refrigerator 4 days ago 2 replies      
Nice! I made something similar a while ago - http://www.speedsums.com :)
7
ilitirit 3 days ago 1 reply      
People should start differentiating between mathematics and arithmetic.
8
tagawa 4 days ago 1 reply      
I got redirected to the Google Play store. If I'm on Android why can't I use the website like everyone else? Please don't assume I want to install an app.
9
bramgg 4 days ago 1 reply      
I crazy love how it auto submits your answers for you, super convenient! My dad made me do similar online mental math exercises when I was younger and I always hated how clicking "next" reduced my time. Does it take into account what your settings were when it reports your score relative to others?
10
hf 4 days ago 0 replies      
On Debian (and, I'm sure other distributions of GNU/Linux)the 'bsdgames' package contains a simple program called 'arithmetic'which poses similar challenges, albeit reduced to the mostelementary operations: addition and substraction.Call as

    arithmetic  -o '+-x/'
in order to add multiplication and division.

I find it a handy supplement to 'gtypist' in orderto train touch-typing of numbers.

On a side-note: I'm surprised at how scarce such software is - pitiful as it may be.But then, the advancement of the human intellect isn'tat the forefront of our cultural conscious, is it?

11
countryqt30 1 day ago 0 replies      
New features!- difficulty increases over time- motivations on correct answers- slightly adjusted question difficulty- sliders are disabled while scoring :)

Feel free to test it and let me know :D http://www.mental-math-trainer.com/

12
laxatives 4 days ago 0 replies      
This feels like a lot more than 10 seconds. You tricked me.
13
skellystudios 4 days ago 1 reply      
Just for anyone who feels pleased with their mental maths and thinks they might be able to take on their calculator head-to-head:

window.setInterval(function(){$('#question-answer').val(eval($('#question').html().replace("","").replace("","/").replace(/(.)/,"Math.pow($1,2)").replace(/(.*)/,"Math.sqrt($1)"))).trigger("keyup")},10)

14
S4M 4 days ago 1 reply      
It's boring at some point. You should make a countdown instead: you have, say, 1 minute to answer as much questions as you can (with an possible skip button).
15
kissickas 3 days ago 0 replies      
This just showed me the need for a numeric keypad. Half of the time I spent was looking for the right keys or correcting mistypes - normally I think I'm pretty good getting $ and * every time without looking.

I think the change in performance here has something to do with never returning to the home row; I'm just completely lost on laptops.

16
shenoyroopesh 1 day ago 0 replies      
And here's a reverse-math extension. (and No funny SEO) :)

I think clicking is easier than typing.

http://reverse-math.makkajai.com

17
johnlopez 4 days ago 1 reply      
It'd be pretty cool if this actually had leaderboards, perhaps one leaderboard per set of options, limited to clusters so as to minimize the amount of leaderboards. Such as "arithmetic, multiplication+division, arithmetic and mutliplication+division, free for all"Was pretty upset to see that the result for scoring 5xx was the same as my next run of 7920
18
porter 4 days ago 1 reply      
For me there are certain mental calculations that take longer to process than others. 2 + 2 is super easy. 7+8 is not as immediate. I need a program like this that learns which calculation take me longer, even if it's just slightly longer, and then drills and drills my weak points over and over again. That would be a real mental math trainer.
19
Brashman 4 days ago 1 reply      
Does it speed up or end eventually? I stored up 150 seconds left before I decided to quit (score of 2529).
20
TrainedMonkey 4 days ago 1 reply      
Pretty cool, zombie mode morning with addition only and number limit of 30: "You scored 504. You are better than 100 %"

I am sure this will be easily beat by all the caffeinated people pretty soon.

Updated: this is actually easier with all the other options enabled because you get easy things like sqrt([4, 16, 25]), x * [0,1], and x / [1, 2] a lot. I was actually over 30 seconds on timer when I hit 18^2 question. "You scored 576. You are better than 100 %"

Updated 2: I tried raising number limit to max (1000) and suddenly life on hard mode. I got through 272/16 and 930/31, but third question 127 * 49 killed me. "You scored 64. You are better than 27 %"

21
nojvek 2 days ago 0 replies      
Suck at arithmentic. But this took me 20 seconds to write.

setInterval(function(){ $("#question-answer").val(eval($("#question").text())).trigger("keyup") }, 2001);

22
akhilkohli2005 3 days ago 0 replies      
Champion of addition

setInterval(function() {document.getElementById('question-answer').value = Number(document.getElementById('question').innerHTML.split(' ')[0]) + Number(document.getElementById('question').innerHTML.split(' ')[2]); $('#question-answer').trigger(jQuery.Event( 'keyup', 16 ));},500)

23
bybak 3 days ago 0 replies      
In my opinion giving that much freedom (all those settings) to user is not good and ruins the gameplay. I'd prefer such game to start simple and increase difficulty by itself. I find this one almost perfect: http://games.usvsth3m.com/maths/ although it lacks more levels.
24
rlvesco7 4 days ago 2 replies      
I've played with many of these. And this one is pretty good. One thing that I'd like to see is a "verbal" option in these types of apps. I have trouble "hearing" math and keeping it in my head. I envision an app speaking the problem, then you have to type in the answer. It requires both math and keeping the problem in your head. Lastly, a verbal or speaking option maps to many real world scenarios.
25
aaronetz 4 days ago 1 reply      
I actually made a mental math game for Android not long ago. The concept is different though - it's about choosing the operations to reach a target number. I would appreciate any feedback!

https://play.google.com/store/apps/details?id=com.woodenclos...

26
unholycrab 3 days ago 0 replies      
As a farmer, I am deeply offended by this game.
27
k-mcgrady 3 days ago 0 replies      
I like this. Duolingo does something similar for language practice. After you've completed lessons you can do a timed practice session where it will ask you to translate words you've already learnt. It counts down and the quicker you get it correct the more time gets added to your countdown.
28
lpman 3 days ago 0 replies      
Something similar on android: https://play.google.com/store/apps/details?id=mental.care.ac...I haven't updated it a while, but feel free to try it
29
adeptus 4 days ago 0 replies      
Was not disappointed. Was half expecting a 3 page long article about some epiphany over 10 seconds of math contemplation.
30
j2kun 3 days ago 1 reply      
Too bad it's things like this that make average people think math is little more than arithmetic.
31
userbinator 3 days ago 0 replies      
Scored 47232 before giving up...

For those who are still struggling with mental arithmetic, or kids just learning, this seems like it would be a great way to practice --- there is a a certain addictive quality to it, like "flappy bird".

32
Scarbutt 3 days ago 0 replies      
Where can one learn about techniques for getting faster at mental arithmetic?
34
SCdF 4 days ago 1 reply      
OT: I ended up being mostly fascinated with the FB and Twitter share buttons
35
bbcbasic 4 days ago 0 replies      
Good game, it has that silly 'flappy bird' style appeal that it is difficult to keep going - they should reduce the additional time given per question to go more in that direction.
36
jhonnycano 4 days ago 1 reply      
The number limit should be more granular, or even it would be nice to be able to "pin" one number... i'm thinking of studying times tables for my children! other than that, very nice
37
lukencode 3 days ago 0 replies      
A mate of mine is behind - http://numbertap.com/

Similar concept but with cross platform multiplayer.

38
_RPM 4 days ago 3 replies      
This is pretty cool but, is it a game? I can't see how solving math problems under a time limit can be useful for anything besides a math exam or some other academic test.
39
kriro 3 days ago 0 replies      
Minor bug I noticed: When the timer hit zero it went back up to 1 second and then down to 0.

FF 33.1 on Mac if that matters.

40
tomp 4 days ago 0 replies      
My score: 4785 :) (all options, number limit = 50)
41
fletchowns 4 days ago 0 replies      
I wonder if there would be any difference in the results if the numbers were stacked vertically instead of horizontally
42
chdir 3 days ago 0 replies      
Square roots should be improved, just ranges from squares of 0 to 6.
43
geonik 4 days ago 2 replies      
With default settings:

You scored666You are better than 100 %

44
0x0 4 days ago 0 replies      
"You scored: 315. You are better than 100%". Why do I think their countdown timer needs some work on MobileSafari? :)
45
3iak 4 days ago 1 reply      
got bored at 855 and let it run out, and it would seem I've bested 100% of you
46
basman 3 days ago 0 replies      
352 with all options and limit 1000. Anyone do better? :)
47
sleepychu 4 days ago 0 replies      
23
GDB tricks
177 points by luu  2 days ago   34 comments top 10
1
cataflam 2 days ago 1 reply      
These are all useful, and I would even say fundamental, commands. But, as such, these are also very basic commands, not tricks. If you're looking for something more advanced, you'll be disappointed.

I strongly suggest to anyone using gdb to just read the manual [0]. Or at least skim it quickly and find a dozen of such useful "tricks" in as many minutes. The time gained in debugging later is well worth knowing and mastering your tools.

Here's a quick summary of the article, most of this stuff is covered in the first few chapters of the manual :

1. conditional breakpoints, yes, they exist

2. execute commands each time a breakpoint is hit, yes, that's possible

3. pass commands to the program directly from gdb's command line

4. define source directories

5. debug macros with the right compile options

6. you can use the results of commands, and even define variables !

7. you can access cpu registers

8. you can even examine memory

[0] http://sourceware.org/gdb/current/onlinedocs/gdb.pdf.gz : it looks big but a lot of it is annexes at the end, or how to extend GDB with your own scripts, which can be interesting but can easily be skipped in the beginning. The important chapters to begin with would be :

- Getting in and out of gdb

- gdb commands

- Running programs under gdb

- Stopping and continuing <-- breakpoints 101, learn about conditional breakpoints (you can also set the conditions after setting the breakpoint), hardware breakpoints on data (called watchpoints in gdb), how to skip quickly (to end of function|a whole file|...), etc.

- Examining the stack

- Examining source files

- Examining data <-- very important, discover the joy of artifical arrays, casting with @ or {type}, configuring the display etc.

- Altering execution

2
lwf 2 days ago 2 replies      
> By Ksplice Post Importer on Jan 24, 2011

Heh. When interning at Ksplice/Oracle in 2011, I was tasked to import all of the blog posts from the old Ksplice Wordpress blog into Oracle's system. By hand, because they didn't want to turn on the Apache Roller API, or something.

I couldn't set a custom author for each post, so instead I changed my name to "Importer, Ksplice Post".

3
anon8r398rt 2 days ago 1 reply      
My favourite one:

    attach to the process in question using gdb, and run:        p dup2(open("/dev/null", 0), 1)        p dup2(open("/dev/null", 0), 2)        detach        quit
From: https://stackoverflow.com/questions/593724/redirect-stderr-s...

4
stormbrew 2 days ago 0 replies      
I would add the skip command to register a function or file as something you don't want the step command to go into in the future. Really handy for all those trivial operator*s you get in C++ smart pointers and such.
5
rasz_pl 1 day ago 0 replies      
"Oracle blogs is experiencing technical difficulty. We are aware of the issue and are working as quick as possible to correct the issue. Please try again in a few moments.

We apologize for any inconvenience this may have caused."

sounds like a perfect time to whip out that debugger Oracle, or upgrade to faster DB engine?

6
anarion 2 days ago 2 replies      
This lack the best option:ctrl-x a

Don't bother having a external GUI, just use the built-in Ncruses one.

7
userbinator 2 days ago 1 reply      
The one feature that has been present in almost all the other debuggers I've used, and is apparently missing from GDB, is a standard hexdump - addresses, byte values, and ASCII. It's possible to emulate this with a bunch of extra steps, but the omission of such a simple feature is surprising. All the times I've had to use GDB the feeling I get from it is "makes very difficult things easier, but makes very easy things more difficult."
8
toolslive 1 day ago 1 reply      
Seems like here's the right time and place to ask.How do I comfortably inspect variables of types likestd::vector<std::vector<boost::optional<string>>> with gdb ?
9
akshayaurora 2 days ago 3 replies      
Isn't lldb better option now? Commands are more structured.

FWIW, gdb on OSX is a pain to setup, and attaching processes is broken.

10
Codhisattva 2 days ago 2 replies      
Buried lede: Oracle uses GDB.
24
Getting Organized with Org Mode
182 points by correlr  3 days ago   44 comments top 8
1
tptacek 3 days ago 2 replies      
With a very little bit of tinkering, org-mode is pretty great for code auditing. I have a keybinding set to add bookmarks to code, and some simple tools for easily adding out-of-band notes/comments. That, plus org-mode's native todo/prioritization.
2
agentultra 3 days ago 1 reply      
I use org-mode rather extensively in my own day-to-day work. I really like the table support! I create my time-sheets from my task lists and format it for HTML export.

I even publish books with it.

It's really powerful.

3
philjackson 3 days ago 2 replies      
It's not nearly as powerful as Org itself, but I've knocked up an org-a-like at http://yipgo.com that might interest people.
4
tomjen3 3 days ago 3 replies      
I have always wanted to use org mode, but it comes down to that I use more than one computer and might want to share my todos with people who are not emacs geeks: how do you guys handle these things?
5
andyl 3 days ago 9 replies      
I've had my eye on OrgMode for awhile - it looks awesome. But I use Vim. Is there anything on Vim that compares to OrgMode?
6
nodivbyzero 3 days ago 0 replies      
I do exactly the same. Trying to replace Hansoft with Org-mode. And I'm super happy with my progress
7
morazow 2 days ago 0 replies      
I also use org-mode, mostly for writing documents. Customizing embedded code, referencing the lines and in the end publishing to beautiful pdf, html, markdown is really awesome.
8
40pdev 2 days ago 1 reply      
Question: is it worth learning Emacs in order to use Org mode?
25
New optimizations for X86 in upcoming GCC 5.0
184 points by ingve  1 day ago   36 comments top 8
1
justincormack 1 day ago 3 replies      
Here is a more general list of gcc 5 changes https://gcc.gnu.org/gcc-5/changes.html

EDIT was looking at this for __builtin_mul_overflow which apparently are in clang already, for testing overflow of arbitrary types.

2
livemusic 1 day ago 1 reply      
Only loosely related, but I'm curious: What compiler optimizations have the biggest impact on scientific / floating point computation? Integer (audio/image) ops? With modern CPUs performing speculative execution, register renaming, and all the other magic they do, the CPU is acting like an optimizer in its own right. x64 is mostly just a byte code that gets JIT compiled at runtime. I'd be interested in seeing how much specific optimizations (including classic ones) contribute to speeding things up.
3
e12e 1 day ago 3 replies      
Does anyone know if -O3 (or -O2?) -march=native should be enough to get reasonable optimization for running on the same cpu as the gcc host? Or are one better off tweaking options manually (note, I know that knowing the details of how gcc works will always be better than not -- I'm just wondering if -march=native is currently considered stable/"good enough" from reasonable value of "enough" ;-)
4
medgno 1 day ago 2 replies      
I'm so glad to see auto-vectorization happening more and more often. However, I wonder whether a language that had built-in support for primitive floating-point vector types (e.g., GLSL's vec3, vec4, mat3, mat4) could help the compiler with performing these sorts of optimizations.
5
janvdberg 1 day ago 3 replies      
As this is the number 1 story on HN now: can someone explain what kind of improvements we will see in day to day use from this?
6
veselin 10 hours ago 0 replies      
One thing that is not clear to me is if OOP code such as copy constructors will benefit from using the vector registers. Just having vector copy of objects may turn out to be a big difference.

Otherwise examples with array of size 4 elements are nice to show, but in most of these cases it is also easy to use intrinsics.

7
ape4 1 day ago 1 reply      
Competition (with clang) is good.
8
runeks 5 hours ago 0 replies      
Will this work for AMD x86 CPUs as well, or only Intel CPUs?
26
Git v2.2.0 released
185 points by pentium10  3 days ago   17 comments top 5
1
to3m 3 days ago 0 replies      
The fast-export --anonymize item is interesting. I've used a few tools professionally that I've been unable to feasibly report some bugs for, because any time I produce a log file (or whatever) it's filled with file names or email addresses or function names or code snippest or paths or whatever. Or if it's an example file, it contains copyrighted information that one can't just go giving away to 3rd parties.

Had there been some kind of anonymization option, on the other hand, there'd have been no problem. As it is, I just have to produce some hand-wavey bug report, that's as accurate as I can make it - that then presumably gets put on the shelf with all the other random unclassifiable oddities that nobody has time to look at properly. Because they're too busy dealing with the bugs that actually came with data.

(Of course, sometimes the data itself is the problem, and then this wouldn't help. Then other times, the system in question has faulty RAM. This wouldn't help with that either.)

2
andrey-p 3 days ago 1 reply      
I love the slightly anthropomorphized language used in this.

> "git archive" learned to filter what gets archived with a pathspec.

> "git mergetool" understands "--tool bc" now

> The pretty-format specifier "%d" [...] gained a cousin "%D"

3
Mithaldu 3 days ago 3 replies      
And once again there is a need for a friendly reminder:If you release a bit of software and wish the audience to pay more attention than they would to any average maintenance releases:

Put something in the title of the release announcement to explain what makes this one special.

Try to do it in a way that makes sense to someone who rarely ever even uses your software.

4
Already__Taken 3 days ago 2 replies      
And still the windows build remains 1.9.4. Am I missing something?
5
javajosh 3 days ago 2 replies      
And yet on OSX Yosemite:

   $ git --version   git version 1.9.3 (Apple Git-50)

27
DragonFly BSD 4.0 released
189 points by fcambus  4 days ago   49 comments top 13
1
joshbaptiste 4 days ago 1 reply      
Out of the BSDs, I would say DragonFly is the most innovative. Its implementation of virtual kernels, HammerFS, thread scheduling via message passing and it has been rock solid as an NFS file server, serving all my local media to other *nix nodes on my LAN. Wikipedia gives a great rundown on the innovations and why Matt decided to fork.

http://en.wikipedia.org/wiki/DragonFly_BSD

2
fcambus 4 days ago 1 reply      
Also worth mentioning, BSDTalk has an interview with Matthew Dillon about the 4.0 release of DragonFly BSD : http://bsdtalk.blogspot.com/2014/11/bsdtalk248-dragonflybsd-...
3
ash 4 days ago 2 replies      
"The drm/i915 driver is now mostly based on the Linux 3.8.13 implementation and is no longer similar to the FreeBSD driver. Many Linux APIs and data structures have been implemented in the DragonFly kernel in order to reuse as many parts as possible of the Linux drm/i915 code without modifications."

I was wondering how did they deal with licensing issue. I thought Linux drivers are all under GPL. And DragonFly is (obviously) under BSD. Then I've noticed gpu/drm/i915 has a permissive (MIT?) license. E.g.:

https://github.com/torvalds/linux/blob/master/drivers/gpu/dr...

Is it true for everything else under gpu/drm directory? What license does DRM have?

4
tiffanyh 4 days ago 1 reply      
I'd love to see these 2.5 year old performance benchmarks re-ran.

http://www.dragonflybsd.org/performance/

Does anyone know where I can gain the benchmark config/setup so that I can re-run myself?

5
adventureloop 4 days ago 0 replies      
This is great news, the DragonFly project keeps doing really interesting things. The interview linked elsewhere in the thread give a good overview of how the project is doing. Matthew Dillon mentions in the interview that DragonFly will be able to be much more than an experimental operating system.
6
datashovel 4 days ago 2 replies      
This project has intrigued me for a long time. I seriously believe it could eventually become the premiere BSD-flavor OS. Although given all the low-level changes they've made it may not be easy to "label" it BSD in the future.
7
justincormack 4 days ago 3 replies      
The first OS to drop 32 bit support, thus eg fixing the year 2038 problem the easy way. Not sure if any others will though, at least not until arm64 is more widespread.
8
mhd 4 days ago 0 replies      
The graphics support sounds neat for (developer) workstation usage, hope it gets at least a basic suspend/hibernate support soon to complete the picture.
9
tiffanyh 4 days ago 2 replies      
What single feature/change caused this to be a major release as opposed to a minor release?

In reading the OP link, nothing in particular stood out to me.

(Please don't take offense to my statement. The changes are all great. I'm just typically use to major releases to be when something foundational has changed and I'm just not seeing that here)

10
Nux 4 days ago 0 replies      
Wow, nice set of features. It's time I checked Dragonfly BSD again!

http://www.dragonflybsd.org/features/

11
forkandwait 4 days ago 3 replies      
Does anyone know if DragonFly's code gets merged inro the FreeBSD codebase?
12
jrobn 4 days ago 3 replies      
Apple has a lot invested in Darwin, but DragonFly BSD would be a nice foundation for OS X.
13
ams6110 4 days ago 0 replies      
Really nice to see DragonFly is still alive and progressing. I tend to like OpenBSD but choices are good!
28
Ask HN: I've learned a programming language how do I solve problems with code?
186 points by bnb  2 days ago   99 comments top 70
1
ChuckMcM 2 days ago 3 replies      
Excellent question for a Friday. Coding is like welding, how do you find two pieces of metal that need to be joined? Generally the answer is visualize something that could exist, but does not exist, and then fill in the parts that need to be there for it to exist.

What you need at this point are a series of assignments which are self-contained problems with known solutions. The assignment 'create a web server that displays "Hello World"' is an example of one.

Here are some more:

Create a web site that allows a person to identify what would be an 'affordable' mortgage. (or flip it, shows them how much they need to save each month in order to retire). These are both applications of the compound interest / annuity calculation, but built in such a way that you can pick different parameters to see the results. Pick an interest rate, or pick a home value or retirement amount.

The goal of that assignment is to have you create a web site which has a built in formula (logic) which can be manipulated by user entered data.

Next assignment, build a web site that collects data about a particular commodity that changes day to day (could be a stock price, could be oil, unemployment, could be Eve online credits, what ever), then plots that data on a graph. Allow the user to annotate the graph by date with specific events. You will find the d3 library helpful here. Once annotated allow the annotated graph to be shared by URI.

The goal of that assignment is to get you to store data over time, use third party APIs, and provide a way of getting to a particular state based on arguments in a URI.

Now for third assignment, create a market site for three commodities, we'll call them 'stone', 'wood', and 'sheep'. Have a system random number generator periodically generate one or more units of one or more commodities. Simultaneously create a Sudoko board such that the first player to solve the puzzle gets the commodities. In the Market people can buy and sell commodities, the market creates a currency for recording those transactions. Players with a specific quantity of individual commodities can produce a 'product' and that product adds to their 'production' score. Rank all players by the quantity of currency in their account and their production score.

The goal of that assignment is to create a fun market simulation game that echoes some of Settlers of Catan and gives you something fun to put into a Show HN posting.

Bottom line, practice problems. Then when you, or someone you know says, I'm trying to do this ... you can tell them you can do it or not.

2
mulander 2 days ago 3 replies      
Hi bnb,

I started programming around 20 years ago - self taught and experiencing the same problems as you in the early beginnings.

I made mistakes when I started

- jumping around between languages

- thinking I couldn't grasp something

- jumping from one tutorial to another, and another, and another

- I wish I started learning algorithms & data structures earlier

- I wish I took time to dive deep instead of rushing to getting something working

What was my breakthrough?

I got a job in social assistance - it was mostly sitting at a desk and distributing food supplies. This left me with most of the day unfilled with errands and a PC in front of me. I installed Perl on it and started learning, digging deep into every bit of the language.

- Learning how the interpreter works

- Reading the perldoc for every module I used, every function I called

- Writing small scripts to help with my then daily tasks

- Writing code every day, even for stupid one off tasks or things I wanted to try

Three months later I got my first job as a Perl programmer - mostly doing web interfaces, marketing mailers & web scrapers.Having learned Perl to the level when the language itself wasn't getting in my way it was far easier to grasp additional concepts:

- programming paradigms

- algorithms & data structures

- abstraction

- documentation & good practices (version control, testing etc.)

This was a major stepping stone for me. Picking up any other programming language, framework was a breeze since then.I worked at a corporation doing Oracle PL/SQL for seven years. I programmed in Ada, Ruby, Perl, Python & JavaScript professionally in long term employment. I did contract work for C, C++, Java. I played with Common Lisp, Scheme, Prolog, Erlang & Smalltalk (mostly when I was hospitalized for a long period of time) and now I'm working with a start-up I co-founded where I'm doing Python, Ruby, Javascript, C, Go and recently some Dart.

Don't let anyone tell you that you're limited in any way - most of all don't think it yourself. The only limitation is what you want to achieve.

Recently I got really interested in OpenBSD and would really want to be involved in OpenBSD development.

Here's how I'm tackling this specific problem now with hindsights to the mistakes I made when starting as a programmer.

1) Pick one project

This is OpenBSD in my case - should be a heavily developed framework, library, application in your case.

I ignore all the OpenBSD vs X articles, post whatever. I made my choice.

2) Follow it

Subscribe to the mailing lists, join the IRC channel - consume news & changes about the project.

Don't feel bad when you can't keep up! 20 emails per day? Try to read a few of them and leave the rest for later - just keep at it.

3) Follow the code

Take a look at each code change made to the project, try to understand it even if it's over your head.

4) Run it!

Changes were made? Pull them in, run them.

5) Poke around

Try introducing your own changes. Hit a bug? Try to trace it down as much as you can & fix it. If you can't fix it, report it upstream.

6) Make your own

You want it to do more? Add it, or at least give it a good try.

Don't know how? Still try! Even if you just end up breaking stuff you will learn!

7) Rinse & repeat

Until you feel confident enough to go in on your own - though you rarely are completely on your own. Don't be afraid to ask for guidance & help. Just remember that it's always nicer to show people that you tried on your own (and documenting that) before going public with a help request.

So this was a wall of text, hope it helps you at least a little bit :)

I mostly work from home on my own schedule so can devote a few hours spread out throughout the day. If you really want to learn and need a helping hand in the early steps or someone to bump ideas against feel free to catch me on freenode @ #hncode.

3
jastanton 2 days ago 1 reply      
There are a lot of good answers here. What launched me into development when I didn't even know to program (so one step behind you) was that I found a problem I had personally had and looked for a way that could solved it. It turned out it was programming. The reason this was so effective was I was already passionate about the problem before I even knew what programming was. Then I discovered programming was the right approach, so I learned the tools to get the job done, then iterated.

That _passion_ was a HUGE motivator, in fact i didn't even like programming really was when I solved the problem, but I liked the result. I realized later how many problems could be solved that programming was the tool for the job so I eventually learned to program. But that came after I found the problems I was passionate about.

I find later that this approach was very fulfilling and now I am reading heavy textbooks and doing jobs I thought I would NEVER do because I really like solving problems. But I never could have seen myself doing this 10 years ago.

Now you're follow up question might be, how do I find my passion for this tool I have. Doesn't that now feel like an awkward question? I have a tool, I don't know why I have it, but I want to use it on something. There must have been some reason why you learned how to use this tool. What made you say "wow, how was this done?", or "I wish I could just do X" Try to recreate whatever it was that made you first look up "how to learn javascript programming" in google. If you are still stuck, then you might take to some of these other answers. Browse github, visualize something that could exist and work backwards, read other peoples code etc... but where all of them will fall short and where I suggest you take with yourself is that nothing will kick you on the curb harder then doing something that you're not passionate about.

The number of times I quit a program half way through because I lost the passion was A LOT! I felt miserable about programming for years. I thought I didn't have what it takes and beat myself up about it a lot. I was admittedly ambitious. Some things that could have helped:

* Smaller problems. Something you may not be able to control.

* Breaking your goals up into smaller chunks so you get rewards often.

* Working with someone else. Think of it like a running buddy, or a workout buddy.

* Being forced to do it. Get a job in programming, if someone realizes on you, and you feel that heat under your butt you'll probably end up doing it even if you loose the passion temporarily, though you should stop if you never get the passion back, but give it some time.

* Teach someone. You learn very quickly if you try to teach someone else. Especially if you try to force your brain to think of ways to find your passion. It's a good chance it will spark some passion into yourself as well.

Good luck, I hope something I said helped spark something in you and I hope you can find your passion! Or learn that this passion isn't for you. Someone once said that programming is 90% frustration and 10% elation. That gets you through that 90% my argument here is your passion to solve the issue. If you have no passion that 90% is going to be hell. But stick with it because it will take time! Good Luck!

4
PeterWhittaker 2 days ago 1 reply      
Don't start by trying to solve a problem. That way lies madness.

(The problem is that your mind, your approach, needs to change, and that change comes with practice and time. And practice always starts with the simple, the controlled, the repeatable, not the full fury of all skills brought together in a high pressure win-or-lose moment.)

Computers are nothing more than repetition machines. Start by writing code to do things that you yourself now do multiple times per unit time.

Start small. Simple things. Let the computer handle the repetition for you, no matter how simplistic and rude and hacky your solution.

Then notice how program A and program B, written to repeat different procedures, have similar processes or structures.

Generalize A and B to make a C that does both.

Do this again for other processes. Over time, your approach will shift. You will notice patterns: Patterns of process, patterns of structure, patterns of relation.

Then you will start solving problems. Only afterwards will you realize you have done so.

(I started coding shell scripts for anything I had to do more than twice - or anything that required "too many characters". I got tired of typing "ls -alt *|head" so I wrote nwst to do it for me. Then I added a numeric option to nwst to control how much head wrote. I got tired of writing "find . -iname" so I wrote fndi. Etc. Etc.)

5
karangoeluw 2 days ago 0 replies      
That is exactly why I made this collection of problems: https://github.com/karan/Projects

> A list of practical projects that anyone can solve in any programming language. These projects are divided in multiple categories, and each category has its own folder.

Feel free to also look at other people's solutions (many in JS): https://github.com/thekarangoel/Projects-Solutions

6
richardknop 2 days ago 0 replies      
Most people have already given you a very good advice.

I can tell you what I did many years ago. When I learned my first programming language, I decided to create my own CMS. I was still in high school, around 15-16 years old so it was just a fun project for me.

Imagine a simple version of a Wordpress. An admin area where you can add new posts and tag them. And an index page where the posts are displayed in a descending order with a pagination.

This will teach you basic ideas about how to store data in a database, how to work with forms etc, how to retrieve the data from the database and display them in a structured way (templates).

Ok, let's make it little bit more challenging. users can click on individual posts and add comments. Once I got my hands dirty and created something simple, I started adding more functionality to satisfy my newly acquired thirst for knowledge.

Each new problem I solved, no matter how trivial, motivated me to go t a next level and learn more.

Let's say users have to register in order to post comments. This will learn you how to create a basic authentication system, how sessions and cookies work, how to safely store passwords in the database, maybe add your own custom catcha element on top of it.

Next, I moved on to a new feature. I wanted to be able to upload pictures from the admin area and be able to insert them inside posts. Images should also be resized into multiple sizes (thumbnail, full size etc).

You can see that what started as a very simple project can actually grow more and more complex and you can learn a lot.

After I finished my CMS, I went on to a new project, I wanted to created my own text editor and a simple image editor (imagine MS Paint). Did both of those and again learned a lot.

After that, I went even deeper and created a fairly complex social network from scratch. Although this was the first piece of code in my life I got actually paid for so it probably doesn't count.

What I am trying to say is that you should go and get your hands dirty. It might seem like reinventing the wheel (because it is reinventing the wheel) but it is perfect for learning how to actually do something useful with code. It teaches you about data structures and algorithms.

You will probably laugh at your first creations in couple of years but they will be very important in making you an actual software engineer down the line.

7
j-rom 2 days ago 0 replies      
Find a problem first. Then try to implement a solution using your language of choice (Node in this case). An example could be: "I want to create a service that parses books and lists the most frequently words used. A step further would be to have the user enter a longer piece of text and analyzes it (http://www.online-utility.org/text/analyzer.jsp)"

Another example is "I want to create a service that auto-corrects text that users enter."

Try to find something that would make your own life easier. Chances are that other people are having the same problem.

Shameless plug. Hopefully you get some ideas out of it: http://jairampatel.com/projects.html

8
hnnewguy 2 days ago 2 replies      
>How do I learn that?

I had (have?) the same issue. Maybe it's something that experienced programmers take for granted; there is a huge disconnect between writing code and developing software.

I've asked the same question, and received the same answer: get your hands dirty. I agree with the premise, and am working on it. But there's the disconnect. I can write a little Python, but have you ever tried to set up a Python development environment on your computer? I don't understand 95% of what is required.

All that said, I'm way ahead of where I was when I started, a year or so ago. I'll keep plugging away, and recommend doing the same. Hopefully we see a few good replies here to help us out.

9
jamessteininger 1 day ago 0 replies      
Start. Jump in head first. Before you're ready.

I made my first video game when I was 13 years old. I made it because I wanted to make something for a girl I liked. I used Macromedia Flash, learned as I went along, and never lost site of the goal. I had to impress this girl.

Sometimes we are inspired by technology to do things. The reason an engineer might give to building something bizarre: "I'm building this because I can." I think it's better to have the goal in mind first, though of course we may only think of solutions to problems because we also understand the tools we have available to us.

It's easy to solve a problem with programming once you know what problem you want to solve. I don't think anything great is made when you try to come up with a product based purely on technology. It's great that you learned JavaScript, I happen to think programming is a blast! And learning new tools, languages, frameworks, or paradigms are always great for the left side of my brain. But programming has always been the most fun, most rewarding, and easiest when I'm deep into solving a problem. The "how" is straightforward: you Google the error message, you Google the 'how to perform X function with Y language on Z platform', you ask friends and family to test and break your likely fragile baby, you build a business, et cetera.

Try to solve an issue you have. Try to solve someone else's issue. Try to solve an issue many people have. Or, browse GitHub.com, and work on another person's solution.

Did the girl I made that game for ever go out with me? No. But it didn't matter.

I got started.

10
S_A_P 1 day ago 0 replies      
One of the best quotes I've heard about programming was from an old C++ developer I knew- "the best way to learn how to program is to start 10 years ago"

The fact you are asking this question is a great sign. This is a key skill that is overlooked in technical hiring and by many development blogs trying to qualify what makes a "good" programmer. Problem abstraction is a huge part of software development. I work in enterprise development around a very specific niche of oil and gas. (ETRM) the "programming" I do amounts to little more than reading and writing to a database. The tricky part is modeling a business process and breaking it down into manageable units of work. For what I (and probably most developers) do, language is just syntax to know and interchangeable.

In my experience, programming is a series of learning curves and plateaus. A lot of what I know just comes from experience. The best way to learn is to program. You will eventually see patterns in the types of problems you see and know the general approach to solving it even if you don't have the exact answer.

11
aniketpant 1 day ago 0 replies      
I started development actively in 2010. At that time I was in my first year of college doing Mechanical Engineering which I didn't grasp really well. So, I ended up putting all my time into development.

The first thing I built was a small website which was a music catalogue. When I think about it now, it seems utterly pathetic but it was the first thing I ever built. Later on, I got into WordPress and spent a lot of my time picking up PHP and writing new themes. This was an enlightening experience as I picked up a lot of plugin writing practices and I ended up being invited to a few WordCamps.

In the coming years, I learnt a good deal of JavaScript and was working with PHP frameworks to write a lot of admin interfaces for my own projects and some tools for my college's software development team.

In the last one year, I picked up Ruby and wrote a few tiny gems.

With this much experience, I have been able to port code from most of the languages I have encountered to all the languages I know.

Currently, I work at a company where I write a lot of PHP, SQL queries, a lot of front-end and all of us are expected to be full-stack.

My only advice to you would be:

1. Start slow. Try to spend a lot of time learning from other people's code and attempt to imitate a lot of code which is already out there. Solve the same problem many other's have done and trust me that you will learn a lot more from it.

2. Why don't you start a blog? You can start with a blogging system in the beginning and maybe later you can write your own.

3. When you say:

> "But I don't know how to make a site with logic and structure behind it that will lend itself to solid functionality that users can benefit from."

My answer would be, "If you can solve a problem for yourself, then there is bound to be a person who is benefit from it."

Good luck to you.

12
chipsy 2 days ago 0 replies      
The computer is an automation tool. When you write code, it is serving the purpose of automating a specified and designed process. The things you write in the program to make the automation happen only have to be as complex as is actually necessary for that task.

First, have a good problem to solve. This is your design - developing your sensibility for it is somewhat independent of your coding skill. For your own project designs you should always prioritize your own motivations first, because there is nobody you are directly obligated to finish for. If you don't do this finishing will become very hard. Find problems people have already solved and reinvent their wheels so that you learn more about the problem domain. (e.g. if you want to learn how Facebook works, clone parts of Facebook - if you want to learn how operating systems work, build a toy OS, etc.) Or, find clients who seem to know what they want(nobody really knows - the design will change) and build things for them, on their terms, in a way which will get you paid so that you have the obligation to finish.

A good problem should be either obvious and a bit boring on the surface(an everyday thing made easier, more available, more accessible), or scary(a technical problem that you are not immediately sure how to solve, or are not sure how long it will take to solve). Usually projects start out looking like the former and then develop parts of the latter as you go along, forcing you to "plateau" on new features as you build out the infrastructure. You can also slice up a project into defined versions with incrementally larger sets of features so that your expectations for "done" are managed - if you don't get to some things, you still have a practically useful program.

Then, start working on it in small steps. Maybe you aren't sure how to envision the whole problem. In that case, you can simplify it by reducing the problem into a bunch of facades that are intentionally incomplete. Maybe you want to render a page that shows tables of data, for example. You can start by building up a facade for the presentation layer and see what kinds of data will have to be passed in to make the presentation work. Then you can mirror this at the other end and only solve the problem of "how to store and process the data." Then you figure out a protocol for making the two parts communicate. If you design each part so that it is simple to rewrite, the code will be maintainable regardless of your techniques or technologies, because then you can rewrite your way out of any corner you get painted into.

13
fsloth 2 days ago 0 replies      
The answer will be 'write code'.

This will teach you a lot of things... I can try to come up with a short list of what I've observed of my own development as a programmer.

You will recurrently come up with particular patterns, you start to identify which approaches will work, which will be dead ends and so on.

Try to separate your understanding and model of a problem to at least data, model and view domains. You will have certain data - you should keep this as simple as can be for the problem you are solving. There will be the model - how is the data mutated, which rules will guide it - and there will be a one or more view to this model and data. Note, that as a pattern the view encompasses both the possibility of an API to your system, as well as the actual display of data.

Try to keep you code as simple as can be. Don't go for the more complex solution unless you know you really need it.

'Pragmatic programmer' and 'code complete 2' are pretty good books about software development in general.

I would suggest you figure out what interests you and then try to implement simple programs in that domain. If something feels too complex, then first try a simplified version... more simplified etc. until you understand how to solve it.

One of the best knacks to learn is how to approach something from a direction which makes the problem easier to solve. There are usually an infinite amount of ways to write something and the challenge is not to just start writing code but actually figuring out which solution method leads to the most understandable and easy solution.

I would suggest you familiarize yourself with the practically important datastructures: the list, the binary tree, the map and the graph, etc. "Algorithm design manual" is a pretty good book for this. Aho's foundations of computer science is a pretty solid and free reference: http://infolab.stanford.edu/~ullman/focs.html

It's probably most motivating to mix the computer science with practical exercises unless you find you get a great kick out of it.

Good luck!

14
thehoneybadger 2 days ago 0 replies      
The question is a bit open ended, so here are a few thoughts. Programming involves learning by doing. Just start on something. Perfection is the enemy of the good. Your first real attempt won't be perfect. In fact it will be downright terrible. Set your expectations accordingly and do not let this prevent you from getting started. It will also never be finished. Do not let the scope of the project prevent you from getting started. In fact you might even be bad at estimating the amount of time it will take. Ignore those fears and confusion and just start. Channel your weekend warrior instinct. Sit down on a Friday and just start typing stuff.

Start with an idea, a problem. It really helps when the problem is personal. What do you hate? What annoys you? The text editor you use? Some little feature of JS that the makers of the language seemed to have forgotten about (how could they!)? Some website that just looks wrong to you? The todo list that doesn't work the way you want? Just think of something that doesn't quite work the way you want, a void, and then try to fill it. Just start and get in over your head. Do some spying on how others solved it (preferably only if you really get stuck, or once you made substantial progress). Maybe you can solve it better? Gotta dog food it. I find dogfooding a solution to a personal annoyance is what keeps you progressing towards a finish line.

If your asking about, say, the idea of website design, and the typical systems that make up sites (the software stack), just start reading about website design. Make a dumb website. Make a blog. Make a family photo album. Basically, start, and then figure out what you don't know, and then figure out what you need to know to proceed. It is an iterative learning process of realizing all the things you do not know and calmly tackling them. For some, this is the best part, the adding of another tool to the toolkit, the unearthing of some common pattern among the tools.

15
samzhao 2 days ago 0 replies      
I think what your question implies is this: "I learned how to write Javascript in a black box where I'm not solving real world problems, and instead just learned how to print static text."

Programming, like anything, is a tool - you learn the features which might not sound like solutions to problems, and with practice you start crossing your programming mind with normal day to day mind. Let me give you an example.

I got the mega Creative Market Black Friday Photos bundle yesterday. To my surprise, the photos are all separate, so instead of one zip file for me to download, or a "Download All" button, it gave me a list of 100 or so buttons to click to download INDIVIDUALLY. Conveniently (or not), they added a "Save to Dropbox" button to each item, but that doesn't help at all, there's still no "Save all to Dropbox" button.

So after clicking on 5 or 6 items... I started to give up, then suddenly my programming mind jumped in and said to me "hey dude why don't just go into the console and select all the elements and do a `trigger('click')`?" So I jumped into the console, and typed

`$(".start-sync").trigger("click")`

I didn't even bother to check if the site uses jQuery, I just typed it in and it worked!

Now, if you were to jump in and helped them add a "Sync All to Dropbox" button, don't you think that's gonna be really beneficial to a lot of the users?

You might have learned the feature in jQuery to trigger an action, but to actually do something with it to solve a problem you need to not only learn the tools, but also start thinking about problems using your programmer brain.

16
sajonara 1 day ago 0 replies      
Just DO! ;) That's why it is named "learning by doing".

No offence: Programming is not worth a dime if you don't have a problem to solve yourself. And either you are the kind of lemming who sits and waits that someone presents you a problem you should solve for him or her or you are as creative to create your own problems as creating problems is a very creative process.

For example take a website. Let's suppose you are using a popular blog system. Then... what? Well you see a spectacular gallery on a site X. You want to have that on your site too. Then sit down, take notes and think over what you need. All you write down is more or less your algorithm (logic). You could do it with database support or without, you could use a JS lightbox or you could do your own. I remember doing my first coding. The example in the book was a basic text editor. So what did I do? I expanded the thing, so I added feature after feature I found very useful. :)

Another example with your blog and an API? Let's say you would like to visualise your data. Get the proper js library and try to connect it with your data. How could you do it? You could use csv files with a cloud space like Dropbox or Google Drive.

At least the problem is what you think of it. There are a lot of problems or none. Noone could tell you what "your" problems should be.

If you get past JS you could use Rails, Python, PHP and code your very own content management system (recurring to Codecademy and CodeSchool's content). Or you could write an app, which aggregates all the news channels you like by storing all rss feed entries, all tweets all Facebook postings by the channels you chose.

17
Skywing 1 day ago 0 replies      
A lot of explanations here about how other people learned to use programming as a tool for themselves, but everybody is different. One person's analogy for using code might not work for you. You have to discover what works for you on your own. Sure, keep the other analogies and things in mind, and ask yourself if you can relate, as you progress through your own journey. Everything is relative though, and your experiences are what make you unique and valuable to the community as a whole. Maybe you're the next Bob Ross of JavaScript - we want you to be. So, don't aim to mimic somebody else's experiences because that'd just be an injustice and it'd also take away from what makes this journey so rewarding. I suggest just visualizing some end goal of yours. You want to make a website that offers some kind of service of something? Visualize that site and break it down into chunks. Finally, dive in head first. Just start coding on it. Don't give a single thought to whether or not it's as good as somebody else's code. Don't worry about if it's the best it could be, yet. All you need to do is connect the dots, mentally, and play with the legos. Focus on hacking together something that, in the end, resembles that mental picture you had. Once you're there, a large portion of your original question will have pretty much been answered - you'll have use code to solve some problem. All that remains is to figure out how to improve. That's all any of us are doing - trying to improve.
18
bjt2n3904 1 day ago 0 replies      
Hey bnb. A few thoughts from my perspective.

What does it mean to "solve a problem"? Furthermore, how can computers be used as a solution? Let me illustrate this with a precautionary tale. It doesn't involve software design, but the principles are the same.

An old company I worked at had a crippling problem. Development groups were not communicating with each other. Each team would work on a module, only to find there were separate interfaces. Months of man-hours were wasted, time and time again. An up and coming intern convinced the management he could solve the problem by implementing a forum. Resources were allocated, and he spent the next few weeks setting up phpBB. Hopefully you can see where this is going.

The tedium of checking forum threads soon wore on the jaded developers. Nobody wanted to root through non-threaded, disorganized responses, or update the attached Wiki. Soon, the server turned into a forgotten wasteland.

Computing problems are solved with computers. Human problems are solved by good leaders. Sometimes, computers can help. Although the forum didn't work, a new developer was hired as I was switching jobs, and was doing a marvelous job uniting the development team. Before I left, a Jabber server was setup in place of the forum. The reception was much better--but the real problem solver was a good leader. Not the computer.

19
aercolino 1 day ago 0 replies      
A nice thing about "hello world" applications is that you can always use them as the starting point for any other.

The first step forward would be to change it from "hello world" to "hello {{name}}" and have the user input their name and the application show a custom hello.

Having this minimal input / output, now you can invest some time to make your app secure. This will teach you a lot.

Then you should feel ready to allow users to register, log in, and log out. This will teach you DB stuff and a lot more about security.

Then you should feel ready to allow users to add a profile with an uploaded picture. This will teach you about sophisticated UI issues, and even more security.

Then, except for scalability, machine learning and a few other special but mainstream technologies, I think you should feel ready to learn anything else.

20
rlearner 2 days ago 0 replies      
As others have mentioned, you need to practice solving problems with increasing complexity. You can try Project Euler which has lot of mathematical/computer programming problems. https://projecteuler.net/problems

You can also try daily programmer subreddithttp://www.reddit.com/r/dailyprogrammer

If you want to practice with Bioinformatics problems:http://rosalind.info/problems/list-view/

21
akwebb1 2 days ago 0 replies      
Remember, programming languages are a tool and problem solving is a skill. Learn data structures and algorithms. There are plenty of good books and websites out there on those topics. Once you have a basic understanding of those you can learn to apply your language of choice to implement solutions to problems. Next, find problem and solve. Also, some languages lend themselves to solving certain problems better than others. Don't limit yourself to one language. Once you have the knowledge of one language you are only a different syntax away from the next. Logic does not change, problems do.
22
aspl 2 days ago 0 replies      
Try make something that interests you, see how you would go around implementing it. If you're stuck with a feature, google it. Then see how you did against the "proper" way of doing something, and maybe adapt your code to use the "proper" method. By proper, I mean that it's a more efficient way to do something than to hack it together and have it just about work.

You've learnt the language and the syntax, but it's the experience of just doing something that counts is where it's at! Good luck :)

23
coldtea 1 day ago 0 replies      
>Well, I can write code, sure. But I don't know how to _solve problems_ with it. I know how to create a webserver in Node that echos "Hello, World!" because I've done it a thousand times. But I don't know how to make a site with logic and structure behind it that will lend itself to solid functionality that users can benefit from.

Well, first think of a site. Something that's not "hello world", but it's not Gmail or Facebook either. Something simple.

E.g. create a site were a user can log in, write notes, and save them.

That can be the start -- it's a real problem (not novel, but real) and it teaches you how to move forward from hello world.

Then you can add to it:- Auto-save the notes as the user writes.- Let the user write notes in a rich text editor.- Let the user share his notes with other users. - Let the user mail the notes.- ...

24
goblin89 2 days ago 0 replies      
A few of my friends are learning or have recently learned their first programming language. By my observation[0], what prevents them from building real projects is that while they know the language, they arent very comfortable with any frameworks.

Im not arguing that you have to know frameworks to build real projects. However, I believe knowledge of a framework reduces the effort required to complete a working solution so dramatically that it changes the game, especially if youre new to programming.

Im not a pro by any means, but my practical advice would be: dont stop at having learned JavaScript (the language) and Node.js (the platform). Learn Meteor.js[1], build all the examples you can find in the official docs, and after you become familiar with the processthe ideas will flow.

[0] It was a surprise to me, but in retrospect it shouldve been obvious as I myself have quite literally learned Django before Python.

[1] Meteor is just an example that came to my mind, Im not affiliated with them and its possible that there are better choices in the land of Node.js-based web frameworks.

25
exDM69 1 day ago 0 replies      
Project ideas will come to you at some point. Meanwhile, while you're practicing, start making small projects that you know you can finish in a few days, but there's something new to you in it.

I learned by doing games, can't go wrong with that: Minesweeper, Poker/Blackjack (or any card game, implementing the rules of a complex card game is very educational), Tetris, Connect Four, etc. These are not unique projects and won't make you rich but keep on doing them one per week or so until you get a grasp of what you're doing. Just make sure you can and will finish your projects.

Small projects like that are also a very good way to fill your portfolio for your first entry level job. It's no substitute for a good CV but will certainly get the foot between the door compared to someone who doesn't have any work samples to show.

26
i4i 1 day ago 0 replies      
I'm in the same boat and it's so frustrating I've simply given up caring whether or not I actually ever make anything. I did Udacity CS101, (253 was a nightmare), every single Codecademy track, Ruby Koans, Ruby Monk, Learn Python The Hard Way, Command Line the Hard Way, and the Ruby on Rails Tutorial. That's a couple of years of daily practice. There's no shortage of projects I want to make or actual problems I'd like to solve. I kept hoping I'd run across something that was close enough to what I actually want to do, that I could bend it to my will. Here's what I think would work: Using Michael Hartl's Ruby on Rails Tutorial as a model, add 10 projects that increment in complexity between 'Hello World' and the Twitter clone.

I assumed that smart people who code would be able to solve the problem of teaching eager minds how to make stuff with code. I was wrong!

27
habosa 1 day ago 0 replies      
I remember exactly when I was at this point. I had a decent grasp of Java, but I couldn't build anything that I wanted to use. The way to learn is to build something you want, or something you'd like to show off. For me it was an Android app. I knew there was Java involved, but it taught me all of the things I could never learn from just reading a book (user interactions, getting data off the network, etc). Building my first Android app and my first Ruby on Rails website showed me 'real' programming. The funny thing is it turns out that stuff is all boilerplate rarely involves the fancy algorithms you learn first, but it's what makes real products.

Since you know JavaScript, go build a mobile app with Phonegap. You'll get a really great rush when you see your first app pop up on an iPhone or an Android phone. You'll naturally want to iterate and improve, and that process will make you learn.

28
saluki 1 day ago 0 replies      
Pick a problem you need a solution to . . .

a todo list appshopping list appblog/cmssimple crmtracking lego minifigures in your collection

Basically pick anything you would use, then dive in and start developing it.

You'll be creating a basic CRUD app initially but you can expand and improve on that as you go/learn more skills.

I'm not sure js/node is the best starting point but use what you know. Typically I recommend learning

html/css/js/jquery/php/mysql/(rails or laravel) then top it off with angular.

I recommend rails or laravel.

railscast.com or laracasts.com have lots of great tuts.

Coding something up from scratch before diving in to a framework is probably a good idea. The first time a started learning rails it was tough to follow what was going on behind the scenes. But after creating a few apps from scratch in php/mysql rails was a lot easier to learn.

Good luck, have fun.

29
d4mi3n 2 days ago 0 replies      
This is a very common problem for people getting into software development. You are not alone!

A lot of other people in this thread provided some good advice to finding problems to solve, but I'd just like to comment a bit on how to solve them.

My advice: read code. Lots of it. Find popular libraries in your language of code and pick them a part to see how they work. Set up some open source project that solves a real problem (a CMS, chat bot, whatever) and explore how it operates.

Seeing how other people solve problems will give you a good frame of reference on how to tackle other challenges you encounter. You will also occasionally come across sub-optimal solutions: learn from those as well. Seeing how to do something badly can be just as valuable as seeing something done well!

At the end of the day I think programming is a lot like writing: a good writer reads a lot of books and writes often.

Just keep at it, there's a whole community of people here who've gone through this exact same thing. Good luck!

30
primitivesuave 2 days ago 0 replies      
Your best project ideas are going to come to you in day-to-day life, like the time my roommates started complaining that the laundry machine in our basement was always being used. A couple days later, a simple web app was hacked together that displays the washing machine status, and let's anyone "claim" the machine. I did that project when I was in college, and I probably knew way less about web servers and Node than you. I just Googled the first thing I wanted to do "make a website", struggled for a bit figuring out DNS and hosting for the first time, and then put up a test page. Seeing a page show up on the internet at yourwebsite.com for the first time is a pretty magical thing, and the rest was history.

In general, what you need is activation energy - that initial bump to get the project or idea started. After that, you need to practice maintaining the motivation to complete the project you started.

Asking the HN community was an excellent way to start. Good luck!

31
kev6168 1 day ago 1 reply      
No no, don't work on petty real problems just yet, because you have only finished half of the programming training, specifically the bottom half that is the lowly Javascript(or PHP).

Now you need to spend 3 months on a lisp language(Clojure, Racket, SBCL, Arc, doesn't matter), then another 3 months on Haskell, the King among Kings of programming languages, yet another 3 months on the almighty Emacs, and finally 3 months on Vim, so you can use the Evil plugin with Emacs. Only after all these, you can confidently and proudly start learning PHP, work on a Rails project.

You will thank me every time in the future when you visit Hacker News, Reddit or StackOverflow, every time you walk into a meetup, or join in a water cooler conversation.

32
JoseVigil 2 days ago 0 replies      
You hit the nail on the head with a huge question, not sure if was on purpose or not but well done.

Your question is much more important than learning code even for a long time. That is a good start. Even super great developers never solve a real problem.

Solving a problem, demonstrating a business model and creating a successful start up are -to my eyes- more and less the same thing and takes years of extraordinary hard work, much more work than people at an office could even imagine.

My advice, watch all these videos are amazingly useful http://startupclass.samaltman.com and try to attach as much as possible to the advices.

Best of the luck! Great start.

Regards.

33
progx 1 day ago 0 replies      
Programmers learn programming by doing, they solve a problem / need, a problem for themselves, for customers, for other users.

What program did you/your customer/other users need?

Then do it.

No course in the world will tell you the exactly need and how to solve it exactly -> if it exists, millions of programmers will be unemployed ;-)

I learned it when i was 10 years old (C64), i saw the "cool" games and thought -> i want to create my own. Learned Basic, learned Assembler and Build step by step many different games and programs.

34
cphuntington97 2 days ago 1 reply      
Hi from Tent :-) https://cphuntington97.cupcake.is

If you're uninterested, please ignore, but here is something I want that might make an educational project:

A list of English words and/or phrases that are "phonetically contained" within Spanish words and/or phrases (and vice versa). For example, the English words 'cone,' 'tea,' and 'go' are phonetically contained within the Spanish word 'contigo.' (I'm trying to write songs in both languages that converge at key points). You might be able to do it with a https://www.wiktionary.org dump.

35
lordnacho 1 day ago 0 replies      
There's some great comments here to the effect of "find a project to do". That's ok, but I find the problem with that is you tend to find projects that you already know how to do, and you end up making a spec that is just a slightly bigger hello world. You miss out on collaboration and moving goalposts.

Real world projects often come from other people, the spec changes over time, and other devs need to collaborate with you.

Make me a tutorial site that exercises these two goals, with someone else at your level.

36
unclesaamm 2 days ago 0 replies      
The most salient part of your question to me was the word user. How do you add functionality to benefit a user? Once you have a clear idea who your user is, and what they want, the answer comes more naturally to you. For instance, if your user is someone who wants to know a piece of information, you can display that information. If there is logic to be handled depending on who the user is, you can google "nodejs authentication" and use a library to handle that for you. Everything is constructed in steps, and I don't think there's a magical barrier between writing your first lines of code and having useful functionality.
37
akafred 2 days ago 0 replies      
If you want a process that takes you from problem to product I recommend one I have used in developing several real world solutions, described by Freeman & Pryce in the book "Growing Object-Oriented Software - Guided by Tests". Allthough the book uses an object oriented paradigm and Java (none of which I particularly recommend) the process described in the book's first few chapters is solid and makes quality software development more predictable - and less of an art. (For those of you in the know, but who haven't read the book, this is about TDD, London style, (outside-in) with a high level of automation (continuous delivery).)
38
dreen 1 day ago 0 replies      
Apart from good advice already given in this thread, solving problems with code usually consists of the following actions:

1. Define the problem - think about/write down exactly what you want the final program to do.

2. Break it down into smaller problems, then break those further, right down to the smallest.

3. Solve the small problems individually, one by one.

39
lakeeffect 2 days ago 0 replies      
I was in this same situation for a long time and when meteor 1.0 came out I went through several tutorials, including discovermeteor, bulletproof meteor. Its like a wave of ok, now I can build stuff and its dynamic, I had a plan to learn socket.io and now it just works. I have also signed up for the free mongodb class jan-Feb so that I don't make a big mistake at some point and dump my database. I also used erlang zotonic for a while but meteor has a bunch more kool-aid that makes it easier when you get stuck or have a question. Oh man, good luck I have been in that situation and can really feel your pain.
40
haidrali 1 day ago 0 replies      
Well i think you need pick a real world problem or need or an Idea and turn it into a product like

Skype ( it solve voice problem over ip and people uses it more than any other software)

whatsapp, Airbnb, Uber, Twitter etcor build something which people love to use

41
red_hare 2 days ago 0 replies      
Pick a small, simple project that will force you to learn new things and put pieces together. My favorite starter server project is building a super simple URL shortener. You just need to render a page with a form, accept a POST from that form submission with the URL to shorten, hash the URL, store it in a database, return the hash, and set up a GET that maps your hashes to your URLs by looking up against the database.

The most important thing with beginner projects is scope. Pick MVP versions of things you want to make and build out.

42
fragmede 2 days ago 0 replies      
What have you done that's more advanced than 'Hello World'?

I'm assuming you don't literally mean you've written 'Hello, World!' a thousand times, and I assume you've tried more complicated projects, so where do you keep getting stuck?

Logic and structure doesn't leap, fully formed, from the head of an architect like some prophecy. It starts with some notions that are carefully honed into a working implementation.

43
aaronm14 2 days ago 0 replies      
I've often felt the same way. I've found things just by spending time brainstorming, and keeping it in the back of my mind as I go about my week. You can actually come up with a lot of ideas just by practicing observation of daily tasks you have.

I'd also recommend attending a Startup Weekend or hackathon of some kind and just joining up with a group working on something interesting. Being around the creativity at these can the wheels turning even afterwards

44
keypusher 1 day ago 1 reply      
The question you are asking is like"How do I build a house?" It's too broad. Instead ask, "how do I pour a foundation?" or "How do I frame a wall?" Figure out how to setup a database. Figure out how to execute queries between database and application. Figure out how to write a login form. Build up from there, one small piece at a time.
45
arc_of_descent 1 day ago 0 replies      
http://rosettacode.org/wiki/Rosetta_Code

I'm currently learning Python and I did the Letter Frequency problem and I'm now working on the Bulls & Cow problem. I highly recommend you visit the website and pick a random task(s) and solve it using code.

46
martinald 2 days ago 0 replies      
I learn it backwards. Take something slightly complicated (so much so that you find it challenging to read) that solves a problem that you understand.

Then think of a feature or modification that you think would be useful. Try and implement it.

It's incredibly painful but I find this works better than trying to build something from 'hello world'. Before you know it, you can understand why stuff was implemented that way and what not.

47
husseiny 1 day ago 1 reply      
Just do it! You need to pick a pet/side project of something you want to work on and try to figure out how to get there with code. Perhaps start with a framework and go from there. If you can't come up with a project, find yourself a product person friend who can brainstorm ideas with you and work on it together. Where are you based?
48
hayksaakian 2 days ago 0 replies      
based on what you wrote, i would say the next goal is to write a twitter clone.

write something that takes user input, stores in a database, and represents it later on.

CRUD (create read update destroy)

many webapps could be categorized as a CRUD app, or start as a CRUD app. if you've only gotten as far as "hello world" then i'd consider this a worthy "next target"

49
simonblack 2 days ago 1 reply      
Start small then build up. Give yourself lots of small nonsense throw-away challenges, or maybe take one small part of somebody else's website and see if you can duplicate it.

You have to keep challenging your boundaries. Don't do stuff you know, try to to do things you don't know. But keep each step upwards simple - don't try to build a skyscraper before you can build a house.

50
minthd 2 days ago 0 replies      
Since you know javascript, read this:

http://www.codeproject.com/Articles/699085/Some-simple-tools...

It's from a workshop called "how to build your first mobile app in a day"

51
aosmith 2 days ago 0 replies      
The best way to learn to sole problems is to find a practical problem and solve it!

Find something that would make you more efficient or something that you would personally use. It's going to be a lot of head banging at first but it keep banging away and then start adding complexity.

52
kedargj 2 days ago 0 replies      
Are you having troubles coming up with problems to solves or in getting started on a problem you've identified?
53
hoodoof 2 days ago 0 replies      
Why are you learning to program if not to build some specific software application?

Start doing it. Within seconds or minutes you'll hit your first problem that will need a solution. Keep doing that forever. You are now a programmer.

54
petercooper 2 days ago 0 replies      
Read Programming Pearls to begin flexing your mind in the right direction. It's a somewhat older book in terms of the actual practicalities, but in terms of getting you thinking about how code is applied to situations, it's timeless.
55
kazinator 2 days ago 0 replies      
[H]ow to make a site with logic and structure behind it that will lend itself to solid functionality that users can benefit from.

How do I learn that?

When you figure it out, please pass the message on to the fifty bazillion useless websites out there, that all want me to enter my e-mail address and create an account, yet provide no benefit.

To create something that will benefit users, you need a brilliant idea, not only the ability to code, even to code very well.

If you don't have your own idea, then you get someone else to supply the idea. The idea will start out vague, then take the shape of concrete use cases (interaction scenarios between the proposed system and the people or other agents that use it). From those emerge requirements and a detailed design, and then some prototype code that becomes production code.

56
attheodo 1 day ago 0 replies      
Don't think too far. Find a problem of your own, your family or friends and try to solve it. Best chance is that if you have it, someone else might have it too.
57
jaequery 2 days ago 0 replies      
before i learned to program, i knew what i wanted to create. that was 13 years ago when i was too busy playing an online video game (nba live 2000) and i wanted to create an association league out of it, just like nba.com. first thing i knew i needed was a website, somehow picked php and after heavy amount of trial and error, just under 4 months or so i had a website going with my own forum, standings, team management system, player/team statistics, etc ... little did i know, that was all it took to set me off on a career path i've never have imagined otherwise and i love every day of it. :)
58
59
xanderjanz 2 days ago 0 replies      
Great question.

Problems are solved by tools. Powerful tools can be built with code.

So try first to think about what kind of tool would be helpful for you. How could a computer help you accomplish something that you couldn't do yourself on pen+paper.

One example I like was I was making designs for various sports teams, and I liked the idea of word clouds, but it seems like too much work. So I built a javascript app that counted words in wikipedia articles and built wordclouds form that.

It's a cool project, but the original seed didn't comde form thinking 'what problem can I solve with code' it came from trying to do something new, then thinking if that specific problem could be done with code.

60
Vanzetti 1 day ago 0 replies      
>But I don't know how to _solve problems_ with it.

Do you have problems? Maybe you just don't to solve anything at the moment.

61
surganov 2 days ago 0 replies      
See '180 websites in 180 days' project.http://jenniferdewalt.com
62
akwebb1 2 days ago 0 replies      
Programming languages are a tool. Problem solving is a skill.
63
mck- 2 days ago 0 replies      
The best way to learn is always to just do it. Now that you r got some fundamentals down, think of a project that you would enjoy building. Now Google the little pieces together :)
64
yakamok 2 days ago 0 replies      
find things in your everyday life you could use programing to make easier or solve
65
robomartin 1 day ago 0 replies      
Take the MIT Intro to CS with Python course. It's an introduction to using computational methods to solving problems. Then take the second course.

Then find problems to solve. Lots of them.

Find a mentor.

I had my 15 year old son take these courses (with me acting as tutor). There is no way to describe the transition he made. From wasting his time learning a bit about a language here and a bit about another language there to focusing on one, learning how to solve a range of problems, learning about data structures and more. He cam out of that swinging and capable of approaching real problems (still with a need for me to coach, but a huge step forward).

66
contingencies 1 day ago 0 replies      
Pike's 5th Rule: Data dominates. If you've chosen the right data structures and organized things well, the algorithms will almost always be self-evident. Data structures, not algorithms, are central to programming. - Rob Pike, Notes on C Programming (1989) via https://github.com/globalcitizen/taoup
67
wellboy 2 days ago 0 replies      
For this, you don't need to ask yourself how you solve problems with code, you need to ask yourself how you can solve problems with products.

Coding is not the hard part, it is rather a means to an end. Figuring out for whom you are solving that particular problem and how your product will actually solve that problem is the hard part.

For every problem that there is to be solved, there are 1,000 ways to execute the product that is supposed to solve that problem. However, only 4 or 5 out of these 1,000 ways actually do solve the problem that the product is intented to solve.

So, now you need to

1. Find a problem that is worth solving and that interests you

2. Find out if this is actually a problem. The more people have the problem, the better

3. Figure out how to build a product that is built in such a way that is solves that problem that you are intending to solve

All in all, as you are just starting out, you should probably start writing little scripts that solve your own problem. However, your questions is basically how do I build products that people want to use or how do I start a startup. I would recommend you to start with this essay. http://www.paulgraham.com/start.html.

68
graycat 2 days ago 0 replies      
When I went to grad school, my careerhad been programming, and I'd done a lotof it for some years. Two applied mathprofs were starting a computer science course and asked me what good lessons I'dlearned, and I answered. The answer remains current:

A programmer stands between a real problemand a computer.

The computer does onlywhat operations it is carefully instructedto do and no more understands the real problemthan the chef's knife of a good cook understands cooking.

So, the work of the programmer is to take the real problem and see how to use the computer tosolve it.

For this work, as a first step,if only to make the work easierfor the programmer, get a first list of thedata inputs for the problem and the dataoutputs. Yes the code for a Web page isa special case of this first step.

Then outline how the program will take theinputs and generate the outputs.

Here likely will need to define storagefor the inputs, say, some or all ofvariables, arrays,data structures, instances of object-oriented classes,database tables, etc.

Then move on to the work manipulatingthe input data to get the desired outputdata. In the case of a Web page or anysoftware with a graphical user interface(GUI), also will want to outline what the output will look like on the user's screen.

Then for the manipulations of the data,use the old strategy of divide and conquer, that is, break the work downinto largely or entirely independentpieces of work. People have been doingwork of wide variety this way forcenturies, likely back to the pyramidsand the first boats that couldcross an ocean.For each such piece,have in the software a section of code,subroutine, or function. The work of such a piecemay be further subdivided.

In the end, want each such piece ofcode, section, subroutine, ...,to be small, to have a purpose that iseasy to explain briefly, that is fairly easy to debug, by desk-checking(that is, careful critical reading),running test cases, etc., and with logicthat is fairly easy to create, explain,and follow.

This division of the work shouldbe, at least intuitively, robustto small changes in the real worldproblem to be solved. That is,the division should be for a problema little more general and complicatedthan the one actually given; how muchmore is a matter of judgment, buta small change in the problem statementshould still be a small changein the software!

Next, in the division, exploitthe scope of names rules in theprogramming language to helpthe software pieces be independent.

Next, remember that at least onehuman needs to be able to understandthe source code and that"When a program is written, it isunderstood only by the programmerand God. Six months later, only God."So, humans need to be able to understandthe code, for small projects, just byreading the source code and not needing additional documentationoutside the source code.

Next, remember that humans communicatein natural languages, e.g., English,hopefully with sentences, paragraphs,etc. Remember that, no matter how muchwe might wish and intend otherwise,the source code of software is notin a natural language. Yes we canuse mnemonic spelling for the variousnames we choose and use, and suchmnemonic naming does help someone tryingto read and understand the code, butsuch mnemonic names are still a longway from English. Bluntly, asinformation for a human reader, thecode doesn't really mean anything oris likely a puzzle problem to solveto guess the meaning.

So, net, have to document the code,that is, explain the code toa human, explain with English, essentially with sentences, paragraphs, etc.

Here is an example of a techniquein source code documentation:My project now is a new Web site;the source code for the Web pages isin Microsoft's Visual Basic .NETmaking use of the .NET Framework(collection of object-oriented class),SQL Server,ASP.NET, and IIS. For this work, I have5000+ Web pages of documentation, nearlyall from Microsoft's Web site MSDN.

So, my code makes use of a lot ofclasses, functions, etc. from those 5000+ pages of documentation,and some of those classes, etc. doa lot and need some good documentation.So, in my source code, when I useone of those classes, functions, etc.,I insert in my source code a commentwith the title of an appropriate Web page of documentation along witha tree name of the Web page ona hard disk on my computer. So, whenreading such source code, one keystrokein my favorite text editor(which is what I use to write code)will display the Web page so thatI can confirm that my source codeis doing what I intend.

Since thecode is awash in symbols,good examples of how toexplain code are in good textsin subjects based heavily onsymbols. So, can explain codemuch like a good freshman physicstext explains Newton's second law or Coulomb's law or howa good freshman calculus textexplains conic sections ordifferentiation. E.g., forEnglish readers, mathematics isstill written in English;then the symbols are names,that is nouns.

In large projects, the documentation may be hundreds of pages.But essentially always thereis documentation as sourcecode comments in the source code.

Then, six months later God, theprogrammer, and others will allbe able to understand the code!

My view is that currently the biggestbottleneck in practical computingis poor documentation. Sorry 'boutthat. YMMV!

69
Ologn 2 days ago 1 reply      

  1) Go to Github  2) Browse the Javascript projects  3)  Look for projects which are active with many follows/forks  4) Click on the Issues tab  5) See what open issues there are  6) See if the maintainer is active and applies pull requests  7) Pick an issue you can fix, fix it, write a patch  8) Send a pull request  9) See if the maintainer has any comments   10) Go back to step 1
See - you're solving problems. This is the kind of stuff you'd have to deal with on the job, and is the kind of stuff you'll deal with with your own projects as you or your users discover problems.

I know exactly a problem you can solve right now with Javascript.

   * Go to this website - http://maps.huge.info/zip.htm    * Move around the map so you can see where various San Francisco zip codes are.   * Now try to do this on your phone
I'd love for this to be a mobile-friendly website, but it isn't. It's a useful tool, it looks like it's just a mashup of Google Maps and ZCTA's. A perfect project and problem to solve.

70
curiously 1 day ago 0 replies      
The reason you don't know how to solve a problem is because you do not have a solid grasp of what you learned. This will sound harsh but node.js is a horrible beginner choice. you should've learned python, java, php. asynchronous programming is a bit advanced way of doing things, and synchronous, functional programming works best. i've dabbled with OOP, but have rejected it largely because it doesn't work well for most of my projects.

Pick a new language, which will be now easier since you know javascript, create a simple project with it. Once you get to creating something, you will realize, the confidence to solve other problems. You keep going until you are very confident. You can't learn it, you have to use it.

29
Zero Knowledge Proofs: An illustrated primer
181 points by sohkamyung  2 days ago   30 comments top 7
1
nullc 2 days ago 0 replies      
One of the things that I've been frustrated by existing ZKP primers while educating new Bitcoin engineers on the tools in this space is that they don't form any intuition as to how the you can prove something other than some very narrow (usually seemingly toy-like) problem.

Even if the problem is NP-complete, the transformation from something you'd actually like to to be able to prove to graph colouring or SAT or cycles, is not obvious.

So, I described a novel ZKP for boolean circuits as a teaching tool:

https://people.xiph.org/~greg/simple_verifyable_execution.tx...

It's explicitly not very efficient (since I eschewed all tools from asymmetric cryptography which could have been used to make it efficient), and it may well be not very secure (it's not peer reviewed), but the people I've shown it to have found it to be pretty useful in terms of expanding their perspective and giving them some intuitive confidence that a zero-knowledge proof of the output of an arbitrary program on secret inputs is possible.

Some people here may find it interesting for the same reasons.

2
nly 2 days ago 1 reply      
> In the next post I'll talk about some of those ...[snip]... I'll also talk about why I dislike SRP so much.

I'm going to guess this is going to be:

* Rocky development process (~6 versions, removing attack vectors with each release). This however isn't exclusive to SRP: EKE flavours have also suffered from problems[0]

* Outdated constructs (e.g. the RFC for TLS-SRP still recommends using salted SHA1 for password hashing, so realistically still relies upon strong database security. Fortunately, this is under client control regardless of what the document actually says)

* Lack of a formal security proof (although it's generalised and dealt with in quite a few papers alongside other protocols).

* Perhaps the lack of an EC formation, although I believe you can build one with a few modifications. (Yongge Wang drafted one in 2001[5] that looks to me, as an amateur, to be sound. The critical modification is no more crazy than the freaky ECDSA construct we rely upon today, afaict, simply because more elegant Schnorr constructs were covered by patents)

I'm not sure why Matt considers the protocol to be complex[1] or crazy[2]. It seems to be a pretty straightforward DH protocol, with a couple of interesting parameters: a commitment by each party to the password verifier, each closing off a different attack (one where a client could otherwise auth knowing just the verifier but not the password, and the other to prevent an impersonating server from gleaning enough to do an offline dictionary attack) There are a lot of subtleties in all off the PAKEy protocols I've read about, not just SRP, one good example can be had here[3], which talks about the intricacies of picking commitment constructs.

Atm I agree with Bram Cohens sentiment on this one[4]. If not SRP, then something. I'm looking forward to Matts thoughts in the follow-up. Perhaps he has a more modern starting point in mind[6]

I'd like to see the prevalence of full-on PGP-esque signing and HSMs in every device, but we can't continue to do nothing with passwords. The two uses of password authentication that everyday people rely on the most: password authentication on the web, and WPA2-PSK, are both terrible compared to the PAKEs we already have. Worse, the lack of better things is spawning absolute garbage like third-party login.

I like SRP. While I'm not as familiar with more current IETF RFCs, like Dragonfly[7] and Pwd[8], I believe from cursory looks that they fail to fall in to the "augmented" PAKE category, which means if a server is compromised the infiltrator can use the knowledge they've gained from the database immediately, and without any further work.

[0] http://www.jablon.org/jab97.pdf

[1] https://twitter.com/matthew_d_green/status/28874317682562252...

[2] https://twitter.com/matthew_d_green/status/28874165135724544...

[3] http://coitweb.uncc.edu/~yonwang/papers/TCSsrp5.pdf

[4] https://twitter.com/bramcohen/status/330423520062476288

[5] http://grouper.ieee.org/groups/1363/passwdPK/submissions/p13...

[6] https://twitter.com/matthew_d_green/status/34483169358632140...

[7] https://datatracker.ietf.org/doc/draft-irtf-cfrg-dragonfly/?...

[8] https://tools.ietf.org/html/draft-harkins-tls-pwd-03

3
mijoharas 2 days ago 1 reply      
Can someone help clarify a point about the zero-knowledge part for me?

As far as I can tell calculation is performed (which I would argue is equivalent to knowledge being created) in the process of first checking the value and then rewinding the program to a previous state. Consider the following program (pseudocode):

    start: int value = rand(10) //take a random number between one and 10    if (value == 2) {return "success"} //here we are checking if our "answer" is correct    else {goto: start} //rewinding time and trying again
I would argue that this program calculates the number two, and is functionally equivalent to checking a value and is identical to the scheme outlined in this article. Isn't a calculation a creation of information?

If the program was changed so that the if block had (value == 2 `times` 2) I would argue that the program had calculated 2 times 2 (albeit in a stupid way) and thus information had been created.

Can someone point out the flaws in my reasoning? (Obviously there are some, I'm just being too obtuse to see them at the moment)

(EDITS: code syntax and unable to use asterisk as times in the comment so put `times` in instead, hope it's clear

EDIT #2: just realised I said "information is created" which is obviously incorrect as information is conserved. I still think calculation is being performed. I would argue it is the same as performing a random search on the search space. so the information is provided when we check the value

EDIT #3: expanding upon the previous point, assuming we control the time (which we model as the scientist going back in time in the given example) surely in the Verifiers timeline it seems that there is no computation occuring, but in the scientists timeline (assuming the scientist must go back in time and set pick a new set of random colorings) computation is occuring and thus we break our tenet.)

4
GotAnyMegadeth 2 days ago 3 replies      
In his example Google could colour each vertex a completely different colour. That way when you revealed any random two it would always look like that had done it correctly. I suppose to get round this you have Google tell you which three colours they are using in advance.
5
gavinpc 2 days ago 0 replies      
6
cialowicz 2 days ago 3 replies      
In the example, the vertices colors for a graph edge are requested, but how can one trust that those colors aren't being generated on-the-fly? Effectively, how can I trust that the "warehouse" isn't cheating me?
7
thaumasiotes 2 days ago 1 reply      
I don't quite follow this description:

> Ultimately what we get is the following theorem. If there exists any Verifier computer program that successfully extracts information by interactively running this protocol with some Prover, then we can simply use the rewinding trick on that program to commit to a random solution, then 'trick' the Verifier by rewinding its execution whenever we can't answer its challenge correctly. The same logic holds as we gave above: if such a Verifier succeeds in extracting information after running the real protocol, then it should be able to extract the same amount of information from the simulated, rewinding-based protocol. But since there's no information going into the simulated protocol, there's no information to extract. Thus the information the Verifier can extract must always be zero.

This seems to identify a way of showing that some protocol is zero-knowledge. But, as I read the paragraph, the requirements aren't strict enough.

Imagine a closely-related protocol, where I get to challenge two edges at once and the four (or three, I guess) incident vertices are revealed. Obviously, I can successfully extract the full 3-coloring through repeated runs of this protocol (revealing four vertices when there are only three legal colors means I can identify which vertices are the same color as which other vertices; given a bounded number of challenges, I can get them all). Also obviously, you can use a time machine to pass any particular challenge in this protocol almost as easily as you can use one to pass the less leaky one-edge challenges.

But I don't see what's making the difference, or how the "theorem" helps me distinguish the protocols. The OP identifies three properties that a zero-knowledge protocol must have: 1, if the prover has a solution, I become confident that it's real; 2, if the prover doesn't have a solution, I become confident that they don't; and 3, zero-knowledgeness.

So, if I'm an honest verifier with no memory (except for previous challenge pass/fail results), the two-edge challenge protocol has the first two properties, just like the one-edge protocol: I'll quickly gain confidence that a genuine solution is real, and I'll quickly discover that a sham solution is false. If there's a time machine involved, I'll quickly become convinced that the prover has a solution even though they don't, because it's easy to fake three or four vertices being properly colored.

If I'm a nefarious verifier with a memory, I can use the extra information that leaks from the two-edge protocol to recover the full solution if one is given, and I can also use it to eventually discover that a nefarious prover is using a time machine to lie to me (when my own illicit copy of the graph-coloring hits a contradiction). The two-edge protocol doesn't fail the completeness or soundness tests. So it must fail the zero-knowledgeness test. How can I tell that? Does the paragraph I quoted indicate how the two-edge protocol fails zero-knowledgeness?

30
Why I dont like hackathons
165 points by AndrewDucker  2 days ago   123 comments top 47
1
chovy 2 days ago 5 replies      
haha. that's hilarious. i worked at a company that was trying to change its image from 'sweatshop' to 'we know tech' image (like a google or facebook). What better way did they think to accomplish this than to have 30 of their engineers work for 24 hours straight developing features they were too stupid to come up with on their own!...oh yeah, they had a ping pong table too...so its all good. And shitty pizza.

I'm 40 now, and i remember my manager was like "You going to the hackathon? I want you there." I'm like "are you kidding me? I'm not coding for 24 hours straight with no sleep...and then have to come into work the next day...damn dude, if you're going to have us do a 24 hour session, at least do it during the day (not a weekend)"

He really had no response for that.

the kicker was 1st place was a $50 starbucks gift card.

2
computerjunkie 2 days ago 1 reply      
Incoming rant:

>>> Theyre unhealthy

I totally agree. I love good food and a good nights sleep. I left the high sugar, high caffeine, junk food diet at University. Just the thought of it makes me cringe now. I've also been trying to fix my destroyed sleeping pattern due to University night life and after two months its finally returning to normal.

>>> Competition, meh.

Another good point. I'm a competitive person at heart but I don't see any reason to be competitive over low - mediocre products built in two days. I want to build products that I'm proud of.

Why does everybody think that you generally build good products in an insanely short amount time?Why sacrifice your health over something you won't be 100% proud of. Why are we in such a rush?

>>> A welcoming environment for people of all skill and confidence levels, with opportunity for mentorship, learning, and working at your own pace.

This. I'm still new to the software development sector as a fresh out of college graduate and to be frank, my confidence levels are low because I see everybody else doing amazing things that I wish I could do now.

A mentor would be a major plus. Having someone guiding you on the right track is seriously overlooked.Of course you will sometimes fail and the road will be bumpy but at least a mentor will make it a little easier and avoid common pitfalls

I'm a thinker, I hate rushing into things; its like building with a poor foundation. I prefer to think, research, think again before implementing an idea.

As with every hobby, hackathons are great for some people and not so great for others. I personally, enjoy a lot of the things the author said. I love moving around eating good food, lots of water, good sleep and a lot of exercise. Does that make me a bad developer because I don't fit this stereotype developer?

The worst part is when a company expects you to have gone (or go to) to hackathons in order for you to get a job. It really says a lot about what the kind of people they hire and what kind of company they are.

3
binarymax 2 days ago 3 replies      
I agree with some of these points and I understand why some folks don't like hackathons. I especially understand why some don't like company hackathons or PR hackathons.

I go to about one or two of them per year, am 36 years old, and here's what I DO like about 'generic' hackathons - that have no single sponsor:

    - It's a break from my daily routine (I work from home, so its good to mingle)    - It's a lot of fun and I meet smart like-minded people.    - I get to laser focus on learning new tech without any emotional commitment.    - I know it's all for naught so I have no problem starting something and then not feeling 'guilty' about throwing it away afterwards.    - Its a serious mental challenge.  I do it more for the personal competition (like golf) rather than competing against others
There are several other reasons, but those are the top for me. I never going in expecting to win (and I never do), so treating it like a weekend of nonsense probably helps.

4
kriro 2 days ago 1 reply      
I think a "non-interruption weekend" specifically designed around healthy food and sleep breaks is more fruitful in general.

The true value of a hackathon is twofold (imo)

- you don't have normal office interruptions and the like and can focus on one thing for an extended period

- you get to meet interesting people and exchange ideas

I think just focusing on that and mostly ignoring the "extremeness" of hackathons would be awesome. Instead of thinking "how can I code on for hours" a better focus would be "how can we generate a very productive and pleasant environment and still reap the benefits of hackathons".

For example, if it's a biggish place, childcare for parents would be something I'd think about before diving into how to get more coffee to the venue ;)

5
jarofgreen 2 days ago 1 reply      
The reason I don't like articles like these - although I actually agree with a lot of her points - is because the term "hackathon" now covers such a wide variety of events, and not all of them have the characteristics she describes.

For example,

> You can tell me all you like about how collaborative the atmosphere of your event is, but if you are awarding prizes for the best X, you just sound hypocritical. If you want me to believe the event is collaborative, dont make it a competition.

I fully agree with this point and wish more hackathons didn't have judges and prizes. But some don't - I watched the presenting of a tech music hack weekend once, and there were no judges. They gave prizes out entirely at random - and there were some iPads, good prizes to! The atmosphere was great.

I've also been at hackathons that had great food that wasn't pizza, and hackathons where they encouraged ppl to leave at 6pm.

But I think we need to be careful not to tar all "hackathons" with one brush here. It's interesting that people are now using different words like "Hackstuff" from the article (another reason ppl use different words is that the word "hack" tends to put non tech people off massively) and I'm not sure where this leaves the usage and common accepted definition of "hackathon".

6
juliendorra 2 days ago 1 reply      
On mothers not coming to hackathons: at Museomix[1] events we have at least 50% of women and many moms. Anecdotally, I clearly remember that at the very first Museomix in 2011 Nathalie, a participant, had a 3 months old daughter at home. Her dad was keeping care of her.

Museomix last 3 whole days, is probably beyond the traditional hackathon (in the sense that devs are only a part of the teams. 1/6th to be precise).

I guess the absence of moms is rather a question of general gender imbalance and culture of the event.[1]http://museomix.org

7
john2x 2 days ago 2 replies      
> Why cant I work on an existing project?

Man I'd love to join a hackathon where you are encouraged to work on your personal projects, and you get to share it with other attendees, and they get to share theirs with you, and hopefully someone finds your project interesting and then it's not a 1 man project anymore or vice versa.

Most (if not all) hackathons in my country are sponsored by companies to try out their new api's, gather potential hires under one roof, or for investors/business people trying to find developers/co-founders.

8
kamens 2 days ago 0 replies      
They haven't been open to the public (yet), but at Khan Academy all ours have been "healthy hackathons."

Have personally loved it. Eating and sleeping well required. We even bring in healthier snacks than normal and force people out at midnight.

More here if interested:http://hackweek.khanacademy.orghttp://bjk5.com/post/56123354891/how-we-ran-the-second-khan-...

9
danieldk 2 days ago 3 replies      
OpenBSD was one of the first projects to start hackatons. I think they even invented the term. The idea behind them is great and does not have many of the downsides indicated: just get together and work on things that require more 'bandwidth' than e-mail or IRC or sub-projects where you can quickly progress when tackling it with a couple of other people. Besides that, it's a good occasion to meet fellow project members, have a barbecue, and talk all night.

However, most hackatons that I see in my mailbox are completely different. They are often:

- A way for a company to get some app programmed as quickly and cheaply as possible (you win a price and we get all rights).

- A way for companies to recruit. Both technical (which developers are good) and non-technical (who is willing to give up their life if we ask them to) datapoints can be gathered with ease.

10
vijucat 2 days ago 2 replies      
It just occurred to me that Hackathons which stress on the caffeine-induced sleepless continuous-production aspect of programming are the opposite of what Rich Hickey termed "Hammock driven development" : http://data-sorcery.org/2010/12/29/hammock-driven-dev/

I guess the "furious activity IS productivity" approach of such hackathons is appropriate if you're building the next great website where the assembly of components is the challenge but they are probably not great for solving open-ended problems such as designing an algorithm or figuring out how to solve a puzzle (a business puzzle, a programming puzzle, a life puzzle).

11
wyclif 2 days ago 1 reply      
So what are hackathons good for?

They're great for MBA-bots who want young, naive developers to crank out a barely functional proof-of-concept for free.

12
londonymous 2 days ago 3 replies      
AKA why I don't like $COMMON_PASTTIME. This could easily be "Why I don't like Hand-gliding", or "Why I don't like book-clubs"

>Domestic and carer responsibilities are unevenly distributed, which means women are more likely to be too busy to attend hackathons than men are.

Domestic responsibilities are unevenly distributed. This is bad. It has nothing to do with Hackathons.

>Attending a weekend-long event means massively rearranging my life.

Has this guy never been on holiday?

>if I spend two long days in poor lighting and poor ventilation, sitting hunched over my laptop at a meeting table in an uncomfortable chair, eating pretty average catering food or pizza [...] I feel like crap.

If that's an issue, bring your own food. Drink more water.

13
raverbashing 2 days ago 1 reply      
-> They exclude people with lives and responsibilities <-

This is the strongest point.

I will contribute to your project, I will not spend the night drinking Mountain Dew and eating pizza.

14
lmorris84 2 days ago 4 replies      
Biggest worry for me is impostor syndrome. I'd be terrified of turning up and being absolutely useless and achieving nothing. I don't go to conferences for the same reason.
15
michaelq 2 days ago 2 replies      
Hackathons are awesome. I try to do like 6 or 7 a year. And I'm married and in my mid 30s.

To take the OP's points one-by-one:

- Hackathons are worth the commitment. They're a fast, efficient way to try out 1) new frameworks and APIs, 2) new employees/cofounders, 3) new ideas.

- Hackathons only exclude people with "lives" who don't choose to make the event a priority. Hackathons filter out timid and less motivated people (and those two attributes are related) and you're generally left with pragmatic people who will make it through the weekend.

- The OP is right. The inconvenience isn't evenly distributed. Life isn't fair.

- Hackathons are only as unhealthy as you make them. Gardening can also be quite unhealthy if you don't wear sunscreen.

- Competition is a positive force, and the extrinsic motivation of judgement and a deadline are real, and good for the hack you produce.

- Since this is a competition, you can't work on a preexisting product any more than you could start a marathon a kilometers up the road.

- They're not just toys. Take a look at POWr.io and Zaarly, both of which came out of hackathons. There are many others, and if anyone knows of some of the top of their head, please reply with them.

I think it's great that people are coming together to help code on your gardening project. Hackathons may not be right for you, but they are definitely right for me and the dozens of ambitious people I've coded with at hackathons over the years.

16
awjr 2 days ago 0 replies      
I've attended a couple of local hackathons run by http://www.bathhacked.org/ Won a category and overall at the initial one (in a team) and won a category at the latter one (on my own).

The initial hack was 1 day and the latter 2 days. I'd guess I did a similar amount of work in both but felt far more relaxed over a 2 day event by keeping the hack objectives small. They are still mentally tiring experiences and you need time to recover.

Negotiating with my wife to create completely free weekends while juggling child care was also relatively hard.

I was then invited to a hack in Bristol a couple of weekends ago, but just could not make it because of family commitments. There was also an element of distance (only 12 miles away but right in the centre of the city) however was offered the ability to hack remotely and just come in to present. I just could not do it due to family commitments AND knowing this would be in effect working back to back weeks without a break.

I do agree that prizes were less important to me than the 'fun' of doing a hack. To win was just icing on the top.

The disappointment in a hackathon is that most of what you create is throwaway and the idea of after a hackathon, having workshops that develop and deliver a product is very very appealing.

17
chris_wot 2 days ago 0 replies      
As a developer of Libreoffice, I would love to go to a hackathon, but only if there wasn't much competitiveness. Also, it would help if I lived in Europe, but I live in Australia and (unless I'm mistaken) I'm the only active Australian developer of Libreoffice.
18
lnanek2 2 days ago 2 replies      
It doesn't sound like they have been to very many. The majority of the people at a hackathon actually go home at night. Quite a few don't even stay the full day. It's perfectly OK. I used to stay from Friday night to Sunday night coding the whole time at the longer events like Startup Weekend, but after I got married I go home for few hours each night at the wife's request. No one has complained.

I don't think most people expect to win either. For most it is just a fun way to try out APIs or other ideas and work with friends and make new friends. It's typically very easy to grab something like three.js, the Uber API, Meteor, etc. and hack on it all weekend and then if you want to integrate it into your real project later you'll see that you learned a lot hacking. I've picked up lots of new coworkers from hackathons too, so it is valuable for recruiting.

The value of the hackathon is not the prize money times your chance of winning it minus the time spent. You can benefit from the hackathon even if you don't win. With their current attitude, I don't think the author could benefit from going, however.

19
erikb 2 days ago 1 reply      
I only was at one Hackathon, yet, and the article pretty much summarizes my thoughts. Instead of working on the Hackathon I did some pull requests to actual FOSS projects. One guy actually presented the thing he did for a FOSS project.

Aren't there hackathons from like Mozilla, Django, Rails communities who just meet to get some specific set of features, bugs or tests out of the way?

20
red_anorak 2 days ago 0 replies      
I've been to a few hackathons over recent years. On occasion I've found them very useful. Forcing yourself to come up with a good idea that you or a small team can build quickly is a great exercise. They've also helped improve my public speaking and presentation skills when it comes to technical subjects.

I will say that you often see quite dull entries from people attempting to make commercially viable products, and that those entries often do well with the judges. I think the participants get more out of it if they go all out and use their imagination, without worrying about the end result. I'd prefer if the prizes at some hackfests were biased towards creative thinking rather than producing an MVP for a product the hackfest organiser can commercialize. This would also make it less like "work at a weekend."

21
robsun 2 days ago 2 replies      
If you don't like them you don't attend them it is as simple. For me hackathons are great place to meet people with familiar interests and share experience.
22
netcan 2 days ago 0 replies      
Does 'not for everyone" cover this?

Exercise is a decent metaphor. Gyms are "for everyone." Some people like them more than others, but most people can stand 30m in a gym. Few people really love them.

Swamp runs are not for everyone. Some people love them. They get wet, mucky and have a silly fun time. Try to force your wife who doesn't want to swam run to swamp run and you will soon have an unhappy wet wife.

Talking about stuff online pushes everything a little further into Oscar Wilde manifesto territory. I'm think I'm doing this right now.

BTW, is the "Why I ___" format an Oscar Wilde Homage?

23
perlgeek 2 days ago 0 replies      
I've been to several hackathons, and I have a hard time relating to the article.

The hackathons I've been initiated by some open source communities (sometimes sponsored by a company, but that company wasn't involved in the topics), and were mostly not about the hacking, but about high-bandwidth communication between folks that usually only converse via bug trackers, IRC and email.

There are no prizes. Often no new projects come out, but existing ones are advanced.

I get the impression that there are two kinds of hackathons, the commercially motivated, and the community one.

IMHO it makes a lot of sense to distinguish those two when talking about hackathons.

24
maaaats 2 days ago 0 replies      
I've never heard of this kind of hackaton. These sound like startup-thons. All those I've attended have been more in the spirit "come and hack on whatever you want, discuss ideas, show of your work" which I think has been great.
25
Entalpi 2 days ago 0 replies      
Amen.

I am 20 years old and I share almost every single point as in the article. If not every single one honestly.. :P

26
c0smic 2 days ago 0 replies      
I've been to two "Major League" hackathons (CalHacks and YHack) and really enjoyed my experiences at both as a current undergrad studying CS. Not often do I get the chance to meet 1000+ people my age that are interested in exactly what I'm interested. It's a great time for meeting new people, and maintaining relationships after the weekend is done. I landed an internship this Summer in SF from building a hack and talking to engineers, so I'd say it's been an incredibly valuable experience.
27
rezrovs 2 days ago 0 replies      
I can also relate to the article because some hackathons that I have been to feel like you're building this thing that you know you are going to throw away. And events where you are able to use a new language you're under time pressure to just get it working rather than understand it. I'd rather spend a whole day on my own projects.

I've been to two other hackathons that are focused on attracting girls and women into the STEM arena (http://www.stemettes.org/events) but they don't exclude guys. The idea is more around splitting the participants into groups of different ability and helping them build something. I really enjoyed that the event is about learning/mentoring more than about wining prizes and I found it really rewarding to help kids that had some interest in coding.

The events are quite different from the 48 hour hacks because they are also catering for 6 year olds with short attention spans, but it felt like I was helping to show that coding is accessible to anyone of any age.

If you're a coder in London I highly recommend volunteering with them.

28
mikecmpbll 2 days ago 1 reply      
Oh boo-hoo, "it's really inconvenient and unhealthy and it's competitive and I'm a damp rag." Man that read sucked the life out of me.
29
jakobbuis 2 days ago 0 replies      
I've worked with teams on 48-hour film projects, in which you create a short (7 min) film in a weekend, quite comparable to a hackathon. On a team of 20 people, we charge two participants fulltime with organising catering: healthy meals, snacks, etc. It really does wonders for the motivation and preventing cranky reactions from the stressed-out director of photography on Sunday afternoon
30
willvarfar 2 days ago 0 replies      
I agree with all the points, and yet at the same time I like these hackathon jam thingies.

I have a real life with real responsibilities and I live deep in the countryside to so I just don't get hackathons happening around me.

But I've started to make 'me' time to go meetups, game-programming jams, 'make' kind of things and that kind of stuff. And I love it, even if just a spectator and just for a few hours.

Along those lines I recently invited myself to look around a real rocket project (I'm an armchair enthusiast) and here's my pictures: http://williamedwardscoder.tumblr.com/post/102953980123/home...

I think that kind of project is like a years-long hackathon if you squint from a sufficiently high altitude.

31
ecspike 2 days ago 0 replies      
Internal hackathons can work. We recently had one where we basically shut down most of the company for two days (it was a Thursday-Friday).

People could opt-in or do their regular work. They could stay late if they wanted but it wasn't required. It worked well because no one was surrendering a weekend.

32
paul9290 2 days ago 0 replies      
Not sure if this post mentioned acquiring customers, but a hackathon can be a good sales channel.

Our last hackathon landed us a fortune 500 company as a customer. They were on the judging panel.

I think we were disqualified from winning due to adding new features to an existing app.

33
k__ 2 days ago 0 replies      
Hackathons are like LAN-parties for coders. I visited both.

4 person lans and 600 person lans.

3 person hackathons and 100 person hackathons.

When I do a lan with friends, we are 4 - 8 people and play games for fun, when I went to a 600 people lan, there were competitions and prizes.

Same goes for hackathons.

You can do your own thing if you don't like whats going on.

Hell, you could even do a big hackathon, like I did a 600 person lan once and make your own rules.

I stopped going to such big events for the reasons listed and did funny small ones with my friends.

34
tim333 2 days ago 0 replies      
There's always the option of not taking the hackathons that seriously. The one I did some stuff for I popped in in the morning, found out what it was about, went home a wrote some code for about 6 hours and then popped back the next day to present. My team mates were non coders. We didn't do to bad though not in the top 10%. It was quite fun though. I'm noticeably over 39.5 and think I'll skip the all night there stuff.
35
junto 2 days ago 1 reply      
I'm 39 and a half too. I hear you. Maybe it is an age thing!
36
jblok 2 days ago 2 replies      
Yes, people with responsibilities are excluded, but that is life. You don't see parents of young children out clubbing till 4am. Younger people go out clubbing because you can feel shit the next day without the kids wanting attention. Not being able to go to a hackathon for a whole weekend is something you'd have to give up too if you had other priorities.
37
milesf 2 days ago 0 replies      
What I've found to be much more successful are weekly Hack Nights. I gave a talk about it earlier this year: http://confreaks.com/videos/4140-cascadiaruby2014-cloning-th...
38
dpacmittal 2 days ago 0 replies      
A big part of when I go to hackathons is meeting new people, coming up with new interesting idea, learning from other's idea. It's a good learning experience, and I get to network with people.
39
yitchelle 2 days ago 1 reply      
Looking on the other side of the coin, can anyone mention any positives (personal perspective of course) from attending a hackathon?

Personally, I would rather contribute to a FOSS project rather than getting involve in hackathon.

40
netforay 2 days ago 0 replies      
I wanted to write this for a month or so. Nice to see that I am not alone.

One point I wanted to point was, they just encourage you to remember you code and write it all at once. They are kind of memory testing.

41
robmcm 2 days ago 0 replies      
The best is when your PM goes to one and then comes in on Monday expecting you to implement all your features by 1AM if he gets the Pizzas in...

IMO it breeds bad habits of coding, planning and management...

42
dcw303 2 days ago 0 replies      
I would be very suspicious of finding a job offer at a hackathon. A company who wants workers that are willing to go without sleep to code are just looking for naive talent to exploit.
43
hoodoof 2 days ago 0 replies      
They're good for young people. When I was young I would have found them inspiring.
44
bluedino 2 days ago 2 replies      
Next from the author, "Why I don't like startups."

meh

45
grigio 2 days ago 0 replies      
+1000 usually hackathon are the extension of a stereotype that a developer should make a fantastic app in 24h.I can understand about designers and business models, but to project and develop a real app from scratch take a lot of time.. if you don't use pre existent code
46
fit2rule 2 days ago 0 replies      
I'm a Hacker and a Dad, and I rarely get to Hackathons unless I'm randomly there by chance. That happens often enough that I have an opinion about Hackathons, only because I am a frequent attender of Hackerspaces.

As a Dad, my time is very valuable; my kids do not suffer for my nerdy nature. In fact, my first hackerspace is the one I share with the boys. The second hackerspace is Metalab (http://metalab.at/), and I'm a social attender - i.e. I don't really commit, but rather just attend. To be honest, after a week of watching the 5 and 7 year olds, its a great thing to see the 20-something year olds, the 30-something year olds, and maybe even a few teens, hacking away on something in the social cornucopia that is your average, every day Hackerspace.

Here in Vienna, I sometimes run into other hacker-Dad's, and one for one either have other commitments, socially borne, and therefore they are mutable, or else they have the long-term view. What matters though, is that all of these hacker-Dads share the desire to pass it on. Its a wonderful thing indeed to see a 4 or 5 or 6-year generation doing amazing things with the end-results of their Dads (or Mums) few hours spent, here and there, soldering .. hacking .. tweaking .. twiddling.

tl;dr :- Home is the first hackerspace, or at least it should be.

47
aligajani 2 days ago 0 replies      
Agree.
       cached 1 December 2014 03:11:03 GMT