hacker news with inline top comments    .. more ..    8 Apr 2011 Best
home   ask   best   8 years ago   
Using prime numbers to make better backgrounds designfestival.com
683 points by jimsteinhart 14 hours ago   38 comments top 15
78 points by nadam 13 hours ago 2 replies      
Cool, but these numbers don't have to be primes. They just have to be coprimes (like (8,9)).

The least common multiple of two coprimes 'a' and 'b' is a*b.


104 points by BrandonM 12 hours ago 1 reply      
This is the perfect Hacker News article. I learned something new and mathematically-interesting about the natural world, the author came up with a clever hack to enliven backgrounds, and we learn how to apply that to improve our own designs.
10 points by mullr 13 hours ago 2 replies      
They're also useful for reverb effects, in very much the same way. See http://www.npr.org/2010/08/03/128935865/queens-brian-may-roc... under "On The 'Stomp-Stomp-Clap' Section Of 'We Will Rock You'")

Also, I think the technique will work as long as the numbers are relatively prime, which may be a bit easier to design around.

19 points by IDisposableHero 12 hours ago 3 replies      
This is very well explained, but not all that novel. Brian Eno used to generate long soundscapes like this, using loops of mutually prime lengths of time.

Edit: See also -



5 points by SeanLuke 12 hours ago 2 replies      
What's wrong with the "cicada theory"

1. The most common cicadas come out every year or every other year.

2. The 17-year cicadas (for example) don't come out once every 17 years -- they come out every single year. Just in different broods (groups differing by phase). Some broods are much bigger than others of course, and broods are often located in different parts of the country, but many broods can and do overlap.

So I dunno. I'm guessing they're 13 and 17 year cicadas because that's how long it takes to develop.

2 points by Nate75Sanders 5 hours ago 0 replies      
While not the same thing, the concept of increasing the degree of realism/getting away from things that are too regular reminded me of Perlin Noise: http://en.wikipedia.org/wiki/Perlin_noise
2 points by jws 13 hours ago 1 reply      
I won't get a chance to write this up, but in a similar vein, if you split the grain/texture off of an image, you can scale and stretch the image as needed, then drop a fairly small, tiled grain texture back on top. I think it is nicer to do two grain textures, one for lighter and one for darker. Make the grain image be solid white or black and put the grain in the alpha channel.
9 points by granite_scones 11 hours ago 0 replies      
"This example uses the simplest possible set of prime number " 1, 3, and 7."

1 is not a prime number. Also, the "simplest" possible set of primes would be 2, 3, and 5.

4 points by mcdaid 13 hours ago 0 replies      
Brilliant interesting article about a very simple but clever idea. I am not sure if I would use this css background technique, but the lego example is brilliant.

Some articles trigger lots of ideas in my mind, this was one of them.

1 point by harshpotatoes 9 hours ago 1 reply      
And some people still question the value of pure math. These design tricks would anger some of my design friends, who still believe you can be left brain OR right brain.
2 points by mikesurowiec 13 hours ago 2 replies      
Wow, very impressive! I will definitely be trying this out. It reminded me of my discrete mathematics class, so now I'm wondering if there are any other cool principles that can be applied to design
3 points by thascales 13 hours ago 0 replies      
Simple, elegant, effective. I know how I'm spending my evening...
2 points by hydrazine 13 hours ago 0 replies      
Gonna try this with pseudo-random opacity styling for even more variations.
1 point by exch 13 hours ago 0 replies      
There's a typo in the title of the second 'chapter'.

"That's great. But wa/s/ has all this got to do with web design?"

Chinese Infinite Magical Hard-Drive jitbit.com
448 points by jitbit 18 hours ago   88 comments top 20
47 points by aik 14 hours ago 2 replies      
Here's my sad Chinese sd card experience. The state of things there depresses me:

When I was in Beijing I went to a regular store to buy an SD card for my camera. I asked them to let me try the cards in my camera before purchasing, so I did that. As I put a card in, all looked well, however when I proceeded to format the card, the issues arose. Regardless of the size of the card, 2, 4, or 8gb, the card would then instead read as 128mb. I mentioned this fact to them and they said sorry and let me try a new card. About 4 cards later the owner was nearly in tears and I was very frustrated. At that point the owner went to the back stockroom and gave me yet another card. This time it formatted fine and I purchased that one.

It was such a sad experience. I felt very embarrassed and sorry for this owner. I don't know if the owner knew that they were scamming people, or if they were just being scammed themselves.

31 points by elliottcarlson 16 hours ago 3 replies      
While I know these fake drives exist - wouldn't running the last 5 minutes of a video file utterly fail as it wouldn't have any of the header/codec/video envelope data since that's at the beginning? Have a feeling the story is more anecdotal than anything...
14 points by pmjordan 18 hours ago replies      
A couple of years ago, some USB sticks with a similar "flaw" made it onto the European market. The capacity difference wasn't quite as drastic as this example, which almost makes matters worse: you have to fill it with e.g. 1GB of data and read it back before you notice anything.

My friend said they're still trying to figure out how did the Chinese do that. Because the drive reports "correct" file sizes and disk-capacity. And the "overwriting" doe not touch the other files present on the drive.

I suspect they treat the first N megabytes correctly to preserve file system data structures. For anything above that (the remaining "capacity"), they just let it loop by cutting off the top bits of the offset.

3 points by hardy263 2 hours ago 0 replies      
Not as extreme, but when I bought my 1.5 terabyte hard drive, I thought that I would be seeing 1.5TB when viewing its properties. I saw 1.36TB instead. So where did the other 0.14TB go? I thought I got scammed.

Then I looked at the number of bytes on the hard drive, and it listed as exactly 1,500,299,264,000 bytes, and I realized that computers and manufacturers use different metrics.

10 points by ck2 12 hours ago 0 replies      
This is an old trick. Ebay is flooded with 16gb and 32gb flash sticks, SD, microSD chips that are only a few gb in reality. Complaints and warnings in the feedback forum go back for years.

They seem to format correctly but you have to copy that much in content to prove it's real.

Stick to newegg, etc. for that kind of purchase.

16 points by qjz 14 hours ago 2 replies      
I love the extra hardware glued inside to give it some weight. Nice attention to detail!
6 points by mberning 10 hours ago 0 replies      
I love the inclusion of the two end nuts. How do you know if something is expensive and built well? It feels heavy/and or dense. You definitely get that feeling when you pick up something like an iPad or a good digital SLR.
14 points by makeramen 18 hours ago 3 replies      
Anyone have experience writing or know the source of the software (firmware) that does this? If not just for the hax, it would make an epic April fools joke.
5 points by millerc 14 hours ago 0 replies      
IIRC from my time playing with Norton Utilities back when it was a real hacker tool, you only need to format the disk as usual then hand-modify the disk size in the MSDOS (2nd, logical drive's) boot sector. The FAT will contain all the entries needed for keeping parts of the file in correct order, and Windows will happily report the drive size from that field. Assuming the flash drive's firmware/circuit doesn't report errors but rather uses the low bits to address the sectors (laziest way to build a flash controller), explains how "only the last part of the file" gets preserved (i.e. not overwritten).

For the FAT to stay non-corrupt I would assume that Windows writes a full copy from its cache right after writing the file, that would not be an unreasonable assumption.

All in all: extremely easy to reproduce, no special controller needed. Probably just a guy that realized how Windows behaves after changing a couple bytes on the disk, and another that said "hey, we can make money off that!"

3 points by VladRussian 9 hours ago 0 replies      
>he had bought in a Chinese store across the river, for an insanely low price.

and who would say after that that there is no venture investors in Russia? The guy took the risk and it just didn't pan out. :)

2 points by dfranke 13 hours ago 1 reply      
Something about this story doesn't seem to add up. An SSD's firmware presents the raw flash to the OS as a block device. The filesystem is at a higher level of abstraction, above that block device. If the device is handling data that doesn't fit by wrapping back around to the beginning of the file, how is it figuring out where that file begins when all it sees is a bunch AHCI requests?
3 points by alizaki 11 hours ago 0 replies      
When I was still in college a few years ago, I fell for this on a trip to Guangzhou. I believe those were supposedly 8GB flash drives with 32MB of real memory, selling for less than 5 bucks each. Being the immaculate hustler I am, I bought a sackful of those to haul back home to sell, only to learn that if it's too good to be true...
3 points by afterburner 15 hours ago 0 replies      
Lots of fake 32GB microSDs are also on the eBay market, and function in a similar fashion. I've bought a fake hard drive, I know a few others who have bought hard drives or microSDs... someone musta written a how-to! They're getting tricky with pulling eBay/PayPal accounts and setting up Dutch auctions to throw wrenches in the system to slow it down before the money transfers are reversed/released.
6 points by dvfer 15 hours ago 0 replies      
I have seen a USB flash drive with only a USB connector on it... inside is empty, and yes, I'm Chinese. I don't know I should laugh or not.
4 points by folkster 12 hours ago 3 replies      
At Least you get a WORKING hard drive
check this http://www.walyou.com/img/fake-usb-flash-drive.jpg
1 point by jcromartie 13 hours ago 1 reply      
What if (this sort of) Chinese electronics designers spent their (obviously impressive) technical skills on not ripping people off?
3 points by joejohnson 10 hours ago 0 replies      
The best part about the article was the really racist comments at the bottom. People don't like Chinese business practices, I guess.
1 point by ginkgo 13 hours ago 2 replies      
How could a program work that can detect such scam-drives? As long as we don't care about crashing the formatting, at least.

It could work by writing a specific pattern in the first few bytes of the device and then reading/writing in 2^n steps to check if the pattern cycles.

I think I have some counterfeit thumb-drives lying around. Maybe I will try writing something like that..

0 points by killerdark 6 hours ago 1 reply      
"He works at a hard-drive repair center". Ah? A hard-drive repair center yes? What do they do there? Take the drives apart, polish the platters and bolt them back together? Must be a Russian thing no?
0 points by hammock 8 hours ago 0 replies      
This just made my day. Thank you.
Jason Fried: Why I Run a Flat Company inc.com
422 points by duck 1 day ago   175 comments top 41
33 points by jwr 21 hours ago 1 reply      
I've started companies that grew from 1 to 50 people. I find that business advice from 37signals is often quite naïve and I hope people treat it as a data point, not as a set of guidelines.

Managing a company below 25 people is relatively easy. You can still talk to most people every day, you can gather them all in one room, information flow is unrestricted. But staying under 25 people means for most companies that you are stifling growth.

Once you get above the magical 25 people threshold, you'll find that it is simply impossible to manage the company effectively using a completely flat structure. Also, you'll discover a lot of new problems you never suspected existed before: you'll need internal PR, for instance, as people in one part of the company won't know what people in other parts are doing. There will be myths to dispel, growing animosities, lack of direction. And there is simply no way you can keep your pretty flat structure with 45 people.

I know that 37signals' advice resonates with people. They are the cool kids. But keep in mind they are an exceptional company, in every sense of the word.

54 points by mhp 1 day ago 4 replies      
Fog Creek and 37Signals are probably more alike than either of us would care to admit (ha!) and I could see Joel writing a very similar article a few years ago when we had 20some people at the company. But what works there, or at FC, is not a one size fits all answer.

Having managers when there are 10 people are at your company makes no sense. The hierarchy starts out flat, you add a few more people and you're at 20, and the idea of making someone a manager seems like a waste and something a 'BigCo' would do. "We need people who get stuff done, not people who sit around doing nothing but managing", you think. Then you get to 50 people and everything breaks down. You wonder why people are frustrated they can't get things done, while other people are doing things that embarrass your company or compete with other things you are doing. And you realize your company isn't a special little gem that is wholly unlike every other company in existence. You need management.

Just make sure you give the devs a professional ladder and compensation structure that doesn't involve moving to management, because managing isn't something everyone is good at or even wants to do. And make sure that management knows their job is a support role to the people at the company who are making things happen, not the other way around.

10 points by ChuckMcM 1 day ago 6 replies      
"Even as we've grown, we've remained a lean organization. We do not have room for people who don't do the actual work."

That is a priceless comment. It exposes Jason's huge blind spot. Worse, it is on this undefended flank that great future pain may be inflicted. I look forward to the post-learning article.

The underlying premise/assumption is that a 'manager' is not only not doing 'the' work, but they aren't really doing 'any' work. Its a very common meme in engineers, "The company makes money on the code I write, it makes no money at all on this guy telling me what do, it just costs them money."

Let's reason about this using a fairly simple analogy. We will start by positing that we are all rats in a maze. Our maze is, unfortunately, filled with rat dung. We further stipulate that walking on dung would kill us so the only way we can move through the maze is by shoveling the dung in front of us, to the pile behind us and then moving into the space we opened up. All the shoveling burns up calories, if we don't eat we will eventually starve to death. Finally, we add that there is a cheese somewhere in the maze, and once any rat makes its way to the cheese, everyone gets to eat of the cheese. That resets the rat's hunger level, after the the cheese is located the maze resets around all the rats and process begins again.

Now in our analogy our engineers are the rats. And writing code is shoveling rat dung. And the cheese is a monetizable opportunity. Eating the cheese is collecting money from the opportunity.

In a small company, having everyone shovel as fast as they can, is a great strategy for finding the cheese(s). Some mazes have more than one cheese in them, sadly some mazes have no cheese in them. A manager, whether its the founder/CEO, or someone in that role, is given the opportunity to stand above the maze and see if there is a cheese nearby or in the distance, by seeing both the maze and where the cheese is relative to where in the maze rats are, they can direct rats that have the best chance of getting to the cheese quickly in the direction they should turn, otherwise each rat would be following his/her internal idea of the best way to find a cheese in a maze like ‘always follow the left wall' or ‘alternate left and right turns' or ‘leave marks in the dung piles of parts of the maze you have already passed through so that you can pick new passages the next time.'

So the leadership role of management in any technology company, is measured by their ability to get teams to the cheese while shoveling the least amount of rat dung. Good leadership will understand that there are many cheeses (and flavors of cheese, some more nourishing than others) and be able to evaluate the choice of going further for a very nourishing cheese vs going out of the way to munch a nearby, but less satisfying, cheese.

So back to the comment tail … “who don't do the actual work.” briefly.

It is pretty easy for an engineer to recognize a problem in one of their colleagues, even though their colleague is ‘doing' a “lot” of work, that work is inefficient and thus ‘poor'. Someone checking in version after version of a subroutine, trying to get it correct, when that subroutine is doing something that is provided by the underlying operating system. Lots of ‘work', lots of ‘check ins', but someone who had a bit more breadth might have done in a couple of hours what this loser is taking a week to do. As an engineer, one can easily appreciate that this person is taking up an employee spot that could be put to more efficient use by a better quality engineer.

And yet it may be hard for that same engineer to understand that a manager is helping him, and his colleagues, be more efficient by working excellently on a component that will get them to a good cheese, versus working excellently on a component or a technology that does not proportionally have the business value they need to pay their own salaries.

A real world example was a shopping cart company that had, at one time, all of its engineers working on a universal language independent component for presenting product descriptions in over 100 languages and nobody on the team was working on making the shopping cart code play nice with various payment services. Which is the more nourishing cheese? English only and you accept any kind of payment, or any language but you have to have one type to payment card from one vendor ? The engineers were all writing excellent code, using all the latest best practices and the language support module they came up with was best in class, but product was a shopping cart and the “high order bit” for a shopping cart implementation is “can it take money from customers and put it in the bank?”

So when an engineer makes a comment like Jason's about valuing ‘doing' over ‘directing', it can sound like the oarsmen in a galley complaining that he should be accorded higher status than the navigator since without him the boat wouldn't go anywhere. But the reality is that without the navigator the boat wouldn't arrive anywhere. Considered in the larger context, the navigator's role is both more stressful and more important to the overall success of the trip than the oarsmen.

What Jason's comment misses, and it sounds like a blind spot, is the understanding that you cannot successfully navigate and row at the same time.

27 points by tptacek 1 day ago 2 replies      
This really resonated for me because we have almost exactly the same company dynamics at play (we're of roughly the same size).

I'm not sure we have similar answers, but one response to the problem of not being able to afford people who don't do real work is to make sure everyone is doing real work. We're primarily a services firm, and everybody in that org, including Dave, our President, is billable. It's something I tell people in interviews, and that I'm sort of proud to be able to say; everyone's grounded in the actual work that our actual people are actually doing for actual clients.

In that spirit, one way to address this problem might be to have team leads instead of managers.

I feel like Joel wrote about this a few years ago too, and while I'm probably wrong about this, off the top of my head it feels like their answer to this is that when they have too many senior people, they think about new products. Isn't the highest level on their comp ladder (not a fan of that thing) reserved for people who can run products?

Would love to hear more about what people in the 20-40 employee bracket are doing here.

31 points by michaelchisari 1 day ago 1 reply      
I really appreciate the idea of having a career path that doesn't involve moving "up" to management. I'm a developer because I love development, and my own personal hell is managing a team and never getting to code.
9 points by hapless 1 day ago 1 reply      
"The fairest rules are those to which everyone would agree if they did not know how much power they would have."

This quote really, deeply bothered me. One of the major differences between alpha males and the rest of the population is that they will always assume they'll end up in the top spot. Your prototypical alpha male won't even consider the odds of being on the bottom in that lottery.

To push it further, those same aggressive types will have the passion and voice to draw support for their views, no matter the substance. A "flat" structure overvalues the opinions of the loud and aggressive, with little room for more pensive contributors, especially women.

In other words, if you leave the authorship of the social contract to the loudest people, you may end up with a rather oppressive outcome. This is a universal rule, often overlooked by the alpha males who spend their time talking to Inc. Magazine.

9 points by dansingerman 1 day ago 2 replies      
While I totally buy what this espouses, I think it is probably incredibly hard to scale. They are doing well if they keep things flat(ish) for 26 employees. I can't really see it working at all for > 50.

And while they may not have anyone with the job title CTO, I'd be very surprised if DHH was anything other than the de facto CTO.

13 points by tom_b 1 day ago 2 replies      
Love the idea of rotating "managerial" or "lead" person in a small group.

I'm on a small team within a larger organization that we support (in dev and tool usage). A challenge for us is that people in the larger org are used to having a manager to route their requests to.

I may give a rotational approach a whirl. But right now, one of my primary roles is as s&!t umbrella and I don't want to overly burden my real producers.

8 points by ssharp 1 day ago 0 replies      
37signals can do this because of their hiring practices. They need to be extremely picky with the type of employee they hire. Their hires need to be able to function within their unconventional structure.

This type of information doesn't translate well to most other companies. I hope 37signals' audience gets that. For software startups, many of their ideas are exceptional and it's fantastic to see real-world examples. For already-established companies and companies that can't be as picky as 37s, testing this type of structure seems unnecessarily risky. I believe 37s has addressed this in the past, and Jason has in his Inc. writings. I just hope people are paying attention.

9 points by ibejoeb 1 day ago 6 replies      
It's unrealistic to not promote people. If you run a "flat" organization, you're telling your employees "I don't care that your resume indicates no progression." That's a real career limiter, and it can be perceived as an underhanded way to retain talent.

Also, more pragmatically, how realistic is it to have 30 direct reports?

6 points by tomlin 1 day ago 3 replies      
What Jason Fried is expressing is something I've been pondering for a while. And I think we'll (hopefully) see more of it (sorry, manager-types).

In my experience, managers in most departments have essentially taken the role of sheep-herders. So, I started to ask myself: why do I need a manager when I work well on my own, making smart, educated decisions that are based upon the ideals and successes of other smart, educated and passionate people?

After all, I'm being hired for my prowess, no? If I am, do I need a manager? And shouldn't you always hire people who have these sensibilities?

I think the message I find within this rubble of contemporary and progressive ideologies is: Hire smart. If you have a good team who understand their roles and how it pertains to the goals of the company, you don't need managers - not for a small or mid-sized company, anyway. Basecamp has been the best PM I've ever worked with - alive or binary. Software has already begun to facilitate the role perfectly for me.

3 points by vacri 1 day ago 1 reply      
Skimming the comments, it seems a lot of people are missing a significant point - the employee is in customer service. Customer service is a dead-end job. It doesn't take long to get on top of your game, and there's really nowhere to go.

Managers and marketers get new products and changing business conditions to keep them interested, developers get new tech to explore and tech debt to resolve.

Customer service... is easy to master and once done there's no new fields to conquer. It's ultimately boring. Fine if you want a job to show up to and just do, but if you want to be interested in developing/advancing skills, it's not going to happen in customer service.

I actually find it a little insulting that the tone of the article is a little "well, the developers can handle 'not advancing', why can't the customer support person?".

The professional development tree for customer support looks like a stump.

7 points by sreitshamer 1 day ago 0 replies      
I like that he mentioned in 2 places how he/they supported people in the best way for those people even when it was clear they weren't going to work for 37signals anymore. (In one case they helped someone find another job, in another they helped someone start her own thing.)

It's important to set other people up for success, whether it's success at your firm or at someone else's. They're not "human resources", they're people!

17 points by antidaily 1 day ago 1 reply      
Looks like Sarah has started her own thing: http://cosupport.us/
7 points by rosenjon 1 day ago 1 reply      
The thing I've always liked about Jason's writing and approach to business is that he isn't afraid to say that they might not have the exact right answer. At the same time, they refuse to accept the "conventional wisdom" as being the correct answer; I think too often we believe that because most companies do things a certain way, that all companies should be run that way.

The takeaway for me is that you should be constantly questioning whether there is a different way to run things that enhances the performance of your organization as a whole. I have personally been privy to how the people with the most impressive titles frequently have the least connection to what's going on in the business. Some of the methods taken at 37Signals seem to be aimed at fixing this problem, which I think is commendable.

At the same time, it seems a shame to have to let go of a good employee because they want to take on more responsibility. If their view on more responsibility is simply a bigger title, then perhaps they weren't the right fit for 37Signals. However, in my opinion, ambition and competence should be rewarded, so it seems like there may have been a better way to handle the situation than choosing between staying in the same role and leaving the organization.

7 points by abbasmehdi 1 day ago 1 reply      
I would like to commend Jason Fried on establishing a source of free and recurring advertising in a massively distributed publication that has had his target audience cornered for years. Not only is this free advertising, but it is the highest quality of advertising congratulating small and medium size business on being flat (which they usually are because in a small army, even the Generals are on the front lines) and reassuring them about the benefits of being so (imagine you're a 6-person company where everyone does everything and you have just read this article: now decide between buying MS Project and 37 Signals' Basecamp for your PM needs - cloud over your head says "Jason gets me, man!"). Jason, if you're reading this I know you're smiling - you have my vote for strategy!

There is a PR lesson in this for all of us!

3 points by sili 1 day ago 3 replies      
I like the idea of keeping people closer to what they are good at. However I'm afraid this strategy will backfire on your employees if they are forced to leave to another company for whatever reason. In an environment where every company does not have this flat hierarchy it is strange to see a person who has spent 10 years in one place and has not advanced to some managerial position. New employer will think that he is unfit in some way (even though the opposite is the case) and will probably not even give the person a chance to explain themselves.
6 points by abuzzooz 1 day ago 2 replies      
Jason seems to imply that managers are useless when he says "We do not have room for people who don't do the actual work".

I think this is very naive of him, and a little selfish. He's enjoying the title of "President" which, to me, is a purely managerial position. I doubt if he considers himself useless, but he's happy to label other managers useless. I might be wrong, but it seems that he's either too selfish to see other people take away some of his control or he's afraid to tackle the problem of a growing company. Both of these will have negative consequences in the future.

Just for the record, over my 14+ years in a technical field, I have been a manager for 5+, and have given up that title twice before to focus on more technical work.

3 points by stevenj 1 day ago 0 replies      
There's a saying in team sports along the lines of, "Players play the game; Coaches coach."

Employees play the game (ie do the work), but I think a good manager/leader can make a big difference.

Sure, Michael Jordan was a great basketball player who had good teammates, but Phil Jackson must be doing something right in order to extract the talent out of his players in just the right way to win year in and year out. And that is hard.

Perhaps there's just not very many good coaches or managers, which is why there's such distaste for "management."

But every good team, organization, or company has a great "manager" or "managers".

In the case of 37signals, it seems that person is Jason Fried (he is the CEO).

7 points by grimlck 1 day ago 1 reply      
What about creating a career path that doesn't involve moving people into management? One that involves more prestigious titles (e.g.: sun had a 'sun fellow' title), and significant salary growth (20% here and there isn't significant, imho)

As the organization grows, i can't see a totally flat structure working - you're going to end up with people who have been there 5 years, wake up one day and realize they have the same role and similar salary to what they had where they started, realize they have no career path with their current employer, and will move on.

2 points by Murkin 1 day ago 1 reply      
Appears there are two types of people,

The 37Signal employees:
* Like their field and want to be 'hands-on'
* Don't mind staying in the same company for 10X years.

The supposed norm:
* Prefer to advance to other positions vertically
* Like moving between companies (for challenge/change).

Makes me wonder what is the difference between the two types of personalities and how those affect the organization.

For example, is there more or less innovation in 37Signals ? Are people more ready to step up and fix/report problems outside their immediate responsibilities ?

1 point by nikcub 1 day ago 2 replies      
"Besides being small, 37signals has always been a flat organization."


"We've experimented with promoting a few people to manager-level roles."

So they are flat, with no chief anything, but they have 'manager-level roles'? Am I missing something or is there a contradiction in his description?

Edit: Got it, 'experimented' meaning that they tried, didn't work, and they went back to flat. Thanks for the responses.

Besides that I find that even with no job titles or formal roles, people within a company tend to self-organize and take on de facto roles. The only difference is that it isn't formalized, and people who end up managing aren't being paid manager salaries or getting manager options.

2 points by adaml_623 1 day ago 0 replies      
I think it's a good thing that a potential employee of Jason's can read his blog and be warned or at least aware of what kind of company he's running and potential future careers there. Personally as a developer I'm looking forward to gaining more managerial experience as I can see how you can make bigger more exciting things as you have more people contributing.
Incidentally I work for a company twice as big as 37 signals although growing quite fast in comparison and I can see that the people in the nontechnical roles quite enjoy the possibilities (and realities) of progressing to different and managerial roles. It makes me happy that they can stick around and don't have to leave when they might otherwise stagnate.
2 points by terryjsmith 1 day ago 1 reply      
There seems to be a rift here between what people are good at/what they want to do now and what they want to do later. I consider myself a good programmer, but it's not where I want to be forever. I have always wanted to branch out and learn multiple facets (management, service, sales, etc.) and this seems like it would be limiting in that regard. I guess I just wouldn't be the target of 37signals?

Without wanting to sound snide, do you look for people who want to stay in the same role forever? It surprises me that people's ambitions to branch out and take on more responsibility haven't caused this to come up before. A salary bump, more benefits, and more vacation time wouldn't help me placate my desire to learn about other skill sets.

6 points by mmcconnell1618 1 day ago 2 replies      
I believe some sociologists found that personal relationships begin to break down at about 150. Beyond that it is very difficult to maintain meaningful interaction in person. Online relationship numbers are much higher so maybe a distributed team like 37Signals can get away with this for a while longer.
3 points by imbriaco 1 day ago 0 replies      
I was one of those experiments, as the Operations Manager, and I like to think it went pretty well. As many people here have rightly pointed out, though, being hands-on is the key. I continued to do a lot of the day-to-day technical work.

The main difference between what I did, and what the rest of my team did, was that I had the added responsibility for dealing with partners and vendors, negotiating contracts, scheduling hardware installations, and the like. The rest of the team was able to remain completely focused on the system administration issues that we cared about while I split my time.

For our team, it made good sense. For the other development/design teams, the way they're run makes sense. It all depends on context.

1 point by Uchikoma 14 hours ago 0 replies      
My view on managers: Turn your org chart 180°. All managers are supporting those "above" them, this is their primary goal. Usually companies have this the other way round. This also means there is no problem with "useless" middle management (Scrum calls this manager type ScrumMaster).
1 point by slee029 1 day ago 0 replies      
While I completely agree that flat vs a vertical hierarchy should be assessed from organization to organization, I tend to prefer flat structures mainly because they allow for the culture to mold perception of progression over an existing structure itself. What I mean by this is that if you have a structured way for internal progression (usually vertical) people mold their perceptions around that ladder no matter how much you try convincing them otherwise.

You can clearly see this being played out within the big 4 accounting firms (I recruited for them and from them). Within the firms its extremely vertical in that progression is dictated largely by how long you stayed until you hit partnership where its strictly vacancy. Thus, you're basically looking at steady yearly promotions until you reach being a senior manager after 6-8 years within the firm.

This is where I was able to take the most senior people usually in a seasonal manner pretty easily. This is because after being a senior manager you really have only two trajectories within the firm, associate partner or partner. The AP is basically a position they created to please senior managers who sounded too old and weren't good enough to be partners. So what you generally see is 3-4 hotshot senior managers all vying for the 1 partnership position that will be available that season/year. Inevitably I'll have 3/4 partner potential senior managers leaving because they know they're better off leaving the firm and going to an industry position or worse a competitive firm. They already know the stigma of being an AP.

Thus, you don't simply see attrition at the top level, but the attrition of the very best at the top level and the rest being APs. What's worse is those guys who are the best usually have a loyal following within the firm. Well guess who gives me a call after placing that senior manager as a hiring manager where they're building a team? Now you see an attrition of even better people who you were probably underpaying at junior positions leaving the firm for better pay and better hours. The only guiding light there is you're hoping that senior manager becomes their client in the future.

Thus, you see a system where the highly vertical nature of the structure led to a culture where attrition was the norm. While it might be naive to think so, I think being a flat structure might give a better chance for the culture to shape that perception of the promotion and have them "feel" it rather than perceive it.

1 point by trailrunner 16 hours ago 0 replies      
This "flat" system sounds very nice, and I really like this rotation of responsibilities and "managerial positions" to all members. I wonder though, if the same principle is applied to the CEO and Business Owners positions as well (both in respect of decisions and profits). If not it doesn't seem that flat to me.

So preaching "flat" while being a business owner sounds a little suspicious, because you are preaching everybody about flat while standing above them.

I hope 37signals is truly different (I cannot judge since I don't know crucial details), because if at some point after ten years the business is sold to a big corp, and everyone finds himself trapped below ten levels of management, without a career path, 4 day workweeks during the summers of youth will sound like a bad joke.

2 points by orev 1 day ago 0 replies      
This is a lot of BS, spoken by a Founder with no understanding of employee needs. Employees do not have their eyes set on always staying where they are. They are not reaping the monetary rewards the way a Founder is. To an employee, EVERY job is a stepping stone to the next one, eventually. This Founder is completely self-absorbed.

Job titles are free and it helps the employee along on their career. No, they shouldn't be inflated, but they shouldn't be held back either. Eventually the employee needs to put that job on their resume and if it looks like they were an entry level person because the Founder was a jerk about titles, it's better if the employees leave now instead of later.

1 point by clarebear 13 hours ago 0 replies      
Sarah Hatter, who is the employee described in this story, left an insightful comment that unfortunately showed up as a child of aless insightful comment and is therefore buried. Check it out here: http://news.ycombinator.com/item?id=2417278
2 points by rishi 1 day ago 1 reply      
"And because we don't have a marketing department, we don't have a chief marketing officer."

37 signals is amazing at marketing. Their blogs. Their books. Video Lectures. Mission statements. Guest posts.

1 point by raheemm 1 day ago 0 replies      
That idea about rotating leadership within the customer service team is brilliant! I wonder if changing it every week is too frequent though - what about doing it biweekly?
1 point by MrMan 1 day ago 0 replies      
The only way to solve management issues with a high degreee of confidence is to stay small enough to avoid management. The NASA analogies are problematic, however, because large organizations do indeed manage to manage themselves while completing critical projects. Which is more interesting? Large-scale management, or head-in-the-sand? I could personally never work in a large-scale organization, but how can we all avoid these issues and still create a highly functioning economy, which produces both critical and lifestyle goods and services?
1 point by mayutana 14 hours ago 0 replies      
How does such a model work for tasks where you need to perform long term planning? Similar to national elections, such a model could result in policies being changed every time a new manager is in place.
1 point by skrebbel 1 day ago 0 replies      
Why don't you just split into two little 37signalses when the time comes?

In all the proposals / solutions mentioned here for dealing with growth while maintaining a flat culture, this is one approach I haven't seen yet. It worked well for a Dutch consultancy firm called BSO, which reached over 6000 people in the 90's, all organised into near-independent little companies of 50-ish people each, all targeting a different market, but each with the same culture and values. The firm itself was a flat company of these little companies (called "cells"), so effectively there were just 2 to 3 layers of management.

(http://www.extent.nl/articles/entry/origins-original/ if you care about the details)

2 points by mcdowall 1 day ago 2 replies      
I find it outstanding that they have 5m users and only 5 support staff!. I would love to know how they manage that.
1 point by shn21 1 day ago 0 replies      
In many companies the managerial titles are invented incentives, not necessarily they "manage" people. They exist as part of the incentive package, and certain companies attract certain personalities who would be happy with titles. Management position gives one probably a different satisfaction, "doing better than the other guy", and assumed better pay above the managed is all that is needed. It's a kind of a distraction. It is not bad unless it kills nurturing leadership environment. The best case is that laders become chosen managers by their peers. The worst case is that those who can not manage become assigned leaders (managers) by "the management".
1 point by fletchowns 1 day ago 0 replies      
Four day work week in the summer? Holy cow that sounds awesome.
0 points by ck2 1 day ago 1 reply      
Way to reward the one critical person who actually has to do the hard work of interacting with your customers AFTER they've been sold and paid you money.

That's the hard part because it's only dealing with problems and never "great to have to call you".

I guess customer service these days is disposable and easily replaceable.

1 point by hpux 1 day ago 0 replies      
But what if a young startup company want to use this approach. consider a programming team which its developers are not in the same level of expertise and ability. Is it possible for this team that the manager rotate among team members? Doesn't it lower the performance of the members and the self-management of total team?
Before I Die... candychang.com
408 points by Dysiode 1 day ago   62 comments top 23
28 points by corin_ 1 day ago 1 reply      
Photo #5 shows a man writing "tried for pi" and I badly wanted to know what the ending was. Hilarious that it was "tried for piracey" (as shown in #9), given he is genuinely dressed as a pirate.

Awesome overall idea, too.

13 points by iamwil 1 day ago 2 replies      
It's not inspiring unless it moves people to action. I hope those that wrote on there are on their way to figuring out some way to make their dreams and goals come true.
11 points by staunch 1 day ago 1 reply      
...begin receiving life extension therapy? ;-
11 points by Kilimanjaro 1 day ago 2 replies      
Hmm, great idea for a web project that can go viral real quick.
4 points by mgkimsal 1 day ago 0 replies      
Found this - not quite as good, but lots of pics: http://www.beforeidieiwantto.org/usa_other.html
3 points by jrockway 22 hours ago 2 replies      
Everyone has hopes and aspirations. What's troubling is realizing that you have an aspiration that you will never be able to fulfil.

I want to fly a fully-loaded 777. I want to sleep with every member of my favorite all-female band. These things are never going to happen. Does that mean my life is a failure?

19 points by s00pcan 23 hours ago 0 replies      
This is the least scary way you could write "Die" on a wall 81 times.
6 points by sagarun 23 hours ago 0 replies      
Another interesting social project from the same person http://candychang.com/post-it-notes-for-neighbors-2/
8 points by zarprey 1 day ago 0 replies      
What a great use of a neglected space. Really inspiring project. It'd be great to do a timelapse of people writing on the wall. The variety of people would be interesting to see.
1 point by InfinityX0 23 hours ago 1 reply      
The less I sit and ponder about the meaning of life and what I'm doing and what to do in the future, the happier I am.

Before I die, I don't want to contemplate what I want to do before I die. Not to say I'm not achievement-oriented, because I am, I just associate "before I die" type statements with similar "what if?" personalities - although obviously "what if?" is a concrete statement while "before I die" still leaves room for change, which can inspire hope - although it most often won't inspire action.

3 points by ksullenberger 10 hours ago 1 reply      
Interesting to come across this shortly after watching a video of Steve Jobs's commencement speech to Stanford students.

"For the past 33 years, I have looked in the mirror every morning and asked myself: “If today were the last day of my life, would I want to do what I am about to do today?” And whenever the answer has been “No” for too many days in a row, I know I need to change something."

4 points by spencerfry 1 day ago 2 replies      
This is genius. Need this in every city.
2 points by nhangen 1 day ago 0 replies      
Fantastic project, and it's also a fascinating social experiment. Many people talk of changing bad situations, but this is a case of using art and engineering to make a solid attempt.
1 point by mhb 14 hours ago 0 replies      
3 points by mrleinad 22 hours ago 2 replies      
How long 'til someone creates a cool site with this idea? I bet less than a week..
2 points by gcr 1 day ago 0 replies      
This is exactly the kind of thing my art professor would love. Interesting!
1 point by rokhayakebe 1 day ago 1 reply      
I found this project a few weeks back and loved it. Almost posted it here. I would love to see a web version of it or at least aggregating tweets with a hashtag like #b4id
2 points by sharmajai 10 hours ago 0 replies      
I think the biggest reason that draws people to the board is the anonymity of the response.
1 point by hammock 1 day ago 0 replies      
I did come across this a few days ago and thought it was cool. Would not have expected something like this to make the front page of HN.
2 points by wicknicks 20 hours ago 0 replies      
Totally liked the "Before I Die... Make a difference" message.
1 point by testingisageek 22 hours ago 1 reply      
Wish we had this in our city pluse I like the idea the othe guy said about having a time lapse that would be really neat great work.
1 point by topijo 11 hours ago 0 replies      
Before I Die... I want to have truly lived.
1 point by zelandpanther 15 hours ago 0 replies      
Before I die I want to have a great life.
Facebook open sources its servers and data centers gigaom.com
409 points by arithmetic 10 hours ago   83 comments top 17
37 points by flyt 10 hours ago 2 replies      
Get all the CAD files and other specifications here: http://opencompute.org
54 points by beagledude 9 hours ago 2 replies      
say what you want about Facebook but I give them props for open sourcing so much code to the community. Cassandra, Thrift, Scribe,Hive, etc...
21 points by codex 6 hours ago 4 replies      
This is a strategic attack on Google. A proliferation of scalable data centers hurts Google a lot more than Facebook by enabling Google's competitors. Cheap computation matters much more to search engines than social networking sites.
7 points by corin_ 9 hours ago 2 replies      

  Sorry ARM.

Have ARM actually done more than announce that they will be moving into servers? If they have then I missed the announcement. Either way, seems like a fairly stupid dig at ARM, can't really expect companies like Facebook to have moved onto ARM servers this quickly, even if it is the direction they intend to go in.

12 points by whakojacko 10 hours ago 1 reply      
Link to an article in James Hamilton's blog with actual pdfs of various designs:
6 points by michaelbuckbee 9 hours ago 2 replies      
I'd be very interested in hearing from someone with more experience in running their own hardware what portions (if any) of what Facebook has announced today is applicable at the small scale of say having a couple of co-located racks in some datacenter. Maybe the base server designs?
4 points by yanw 10 hours ago 5 replies      
Not sure how many startups built their own servers anymore, this event seems like a response to the Greenpeace accusations of Facebook's environmental responsibility or wherever.

Edit: I agree it's a good thing, it's just that hosting a press event rather than just making the announcement through a blog post suggests other motives as well.

4 points by rbanffy 9 hours ago 3 replies      
I don't get the AC PSUs on the servers (http://opencompute.org/servers/). Any reason why those are being used when each 6-rack group has a UPS (and batteries) connected to them? Going DC would get rid of the inverter on the UPS out and the 200 or so PSUs on each server.
3 points by tallanvor 9 hours ago 4 replies      
I'm sure they've done a lot of tests, but running servers in an environment with 65% humidity just doesn't sound good for them.
1 point by skorgu 8 hours ago 0 replies      
What are the chances of these being commercially available anytime soon? Is a single consumer (even if it's facebook-sized) enough to jumpstart a B2C supply chain? It's hard to see this catching on with anyone not building green field unless it can come in at least on-par with a Dell/HP/Supermicro quote.
4 points by iloveponies 9 hours ago 1 reply      
One thing I've found interesting: The decision to have batteries not per server like Google, or per data centre, but per group of racks.
1 point by ignifero 6 hours ago 1 reply      
Shall we expect Google, Amazon, Microsoft et. al. to start posting their energy efficiency stats from tomorrow?
5 points by budwin 9 hours ago 0 replies      
This is a great talent acquisition play.
1 point by jacques_chester 4 hours ago 0 replies      
Ah, economies of scale, is there anything you can't improve?
1 point by lrcg 9 hours ago 1 reply      
Ethernet-powered LED lighting :D
-4 points by amitraman1 10 hours ago 0 replies      
-4 points by davidpitkin 9 hours ago 2 replies      
Facebooks attempts at openness make me wonder what they are trying to hide... misdirection?
Larry Page Begins Major Google Reorg: Engineers, Not Managers, In Charge allthingsd.com
407 points by citizenkeys 2 days ago   151 comments top 29
74 points by SoftwareMaven 2 days ago 3 replies      
I question the title. It doesn't sound like engineers are in charge, instead, it sounds like smaller operating units will be in charge. That is a very different thing from having the inmates running the asylum.

I have yet to see a large company that successfully treats software as a creative endeavor instead of a production line that still manages to be able to focus on solving customer problems. I really hope that Larry figures this out because, if he does, that will (IMO) be his greatest legacy.

What I think will happen, though, is Google will focus even more on technology and care even less about actual users.

53 points by CoffeeDregs 2 days ago 5 replies      
This is a big story. I'm both an engineer and a manager (to which engineers will say "management!" and managers will say "developer!"), and I haven't seen this pendulum swing back and forth so much as be ripped in half and pulled in opposite directions. Google's obviously got very smart folks in both engineering and management, so it's going to be very interesting to see how this is handled.

I can't imagine a Microsoft, Sun, Oracle, etc going through this exercise, so I'm seriously rooting for Google. It'd be lovely for this change to produce some real knowledge on how to run a modern, big, high-speed tech company without getting trapped in the argument over engineering-vs-management.

8 points by 6ren 2 days ago 0 replies      
It's also similar to how Berkshire Hathaway is run; and how Christensen advocates nurturing disruptive businesses - smaller units can get excited about smaller sales that are a rounding error to Big Google (new markets start small); independent units are free to customize their business model and how they do things to what fits the opportunity (instead of fitting in with the parent's model and processes - which has compelling economies, but only early).

e.g. it seems highly unlikely that advertising is the ideal revenue model for every business Google is in. The appropriate fit might be sales, renting, monthly charge, pay-per-use, royalty, per-developer, per-other-metric. It's not necessarily about extracting more money from customers, but revenue that makes sense for customers - that they prefer, that makes sense in the competitive set, that motivates the business to improve along the right dimensions.

9 points by blinkingled 2 days ago replies      
This got me thinking about role of managers in a modern org (to simplify things let's say it's a Tech company).

It certainly needs a CEO/Visionary, it most likely needs HR and front/back office folks, it certainly needs PR and marketing people. But in a world where people communicate rarely in person, have their own management and economics 101 abilities, are smart enough to not work against their own interests (and look after the org's interests) - what's the role of the future manager?

It sounds inevitable that senior Engineers will double up as managers for their group as and when required (working with marketing etc.) instead of it being a dedicated managerial position.

16 points by joebadmo 2 days ago replies      
It's awesome to see a fundamentally engineer-driven company like Google and a fundamentally designer-driven company like Apple become so successful. It has always seemed to me that management is an important but overemphasized skill (as a fundamental trait of the way large organizations work) and it's really refreshing to see this happening.
6 points by microcentury 2 days ago 0 replies      
The reality of a large corporation like Google is nowhere near as simple an engineer-vs-manager dichotomy as many of the comments on this thread would make it. Products need to be developed, but they need to be supported and sold too. Which of these functions is most important depends on your world view and your tolerance for angels-on-a-pinhead debate, but it's undoubted that each of them are crucial.

An engineering mindset of automation and solution-by-algorithm gives us the miserable customer service that Google is famous for; a realisation that people are tricky and messy gives us something more like Zappos. The people who are good at support and managing support teams are not like engineers, and the people running sales are an entirely different breed. Rare is it to find someone who can successfully manage all three. Indeed, I would go out on a limb and say - as an engineer myself - that it's easier to find a non-technical person who can make a positive impact in product development than it is to find an engineering who can significantly improve sales or support.

22 points by aridiculous 2 days ago 3 replies      
Can someone who works at Google chime in with what the organizational temperature is like at Google? Does this whole 'party time's over for the managers' thing we're hearing about have any real weight to it?
4 points by drawkbox 1 day ago 1 reply      
Seems to work pretty well for Honda. They innovate and everyone still copies their designs and products, but they also have great financial results magically with innovative products. http://www.forbes.com/forbes/2006/0904/112.html [2006]

I hope this is a trend in America, Google can set a great example (as all companies early on do) on keeping innovators in charge with a startup culture/meritocracy.

Before the recent change in CEO, I felt Google was getting too suits focused and simply competing on a byline/reactionary technique. Bring it back Google.

5 points by sabat 2 days ago 0 replies      
Certainly, Rosenberg has been crucial to Google's success, so his exit has come as a shock to pretty much everyone to whom I've spoken.

That said, its timing seems quite convenient, particularly in relationship to what looks very much like a significant reorg that is currently underway at Google, said sources familiar with the situation.

Note first that Rosenberg's replacement wasn't immediately named and it's not clear whether Page even feels one is needed.

Maybe Rosenburg helped Google do great things. Maybe I'm about to over-simplify. But weren't the things that made Google a true powerhouse created long before guys like this were hired -- back when the company was more engineer-driven?

It seems to me that Larry Page's frustration has been growing as he watched MBAs take credit for the success the engineers had created years before. If that's the case then I wish him success in changing the company's structure.

2 points by ramanujan 2 days ago 1 reply      
This may finally lead to outright combat between the ChromeOS and Android groups.

Chrome the browser itself is fairly successful, as are Android phones. But Chrome OS vs. Android...that is a huge showdown. ChromeOS is a minimalist OS, whereas Android is a fat client. Philosophies are totally different.

Attitude within Google right now is "let the market decide". Only a company with the free cash flow of Google could build two operating systems intended for mobile devices and take that kind of approach.

I'll get my popcorn.

13 points by asknemo 2 days ago 2 replies      
Ever since "management" and the dedicated "manager" were invented, we have been told, increasingly in recent decades, that they, rather than talents in other roles, are the key to business success. With the increasing importance and accelerating pace of innovations in our time, it's time to test if to what degree such doctrine would still hold true. Good job Larry. That's some risk worth taking.
3 points by clistctrl 2 days ago 0 replies      
I think this is a great direction for Google, but it certainly is not a direction most other companies with equivalent growth can pursue. I think one of the unique aspects of Google, is the type of engineer they pursue.
2 points by endlessvoid94 2 days ago 1 reply      
I'm really interested in seeing how companies grow; I hadn't realized quite how large of a role non-engineers played in Google's structure.

Glad to see it's moving in the right direction.

2 points by rwmj 2 days ago 1 reply      
So here's a question for potential HN entrepreneurs:

If your company got as big as Microsoft or Google, would you split it up, spinning off subdivisions as separate companies?

And (in the case of MSFT/Google) why haven't they done that?

3 points by spydertennis 2 days ago 1 reply      
I hope this doesn't create a Microsoft like situation where its very difficult for departments to work together.
3 points by dennisgorelik 2 days ago 2 replies      
GOOG is 3% down today (while market overall is about the same).
I personally like Larry's change, but average investor seems to be skeptical.
1 point by jay_kyburz 2 days ago 1 reply      
I don't think they should be letting Managers or Engineers run things. I think they need to have... I'm not sure of the title... lets call them Vision Carriers. In the video game industry we call these people Creative Directors.

These vision carriers need to understand the product they are building and the people who will use it.

They don't need to be good a managing people or budgets, they don't need to write code. They need to understand what is good and what is bad and they need to be able to clearly communicate it to the team.

1 point by teyc 2 days ago 0 replies      
No, I don't think this will solve anything.

The problem with Google is that it is sized to deliver big brands, big scale and big projects.

First. Google today cannot deliver small brands because failure is very expensive. Every Wave, Buzz, Knol costs Google because future enterprises are less likely to want to try their products.

Startup culture could no longer exist in Google, because the salary means that the people will be taking risk with other people's money, and it doesn't work for early stage projects.

Secondly, Google cannot deliver small projects. I can relate this to my past history working at a large mining company, there are some mineral deposits that they may not develop but sell off because it is too small for a company their concern. The management overhead is simply too big.

Finally, to deliver large projects require specialist departments. The functional structure is there to deliver this. The alternative would be a matrix structure where there will be a lot of confusion as to who reports to whom, or serious duplication.

1 point by abbasmehdi 2 days ago 0 replies      
This is such a good move! It gives Google the nimbleness, hunger, and guerilla mentality of a start-up in new areas it wants to explore through these small mostly-autonomous teams, while simultaneously allowing it to defend the already captured beachheads (search, gmail etc.) - all funded by the deep, deep, Google pockets.

In any innovation-oriented org, curious engineers and inventors need to be able to play and push the boundaries, but even large organizations with strong financial backs are so defensive when it comes to innovation, so afraid to fail, or waste resources on experimenting. Google has always been okay with this "waste". If you go back before year 2k and try pitching to a goliath sw company to let 20% of dev time be spent on employees' projects of choice you'd get assaulted by the CFO. Google was okay with this "waste", because they knew if you let the right players roll the dice, every now and then you'd hit jackpot. And they did! Many of their most successful products came out of the 20% project.

Organizations today have split the vision and execution aspects of building something. The vision comes from management and the execution from engineers " this is straight from the defensive playbook - ‘engineers can execute with minimum risk, and managers are close to the customer therefore know what will sell for sure'. This kind of thinking will work when you want to improve marginally (like Henry Ford said something along the lines of 'If I asked my customers what they wanted they'd say a faster horse'), or if you are the market leader, but it will never cause disruption or let you make headway in uncharted territory. It is very important to know when to play offence and when to play defense.

2 points by pdaviesa 1 day ago 0 replies      
I'm beginning to worry about Google. Companies don't make these types of changes when everything is going great.
1 point by akkartik 2 days ago 0 replies      
Seems to fit the playbook at http://news.ycombinator.com/item?id=2369445 a teensy bit, but not the one at http://news.ycombinator.com/item?id=2405198.
1 point by sunstone 1 day ago 0 replies      
This brings to a head the interesting situation of the modern tech company. Unlike companies in almost all other industries, the average developer at Google (and a lot of other companies) needs to be much smarter to do the job than the manager.

So the skill pyramid is actually inverse compared the "military corporation" model. It's also true that many, perhaps even a majority, of the deveopers would be "even better" at management, marketing and strategy etc, than those normally filling these roles.

This situation really does beg for a solution beyond what the typical corporation/MBA paradigm has come up with so far. Kudos to Mr. Page for taking a shot at it.

2 points by noamsml 2 days ago 0 replies      
I wonder if part of this is the result of growing competition from the engineer-driven Facebook.
1 point by donnyg107 2 days ago 0 replies      
I love when companies move back to their purer roots. I don't know where this puts Google's progress as a company over the next few years, but it definitely means we won't be seeing the innovation slowdown that Microsoft experienced after their years of explosion. As long as our tech superstars arn't just turning into company gobbling monsters, but rather are constantly iterating, innovating, and developing their product line like a company should.
0 points by pdaviesa 1 day ago 0 replies      
There is a big difference between a manager and a leader. A manager takes the credit for things that go well and looks for people to blame when they don't. A leader understands that they are only successful if their team succeeds. A manager worries about how the team might screw things up. A leader thinks about how the team can exceed their goals. A manager tries to consolidate their power and protect their turf at all costs. A leader knows that the team follows them out of a sense of mutual respect and understands that if they can no longer effectively lead the team than it may be time to step aside. Leaders are not just found at the top of an organization.
1 point by dr_ 2 days ago 0 replies      
Like I've stated before, this would be the perfect time for Microsoft to take Gundotra back and make him CEO.
They desperately need the same type of change at the executive level.
1 point by swixmix 1 day ago 0 replies      
I mistakenly thought Larry Wall was the new Google CEO. It seemed a little odd at first, but then I thought it was very cool. Now it doesn't seem quite as interesting.
1 point by elvirs 2 days ago 0 replies      
I wonder if this change will result in Google focusing and releasing more hard core technology products or more social products.
-3 points by hobb0001 2 days ago 1 reply      

  That jibes well with Page's push to whittle down Google's
manager bureaucracy, eliminate politicking and rekindle its
start-up spirit.

I first read that as "pot-licking" and thought, WTF is that? A new managerial term like dogfooding?

Show HN: my weekend project, Gumroad gumroad.com
365 points by sahillavingia 3 days ago   202 comments top 58
69 points by sahillavingia 3 days ago replies      
Over this past weekend I had the idea to build a sort of link shortener but with a payment system built-in. There have been many times in the past where I wanted to share a link - on Twitter or just through IM with a few friends - but did not want to go through the overhead of setting up a whole store.

So I built Gumroad. I coded/designed from 12PM -> 11PM on Saturday and 8AM -> 11PM on Sunday. There are still tons of features missing (I'm working on AJAX file uploading next!) but I think it's reached that - buzzword alert! - MVP stage where I want to see if anyone's actually going to use the darn thing (I'm thinking about taking a 30% cut).

Here's an example Gumroad link: http://www.gumroad.com/l/hjbaod - I use Stripe for payments. Here are some screenshots I took while making it: http://letscrate.com/gumroad/gumroad-progress - I didn't use Photoshop so no crazy time-lapses!

I think it has some potential. What do you guys think?

34 points by JoshTriplett 3 days ago 7 replies      
Interesting idea, but I see two main issues with this.

First, anyone who pays and gets to the resulting link can trivially share that link; of course, you can always ask them nicely not to do so, and in some contexts that will work, but in general the security model just doesn't work unless you authenticate each paid user at the destination. You need to come up with an answer to this.

Second, if you market this as a link shortener which requires payment, I think you'll get backlash from people who currently use link shorteners to share links on Twitter and similar; from that perspective it feels like the kind of thing you'd see used by Twitter spammers/scammers. Suggested fix: flip it around, and present it as an astonishingly simple payment system based on URLs, which happens to behave like a shortener.

66 points by bhousel 3 days ago 3 replies      
17 points by jasonlotito 3 days ago 2 replies      
Things you have to look at fast.

* Money laundering. Cap fees now.

* You are using Stripe, but you're still collecting CC data. Are you PCI compliant?

* Does Stripe allow you to do this? Really? Basically, you're acting as a third party processor, an IPSP. People can sell anything through your service (Think adult content)

I'm really interested if Stripe is aware of what you are doing and fine with it.

14 points by Xk 3 days ago 0 replies      
You have an XSS on the login form. I create a page which posts to the login page with the name

" onclick="alert('do evil here')" onfocus="alert('do evil here')" foo="

It errors out, and my javascript is now in the input box. They click the name and then it runs my javascript.

It's great you've escaped < and >, but you need to do more.

15 points by btmorex 3 days ago 3 replies      
What do you plan on doing about fraud? Seems like it would be way too easy to move money around with stolen credit cards.
18 points by mgkimsal 3 days ago 2 replies      
As with many ideas I see floated and mvp'd on HN, I'm jealous. Great idea, good execution. I'd agree with others that the 30% is too high. 5-10% would be acceptable.
7 points by kqueue 3 days ago 1 reply      
Traceback (most recent call last):

  File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/webapp/__init__.py", line 634, in __call__

File "/base/data/home/apps/gumroad/1.349472656690944858/main.py", line 60, in get
if is_logged_in():

File "/base/data/home/apps/gumroad/1.349472656690944858/main.py", line 110, in is_logged_in
s = sessions.Session()

File "/base/data/home/apps/gumroad/1.349472656690944858/appengine_utilities/sessions.py", line 562, in __init__
self.session = _AppEngineUtilities_Session.get_session(self)

File "/base/data/home/apps/gumroad/1.349472656690944858/appengine_utilities/sessions.py", line 142, in get_session
ds_session = db.get(str(session_key))

File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/db/__init__.py", line 1422, in get
keys, multiple = datastore.NormalizeAndTypeCheckKeys(keys)

File "/base/python_runtime/python_lib/versions/1/google/appengine/api/datastore.py", line 180, in NormalizeAndTypeCheckKeys
keys = [_GetCompleteKeyOrError(key) for key in keys]

File "/base/python_runtime/python_lib/versions/1/google/appengine/api/datastore.py", line 2339, in _GetCompleteKeyOrError
key = Key(arg)

File "/base/python_runtime/python_lib/versions/1/google/appengine/api/datastore_types.py", line 364, in __init__
raise datastore_errors.BadKeyError('Invalid string key %s.' % encoded)

BadKeyError: Invalid string key agdndW1yb2FkciMLEhtfQXBwRW5naW5lVXRpbGl0aWVzX1Nlc3Npb24Y.

9 points by retube 3 days ago 4 replies      
How does this work for art though? I mean you want to see the icon/graphic/design/whatever before you pay for it.

Also - once you've been redirected to the page, what's to stop you taking the link and sharing it yourself?

Also also: if I've got something to sell, can't I just bung it on ebay?

10 points by petercooper 3 days ago 0 replies      
Loving the simplicity of the idea. The simplicity is worth a higher cut (though maybe not 30% ;-)) and makes it a lot more attractive to use in small situations. One thing you need to beware of, though, is the filing requirements.. you might have to start issuing tons of 1099s and that process will cost you.
11 points by fizx 3 days ago 1 reply      
Please put a video on the homepage. If I'm on the fence, I'd rather watch a video than create an account.
4 points by donnyg107 3 days ago 0 replies      
If this becomes a high traffic site, it could really help fight internet piracy. If I have a high demand, hard to find video, I'm far more likely to try to sell it than just give it away. And even if I can't because the site is closely watched by the actual copywriter holders, the idea that money can be made off any online property can give internet knowledge and assets the feeling of physical worth, to the degree that people may grow hesitant to just give away their video and music files. It also has potential to detract from the information free-for-all of the internet, as people may also grow hesitant to share in general, but that would only be for sellable things, so blogs and general information are basically out. If successful, this site could make major change in the attitude of the internet. In essence, conflict exists between copyright holding companies, who believe their intellectual property should be paid for, and the general population of the internet, who freely share information constantly. This conflict could seriously benefit from a general shift toward the resounding feeling that information and online assets are worth something and should be bought and sold. That could be of serious detriment to the culture of the internet, but the communities could also gradually adjust. After all, the feeling that assets have monetary value is the way we live in the real world, its only a matter of time before the internet starts to follow.
5 points by kloncks 3 days ago 1 reply      
The copy on the re-direct page is bothering me a bit. Anyone else?

You're being shared Gumroad!

With the "You're being shared". Sounds confusing.

7 points by jcapote 3 days ago 1 reply      
If the payment fails, will you still redirect to the link?

If you only redirected based on successful payments, you could use this as a simpler paypal for charging clients on your site using unique gumroaded links.

4 points by barredo 3 days ago 2 replies      
Is the redirect-link unique in any way? I mean.

If anyone buys the access to a a non-unique-link (ie: http://mybook.com/book.pdf), and then shares the redirected URL to a third person, this third person could load the link without paying, right?

10 points by evoltix 3 days ago 4 replies      
Seriously? I'm not sure I could take anyone seriously that tried to sell me a link of "value." Why not just share the link for free like people have been doing since the beginning of time?

Don't get me wrong. You did a great job getting this rolled out over a weekend and it looks nice. I must need some enlightening because I really don't get it.

3 points by dools 3 days ago 0 replies      
I'm already giving this away for free with a PayPal donate link at http://pickdropapp.com/ but what the hell: http://gumroad.com/l/cvhhwi
11 points by suking 3 days ago 1 reply      
Nice - how about this as a feature: # of downloads allowed. This would allow people to sell just 1 copy or set up something like a groupon-esque clone. First 50 people get 50% off. Then after 50 people say you're too late. Just an idea.
4 points by rokhayakebe 3 days ago 0 replies      
This may just be the simplest way to sell digital goods.

I think all content should be uploaded to your servers otherwise if someone gets to the final link they can just send others to it.

18 points by cavilling_elite 3 days ago 1 reply      
This looks like a really expensive way to get Rick Roll'd :)
3 points by tezza 3 days ago 0 replies      
Seems good.

How long until exact clones appear? What makes GumRoad the micro-paywall of choice?

How long until shortened<-->lengthened websites appear which reduces how many people pay up?

5 points by mtw 3 days ago 0 replies      
Are you collecting taxes? if it's a company registered in the US

Also how do you deal with chargebacks?

4 points by aquark 3 days ago 0 replies      
Interesting concept -- how do you deal with the legalities?

If I buy something am I buying it from you or from the original owner?

How long do you hold onto the funds to deal with any potential chargebacks?

2 points by nyellin 3 days ago 1 reply      
You can tell clients to check the http referrer for your domain. That would (mostly) stop people from posting now-useless destination URLs online.

http referrers are easily spoofed, of course, but it'll be enough to prevent most people from sharing secret urls on twitter. You could also pivot and allow people to upload files to your own server, but that's a different story.

2 points by bryanh 3 days ago 0 replies      
Brilliant little idea, I think the big selling point is speed and ease of use. I might create a similar product to this for BitBuffet.com (a similar file selling service I created), as I think the process can be further streamlined.

Digital sale processes still need streamlining for everyday users (especially one-off users) and I can see a service like this taking off.

2 points by hugh3 3 days ago 1 reply      
I'd work on the name. Gumroad? What does it mean?

To me it brings up an image of a road, covered with gum. I'm trying to get where I want to go, but there's all this gum on the road slowing me down. It's a huge and annoying obstacle. And that is a bad mental image, given that what you're selling is a sort of obstacle.

It's not too late for a different name.

3 points by kloncks 3 days ago 1 reply      
Is this what you've been working on in SF, Sahil :) ?
2 points by eddieplan9 3 days ago 0 replies      
Nice product!

Feature request: use the top half of the screen to show a preview of the linked page rendered as a PNG. Use the other half of the screen for soliciting payment. I want to know what I would get with the payment. How much of the target page is shown should of course be configurable by the page owner.

5 points by schwabacher 3 days ago 1 reply      
I really like you color pallette. How did you come up with it?
2 points by tlrobinson 3 days ago 0 replies      
I already dislike URL shorteners, there's no way I'm going to give my credit card info to one.
2 points by icco 3 days ago 0 replies      
Seems cool. I wish you'd render the about text box for products with Markdown or something though so the links were clickable.
1 point by franze 2 days ago 0 replies      
i love the idea, i hate the new "We have a tiered system for pricing:" basically it says: if you earn less, we will take even more. so basically if - lets say - earn 2 dollars (casual user who sold a psd template for 1$) this service now takes 2$ - 230c = 1.40$ - (1.40$ 0.3) = 98c

this tool should encourage casual use
it makes a perfectly simple product complicated.

please overthink your pricing-strategy. make it as simple as possible, iterate from there.

1 point by primigenus 3 days ago 0 replies      
There's some potential for gamification here. Here's a Gumroad URL which, when paid for, unlocks some kind of challenge that you must solve in order to find a new Gumroad URL. Which unlocks another challenge that leads to another Gumroad URL, continuing for n steps until you unlock the final reward. Each step costs less than a dollar.

How would this have played out if eg. Dropbox had run their challenge on top of Gumroad?

1 point by mekarpeles 2 days ago 0 replies      
Traceback (most recent call last):
File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/webapp/__init__.py", line 636, in __call__
File "/base/data/home/apps/gumroad/1.349498677539326613/main.py", line 292, in post
File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/db/__init__.py", line 1491, in delete
datastore.Delete(keys, config=config)
File "/base/python_runtime/python_lib/versions/1/google/appengine/api/datastore.py", line 516, in Delete
keys, multiple = NormalizeAndTypeCheckKeys(keys)
File "/base/python_runtime/python_lib/versions/1/google/appengine/api/datastore.py", line 178, in NormalizeAndTypeCheckKeys
keys, multiple = NormalizeAndTypeCheck(keys, (basestring, Entity, Key))
File "/base/python_runtime/python_lib/versions/1/google/appengine/api/datastore.py", line 157, in NormalizeAndTypeCheck
(types, val, typename(val)))
BadArgumentError: Expected one of (<type 'basestring'>, <class 'google.appengine.api.datastore.Entity'>, <class 'google.appengine.api.datastore_types.Key'>); received None (a NoneType).
3 points by lux 3 days ago 1 reply      
What are your fees? Didn't see that anywhere on the homepage.
4 points by mgeraci 3 days ago 1 reply      
I like the simplicity of the home page, but I would want to see what a user would see when supplied with a gumroad'd link before singing up.
1 point by suprafly 3 days ago 0 replies      
Traceback (most recent call last):
File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/webapp/__init__.py", line 634, in __call__
File "/base/data/home/apps/gumroad/1.349472656690944858/main.py", line 60, in get
if is_logged_in():
File "/base/data/home/apps/gumroad/1.349472656690944858/main.py", line 110, in is_logged_in
s = sessions.Session()
File "/base/data/home/apps/gumroad/1.349472656690944858/appengine_utilities/sessions.py", line 562, in __init__
self.session = _AppEngineUtilities_Session.get_session(self)
File "/base/data/home/apps/gumroad/1.349472656690944858/appengine_utilities/sessions.py", line 142, in get_session
ds_session = db.get(str(session_key))
File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/db/__init__.py", line 1422, in get
keys, multiple = datastore.NormalizeAndTypeCheckKeys(keys)
File "/base/python_runtime/python_lib/versions/1/google/appengine/api/datastore.py", line 180, in NormalizeAndTypeCheckKeys
keys = [_GetCompleteKeyOrError(key) for key in keys]
File "/base/python_runtime/python_lib/versions/1/google/appengine/api/datastore.py", line 2339, in _GetCompleteKeyOrError
key = Key(arg)
File "/base/python_runtime/python_lib/versions/1/google/appengine/api/datastore_types.py", line 364, in __init__
raise datastore_errors.BadKeyError('Invalid string key %s.' % encoded)
BadKeyError: Invalid string key agdndW1yb2FkciMLEhtfQXBwRW5naW5lVXRpbGl0aWVzX1Nlc3Npb24Y.
2 points by yoshyosh 3 days ago 0 replies      
Am I missing something or could you just employ a download method rather than link? Maybe something like how istockphoto does it. Although the link leads to a purchase terminal, if they make the purchase it would prompt a download rather than a link they could share.

Also link shorteners + asking for credit card information immediately can get iffy in terms of trust and fraud. I understand that it is an mvp though. Later you might be able to employ a buy credits system like istockphoto does.

2 points by ojilles 3 days ago 0 replies      
sahillavingia, your personal site looks awesome too!
3 points by fuscata 3 days ago 1 reply      
I get a broken lock icon, and "Connection partially encrypted" message. You need to make sure all externally linked resources on the page use SSL. Specifically: change http://fonts.googleapis.com/css?family=Cabin:regular,bold to https://...
1 point by ck2 3 days ago 0 replies      
Just a caution, if you are taking in money via paypal and then paying out via paypal, paypal will probably shut you down within a month. They don't like competition.
1 point by jimminy 3 days ago 1 reply      
First off, I like the idea, but there are some noticeable flaws, many which have been brought up.

One interesting one for me, which is more an oversight, is that anyone can make money off of the sale of a link. There is no way to validate that the person posting the link, is the owner of the content. So someone could sell links to a page on HN, Reddit, Techcrunch, etc. at no expense to them.

If this did occur, I think it would cause a quite negative view of Gumroad links, as being scammy. In which case, people would begin to avoid them, reducing their effectiveness as a possible sales medium. Without oversight, as to who is selling a link, this might end up smothering itself out.

3 points by mizerydearia 3 days ago 0 replies      
1 point by Noleli 1 day ago 0 replies      
I saw this post the other day, then came across Pulley. Is there a difference? http://pulleyapp.com/
2 points by bokonon 3 days ago 0 replies      
I saw it mentioned here already, but the idea of a "Name your Price" option would be really cool. Just like how Bandcamp does it. I'm always more motivated to support artists that chose this option.
1 point by erikch 3 days ago 0 replies      
I've been thinking about this exact problem for a few weeks now. I have gone as far as buying a domain for it (epayfiles.com) and I just started coding. I think I'll continue on with my project I'll just focus on a different payment niche.

After doing some quick research I found five or six sites with similar ideas. Most of them focus on selling digital files not links. The link idea sounds novel. The presentation is also very clean. Looks good.

1 point by bauchidgw 3 days ago 0 replies      
please tell us when the first (real) vc are knocking on your door ... this is just awesome and has more potential then the most startups covered by techcrunch and co
1 point by ddkrone 3 days ago 0 replies      
There is no way to stop re-selling of the content once somebody has bought it short of implementing some horrendous DRM system.
2 points by jorangreef 3 days ago 0 replies      
Well done this is brilliant.
1 point by potomak 2 days ago 0 replies      
This is my daily fail: http://potomak.tumblr.com/post/4361901296/developer-business...

Developer ≠ Businessman

2 points by tommoor 3 days ago 0 replies      
I think it's a great idea, and really well implemented so far.

Best of luck with it!

1 point by livejamie 3 days ago 0 replies      
I like it, there's a lot of functionality missing, as you said but tons of possibilities.

I'd like to see a "pay as much as you'd like" feature, where you can set a minimum amount (like radiohead and girl talk do) but still allow them to pay more.

2 points by caioariede 3 days ago 0 replies      
If the value is zero the user is being redirected to home, after accessing the link url.
1 point by DrOkter 3 days ago 1 reply      
Why wouldn't stripe just implement this themselves? Since their payment processing service (and API?) is 99% of the project, seems like they'd make their own and cut you off if this gained any traction.
1 point by huge_ness 3 days ago 0 replies      
So it's funny that this happens today: http://news.ycombinator.com/item?id=2407969
1 point by Flam 3 days ago 0 replies      
How do I know that, when I pay, I am actually getting what I am paying for?
How do you handle chargebacks etc..
1 point by dps 2 days ago 0 replies      
Great idea. Your email address matching is case sensitive, you might want to fix that.
1 point by woodall 2 days ago 0 replies      
Really neat way to sell vulnerabilities.
Why Some People Can Run on Little Sleep and Get So Much Done wsj.com
281 points by pkarbe 2 days ago   123 comments top 38
43 points by jasongullickson 2 days ago 6 replies      
I'm glad that I finally have something (albeit thin) to point people to when they feel the need to lecture me about my sleeping habits.

As long as I can remember I've been happy with a mix of 4 and 6 hour sleeping sessions, two or three days of 4 followed by one night of more sleep (typically 6 hours) and then back to 4 hours again.

Under the recommendation of my peers and physicians I have attempted to do 8 hour nights but the results are that I feel worse in the morning, and each night I attempt to sleep 8 hours waking up gets harder and harder.

Over the years I've developed a few theories as to why I need less sleep than is recommended and someday when I get around to finishing my EEG project I'll gather some data to back them up, but for now I'm just making the most out of the extra time I have the same way someone with a different biological advantage might.

I will also mention that (as mentioned elsewhere here) there are definitely people at the other end of this curve who's performance is shockingly better if they get more than the "required" 8 hours of sleep per night, and I believe that we could all benefit by recognizing this fact and adjusting our cultural expectations to accommodate these patterns as well. I think with a little flexibility on both ends we'd see a significant increase in overall productivity and quality of life.

In other words "When hungry, eat. When tired, sleep." - http://users.rider.edu/~suler/zenstory/whentired.html

8 points by tokenadult 2 days ago 0 replies      
"A few studies have suggested that some short sleepers may have hypomania, a mild form of mania with racing thoughts and few inhibitions. 'These people talk fast. They never stop. They're always on the up side of life,' says Dr. Buysse."

Reduction in sleep is a known symptom of abnormally elevated mood, whether hypomania (elevated mood without psychotic symptoms) or mania (elevated mood with psychotic symptoms). For most normal subjects, as has been demonstrated by studies of unusual sleep patterns in armed forces personnel, reduced hours of sleep or disrupted daily sleep cycles seriously degrade performance of many tasks involving judgment or multitasking--without the subject of the experiment being aware of the degraded performance.


Note that controlled reduction of sleep has been shown experimentally to elevate the mood of depressed persons. In other words, if a person has had a prolonged period of depressed mood, and begins reducing hours of sleep (especially if a light box turns on to help the person wake up on time in the morning), that can bring the person closer to normal mood.


Following up on the interesting comment posted first by mechanical_fish, there surely is a range of variation of "natural" human need for sleep, with most people concentrated in a band of needing approximately seven to eight hours of sleep a night, and some few needing significantly less, and some few needing significantly more. But social pressure and environmental conditions for sleep induction (electric lights in the evening) in current society probably result in most people getting less sleep than what they need to perform at their best when awake and to maintain good health.

91 points by bound008 2 days ago 3 replies      
I emailed the researcher, whose address was at the end of the article with the appropriate gene data (BHLHE41 on Chromosome 12) to see if my DNA is a match. The article said its a mutation, but maybe those with the mutation exhibit a certain codon pair. Its an amazing time when you can read an article about such a thing, and then cross check your DNA in a matter of seconds. Articles will have to start posting the raw DNA for results.
38 points by silverbax88 2 days ago 3 replies      
I think it's obvious what we must do next. According to every science fiction film or book I've ever read, we must capture them, confine them and study them in an attempt to learn their secrets and duplicate it in everyone else.
40 points by michaelcampbell 2 days ago 2 replies      
This reminds me of the studies not too long about how some very small percentage of the population actually CAN multitask well. Then a very large percentage of the population used that as "evidence" to justify their existing habits. I see it here already.
15 points by lkozma 2 days ago 1 reply      
It's a false dichotomy, on a lot of hard problems progress is a step function, and you often "get much done" while sleeping. I.e. when you wake up well rested you see things from a different angle. If it's something like chopping wood, sure, the less you sleep the more wood you chop, within reasonable limits, but I don't think that is what these articles aim for. I think it's wrong to look at sleep as a waste of time the same way time spent thinking about something is not wasted either.

Here's some information I mostly agree with:

24 points by Roritharr 2 days ago 2 replies      
As someone whose blanket feels like its made out of lead every morning after 7 hours sleep i have to say: unfair. :(
9 points by mbateman 2 days ago 0 replies      
I've always wondered if this was mostly a psychological issue.

There are two circumstances in which I get less than 7 hours of sleep a night: if I'm really stressed about getting something done, or if I'm really excited about getting something done.

In the first place the lack of sleep exacerbates the stress and really starts to weigh on me. But in the second case it doesn't seem to have much negative effect.

Now if only I could continuously keep my motivation up...

7 points by kls 2 days ago 1 reply      
There has been a link to depression and too much sleep so much so that sleep deprivation is used as a treatment for depression where other treatments fail. It actually puts the patient into a manic episode.

It was peculiar to note that people who are short-sleepers also share a slight manic trait in their personality. While the article makes short-sleep cycles out to look like all sunshine and roses it is not all it is cracked up to be. I get between 2 and 4 hours sleep a night and on a good night I get 6. I have to monitor the sleep I am getting because if I allow myself to fall into a cycle of 2 hours for an extended time I start to have problems with my heart and abnormal rhythms. If the > 4 hours cycle goes on for more than a week I have to start taking medicine to sleep to ensure that my body is receiving an adequate amount of sleep. I see no negative effects if I get 4-6 a night, but it is probably safe to assume that short-sleep cycles rides the line between good and bad health. I never considered myself a short sleeper I just figured I have insomnia but never worried too much about it because I feel no different if I get 4 or 8 hours of sleep a night (if I can get 8) and the fact that my father and grandfather shares the trait and are healthy (grandfather is almost 90) . On the plus side, I experience more life and get more done which are really the only benefits to sleeping less.

4 points by shawnee_ 2 days ago 0 replies      
Christopher Jones, a University of Utah neurologist and sleep scientist who oversees the recruiting, says there is one question that is more revealing than anything else: When people do have a chance to sleep longer, on weekends or vacation, do they still sleep only five or six hours a night? People who sleep more when they can are not true short sleepers, he says.

The article didn't mention this, but the ability to wake up regularly without an alarm clock is probably another commonality short sleepers have. Although < 7 hours isn't something I can do regularly, I can't stay in bed, even if I'm a little tired, much past 6 AM on any day of the week.

"People need less sleep as they get older" is something I've heard a lot, but don't know. Sleep patterns seem pretty ingrained, and people with weird sleeping patterns tend to be either hardcore early birds (me) or unapologetic night owls.

7 points by mironathetin 2 days ago 0 replies      
I am 46 now and I still need more than 8 hours a night.
I tried less, but that does not work: thinking is a torture then, sports too.

If I get enough sleep, I feel great, I get 3 times as much done and I run and swim like a champ (still).

I love to get enough sleep!!!! It simply feels great.

6 points by olliesaunders 2 days ago 3 replies      
Damn you, science! I've read so many studies saying there's absolutely no way you can get by without at least 7 hours sleep and now you tell me that that completely doesn't apply to 1-3% of the population?! That's actually not that small of a percentage. How big were the sample sizes of all the other studies? Did nobody encounter at least one of these low-sleep requiring people? Maybe they were just eliminated as being an anomaly.

I've met some of these people who insisted they didn't need much sleep before and now I seem like an idiot for telling them that it they would probably feel better if they got more.

This is fantastic research, I just wish it had been around 10 years ago.

10 points by Vivtek 2 days ago 4 replies      
Candidate number two for gene surgery (my current #1 being that color vision y'all talk about so much).
4 points by Tycho 2 days ago 2 replies      
Is this few-hours sleep business feasible when you need to think deeply about abstract things during the day, eg. programming? I can see it working if your success is tied to being energetic, on the ball, constantly negotiating, acting on information or leading lots of people. But what if you need to do the analysis yourself?
15 points by codedivine 2 days ago 1 reply      
The article is mostly content-free.
3 points by mzl 2 days ago 0 replies      
I used to know one of these short sleepers. He had never felt the need to sleep more than about two hours per night, and did so for his whole life (which was respectably long, no noticeable side-effects from the exceptionally short sleep). He used a lot of the extra time to run a small local business, interact with customers during the day and do the administration during the night.
1 point by Swizec 2 days ago 3 replies      
Not saying that I'm one of the sleepless elite, but I seem to function best on 6 hours of sleep a day. Whenever I try to sleep more I just feel tired all day and when I sleep less ... well that depends on how much less.

For optimum energivity I find an hour of sleep is best, just enough to reset your cycle. But you can't do this more than once at a time, the next day the whole 6 hours are needed.

Don't have any idea why I'm like this, but I'm told that even as a baby I would often lie in bed for hours before finally falling asleep and as a toddler I would wake up at 5am because I was put to bed so early. Nowadays a healthy 4am to 10am schedule seems best.

Oh and anyone who doesn't want to sleep as much as they should, meditation is a great way of doing it. I managed to shave 2 hours off of my daily sleep need with 10 minutes of meditation ... so essentially I averaged 4 hours a day, for something like 5 years before I got out of the meditating habit for varying reasons.

3 points by keyle 2 days ago 1 reply      
Lucky buggers. Technically since time is money, that could make them 16% richer than most of us (assuming they sleep 2 hours less).
2 points by jcl 2 days ago 1 reply      
Given that the trait is genetic and extremely advantageous, why doesn't a much larger portion of the population have it? Is there a significant downside?
1 point by ComputerGuru 2 days ago 0 replies      
Hmmm.. Something I would think I could relate to, but we all know (a) how easy it is to convince yourself/diagnose yourself with something, and (b) how we would all love to consider ourselves from this group. So I'll just let this make me smile a little and leave it that :)
1 point by kenjackson 2 days ago 0 replies      
I think I could sleep 20 hours if given the chance, but I routinely will sleep until 7am regardless of when I go to bed. If its 10pm or 4am. I just wake up at 7am, I'm super sleepy still, but more hungry. So I have to wake up, make some cereal and then I'm up.

Not sure what that is, but I've never met anyone else who shares this trait.

1 point by Semiapies 1 day ago 0 replies      
My boss is exactly like this - sleeps a tiny bit, has ridiculous amounts of energy and enthusiasm, and loves to deal with the world in a flurry of stimuli and decisions.

Me, I'm just an insomniac.

1 point by daimyoyo 2 days ago 0 replies      
I think the level of sleep I need depends on what I'm working on. When I was working on a business with my friends, I'd only sleep for 4 hours or so a day. Whereas when I was working a job I hated, I was exhausted unless I slept 9-10 hours a night. I think sleep requirements are a function of brain activity and engagement. It's just a theory but it seems to be true, at least in my case. Another theory I have relates to the sleep schedules of people. I'm nocturnal. I have been since I was 8 years old. And when I was working with my friends, it was at night. So I wonder if nite people need more sleep to function during the day like morning people need more to work nights?
1 point by aycangulez 2 days ago 0 replies      
The primary function of sleep is to permanently store the things learned during the day (long-term potentiation). Although different people need different amounts of sleep, those who need less usually find that they sleep longer if they learn challenging new material (e.g. a new language). That is the reason why babies sleep the most. Their brains are empty sponges constantly absorbing new information.
1 point by gwern 2 days ago 0 replies      
> Out of every 100 people who believe they only need five or six hours of sleep a night, only about five people really do, Dr. Buysse says. The rest end up chronically sleep deprived, part of the one-third of U.S. adults who get less than the recommended seven hours of sleep per night, according to a report last month by the Centers for Disease Control and Prevention.
2 points by pstack 2 days ago 0 replies      
No sleep is a feat I could pull off regularly when I was younger. It was no problem to go 48-72 hours without more than just a catnap or two. That was a decade ago. In my early thirties, I struggle beyond the sixteenth hour, except for rare occasions.

Fortunately, I think it's a sort of bell curve. From what I understand, I'm only about fifteen or twenty years away only getting a couple hours of sleep per night. How productive sleepless nights full of trips to the bathroom will be, I have no idea. I guess I'll finally catch up on all that damn reading.

1 point by semerda 2 days ago 0 replies      
I sleep 2am to 7am most days and keep myself busy so much that I sometimes go to 3:30am before forcing myself to sleep. Sleep time happens within 3-5 mins after going to bed - according to my WakeMate.

I think alot of this is due to a busy lifestyle. I find myself doing multiple things at the same time in the evening and being very productive in getting stuff done. While on holidays where I actually disconnect from work I find I sleep long hours each day.

An afternoon 20 min powernap is an amazing recharge! Everyone should do it. Using Paul McKenna's audio helps with the powernap. There's something weird about the hypnotic audio. Instantly puts me to sleep.

Finally, supposedly the need to nap in the afternoon is normal and every animal in the kingdom does it. Humans has largely forgotten about this clock due to the "working culture". In the book Brain Rules, this is described in more detail: http://www.brainrules.net/sleep

My 2c's worth.

1 point by nhangen 2 days ago 0 replies      
Jon Gruden, former NFL coach and Monday Night Football analyst is one of these. He goes to bed late and gets up as early as 3-4 AM.
2 points by maxcho 2 days ago 0 replies      
Read the actual paper, take a look at the hypomania test: figure out things about yourself. http://cl.ly/313A0x2k011t400C3N3C
1 point by megaframe 2 days ago 0 replies      
I question how much "work" someone that fits this really gets accomplished. I can run on limited sleep for weeks at a time and am more energized, but throw me at something mentally challenging like Quantum Physics or Solving some Linear Systems model, and it's like my brain says it needs time to process everything, so I end up sleeping absurd amounts. (I also find I make significant headway the next day after that kind of sleep)
1 point by doki_pen 2 days ago 0 replies      
I used to need very little sleep. Unfortunately, it was because my thyroid was overactive. As soon as I went to a doctor and got it taken care of, I became a normal sleeper.
1 point by Tharkun 2 days ago 0 replies      
I have to admit that I'm a bit confused here. 7-9 hours seems to be the "normal recommended" range, and under 6 hours puts you in the short sleepers category. What does 6-7 make you? Irrelevant to the research?

Many people make the mistake of oversleeping on the weekend and undersleeping on working days. I try to average 6.5hrs every night, weekend or no weekend. Just being consistent really helps in keeping the energy levels up imo.

3 points by dvfer 2 days ago 2 replies      
If they cannot find any "actual" short sleepers, how do they it's 1-3% of population...Oh science you are scary...
1 point by alexhektor 2 days ago 0 replies      
Arianna Huffington (and me) certainly are no natural "short sleepers" :)


1 point by palguay 2 days ago 0 replies      
This is a talk given at google about sleep http://www.youtube.com/watch?v=IK1nMQq67VI
-4 points by soapdog 2 days ago 1 reply      
red bull?
-1 point by Herwig 2 days ago 0 replies      
A majority of us here are wanna be short sleepers. And we make do with that
-4 points by paylesworth 2 days ago 0 replies      
Leave it to the WSJ to exemplify the behavior of people with an erratic gene variation as something "Elite" (or L33t, lol).
If you applied to YC this cycle, please put your email address in your profile
265 points by pg 10 hours ago   29 comments top 14
25 points by rottencupcakes 10 hours ago 3 replies      
If you want to live chat about applications and acceptances with prior YC founders and other applicants, you can do so in the Convore (a YC W2011 company)


1 point by nkassis 9 minutes ago 0 replies      
It would be cool to have an in HN messaging system. I know it's a lot to ask :) Just a proposal.
9 points by bmelton 9 hours ago 2 replies      
Better -- just put your email address in your 'about' section as well. If not, you are probably missing out on contact from other HNers.
4 points by cdr 4 hours ago 1 reply      
pg: Can you add a note to the profile settings page that the email field isn't publicly visible? This still confuses people all the time.
7 points by abtinf 9 hours ago 1 reply      
You can also chat about applications over at the wompt chat room - we've been going strong all night!


3 points by astrofinch 9 hours ago 1 reply      
Has the idea of adding a field to the application itself for a founder's email address already been discussed?
2 points by kirillzubovsky 5 hours ago 0 replies      
My co-founder (@peterkchen) and I ended up building a private prototype over the last two weeks, in case we get an interview, but after working on it all last night and crafting a bunch of cool new ideas, I am pretty confident that we are going full speed forward either way. Being with YC would just help to be make the product even better. Alright, we'll know soon enough where the road goes. Good luck folks!
3 points by chrismanfrank 9 hours ago 1 reply      
They will send all the emails at once "something this evening CA time".


2 points by prayag 2 hours ago 0 replies      
The letters have started coming in. Good luck to everyone. :)
1 point by deosaa7 4 hours ago 0 replies      
ah, slightly nervous that pg & co. have had no questions regarding us. ah well - the anticipation builds.
1 point by lien 7 hours ago 0 replies      
I just realized there's a question to our application that I didn't see until now. I just responded to it and also emailed Harj.
1 point by DarrenLyman 6 hours ago 0 replies      
Thanks for the follow up post pg, we are looking forward to hearing from you!
6 points by acconrad 9 hours ago 0 replies      
There's nothing wrong with gmail, he's saying don't write your email as "name at gmail dot com" as some people do this to prevent automatic spam bots. Instead, write it as "name@gmail.com" so it's easier to email/copy+paste.
-4 points by gihan 7 hours ago 1 reply      
Writing Clear, Concise, Sentences wisc.edu
264 points by Panoramix 2 days ago   70 comments top 26
55 points by grellas 2 days ago 3 replies      
The principles listed here are sound and helpful. If you follow them, your writing style will undoubtedly improve.

But do not adhere to them as rigid rules or you will suffer in your ability to express yourself. Passive voice exists for a reason. Long words can add variety, rhythm, and color to your prose. Elongated sentences can help give your writing a flow that a mere parade of short sentences can never hope to achieve, not even after a thousand rewrites. Or not. All such items can be misused as well, and the books are replete with bloated forms of expression used by lawyers, politicians, educators, administrators, and the like who would not know a simple word or sentence even if it stood before them doing somersaults. The key is to know sound principles for clear and concise writing and then to apply them with a rhythmic ear for balance in your forms of expression. That means, yes, use passive voice, long words, and flowing sentences as needed to add grace to your prose but always with the baseline in mind: that is, to communicate in ways that are clear and concise and that people will readily understand for your stated purpose (formal style for formal settings, casual for casual, and whatever fits for anything in between).

I note all this because, years ago, I consciously and diligently set about to attempt to master writing and stumbled upon the rock of "simplicity" during such stretches in my learning process where I had assumed that all one could do was follow such rules. Any attempt to apply such rules one-dimensionally is a mistake, and you will regret trying it. Follow sound principles, by all means, but not dogmatically.

The other major keys to good writing are depth of language skills and extensive reading. No one will read your work unless you have something helpful to say. You get this by working hard to develop your skills, and lots of writing (and reading) is vital to this process.

60 points by sp332 2 days ago 8 replies      
I'm positive the second comma shouldn't be there. (I wouldn't normally comment on commas, but it seems on-topic...)
20 points by SlyShy 2 days ago 5 replies      
Some of the comments I've read seem to misunderstand the purpose of this page. This isn't the objectively best writing style, this is a concise writing style. No, it might not be the most pleasant to read, because extremely to-the-point short sentences sound blunt. The guidelines provided for writing short and concise sentences are very useful, if that's the style you are aiming for.
16 points by tptacek 2 days ago 2 replies      
This advice seems to mimic much of what's in _Style: Towards Clarity and Grace_, which I found out about from Richard Gabriel (achievement unlocked: LISP connection) and which is probably the most hacker-friendly writing book ever written.
6 points by SoftwareMaven 2 days ago 0 replies      
Personally, I really like George Orwell's "Politics and the English Language"[0] as a writing guide.

[0] http://www.mtholyoke.edu/acad/intrel/orwell46.htm

9 points by synnik 2 days ago 0 replies      
Keep these points in mind when generating error messages to your end users.
8 points by bdesimone 2 days ago 2 replies      
If you get the chance, read Orwell's "Politics and the English Language."

    Never use a metaphor, simile, or other figure of speech which you are used to seeing in print.
Never us a long word where a short one will do.
If it is possible to cut a word out, always cut it out.
Never use the passive where you can use the active.
Never use a foreign phrase, a scientific word, or a jargon word if you can think of an everyday English equivalent.
Break any of these rules sooner than say anything outright barbarous.


3 points by xtacy 2 days ago 1 reply      
One of the most cited books for better writing: Elements of Style: http://www.bartleby.com/141/. It's available for free.

There are many "manuals of style" available as well like: http://www.chicagomanualofstyle.org/home.html.

2 points by xal 2 days ago 0 replies      
Are there any software packages or web services that help with this? Writing is a huge part of my job but because I'm english second language I'm lacking the intuitive sense for such rules. Especially since I learned most of my english in my formative years on internet forums...
1 point by telemachos 1 day ago 0 replies      
This topic seems to have legs, so I'll recommend another book in this area: Clear and Simple as the Truth: Writing Classic Prose[1] (by Francis-Noel Thomas and Mark Turner).

They are far more thoughtful about style (what it is and how to teach it) than most writing guides. They acknowledge that there is not one best or ideal style for all occasions and that the style they describe and teach is one among many. It's an eye opening book in many ways. (Note: I see that there's a second edition just out. I haven't read that. I read the original in the late 90s. I doubt they've ruined it, but just in case.)

[1] http://classicprose.com/ with excerpts from the book here: http://classicprose.com/csx.html

3 points by grannyg00se 2 days ago 2 replies      
A lot of this information is presented as a consistent methodology when in fact it is very subjective. For example, one of the suggestions is that "you should try to avoid using inflated diction if a simpler phrase works equally well." Unfortunately, it is not clear when a simpler phrase works equally well. I may want to 'use' a certain phrasing in one scenario, but feel it is more appropriate to 'utilize' another phrasing in a different scenario. There is no simple rule that can be applied to determine whether one is more appropriate than the other.
1 point by billybob 1 day ago 1 reply      
Clear writing is difficult because it requires clear thought. This makes it worthwhile, even if no one reads it, because it shows the writer whether he or she understands the subject matter.

Muddy writing, by contrast, is generally meant to impress and not convey information. The intended reaction is "I don't understand what you said, so you must be smart." This, unfortunately, seems to work for businesspeople and academics. But I hope that geeks can see through it.

3 points by NHQ 2 days ago 2 replies      
You have to break rule number one to be a politician, corporation, or spokesperson for either. Passive voice is what you use to acknowledge that something fucked up, without placing the responsibility.

"There was a failure of communication."

3 points by jaywhy 2 days ago 0 replies      
I agree with the article that good writing is concise and clear, but don't conflate clear and concise with simplistic and short, thinking the only good sentence is a short sentence, as if we should all write like Hemingway in a hurry.

"Vigorous writing is concise...this requires not that the writer make all sentences short, or avoid all detail and treat subjects only in outline, but that every word tell."
- Strunk and White "The Elements of Style"

1 point by syaz1 2 days ago 0 replies      
Stephen Fry ranting on language nazis:
Season 2, Episode 3: Language: http://www.stephenfry.com/category/media/audio/

I don't really know who he is, but he make some very convincing arguments.

1 point by syaz1 2 days ago 0 replies      
Also related, feeling lazy? Use Steve Hanov's word-removal tool to remove unnecessary words from your sentences: http://stevehanov.ca/blog/index.php?id=52
1 point by lifefundr 2 days ago 0 replies      
I agree this is a very useful resource for writing in a concise manner. It is something I am attempting to implement in my daily writing. Even though it is old news the best advice I have come across is to write your content. Let it sit for an hour or more. Come back and read it out loud to yourself. This technique is underused and underrated in my opinion. Thanks for pointing out this resource. Bookmarked!
1 point by discreteevent 2 days ago 0 replies      
Its kind of an object oriented style isn't it? That doesn't mean that it transfers well to programming where there are other concerns apart from communication. (You don't have to worry about controlling state in your paragraphs). Anyway, for me the laziest way to improve my composition is to just read Hemingway and let the style rub off.
1 point by Ythan 2 days ago 0 replies      
If you want to improve the clarity of your writing, I also recommend StyleWriter (http://www.stylewriter-usa.com). It's a bit expensive, but the functionality is unique and helpful.
2 points by kruegerb 2 days ago 0 replies      
It would be wise to refer to these guidelines while filling out an application for YC.
1 point by thorin 1 day ago 0 replies      
Link to my friend's blog. He consults on these matters http://www.thomasheath.tv/blog/
1 point by portentint 2 days ago 0 replies      
Your best bet: Write every single day for at least 15 minutes. Writing isn't a talent, it's a skill.
1 point by samevisions 1 day ago 0 replies      
Very interesting, especially for people like me ( English is not my mother language ) these basics are useful to build a strong knowledge about Writing.
1 point by seewhat 2 days ago 0 replies      
Similar guidelines from the UK's Plain English Campaign:-


-1 point by drv 2 days ago 0 replies      
It's amusing that the "Avoid unnecessarily inflated words" section misspells "implement" as "impliment."
-2 points by Ruudjah 2 days ago 1 reply      
> Writing Clear, Concise, Sentences

With a title like this, I won't even read the thing. So many things are wrong with this first sentence.
1. Why The Capitals For Each Word? That screws with my human word recognition algorithm.
2. The title implies three things: Writing clear, do something concise and something with sentences. That's all but clear to me. "Writing clear": you mean writing the word clear? Does not sound interesting to me. What do you want with "Sentences" and "Concise"? Not clear at all to me.
3. Probably, the author meant something like "How to write clear & concise sentences". That gives the sentence instantly another meaning.

Meet news:yc, the open source Hacker News client for your iPhone. newsyc.me
253 points by news-yc 2 days ago   51 comments top 14
29 points by metachris 2 days ago 2 replies      
Thanks for releasing it as free software. https://github.com/newsyc/newsyc
5 points by aaronbrethorst 2 days ago 0 replies      
I ran across this earlier today and added a small feature to it[1]. The author is very receptive to pull requests, so I highly recommend forking away!

If you're interested in contributing and stumped for things to add or fix, check out the included TODO file.

[1] https://github.com/newsyc/newsyc/commit/01bc7bf30c10a2abd8f0...

4 points by kloncks 1 day ago 2 replies      
Here's a question. Love the app, but can I login to my account? I don't have a normal YC-account, but rather one through Open-ID with my Google Id.
3 points by lloeki 1 day ago 1 reply      
With all the effort going into that app and the other web wrappers mentioned around here, I may be missing something but why is there no media query in HN CSS to adapt itself to iPhone, iPad and other (WebKit-based at least) mobile devices. I weight it to about ten lines of CSS at most, setting font scale, body width and vote up image size. I am on the verge of creating a bookmarklet to load such additional CSS and sync it to my devices but couldn't resort to that yet because of it being a total hack that I'd need to call on each HN page load.
18 points by Joshim5 2 days ago 3 replies      
Upvoted for multiple reasons:
1) The app itself looks pretty good.
2) Open-source
3) You're a high school student too. (What year?)
1 point by zefhous 1 day ago 3 replies      
This is great, thank you!

Took me a while to figure out how to get signed in with instapaper... Turns out it's in the Settings app. I wish Apple provided an API to link from an app to its settings page, and back to the app from the settings.

4 points by davidcann 2 days ago 0 replies      
Nice work, this is the new best HN iPhone client.
2 points by nathanwdavis 2 days ago 2 replies      
I've been pretty happy with the Hacker News app by Michael Grinich, but this looks promising and competition is a wonderful thing.
2 points by chrishenn 2 days ago 1 reply      
Looks awesome, I'll happily buy it for $5 once it hits the store.

It's also nice that it's open source. Contributing to an actual iOS app could be a nice way to get a taste of iOS development without having to start a whole project from scratch (if you have no previous experience.)

1 point by _frog 1 day ago 0 replies      
Wait, are you chpwn by any chance? Because you quite extensively use the slide-behind header trick from his last post on http://chpwn.com/blog/
4 points by reustle 2 days ago 3 replies      
No Android love?
1 point by EGreg 2 days ago 0 replies      
This is cool. Oh, you're a high school student? Awesome.
1 point by tobiasbischoff 1 day ago 0 replies      
Writing this comment with the app from my phone, thanks alot.
-4 points by nabaraj 2 days ago 0 replies      
where is the android version??
The Montessori Mafia wsj.com
247 points by danielvnzla 1 day ago   149 comments top 24
57 points by ladon86 1 day ago replies      
I went to a Waldorf/Steiner school, which shares some of these traits such as the lack of a focus on assessment and grading and the emphasis on creativity.

We weren't taught the alphabet until the age of about 6-7 and basic arithmetic at 7-8. We did begin learning foreign languages at age 6, however. In practice my older brother taught me to read and count well before the Steiner curriculum did, but I still think that the education was very valuable.

I think that creativity in adults is often stifled because they don't want to "get it wrong". People are afraid of trying their hand at a new skill or taking a risk on a new idea because they are "realistic" about their chances of success. Children just do it anyway. I think that Steiner schools encourage this attitude, and no doubt Montessori schools do the same.

There's a reason the really big hitters are often first-time entrepreneurs - they are naive enough to try. Creativity works the same way.

44 points by timr 1 day ago 4 replies      
"When Barbara Walters, who interviewed Google founders Messrs. Page and Brin in 2004, asked if having parents who were college professors was a major factor behind their success, they instead credited their early Montessori education"

Ahem. I spy a latent variable in this correlation. Can you find it?

Hint: Montessori education may or may not have advantages. But unless you control for educational background and income of the family, your analysis has a problem.

16 points by brlewis 1 day ago 1 reply      
I have children aged 13, 10 and 5. The oldest spent 1 year in a traditional preschool, but they've gone exclusively to Montessori school since that time.

What strikes me about this article is its characterization of Montessori schooling as largely unstructured and free. I think it must be comparing it to a much over-structured methodology, perhaps like the public schooling I got growing up.

Styles vary somewhat among Montessori schools, but what I've seen is that in the early years, the age Montessori is most known for, there are specific materials children work with and specific ways they're expected to work with them. A child may not get out a work he/she hasn't been shown how to use. He must return the work to its proper place before selecting another one. The materials aren't tools for self-discovery. They're tools for letting self collide with reality until such time as the applicable real concepts are understood.

However, the one simple freedom of being able to choose a work does make it a sharp contrast from the lock-step style of education I grew up with. I hear public schools aren't always this way, according to relatives who sent kids to public school in Lexington, MA.

In higher grades the emphasis on materials fades, but the basic idea of letting children work within a structure remains. For example, in upper elementary (grades 4-6) the students develop their own classroom code of conduct. They're given some structure about how to do it, though. I see Montessori as a balanced methodology on the freedom/structure dimension, not an extreme.

25 points by ziadbc 1 day ago 5 replies      
I really like the idea of Montessori, and if I have the cash I'd like to send my future kids there someday.

That being said, I see correlation here, not causation.

To be a little bit tongue and cheek, I could write the headline:

"99% of successful people do not attend Montessori schools"

14 points by bediger 1 day ago 3 replies      
Why does this result surprise anyone? Traditional US schools exist not to cultivate individuality, and make people more expressive and creative, but rather for different reasons.

Grade school is designed to teach people enough to read The Bible, and enough writing and arithmetic to not get cheated by the fancy, downtown shop keepers.

High school is designed to teach the bulk of the citizenry to work according to a fixed schedule, probably in a factory, along with a faceless mass of similary trained people.

It sounds inflammatory, but it's true.

17 points by realitygrill 1 day ago 2 replies      
This is just confirmation bias. Page credits "part of that training of not following rules and orders, and being self-motivated, questioning what's going on in the world, doing things a little bit differently." As a Montessori kid myself, I could see myself having differing opinions depending on how the future turned out.

Successful: go back and credit Montessori for making me a rebellious, curious nonconformist.

Unsuccessful: go back and partially blame Montessori for those same values, that make navigating this world of rules and structures difficult.

PG's writings would make me think that he leans more towards the Montessori side of things, and probably a lot of HNers are the same. I'm glad jsavimbi spoke about his need for strong discipline.

11 points by damla 1 day ago 0 replies      
Maria Montessori lived in Italy a 100 years ago, and no doubt she was a reformist. She was the first woman doctor, she worked with children with mental disabilities when children was not considered humans, and she noticed that, her approach is applicable to all children. She invented very useful methods and tools for teaching preschoolers. She made wonderful toys which are now called "Montessori Materials". Her method is spread to US, and "adapted".

Montessori teachers are certified largely by two centers in the world, in Italy (http://www.montessori-ami.org/), and in US (http://www.amshq.org/). As far as I know AMI sees itself as the "original" Montessori, rejects others, and more strict in many ways, like they don't allow any toys in classrooms, they don't have any books (just lapbooks produced by teachers or children).

I have real problems with strict, spiritual Montessori. Why would we be against to toys? Maria Montessori crafted wonderful toys for her students, and now they are called "Montessori Materials". What's wrong with Lego's? I think if Maria Montessori had Lego, she would use them.

Montessori, Waldorf, Reggio Emilia, all have different methods to inspire for raising kids and even for start-ups (http://digitalcommons.unl.edu/cgi/viewcontent.cgi?article=10...). But, none is magic.

7 points by Terretta 1 day ago 2 replies      
Only if your education differed from the so-called basket of techniques lumped together as "the Montessori method".

It's been my experience that a home environment with parents who read and care about expanding horizons will tend to offer the children guided "self-directed" learning, observation and indirect teaching, and productive routines of "focused" activities versus idle play, and these children will tend to outperform peers without that same desire to constantly learn instilled in them -- regardless of the formal education they acquire.

4 points by speleding 1 day ago 1 reply      
My kids (4 & 7) just moved from a traditional school to a Montessori school last summer because we moved house. I wasn't completely sold on the philosophy yet but my kids LIKE going to school a lot more now and it seems to work really well. Happy kids, learning a lot.

But it is very counterintuitive for the engineer in me who wants to measure progress by how much of the alphabet they know. It takes a lot of trust in the somewhat nebulous and touchy feely Montessori philosophy, if you read the wikipedia page about it you'll see that even the educators can't agree on what it is exactly. (Montessori did use scientific methods to arrive at her recommendations, but interpretations differ). There's things the type of educators in such schools do that makes us rational people cringe (kids are not allowed artificial flavoring in their lunch food...). But, well, it works (for my kids at least).

Since I am too rational to give up on measuring I conclude we are probably not measuring progress the right way by testing how much letters in the alphabet they know.

7 points by phren0logy 1 day ago 1 reply      
Is this even correlation? Is there any evidence to suggest that Montessori students are over-represented among the successful? Or are they simply proportionate?
5 points by jsavimbi 1 day ago 1 reply      
I can't speak for the higher end of Montessori as I only attended when I was just starting out my career in education, but I found it to be rewarding for someone with a wandering mind, more so than the strict rote-based Catholic-influenced education I was subjected to further on. I also experienced British private school, and that was definitely better than public but without the scientific approach that I saw at Montessori.

It depends on the kid, I guess. I have an independent, creative side to me that also needs strong discipline to get anything done, so I'm grateful to have experienced both worlds. As far as current prices go, my divorced and randomly employed mother was sending both my sister and I there until we opted for the local public school as it fit better with our social lives, and I know there were some kids there in the same boat as us, but overall it was a good mix back then with the benefit of being in the hippy Cambridge of the '70s.

My advice would be to buy the best education for your kids that your money can buy, and unless your local school system is the pits, I wouldn't home-school them. There's a lot to be said for socializing at an early age and teaching the kids subjects in addition to the regular curriculum isn't against the law either. If the kids are smart, they'll put the regular coursework behind them and need the extra teaching anyways.

If the child is a dullard, don't waste too much money on them as you'll need it for later on for when they really fuck up.

3 points by bryanwb 19 hours ago 0 replies      
I am pretty skeptical of the Montessori approach.

Take kids from wealthy, well-educated families and put them in small groups with educators that also happen to be very well-educated and very passionate and you will get great results whatever the pedagogy.

Contrast this w/ poor kids whose parents had low educational attainments, stuck in giant classes with poorly-paid teachers.

If you put 6 well-off kids with 1 passionate, well-educated teacher, you will get good results almost every time.

Montessori approach may have its merits but I find it very hard to separate them from the demographics of its students and teachers. The study in Milwaukee does not seem sufficient to establish a link. Those passionate about teaching are probably more likely to be attracted to the Montessori school than the regular public schools because it has a distinctive approach and probably more liberal management.

I would love to love to know if the Montessori schools in teh Milwaukee school had the same teacher/student ratio as the other schools in the study. I am betting they didn't.

5 points by slay2k 1 day ago 4 replies      
I've been thinking about how I'd educate my own kids, and currently it's a tossup between the Harkness approach a la Phillips Exeter, the entirely home-schooled approach, and something like this which seems like a hybrid.

If anyone has experience with any of the above, I'd love to hear about it.

3 points by kloncks 1 day ago 2 replies      
Fascinating insight. But isn't this a classic case of of correlation, not causation?
2 points by billmcneale 1 day ago 0 replies      
I have no problem with the Montessori method but if you're going to throw the names of a few very successful people as examples, you also need to show the full picture, i.e. for all these Montessori kids that became so successful, how many other successful people did not got to Montessori?

If anything, the fact that they only list 4-5 names tells me that at best, the kind of education you receive at that age is not that important after all (I think your parents and your environment are probably bigger factors) and at worst, the Montessori school doesn't really work that well after all.

1 point by gevertulley 9 hours ago 0 replies      
Perhaps what is required here is a re-examination of the fundamental goals of what we refer to as "education." Is the purpose of school to teach a set of curriculum or to inculcate the habits necessary to become courageous explorers of the world and inventors of our own destinies? Montessori is just one alternative, but now, in a time of rapid change, is the time to begin and support multiple experiments. We need to explore the full range of functional pedagogies and see what new ways of teaching and learning can be developed. Looking for one "best" context or approach for learning is probably never going to work - the fundamental assumption is wrong.

An educational monoculture suffers the same vulnerabilities that a biological monoculture does. We should foster a diversity of approaches, supporting the sharing of techniques, approaches, and contexts.

This is why we are starting a new K-12 school, based on some new ideas (Tinkering School, and A Curious Summer) and incorporating some really old ideas (apprenticeship and mastery). We call it Brightworks (http://sfbrightworks.org). Have a look at our approach, share your ideas, join us at the edge of innovation in education.

2 points by VladRussian 1 day ago 2 replies      
what type of people would be developed by combined approach of Montessori and Tiger Mom? :)
2 points by jsulak 1 day ago 1 reply      
Interesting article, but what about Steve Jobs? Warren Buffet? Bill Gates? It's easy to pick a few examples of anything, but it doesn't make it a real trend.
3 points by ILIKECAKE 1 day ago 1 reply      
I went too Montessori and I am sitting behind a damn desk administering systems...looks like I missed the awewsomness bus
0 points by softbuilder 1 day ago 0 replies      
"Questions are the new answers" -- Socrates, 429 B.C.
1 point by jtraffic 1 day ago 0 replies      
I have a hunch (definitely not an assertion) that even if there are effects from Montessori school early on, they wash out over time, and the major factors afterward are socioeconomic status and habits of parents, and subsequent education (K-12). I guess I'm paraphrasing Freakonomics.
1 point by karolisd 1 day ago 1 reply      
Are all of the examples male? Do Montessori schools help females too?
0 points by mmcconnell1618 1 day ago 0 replies      
Perhaps creative minded people fit in better in Montessori schools and therefore credit the school with love of learning. Where's the proof that the Montessori method created the effect?
-2 points by jhuckestein 1 day ago 1 reply      
"What is 10 plus 1?"


"I'm sorry M'a'm, your son is an idiot"

Plain Text Offenders - Did you just email me back my own password? plaintextoffenders.com
222 points by omervk 1 day ago   138 comments top 27
21 points by estel 1 day ago replies      
The worst offender I can recall was Wordpress.com. Not only do they email you your password back, but show it to both you and whoever might be sitting within a few metres in LARGE LETTERS in the webpage immediately after activating your account.

After I emailed to complain about this, they said:

"Security and usability is often a trade-off. We make two main ones:

* When you register at WordPress.com, we show you your password and email it to you.
* When you log in we tell you whether the username or password was incorrect.

The accessibility and increased convenience for users in both cases has been deemed to be worth it."

Edit: I just checked, and it seems that they've changed this element of their policy. The situation above was March 2009.

20 points by linker3000 1 day ago 1 reply      
Nothing new there! When we setup a new in-house account, we either telephone the user or go to see them with their password. If it's a senior Manager with a corporate phone they get their password texted to them - Ok, not ultimately as secure as possible but a darn sight more secure than a plaintext email.

In my previous job I was asked to FTP our full client list (with financial information) to a third party acting on behalf of the company that had just acquired us. The IT Director of our new owners kicked up a hell of a stink and accused me of being 'unhelpful' because I insisted on the third party signing an NDA and installing AxCrypt so that I could encrypt the data for transmission. In the end I just said that if they insisted I send everying without encryption, I wanted it in writing with a disclaimer that I was acting on their instructions and they would assume responsibility for any possible liabilities arising with respect to UK Data Protection Laws.

By the time the IT Director had deliberated the point, the third party (who fully appreciated my position) had sent me a stock NDA, installed AXCrypt and we'd completed the transfer.

14 points by pbhjpbhj 1 day ago 2 replies      
Mailman ...

My LUG uses it and mails me my password in plaintext every month; IIRC it is|was the default setting ... /me-rolls-eyes

5 points by compay 1 day ago 0 replies      
Codeweavers, the creators of Crossover for Linux and OS X, do this. I emailed them about it around a year ago and they never bothered to reply back, even though I've bought several licenses from them over the years.


2 points by nyellin 1 day ago 2 replies      
There are some cases when storing plaintext passwords is justified, despite all of the risks. There are cases where you can't - or shouldn't - hash passwords.

For Freeversation, we store plaintext passwords for two reasons:

1. Our passwords are group passwords, which (hopefully) aren't re-used anywhere else. If someone hacks our server, the conversations stored on it are incredibly more valuable than the passwords themselves, which aren't associated with a specific email address or account. Our approach to security is that unauthorized access to our server is checkmate. That is the worst case scenario, not stolen passwords.

2. When you create a new conversation, you can invite new users to the discussion. Those users didn't sign up for Freeversation - and in all likelihood never heard of Freeversation before - but they're expected to remember a password that someone else chose. We help them remember that password by including it in every notification email we send. (E.g. emails inviting them to the conversation, emails notifying them of new comments, etc.) We wouldn't be able to do that if we hashed passwords.

In our case, the alternative to plaintext passwords is actually getting rid of passwords altogether and replacing them with secret URLs. We chose plaintext passwords because they provide psychological reassurance that conversations on Freeversation are invite-only, and not public. The irony is that secret URLs are actually more secure than the passwords that most of our users choose. In the future, we may use a combination of the two, so that users both feel protected and are protected in the best way possible.

14 points by aslakhellesoy 1 day ago 0 replies      
http://passwordfail.com/ lets people register the offenders.
If you have the passwordfail chrome extension installed, you will get a warning whenever you visit an offender. Highly recommended.
2 points by tnorthcutt 1 day ago 2 replies      
I tried to submit a screenshot, but got the error message Sorry, your page had expired. Please try again. on the submission screen. Either they're having trouble (and displaying an unhelpful error message), or they have an awfully short page expiration time - from page load to the time I hit submit was under 30 seconds.
2 points by gabbo 1 day ago 1 reply      
By far the worst example I can think of here is Yodlee, the bank aggregator.

Their product, Moneycenter, has this convenient "feature" which lets you display your bank password in plaintext! It's unthinkable that someone you trust with your bank credentials would let their website be a two-way street for plaintext bank passwords.

Things like this remove any confidence I may have had in their product. The fact that a feature like this exists at all is strong evidence that they're neither thinking in a security mindset nor paranoid on behalf of their users. If someone proposed this "feature" where I work they would be laughed out of the room.

If that wasn't bad enough their support folks politely ignored me when I raised the issue and pleaded with them to turn it off. They either don't get it, don't care, or don't know how to escalate issues to people who do:

  Please be assured that Yodlee considers account/data
security as highly critical and hence will not be revealed
to any other source.

We suggest you not to reveal your account login credentials
i.e answers to security questions & password, to anybody.
This will ensure your account will not be compromised.

Thank you for your feedback on the product. We appreciate it.

We are marking this Service Request as Resolved. Please let us
know if you have any questions in this regard.

1 point by jeza 1 day ago 1 reply      
Seems that in many cases you get a choice between security over the wire or security in storage, but not both. By this I mean if you use a challenge response authentication algorithm then you often don't have any choice but to store the password in cleartext. Then authentication can be done even over an unencrypted channel without revealing the password.

The compromise seems to be to store the password with a oneway hash then use an encrypted channel such as TLS to send the full password for each authentication. There is still the possibility of intercepting the password at the end of this encrypted channel before the password is compared to the stored hash.

So both models have weaknesses, it just means you have to focus your security efforts into a different area. For the first, it might be somewhere deep in the backend, for the second you'd be paying attention to the front end where you accept the TLS (e.g. https) connection.

This has certainly been the case with for example PPP where you had a choice between PAP (secure storage, but sent in plain text) or CHAP (insecure storage but not sent over the wire in full). Jabber/XMPP servers also traditionally store in plain text but passwords aren't sent for each login. Though it seems that HTTP Digest auth does allow storage of passwords in a hash without transmitting the full password.

Then even with challenge response algorithms if someone is able to monitor a number of authentications then they may be able to gather enough information to pose as that user without actually knowing the password.

4 points by colinhowe 1 day ago 1 reply      
I've been wanting to make this for ages. Very pleased to see it made!

Would be awesome to have a notable offenders section. A chrome plugin that hooks into this would also be cool: "This site has rubbish password security. Don't use your usual passwords"

4 points by jcsalterego 1 day ago 2 replies      
Rackspace does this with their Cloud Servers :'(
1 point by yuvadam 1 day ago 0 replies      
Props! Took me a moment to figure out why all the initial sites are in Hebrew ;)
1 point by sayemm 1 day ago 0 replies      
Markus Frind did this way back when and suffered for it when Plenty of Fish got hacked a few months ago, big risk.
2 points by enewcomer 1 day ago 0 replies      
Here's my experience trying to bring this to one of the offenders' attention. He actually attempted to justify it.


1 point by treblig 1 day ago 2 replies      
Pretty scary feeling: search your gmail inbox for your default password.
1 point by thisisblurry 1 day ago 0 replies      
I'm shocked that Mozilla not only (seemingly) stores their mailing list passwords unhashed, but that they also email them out to each member every month in a reminder email.
2 points by acidblue 1 day ago 0 replies      
I forgot the password to my credit union account. I clicked on the 'get password' link and they e-mailed my original password back to me, in plain text. Lame! I still need to move my funds though, doh!
1 point by eekfuh 1 day ago 0 replies      
Toms.com sends you your password after you signup, which is retarded since YOU JUST entered it into their system.
1 point by itistoday 1 day ago 0 replies      
Add Dreamhost to this list.
2 points by netaustin 1 day ago 0 replies      
Drupal also sends plaintext passwords out of the box (at least in Drupal 6), although it does hash the password in the database. One of the first things I do is change the wording of the welcome email.
1 point by JCB_K 1 day ago 0 replies      
Reminds me of this: http://news.ycombinator.com/item?id=2329366.


1 point by robinwarren 1 day ago 0 replies      
I'd considered doing something like this the other day, good work for getting the bad news out there! Hopefully this can help lift the expected minimum of security on the web a little.
1 point by Estragon 1 day ago 0 replies      
A straight list without the irrelevant screenshots would be much more scalable.
0 points by code_duck 1 day ago 0 replies      
So, the only companies that do this are in Israel?
2 points by r_kaup 1 day ago 1 reply      
Can someone explain to me why it is so important to hash passwords before storing them?
-4 points by BrainScraps 1 day ago 2 replies      
The other day I thought there should be a "Wall of Shame" site for photos of the d-bags who abuse handicapped spots.
-3 points by mattmanser 1 day ago 4 replies      
Nitpick, they're not necessarily storing it in plaintext, they may just not be salting it. There is a difference.
Introducing the New Commodore 64 commodoreusa.net
219 points by will_lam 3 days ago   92 comments top 28
39 points by marcusestes 3 days ago replies      
Cramming a modern PC into a vintage C64 reproduction really is a terrible idea. But as an old Commodore / Amiga fanboy I have to admire Barry Altman (CEO of Commodore USA) for attempting to reawaken the brand.

After the sad bankruptcy spiral and eventual shutdown of Commodore the trademarks ended up in the possession of a company based in the Netherlands called Tulip Computers (Now Nedfield) who makes commodity PC workstations. The did a little cheapo licensing of the brand here and there but basically showed no intention of breathing life into the brand again.

Mr. Altman appears to have incorporated Commodore USA with the sole purpose of attaining trademark licenses and attempting to tap into the large and very latent Commodore enthusiast market.

It doesn't feel like he's going to succeed. But I applaud him for trying. Now that Steve Jobs' face has taken the place of Big Brother in that 1984 ad, it feels to me that the landscape needs a new "creative computing" competitor. The Commodore brand could be such a cool fit, if they only had a decent product.

They should reproduce the 4000 / Video Toaster combo: http://www.youtube.com/watch?v=nymVNhy4dw8

16 points by tesseract 3 days ago 2 replies      
The PC guts seem boring and will inflate the price. Why not do a reissue with functionality closer to that of the original, based on the C64 DTV [1] which cost $20 or $25 when it was on the market, and sell it at a $50-to-$100 price point?

[1] http://en.wikipedia.org/wiki/C64_Direct-to-TV

6 points by Udo 3 days ago 1 reply      
This is a lost opportunity. They could have revived the brand by putting out a new Commodore. Modern hardware, super-slim, "the keyboard is the computer", inexpensive. Maybe with a very simple and fast OS, like a light Linux or BSD or whatever became of the Amiga OS.
8 points by daeken 3 days ago 2 replies      
If this had a SID chip (or multiple!) in it, I'd buy one in a heartbeat. As it stands, it's just a straight up PC with... a C64 emulator.
5 points by defroost 3 days ago 4 replies      
From the FAQ:

"10. What is Commodore OS?
Our new Commodore operating system, will be a unique Commodore and AMIGA centric Linux distribution, that will grow over time into something far greater. Commodore OS will not be your run of the mill Linux distribution."


Judging from the website's fondness for the long deprecated bgcolor tag and animated GIF's, my confidence them producing such an OS is not particularly high at this moment.

11 points by Groxx 3 days ago 1 reply      
A terrifying website, with lots of renders, few photos, and a non-functioning store. That's pretty "meh" in my book, and it even gets a Raised Eyebrow of Questioning.
3 points by mambodog 3 days ago 0 replies      
I think this should have been re-imagining of the C64 as a first computer for a new generation of hackers.

I'm thinking of a high-level, empowering, introductory programming environment in the vein of Hackety Hack or Love2D (because lets be honest, kids want to make games), running on a Linux with an easy-to-use desktop environment (Ubuntu/Unity?).

The hardware would be netbook/mobile type stuff and internet oriented with SSD storage, Wifi, and HDMI for video output. No optical drive. Oh yeah, and a gamepad, the modern equivalent of the joystick.

I'm too young to have grown up with a C64 myself, but to me this would seem like a more worthy spritual successor.

6 points by tomconte 3 days ago 0 replies      
OK, when in doubt about any C64 stuff, the only place to go is the Lemon64 forum, and this seems to be real...



And if you are like me an Unbeliever, check out Disney's TRON partners page:


4 points by teach 3 days ago 2 replies      
How I wish I had a working 1541 disk drive! I've got scores of programs on floppy disk that I wrote when I was 11-14 years old that I'd love to read again.

I doubt the disks are still readable, though. They haven't always exactly been stored properly.

5 points by xbryanx 3 days ago 0 replies      
Gotta break out all my old C64 casette tapes.
2 points by eru 3 days ago 0 replies      
I like the C64 laptop much more (http://benheck.com/04-05-2009/commodore-64-original-hardware... uses the actual old hardware.
2 points by asciilifeform 2 days ago 0 replies      
This is not a Commodore 64.

It is a cruel mockery.

The main appeal of the Commodore was simplicity and understandability. This is a PC, that is to say, a piece of junk overgrown with cancerous accidental complexity.

4 points by joeld42 3 days ago 1 reply      
this is just a PC casemod. bleh.
1 point by Sukotto 2 days ago 1 reply      
I'm not sure why I still feel so strongly negative towards Commodore for destroying the Amiga brand.... but I do. Even after all these years.
3 points by tomconte 3 days ago 1 reply      
This is obviously an April's Fools joke, except they missed the deadline, which is typical Commodore ;-)

In other news, if you want to join 60,000+ fans of the REAL C64, there's a Facebook Page for that: http://www.facebook.com/c64.fans

1 point by iuguy 3 days ago 0 replies      
These are the same guys that did the Phoenix[1] a while back, which was essentially a knock off import that didn't do very well.

The C64 looks like a refination of the Phoenix in a C64-style case. Strangely there's no CPU specs I could find.

[1] - http://www.commodoreusa.net/CUSA_Phoenix.aspx

2 points by nzjames 3 days ago 0 replies      
I may be the only one who likes this. I've recently been looking for an old commodore 64 for nostalgic reasons, there is no practical reason to own one unless you're a demo purest. But I'm also in the market for an HD media player and the specs look up to the task. I can get my retro gaming and media fix in one package and decommission my xbox1.

Sure the price will be inflated but I can imagine leaving this sprawled out on my lounge floor provided there are some decent retro usb/wireless joysticks to go with it.

1 point by wbhart 2 days ago 2 replies      
I would love to buy a computer that is a modern upgrade of the Commodore 64, as if the machine had continued to evolve. In other words, the CPU would be a say 32 bit evolution of the original CPU with obvious changes to the instruction set as found in the C64.

The memory space would be flat 32 bit addressable up to a gigabyte.

The sound and video hardware would work in a similarly simplistic way as the original C64 did.

But the CPU would have similar performance to a modern CPU.

It would also have a modern (size) hard drive.

The whole thing could be done as an emulator. But the important thing would be performance. The virtual machine would have to convert one assembly language to the other by compiling it on the fly, e.g. to say x86 code, and not by interpreting it slowly!

And of course the thing would have ROM BASIC built in and/or a simple Amiga style classic look and feel OS.

At the very least I'd buy one of these machines, especially if you put it in a C64 keyboard style box.

2 points by duck 3 days ago 0 replies      
I wonder if it will play my Frogger cassette tape that I still have up on the shelf? :)
1 point by rikthevik 3 days ago 0 replies      
Wow. If those aren't too expensive, I'd love to get one. What a fantastic desktop machine. This kind of seems like a late April fool's joke, however.
3 points by TheSwede75 3 days ago 0 replies      
Still have my original Brown-Box, with Cassette player. . . I will ONLY buy this if MR-Z comes back onto the field to crack games!
1 point by malkia 3 days ago 0 replies      
Something more portable (iPad-ish) or more like a little toy with keyboard, or mini-usb where you can plug one, and HDMI on the out would've been better.

But I guess people cared about the keyboard. I did - for my Pravetz 8C (Apple ][/e clone)

1 point by phren0logy 3 days ago 0 replies      
Maybe hosting the site on an actual C64 wasn't such a good idea...
3 points by inji 3 days ago 0 replies      
> Realtek ALC662 6-CH HD Audio

This should totally be SID, MOS 6581!

1 point by th0ma5 3 days ago 1 reply      
I'd like to see a working prototype at least. Those who are fans know that seemingly starting with the success of the original product and then the Amiga, the company has always had some kind of problem delivering something new.
1 point by mixmastamyk 3 days ago 0 replies      
Where's the RF connector to hook up to the TV if need be?

I'd like to send one back in time to myself circa 1982 ... but what good is it if there's no capable display device?

1 point by xsive 3 days ago 0 replies      
Commodore USA have been promising this stuff for ages and nothing has materialised. It looks like vapourware to me.
1 point by wyclif 3 days ago 1 reply      
Anybody have a price on this?
Georgify: Hacker News meets beautiful typography google.com
226 points by tuhin 2 days ago   91 comments top 40
38 points by lwhi 2 days ago 4 replies      
I like this, but there's a lot of white space .. perhaps too much. Maybe a more compact view would be useful?

Like others have said, the grey is too pale.

EDIT: It would be nice if the layout made use of columns .. this could provide innovative use of wide-screen resolutions.

4 points by jjcm 2 days ago 1 reply      
Some thoughts:

1.) There's a lack of contrast in the page. A visited link is the same color as a comment that is rated < 0.

2.) The up/down vote arrows are visually far away from the name of the user. Knowing the context of who's saying something can mean the difference between a troll post and an insightful one.

3.) The page is no longer fluid. While this is more preference than an actual issue, I think that a fixed width format is detrimental for those of us who have widescreen monitors (or for those of us who like to tile our windows in small patches).

4.) Whitespace. There's a lot of it. Without your plugin, I can see all of the articles on the front page in ~1400px. With the stylesheet patch, it's about 3x that. I visit HN a lot, and will click on just about every story. As such, when I'm done reading HN all of the links have changed color. When I visit it later in the day, I can at a glance see every story that's new. Sometimes I have it autorefresh every few minutes on a separate monitor, and keeping everything concise allows me to do that.

Those are my thoughts. At this stage I'd say that it's pretty, but not yet functional. Work on the functional portion and I'll keep this plugin installed. Great work, keep it up!

8 points by nyellin 2 days ago 1 reply      
The grey color for a:visited is too light. I have to strain my eyes to see it.

edit: Also, the extra space in comment-headers is wonky. And even with my nitpicking, great job!

15 points by tuhin 2 days ago 3 replies      
This is my first every public release of such a thing! So please be gentle and do give any feedback that can improve the extension.
15 points by rnadna 2 days ago 1 reply      
I like the idea, and there are several aspects of the georgify format that are pleasing. My main comment is that there is far too much vertical whitespace. The compactness of hn is pleasant to the eye, and it lets readers scan headlines quickly. A little tweaking will prevent readers from having to scroll so much.
3 points by tomlin 2 days ago 4 replies      
I like it. A little off topic, but the Google Chrome Extensions that override CSS get my brain thinking about something like this on a different scale. For instance, could someone build complete Facebook or Twitter face-lifts? If it's possible, the consequences of that permutation would be interesting. Especially now that the modern browsers are moving towards auto-update, which encourages a higher likelihood of something like this taking off.

If marketers starting picking up the idea, I see "shoot here to win the prize", phone number, email address collecting type of ads promising to "bring facebook back the way it was", "just enter your email address and we'll send you the link!" If you don't think this could work, just remember that a few years back people were installing emoticon packs and CometCursor just so they could have a customized, albeit terrible, experience.

2 points by logic 2 days ago 0 replies      
From the screenshots, it reminds me a bit of Comfy Helvetica, which we discussed here a while back:




(Not passing judgement on this theme, which seems quite nice; just thought I'd throw in a recommendation for a theme I've been using on HN since it was originally posted.)

4 points by unwind 2 days ago 1 reply      
Can someone please fix the typo in the title? It hurts!
6 points by nddrylliog 2 days ago 0 replies      
You should've used csspivot.com for a quick preview link :)
1 point by tomkarlo 2 days ago 0 replies      
I like it, but I have to agree it's about 25% larger than I'd want, including both the input field for adding a comment (which takes up 1/5 of my screen height on a large monitor) and the comments, which end up being way too long.

Just reducing the font sizes a little would help - having the default font so large kind of apes apps like readability, it's much bigger than is necessary.

(Just zooming out on my browser isn't enough, since it also reduces the width of the lines.)

2 points by bonaldi 2 days ago 3 replies      
Love everything apart from the fixed-width main column. Leaves me with huge margins at either side with my usual window width.
1 point by csomar 2 days ago 0 replies      
I think the next thing is to provide customization. That is, you can change colors and some settings (like padding and margin) to control white space. You may want also to change the font. I actually like the white space. Just the grey is a little bit pale, but this helps for concentration on the text that matters. Taste differs, not good to argue about it.

It's still a good move from the Author. I was thinking of something similar, but time was a constraint. I might look to help improving that one. Any Github?

1 point by estel 1 day ago 0 replies      
I've had to stop using this now because the indents seem completely broken and all over the place. Replies appear threaded in a completely incorrect order.
2 points by abeh 2 days ago 0 replies      
Very nice to look at, well done.

A couple of points for me are that:

1. While it is easier to read, the combination of the larger size of the text and the vertical spacing makes it harder to scan all the topics quickly, as was possible without this style.

2. as already mentioned, the info sub-text is a bit soft in contrast and hard to read quickly, even though it looks nice. Suggestion: make the important info such as the numbers and username a bit more darker, but leave the repeated info such as 'points by' and 'comments' as they are.

2 points by vladocar 2 days ago 0 replies      
1 point by antirez 2 days ago 0 replies      
Thanks, I'm loving it. It is a bit biased for aesthetic but well still an improvement over the default HN css.
1 point by jarin 2 days ago 0 replies      
I'm not 100% on some the details (like whitespace and contrast), but definitely A++ for effort.
2 points by sunsai 2 days ago 2 replies      
I have tried to tweak the layout without any browser extensions. This will work on any browser but it's a 'lite version' so you can only use these to read HN. Have a look:

Non AJAX version: http://www.skillendar.com/hackernews/noajax.aspx

AJAX version: http://www.skillendar.com/hackernews/

1 point by balakk 1 day ago 0 replies      
Here's a darker version of this, aka Metrofy.


LCARSish too!

2 points by marcomonteiro 2 days ago 0 replies      
I just download Chrome specifically to use this. It looks great! Thank you.
2 points by tuhin 2 days ago 0 replies      
New update solves most of the issues raised by you guys. Thanks a lot for all the feedback.
2 points by vnchr 2 days ago 1 reply      
I could feel myself stop squinting....is this what usability feels like?
1 point by bradhe 2 days ago 0 replies      
I thought this was gimicky at first but then installed it and went back to the HN homepage and...I'm blown away. This is really REALLY great and solves a problem people have been rehashing for a long, long time -- kudos!
2 points by muitocomplicado 2 days ago 0 replies      
Works great with the Collapsible Comments extension.


3 points by gizzlon 2 days ago 1 reply      
lol.. the chrome store does not support my browser "just yet"
2 points by jbuzbee 2 days ago 0 replies      
It may not be perfect, but it's a much-needed improvement that improves readability. Thanks!
1 point by emp_ 2 days ago 0 replies      
I still think this suffers from the same issue on the Stylish option, when you are way down on the comments you have a hard time knowing if the comment is an answer to the OP or to another comment, the increased indent helped but a left align or vertical line all the way from the OP post would help a ton.
1 point by grannyg00se 2 days ago 0 replies      
I don't see how the legibility is improved. It's different, but I think the current look is just fine. Maybe I'm just lacking an eye for typography.
1 point by cptvideo 2 days ago 0 replies      
nice try, but its way better to see 20 items at a glance than to mouse around a acre of white space. readability isn't everything, workability matters too. "<ctrl> +" is a good compromise if your eyes are going!
1 point by gregparadee 2 days ago 0 replies      
Not perfect but nothing ever is the first time. Installed and love it so far can't wait to see some of the suggestions mentioned put into use in the future!
1 point by l0c0b0x 2 days ago 0 replies      
We need the option of fixing the margins ourselves, other than that great job!
1 point by oemera 2 days ago 0 replies      
This is awesome! Thank you
1 point by Indyan 2 days ago 0 replies      
An Opera port please.
1 point by Nanofied 2 days ago 0 replies      
Still could use a little touching up, but I love it none the less :)
1 point by Void_ 2 days ago 0 replies      
I would very much like a Safari extension.
1 point by mjac 2 days ago 1 reply      
I like this a lot. Could we make it the default theme?
1 point by ile 2 days ago 0 replies      
Using the CSS in Stylebot now. TY.
1 point by tommoor 2 days ago 0 replies      
Very nice, i'll be keeping this installed
1 point by gunmetal 2 days ago 0 replies      
Too much space, going back to old way.
Must Read CS Books For Self Self-Taught Programmers
218 points by stefanve 1 day ago   61 comments top 30
14 points by nikcub 1 day ago 3 replies      
I am also self-taught, although I dropped out of University two years into a CompSci/Engineering double major, so I will recommend some resources to you that helped me immensely. Each of these books has an associated MIT course with lecture video, notes, etc. available online.

First is Structure and Interpretation of Computer Programs[1], which you can read online, and the associated course at MIT, which is 6.001[2]

Second is the famous 'Dragon Book', Compilers: Principals, Techniques and Tools[3] and the associated course which is 6.035[4]

Extras would be the Python book 'How to think like a Computer Scientist'[5]. MIT course 6.00[6] uses the book as a reference, and the courseware is again available online.

Other than that - the usual suspects on learning C (K&R), UNIX (TAOUP[7]), the bash shell along with grep, sed, awk, more algorithms(CLRS[8]), functional programming and machine learning. Take your time, it takes years to build the relevant experience and knowledge and you are never done.

I love the MIT courses. Work and learn at your own rate. I feel that it is important to implement all the code yourself even if it looks easy in a lecture - there are little things you pick up as you write algorithms out.

Even though I had worked through SICP I still watched all the lectures again and implemented all the examples with benchmarks and unit tests. I usually set aside one day on the weekend to work on study, and usually an extra evening or two mid-week to read papers and books. Once you get into the routine it is great.

It might be the best approach to set yourself a timetable and weekly schedule, just like in UNI (ie. every Saturday plus Tuesday and Thursday nights) and work through the MIT courseware and associated books in order (6.00, 6.001, 6.035). The more advanced MIT courseware is an excellent bonus.

[1] http://xrl.us/sicp

[2] http://xrl.us/6001

[3] http://xrl.us/dragonbook

[4] http://xrl.us/6035

[5] http://xrl.us/thinkcs

[6] http://xrl.us/6000

[7] http://xrl.us/artunix

[8] http://xrl.us/clrs

10 points by T-R 1 day ago 5 replies      
It really depends on what you feel you're missing and what you're hoping to do (definitions of "daily work" vary widely). If you're looking to get up on theory by doing your own program of sorts, you could do worse than start with these (in roughly this order):

Structure and Interpretation of Computer Programs - Abelson, Sussman, and Sussman

Introduction to Algorithms - Cormen, Leiserson, Rivest, and Stein

The Art of Assembly Language - Hyde

a digital logic book (not sure which is most recommended), and an architecture book (see reply by tftfmacedo)

Modern Operating Systems - Tanenbaum

Introduction to the Theory of Computation - Sipser

Compilers: Principles, Techniques, and Tools - Aho, Lam, Sethi, and Ullman (a.k.a. "Dragon Book")

Programming Language Pragmatics - Scott

A database design book (one that covers Relational Algebra, not just a book on SQL), and maybe a book on Networks. Also, Roy Fielding's paper on REST is both academic and applicable (and more approachable than you'd expect of a Ph.D paper). If you want to go all the way, an undergraduate program usually also has Calculus, Discrete Math, Linear Algebra, and Statistics. Some schools would also require Physics and Differential Equations. I'm sure I'm missing some topics, too, particularly electives.

If you can get through those and the associated problem sets, you'll have a better foundation than most.

6 points by stevelosh 1 day ago 1 reply      
My vote goes for The Little Schemer. It's short (but don't read it all in one sitting), entertaining, and will teach you some important concepts.


5 points by dragonquest 1 day ago 0 replies      
Over the years I've found the following CS books helpful, but only a minority in my day-to-day work. Your mileage may vary, as would the utility of these to you.

Algorithms -> Algorithms + Data Structures = Programs by Wirth (worth its weight in gold if you can get past the Pascal syntax)

OS -> Operating System Concepts by Silberschatz et al (The dinosaur book)

CS Theory -> Introduction to Automata Theory, Languages, and Computation by Hopcroft, Ullman

Programming Languages Theory -> Programming languages: design and implementation by Pratt et al

Database Theory -> Database Design by Wiederhold

Architecture -> Structured Computer Organization by Andrew S Tanenbaum

9 points by samdalton 1 day ago 1 reply      
While not strictly a CS book, "Godel, Escher, Bach" by Douglas Hofstadter definitely has strong roots in the area. It's not a text book, nor anything even close, however, there is a reasonable amount of mathematics and programming language design which make it educational as well as inspirational (particularly formal logic systems, around which the premise of the book is built).

The book is somewhat life changing, in the questions that it asks. You might find yourself thinking about things differently, such as what it is to be conscious, can we ever achieve artificial intelligence, is there such a thing as fate, how was J.S. Bach able to produce such stunning compositions, etc.

It's quite heavy going however, but there's a slightly more succinct, terse version which he wrote a few years ago, called "I Am a Strange Loop". This book takes the point he was trying to make in the first book, and expands on it while adding clarification. It does lack a lot of story that the original contained, so it's not a complete replacement however.

While I think of it, there's also Operating System Concepts by Silberschatz, Gagne and Galvin - http://www.amazon.com/Operating-System-Concepts-Windows-Upda....
It's an extremely detailed look at how operating systems work, down to the lowest level, and it explains a large number of things that we interact with on a daily basis.

5 points by metra 1 day ago 0 replies      
Along with the usual classics, I highly recommend Computer Systems: A Programmer's Perspective by Randal E. Bryant and David R. O'Hallaron of Carnegie Mellon. The authors wrote it after teaching a class on the subject. It's extremely readable and gives you an excellent introduction of machine level code, processor architecture and memory as well as a solid foundation of higher level concepts including networking and concurrency. If you're considering programming as a career, I'd say this book (or something similar, probably spread across multiple books) is a must-read. It's used by CMU, Stanford, Caltech, UIUC, Harvard and dozens of other schools.


4 points by kamechan 1 day ago 4 replies      
functional stuff is making a comeback. haskell can be daunting in its pure-ness sometimes, requiring monads for seemingly anything useful. but it's a wonderful language/lifestyle choice. this online book broaches the subject pretty well: http://learnyouahaskell.com/chapters
6 points by wicknicks 1 day ago 1 reply      
Programming is more about thinking in a certain way than algorithms or data structures (those are the tools). You should check out the book Structure and Interpretation of Computer Programs -- I found it "enlightening"
2 points by danieldk 1 day ago 1 reply      
The standard for computational grammars and parsers in natural language processing is:

Prolog and Natural-Language Analysis - Fernando C. N. Pereira and Stuart M. Shieber

The PDF is available from the publisher:

It also serves as a great introduction to Prolog and logics programming.

2 points by svag 1 day ago 0 replies      
You can find some resources in a similar discussion here http://news.ycombinator.com/item?id=297289

You can find some resources, mostly books, in the following links



2 points by dlo 1 day ago 0 replies      
What I often find to be the case is that a course in college only loosely follows the assigned book. Professors like to navigate through the subject material in a very personal way, which will often not be the way that it is covered in the book... if it is covered in the book at all!
For this experience, I would suggest going through lecture notes and, when necessary, supplementing them with a book.

While books are certainly valuable in someone's education, I think we are forgetting about the projects. It is very instructive, not to mention very satisfying, to implement an operating system, a compiler, or a transport layer (that interoperates with real TCP!). Moreso than reading the books of a college course, I recommend doing its projects.

To get started, I recommend the Pintos operating system, designed for Stanford's operating systems course, CS 140, traditionally thought to one of the more difficult programming courses in their undergraduate curriculum.

Some links.


4 points by dytrivedi 1 day ago 0 replies      
Godel, Escher, Bach


Art of Computer Programming

C Programming Language

Introduction to Algorithms

Land of Lisp

-- Extracted from my wishlist - http://flipkart.com/wishlist/dhavaltrivedi

2 points by jollyjerry 1 day ago 0 replies      
3 books that I helped me tie my daily work back to more abstract computer science concepts are:

- Ruby Best Practices
- Javascript, the Good Parts
- Higher Order Perl

I recommend picking these up after you've done work in the languages they're about. They assume that you're already comfortable with the language, but then go back to show how that language uses CS concepts. They highlight how functional programming, and other classic introductory CS concepts, but stays practical. None of them are long reads, and there are clear take aways that make you better at programming.

1 point by cpeterso 23 hours ago 0 replies      
Eric Evans' "Domain-Driven Design: Tackling Complexity in the Heart of Software" blew my mind. Domain modeling gets to the heart of object-oriented programming. The book is a bit academic and long-winded, but very deep and complete. This is an immediate classic and required reading for any serious engineer.
2 points by rshepherd 1 day ago 0 replies      
This response is late that I doubt will even be read by the poster, but I will throw this out there anyway.

I was (am?) a self-taught programmer, I guess I am transitioning away of that label. I am a bit less than halfway through the MSCS program at the moment. I really cannot recommend it enough.

I think I was a pretty good software engineer prior to getting some formal education, but I cannot tell you how often in class the light from heaven just shines right down.. "oh so that's why x is y". If you enjoy the work, its a real pleasure (albeit a painful amount of work at times).

So finally I get to the point. I can see that you have already received a lot of good recommendations. I think most of them are quite good. However, I have a couple of observations about specific books.

Intro to Algorithms - Cormen etc.
If you feel you need a discrete math course, then this book is probably not a good place to start with algorithms. It is a rigorous treatment of the subject. However, if you lack mathematical sophistication, this book can be tough. I aced my discrete course prior to taking an algorithms course taught with this book, and I struggled mightily to get an A-. I found the proofs in the book difficult to understand on many occasions.

Modern Operating Systems - Tannenbaum
This book is very easy to understand and provided me with so many "A HA!" moments. A real pleasure. I am not sure what your current work is, but the only pre-req on this book is a modest amount of C/C++ programming. The reason I say this is because I found that having that, this book allowed me to finally understand what is happening from compile time down to the CPU at runtime. A really rewarding journey.

2 points by mbesto 1 day ago 0 replies      
How to Think Like a Computer Scientist - Python Version


2 points by saurabhsharan 1 day ago 0 replies      
Two suggestions:

Elements of Programming (by Alexander Stepanov and Paul McJones) takes a mathematical approach to programming. Since its only prerequisite is a basic understanding of high school algebra, the book is very accessible and easy to follow.

Digital Design and Computer Architecture (by David Harris and Sarah Harris) is a great book on computer architecture that starts with digital logic design (i.e. gates and transistors) and ends with a subset of the MIPS instruction set. Though, it probably won't help you much in 'daily work'.

4 points by stefanve 1 day ago 0 replies      
Updated list: (still unsorted)


4 points by rohitarondekar 1 day ago 1 reply      
Can anybody recommend a good book or resource for learning discreet mathematics?
2 points by jdj 1 day ago 1 reply      
One book that I would suggest to anyone is Introduction to Automata Theory, Languages, and Computation - HMU. It is very approachable and presents some very interesting topics (so you won't write a regex for matching HTML and will learn what P vs NP means). On a more practical side, I think that a must read for machine learning is Tom Mitchell - Machine Learning . Another book that from what I've heard is easier to digest is Data Mining: Practical Machine Learning Tools and Techniques.
1 point by mynegation 1 day ago 0 replies      
Previous HN thread on a similar topic: http://news.ycombinator.org/item?id=2262527
1 point by iqster 1 day ago 0 replies      
Peopleware - This isn't a programming book, but I feel that every professional programmer (and certainly every manager) should have read it. It is about the human aspect of programming. Programmers are people too!
2 points by Tinned_Tuna 1 day ago 1 reply      
I can't remember who said it, but

"If you can write a compiler, you can write any program."

Hence, I'd get compiler books. Modern Compiler Implementation in Standard ML, SICP has a couple of sections on compilation, there's a computational theory book that I don't have on hand which would be useful to this end too.

1 point by netaustin 1 day ago 0 replies      
Patterns of Enterprise Application Architecture by Martin Fowler helped me make the jump from small systems built for myself to large, sophisticated systems built for others.

The Mythical Man Month by Fred Brooks really helped me learn to think about large projects from a personnel and planning perspective. There are some ideas there that have become part of the CS canon; "no silver bullet" and the slightly sexist but accurate metaphor for throwing more people at an overdue project, "nine women can't make a baby in one month." The Mythical Man Month was written in 1975, but it holds up remarkably well.

1 point by thekevan 1 day ago 0 replies      
I'd like to hear HN's opinion on the quality of this list:


1 point by gharbad 1 day ago 0 replies      
Knuth's Art of Computer Programming

Aside from that, there are typically only 1-2 extremely well regarded books in any given area. If you're going to be doing something specific, grab the appropriate book.


Compilers - Dragon Book

AI - Russel/Norvig's Artificial Intelligence: A Modern Approach

Oh.. everyone needs a whiteboard, as well - they're quite useful

2 points by tmachinecharmer 1 day ago 0 replies      
The Annotated Turing by Charles Petzold
0 points by cema 1 day ago 0 replies      
FYI, you have listed several books twice (SICP, Intro to Algorithms).
1 point by known 1 day ago 0 replies      
2 points by garethdown44 1 day ago 0 replies      
Programming Paradigms - stanford course, available on iTunesU.
Sshuttle - tunnel all your traffic through ssh github.com
217 points by fs111 3 days ago   66 comments top 21
39 points by tlrobinson 3 days ago 4 replies      
NOT all your traffic. This only does TCP. Any DNS, UDP, and other non-TCP IP traffic won't go through the tunnel!

I tried sshuttle awhile ago and abandoned it because of this. The only thing worse than no security is a false sense of security.

14 points by bryanlarsen 3 days ago 2 replies      
+1 for a reference to slirp, which let you turn a dial-in connection to a Unix terminal into a real internet connection back in the days when your University would give you a terminal connection but not a PPP connection.
8 points by ch0wn 3 days ago 1 reply      
I set up an OpenVPN server for this purpose. This solution is so much easier and elegant, it's not even funny.
5 points by bretthopper 3 days ago 0 replies      
It's always good when there's only 2 steps to get it working and they work perfectly.

Using it over hotel wifi as I'm typing!

6 points by nprincigalli 3 days ago 0 replies      
Just a little nitpicking, when he talks about TunnelVision, he should have said:

  And nobody never notified me of any security flaws in my key exchange,

Instead of:

  And nobody ever found any security flaws in my key exchange,

Yeah, hell is in the details...

Regarding SSHuttle itself, I really liked it! (coming from someone who does all his browsing with ssh -D)

5 points by iuguy 3 days ago 1 reply      
How does this compare to OpenSSH VPN and Socks Support[1]?

[1] - http://wiki.enigmacurry.com/OpenSSH

5 points by agj 3 days ago 0 replies      
The alternative that predates this is to this is to just tunnel ppp over ssh using pppd:

    pppd updetach noauth pty "ssh root@example.com pppd nodetach notty noauth" ipparam

I used this for many years before switching to openvpn. This does require root access on the host to execute pppd however.

2 points by davej 3 days ago 0 replies      
Brilliant. Before this I used `ssh -d` and tunnelled everything through the port with proxifier.app but this is a much nicer (and free) solution!
1 point by sandGorgon 2 days ago 1 reply      
Can I receive postbacks using this ?

Explanation - as usual, my company works on a shared LAN which goes through a single internet connection.
To test some applications, we have to be able to receive postbacks (on our developer machines) through 3'rd party services.
The best way we found was to have an OpenVPN server running somewhere. Each developer connects to the VPN server and receives a private IP-address. All postbacks go to the VPN server and are then routed through nginx to the correct developer machine (on the private IP address).

VPN is a pain to setup and configure - can something like this be used instead ? The question really is - how does nginx forward requests to the correct developer machine.

2 points by psn 3 days ago 1 reply      
https://github.com/apenwarr/sshuttle/commit/33efa5ac62eaf9cf... is the point where I get confused.

In a normal tunnel setup, one tunnels at the IP layer, and dumps all IP packets into the tunnel. At the far end of the tunnel, packets are sent onwards based on the far end's routing table. Things like DNS "just work" because everything happens at a layer below TCP and UDP. In this system, he's making it work for each non-tcp using layer 4 protocol separately, leading to weirdness like rewriting /etc/hosts.

For tcp, he's nating all traffic locally to a local server, which then multiplexes all incoming traffic into the ssh connection. The remote side then unmultiplexes the data. I don't fully understand how this avoids tcp over tcp. Maybe I'm dumb. [edit: yeah, I'm dumb. the tcp connection is terminated at the local server, the contents are pumped over the ssh connection, and the remote side opens a new tcp connection]

I wrote this mostly because I read the readme and went "but how does it work?".

9 points by paulv 3 days ago 0 replies      
It doesn't do TCP-over-TCP. From the README:

sshuttle assembles the TCP stream locally, multiplexes it statefully over an ssh session, and disassembles it back into packets at the other end. So it never ends up doing TCP-over-TCP. It's just data-over-TCP, which is safe.

2 points by sigil 3 days ago 1 reply      
Very cool. I wonder how hard it would be to port the muxer core to C, and run it under tcpclient / tcpserver on either end of the ssh connection.
1 point by apenwarr 3 days ago 0 replies      
1 point by ccarpenterg 3 days ago 2 replies      
I'm a little confused. I'm outside USA and I want to browse some restricted content for users located outside of the U.S. Can I do this using Sshttle and a VPS?
2 points by chopsueyar 3 days ago 1 reply      
How would one go about setting this up with a firmware rewritable consumer-grade router?

Can I have a ww-drt install act as a client with Sshuttle and install a public key to require no login?

2 points by askedrelic 3 days ago 0 replies      
I've been running this for months now and really like it. Really simple to setup and quite flexible.
1 point by tobylane 3 days ago 0 replies      
Anyone know of a portable Chrome that I can SSH into home with? Preferably something I can leave on a shared computer, while only I have access to the stunnel. Also, it may need to be able to use port 80, I don't know the filter inside-out.
1 point by duckyflip 3 days ago 2 replies      
Would this circumvent the checks Hulu does for example by forcing Flash to always connect directly.
i.e using SOCKS Proxy will not work with Hulu but using full VPN will, so how will sshuttle rate ?
-4 points by chopsueyar 3 days ago 0 replies      
From the github.com page

This is how you use it:

    git clone git://github.com/apenwarr/sshuttle on your client machine. You'll need root or sudo access, and python needs to be installed.

./sshuttle -r username@sshserver -vv

(You may be prompted for one or more passwords; first, the local password to become root using either sudo or su, and then the remote ssh password. Or you might have sudo and ssh set up to not require passwords, in which case you won't be prompted at all.)

That's it! Now your local machine can access the remote network as if you were right there. And if your "client" machine is a router, everyone on your local network can make connections to your remote network.

You don't need to install sshuttle on the remote server; the remote server just needs to have python available. sshuttle will automatically upload and run its source code to the remote python interpreter.

This creates a transparent proxy server on your local machine for all IP addresses that match (You can use more specific IP addresses if you want; use any number of IP addresses or subnets to change which addresses get proxied. Using proxies everything, which is interesting if you don't trust the people on your local network.)

Any TCP session you initiate to one of the proxied IP addresses will be captured by sshuttle and sent over an ssh session to the remote copy of sshuttle, which will then regenerate the connection on that end, and funnel the data back and forth through ssh.

Fun, right? A poor man's instant VPN, and you don't even have to have admin access on the server.

Where can I get large datasets open to the public? quora.com
208 points by helwr 3 days ago   37 comments top 22
18 points by physcab 2 days ago 3 replies      
Asking "What datasets are available to me?" is sometimes the wrong question. A better way of going about the problem is asking something more specific like "How can I create a heat-map of U.S poverty?" The reason why the latter is better is that it not only focuses your attention on something do-able but it actually teaches you more about data analysis than just searching for datasets.

For example, to solve the question above you are going to be asking yourself the following followup questions:

1) Where do I get a map of the U.S?

2) How do I make a heat-map?

3) How do I feed in my own data into this heat map?

4) What colors do I use?

5) Can I do this real-time? Do I need a database? What language do I use?

6) Whats a FIPS code?

7) How do I find a poverty dataset with FIPS codes?

8) This poverty dataset doesn't have FIPS codes, but I can join it with this other dataset that does have FIPS codes.

6 points by iamelgringo 2 days ago 1 reply      
Hackers & Founders SV is hosting a hackathon[1] in two weeks at the Hacker Dojo in Mountain View. It's going to be geared towards working with Factual's open data API.

Factual's[2] goal is to provide an API to connect all those available data sets, and they have a fairly impressive list of data sets available. Factual is very interested in hearing what datasets you want to work with, and they are willing to bust ass to get them available before the hackathon.

We still have around 40 RSVP slots open. You can register here: http://factualhackathon.eventbrite.com/

</shameless plug>

[1] http://www.hackersandfounders.com/events/16535156/

[2] http://www.factual.com/

[3] http://factualhackathon.eventbrite.com/

22 points by machinespit 3 days ago 3 replies      
data.gov and other US gov data sites are getting severe cuts even though they're saving money (http://www.federalnewsradio.com/?nid=35&sid=2327798)

Very upsetting for fans of open / accessible (government) data.

FWIW, petition at http://sunlightfoundation.com/savethedata/

2 points by drblast 2 days ago 0 replies      
Edit: Whoops, I thought this was an "Ask HN." The below post still stands for anyone who finds it useful.

The U.S. Census has an extremely well-documented large data set:


And the documentation is here:


The software that they provide to go through the data is crappy, however (90's era).

I have an equally crappy but more useful to a computer scientist Common Lisp program that will pull out specific fields from the data set based on a list of field names. If you want that, I can dig it up for you.

Also, before you start parsing this, it's worthwhile to read the documentation to find out how the files are laid out, and what each field really means. These files are not relational databases, so if you're looking at it through those lenses, confusion will result. In particular, some things are already aggregated within the data set.

5 points by Maro 2 days ago 0 replies      
There's a startup called kaggle.com that is all about hosting data mining competitions around datasets, like netflix.
11 points by shii 3 days ago 0 replies      
7 points by raghus 3 days ago 0 replies      
3 points by nowarninglabel 2 days ago 0 replies      
At http://build.kiva.org there are some nice datasets in the "data snapshots" section. I have high hopes we will be releasing a lot more data.
4 points by bOR_ 2 days ago 1 reply      

For sentimental value: HIV sequence data (and other data) from 1980 till now. Did my thesis on these ;-).

In general, there is an enormous amount of gene sequence data around, not just HIV.


Whole genome sequences of eukaryotes (including humans):

3 points by latch 3 days ago 0 replies      
I believe Steven Levitt used the Fatality Analysis Reporting System (FARS) from the national highway traffic safety administration (NHTSA) for his seatbelts vs carseats work:


3 points by brandnewlow 3 days ago 1 reply      
On that topic, anyone have any suggestions for the easiest way to prepopulate a directory of local businesses in the U.S.?
3 points by arethuza 2 days ago 0 replies      
UK Government data sets: http://data.gov.uk/
3 points by buss 3 days ago 0 replies      
http://aws.amazon.com/publicdatasets/ which includes my former advisor's dataset (UF sparse matrix collection) which includes a matrix or two from my research.
2 points by shafqat 2 days ago 0 replies      
We provide API access to more than 20 million articles (headlines, excerpts). People have done all sorts of interesting things with it - http://platform.newscred.com.
7 points by barefoot 3 days ago 0 replies      
How many of these allow me to create for-profit websites with them?
5 points by kordless 3 days ago 0 replies      
3 points by mrzerga 2 days ago 0 replies      
microsoft azure - they have some large datasets...
1 point by thesuperformula 2 days ago 0 replies      
You can find many large datasets here, http://beta.fcc.gov/data/download-fcc-datasets , some are over a gigabyte.
3 points by plannerball 3 days ago 0 replies      
Poll: Do you know C?
194 points by DanielStraight 15 hours ago   174 comments top 65
30 points by tzs 10 hours ago 7 replies      
I wish more languages had books equivalent to K&R. Here's how I learned C.

1. Buy K&R.

2. Read it. Maybe 2 or 3 times during the process of reading it, I would go write a program to try what I had just learned. This was was around 1980, so trying a program meant walking across campus to a terminal. I could either head to the computing center and use a public terminal, or to the high energy physics building (where I had just started a work-study job programming and it required C). The former would mean competing for a free terminal--and annoying people if I was spending my time at the terminal mostly reading K&R instead of typing. The later meant sitting at a terminal next to a noisy minicomputer in a cold room.

When I got to the end of K&R, I was a C programmer in theory.

3. Start doing real work, using K&R as a reference.

Very quickly theory became aligned with reality, and I was then a C programmer in practice.

Nowadays, most programming books I find assume that I'm sitting eagerly at a computer as I read, and that I want to stop every three paragraphs and type in some code and run it, and then the book discusses what that code did with the author writing under the assumption that I have the output of the code on my screen.

I like the K&R way better.

28 points by georgemcbay 9 hours ago 1 reply      
+1 to the non-existent poll entry that says:

"I know C thoroughly, though I barely ever use it these days. I used it for so long and during such a formative period of my overall programming career that I can read/write C code with virtually no spin-up time even though I find myself touching C code very rarely. Oh, and btw, when I find myself coding C on a nix box, I am still amused at how I have muscle memory for all those old emacs commands I also haven't used regularly in about a decade though I wouldn't be able to tell you what they are without doing some keyboard mime exercises."

Yeah, well, I guess that is a bit too long to be a poll entry.

100 points by kabdib 14 hours ago 4 replies      
I've been programming in C for longer than my current manager has been alive. :-)
14 points by antirez 14 hours ago 9 replies      
As a first reaction I thought, well, more than 50% of HNers fluent with C, the average age should be pretty high probably. But then I realized that actually the average HN age is probably around 25 (from other pools I saw here), so I guess, there are still a lot of fresh programmers learning C. I really hope so. I love higher level programming languages and spent a lot of time with Tcl, Scheme, FORTH, Joy, Ruby, and other languages, but I really hope that the next generations of programmers will still be able to stay near the metal when needed.
1 point by SageRaven 27 minutes ago 0 replies      
Dumb question: Is the 2nd Edition K&R for about $50 on Amazon worth the coin over the 1st Edition I recently picked up at a thrift store for a buck?

(I also picked up Steele's C: A Reference Manual, 4th Ed. for a buck at the same place.)

11 points by alexk7 13 hours ago 3 replies      
I'm from the "Modern C++" school. I learned C++ without first learning C. I don't consider myself a C programmer. Of course, I can read and write C code, but I would consider it a burden to code without smart pointers, templates and exceptions. How should I answer this poll?
1 point by chicagobob 8 minutes ago 0 replies      
I learned C for the first time in 1986 and still use it all the time as my day to day favorite language is Objective-C (and also I've really started to develop a fondness for Ruby too, that's a neat language).
34 points by stray 15 hours ago 1 reply      
There should be an option for "C was my first programming language and I used it exclusively for years - many years ago".
9 points by larrik 14 hours ago 2 replies      
I used to know it very well. Now, not as much. Even when I wrote C++, I basically wrote "C, with classes."
1 point by DarrenLyman 9 minutes ago 0 replies      
I use C for programming PLC's (programmable logic controllers). I have created testing centers built on C to test used PLC's.
10 points by Vivtek 14 hours ago 2 replies      
I used C exclusively for ten years - then I fell in love with Perl and never really looked back. Garbage collection was my downfall.
8 points by derrida 14 hours ago 2 replies      
C is the language I use when I just want to sit down and enjoy "resonating with the computer". Python, Java etc feel like I am "working", or "cheating" as the case may be in Python. With C you are conscious of the memory of the computer and the lovely datastructures you are forming on top of it and the whole elaborate dance. I hear that Lisp programmers get a similar feeling but I am not close to seeing that yet.
2 points by sedachv 11 hours ago 1 reply      
My second ever experience in programming (the first was typing in BASIC on a Soviet trash-80 clone) was typing in example programs from a C book. I did quite a bit of C programming in university. I've contributed C code patches to several Free Software projects. I am currently writing a C compiler.

You would think this would qualify me as someone who, if not enjoys, is at least is competent at C.

You would be wrong.

I absolutely despise C, and never would have become a computer programmer if I had to do most of my programming in C.

The horrible syntax, retarded pre-processor, and absolutely brain-damaged memory model (addressing modes? segments? virtual memory? reified stack? fuck that, let's just pretend everything is a pdp-11!) make it into this zombie that can't quite decide whether it's a shitty assembler or a shitty Algol clone.

I don't consider myself a competent C programmer, and I have no desire to become one.

Trying to write a compiler for C (https://github.com/vsedach/vacietis) has only cemented my dislike for the language.

I don't blame Dennis Ritchie for it. He probably thought it was a dumb joke too. I blame all the retards in the 1980s that thought it was the bee's knees and made it a "standard."

10 points by wickedchicken 14 hours ago 1 reply      
C, if you want, can run completely without a runtime. Few modern languages can claim that. It's what gives C both its notoriety and power.
9 points by timclark 14 hours ago 3 replies      
I know C but none of those categories apply to me. Poll design is useful skill to learn!

I am not a pollster but by combining different facts into single options you are restricting the information you can gain from your poll or polls.

I taught C to engineering students at a university, I know it thoroughly, I haven't written a line of it in 12 years - the only option I can logically choose is the final option.

3 points by MatthewPhillips 13 hours ago 0 replies      
I know C although it's been several years since I've used it. Currently Go is my low-level language of choice (although maybe it's not low-level). It gives you the simplicity of C, but with a few of the higher level features like garbage collection, without the baggage of high level languages.
4 points by phpnode 14 hours ago 0 replies      
C is the third most widely known language on HN behind javascript and python. Source: http://hackernewsers.com/skills/index.html
3 points by bobbywilson0 13 hours ago 0 replies      
I have a lot of respect for C and every once in a while I open up the K & R and go through a few chapters. While I find this to be really well written and holds up even for today's standard of programming book, I feel like the resources for beginner C online are pretty slim.

I think my primary use for knowing some C would be writing C extensions for Ruby or looking at some source code of classic C libraries.

4 points by muon 14 hours ago 0 replies      
C is the only language that I use at work (along some basic scripting). Due to work that is mainly firmware, device drivers etc. Honestly at times, I do feel that embedded engineers are odd persons out here at HN.
1 point by genbattle 4 hours ago 0 replies      
I'm on the younger end of the age-scale (23), and i would have to agree that less people are learning C as a matter of course these days. Over the whole programmer population the percentage would be very low, but the hacker population is almost defined by its use of C. Many notable and large hacker projects are based on C; Mozilla, Linux Kernel, GNU tools, etc. I think this is in part because the community has such a strong legacy and is driven to keep building and extending what has come before, but also because of the higher average programming ability in the hacker community compared to the general programming population.

From my perspective using Linux is one reason i know some C, but the greater reason is because my formal education included embedded C programming with microcontrollers. Programmers going through pure software engineering courses seem to focus much more on computer science and web development concepts, rather than systems design and programming. That said, i'm sure my experience is not typical, and other universities probably use C in some part of their courses.

In terms of actual programming, i haven't yet found a project which required the use of C, and in the cases where i have used it i've often stumbled more with the bulky IDE and build configurations than the language itself. My particular trouble is around external references and including code not in the standard library, and then the further dependency hell.

Searching around i haven't really found any C tutorial that really covers this sort of stuff really well, most tutorials focus on the language itself (which i don't really have an issue with). Does anyone know any good resources on how to set up an optimal and easy to manage C development environment?

3 points by Newky 13 hours ago 0 replies      
My lecturer in my basic introduction to C class once said to me that he had been a professional C programmer for the past 10 years, and still considered himself a C novice.

I think how "knowing C" is defined is key in this question, yes I can write my fair share of C, but I still don't think I could class myself as a C programmer.

2 points by PeterWhittaker 12 hours ago 1 reply      
Polls != me, ever. I chose the second answer because it is the closest, but....

I haven't really used C in years, but I can start programming in C anytime and get operative, robust (I'm a freak about error handling and knowing where lie the exceptions) code quickly and cleanly.

These days I dabble in Javascript, higher order perl, and am trying to grok Haskell, but I think in C. To my simultaneous benefit and detriment.

The vast bulk of code I was paid to write was /bin/sh - thousands of lines of clean, robust, cross-platform installation and configuration routines, with pipes to awk and sed as required. But I thought in C.

Other than deliberately obfuscated code and kernel programming, I've never met a C program I couldn't grok.

But I don't use C, haven't in years, and don't know it thoroughly. I am not a C guru, nor even close to being a wizard. But I would call C the lingua franca of the computer world, the cleanest, most elegant tool out there.

C wasn't the first language I learned, but it was the first that blew my mind. After years of hacking on various BASICs, then FORTRAN, and Pascal, I encountered C (I have a BSc in Physics; I didn't hit C until after I decided to experiment with CS for a while).

After years of forcing my thinking into the little boxes these other languages insisted on living within, BAM, here was a language that allowed me to escape any box, build better boxes, nest boxes, hide boxes, thermonuclearly destroy anything within 6 gigs of my box, etc., etc., etc.

The sad side note: Scoping was never really an issue with the other languages, they had pretty hard and fast rules. Scoping wasn't all that much different with C, but all of a sudden it became really, really important to understand it, to be able to unwind pointers mentally and really appreciate what was going on.

So for me, C scope was computer scope, all scope was C scope. One of the biggest mental hurdles for me in learning higher order perl was abandoning C scope and automatic dereferencing without global variables.

It took me a while to get my head around how the difference in scope management made class and object variables and memoization so much easier in perl - and in many other languages - than in C.

So I think in C. And sometimes that's good, but other times it is a handicap.

1 point by robflynn 4 hours ago 0 replies      
I selected 'none of these options apply to me.' I worked with C for many years (pidgin was written in C) and did some C at my first, second, and third jobs. However, I haven't had a need to write anything in C in about 7 years so I am more than rusty at it.

I didn't feel like "I learned some C" applied. That could be my awesome sentence parsing skills at work, though. :P

I wonder if I could get back into the swing of things easily. I should give it a shot.

2 points by mrcharles 12 hours ago 0 replies      
I answered with the first option, even though I haven't had to use base C in a long long time. But I do know it inside and out. It's a pretty easy language. Some days I miss it.
1 point by rickmb 10 hours ago 0 replies      
I've been programming in C for years.

Unfortunately, those years were mostly in the 80's and I've barely touched it since, so I really have no idea if I can still call myself a C-programmer. I used to be good at it though. At least that's how I remember it...

1 point by Aloisius 8 hours ago 0 replies      
I learned draft ANSI C++ before C. Actually there wasn't that much to learn outside of the definition of NULL and where you could stick variables declarations.

The only time I use it these days is when I go into random open source projects to fix bugs or occasionally add a feature.

2 points by rdtsc 11 hours ago 0 replies      
I program in C+Python, doesn't get better than that.

I have had to learn JS, but I don't like it.

3 points by Symbol 14 hours ago 0 replies      
I use C/C++ and assembly everyday as a game programmer. It is the incumbent development language for consoles (at least xbox and ps3 - I'm never done any dev on the Wii). I suppose its stay is due to the ease of access to the metal.
It's propably worth noting that lots of games use higher level scripting languages to do speed-insensetive tasks.
1 point by dionidium 13 hours ago 0 replies      
I don't use C for any personal projects and only occasionally at work, but I read K&R once a year. It's a fantastic book.
1 point by niels 6 hours ago 0 replies      
My first full time software job, was writing C for PSION Workabout terminals. They had 2MB ram and their own custom plib for system access that ran more efficient than using clib functions.
1 point by varjag 12 hours ago 0 replies      
Am using C a lot, from writing device drivers and hacking network protocols to userspace stuff. Yet I can't say I know it thoroughly: there are enough little quirks in the specs.

It is a great little language for sure, still destined to outlive some of the languages that are hip today.

1 point by epynonymous 12 hours ago 0 replies      
c syntax lives on in many languages like java and javascript. it was the second language that i learned behind java, this was back in 1998. i still think it's a great language because you have so much control over the important things like memory management and pointers, how priceless (albeit dangerous) is that? string manipulation was a real detail that i could live without and exception handling was non-existent (don't go there with goto labels), but overall it was a clean language, you could optimize the hell out of things like byte boundaries for structures, you just felt like you had full control, it's the closest thing i had to assembly without the syntax being too cryptic. that was the good old days and i think it was an important foundation for me in terms of learning how to be anal as hell with source code.
2 points by mziulu 14 hours ago 0 replies      
I began working 2 years ago, landed a job where I almost only write C code (a huge codebase for scientific/high performance computing).
1 point by michaelpinto 11 hours ago 0 replies      
I'm not a programmer -- but I was able to learn some HyperTalk back in the day: I really wish they'd make some heavy duty programming language for non-programmers...
1 point by desigooner 11 hours ago 0 replies      
Used to know C + Assembly pretty well back in school (thesis + projects on microcontrollers and such) ... All I can do now is read some code ..
2 points by sid0 13 hours ago 0 replies      
I can write C when necessary, but I'd much rather not.
5 points by theatrus2 12 hours ago 0 replies      
I do embedded programming. There is only C.
2 points by axylone 10 hours ago 0 replies      
I'm about to get out of college, and at my new job I'm using mostly C. Well-written C is surprisingly fun to work with (although you could probably say that about anything).
1 point by imp 12 hours ago 0 replies      
I'm still learning it. If anyone else is interested, I'm taking a class for it on my learning website, Curious Reef: http://curiousreef.com/class/programming-in-c/
1 point by kgutteridge 14 hours ago 0 replies      
Unfortunately not that much since academia and a few other bits and pieces, 30 here, still do a lot with C++ and ObjC though rather than higher level languages
1 point by karolist 13 hours ago 0 replies      
I've known some C for long enough, but only recently dived really deep into it, it was Apple and Objective-C that brought back my interest in the language. Writing some forensics and data restore tools as a project to learn the language, progress is slow, but I'm loving it.

One thing I've noticed is how focused you have to be when working with C vs for example python/php - everything is very error prone mostly due to manual memory management. You also need good visualization and some basic math skills.

3 points by vkris 13 hours ago 0 replies      
I used to code heavily in C when I was in school. My job ruined me.
2 points by simk318 14 hours ago 0 replies      
During college days i have used lots of C for different projects but its been few years i haven't touched C, I think i have forgotten pointer and stuffs need to review
2 points by brianmario 13 hours ago 0 replies      
I'd like to think I can consider it one of my "known" languages, but people like @ice799 (timetobleed.com) know C. There's a HUGE difference.
1 point by mnwcsult 12 hours ago 0 replies      
I have extensive knowledge of C. I have been using it since 1987. Our companies youngsters have to get up to speed quickly as our simulations are C/C++ and the datasets are massive and the code must be very fast. Of course they were taught Java in college and find pointers difficult. They quickly come to appreicate the speed difference.
1 point by nigelsampson 5 hours ago 0 replies      
I learnt C programming Quake 2 modifications, picked up C++ at university and haven't used it since.
1 point by younata 10 hours ago 0 replies      
C is my first language. Learned it about 3 or 4 years ago.
1 point by jk-in 12 hours ago 0 replies      
I know quite a few high level languages, but C is the main one. It is probably because I work on system software.

One good thing that I figured out is to learn concepts from high level languages and use them in C. I guess lot of people are doing the same.

1 point by J-L 11 hours ago 0 replies      
My main language is Java these days, but I use lots of other languages as well (e.g. Perl, Python, R, sh, MATLAB, ...). However, C remains the language that I know most thoroughly, and I've used it since 1989.
1 point by mellery451 12 hours ago 0 replies      
I learned C as my second language after FORTRAN. As it turns out, some of the strangest C code I've ever had to maintain was a system that had been converted from FORTRAN to C using an automated tool.
1 point by guyzero 10 hours ago 0 replies      
I used to have the C operator precedence table memorized as I taught C classes weekly. But I never use it these days. Your know it/use it options are conflated.
1 point by ankurcha 6 hours ago 0 replies      
The fist language i ever learnt more than 10 years ago in 8th grade.
1 point by duiker101 14 hours ago 0 replies      
I've learned some C, but I wouldn't be able to write a program in it without a lot of documentation. I can read it, but I don't use it or use it once or twice a year.

but i know objective-c pretty well.

1 point by Cyranix 13 hours ago 0 replies      
I'm hoping that I never have to write C/C++ or use vim/emacs extensively during my programming career. I'm perfectly content to leave that work to someone else.
3 points by jharris 13 hours ago 1 reply      
Hell yes! I write C-based server code nearly every day!
1 point by HardyLeung 12 hours ago 0 replies      
I learned C, then C++, then C#. I'd say I love them all.
2 points by jordhy 10 hours ago 0 replies      
All programmers should know C.
1 point by Apocryphon 10 hours ago 0 replies      
I know C, and of C. I do not grok C.
1 point by wojtczyk 9 hours ago 0 replies      
Yes, I know C and C is important, but not for everyone.
1 point by HockeyBiasDotCo 11 hours ago 0 replies      
I wrote in C during teh late Jurasic period. But I love C#!
2 points by CedriK 14 hours ago 2 replies      
I know C(#), it counts right? ;)
1 point by jdefr89 13 hours ago 0 replies      
C was my first language, and I love it...
1 point by fmaker 12 hours ago 0 replies      
C is great. Yeah it isn't perfect, but it's always there, the rules don't change and you always know where you stand.
1 point by suprafly 12 hours ago 0 replies      
Language #1 for me.
-3 points by telson 14 hours ago 0 replies      
Yes, I do.
France outlaws hashed passwords... slashdot.org
192 points by Tharkun 20 hours ago   112 comments top 33
68 points by drdaeman 17 hours ago 3 replies      
From /. comments:

> I suspect the OP did not verify the exact wording. The law requires retention of (among other things) "mot de passe ou données permettant de le vérifier ou de le modifie" (password or data to verify it or change it) so it seems that it would be enough to store the password hash and/or do a password reset when demanded by the law enforcement guys.

14 points by ErrantX 19 hours ago 1 reply      
French politics simply does not understand the internet. And they are uninterested in privacy or security. They "lost it" in my eyes with their LOPPSI internet filtering laws (which they heavily promoted with nonsense about child sex offenders) [1]

This law (in general) is going from the sublime to the ridiculous.

1. See http://en.wikipedia.org/wiki/Internet_censorship_by_country#...

10 points by perlgeek 19 hours ago 2 replies      
If this ridiculous law goes into effect, and I were to operate a service in France, I'd still keep the hashed passwords in the database.

Then log the plaintext passwords to a different file, encrypted with a public key. The corresponding private key would live on a separate machine (without internet access), and would only be used in cases where it's inevitable.

12 points by michael_dorfman 20 hours ago 6 replies      
That's a pretty bad misreading of the situation. There's nothing in the law, as far as I know, outlawing hashed passwords-- just that the passwords need to be able to be handed over to the proper authorities upon request. A hashed password should work just fine, as long as law enforcement can use that to gain access to the system.

In short: there's plenty of reasons to be against this law without constructing new outrages.

9 points by yannickmahe 19 hours ago 5 replies      
One of the benefits of being in the EU is that there is a higher authority than the government who can overturn stuff like that. I'm not a legal expert, but seeing as how the latest constitutionnal questions in France went, I'm pretty sure this decree will not stand.
5 points by perlgeek 16 hours ago 0 replies      
Somebody on reddit claims that this is mis-reported: http://www.reddit.com/r/programming/comments/gkl77/hashed_pa...

I hope that's really the case.

3 points by dexen 19 hours ago 0 replies      
The basic question is, does the law require giving authorities the password verbatim, or rather, giving them access to account's data (perhaps including fake authentication as the user, but without use of user's password)? There may well be mis-understanding in the early reporting.

If password verbatim is required, well, game over, the law will be shot down in record time. If, on the other hand, merely access to the account is required, that's just a small feature to be implemented -- ``allow accounts of authorities authenticating as any plain user without users' passwords'' (which is still terribly bad, open to abuse etc.).

In any case, the law (as reported in the article) sounds like a failure of democracy to me -- not something one wants his representative to vote for.

6 points by dabeeeenster 19 hours ago 1 reply      
I assumed they had outlawed simple hashed passwords as too insecure, but it goes the other way!


3 points by alexandros 18 hours ago 0 replies      
So that would mean that using ready-made software that uses proper hashing (Simple Machines Forum comes to mind) would become illegal in France.. Interesting times.
4 points by verysimple 17 hours ago 0 replies      
This law basically says that if you do e-commerce, you better not have your service hosted in France. If you're not hosted in France, you might as well not pay any taxes in the country. Nice playing french government, genius move.
9 points by wladimir 19 hours ago 2 replies      
Crazy, stupid law. Reading this, I kind of feel ashamed to be in Europe with them.
10 points by piaskal 19 hours ago 1 reply      
Everyone seems to be overlooking the privacy issues here.
The main problem for me would be that even after I delete my account on some website they will still keep all of my data for one year.
6 points by gokhan 20 hours ago 1 reply      
What if the site is hosted outside France?
1 point by synnik 12 hours ago 0 replies      
France has a long history of security-limiting policies. I don't know if it is still in effect, but at one point in the 90s, they did not allow software to have better than 40-bit encryption. In turn, American software companies had to write French-only versions of their products of they wanted to sell to French customers.
2 points by ig1 18 hours ago 0 replies      
I'm sorry but this reaction is just stupid and based on wild speculation. I'll bet you $100 right now that France will not prosecute anyone for using hashed password.

What people should be concerned about is the impact this will have on online anonymity, which this law is actually a direct threat to.

1 point by praptak 19 hours ago 1 reply      
User's actual password is of very limited use to enforcement officials. Just provide the short "login history" to the user at each login and they'll have a chance to notice strange accesses of their account.
2 points by geuis 18 hours ago 0 replies      
Please link to the original story. http://www.bbc.co.uk/news/technology-12983734
1 point by skalpelis 19 hours ago 1 reply      
Does it really say you cannot at all store hashed passwords, or does it mean just that you have to give the authorities the password for a user account if they ask you to? After all, if they want a password that can access a user's account, they could get that but that doesn't mean that it has to be the exact same password that the user uses, does it?
1 point by tlrobinson 19 hours ago 1 reply      
We just need a couple very large web services to block France until they realize how stupid this is.

Google, can you take one for the team? Thanks.

2 points by eru 18 hours ago 0 replies      
What do you do, if your users don't have a password? (E.g. public key login of ssh?)
1 point by keyle 18 hours ago 0 replies      
How much is this silly thing going to hurt hosting companies in France? Think about it, I'd rather hash passwords and host my site in Belgium than host locally. The government is hurting its own country!
1 point by iansinke 8 hours ago 0 replies      
Why is this a problem? When they request a password, reset the password to some typical password and pass that on to the authorities. They aren't actually going to ask to view your code/database, are they? They just want to be able to access one user's account.
2 points by evanlong 20 hours ago 0 replies      
I think Jeff Atwood is pounding his head against a wall about now: http://www.codinghorror.com/blog/2007/09/youre-probably-stor...
1 point by david_p 15 hours ago 0 replies      
ITT: a mashup of the reasons that made me decide to leave France. I'll be gone in two months.
I just hope the other side of the Atlantic Ocean is better...
1 point by erikb 17 hours ago 0 replies      
I like it, people linking to slashdot that everybody can click twice to read the real article. It's here btw: http://www.bbc.co.uk/news/technology-12983734

Yes, that should be the one linked in the topic.

1 point by colinhowe 18 hours ago 1 reply      
I guess the intent behind this law is to make it easy to get to the other accounts on different services that a user might have due to people using the same password for lots of things.

So, upon receiving a request for this you could generate a random password and give that to them (as well as set the user account to this password). They have no way of proving that this isn't their password :)

1 point by shabda 18 hours ago 0 replies      
Doesnt this law in essence ban Wordpress, Django, Drupal and any CMS/Framework with a sane password mechanism?
2 points by ichilton 19 hours ago 0 replies      
The irony is that you could seriously argue that it should be illegal to host a site which DOESN'T hash the passwords!
1 point by ericmoritz 14 hours ago 0 replies      
Why do they need the password when they can request the data out of the company's database? What are they gaining with the plaintext password?
2 points by gorgoroth666 16 hours ago 0 replies      
Sorry for the stupidity of french politicians.
1 point by contactdick 19 hours ago 0 replies      
I wander if companies like google will soon start offering services where you can choose what countries they store your data in.
1 point by ricotijsen 18 hours ago 0 replies      
it's a misunderstanding, they meant 'haché'
1 point by LordGodd 15 hours ago 0 replies      
This is baffling...
OpenSSL memory use in Node.js querna.org
185 points by jcsalterego 2 days ago   14 comments top 10
19 points by asolove 2 days ago 0 replies      
This is a really good writeup. I have never used Instruments before, and while I'm not an expert in OpenSSL, there was enough detail to point me in the right direction when dealing with this in the future. Thanks.
16 points by AngryParsley 2 days ago 0 replies      
I think a more accurate title would be "How to reduce memory usage 10x in almost anything that uses OpenSSL." Bottom line: All those bookkeeping data structures for compression take up a lot of space. Disable SSL compression and you can go from 1MB per connection down to 100kB.
18 points by agl 2 days ago 1 reply      
Don't forget to enable SSL_MODE_RELEASE_BUFFERS with OpenSSL 1.0.0 too.
4 points by otterley 2 days ago 0 replies      
I'd like NodeJS to add a tls.createCTX() method that generates an OpenSSL CTX object that can be manipulated and passed as an optional parameter to the various other tls methods.

This would allow great flexibility in the TLS configuration - everything from CA paths to CRL checking to RFC 5077 support could be configured by the application once and the settings reused for all qualifying subsequent connections. Compare with, e.g., AnyEvent::TLS (http://search.cpan.org/~mlehmann/AnyEvent-5.31/lib/AnyEvent/...).

6 points by JoachimSchipper 2 days ago 0 replies      
Summary: when using OpenSSL with a lot of connections, use a shared SSL_CTX or you'll have a large per-connection overhead.
11 points by HerraBRE 2 days ago 1 reply      
The article also covers the same issue in Python and shows how to drastically reduce memory usage. Pretty awesome stuff!
4 points by caf 2 days ago 1 reply      
If you want to debug an issue like this on Linux, the Massif tool (part of Valgrind) is a decent heap profiler.
4 points by nathanwdavis 2 days ago 0 replies      
I love posts like this. There are too many blog posts that make it to the top of HN that are just complaining or speculating of some type. I would much rather read a detailed write-up on the discovery and solution to a problem.
4 points by pronoiac 2 days ago 1 reply      
Eep! Skipping compression before you encrypt is a bad idea. Using it saves bandwidth, & makes attacks much more complicated.

Can Node.js do some compression before it hands off data to OpenSSL?

1 point by MadWombat 6 hours ago 0 replies      
It is interesting, how he is using OpenSSL, Node.js, Python, Twisted framework and still manages to take a swing at OSS development tools in favor of closed ones.

Does this issue even exists on serious operating systems?

C Craft: C is the desert island language. stanford.edu
184 points by nkurz 1 day ago   100 comments top 15
56 points by angusgr 1 day ago 5 replies      
I'm deeply conflicted about this article because I agree with many of its premises. For instance: that C is superior to full-blown C++, that object-oriented programming is no panacea, that simplicity is good.

I have serious concerns, however, especially with the first page and the first few chapters.

- They support the biases of the myopic programmer who believes that now he or she knows C, they know everything one must know about programming. I know that isn't the entire point, but you can get that from the article and I have met such programmers. You don't want to work with them, even on projects written in C.

- The "C Craft" section largely describes hacks to work around shortcomings in the syntax or semantics of C.

- The languages used for "vs" comparison are: FORTRAN, C++, Java. Fish in a barrel, anyone? Haskell, APL & J are presented as curios. Python is only mentioned in passing, as an inferior choice to Haskell for rapid prototyping of mathematically-oriented code.

- Go is presented as the "better C", which is encouraging but I'd feel more encouraged if the author showed they were properly familiar with some additional modern programming languages and the cases in which one might use them.

- The assertion that "you can write object-oriented code in C" is accurate, although I think a better point to stress is "you can write mostly-well-modularised code in C, and that's what you want a lot of the time."

- The author also ignores the reality that object-oriented C really only scales up to a certain amount of object-orientatedness, and then it becomes very unwieldly if you are not very careful. Unwieldy at a scale where using a small subset of C++ (ie "C with classes") would remove the overhead, improve the code's signal-to-noise ratio, and still not bring in most of the "bad C++" that the author is talking about.

- The author seems to have chosen to define certain terms as they see fit. For instance, simplicity is defined in terms of brevity & terseness but the example used to prove the point is that Eiffel requires "character" and "integer" whereas C only requires "char" and "int".

For an alternative point of view on what constitutes "brevity" and "simplicity", see the common C idioms for filtering or mapping any variable sized data structure. The only time it becomes less brief is if you rewrite it in C++ w/ STL or Boost. ;)

- It's also telling that in Chapter 2 the Fibonacci counterpoint to Java is in Haskell, not C. That's because a full C program would look pretty similar to the Java program quoted, albeit without the sore-thumb of wrapping it all in a class .

Anyhow, I should quit ranting but IMHO (a) you should know C, (b) you should respect C but (c) you should know some other languages and use C only when you actually need to.

(c) may not apply if you're a super-whizz genius C programmer, some of those people seem like they can carry off ridiculous use cases without making horrible messes. Most of us are not those people. ;)

10 points by Groxx 1 day ago replies      
>In my Eiffel days, I was encouraged to write "integer", not "int", "character", not "char", and so on. I believe Java encourages this practice too. Supposedly clarity is maximized. But how can this be if we do the opposite when we speak? Do you say “taxi cab”, or “taximeter cabriolet”? Redundant utterances are tiresome and worse still, obscure the idea being expressed.

I see this argument a lot, and they strike me as people complaining because they don't use tools their language provides.

Typedefs are the answer to excessive name length, and they're nearly everywhere. Just create a couple typedef files, and import them as needed - future programmers get the full names easily, while you can program in your pseudo-K version of C for maximum keyboard efficiency. I have a handful of such files, they're endlessly useful - why write `Pop_froM_lIsT_WhIch_COntaiNs_speCiFik_type_X`, doing battle with naming-scheme-X that only employee-Y uses (and their associated spelling errors) when you can do so once, and write `pop` from then on, unambiguously?

The upside of typedefs for this comparison is that they're precisely what we do with spoken language - nobody knew what a "taxi cab" was until someone told them it the shorter version of "taximeter cabriolet", or until the full phrase was well enough known that it could be inferred accurately by the average person.

15 points by enneff 1 day ago 1 reply      
It's nice to see that the things he describes as C's greatest virtues are the same things we carried over into the design of Go. (http://golang.org/)
7 points by onan_barbarian 1 day ago 1 reply      
There are some reasonable things here, but:

"Lumping together function pointers that operate on the same data structure is essentially object-oriented programming" is unbelievably contentious regardless of which of the various definitions of OOP you follow.

11 points by gcv 1 day ago 2 replies      
I love the link to OTCC (the Obfuscated Tiny C Compiler, http://bellard.org/otcc/). It frankly blows my mind.
4 points by d_r 1 day ago 0 replies      
Another excellent resource (a Git tutorial) by the same author: http://www-cs-students.stanford.edu/~blynn/gitmagic/
5 points by cafard 18 hours ago 2 replies      
Desert island language, as in "like trying to build a hut, and manage your hunting and gathering with the Swiss Army knife that happened to be in your pocket"?

I agree that for Torvalds work it is the only sane choice. But I'm not writing kernels.

3 points by tptacek 1 day ago 1 reply      
You can easily beat "static const volatile signed long long int bar" with a function pointer (and without the unrealistic redundant indirection of "int const ... const foo"). Start with static const volatile signed long long int (*foo)(static const volatile signed long long int bar). :)
1 point by nadam 18 hours ago 1 reply      
It says:

"In my Eiffel days, I was encouraged to write "integer", not "int", "character", not "char", and so on. I believe Java encourages this practice too."

1. No Java uses char, int, and so on.

2. No, C is absolutely not concise even compared to Java. At least how I write Java code.

Look at this Java method:

String strangeConcat(String str1, String str2) {
return str1.substring(0, str1.length() - 1) + str2.substring(1, str2.length());

Is it really more concise in C? How do you tell the caller to free the memory of the returned string?

And if you compare C to Ruby, Python, Scala, Clojure etc... then it is no question that C is not a concise language for most tasks.

1 point by discreteevent 15 hours ago 0 replies      
"Other object-oriented programming preachers rebelled in practice, by spending most of their time in “fun” languages like Perl or Python. After all, who enjoys the boilerplate and verbosity of Java?"

- What has the verbosity of java vs python have to do with the validity of object oriented programming?

"New languages like Erlang and Go have become popular despite not being object-oriented. In fact, Joe Armstrong, inventor of Erlang, explains why OO sucks."

- Actually later Joe Armstrong came back and said the following:

"Actually it's a kind of 180 degree turn because I wrote a blog article that said "Why object-oriented programming is silly" or "Why it sucks". I wrote that years ago and I sort of believed that for years. Then, my thesis supervisor, Seif Haridi, stopped me one day and he said "You're wrong! Erlang is object oriented!" and I said "No, it's not!" and he said "Yes, it is! It's more object-oriented than any other programming language." And I thought "Why is he saying that?" He said "What's object oriented?" Well, we have to have encapsulation, so Erlang has got strong isolation or it tries to have strong isolation, tries to isolate computations and to me that's the most important thing. If we're not isolated, I can write a crack program and your program can crash my program, so it doesn't matter.

You have to protect people from each other. You need strong isolation and you need polymorphism, you need polymorphic messages because otherwise you can't program. Everybody's got to have a "print myself" method or something like that. That makes programming easy. The rest, the classes and the methods, just how you organize your program, that's abstract data type and things. In case that the big thing about object-oriented programming is the messaging, it's not about the objects, it's not about the classes and he said "Unfortunately people picked up on the minor things, which is the objects and classes and made a religion of it and they forgot all about the messaging."

1 point by dasil003 21 hours ago 0 replies      
Just the notion of a single desert island language is a bit humorous, but if I had to choose I'd pick something meatier like Haskell; and not out of lack of fondness for C.
2 points by swah 17 hours ago 0 replies      
I'm assuming the island has power and modern computers.
1 point by ryanisinallofus 11 hours ago 0 replies      
Good thing we don't work on deserted islands right?
1 point by granite_scones 1 day ago 0 replies      
The "Power" section made me think of Blub. http://www.paulgraham.com/avg.html
0 points by Ruudjah 23 hours ago 1 reply      
> Not only is C easy for humans to understand,

Is he being funny or serious?

Facebook Ads: The Cheapest Traffic You'll Ever Buy imranghory.org
182 points by ig1 3 days ago   57 comments top 13
43 points by patio11 3 days ago 4 replies      
My Facebook ads experience in a nutshell: mega-targeted towards US women interested in elementary education & etc, used a seasonally appropriate image and tagline, spent $140, got 275 clicks (~$0.46), four free trial signups (pick email and password), and (unsurprisingly) no sales. $140 of AdWords would typically get about 2.5k clicks and $300+ of sales.

This was a year ago. Every couple of months I wonder "Hmm, should I take another whack at FB?" and then I decide to do something useful with my money instead, like buying Frontierville dresses.

43 points by blhack 3 days ago 3 replies      
Edit: the link that one of the commenters provided is a lot more informative (if you came here lookinf for a "how")


OP, if you're reading this, how did you get such low CPC rates on facebook?

No offense, but this post just sortof sounds like bragging. What were you targeting? What were you bids? What did your ad actually look like? What sort of picture did you use (facebook ads require a picture, last I checked).

Etc. etc.

This is really interesting to me, because I've tried facebook ads before and done miserably with them. I was planning on doing some more reddit self-serve advertising this week, but if you can get traffic from facebook for as cheap as you're claiming, I would definitely give that a try instead.

This would be a really great post if you could share some of the research you did.

5 points by vaksel 3 days ago 1 reply      
Once you take into account that Facebook traffic tends to start out at ~$1 a click and the fact that the people clicking it are just browsing(instead of searching like they do on Google)...you'll realize that Facebook traffic is the most expensive traffic you can buy.

Most people who make money off craigslist are the affiliate spammers who get paid something like $3 for every email submission form they get.

4 points by Osiris 3 days ago 2 replies      
I recently tried BuySellAds in an attempt to target ads a specific interest group (technology websites). The result has been horrible. CTRs are like 0.001%. I'm getting about 30-50 clicks a day and with the same funds on AdSense I'd be getting nearly a thousand clicks a day. It's too bad i sunk so much into the experiment.
7 points by spontaneus 3 days ago 1 reply      
There is a lot of click fraud in Facebook ads. Have you ever checked your analytics logs to verify you are getting what you are paying for? In my case, around 40% of clicks I paid for never made it over. I emailed facebook ad support 6 times and the only response I ever received was from an auto responder. I'd never use their service again.
4 points by ultrasaurus 3 days ago 0 replies      
What's the policy (and the actual enforcement) on using copyrightten content as your picture? I'm not surprised Twilight imagery converts better than a company logo, but it seems a little sketchy.
3 points by e98cuenc 2 days ago 1 reply      
We also got better results from Facebook Ads than from AdSense. Something that we found is that we got better results if we changed the image on the Ad periodically and if we stopped for a while our campaigns.

We track the user by source, so we can check if the FB users are more or less active than users from other Ad networks or from users that come from organic search, and so far we have not observed a significant bias.

We are paying a few cents for each user registration (not click). No other Ad network comes close to these numbers for our site. Our budget is of some (single digit) thousands dollars per month, and we have been running these Ads for a few months.

1 point by DanBlake 2 days ago 1 reply      
The important thing every single article on HN always misses out is that spending 100, 200 or even 5000$ is almost never a large enough pool to deduce anything about a ad network. Put through a hundred million paid impressions and then tell me what does and doesnt work.
3 points by thesis 3 days ago 1 reply      
I've gotten clicks that cost about .01. The whole idea is just to super target. For instance, target users who are interested in runescape, use a runescape image, use a ad text along the lines of "Love Runescape?" and some creative ad text.

Then you want to split them all up into different ads for different demographics.

My problem with facebook is CTR's will drop a lot over time... so you constantly need to keep submitting fresh ads.

2 points by handzhiev 2 days ago 0 replies      
In my opinion and experience Facebook ads can work well only if you advertise your fan page. Get people like it (obviously the fan page needs to be interesting for this), then from time to time post stuff that advertises your startup.

It's more work, but you can market to every fan many times instead of hoping she will buy from you or give you her email address from the single visit the ad would bring to your site.

3 points by ojilles 3 days ago 1 reply      
Cheapest CPC, maybe. But usually very low conversion rates on FB.
2 points by joelrunyon 2 days ago 2 replies      
The biggest problem with FB ads of course, is having a product that is sale-able to the facebook audience. I.e. entertainment/interest products, not needs-based products
1 point by direxorg 3 days ago 1 reply      
For most project it is not about clicks but about conversion and that is greatly depends from the product that you are selling. Facebook is more "fun" than "money spending" community. Google unrelated CPC keywords give 8X fold better conversion than Facebook targeted ads from each click for me. Would be more useful to have specific information on your numbers beside clicks.
What skills do self-taught programmers commonly lack? quora.com
179 points by thenicepostr 3 days ago   144 comments top 56
68 points by jedsmith 3 days ago replies      
It's interesting that this question implied the negative -- not what's the difference between, not even what are the strengths and weaknesses of, but:

> What pieces of the whole are missing?

The implication being that without a formal CS education, it is an impossibility to obtain a whole. As if whole matters; how does one obtain whole, anyway?

This is a very loaded question and perspective that betrays a serious bias, in my opinion. That we're making a generalization out of humanity's life experiences is futile in itself, but alas, the application of said generalization here is far more interesting to me.

20 points by agentultra 3 days ago 1 reply      
This is a most frustrating and poignant question.

I am a self-taught programmer. That being said, I'm not lacking in any desire or ability to teach myself. In fact I am quite active about it and not just in programming. Sitting on my bookshelf is a current set of AoCP and the companion, Concrete Mathematics. I keep journals of my thoughts, progress, and notes about excercises. I converse with knowledgable people on usenet and irc. I build things to know how they work.

On the other hand, I can understand why such a question is important. Someone new to programming might simply not know what questions to ask or where to go once they've finished the tutorials. Or perhaps they just reach the limits of their knowledge and hit a road block.

However, there are lots of people who load this question with a lot of FUD about self-taught programmers. I just want to let them all in on a little secret: hardly anyone cares about your degree. It's an investment in an institution and doesn't grant you any knowledge that you couldn't gain on your own with a little work and self-discipline. That being said, such an investment does have its advantages. Automatic knowledge and the intuition to apply it is not one of them.

42 points by guelo 3 days ago 2 replies      
My hypothesis is that a CS education would be most useful after you have already spent 5-10 years in industry. Unfortunately for most people life just isn't structured in a way to allow for full time education later in life.
14 points by andywood 2 days ago 0 replies      
This category "self-taught programmers" is an insidious over-generalization. Used in this context, it seems intended to conjure the image of an undisciplined hack who learned how to cobble code together from an "In 21 Days" book.

This belies the fact that programming and computing have a long and rich tradition of attracting brilliant individuals who, despite taking alternative paths, still manage to go very deep by virtue of their own drives and all-consuming interests.

I've worked closely with many dozens of CS grads in my career. I haven't detected much correspondence between "has degree" and "knows what they are doing." I've seen an overwhelming correspondence between "is truly passionate about programming/computing topics" and "knows what they are doing."

I would have somewhat more sympathy for the dichotomy implied by this question, if all CS grads graduated at the top of their class from a very good CS school.

8 points by Dn_Ab 2 days ago 1 reply      
I am self taught with no degree :( and think that the key is in being curious and exploring. A constant pressure/feeling of greater ignorance also helps drive that. I learned to program cause I wanted to make games so from there I picked up C, a tiny bit of numerical methods, pointers and finite state machines. Self teaching C++ was horrible so I quit computers for a couple of years. However, I came back to it but wanted a language as different as possible from C++. I tried python but my short term memory is terrible, I could not get my head around dynamic types. I tried scheme but was too dumb to get the syntax. I had an interest in pure maths so was drawn to haskell and ML. Simply being interested in haskell you get thrown in the deep end and get introduced to a bunch of theoretical stuff which I perused for a couple of years, including from the list:

Data Structures,
Programming Languages (http://www.cis.upenn.edu/~bcpierce/tapl/),
Patterns (mostly in the guise of how pattern Y is an inferior version of feature X oh & monads are super patterns),
Functional Programming,
Object Composition,
Lambda Calculus,
Type Systems, Category Theory

Each of the above expands and leads to its own world. As a self learner you just have to keep exploring. For example with category theory, you pick up type theory and learn how they and sets all relate. From sites like this one you learn about the importance of unit testing and version control. From lambda calculus you can rewind to Frege, unrewind to zermelo and learn about first order logic and trace a line from Haskell to Weierstrass program - taken to its absurd conclusion with Bourbaki - to rigorize Calculus (along the way you may learn of infinitesimals and the hyperreals formulation of Calculus by robinson which I found more intuitive).

After a while I realized that I was really into Artificial intelligence, Graph theory and Subjective Probability theory. The latter two, I think will be the Calculus of the future[1]. This led me through Machine Learning, more much more numerical methods and brings me to today. I don't know much about search or compilers or a great understanding of system internals but I can pick it up if it interests me or I need it.

The downside to self learning is that with no teacher everything is harder. With no teacher you can't double check your model so really understanding takes longer. There is no need to test yourself so you are in danger of jumping around without having properly learned anything.

My solution is to read voraciously to index and just work on what I want so that if I need a concept, knowing of its existence allows me to know that I should learn more on that topic. at the least I can make that connection. Revisiting is key, if you don't understand something now move on but be sure to come back later. Relate/Analogize/search for treatments that most suit you. Good with programming and learning differentiation? Then derivatives as higher order functions paired with Euler's notation makes it way easier and makes expanding to higher dimensions more straightforward. Learning hard things gets easier if you keep at it and you continually expand your base. Its all very slow going though and knowing when to Explore and Exploit your current knowledge is tricky. Till recently I leaned too much towards explore but if you want to get stuff done you need to exploit with what you got. I doubt this approach would have been viable 15 years ago. Or before Google and Wikipedia citations. Finally, I hate academic papers behind paywalls.

[1]As the corner stone of techniques. I see the concept of entropy appearing everywhere and find the idea of quantum mechanics as a complex probability theory just incredible.

15 points by phamilton 2 days ago 3 replies      
I'd say that programming falls into two categories. I don't quite know how to describe them, so here are two examples:

1) Your average database/object driven application. There is user input. This translates pretty directly to output. There may be some interesting algorithms in between, but it's pretty much UI programming.

2) Solving difficult problems. A logistics routing application. The bulk of the code is based on graph theory, reducing the problem perhaps into smaller segments that can be solved in different ways. The UI is just the surface.

There is a need for both types of programmers. The first type are increasingly graphic designers who decided to learn PHP or some similar situation. There are tons of great applications out there that really aren't that complex (except when scaled to extreme proportions - ie Twitter). Wordpress, Gmail, even Microsoft Office isn't terribly complex (at least, the 90% of it that everyone uses).

The second group seems to be a bit more selective. Applications like Dropbox, which need to route data in the most effective way, or Adsense, in which profit needs to be optimized in choosing what ad to display as a page loads. These are complex problems, with complex solutions. That's where O(n) analysis is important. That's where an understanding of graph theory and established algorithms is critical.

While these two groups aren't completely exclusive, I'd say many self taught programmers find themselves in the first group.

11 points by Homunculiheaded 2 days ago 1 reply      
I thought it was strange that Functional Programming ranked high. In my experiences CS depts are pretty mixed, in some schools it's essential, but in many others it's all but ignored. Additionally when I list out all the people I know who are big into fp on twitter or else where, at least anecdotally, it seems to be pretty heavily skewed towards the self-taught. I have a mixed background (self-taught then back to school) but all of my fp work has been on my own time an curiosity. I've always found it rather ironic that FP is considered academic when very few academics spend their time on it.
9 points by freshfunk 2 days ago 1 reply      
A few things:

- Renowned CS programs spend less time than you think teaching you how to actually program. Programming is simply a tool to teach things like theory, algorithms, mathematics, logic, artificial intelligence, operating systems, graphics, and so on. I actually took a class on programming C++ and it was one of those independent self-teaching classes. :)

- I think one needs to differentiate between programs that teach programming as a trade and a CS program at a top school. I imagine the experiences are quite different. Much like there would be a difference between someone who learned from Learn C++ in 21 Days vs the hallowed Abelsson and Sussman (Alyssa P Hacker anyone?).

- I think most lower division books can be read by anyone and they would glean the same amount of knowledge. In fact, I would say there isn't much difference if someone went to somewhere like OpenCourseWare and learned it themselves.

- I think you'll find more difficulty at the top end. While it's possible that self-taught programmers would do these exercises, if I ever meet one I'll bow down before him. I'm talking about classes like CS 162 Operating Systems (http://inst.eecs.berkeley.edu/~cs162/sp11/) or CS 170 Efficient Algorithms and Intractable Problems (http://inst.eecs.berkeley.edu/~cs170/sp11/).

- With that said, I personally rarely (if ever) use the things I learned in these classes. Perhaps if I wanted to write my own language, my compilers class would be useful. Or maybe if I got really deep into machine learning, then my AI class would have been more use.

So, I guess with that said, it's really about what doors were open to me on matters that, even when taught, seemed impossible to understand. Doing it self-taught is just that much harder unless you're the guy from Good Will Hunting.

All in all, I'd say that for the majority of people who are not that specialized (like web developers) it doesn't make much of a difference. The people for whom it made a real difference went on to do research in a specific area and are the ones who are hired for some specific knowledge they have (eg. classification algorithms, machine learning algorithms, security, complex statistical models).

22 points by sutro 2 days ago 0 replies      
John Carmack is a self-taught programmer.

There is no programming skill that a school can teach that a motivated individual cannot learn outside of school. That is one of the great joys of working in this most democratic and meritocratic of fields. Its secrets are not locked away in an ivory tower, they will reveal themselves to all who seriously seek them. The only tuition required is hard work and persistence.

7 points by Deestan 2 days ago 1 reply      
I started programming at the age of 8, and went on to study CS at the age of 20. So, I count myself a self-taught programmer with a Master in computer science, and I have an opinion:

The formal education didn't teach me any skills I couldn't have picked up on my own.

It did however, teach me to ask questions I didn't know existed, lovely abstractions and a lot of useful theoretical concepts. Instead of constantly being surprised by things like "oh, wow, Java's static classes are really similar to python modules of free functions", I can clearly see that they are both manifestations of the same idea, but shaped differently by the language design. This makes it much easier and quicker to pick up new languages and technology.

10 points by bmcleod 3 days ago 2 replies      
The list they've put together it long enough that I would expect nearly everyone to be missing a few.

Compilers and Machine learning are probably the two that you don't see in self-taught people much. The ones you do see it in generally go to university shortly after having been self-taught anyway.

Most of the other things on the list you learn if you deal with particular programming languages. And a university degree doesn't really supply breadth much more than being self-taught does. But someone who was self-taught and then did a degree will be much broader in skill, which is why those people seem to have such diverse skills.

The actual answer is that the self-taught programmer needs to keep learning and broadening into other languages etc. Which is exactly the same thing any other programmer needs to do.

9 points by Sapient 3 days ago 4 replies      
I grew up on computers, and am exclusively self-taught, yet I have an in-depth knowledge of how computers actually work from spending time learning how to crack programs. A decent understanding of some fairly complex algorithms from writing RTS, Chess and other games and working on some awesome ML applications professionally. And a good understanding of FP from playing with langs like Haskell and implementing a lisp interpreter.

I have also never learned a single thing from sitting in a lecture hall (though I did do a two year CS diploma, the hardest thing we ever had to do was an Address Book in VB), the most important things I have learned with regard to programming have all come from tutorials on the net and the few books I have bought over the years. In a sense, I have been taught by some of the best people in their fields including K&R, Abelson and Sussman, Denthor, CLRS, _why and too many others to mention.

Since I am self-taught, I can't really give a good answer to the question, but imho, our biggest problem, is that we don't know what we don't know... And that we usually don't a solid understanding of the maths behind what we are doing, something I recently realised the importance of, and am trying to remedy in myself.

Aside: What is really meant by "self-taught programmer" anyway? I have managed and worked with people who came out of university and couldn't program their way out of a paper bag.

9 points by mberning 3 days ago 1 reply      
I mostly agree with this, although I don't think classically trained programmers fare much better on average. I've had many university educated programmers that I've had to teach basic parsing, data structures, and algorithms such as tree traversal.
8 points by mkramlich 2 days ago 1 reply      
After digesting the Quora thread some more, I think it's yet another "bait" question -- meaning, one not seriously asked, because both (a) it's loaded, and (b) the answer(s) are obvious and no need to discuss among serious people with reasonable intelligence.

For example this:

>> And as a follow-up, where can said self-taught programmers find good resources on the above subject matter?

Come on. In 2011, where could one possibly find good resources for the above. Let me rack my brain... Hmmmm.... Maybe.... rhymes with Internet? Rhymes with Google? Rhymes with bookstores? I don't know. I give up. I wish I had a PhD in CS so I had the formal education needed to figure this one out. Thank goodness for Quora! (Wait, that's part of the Internet. I missed the class.)


5 points by dfranke 3 days ago 1 reply      
I thought "category theory" was a very strange thing to include in the list, so I searched down and found this equally strange comment: "I wish I had time to spend a year learning category theory to better understand how to structure things to be compositional". This is akin to saying, "I wish I had time to spend a year studying fluid dynamics so I can learn how to fly a plane".
5 points by Derbasti 2 days ago 0 replies      
Some programmers are really engineers or scientists who solve their problems using computers. Even though they usually had some programming class at the university, they never had a formal CS education.

But then again, they know a heck of a lot about some specific problem space, be that audio algorithms, weather forecast or nuclear fission reactions.

This is one area where CS graduates are just about useless. Without knowledge of the problem space, those programming skills still won't solve the problem.

4 points by humbledrone 2 days ago 0 replies      
The question must have been typoed. Given that list, I think the question was supposed to be, "What skills do novice programmers commonly lack?"

Anyway, I know first hand (from interviewing quite a number of people) that a lot of university graduates lack the listed skills. Sure, they might be familiar with the term "compiler," but that doesn't mean that they have the skills to actually write one.

Don't get me wrong -- for some people, a university education is perfect. There are plenty of grads that know what the hell they're doing. But getting a degree is far from the only way to learn what you need to know to be a decent programmer, and it certainly doesn't guarantee that you'll be one.

3 points by Tycho 2 days ago 0 replies      
Look, as far as I'm concerned, unless you had nothing but other peoples' source code and API documentation, you are not 'self-taught.'

I used to cobble together VBA macros for Excel at work, based on code snippets and the built-in help files. At first, although I got things done, I really had not a blinking clue what I was doing. Then after a few weeks I bought Excel VBA for Dummies - which taught me how to do things properly and understand the essence of all the constructs I was using.

I read more books, and I read web tutorials and watched video lectures. They taught me a lot. Then I left work to get a post-graduate-conversion certification in IT. I always said I was doing it for the cert, not the teaching. The course was good but only because it instilled discipline. Really attending a lecture is no different than watching one on YouTube or iTunesU. The teachers don't have time to give you personal tuition. Their notes are not more instructive than the classic CS/software books in publication. The learning materials available elsewhere are decent rivals to professional education courses. The only thing I can see being a huge benefit is doing pair-programming with an expert for a few years, but how many courses offer that? Not to mention, the learning that's supposed to go on at universities is hardly automatic.

So therefore the question is meaningless, unless you mean actually self-taught people, who would probably (if they managed to develop into competent professionals) have some strange quirks. Like self-taught musicians who never learnt common techniques I guess.

3 points by cwp 2 days ago 0 replies      
"Doesn't have a CS degree" isn't the same thing as "self-taught." Though I don't have a CS degree and I suppose I learned the basics on my own, I was largely taught how to write software by my peers. I learned a lot by working with really talented developers, and finding places to rub shoulders with them - mailing lists, conferences, blogs, HN etc.

That said, I think the hardest thing to learn outside of academia is the big picture, the general landscape of computer science and software development. It's really useful to know what you don't know, but it's hard to get that without actively seeking out something resembling a CS curriculum.

6 points by Hominem 3 days ago 0 replies      
Not surprising. That is a list of things 99% of working developers do not do on a daily basis. And I'm not sure most of that will help 99% of developers on a day to day basis.

I once had a project to extract customer contact information from an Excel spredsheet. I use Bayesian probability to determine if a column was a first or last name and trained it using US census data. Then used Levenshtein distance to find names that were possible misspellings. It worked great, but on the POS computers that most people in the company had it took so long they usually just gave up. I would have been better off just sticking a DDL and letting them select what each column was.

Oh well, maybe If I was actually trained I would have figured out how to do it by writing my own compiler or Excel extraction DSL

9 points by eli 3 days ago 0 replies      
That just looks like the table of contents to an introductory Comp Sci textbook.
3 points by Osiris 2 days ago 1 reply      
I'm a self-taught programmer also, as many others have mentioned. I believe a CS degree can certainly be a launching point for people passionate about programming and computers. I actually did a year of CS before switching to a humanities degree. Part of it was I got a little scared off by some of the complex algorithms that came in the second year and I didn't have a good foundation. I ended up teaching myself PHP and VB.net.

In my profession, I ended up becoming a "technology guru", including some development. But as the only developer I never have had anyone else to lean on for expertise or support.

I think that for a self-taught programmer, having (good) mentors is probably a far more effective way to learn real-world development skills than a CS degree. I feel, for myself, that I would thrive in a development team where I could learn for co-workers and receive criticism and correction for my work.

Without that outside influence, it's hard to know if what I'm doing is really the best or even a good way of doing it.

I think every developer needs a mentor, and that's what I feel I missing most.

(P.S. Does anyone out there want to be my mentor? I am looking for a technical co-founder for a startup idea I'm working on)

7 points by Fluxx 2 days ago 0 replies      
I'm a self taught programmer and have been doing a lot of interviews with developers, both self taught and schooled lately. In general, self taught programmers seem to fall in to two categories.

1. They learned one language (PHP or C#), just enough to be productive, and manage to get jobs and make a career out of small "programming" jobs. Sharepoint monkeys, small consulting gigs for web development clients, etc.

2. They have an insatiable appetite for programming and never have stopped learning or expanding their skill set. I fall in this category. I'm constantly reading books, learning from coworkers and never settle for my skill set. I've also gone back and taken some college-level CS courses, which have helped me greatly as well. I'm currently in the process of reading all the seminal computer science books (currently reading the gang of four design patterns book).

In general though, having a CS background doesn't make you a good developer any more than getting an MBA makes you good at business. It's about how you apply it. Plus, you can be a good developer and valuable employee for lots of other reasons besides being book smarts: dependable, productive, smart instincts, etc.

5 points by orijing 3 days ago 1 reply      
There's a much wider range of ability among self-proclaimed self-taught programmers. Some may be "self-taught" to the level that they have completed and understood the entire Art of Computer Programming (those released already, anyway). Some may be "self-taught" to the level that they can write a couple for loops in PHP and Javascript.

It's a hard question to answer because "self-taught" spans too wide a range of skill.

1 point by DanWeinreb 6 hours ago 0 replies      
There isn't any one "self-taught programmer" who can be characterized, so a lot of these comments are claiming to be more general than I think is fair.

I have close friends who are utterly top-notch software engineers who didn't learn any of their skills in a formal educational setting. Often they have been able to learn-as-they-go. After all, these days the field is so large that nobody can be an expert at everything. And we often change jobs enough that what we need to know changes over time. So we all need the ability to learn-on-demand.

I was fortunate to get a computer science undergrad degree from M.I.T., but at the time, they didn't have any courses whatsoever on database systems. I ended up in a position where I needed to write a DBMS, so I found the textbooks and papers and learned how. A lot of my career has been based on that. It's not necessarily all that hard to learn things yourself.

3 points by ja27 2 days ago 0 replies      
I've worked with a few and some of the things I've noticed:
No understanding of regular expressions / state machines / automata. Not understanding O() and algorithm complexity. Building kludged together language parsers. Not understanding parallel execution, threading, starvation, deadlock, etc. Generally not knowing about well-known algorithms and data structures and how to apply them.
8 points by munificent 2 days ago 0 replies      
I'm mostly self taught. The biggest gap I find is that I pronounce stuff wrong since I learned it from a book. It's embarrassing.
2 points by URSpider94 2 days ago 1 reply      
Peeling back the clearly insulting bias in the phrasing of the question, I do believe in programming as a craft. By that I mean that it's possible to become pretty good at it by just screwing around on your own, but you're fooling yourself if you think that you don't have something to learn from the academy.

To use an analogy, I think of myself as a decent carpenter, but I'm always blown away when I watch "This Old House," because Tom Silva is always busting out really great shortcuts that make things like scribing molding to the wall look really easy. I'm sure he invented some of those tricks on his own, but I'm also betting that he learned a lot of them from his days as an apprentice carpenter to someone older and wiser.

I think it's definitely possible to get such an education without ever setting foot in a school, for example by working closely with a skilled mentor, but I do think it would be hard to naturally stumble upon all of these key areas without someone laying out a self-study plan for you.

2 points by veidr 2 days ago 0 replies      
I think we tend to lack a deep knowledge of those aspects of programming that bore us.

I love learning, and I still do a lot of it by myself. But there's an infinite amount of cool shit out there to learn, and a finite amount of time.

That's why--despite having written several commercial software products, and having worked on systems deployed for years at a stretch--I can't even code a bubble sort or a quicksort, in any language, without resorting to google. ☆blush

The implied deficiency doesn't offend me; I don't really want to sit through two semesters of algorithms classes in C or Java, but at this point I definitely wouldn't mind having done so fifteen years ago.

4 points by bugsy 3 days ago 2 replies      
There's a comment there where someone says you go to school to learn how to learn. Clearly self-taught programmers already have this part mastered.

It leads me to wonder why we aren't asking, "What skills do school-taught programmers commonly lack?"

1 point by luckydude 2 days ago 0 replies      
Background: I have a Master's in CS from Wisconsin-Madison, I'm a programmer as well as the founder of a software company. I've hired programmers with and without formal training in CS.

I think the self taught are both fine and justified in their worries that they are missing something. I'll try and explain as best I can.

Imagine that your mind is like a work shop, it's a place you go to create things. Let's consider two workshops: the neat and organized shop and the messy shop. I'm going to suggest that the neat shop is more like a programmer with formal training and the messy shop is more like the self taught. Some self taught folks will argue that their mind is well organized, which is fine, but my opinion from experience is that this view has some amount of validity in the real world. Your experience may vary.

The question here is "is it possible to produce really great work in either shop?" I think that's sort of what the original question was getting at, they talk about skills but the point is what you do with those skills, what you produce. And we all want to produce great work. So can both sorts of shops (minds) produce great work?

My view is that self taught people are typically sharp, sometimes very sharp, but their minds are a little "messy". Formal training in terms of learning basic skills is no better than self taught. But the farther you go the more useful the training becomes. The shop analogy, a bit stretched I'll grant you, is that the training organizes your mind. When you need a tool, you know where it is and you go get it and use it. For example, if you are doing a compiler, you already know that you need an AST (I had a smart guy, with compiler experience, waste quite a bit of time trying to do a compiler without an AST. In spite of another guy saying "Don't we need an AST?". First guy: no formal training, second guy, formal training.)

I think a question that might be more enlightening is "given two equally talented programmers, one with formal training and one without, which one can produce good results, over a broad domain of tasks, faster?"

1 point by ErrantX 2 days ago 0 replies      
So, as a self-taught programmer I know a smattering of those things (admittedly compilers, FSM's and functional programming came from my engineering degree).

The problem I have with that question (as already pointed out) is that it is phrased as if those things are crucial aspects of "being a programmer", or being good at it.


I use bits and pieces of the skillset; but I realised a while ago that the bits I use are things I knew (and made use of) way before knowing the topic in depth. Large parts of those topics are theoretical underpinning which is undeniably useful, but something you can get along without if necessary.

And that, I think, is the main difference between self-taught and taught programmers; the latter have a lot more theoretical understanding of programming concepts. In most cases it doesn't set them apart, but in the case of hard problems, or unique solutions having the theory is required for a solution.

I argue that the problem is classifying these things as "skills" rather than theory/concepts.

3 points by clistctrl 3 days ago 0 replies      
Self taught programmer here. I would like to think I have at least a bit of knowledge about each of these topics (though definitely not an expertise in most) I would say the one I know the least about is Machine learning, but i'm actively working on changing that :) I just bought this book (and enjoying it!) http://www.amazon.com/gp/product/0262013193
2 points by aidenn0 2 days ago 0 replies      
One of the answers there specifically disparages big-oh analysis of algorithms.

This is actually sometimes important. A self-taught programmer, who really was a whiz at coding had some prototype code for data-analysis. It worked great on the sample data, but was O(n^3) (not just worst-case, average case) and we had a hell of a time convincing him that it wouldn't scale to the quantities of data we had.

Of course constant factors make a difference, but it is frustrating to waste time trying to convince someone that nlogn is going to beat n^3 on a large data-set.

2 points by mkramlich 2 days ago 0 replies      
The question, as it was posed, was pretty arrogant and contained an implicit assumption. It assumed that a "self-taught" programmer does not know, or does not have available to him, certain things that a so-called formally taught programmer does. And that's just not true. Both self-taught and academically taught programmers have access to books, computers, the Internet, peers and tools. Also, there's no black-or-white difference between the two: the academically trained programmer has had some amount of so-called self-teaching, and the self-taught programmer almost always has some amount of academic education. Also, they both have brains, and are able to reason out things for themselves. Many things are learnable by experience, and learnable when needed. Also, there's the point that everything ever put into a textbook was at some point independently discovered or learned by someone, without the benefit of a textbook or academic course -- instead they had to discover it directly or think it up themselves, or derive or synthesize from something else they read or learned previously, sometimes in adjacent or even very different fields. The computer itself is a wonderful teacher. And what the Internet makes available to everybody, regardless of whether inside a university or not, makes even the famous Great Library of Alexandria look pale in comparison.

But I overstepped myself. I couldn't possibly have these thoughts, or reach these conclusions, without having been spoon fed it from a professor in a university course. I'm sorry. I forgot my place. Back to the servant kitchens for me....

...oh look, a book on algorithms, what's that doing in the servant kitchens? I'll sneak a peak when nobody is looking. :)

2 points by csomar 2 days ago 0 replies      
It doesn't have any meaning, at least for me. If your aim, when you started to learn, was to follow a CS course (say, MIT courses), then you are going to have an equal knowledge. If your aim was to build your first web site and do HTML/CSS/JS and PHP stuff, then you are going to learn it and do it.

You cannot know everything anyway, no? And CS courses differs from an university to another. The benefit of being self-taught is that you choose the materials yourself and you are enlightened when you study it.

2 points by wisty 2 days ago 0 replies      
It's really funny, how the LISP bigots say "Lisp", and the numerical experts say "numerics". If you ask those guys what's wrong with CS today, they would say "No Lisp" and "No numerics" respectively.

Even good programmers have huge holes in their knowledge.

2 points by gavinballard 2 days ago 0 replies      
It's really interesting to see that so many HN readers describe themselves as "self-taught programmers". I would describe myself as that as well, despite just graduating from university last year with a Software Engineering degree (at my university, Software Engineering is a four-year degree that's essentially a superset of a Computer Science degree).

I think the use of labels in this instance are not helpful. A person who hasn't touched a piece of code before they enter university is unlikely to magically become a great programmer in the course of three or four years. Indeed, my first-ever submission to HN was spurred on by a bit of disgruntlement at the quality of some of my peers (http://news.ycombinator.com/item?id=1902687 - not much in the way of discussion :).

My opinion on what you might get with a degree that you would be less likely to get without formal study:
> More study of development processes and tools (this might apply more to SE than CS)
> More study of the broad theory of computation
> Earlier exposure to team programming (this comparison is clearly with "self-taught" programmers that aren't working in the industry)
> Much, much more cruft that you're not really interested in :)

I'm personally glad that I studied SE at a tertiary level. It balanced out my other degree, it was a good way to meet other like-minded folks (and to compare my own skills against them), and perhaps most importantly I was exposed to a lot of stuff that I feel I wouldn't have sought out on my own. That said, I would feel it the height of presumption to "look down" on a programmer with a lack of degree. I know firsthand that a piece of paper does not make you a good programmer, and vice versa. The real determinant of how good a programmer you are is how good a programmer you are.

2 points by ddkrone 2 days ago 0 replies      
That's a pretty silly list. Many formally trained programmers also lack understanding of several items on the list. How much can you really teach anyone on compilers and machine learning in two months? The easiest way to learn something is to use it. Taking tests and turning in homework assignments for 8 weeks only gets you so far. If you want to pick up the formal theory and functional aspects of programming then I highly recommend the course notes available at http://www.seas.upenn.edu/~cis500/current/index.html. If you get to the end I guarantee you'll know more about the theoretical aspects of programming than any "formally" trained programmer at a big name university.
1 point by arethuza 2 days ago 0 replies      
I did a CS course and it was pretty heavy on maths and theory - and although you had to do a lot of coding to pass there wasn't much effort made to teach you the pragmatic elements of real world development.

University CS courses are terrible at being vocational training - but they are absolutely the best place to be if you are interested in research and the theoretical underpinnings of the subject - which are pretty vital if you want to go on and do posgrad work (which I did).

1 point by kevbin 2 days ago 0 replies      
"The difference between the university graduate and the autodidact lies not so much in the extent of knowledge as in the extent of vitality and self-confidence."
-M. Kundera

“[T]here are known knowns; there are things we know we know. We also know there are known unknowns; that is to say we know there are some things we do not know.
But there are also unknown unknowns " the ones we don't know we don't know."
-Donald Rumsfeld

2 points by goombastic 2 days ago 0 replies      
This is a good question and actually one that drives most self taught people. This sustained sense of "ooh, I haven't seen that before" helps the self taught learn far more than many formally educated programmers I've met.
1 point by lallysingh 2 days ago 0 replies      
Sadly, the most important one is nowhere to be found: good software development practices. I've met a lot of brilliant self- taught programmers, who could read up on parsers and systems programming, but not one read up on how to keep software maintainable or how to manage project risk.

Of course, they default to waterfall. (!!!)

1 point by sayemm 2 days ago 0 replies      
I'm also a so-called self-taught programmer. I thought about this very question a while ago and came across this definitive answer by Joel Spolsky: http://stackoverflow.com/questions/414779/what-should-a-self...

He also nails it again in his post, "The Perils of JavaSchools" - http://www.joelonsoftware.com/articles/ThePerilsofJavaSchool...

2 points by ryanklee 2 days ago 0 replies      
I won't discount the that there is a value in being taught by a professional educator. However, the primary sources are there for everyone. The excellent secondary sources are there for everyone. The amount of supplementary material available via the internet is very advantageous to the autodidact. The available interactions via the internet are such that they approach a collegiate peer group (if triaged). All of this taken together and approached in a steady, determined fashion, I believe, can near to perfectly simulate a college CS education (or education in almost anything else for that matter).

Academia and college educations are getting increasingly difficult to idealize as information becomes redistributed and consumed in unsanctioned ways. And sanctioned ways, too. See all flavors of OCW.

1 point by mcantor 2 days ago 0 replies      
I'm surprised that people view this as a destructive or loaded question. As a self-taught programmer, this sounds exactly like something I would ask as a way to fill gaps in my own knowledge.
1 point by wr1472 2 days ago 0 replies      
Quite simply they lack the education, this is different to knowledge, which, I'm sure they do not lack, otherwise they would not be competing at the same level for the same jobs.

Education can lead to an acquisition of knowledge, but it is by no means the only way of acquiring it (experience for example is another way).

Knowledge is what employers look for, and it is a better indicator of ability than education - especially for non-grad positions.

8 points by zedrick 2 days ago 0 replies      
The ability to manage a college loan.
1 point by stcredzero 2 days ago 0 replies      
What pieces of the whole are missing?

For one thing, I've seen many self taught enterprise software programmers get themselves into serious pain the first time they try to do concurrency.

2 points by Sakes 2 days ago 0 replies      
The best programmers I know are self taught. This is because they have a passion and hunger to learn and improve. This is what it takes to be a good programmer. I've met many people that have a CS degree because they simply didn't know what else to do while in school.

You are not vetted by final exams, you are vetted by creating something of value.

2 points by davetong 2 days ago 0 replies      
A main anti-pattern I've observed from self-taught programmers (including myself during my early career as a junior dev) is lack of planning. This leads to being time-inefficient, cow-boy coding and generally misplacing priorities. Furthermore, an individual's personality type preferences contributes to this.
1 point by doki_pen 2 days ago 0 replies      
I would think that the school you attended would be an important factor in the equation. And also what level of education that you received.
1 point by Kyotoku 2 days ago 0 replies      
Interesting how people here took the question in such a negative tone. This list is actually useful for a novice self-taught programmer, like humbledrone said. As a self-taught lots of times I felt like I was missing something when I read programming stuff. Of course I didn't stay still I just went learn what I was missing. A list like that could have come pretty handy than. (ok I could look at some CS courses syllabus too)
1 point by CyberFonic 2 days ago 0 replies      
A self-taught programmer is like a self-taught dentist.

Funny thing is that the former gets lots of work and the later none at all.

1 point by owls 2 days ago 1 reply      
How many of these things can one really be missing and still call themselves a programmer? I'm self taught myself. Pointers? Really? You can learn pointers in about 20 minutes.
-2 points by Joakal 3 days ago 0 replies      
Interpersonal relationship skills.

Even universities don't teach social skills for life.

Introducing Pow, a zero-configuration Rack server for Mac OS X pow.cx
179 points by wlll 10 hours ago   102 comments top 21
20 points by tptacek 9 hours ago replies      
This is a great web page, but I think it's borderline irresponsible to keep using this gimmick:

  curl get.pow.cx | sh

for installation. Yes, it's easy and slick. Yes, you'd have to read the code itself to make sure Pow didn't own your machine up after a secure install. Yes, you can just read the shell script. But 0.0001% of people playing with Pow will do that. Why make things easier for attackers at all?

This is an idea that I think started with Ximian back in 2000 and I think we're ready for it to die. It'd be neat if the authors of Pow were cool enough to strike it from their (otherwise amazing) front page.

(I'd also be happier if the thread where the guy explains how Pow works and what it's components are were voted higher than this comment.)

53 points by sstephenson 9 hours ago 2 replies      
Pow is a Node.js app written in CoffeeScript. It includes an HTTP and a DNS server and runs Rack apps by way of Josh Peek's Nack library: https://github.com/josh/nack

The screencast shows how it works and why we made it: http://get.pow.cx/media/screencast.mov

If you're interested, you can read the annotated source code, written in literate style and generated with the wonderful Docco: http://pow.cx/docs/

4 points by bradgessler 5 hours ago 1 reply      
A gem distribution of this would have been nice... simply so that instead of:

  $ curl get.pow.cx | sh
$ cd ~/.pow
$ ln -s /path/to/myapp

We could have:

  $ gem install pow
$ pow /path/to/myapp

3 points by marcomonteiro 4 hours ago 0 replies      
Ok, we get it, some people are paranoid and afraid of running a "random script" and having to sudo to install it. Can we please have a discussion on the merits of the actual application. I just installed it - I trust 37signals enough to give them the benefit of the doubt - and love how simple it is to access different apps I'm working on at the same time without having to worry about configuration. Thanks 37signals.
18 points by mef 9 hours ago 0 replies      
Pow uses an interesting trick to get the *.dev urls resolving to localhost: it adds /etc/resolver/dev which acts as a resolv.conf for the .dev domain, and points to the nameserver at port 20560. The Pow server binds to that port and acts like a nameserver for .dev domains.
6 points by Timothee 7 hours ago 1 reply      
Not important, but why the ".cx" TLD? Is this intended to be pronounced a certain way?
1 point by tvon 1 hour ago 0 replies      
A shell function to add directories to ~/.pow:

    function pow {
if [ -d "`cd $1; pwd`" ]; then
ln -s "`cd $1; pwd`" ~/.pow/

5 points by whalesalad 8 hours ago 2 replies      
What the hell it's written in node.js and coffeescript. Color me impressed. I'm now motivated to tackle this for python.
5 points by mickeyben 9 hours ago 4 replies      
gem install passenger

passenger start

no preference panes to install. No Apache configuration files to update. And Passenger eliminates the need to edit /etc/hosts. To get a Rack app running, just type a single command.

5 points by mjijackson 9 hours ago 1 reply      
Hooray! No more mucking around in /etc/hosts, .rvmrc, or .profile! Now you can muck around in ~/Library/Application Support/Pow/Hosts, .powrc, and .powenv instead!

Thanks but no thanks. Do yourself a favor and learn how to install rack and nginx. It's already dirt simple, and you'll save yourself having to go back and learn it when it's time to deploy your app somewhere other than your laptop.

2 points by brndnhy 1 hour ago 1 reply      

This is very nice documentation. Is it generated using a freely available tool?

1 point by bonaldi 5 hours ago 1 reply      
Installation wasn't easy or slick here:

  *** Installing local configuration files...

/Users/bonaldi/Library/Application Support/Pow/Versions/0.2.2/lib/command.js:50
throw err;
Error: EACCES, Permission denied '/Users/bonaldi/Library/LaunchAgents/cx.pow.powd.plist'

1 point by jarin 8 hours ago 0 replies      
Let's take an informal poll: how many people grousing about the installation method were actually planning to install and use this?
2 points by matthewsinclair 3 hours ago 1 reply      
As an aside, does anyone know what was used to generate the "Annotated Source" code listings? They look absolutely beautiful. Were they generated from the underlying source, or put together by hand?
1 point by tvon 5 hours ago 0 replies      
That x86_64 node executable doesn't play nice with Core Duo Mac's.
3 points by weehuy 7 hours ago 0 replies      
How much of this is OSX specific since it's a node.js app? Other than the launchctl and plist stuff could this be ported to linux?
1 point by xtacy 5 hours ago 0 replies      
It would be nice if there were an easy way to start/stop pow when needed.
1 point by chrisledet 7 hours ago 1 reply      
Maybe it's just me but I can not seem to get any application to work. Chrome just says "Server Not Found". I tried to check the logs in ~/Library/Logs/Pow but the directory doesn't even exist. Didn't know if it was something silly before I created a ticket on Github.
0 points by koenigdavidmj 9 hours ago 5 replies      
I do not much like this 'curl $random_url | sh' installation method. I am not going to be running some random script without looking long and hard at it first.
1 point by josefrichter 7 hours ago 0 replies      
I have no f*kin'idea how you did this, guys. But the result is amazing even for us, casual weekend spaghetti coders ;-)
1 point by Frozzare 5 hours ago 0 replies      
Great stuff!
The traveling German carpenters intellum.com
176 points by luccastera 1 day ago   42 comments top 12
51 points by dylanz 1 day ago 2 replies      
My good friend is a journeyman, and I always wished there was a US equivalent, especially in the realm of software engineering. I'm sure a lot of people would enjoy coding with brilliant programmers and traveling around the country.

Anecdotally speaking: My friend has a "wunderstick", which is a hand made walking stick. When we go into bars in Germany, he taps it, and the bartender gives us free drinks. Before we leave, he taps his stick again, and says some big speech in German (about how grateful he is, etc). Most bars and hotels cater to the journeymen quite well. While we were in Berlin, he also had girls run across the street to him and kiss him on the cheek or lips. I guess it's good luck to kiss a journeyman.

19 points by ugh 1 day ago 2 replies      
This article talks only about journeymen and women who are truly exotic and rare but it doesn't really emphasize that vocational training " the alternative to college " still is alive and well in Germany. You usually don't got to college if you want to become a hairdresser or a mechatronic engineer.

After they finish school, the apprentices work three or four days per week at some company and go to a vocational school the rest of the time.

7 points by wazoox 1 day ago 0 replies      
In France there is a related system, "les Compagnons du devoir". However, it exists for carpenters, masons, sculptors, bakers, etc. Almost all hand crafts, in fact. They must travel around the country to learn their craft, and present a "masterpiece" as a proof they master it.


12 points by intellectronica 1 day ago 3 replies      
It's worth keeping in mind that the travelling carpenters are a souvenir from dark times in Europe, when economic progress remained extremely slow because craftsmen were evaluated by their belonging to a guild and would not compete.
6 points by vidar 1 day ago 0 replies      
Reminds me of a proverb from Nassim Taleb: "Skills that transfer: street fights, off-path hiking, seduction, broad erudition. Skills that don't: school, games, sports, laboratory - what's reduced and organized."
12 points by zinssmeister 1 day ago 3 replies      
Yeah I experienced this growing up as a kid in Germany. I remember these people from other towns in their "strange" outfits. Over the years they got less and less but you can still find a few.

Now living here in the U.S. I wonder how something like this would maybe translate over to coders and designers in startups. Seeing that we have these startup heavy areas across the country. Why not have people work a year in the Valley, then move a year to NYC, followed by another year in Boston or Austin. Would be a fun and rewarding program for young talent.

4 points by Luc 1 day ago 1 reply      
I really wanted to see those beer-giving sticks, and found that the magic google word for more pictures is 'Wanderschaft': http://www.google.com/images?q=Wanderschaft
1 point by fleitz 1 day ago 0 replies      
Interesting article, it's one of the directions I want to take with Answer in 30. We're very people focused so I think it's essential to be out and about with the 99% of people who aren't tech startups, getting work, getting to know our customers and seeing how our product can make their lives better and businesses more successful.

I want to take a van and travel North America working on the startup and talking to our userbase and customers. What could be better from a community management perspective than to get a visit personally from the founders. I think it says a lot more than some silly badge you can display on your profile.

4 points by bobbywilson0 1 day ago 1 reply      
Corey Haines has done this with software development. In a similar fashion working for room and board. Which turns out to be a great deal for the company and I assume great experience for Corey.
4 points by arjn 1 day ago 0 replies      
Back when I was in undergrad, I met a German exchange student who mentioned something about this. He may have been part of it at some point. They have a special belt buckle or something which identifies them and he said it was almost a status symbol (the belt buckle). I believe he was a roof-shingler and not a general carpenter though.
3 points by mrspandex 1 day ago 2 replies      
Did anyone else read that title as "time traveling German carpenters?"

Does the internet make this less relevant for those in the software field?

1 point by WA 20 hours ago 0 replies      
Funny, I have seen these guys in a bar a few months ago (in Germany). I didn't talk to them. However, that would've been interesting I guess. Anyways, interesting story.
GNOME 3 Released gnome3.org
172 points by sciurus 1 day ago   98 comments top 22
17 points by iamcalledrob 1 day ago replies      
Gnome really needs help with their typography (and design in general).

Gradients, docks and shiny icons do not make a well designed product.

It's clear to see it suffers from the curse of open source software " design by committee, and the featuritis that results from that. There's often "flashy" chrome in OSS, but no solid interactions behind to back it up.

It's equally important what you choose to leave out from your product, as what you include. It seems Gnome has included the kitchen sink.

13 points by naner 1 day ago 0 replies      
Ryan Paul's review on Ars might be more useful:


7 points by ChuckMcM 1 day ago 0 replies      
Did anyone else find putting these two features next to each other unfortunate:

* Messaging built-in

Communication is an important part of the modern desktop, but it's a hassle when you have to switch windows to reply to a message.

* GNOME 3 is designed to reduce distraction and interruption and to put you in control.

Our new notifications system subtly presents messages and will save them until you are ready for them,...

9 points by MatthewPhillips 1 day ago 2 replies      
Love it! Can't wait to use it. I wonder what the impact is going to be now that Ubuntu is doing it's own UI thing. That's the vast majority of Linux users; so who becomes the premiere Gnome 3 distribution? I was hoping to get a System76 as my next desktop but now I'm not sure; depends if Gnome3 is included in Ubuntu's repos going forward.
11 points by riffraff 1 day ago 1 reply      
I really like gnome3, but I'ts kind of sad to realize the main video on the frontpage (for a wonderful new desktop experience) shows only two desktop applications: gedit editing an html file, and firefox with firebug to fix that same code. And a fake IM session with a loremipsum in it.

I understand the gnome desktop may not have many shiny artisty apps as OSX, but this feels a tad too nerdy.

16 points by lallysingh 1 day ago 1 reply      
They really should concatenate some of those videos together. Each one individually is a little underwhelming.
5 points by sigzero 15 hours ago 0 replies      
"Window bars don't offer any minimise/maximise window controls; however, this functionality is still available by right-clicking on a window's top bar. GNOME and GTK+ development veteran Owen Taylor explained the reasons for removing the controls in a comprehensive email. In this email, the developer indicates that workspaces may make it unnecessary to minimise windows."

I don't think I like that one. I minimize all the time even with workspaces. To relegate to a right click is just going to confuse the novice end user.

6 points by demetris 1 day ago 1 reply      
The webfont used (Cantarell) does not look good in Windows. The texts are almost unreadable: http://op111.net/u/misc/20110407-win7-fx4-gnome.org.png " (It looks fine on Linux.)

Cantarell, by the way, is also the UI font of Gnome Shell. Not a bad UI font, I think, but it has a narrow glyph range (about 400) and only includes Latin.

Moving to the larger picture, my impression from the Gnome Shell desktop up to now is that it is an interesting experiment, trying to rethink as it does a lot of stuff that we have grown to take for granted in desktop environments. But it is not necessarily a good desktop experience. Up to now (I have used it for about 40 hours in total) I find it tiring and distracting, rather than distraction-free. Switching between app windows, e.g., is not a pleasant experience for me, with all the action I see on the screen and that I have to take myself each time I want to switch. (Alt-tabbing avoids all that, but I don't always switch windows with Alt+Tab.) Another thing that does not help me, and that I find strange as an design decision, is the position of the clock right in the middle of the topbar. It causes me stress; I feel like time is hunting me.

In general, Gnome Shell seems to me to offer an experience more tuned to small rather than large screens. In a 2560*1600 screen, say, and if you prefer using the mouse rather than the keyboard, the distances you have to travel are ridiculous.

I expect the whole thing to improve in the next couple of years or so, but I am curious to see how much it can improve given its basic design principles.

3 points by rwmj 1 day ago 4 replies      
It seems no one here has actually tried using GNOME 3 for any period of time. I gave it a couple of days and switched over to XFCE. I found it incredibly annoying as a developer desktop (perhaps a minority user these days?). It's very hard to switch between applications, virtual desktops are basically broken, you can't have shortcuts for launching apps/programs, no focus-follows-mouse, and the GNOME developers don't give a damn.
2 points by mishmash 1 day ago 0 replies      
gnome3.org is down for me, but http://www.gnome.org/gnome-3/ works.

edit: and the torrent to the openSUSE with "optional" GNOME3 is: http://software.opensuse.org/114/en

1 point by augustl 1 day ago 0 replies      
Seems like gettimg started is easy too, at least on Arch Linux.


2 points by deadcyclo 1 day ago 0 replies      
I don't use GNOME because I find it way to heavy and bloated (I run X and the stumpwm manually). It would however be very interesting to know how early adapters find GNOME 3 compared to previous GNOME versions in terms of bloat and speed.

I also understand that GNOME 3 can be used very keyboard driven. AAAnybodywo swears to the keyboard like me have any opinions?

6 points by Kudos 1 day ago 0 replies      
Their new site is gorgeous
3 points by _frog 1 day ago 1 reply      
Does anyone else find the tagline "Made of Easy" to be a bit silly and poorly thought out?
1 point by alanh 1 day ago 0 replies      
Looks quite heavily OS X inspired, with Windows 7's window arrangement feature.

In theory, that should make for a great desktop environment.

1 point by hendi_ 20 hours ago 0 replies      
I couldn't find an obvious link on the gnome(3).org sites, but there are detailed release notes:


1 point by indrora 1 day ago 0 replies      
Wow. Gnome 3 looks worse than Gnome 2 did. I say that with love and kindness in my heart though, as I'm a hardcore openbox user. openbox+tint2+nitrogen.

(edit: Okay, Gnome3 and E17 are "Almost" looking alike: They're shiney and don't do much more than that.)

1 point by dermatthias 1 day ago 1 reply      
gnome3.org seems to be unaccessible right now. Any news on a official (as in official from the GNOME people, not Canonical) repo / .deb for Ubuntu 10.10?

I'm using Awesome WM since a about a year and I'm really happy with it, but it looks kinda good and I want to give it a shot.

1 point by sciurus 1 day ago 1 reply      
1 point by TuxPirate 1 day ago 3 replies      
Does anyone have instructions on how to build this beast?
-4 points by RandyHelzerman 1 day ago 3 replies      
Who cares about gnome? I mean really. To first, second, and third order approximations, nobody will ever use it. The ipad2 sold over 2 million units the first month out. The next billion users of the internet will interact with it over their cell phone. Might as well publish an article about somebody who is making a nice set of switches for the front panel of a pdp-11 using mahogany wood or something.
The Prime That Wasn't zmievski.org
170 points by fogus 2 days ago   32 comments top 5
38 points by bediger 2 days ago 5 replies      
That's not a true Regular Expression: it uses back-tracking, and to the author's credit, he notes that in the article.

True regular expressions can't recognize primes. It's important to keep these kind of distinctions in mind for two reasons.

First, without clear, precisely defined categories of formal languages, you'll fail to recognize unsolvable (or undecidable) problems and waste a lot of time. Personally, I put "malware dectection" in this category, as determining whether a given file constitutes a virus seems equivalent to solving the halting problem.

Second, sloppy usage like using "Regular Expression" for something else is one of those common usage issues that allow people to argue based on the name ("regular expression") to lure the unsuspecting in, but then fall back on extreme technicalities to trick people into agreeing with the argument when they might not otherwise have agreed. A lot like I've done in this comment.

18 points by ars 2 days ago 1 reply      
Dup: http://news.ycombinator.com/item?id=1572031

Did you add a question mark at the end to avoid the dup checker?

3 points by jarin 2 days ago 1 reply      
It kind of reminds me of this blog post from a while back about Apple's CFArray implementation and how it switches data structure implementations at about 300,000 elements: http://ridiculousfish.com/blog/archives/2005/12/23/array/

Just a reminder that the simpler things seem, the more complex they can often get under the surface.

1 point by makmanalp 2 days ago 0 replies      
> Needless to say, don't use this prime determination algorithm for any sort of real-life stuff. Instead, just appreciate it for its elegance.

Yet another testament to the subjectivity of elegance in code. One man's elegant code is another's ugly hack. (Not to discredit the cleverness of the author.)

1 point by drivebyacct2 2 days ago 0 replies      
I don't find solutions that are limited in success and are ill-adapted to the problem set to be "elegant", but maybe I'm nitpicking.
Self-Taught Programmers vs CS-Educated Programmers chezpete.posterous.com
165 points by freshfunk 2 days ago   131 comments top 37
57 points by kenjackson 2 days ago 3 replies      
But before I went to college I was self-taught and after college I consider myself to be self-teaching all the time. Learning should never end.

And while in college were probably self-taught too. As an ex-academic I believe formal education is about credentialing. Being able to tell someone that you've acquired a degree of mastery we believe is appropriate to some level. And that's fine, but I fundamentally believe that all learning is really self-taught.

Someone lecturing to you is just a different medium from reading it in a book or online video. In all these cases someone who knows the topic better than yourself has manifest some information in some way for you to learn. (It's not like anyone using the term "self-taught" actually means they learned how to do AI from first principles. They learned it by reading a book written by Russell & Norvig.)

And with that said, let me say that CS isn't programming. No more than a degree in biology is the same as being a doctor. In fact the profession of doctor is so specialized they created a special degree just for it, with residencies in specialties -- and you don't need a bio undergrad degree to get into med school.

And as a general rule, if you're passionate about an intellectual pursuit you'll probably be pretty good in it (not asserting how the causality works). Those that learn via books outside of a formal setting are self-selected as it requires a special type of discipline. Although as more people race to become founders and teach themselves, this pool probably gets diluted.

71 points by pkaler 2 days ago replies      
The one difference I see is that CS Educated Programmers that went to good schools took a lot of math.

I have met very few self-taught programmers that also happen to be self-taught mathematicians. This limits the type of code you can write.

Linear algebra is required to deeply understand computer graphics.

Calculus is required anywhere you have signal processing. This means audio and video editing.

Physics is required for simulation software and video games.

Discrete and combinatorial math is required in systems software like databases.

You're just not going to hit these issues if what you do all day is glue Javascript and Ruby together.

13 points by onan_barbarian 2 days ago 0 replies      
In response to a post about raising smart kids on Slashdot a long time ago, someone posted this:

"Uh-oh, the ground is trembling, (Score:4, Funny)
by Anonymous Coward on Thursday November 29, @08:06AM
Small mammals are scurrying for cover,
All the birds have taken wing.

The hordes of self-proclaimed geniuses who wander the halls of Slashdot approach."

This is possibly the Hacker News equivalent of that topic. It appears impossible to have these discussions without the whole thing degenerating into thinly-concealed self-praise.

'Self-taught' vs 'CS-educated' covers such a wide range as to make the question almost meaningless, in any case. Even among CS-educated people, most of us have progressively forgotten and relearned so much as to have way more in common with 'self-taught' than we'd care to admit. For example, I took computer architecture courses in both undergrad and grad school, but pretty much forgot it all and relearned almost everything that I know about it now in a very different context (high-end x86 that didn't exist back when I took comp arch). Much of what I 'knew' then isn't even true anymore...

And 'self-taught' could mean "ploughed though Cormen, Leiserson and Rivest + TAOCP + SICP + Hennesy&Patterson" while CS-educated can equally mean "took a bunch of Java courses and dodged all the hard stuff I could".

18 points by silentbicycle 2 days ago 1 reply      
Also, there are many kinds of self-taught programmers. Some are task-oriented learners* , and will learn CS concepts they encounter on the way to achieving their underlying goal. (This seems to be the kind the article has in mind.) This has its problems. For example, rather than realizing that their problem is easily solved with parsing tools, they may just lean harder on the regular expressions they already know. Learning within a classroom setting would direct them to ideas they may not otherwise encounter, nudging them out of local maxima.

Others self-learners try to get a full overview of whatever niche they're working in. Perhaps they've been burned by missing concepts from purely task-oriented learning, or perhaps they find having some big picture understanding makes finding practical applications easier. (I fall into the latter.) One problem with this group is that learning everything by breadth-first search can take a while - I wrote a web server from scratch to figure out how web programming works, while some people would be content just going through a Rails tutorial or something. That kind of perpetual, open-ended research really adds up, though.

* just making up terms here.

46 points by entangld 2 days ago replies      
Geez where do we get these stupid fallacies?

>"There are some things that can't be self taught."

Do books not matter anymore? The most brilliant ideas ever conceived and implemented in society are written down. All information that goes into your head comes in as a concept in some form or another. If it can be conceptualized, it can be communicated (whether in a class, a book, or experienced through trial and error). What we're really saying is there are some concepts that self-taught programmers aren't discovering. Point them out and they'll find them (they're in books).

School is awesome. I went. But don't believe the hype.

7 points by jarin 2 days ago 0 replies      
I'm a mostly self-taught programmer (I took a class on QBasic and a class on Visual Basic in community college).

At the risk of generalizing, self-taught programmers tend to learn things as we need them, since our primary focus seems to be on making features or making products.

I will say that I greatly appreciate the academic programmers though, as without them I wouldn't have any tools to work with. I have no drive to create a new database storage engine, a more efficient bloom filter, or an experimental programming language, but I'm grateful that someone gave me those things to play with.

6 points by michaelochurch 2 days ago 0 replies      
This is an either/or fallacy. To be excellent, you need a mix of both. Formal schooling isn't required, but you generally need to have been exposed to other smart people, many more experienced, because otherwise it's impossible to tell what self-study will be fruitful and what not. So some form of instruction, whether it comes from school or from a lucky landing in the work world, is required. That said, if you're not autodidactic to some extent, you're going to be unable to grow.

By the way, I've learned a lot of those "skills that self-taught people lack" on my own. Lambda calculus and type theory I hadn't even studied till I was 24. I'm not an expert on either, but I know as much as a well-educated non-expert (i.e. I know what the typed lambda calculus is and why it's interesting, I know about System F as the basis for ML, et cetera).

5 points by gnaffle 2 days ago 0 replies      
My experience is that CS-educated programmers will often be more humble and ready to admit that they might not know all there is about a subject, and self-taught programmers more certain that they know the one way to solve a certain problem.

Of course, this might just be the people I've met, but based on personal experience, I think university teaches you that you're _not_ the smartest one in the world, that there are lots of things you don't know, and that things are usually not as simple as they seem.

That said, a lot of the self-taught programmers I know get more humble as the years go by. And of course, all the great CS-educated programmers I know learnt programming in their spare time, and got the theoretical and low-level background at uni.

4 points by joelburget 2 days ago 0 replies      
I tend to agree with Mark Twain on this point: "I have never let my schooling interfere with my education."

For me, I have learned more outside of school than I have in it. Really I'm in it for the diploma. I wish companies would look at your software rather than your certificates, I think they would tend to find better developers. I know some companies are good about this but the reality is that programmers do need to go to college if they want to compete for jobs.

I will say this for school: it fills in gaps in education so companies can expect some standard knowledge from everyone. Also, it can be helpful for people that don't have the motivation to learn on their own.

4 points by yelsgib 2 days ago 0 replies      
I think this statement is funnily self-negating: "I already understand grammatical structure, the relationships between subject/object/verb and the uses of prepositions." This guy must be learning Romance languages (e.g. surprise! he's learning Portugese) since languages outside of this family differ in a lot of ways. E.g. all the things here can and do differ: http://en.wikipedia.org/wiki/Romance_language#Linguistic_fea...

This sort of euro-centric natural language egalitarianism seems to bleed over into his thoughts about programming languages as well, e.g. those expressed in this statement:

"Learning a new language simply teaches me to communicate the same thoughts and feelings but in a different way."

This is wholly false. Languages differ with respect to their requirements for self-description. These requirements, when propagated into code through the actions of a large community, shape the types of programs that are written and how those programs can be expected to interact.

For instance, part of the reason that Haskell programs can be very short, is that the type system on which Haskell is based is extremely deeply thought out and based on a rich mathematical framework. This framework allows the programs to be self-describing in a consistent and meaningful way and for that self-description to be used to express ideas more clearly.

Ruby is self-reflecting through a sort of imperative set of meta-programming techniques. This allows "conventions" to exist in ruby code which enables a framework like rails.

Etc. etc.

When will people realize that not all languages are created the same? Language shapes culture and culture shapes language. Once you put a stick in the ground and decide where features will be located and how they will be inter-related you are planting the seed for all sorts of complicated emergent behavior.

It's true for natural languages and for programming languages. This guy just seems to have missed the ticket.

8 points by kailashbadu 2 days ago 0 replies      
Someone who is CS educated but hasn't done a great deal of self-teaching in programming is going get a heart attack when applying for his first job.
3 points by ignifero 2 days ago 1 reply      
As an outsider (i studied physics), I always thought computer science was NOT about programming. I find it fascinating that you CS people can work on the foundations of computation, like P=NP (see, only know the basics). Programming to me seemed a very pragmatic thing: you learn as you go. Need to build a parser? read parsing theory. Need to do text mining? learn it. In that sense, i don't think there are "CS-educated programmers". While everyone can benefit from taking an introductory course, in the end everyone becomes self-taught
3 points by EMRo 2 days ago 0 replies      
Agreed on the math point. I took CS50 (Introduction to Comp Sci) at school my Senior Year and being that my focus was directed mostly to kegonomics, I didn't quite get as much out of the course as I should have. I also took "Bits" which is watered down Comp Sci though the professor Harry Lewis said Zuckerberg got a C in it (?!?!?).

What I did learn was the basics of putting together algorithms and "thinking like a computer." For a guy who studied Social Anthropology and whose last math course was in High School, you can imagine the nitty gritty of building a C search algorithm was difficult to get at first glance (Linear search, bubble search my a$*).

To cut the BS:

1) CS I took was broken into discrete testable units. For each problem set there was a core CS theory that you needed to understand to be able to finish it. Some were less functional (ie arcane data structures), others were basics of programming that anyone should know like the back of their hand (pointers, data manipulation etc).

2) When self-teaching, you tend to pull together bite size chunks of important info necessary to solve a particular problem rather than building a solid foundation. If you're completely self taught, you'll miss 101 level theory points that may help you later when tackling a known problem that has a solution or is nearly impossible. That said, in self teaching myself, I've cobbled together quite a bag of tricks as well as the resourcefulness to pull up any info I need to solve a problem and absorb it quickly. I've yet to meet a problem I couldn't tackle just because I wasnt a "CS Educated Programmer".

Through the course though, the biggest takeaway for a non quant type like me was breaking problems down into discrete parts solved and tested by logic loops (read: thinking like a computer). The basic structures and solutions to problems involved I still use today when I program for the web.

3 points by dean 2 days ago 1 reply      
"I think computer science students who've spent a lot of time doing research (particularly Ph.D.s) gain something that can't be self-taught."

Isn't research the very definition of self-taught? You're learning as you go -- no one has defined the path yet.

4 points by KeyBoardG 2 days ago 1 reply      
The problem here is that you can't group all of one type together. There will always be brilliant self-taught programmers. From my experience in the field, however, is that self-taught will often take the first solution over the best solution, or will pick the best solution to their particular problem without thinking enough about coding standards or clean integration into the code base. There are plenty of tools out there to ensure this kind of thing in other languages, but I don't often work with those.

Of course, there are also many schooled programmers which may be able to think critically but lack the ability to go from a program to a product.

But not all of course... you can't make these stereotypes without starting a flamewar.

3 points by smithbits 2 days ago 0 replies      
"The truth is that for some it does and for some it doesn't." A pleasantly reasonable thing to say.
5 points by kirbman89 2 days ago 0 replies      
I see too many programmers that get in it for the money and not the passion. Having passion removes the need to be formally instructed. Passion gives people the drive to excel and be the best. However, you do get a big picture view of what's going on having earned a degree. The slackers tend to be the non-self-teaching among us.
1 point by humbledrone 2 days ago 0 replies      
The plural of 'anecdote' is not 'data'.

Is anyone else who's been following this discussion disturbed by the absolute paucity of any hard evidence to support any of the arguments given?

It appears to me that nobody (including me) actually knows anything, statistically speaking, about what the differences are between self-taught and CS-educated programmers. Everyone has an opinion, and some anecdotal evidence (I worked with ... or I've met ...), but that's a far cry from hard data.

Is anyone aware of any studies that might shed some light on the topic?

3 points by shriphani 2 days ago 0 replies      
I once read something to this effect from Oded Goldreich's book (his book on Computational Complexity): Knowledge is the result of hard computation on publicly available information. I think getting a formal education definitely aids the process of learning. Otherwise how do you get around Meno's paradox (i.e. how do you enquire about something if you don't know of its existence?) ? And self-taught programmers definitely would benefit from some structure in their education (again - the structure is decided by a formal CS curriculum). I have been trying to learn signal processing over the last couple of years and I found that OCW + Berkeley webcasts took me a lot farther than random googling about how to accomplish something.
2 points by kunalb 2 days ago 0 replies      
A bit of background about me before I add my 2 cents: because of my rank in an entrance examination (JEE), I ended up majoring in Civil Engineering and managed to work towards a minor in CS (which was, and is my passion). I'll be graduating in a few months.

I've experienced a bit of both worlds"I picked up books on Data Structures (including Red Black trees), attempted to implement Rjindael in C++ (without understanding any of the underlying math) in high school, learnt PHP/JS/CSS/C++ and started building from there.

What I've observed is"as a self taught programmer the biggest disadvantage is that you don't know what all is available/standard"as someone else mentioned in the thread, I did not know about parsers until I managed to take a course in Programming Languages.

Since I realized that there was so much I did not know, I've tried to make it a point to keep asking my batch-mates in CS what they are reading, picking up textbooks recommended by professors in class; reading other books as recommended on HN, and elsewhere (SICP, Learn you a Haskell..., started reading TAOCP, etc.) and have attempted to at least match my batch-mates who are CS undergrads. At the very least"try to get a fairly broad idea about known solved and unsolved problems.

The biggest advantages an avg CS undergrad has over me is that s/he has the credentials (which, I've tried to match by having my own open source project, doing interns in well-known companies, etc.), and that s/he is exposed to much more theory than I would ever be without actually having to do much beyond attending classes (for which I have to go the extra mile).

The advantage _I_ have over the other, standard CS guys is that I have the freedom to find out more about what I really want to do, and explore/follow certain areas which I find more interesting without being bound by academia (tests, reports, stupid & pointless assignments), and in general, perhaps"have a lot more fun while learning.

4 points by nwmcsween 2 days ago 0 replies      
There is no divide, like anything in life if a person simply uses it as a means to an end then the product is going to reflect this. This is true with anything.
3 points by onassar 2 days ago 0 replies      
"Learning a new language simply teaches me to communicate the same thoughts and feelings but in a different way. This is the same with programming languages: you accomplish the same tasks in a different language that has different syntax."

I liked that. A computer language, or CS, are both, for me, means to turn an idea into reality. I don't think it necessarily matters which way you were trainer, so long as the idea you're trying to execute gets done. Success either way imo.

2 points by hessenwolf 1 day ago 0 replies      
Uni makes you learn really boring shit that you really don't want to learn and don't think is relevant at the time, and then gives you a credential. Both of those aspects should not be underestimated.
2 points by yanilkr 2 days ago 0 replies      
If a person can teach himself/herself something non-trivial like programming, I am sure (s)he can easily learn what is academically taught. The learning for self learned-programmers is mostly driven by need, unlike in a college setting. The toughest skill to learn is teaching yourself which not many people learn at college/university.
2 points by lowprofile 2 days ago 0 replies      
I would have very much liked to have a CS education (I have an MS in Neuroscience), but did not really know I had aptitude and a passion for it until later in my life. I took the long self-taught route to programming being very task driven, ie the first business I started needed certain things so I just did it. Was it ugly? oh heck ya! To some degree it still is, but for many years it has more than payed the rent.

I very much miss a mathematics background but these days there are many sources of information that can and do aid in the solving of programming problems.

I have railed against "credentialism" for years because ultimately there have been many people I have worked with who were capable of many tasks but not allowed to the opportunity because they lacked a degree, but not the skills. And don't get me started on people doing the identical job but one getting more due only to a degree.

A credential tells me what you might be able to do, a body of work shows me what you can do.

1 point by joshfraser 1 day ago 0 replies      
I learned programming in college in spite of my classes, not because of them. I was doing 3x the coding outside of class and learned way more practical stuff that I'm actually using today. College taught me way more about dealing with people than with code.
2 points by antiterra 2 days ago 0 replies      
Am I missing something, or does this article basically say: within the domain of self-taught and c-educated programmers, there are groupings with various levels of theoretical and practical skill?

It seems it wouldn't be a stretch to say that, "cs-educated programmers" aren't even really identifiable by trait, since course selections made by both the university department and the student can change the curriculum unpredictably. The same could be said for "self-taught;" in my experience, half the people in cs-related math or theory classes just read the book and don't bother to attend class anyway.

2 points by simonhamp 2 days ago 0 replies      
This feels a little late to the game, but many of the comments here (as well as the original post) have crystallised some ideas I was writing: http://scrumpy-jack.com/post/4374327890/learning-should-neve...

It's a slightly different slant on the topic, not taking up any one side, but perhaps self-taught people (in any field, not just programming) are inherently more passionate about learning?

1 point by heresyforme 2 days ago 0 replies      
The best programmer I met in college quit after 2 semesters because he already knew the concepts.

However, aren't we really talking about IQ? From what I can remember, companies really started using degrees when testing for IQ became illegal. If a possible employee has an IQ of 120, then you can be pretty certain he's going to pick most of the concepts you throw at him. The college degree filters (beginning with the SAT, ACT, and high school diploma) a lot of low IQ people out the process (at least, in theory) and if not, it at least filters out those individuals who don't work hard improving their mental capacity (for instance, cognitive abilities may be improved through the study of music).

What an employer really needs is the ability to quickly filter out bad candidates. In reality, it is HR that does the culling. They don't know how to filter technical candidates, so the first thing they use is the college degree.

1 point by neilalbrock 2 days ago 0 replies      
I'll be honest and say that I'm a CS dropout who's never felt like any kind of maths wizard. I didn't enjoy the CS course I took back when I was 17 but that never stopped me from pursuing a career in the field that I'm passionate about.

Since that time I've taught myself everything I needed to know and never really felt the poorer for it. It's not easy and a degree is a great foundation but it's exactly that, a foundation. What comes after graduation day is a lifetime of learning.

If you really want to pursue programming, to any level, it's your passion and willingness to keep learning and pushing yourself that will ultimately determine how successful you are. Degree or no degree.

1 point by Killah911 1 day ago 0 replies      
In the tech world I think the only time it matters is when you're a noob. A college degree give some credibility to landing a job etc. But if you've got a proven track record developing kick-ass software, that's what will keep your career moving. As far as interacting with other college student and networking goes that can be pretty easily be done by hanging out at with the right crowd online (like here!) or at other professional settings in the rel world.
2 points by Joshim5 2 days ago 0 replies      
One thing to consider is that some people are not of the age to earn a degree yet. I am a high school student and people asume I am not capable or competent way too often.
1 point by ef4 2 days ago 0 replies      
There's no contest between a person who spent their childhood messing around with computers and somebody who's trying to learn it all in school.

I think CS degree programs are actually most valuable for people who already know how to program. You get to spend the time refining your art, whereas somebody starting from scratch barely has time to become competent.

1 point by malouie 1 day ago 0 replies      
I've seen that self-taught programmers can reach the equivalent of programmers educated at top universities. However, the self-taught programmers rarely specialize like those with Masters or PhDs in say, machine learning, data mining, information retrieval, and so on.
1 point by grigy 1 day ago 0 replies      
University taught me to learn and then I picked up the rest myself. Is this called self-taught or formally educated?
2 points by DrHankPym 2 days ago 0 replies      
I don't think it matters how or where you get started in the business, so long as you keep hungry to learn more.
1 point by devan 2 days ago 0 replies      
Self taught programmers are more passionate.

my 2 cents.

       cached 8 April 2011 04:11:01 GMT