skysight-inc/HackerNews huggingface dataset:
Sharpen your tools and remember the problems you are trying to solve. Building software is just like building anything else and the first effort should be getting your tools in the proper state - that means having a good IDE, a good and private workplace, clean directory structures on your (hopefully linux) PC. Basically, you should learn programming environments (eclipse, emacs) and PCs (how exactly does this thing work? Coding = telling a computer what to do). Knowing what problem you are really trying to solve will avoid the biggest pitfall in programming - premature optimisation. Get your environment setup, focus in and separate problems into various smaller, isolated sub-problems. Stay clear on what you are doing and don't get side tracked by "interesting" problems. Honestly, I would say you should try to get away from PHP and learn a proper compiled language - Java is my favorite.
you can try Tonido workspace
I think the kid need would know a bit more math first (than a typical 8 year old would) and then move to something like http://pine.fm/LearnToProgram/
A Note To Newspapers
Cutting the feature set is by far the best way to speed up your launch time. And you'll get a huge amount of new perspective on what features are really necessary once the product is out there with people using it. So, take a good hard look at everything you think needs to be in v1, then cut that in half.
As one of a few (very) small angel investors in DevjaVu, I'm both sad to see it go and excited to see what Jeff Lindsay will do next.

If the past week has been any indication, he's going to build a small army of web API related infrastructure projects:
http://www.scriptlets.org/
http://www.postbin.org/
http://github.com/progrium/hookah/
Anyone else ever play "Rocky's Boots" back on the Apple ][?
One way to read it is about a guy who does whatever the hell he wants to do. Reading about such people, I imagine, has a motivating effect on highly ambitious, self-driven people.

I doubt Cuban is a serious objectivist or anything, but I don't doubt that the book can be motivating.
I think my approach could be described as a combination of intuitive and feeling (closely backed up by thinking). The visualization is more a tool used to serialize out thoughts for historical or communicative purposes.

I rely more on feelings rather than visualizations. For example I don't usually visualize the hierarchy of a program. I feel my way around it. I'll use my editor/debugger/REPL to jump me from place to place to build up a non-visual structure of the program in my head.

If I need to communicate the hierarchy a block diagram, UML diagram, ASCII art, English prose may be drawn but that's not what's in my head at all when I'm working.

More importantly I'm often feeling for inconsistencies and patterns. Most importantly I'm feeling for elegance and simplicity. If one thing seems a little bit different than a couple of other things I'll make it be the same. If a number of things feel the same I will abstract out the commonality. Visualization does not help me do those things at all. I need to load the program into my mind and then I just start noticing/feeling the essence/problems/cleverness/joyfulness/messiness etc.

I think you're right that when it comes to learning something quickly or communicating something a visualization helps greatly.
A button labeled "Options..." is arcane?
I've had good luck with Scratch from MIT in teaching my children. http://scratch.mit.edu/

They seem to pick up on the basic math concepts pretty quick (i.e. to move the character up, I need to add something to this X variable...).

Its a lot like Squeak (I think a derivative), in that they can paint the objects they're going to animate and then visually construct programs to control them and implement their logic.
non-linear data relationships seems to be the dividing line to me. being able to compartmentalize concepts in different ways and then play with the relationships between compartments.
which newspaper website was it?
we don't nearly have as many of these kinds of posts on HN as I would enjoy seeing.
Try Game Maker: http://www.yoyogames.com/gamemaker
Would be really cool if one could define "new gates" in terms of gates, e.g. a half-adder, a full-adder.
Check out LEGO Mindstorms, it's basically LEGO with motors that you program. I think something physical attached to the (abstract) programs would be a great way to start.

It's recommended for ages 10+, but I'm sure a bright kid with an adult helping would love it.
The Django scheme is what tptacek refers to as a "naked sha1 plus salt" and recommends against, because it is computably feasible to brute force it due to sha1 being a fast algorithm. His recommendation is to use a more computationally expensive hash such as bcrypt (based on blowfish) or possibly a few thousand iterations of sha1.
Eight seems a little young, I think most start in their early teenage years. My own experience was to start with HTML and Javascript, and from there I moved on to Perl, C and the like.

I think HTML, Javascript, and CSS make a great starting point. Web pages are something you can show off to your friends--I got a lot of satisfaction from showing off what I had made when I first started out,

There's tons of books and resources to learn it. More importantly it's easy. You can't get HTML stuck in a loop, but it will still provide many opportunities for the kid to learn that computers will do what he says, not what he means. And all he needs is a text editor and a browser.
That's a great point. I learned with HTML, CSS, and JS too. The instant gratification was enough to make me want to learn more and once I saw the limitations of "static" content, I moved to server-side technologies.
I couldn't disagree more. It's better to have a simple, consistent, and easy to read language such as Python.

But if you want to build games, also consider Game Maker.
These are all great suggestions and I'm seriously looking each of them over. Thanks to the HN community.
I detest the idea of a "non-idiot mode" or "expert mode". Software doesn't need to be complicated to be powerful.

#1 Google Docs has a fantastic organizational tool which is much better suited to the task than a traditional file system.

#2 Why are we messing with file names anyway? Flickr doesn't force me to think about this problem.

#3 Why can't I unlink a file instead of deleting it? Why should I have to kill a process?

#4 shrug Beautiful is welcome if you don't suck down my resources too badly.

#5 Again, normal users are forced to interact with file systems far too often.

#6 If you like Emacs so much, why don't you just use Emacs?

#7 PowerShell comes with Windows 7... or you can install Cygwin.

#8 shrug both technically already work nearly everywhere.

You are proposing "solutions" to common problems you have had. Your solutions have a remedy nature to them. You exhibit the traditional Microsoft band-aid mentality. Microsoft's culture is designed around managing complexity. We're damn good at coming up with complex solutions to complex problems. We are very weak at deriving simple solutions to complex problems. However, more importantly, we are very weak at identifying important problems to solve, and hence simplifying the needs for solutions. It seems to me like you would fit right in here. That is not necessarily a good thing.
It works against not-well-formed markup.
Why did you ask their permission? Couldn't you just use the data from that Pipe in an app without asking them?
Wow, I'm surprised how rusty I've gotten. It took quite a long time to figure out the optimal full adder.
Very good point - in the dinner examples, if the parties involved agree with the proposal, everyone involved "wins" in some form or another:

The person paying builds up "you'll owe me later" points; the rest of the table saves money, at least in the short term.

The people who've already been served get to eat immediately, which they probably want to do anyway; the others who haven't received their food yet can stop feeling guilty for stopping the others from eating.

Overall, a whole lot of uncomfortableness is avoided by agreeing to the ridiculous reason.

Compare that to the the territorial conflict example, in which one of the two parties wins nothing, and instead, loses something very important to them.
Samsung Tocco Lite in UK
Very cool! I recommend just having the simulation always be active (i.e. when I hook up a square wave generator, immediately have it generate a signal).
That sounds more like "my extremely personal preferences mode" than "non-idiot mode".
What ojbyrne said. Also, something that takes quite a bit of time to learn is when to give up on a library/framework and just reinvent the wheel (which I recently did---nftw() did everything I needed, except I couldn't get it to not follow symlinks; I found it easier to roll my own version).
Coding is a lot like cooking. Sure, it's fun to cook from scratch, but if you're running a restaurant (cooking for a living, in other words), you'd better learn to get most of the hard work done before the dinner crowd hits. "Mise en place", they call it.

Developing works pretty much the same way -- they key to quickness when you need it is to have most of the grunt work done beforehand. That comes partly free with language features and libraries, but you'll find that, over time, you will have amassed a lot of code that pretty much does what you need. If you've done that properly, you'll find that you have essentially "added features" to the language you're working in -- and after a while you will find yourself writing code not in PHP, but in your own dialect of PHP (or whatever the core language is). That class (or function) that took you all day to write and debug? It takes 5 seconds to include it the next time you use it. That coupla annoying lines you seem to type every time you open your IDE/editor? Save them as a snippet or make them part of your default boilerplate -- it's quicker to select them and delete than it is to retype the damned thing when you need it. That part of it does take time to accumulate.

Even when the problem is a new one, it's often faster to extend the language in the ways you need it to be extended before you tackle the big picture. Some languages are a little easier to program bottom-up like that (PG gives excellent illustrations of that in the essays "Programming Bottom-Up" and "Beating the Averages"), but you can do something very like that in almost any language, and there's no better time to start than now. But do remember to add your greatest hits to your personal language library -- it'll save you loads of work if you ever need it again.
Apparently having "good teachers who care about undergraduates" does not affect enrollment levels.
I agree with the poster, but unfortunately since Windows tries to cater to everyone they often cater to noone. If they put the dialog in, people complain. If they leave it out, people complain. I only know what would make me happy, not all of the other Windows users.
We spent months building GitHub's issue system and had a lengthy beta period. No one experienced the bug you're referring to until the feature went public. Shit happens, you fix it and move on.
I guess this is where I'm getting confused. In some places I see comments which seem to say that "naked hash plus salt" is bad when the salt is the same every time, but possibly not when the salt is different every time. And, of course, in other places I see comments saying that this isn't any good either. And then stuff which has nothing to do with salts or nonces but solely looks at the algorithm (which I don't understand, because even the most up-to-date stuff on attacking popular hashes still seems to be orders of magnitude behind the efficiency of rainbow tables, and rainbow tables don't do as well against a salt that changes with every password).

And, well, this is where I just kinda go off the rails, because it seems as if there's nothing that's ever been conceived by man that doesn't have an article by a security expert saying "what are you, some kind of idiot? Why would anybody use that?"
the problem is that you seem to be looking for a solution in the form of a design process, when what you really need is an organizational/political fix. You have wicked smart UI people (http://blogs.msdn.com/jensenh/). you just need to let them do their jobs.
The rape scene. Where the girl gets raped and enjoys it. That's actually where I stopped reading, but I'm not a frat-boy jock-asshole.
Ask HN: What happen with Friendfeed?
I registred to friendfeed few months ago, I subscribed to few people and groups I like and quit it since I didn't like it.

yesterday my mail box has 100+ email than usual! It was friendfeed, noticing me that some people subscribed to my updates. I went to friendfeed (my account is friendfeed.com/omarabid) and noticed 92 new subscribers (I had any when I started), most of them I don't know.

How can I know what happened? Did FF do that to makes its site looks popular and interesting, or did I become popular suddenly? Is it better to contact friendfeed or just take advantage of the new subscribers??
It is when it's small, in the corner, and surrounded by a whole bunch of other options. There's no reason why the option to share your files with ~90% of the computing world should be buried three clicks deep and esoterically named.

edit to note: Perplexingly, it seems they got it right in Tiger before screwing it up in Leopard, which is very unlike Apple... http://guides.macrumors.com/images/4/41/Mac_sharing_screensh...
I am the counterexample. I have always been relatively poor at visualization and spatial manipulation. That said, I am not a spectacular programmer, and rely more on my ability to cut through to the real concerns of people than on my ability to create innovative technical solutions.
They just switched to a new layout, maybe it has something to do with that?
I personally know people who are totally incapable of anything spatial but are very good with logic and maths. I score rather highly in standardised spatial tests myself, but I rarely think visually about algorithms or data structures. I found that doing so keeps me thinking inside the box, literally.

Many abstract problems are high dimensional and items are linked by functional relationships that are very difficult to express visually. I've seen so many people cripple their understanding of problems by forcing them into diagrams that are just plain wrong in some important respect.

I believe spatial thinking works very well for some things but completely breaks down for others. Just a very simple example. It's pretty easy to visualise a set of three numbers: {2, 7, 4}. Just put them into boxes. But now try to visualise the set of all primes or the set of all sets that do not contain themselves.

Even for sets that are finite at a particular point in time, like the set of adults, thinking of them as items in a box is very misleading. What would have to be visualised is really the membership criterion. But that set still contains items at a particular point in time, so how do you visualise the relationship between the membership criterion and those items?

I know what happens at that point. Vague visual analogies that keep readers of popular science magazines happy but have very little utility for actually doing research start to creep in.

But dont' get me wrong. I know very well that visualising things can help to understand many things very well. Just not all things, and the problem is that people don't know where to stop trying.
I wasn't going to reply to this, because I don't want to be a censor. But you're calling babies stupid, and I have a baby, and he's a bona fide genius, and I suspect he's no smarter than your baby.

A newborn baby's brain is like a computer with just a BIOS. How would you feel if you sat beside a computer with no Operating System for a year, and it programmed itself to speak your language?

I agree with your argument. My son is a boy, without any help from me. He does likes pink, but it's usually a pink car (not a doll).
I would say that SMB is pretty arcane. Further, this is likely what most people want to do when they share files if they aren't in a mac-only environment. Why isn't SMB enabled by default? Why doesn't the option mention that this is what's needed to interface with windows computers?
There are some people whose definition of "good" is "Apple." You can never win on this turf: anything that isn't Apple, is bad; anything that is like Apple, is a copycat.

The people who have more useful information are probably those that hop on OSes all the time and spend a majority of their time in pre-7 windows flavors.

I never played with W7, but I would probably be annoyed by that dialog box if I see it in a normal situation. Right now I can see two attacks to this problem.

First, for the config-philic person, allow them to choose during OS install whether they would like to be exposed to configs-galore. For those who don't just go with the defaults and allow them to enable configs-galore themselves later. The (cognitive) memory cost here is 1 item: where to find the option to enable configs-galore.

Second, pop up these kinds of window depending on how close the action is to the OS install. If it is within a few days, my memory of "fresh OS install" is salient and it would not be surprising for me to see config dialogs pop up here and there. If it was over 2 weeks though, I'm most likely coasting already and would hate to see something disrupt my flow.

Other than that, though, that dialog box looks fine to me. I don't find it the least bit confusing. In fact, the choices it gives are quite complete and pleasing as such.

/Mac user on a daily basis.
I think enthusiasm is more important than structure and curriculum both for 8 and 80 year-olds. Just plant the seed - if he takes an interest, he'll start learning on his own. When he comes up with interesting questions, you can start filling in the background he lacks.

That's what I plan to do with my kid. He's 2 years old, a little young for Python. But I have an OLPC, and I sit down with him while he pokes away at it. When the time comes, I will try not to be pushy or academic about it.
Logo and Turtle-graphics might still be the best way to get started:

http://en.wikipedia.org/wiki/Logo_(programming_language)

The advantage is that the kid can see immediate visual effect of the code, it is easy to understand and it can introduce more advanced concepts (functions), also it might direct curiosity towards robotics.

It is very simple and intuitive and there must be some open source version for every platform.
It's said that musicians make good programmers.

One point of similarity is that both can use their "shape brains" to solve problems.

For musicians other than pianists, a common way to memorize a piece is to pay it repeatedly, each time moving the music stand farther away. Distance obscures more and more details.

I've been able to find problems by printing out code and stepping back until I could just see the structure. Yes, this only works given consistent indentation.
While I agree with you, I'd be interested to know if there are any 'intelligent' solutions to this problem. You can't possibly just have thousands of devs checking into one central SVN repo, can you? Any idea how Apple does it?
I actually use Vista as a window manager for all my Linux tools. I kind of like it.
I also think in this way; I typically describe it to technically inclined people as being kind of like thinking with a command line interface instead of a GUI, although the metaphor is rather imperfect.

More strangely (to most people with whom I have spoken), I often dream entirely without images--occasionally even as written prose.

Edit: Perhaps interestingly, this does not seem to harm my ability to do spatial inference, but I have essentially no long term image recall.
Applications install.

It could be really simple, but it's definitely not obvious: With Windows, you go through the installer. With Linux, you (often) go through the command line. Mac: drag somewhere, run. Where'd it go? Where do other users find it?

The completeness of the installer packages also varies. They don't tell you drag to the same place.

Comfort with all these quirks, regardless of OS, are highly habit-dependent. Once you really know what's going on, that OS is your "answer." To me, the issue in the article is merely about conversion and new customers.
+1 I think, though it's hard to tell from a written description whether you're describing the same mechanism I use to get around a codebase.

I usually think of my mental model of the code as being a map, yet it's not a visual, 2D map. It's more a collection of associations - I know that if I follow this function, it'll have this effect on the world, and this function is used from 4 other places, all of which need it to do this, etc. It doesn't really map well onto 2D visuals at all, because I suspect code has way more than two dimensions. But maybe like a massive graph lattice...

I use the same mental mechanism for getting around town, so it's definitely spatial, but not necessarily visual. I guess the best distinction I can draw is to compare looking at a map of a town, vs. actually living in the place. For example, I got lost today in a twisty residential cul-de-sac while hunting for an estate sale that never did materialize. But I knew I was in the corner between 101 and 85, and I knew I'd come from Middlefield, so in the course of driving around I managed to put together a mental map that got me out of there. (FWIW, I was here: http://maps.google.com/maps?f=q&source=s_q&hl=en&...).

I find that I can't stand visualizations of software - they always confuse me far more than just looking at the code does. I'm not sure why - maybe it's because it's a leaky abstraction, and there're always connections that are very necessary that aren't represented on the diagram.
For another approach, with a structure editor, check out http://parselets.com
If you like Emacs so much, why don't you just use Emacs?

Not the point. Microsoft has had a blank-slate opportunity with things like calc and notepad but has squandered them. Why not make calc the world's best calculator? Why not make notepad the best text editor? Instead, those apps are just like the 1998 versions, while they've diddled with the meaningless start menu and control panel for probably 200 million dollars in man hours.
Check out Not Quite C (NQC). It lets you write actual code to run on the Mindstorms platform. (This was my first experience coding.) http://bricxcc.sourceforge.net/nqc/
"just know" is long-term memory. That's the technical, correct term, and is exactly what it says.

And at expert levels it is what separates the truly good programmer from the novice, and even the "talented" young. Realizing this, as long as you keep learning, no fear. The only price is continual practice: effort and time.

That also means be constantly self-aware. If things are going too smoothly, it means it's time to pick up something new.
A nice simple language like Python would be best, and no, 8 is not too young, especially if the kid shows interest. The kid should be given lots of sample code, and encouraged to modify/extend it. I think there's plenty of substance in text-based programming to hold his/her interest, but one of the robot programming toolkits could be used to help keep the kid motivated.
Mad Scientist, Jr.