skysight-inc/HackerNews huggingface dataset:
These ideas are all right, but they don't necessarily address growing useful talents. Sure, managing your time effectively by grocery shopping every day helps you with your time management skills, but so does everything else.

I also do not agree with the idea that only college students can do these five things. A student is like any other person, and they are capable of learning any "useful" skill that they are interested in, to a certain extent.

If you really make it your goal, passively earning $1,000/month becomes easy. Then $2,000; $5,000; and $10,000 are just simple milestones.

If you're looking for a way to make that much, find someone who is making an equal amount by doing something you're interested in. Copy success, and adapt to your situation.
Let's have a specific example. The Linux kernel. Technically, it's GPLv2, but in practice the copyright holders don't bother to enforce the copyright license. Linus Torvalds is the acme of "pragmatic" open source.

What right is missing: The ability to compile a new kernel for an embedded device. Qualcomm, Marvell, Broadcom, ARM, NVIDIA, and many others. They provide binary device drivers that work only with specific versions of the Linux kernel. Consequently, my home router has more computing power than my desktop 20 years ago, but my desktop was free to run any software and my router is just a router.

Also, Android devices almost never update, for the same reason.
Do one thing at a time. Personal Kanban in small web development company.
The company Zeo made a product that did this (Zeo Mobile). It was a headband with 3 sensors on it, and it connected to your phone via bluetooth. It works great. Unfortunately they recently went out of business and took their site down, but you can probably still find them on eBay.
Not sure about education, but Indian developers tend to be very proud of their job titles. I had to formally become 'senior super developer' so they would not look down on me.
I'm a self-taught iOS developer (language: Objective-C) — an interest that began when I was 15/16 in 2009. Tried to learn it from Apple's documentation and the few online manuals there were back then, but wasn't ever able to grasp making apps any more complex than just a few buttons!

Started again properly about a year and a half ago when I began college (I'm 20 now - and I'm doing a Business Management degree), and haven't looked back since. You are right in saying that StackOverflow has literally changed the many people learn code because of how vast its library now is (for iPhone especially). Never had any formal education whatsoever — I've only ever read one book (http://www.apress.com/9781430236023), which was a complete beginner's guide. Everything else has been online tutorials (make sure you do your research and corroborate information on which blogs/sites are best to learn from for your chosen language), and Apple's amazing documentation.

As I am still in college, most of my projects are 'side'-projects, but with each iteration they're getting stronger. Collaborated with an SME to make an educational app and now have a contractual and in-house app lined up before Christmas. It's difficult to freelance like this, but the funding (loan) that comes with going to college means that I haven't needed to find a 'proper' job yet.

Never give up trying to learn, if you enjoy doing it. If you don't enjoy it, don't try to learn it past the point of caring. I constantly felt an 'impostor' syndrome-like feeling when working for the first company I worked with, but in reality, consistent hard work for at least a year will put you ahead of most average outsourcing operations for basic stuff. Try and validate your learning, too — keep a blog and constantly ask questions, either on SO or your language's forum of choice. A milestone for me was when I was accepted on student scholarship to attend WWDC this summer. Take it from me, you can achieve something similar if you make sure you don't slack!

I wish you the best of luck.
I'm self taught and it was an "interesting" wade into the water, so-to-speak. One of my first projects was building a small forum starting around 1995-96 as a teenager (originally in Perl/CGI, then ASP/VB and finally ASP.Net/C#). I was very late to PHP and despite most of it's warts and incredible ease with which to shoot yourself in the foot, I still think it's easier to start for a novice and one of the best intro tools to web development.

Along the way, there were forums like FxZone (of Eyeball-design), which closed unfortunately, and a myriad of other tutorial sites, forums, communities (most of which had closed... what's up with that?) and finally landing on sites like CSS Zen Garden which introduced a whole new world of front end concepts.

While turning the forum into VB, I learned there were these things called subroutines or 'functions' that broke problems down to incremental chunks and got reused a lot (you can reuse code?! Why, yes) and then I learned about these things called 'databases' where you can search for things. Finally, no more text files for storage!

My dinky little router was rubbish, so I took an old PC and turned it into a router/gateway and that lead me to learn about networking.

I wanted it to be accessible from the web, so I had to learn about DNS.

Everything I learned allowed me to turn that forum into a continual learning experience where I slowly turned a script into an application and later platform.

So basically, one project turned into a learning thing and the learning thing became a goal in itself. That brought in some jobs that allowed me to learn and train on the job.

In a way, this sort of hodgepodge learning turned out to be a good thing, because I've had to touch on hardware, networking, DBA, programming. So a whole spectrum of problem solving that I doubt I would have had a chance to work on.

The most (pleasantly)frightening thing about learning is how quickly you realize how much more there is to learn. It's like firing a gun while riding atop a rocket and then trying to catch the bullet. Your goal will always going to be ahead of you.
That's a carricaturized view of it, from which I gather you haven't done much embedded programming. A subset of the (famously thin) standard library is quite sufficient.
You didn't address any of my points. Perl may have been horrible, line noise or a read only language, but 20 years ago was the quickest way to write a visitor book or a mailform. You could do it in C but didn't, just because you didn't need to. If the perl prototype was good enough, you could use it in production, and thousands of sites started to build whole e-commerce systems and found they worked.

Thad was a tipping point for the web, and the world now is different just because of that.

If you have to choose between power and easiness of development, most people will choose the later, and if I can try a new hardware board that doesn't force me to learn anything new, I'd probably try it.
And how about the hubris of my self of yesterday claiming the right to decide what my self of today should be spending time on? I need to write down things that need doing and can't be forgotten, but surely I am in a better position to decide what to do over the next hour now than I was yesterday.
I started as a 7 year old kid in the mid 80s learning BASIC, from type in programmes in magazines and from a few books. Though don't over estimate what I was capable of back then. It was mostly dozen line programmes that made cool patterns on the screen.

A gradually got better, and in the mid 90s as a teenagers I taught myself Assembly language, again from books and magazines.

And then as an Adult starting about 8 years ago, I started learning C, from a couple of books and lots of websites.
India has practically no social security as well. Your definition of "Rational" does not come into play.
Huboard Is Not Free Anymore
> I'm not sure what the solution to this and the main article's problem is, though, other than vigilance.

Generally, it helps to not rely on a single point of information. The more sources and viewpoins you consider, the more accurate the picture becomes. Even reading very biased sources can help you get a clearer picture when you intersect their information with a source from the "other" side. Also, as long as you speak only one language, you will miss out a lot as the media copy from each other and there often is bias in the language itself. For example, consider how different the meaning of "liberal" has become in English and German, even though it meant the same originally. Or consider the fact that Germans tend to use faecal terms to curse while in English, sexual terms are more common. This can subtly influence the way we think about things. Generally, the easier it is to express a viewpoint in a language, the more prevalent that viewpoint becomes. For example, before the term "political correctness" was added to the English language, it was much harder to comlain about it.

I diverted a little from the original point. Considering multiple sources in multiple languages helps a lot.
17yo here, started to program when I was 9 in c#, moved to C when I was 13 and then started using NodeJS slightly after it came out. All self taught, it helps a _lot_ if you have a project that you're passionate about that can give you that bit of motivation to keep learning. For the last year I've been bootstrapping my startup (in the infosec field, still stealth mode) and have been recently (~5mos) employed by a small yet global company as one of their main developers so I can earn a bit more money and experience until I can get my own stuff off the ground!
Works OK for me now. All in all, good post.
1. A close friend had gone to Berkeley to do an information masters - he was self taught and suggested I give it a try. I didn't like my job and when Google Glass was announced I decided to actually quit and find something part-time so I could study. Thus Codecademy, Lynda.com and then countless paper books after I got a taste for the whole thing. I did the Udacity CS101 MOOC as well, just because the lecture series of CS fundamentals seemed like a good idea.

I also found coding meetups in my city and bothered my friends who were professional developers with lots of questions. My friend at Berkeley in particular is definitely owed a few beers...

[edit] One of the most important things about the 'how' of learning to code is finding out that you enjoy it. If you don't have the gumption to put in late nights to fix things or study after your day job in the evening, then you won't see it through.

2. July 2012.

3. I did some freelance work from about six months in, but got a full-time job in June of this year.
Pretty nice. Good work! However, for a link browser only it's slightly expensive in my opinion.
So we should use unportable format strings or cast all the values to long long? Is that better?

I personally find inttypes format strings readable.
This is awesome! I actually was just thinking this earlier today looking at one of my profile pictures. I liked a particular photo a lot but it had bad resolution when magnified and I was wondering if it would be possible to make it high def through some software that automatically divided and colored in the pixels.

Although it's not the exact same, I'm sure this sort of software can be applied to restore old photos!
Self-taught, ran a game development company, now a happy Googler.

1) There was a ZX Spectrum at home, which booted to a BASIC interpreter. My dad taught me the basics (no pun intended) and I picked up the rest from experimentation and copying listings from Microhobby (http://www.microhobby.org/). Later moved on to gwbasic/QBasic/Quickbasic on the PC. I discovered C++ at 13 and I'm still trying to figure it out ;)

2) I was probably 4 or 5 - 1985/1986. My first documented "thing" is dated Sep 1986 (http://www.gabrielgambetta.com/img/1986-listado.jpg). At 10 I was making "games" (https://plus.google.com/110907875579750723363/posts/8RkT5K2K...)

3) I got a less-than-part-time job at 15, writing payroll software for a small real estate developer.

More details than you can possibly care about here: http://www.gabrielgambetta.com/about_me.html
> comparatively straightforward to pick up for any web developer that isn't familiar with them

compared to javascript.
really?
you think java is "easy to pick up" ?

I'm going to have to just say I disagree with you there. I don't like my chances of convincing you how silly that sounds. You seem to be operating on some very peculiar assumptions.
ستار اكاديمي 9 البرايم 2 
ستار اكاديمي 9 البرايم 2
I started coding at about 8-ish. QBasic, DOS, other basic stuff. My mom contemplated changing her career from marketing to programming and took some courses, but she had a completely different mindset — so in middle school I ended up helping her with Perl and C++. While Perl was just an ordinary syntax hell (especially after Visual Basic for me), C++ was a completely different beast. My mom was trying to understand every line that she was writing and do everything "the right way", but courses that she was taking didn't employ the best of teachers. They heavily relied on some magic code and "we always do it this way" explanations, so I had to figure out a lot of stuff on my own — it was actually pretty frustrating and confusing. I fear (often implicit) complexity of C++ to this day, and prefer to use something more "simple" and "safe" whenever possible. Around this time we also got Knuth books around the house, and I spent a lot of time trying to understand them. I don't think that I got much, but a lot of it stuff really stuck.

I successfully applied to a math-specialized high school (remnant of soviet special school system, was rated the best in the city and one of the best in the country at the time). The main thing that I learnt in three years there was that I was not, in fact, really smart — not compared to my classmates, anyway. Definitely not smart enough to be a mathematician. I did MIX emulator as a summer project in Delphi, but afterwards decided not to pursue a programming career, and go into bioengineering/bioinformatics instead.

Fast-forward 8 years. I dropped out of university (apparently, being math/physics geek with no interest in general biology isn't the best background to go into biological field) and became a game designer. Applied for a job, passed the interview and then made a career of constructing virtual worlds, later — social & mobile games with free2play monetization. I worked on some management, producer positions, and even started & failed my own offer-based monetization business in the process. But after a few dozens failed projects (fail rate is pretty high in gaming industry, but especially in this part of it) I kinda burned out and decided to change it again. I never stopped programming, and was following and fooling around with Unity3d engine since 2.6, so it wasn't hard to pass a coding interview in the same company I've been working on before. And here I am — coding for a living in the first time in my life for the last three months.

There's a lot to being a software engineer that programmers don't appreciate enough. I'm only responsible for whatever I myself do and have power over. I have clear goals & tasks. Arguments that I have are a lot more objective and much more rarely rely on "feelings" and estimates. I don't necessarily want to stay a programmer forever, but I learn a lot and I'm much more happier then before. And finally, I'm really surprised of how much I'm worth on the job market — being a software engineer almost feels like some kind of easy cheat code in life for a person with my mindset.
1) Totally self taught. When I first got online, I thought the concept of websites was really cool, viewed the source of the first page I knew existed (from an ad in magazine!), copied it and edited. There was only one HTML course worth reading at the time in my language and that's what got me started. Then another developer on IRC told me about PHP, then got into server administration and so on. By the time I got to uni I had some small commercial projects under my belt; University wasn't helpful, as most of the stuff we were taught was outdated, but I did learn to work in groups better.

Most of my basic programming knowledge came from PHP manual and the comments within.

Since then, a lot of my knowledge just comes from experience.. you learn by doing, something has gone wrong - Google it. Now that I'm working, when I'm desperate, I have peers to bother too, but prefer working it out myself.

2) 1999 at the age of 12 - that was just HTML/CSS at the time, got into PHP within a year or so, then more advanced JS / node.js / Ruby in the last 3 years of working professionally.

3) Got my first job not long after finishing University - 2010
University coursework always lags industry best practices, so this isn't really surprising. Furthermore, the South African industry requiring degree'd software engineers almost all still follow a strictly waterfall process, being mostly the defence industry following DO-178 processes. Other firms not in defence also mostly have fixed features / cost contracts they are developing for, which fits the waterfall model of development.
I liked the tool but I'm definitely not convinced by the pricing, especially considering the price point of competitors like Waffle.io (https://waffle.io/#pricing) or the greater usability of the upcoming ZenHub (https://www.zenhub.io/).

I'm a tad more disappointed about the recent change of license from MIT to aGPL (nastiest thing I've had to deal with in OSS).
More likely VisaCoin and MasterCoin.
IMotion - 3D motion controller with haptic feedback
> You have the assumption that "Talking to hardware" necessarily involves dealing directly with binary protocols.

I wouldn't say that it necessarily involves dealing directly with binary protocols, but the issue tends to come up. Particularly when talking with hardware that can't just easily be upgraded, you often find that even "text" based protocols might require some manipulation at the byte level in order to decode them successfully.

But really, the binary protocol aspect was just a really obvious and simple example of the larger "square peg, round hole" aspect of using JavaScript for the task. Maybe JavaScript makes working with hardware more accessible than other choices, but I doubt it.

> why wouldn't you do the binary protocol stuff in a C module and expose a nice easy api in the scripting language as is the usual practice?

I'd argue once you've done that, you're done. The hard part about the "internet of things" is that devices generally don't have a nice clean API's, and that's what needs to change.

Once you have a nice API, you can embed a JVM in their quite cheaply and then support almost any language web developers might want (including JavaScript), and quite cheaply and efficiently at that. Better still, just do a simple REST-ful interface and leave it to the developer to do whatever they want.
Self-Taught myself when I was around 14; Joined a CS course at 17; Am 24 now;

I started learning c/c++ because I found books lying around and found the compiler installed on my windows 98. I later fiddled with some HTML at school and picked up with CSS & JS to show off cool/pretty things. I tried building small games and php websites until I moved to college where I picked up backend development.

Once I got into college, I started taking up freelance projects as a hobby for extra cash. But a professional job didn't happen until I graduated.
Give me that dash on my Duc! - they also mention a HUD, scant on detail though.
Pricey but they are using some of the best brakes, forks and suspension the market has to offer, best of luck to these guys.
This is increasingly a false choice.

If you use node.js, you have both JavaScript and native modules.

Use JavaScript for the non performance critical parts, use C for the parts that touch the hardware, and leverage the great node ecosystem.
1) I read a book, a bunch of tutorials and then got a job where I was able to learn whilst working.

2) Around 2008-2009

3) The end of 2009
"Not a good cultural fit" always strikes me as similar to "gut feel". It's an itch that something isn't quite right without saying (or often knowing) what it is.

To me if you think that someone isn't a good cultural fit you need to dig around and work out what you mean by that. In most cases there's something there and it's not something you can realistically change, but in some cases you'll find something worth working on.

Not all problems can be solved, not all problems should be solved (companies often "stop people from doing the job" for good reasons - a company can't be all things to all people and what is right for person X may not be right for everyone else) but "not a good cultural fit" is a bad because it's not a specific problem anyone can address. At the very least if you're going to get rid of someone (or not employ someone) it seems fair to let them know why.

As an aside in the UK "not a good cultural fit" is also potentially going to get you into legal trouble because of the possibility that it's hiding racial or other discrimination (for instance if "not a good cultural fit" means "we all like to go drinking, you don't drink because of your faith so we're worried you won't fit" that could well be considered discrimination).
Ask HN: Non tech YC alumni?
Hey! Does anyone know of any non-tech firms that dod YC? They say that they are open to applications from non-tech firms, so thinking of giving it a go myself... but would love to see if there are other companies who've successfully applied and got on it!

Thanks!

Dave
You have a really incredibly weird definition of "quite cheaply" that I am not familiar with.
16-Year Old Arrested Over Spamhaus DDoS Attack
All self-taught. Expertise accreted gradually from the age of about 8. Learned ST Basic and GFA Basic from the manuals in the late 80s/early 90s, JavaScript from a library book in 1997, and Cocoa/Obj-C from a couple of books off Amazon, otherwise all picked up online, or from colleagues, or through learning-by-doing.

I tend to be a bit suspicious of people who've "been on a course" (short of having done a CS degree), since those people when I've worked with them often don't seem able to think like a developer, let alone write code.
> I believe any programming is self-taught

I think it is as self-taught as, say, carpentry, or playing an instrument.

That is to say, it is certainly possible to be excellent at what you do by putting in the hours, and you don't need anyone to achieve that, but it is wrong to think that only you can teach yourself. Learning from others can definitely accelerate your development.
The content was good though which after all is the main thing...