hacker news with inline top comments    .. more ..    30 Nov 2014 Ask
home   ask   best   5 years ago   
Ask HN: What are your favorite scholarly papers? Why?
43 points by danielhughes  3 hours ago   38 comments top 24
koddsson 0 minutes ago 0 replies      
Joe Armstrong 2003, "Making reliable distributed systems in the presence of software errors" https://www.sics.se/~joe/thesis/armstrong_thesis_2003.pdf
agopinath 4 minutes ago 0 replies      
Quantum random number generation on a mobile phone (2014)[1]

A topic which seems at first rather obscure overlaps with something relatable to yield a fascinating result. The blog post [2] was especially enticing for non-specialists like myself.

1. http://arxiv.org/abs/1405.0435

2. https://medium.com/the-physics-arxiv-blog/quantum-random-num...

alphaBetaGamma 37 minutes ago 0 replies      
Watson, James D., and Francis HC Crick. "Molecular structure of nucleic acids." Nature 171.4356 (1953): 737-738.


Partly because of the fundamental importance of the paper, elucidating the structure of DNA; partly for the wonderfully understated third to last paragraph: "It has not escaped our notice that the specific pairing we have postulated immediately suggests a possible copying mechanism for the genetic material."

avinashv 2 hours ago 3 replies      
Claude Shannon 1948, "A Mathematical Theory of Communication"http://en.wikipedia.org/wiki/A_Mathematical_Theory_of_Commun...

This paper kickstarted the concept of information theory, and was hugely influential on many fields of research. Signal-to-noise ratio, the bit, information entropy, etc. are all theories and concepts presented by Shannon.

hchenji 8 minutes ago 0 replies      
Not tech related, but this paper on an urban movement in India: "Urban Upheaval in India: The 1974 Nav Nirman Riots in Gujarat"

It gives insight into the nexus between politics and student unions/student bodies in India. It reads more like a story than a scholarly article.


alphaBetaGamma 24 minutes ago 0 replies      
Einstein, Albert. "On the electrodynamics of moving bodies." Annalen der Physik 17.891 (1905): 50.


This paper establishes special relativity, and is remarquable for how clear it is, revolutionizing physics while using only elementary math. The first "Kinematical" part in particular does not use anything more complex mathematically than Pythagorus theorem. It is so clear that the explanations and though experiments are reproduced in all textbooks to this day; the only change is that textbooks include diagrams.

dikek 1 hour ago 1 reply      
Not tech related but...

Uncertainty and the Welfare Economics of Medical Care by Kenneth Arrow (1963) [1].

This paper effectively makes the case that medical care shouldn't be treated like other goods.

If you're remotely interested in health econ/health industry, I recommend reading it.

1. https://www.aeaweb.org/aer/top20/53.5.941-973.pdf

EthanHeilman 2 hours ago 1 reply      
Stephen Jay Gould and Richard C. Lewontin, 1979 "The spandrels of San Marco and the Panglossian paradigm: a critique of the adaptationist programme"

Some biologists may cringe (especially the Gould haters), but I don't think I've ever been so engrossed by any other scholarly paper. It is a joy to read. Very approachable for non-biologists. The papers critique of sloppy "just so" reasoning, could easily be extended to Data Scientists/Engineers/Entrepreneurs. Highly recommend!

chromejs10 3 hours ago 0 replies      
The papers published on the Google File System (GFS) and Map Reduce are still some of my all time favorite papers. It gives really good inside into how GFS/Map Reduce was built, but explains it in a very straight forward way. We actually implemented an in memory version of GFS/MapReduce in my graduate operating systems class. It remains as one of my favorite projects I've ever done.



bdcs 2 hours ago 1 reply      
In the vain of generally appreciated papers, I really like "Whitesides' Group: Writing a Paper" by George Whitesides[0][1]. It gives a strategy for collaborating research based on using a paper as a living document. It seems like a lot of work, but it saves untold days in the long run. This is the first paper I give anyone I mentor.

There have been derivative works on giving presentations, that I also particularly like: Editorial: Effective PresentationsA Must. [2]

[0] In case you don't know of him: he is the most cited living chemist, or something to this effect

[1] http://onlinelibrary.wiley.com/doi/10.1002/adma.200400767/ab...

[2] http://onlinelibrary.wiley.com/doi/10.1002/anie.201209795/ab...

hnnewguy 1 hour ago 1 reply      
As an economics undergraduate, Paul Krugman's paper on The Theory of Interstellar Trade was a must read, exclusively for its light-heartedness:


(12 pages, quick read)

cmrx64 2 hours ago 0 replies      
William P. Thurston 1994, "On proof and progress in mathematics"

Gives a good amount of insight into how academia works for mathematics, and gives a good contrast with how CS works. Don't be scared by the abstract, it's a completely non-technical paper. The academic/research culture can be more important than the results.


damurdock 1 hour ago 0 replies      
Since someone already posted "Spandrels", I'll go with "How Not to be a Bioinformatician" by Manuel Corpas, Segun Fatumo, and Reinhard Schneider[0]. It's a humorous takedown of very common problems in Bioinformatics. I think the point comes across better when you say "if you do X, you are doing poorly" versus "don't do X if you want to do well". Plus, it's a little cathartic.

[0] http://www.scfbm.org/content/7/1/3

stonogo 1 hour ago 0 replies      
"On the Relative Motion of the Earth and the Luminiferous Ether" (https://www.aip.org/history/gap/PDF/michelson.pdf)

This paper achieves a wonderful balance between being incredibly important and almost absurdly easy to read and understand.

SoftwareMaven 1 hour ago 0 replies      
Perhaps not quite what the OP had in mind, but I found the papers that affected my life the most were not in my chosen profession.

Comparison of the Atkins, Zone, Ornish, and LEARN Diets for Change in Weight and Related Risk Factors Among Overweight Premenopausal Women[1] and Low-carbohydrate nutrition and metabolism[2]. After spending most of my life obese, even after having bariatric surgery to "correct" it, I found I had to dive into the science on my own to see past the charlatans and the demagogues. These two papers lit the way for me.

1. http://jama.jamanetwork.com/article.aspx?articleid=205916

2. http://ajcn.nutrition.org/content/86/2/276.full

DenisM 2 hours ago 1 reply      
Optimistic Replication - YASUSHI SAITO & MARC SHAPIRO, 2005http://pagesperso-systeme.lip6.fr/Marc.Shapiro/papers/Optimi...

Why: RPC and its ilk make a lousy model for mobile data, since mobile devices are only occasionally connected, not permanently. Similarly, in the face network and server failures, servers can be modeled as occasionally connected as well. The "replication" mindset is far more productive when dealing with those issues. The linked paper gives a broad overview of a great number of approaches to replication, and is a great way to get the lay of the land.

jasoncrawford 1 hour ago 0 replies      
The Mundanity of Excellence: http://lillyfellows.org/Portals/0/Chambliss-Mundanity%20of%2...

A study of competitive swimmers and what separates the mediocre from the great, but widely applicable to many forms of excellence or greatness.

aaron695 1 hour ago 0 replies      
"Thirty years of research on race differences in cognitive ability" http://psychology.uwo.ca/faculty/rushtonpdfs/PPPL1.pdf

It made me realise how political science can be and how facts on large issues can be covered up for political reasons.

lbradstreet 1 hour ago 0 replies      
I'm not going to mention a specific paper, but Papers We Love (https://github.com/papers-we-love/papers-we-love) has some good stuff on it, and the meetups have always been interesting (at least for my local chapter).
rgacote 1 hour ago 1 reply      
"The Letter S" by Donald E. Knuth. An entire paper on the typographical design of the letter S and variants based on type size and other attributes. An elegant paper on a single letter:


jMyles 1 hour ago 0 replies      
Some of the trippiest math I've ever seen. I sat with one of the authors while he wrote pecked out parts of his contribution. Smoking a bong. He's 83.

Completely dissociative groupoids. http://mb.math.cas.cz/mb137-1/6.html

0xdeadbeefbabe 2 hours ago 1 reply      
"Suppose it is the 1890s. Artificial flight is theglamor subject in science, engineering, and venturecapital circles." -Intelligence without representation by Rodney Brooks http://people.csail.mit.edu/brooks/papers/representation.pdf

It's accessible, and it's a good intro to thinking about AI. The field oughta be called even more nifty algorithms.

Naga 2 hours ago 1 reply      
For something completely different, Amelia Rauser, "The Butcher-Kissing Dutchess of Devonshire: Between Caricature and Allegory in 1784." Eighteenth-Century Studies 36 (Fall 2002): 23-47.
exratione 1 hour ago 0 replies      
If we define favorite as most often reached for in reference to present discussions, then probably this. People are persistently surprised by the expected results of cumulative gains in all areas of life, here also:


"Those who get first-generation therapies only just in time will in fact be unlikely to live more than 2030 years more than their parents, because they will spend many frail years with a short remaining life expectancy (i.e., a high risk of imminent death), whereas those only a little younger will never get that frail and will spend rather few years even in biological middle age. Quantitatively, what this means is that if a 10% per year decline of mortality rates at all ages is achieved and sustained indefinitely, then the first 1000-year-old is probably only 510 years younger than the first 150-year-old."

Ask HN: I've learned a programming language how do I solve problems with code?
181 points by bnb  1 day ago   98 comments top 70
ChuckMcM 1 day ago 2 replies      
Excellent question for a Friday. Coding is like welding, how do you find two pieces of metal that need to be joined? Generally the answer is visualize something that could exist, but does not exist, and then fill in the parts that need to be there for it to exist.

What you need at this point are a series of assignments which are self-contained problems with known solutions. The assignment 'create a web server that displays "Hello World"' is an example of one.

Here are some more:

Create a web site that allows a person to identify what would be an 'affordable' mortgage. (or flip it, shows them how much they need to save each month in order to retire). These are both applications of the compound interest / annuity calculation, but built in such a way that you can pick different parameters to see the results. Pick an interest rate, or pick a home value or retirement amount.

The goal of that assignment is to have you create a web site which has a built in formula (logic) which can be manipulated by user entered data.

Next assignment, build a web site that collects data about a particular commodity that changes day to day (could be a stock price, could be oil, unemployment, could be Eve online credits, what ever), then plots that data on a graph. Allow the user to annotate the graph by date with specific events. You will find the d3 library helpful here. Once annotated allow the annotated graph to be shared by URI.

The goal of that assignment is to get you to store data over time, use third party APIs, and provide a way of getting to a particular state based on arguments in a URI.

Now for third assignment, create a market site for three commodities, we'll call them 'stone', 'wood', and 'sheep'. Have a system random number generator periodically generate one or more units of one or more commodities. Simultaneously create a Sudoko board such that the first player to solve the puzzle gets the commodities. In the Market people can buy and sell commodities, the market creates a currency for recording those transactions. Players with a specific quantity of individual commodities can produce a 'product' and that product adds to their 'production' score. Rank all players by the quantity of currency in their account and their production score.

The goal of that assignment is to create a fun market simulation game that echoes some of Settlers of Catan and gives you something fun to put into a Show HN posting.

Bottom line, practice problems. Then when you, or someone you know says, I'm trying to do this ... you can tell them you can do it or not.

mulander 1 day ago 3 replies      
Hi bnb,

I started programming around 20 years ago - self taught and experiencing the same problems as you in the early beginnings.

I made mistakes when I started

- jumping around between languages

- thinking I couldn't grasp something

- jumping from one tutorial to another, and another, and another

- I wish I started learning algorithms & data structures earlier

- I wish I took time to dive deep instead of rushing to getting something working

What was my breakthrough?

I got a job in social assistance - it was mostly sitting at a desk and distributing food supplies. This left me with most of the day unfilled with errands and a PC in front of me. I installed Perl on it and started learning, digging deep into every bit of the language.

- Learning how the interpreter works

- Reading the perldoc for every module I used, every function I called

- Writing small scripts to help with my then daily tasks

- Writing code every day, even for stupid one off tasks or things I wanted to try

Three months later I got my first job as a Perl programmer - mostly doing web interfaces, marketing mailers & web scrapers.Having learned Perl to the level when the language itself wasn't getting in my way it was far easier to grasp additional concepts:

- programming paradigms

- algorithms & data structures

- abstraction

- documentation & good practices (version control, testing etc.)

This was a major stepping stone for me. Picking up any other programming language, framework was a breeze since then.I worked at a corporation doing Oracle PL/SQL for seven years. I programmed in Ada, Ruby, Perl, Python & JavaScript professionally in long term employment. I did contract work for C, C++, Java. I played with Common Lisp, Scheme, Prolog, Erlang & Smalltalk (mostly when I was hospitalized for a long period of time) and now I'm working with a start-up I co-founded where I'm doing Python, Ruby, Javascript, C, Go and recently some Dart.

Don't let anyone tell you that you're limited in any way - most of all don't think it yourself. The only limitation is what you want to achieve.

Recently I got really interested in OpenBSD and would really want to be involved in OpenBSD development.

Here's how I'm tackling this specific problem now with hindsights to the mistakes I made when starting as a programmer.

1) Pick one project

This is OpenBSD in my case - should be a heavily developed framework, library, application in your case.

I ignore all the OpenBSD vs X articles, post whatever. I made my choice.

2) Follow it

Subscribe to the mailing lists, join the IRC channel - consume news & changes about the project.

Don't feel bad when you can't keep up! 20 emails per day? Try to read a few of them and leave the rest for later - just keep at it.

3) Follow the code

Take a look at each code change made to the project, try to understand it even if it's over your head.

4) Run it!

Changes were made? Pull them in, run them.

5) Poke around

Try introducing your own changes. Hit a bug? Try to trace it down as much as you can & fix it. If you can't fix it, report it upstream.

6) Make your own

You want it to do more? Add it, or at least give it a good try.

Don't know how? Still try! Even if you just end up breaking stuff you will learn!

7) Rinse & repeat

Until you feel confident enough to go in on your own - though you rarely are completely on your own. Don't be afraid to ask for guidance & help. Just remember that it's always nicer to show people that you tried on your own (and documenting that) before going public with a help request.

So this was a wall of text, hope it helps you at least a little bit :)

I mostly work from home on my own schedule so can devote a few hours spread out throughout the day. If you really want to learn and need a helping hand in the early steps or someone to bump ideas against feel free to catch me on freenode @ #hncode.

jastanton 1 day ago 1 reply      
There are a lot of good answers here. What launched me into development when I didn't even know to program (so one step behind you) was that I found a problem I had personally had and looked for a way that could solved it. It turned out it was programming. The reason this was so effective was I was already passionate about the problem before I even knew what programming was. Then I discovered programming was the right approach, so I learned the tools to get the job done, then iterated.

That _passion_ was a HUGE motivator, in fact i didn't even like programming really was when I solved the problem, but I liked the result. I realized later how many problems could be solved that programming was the tool for the job so I eventually learned to program. But that came after I found the problems I was passionate about.

I find later that this approach was very fulfilling and now I am reading heavy textbooks and doing jobs I thought I would NEVER do because I really like solving problems. But I never could have seen myself doing this 10 years ago.

Now you're follow up question might be, how do I find my passion for this tool I have. Doesn't that now feel like an awkward question? I have a tool, I don't know why I have it, but I want to use it on something. There must have been some reason why you learned how to use this tool. What made you say "wow, how was this done?", or "I wish I could just do X" Try to recreate whatever it was that made you first look up "how to learn javascript programming" in google. If you are still stuck, then you might take to some of these other answers. Browse github, visualize something that could exist and work backwards, read other peoples code etc... but where all of them will fall short and where I suggest you take with yourself is that nothing will kick you on the curb harder then doing something that you're not passionate about.

The number of times I quit a program half way through because I lost the passion was A LOT! I felt miserable about programming for years. I thought I didn't have what it takes and beat myself up about it a lot. I was admittedly ambitious. Some things that could have helped:

* Smaller problems. Something you may not be able to control.

* Breaking your goals up into smaller chunks so you get rewards often.

* Working with someone else. Think of it like a running buddy, or a workout buddy.

* Being forced to do it. Get a job in programming, if someone realizes on you, and you feel that heat under your butt you'll probably end up doing it even if you loose the passion temporarily, though you should stop if you never get the passion back, but give it some time.

* Teach someone. You learn very quickly if you try to teach someone else. Especially if you try to force your brain to think of ways to find your passion. It's a good chance it will spark some passion into yourself as well.

Good luck, I hope something I said helped spark something in you and I hope you can find your passion! Or learn that this passion isn't for you. Someone once said that programming is 90% frustration and 10% elation. That gets you through that 90% my argument here is your passion to solve the issue. If you have no passion that 90% is going to be hell. But stick with it because it will take time! Good Luck!

PeterWhittaker 1 day ago 1 reply      
Don't start by trying to solve a problem. That way lies madness.

(The problem is that your mind, your approach, needs to change, and that change comes with practice and time. And practice always starts with the simple, the controlled, the repeatable, not the full fury of all skills brought together in a high pressure win-or-lose moment.)

Computers are nothing more than repetition machines. Start by writing code to do things that you yourself now do multiple times per unit time.

Start small. Simple things. Let the computer handle the repetition for you, no matter how simplistic and rude and hacky your solution.

Then notice how program A and program B, written to repeat different procedures, have similar processes or structures.

Generalize A and B to make a C that does both.

Do this again for other processes. Over time, your approach will shift. You will notice patterns: Patterns of process, patterns of structure, patterns of relation.

Then you will start solving problems. Only afterwards will you realize you have done so.

(I started coding shell scripts for anything I had to do more than twice - or anything that required "too many characters". I got tired of typing "ls -alt *|head" so I wrote nwst to do it for me. Then I added a numeric option to nwst to control how much head wrote. I got tired of writing "find . -iname" so I wrote fndi. Etc. Etc.)

karangoeluw 1 day ago 0 replies      
That is exactly why I made this collection of problems: https://github.com/karan/Projects

> A list of practical projects that anyone can solve in any programming language. These projects are divided in multiple categories, and each category has its own folder.

Feel free to also look at other people's solutions (many in JS): https://github.com/thekarangoel/Projects-Solutions

S_A_P 16 hours ago 0 replies      
One of the best quotes I've heard about programming was from an old C++ developer I knew- "the best way to learn how to program is to start 10 years ago"

The fact you are asking this question is a great sign. This is a key skill that is overlooked in technical hiring and by many development blogs trying to qualify what makes a "good" programmer. Problem abstraction is a huge part of software development. I work in enterprise development around a very specific niche of oil and gas. (ETRM) the "programming" I do amounts to little more than reading and writing to a database. The tricky part is modeling a business process and breaking it down into manageable units of work. For what I (and probably most developers) do, language is just syntax to know and interchangeable.

In my experience, programming is a series of learning curves and plateaus. A lot of what I know just comes from experience. The best way to learn is to program. You will eventually see patterns in the types of problems you see and know the general approach to solving it even if you don't have the exact answer.

richardknop 1 day ago 0 replies      
Most people have already given you a very good advice.

I can tell you what I did many years ago. When I learned my first programming language, I decided to create my own CMS. I was still in high school, around 15-16 years old so it was just a fun project for me.

Imagine a simple version of a Wordpress. An admin area where you can add new posts and tag them. And an index page where the posts are displayed in a descending order with a pagination.

This will teach you basic ideas about how to store data in a database, how to work with forms etc, how to retrieve the data from the database and display them in a structured way (templates).

Ok, let's make it little bit more challenging. users can click on individual posts and add comments. Once I got my hands dirty and created something simple, I started adding more functionality to satisfy my newly acquired thirst for knowledge.

Each new problem I solved, no matter how trivial, motivated me to go t a next level and learn more.

Let's say users have to register in order to post comments. This will learn you how to create a basic authentication system, how sessions and cookies work, how to safely store passwords in the database, maybe add your own custom catcha element on top of it.

Next, I moved on to a new feature. I wanted to be able to upload pictures from the admin area and be able to insert them inside posts. Images should also be resized into multiple sizes (thumbnail, full size etc).

You can see that what started as a very simple project can actually grow more and more complex and you can learn a lot.

After I finished my CMS, I went on to a new project, I wanted to created my own text editor and a simple image editor (imagine MS Paint). Did both of those and again learned a lot.

After that, I went even deeper and created a fairly complex social network from scratch. Although this was the first piece of code in my life I got actually paid for so it probably doesn't count.

What I am trying to say is that you should go and get your hands dirty. It might seem like reinventing the wheel (because it is reinventing the wheel) but it is perfect for learning how to actually do something useful with code. It teaches you about data structures and algorithms.

You will probably laugh at your first creations in couple of years but they will be very important in making you an actual software engineer down the line.

j-rom 1 day ago 0 replies      
Find a problem first. Then try to implement a solution using your language of choice (Node in this case). An example could be: "I want to create a service that parses books and lists the most frequently words used. A step further would be to have the user enter a longer piece of text and analyzes it (http://www.online-utility.org/text/analyzer.jsp)"

Another example is "I want to create a service that auto-corrects text that users enter."

Try to find something that would make your own life easier. Chances are that other people are having the same problem.

Shameless plug. Hopefully you get some ideas out of it: http://jairampatel.com/projects.html

jamessteininger 1 day ago 0 replies      
Start. Jump in head first. Before you're ready.

I made my first video game when I was 13 years old. I made it because I wanted to make something for a girl I liked. I used Macromedia Flash, learned as I went along, and never lost site of the goal. I had to impress this girl.

Sometimes we are inspired by technology to do things. The reason an engineer might give to building something bizarre: "I'm building this because I can." I think it's better to have the goal in mind first, though of course we may only think of solutions to problems because we also understand the tools we have available to us.

It's easy to solve a problem with programming once you know what problem you want to solve. I don't think anything great is made when you try to come up with a product based purely on technology. It's great that you learned JavaScript, I happen to think programming is a blast! And learning new tools, languages, frameworks, or paradigms are always great for the left side of my brain. But programming has always been the most fun, most rewarding, and easiest when I'm deep into solving a problem. The "how" is straightforward: you Google the error message, you Google the 'how to perform X function with Y language on Z platform', you ask friends and family to test and break your likely fragile baby, you build a business, et cetera.

Try to solve an issue you have. Try to solve someone else's issue. Try to solve an issue many people have. Or, browse GitHub.com, and work on another person's solution.

Did the girl I made that game for ever go out with me? No. But it didn't matter.

I got started.

hnnewguy 1 day ago 2 replies      
>How do I learn that?

I had (have?) the same issue. Maybe it's something that experienced programmers take for granted; there is a huge disconnect between writing code and developing software.

I've asked the same question, and received the same answer: get your hands dirty. I agree with the premise, and am working on it. But there's the disconnect. I can write a little Python, but have you ever tried to set up a Python development environment on your computer? I don't understand 95% of what is required.

All that said, I'm way ahead of where I was when I started, a year or so ago. I'll keep plugging away, and recommend doing the same. Hopefully we see a few good replies here to help us out.

aercolino 10 hours ago 0 replies      
A nice thing about "hello world" applications is that you can always use them as the starting point for any other.

The first step forward would be to change it from "hello world" to "hello {{name}}" and have the user input their name and the application show a custom hello.

Having this minimal input / output, now you can invest some time to make your app secure. This will teach you a lot.

Then you should feel ready to allow users to register, log in, and log out. This will teach you DB stuff and a lot more about security.

Then you should feel ready to allow users to add a profile with an uploaded picture. This will teach you about sophisticated UI issues, and even more security.

Then, except for scalability, machine learning and a few other special but mainstream technologies, I think you should feel ready to learn anything else.

aniketpant 17 hours ago 0 replies      
I started development actively in 2010. At that time I was in my first year of college doing Mechanical Engineering which I didn't grasp really well. So, I ended up putting all my time into development.

The first thing I built was a small website which was a music catalogue. When I think about it now, it seems utterly pathetic but it was the first thing I ever built. Later on, I got into WordPress and spent a lot of my time picking up PHP and writing new themes. This was an enlightening experience as I picked up a lot of plugin writing practices and I ended up being invited to a few WordCamps.

In the coming years, I learnt a good deal of JavaScript and was working with PHP frameworks to write a lot of admin interfaces for my own projects and some tools for my college's software development team.

In the last one year, I picked up Ruby and wrote a few tiny gems.

With this much experience, I have been able to port code from most of the languages I have encountered to all the languages I know.

Currently, I work at a company where I write a lot of PHP, SQL queries, a lot of front-end and all of us are expected to be full-stack.

My only advice to you would be:

1. Start slow. Try to spend a lot of time learning from other people's code and attempt to imitate a lot of code which is already out there. Solve the same problem many other's have done and trust me that you will learn a lot more from it.

2. Why don't you start a blog? You can start with a blogging system in the beginning and maybe later you can write your own.

3. When you say:

> "But I don't know how to make a site with logic and structure behind it that will lend itself to solid functionality that users can benefit from."

My answer would be, "If you can solve a problem for yourself, then there is bound to be a person who is benefit from it."

Good luck to you.

chipsy 1 day ago 0 replies      
The computer is an automation tool. When you write code, it is serving the purpose of automating a specified and designed process. The things you write in the program to make the automation happen only have to be as complex as is actually necessary for that task.

First, have a good problem to solve. This is your design - developing your sensibility for it is somewhat independent of your coding skill. For your own project designs you should always prioritize your own motivations first, because there is nobody you are directly obligated to finish for. If you don't do this finishing will become very hard. Find problems people have already solved and reinvent their wheels so that you learn more about the problem domain. (e.g. if you want to learn how Facebook works, clone parts of Facebook - if you want to learn how operating systems work, build a toy OS, etc.) Or, find clients who seem to know what they want(nobody really knows - the design will change) and build things for them, on their terms, in a way which will get you paid so that you have the obligation to finish.

A good problem should be either obvious and a bit boring on the surface(an everyday thing made easier, more available, more accessible), or scary(a technical problem that you are not immediately sure how to solve, or are not sure how long it will take to solve). Usually projects start out looking like the former and then develop parts of the latter as you go along, forcing you to "plateau" on new features as you build out the infrastructure. You can also slice up a project into defined versions with incrementally larger sets of features so that your expectations for "done" are managed - if you don't get to some things, you still have a practically useful program.

Then, start working on it in small steps. Maybe you aren't sure how to envision the whole problem. In that case, you can simplify it by reducing the problem into a bunch of facades that are intentionally incomplete. Maybe you want to render a page that shows tables of data, for example. You can start by building up a facade for the presentation layer and see what kinds of data will have to be passed in to make the presentation work. Then you can mirror this at the other end and only solve the problem of "how to store and process the data." Then you figure out a protocol for making the two parts communicate. If you design each part so that it is simple to rewrite, the code will be maintainable regardless of your techniques or technologies, because then you can rewrite your way out of any corner you get painted into.

fsloth 1 day ago 0 replies      
The answer will be 'write code'.

This will teach you a lot of things... I can try to come up with a short list of what I've observed of my own development as a programmer.

You will recurrently come up with particular patterns, you start to identify which approaches will work, which will be dead ends and so on.

Try to separate your understanding and model of a problem to at least data, model and view domains. You will have certain data - you should keep this as simple as can be for the problem you are solving. There will be the model - how is the data mutated, which rules will guide it - and there will be a one or more view to this model and data. Note, that as a pattern the view encompasses both the possibility of an API to your system, as well as the actual display of data.

Try to keep you code as simple as can be. Don't go for the more complex solution unless you know you really need it.

'Pragmatic programmer' and 'code complete 2' are pretty good books about software development in general.

I would suggest you figure out what interests you and then try to implement simple programs in that domain. If something feels too complex, then first try a simplified version... more simplified etc. until you understand how to solve it.

One of the best knacks to learn is how to approach something from a direction which makes the problem easier to solve. There are usually an infinite amount of ways to write something and the challenge is not to just start writing code but actually figuring out which solution method leads to the most understandable and easy solution.

I would suggest you familiarize yourself with the practically important datastructures: the list, the binary tree, the map and the graph, etc. "Algorithm design manual" is a pretty good book for this. Aho's foundations of computer science is a pretty solid and free reference: http://infolab.stanford.edu/~ullman/focs.html

It's probably most motivating to mix the computer science with practical exercises unless you find you get a great kick out of it.

Good luck!

sajonara 1 day ago 0 replies      
Just DO! ;) That's why it is named "learning by doing".

No offence: Programming is not worth a dime if you don't have a problem to solve yourself. And either you are the kind of lemming who sits and waits that someone presents you a problem you should solve for him or her or you are as creative to create your own problems as creating problems is a very creative process.

For example take a website. Let's suppose you are using a popular blog system. Then... what? Well you see a spectacular gallery on a site X. You want to have that on your site too. Then sit down, take notes and think over what you need. All you write down is more or less your algorithm (logic). You could do it with database support or without, you could use a JS lightbox or you could do your own. I remember doing my first coding. The example in the book was a basic text editor. So what did I do? I expanded the thing, so I added feature after feature I found very useful. :)

Another example with your blog and an API? Let's say you would like to visualise your data. Get the proper js library and try to connect it with your data. How could you do it? You could use csv files with a cloud space like Dropbox or Google Drive.

At least the problem is what you think of it. There are a lot of problems or none. Noone could tell you what "your" problems should be.

If you get past JS you could use Rails, Python, PHP and code your very own content management system (recurring to Codecademy and CodeSchool's content). Or you could write an app, which aggregates all the news channels you like by storing all rss feed entries, all tweets all Facebook postings by the channels you chose.

Skywing 23 hours ago 0 replies      
A lot of explanations here about how other people learned to use programming as a tool for themselves, but everybody is different. One person's analogy for using code might not work for you. You have to discover what works for you on your own. Sure, keep the other analogies and things in mind, and ask yourself if you can relate, as you progress through your own journey. Everything is relative though, and your experiences are what make you unique and valuable to the community as a whole. Maybe you're the next Bob Ross of JavaScript - we want you to be. So, don't aim to mimic somebody else's experiences because that'd just be an injustice and it'd also take away from what makes this journey so rewarding. I suggest just visualizing some end goal of yours. You want to make a website that offers some kind of service of something? Visualize that site and break it down into chunks. Finally, dive in head first. Just start coding on it. Don't give a single thought to whether or not it's as good as somebody else's code. Don't worry about if it's the best it could be, yet. All you need to do is connect the dots, mentally, and play with the legos. Focus on hacking together something that, in the end, resembles that mental picture you had. Once you're there, a large portion of your original question will have pretty much been answered - you'll have use code to solve some problem. All that remains is to figure out how to improve. That's all any of us are doing - trying to improve.
samzhao 1 day ago 0 replies      
I think what your question implies is this: "I learned how to write Javascript in a black box where I'm not solving real world problems, and instead just learned how to print static text."

Programming, like anything, is a tool - you learn the features which might not sound like solutions to problems, and with practice you start crossing your programming mind with normal day to day mind. Let me give you an example.

I got the mega Creative Market Black Friday Photos bundle yesterday. To my surprise, the photos are all separate, so instead of one zip file for me to download, or a "Download All" button, it gave me a list of 100 or so buttons to click to download INDIVIDUALLY. Conveniently (or not), they added a "Save to Dropbox" button to each item, but that doesn't help at all, there's still no "Save all to Dropbox" button.

So after clicking on 5 or 6 items... I started to give up, then suddenly my programming mind jumped in and said to me "hey dude why don't just go into the console and select all the elements and do a `trigger('click')`?" So I jumped into the console, and typed


I didn't even bother to check if the site uses jQuery, I just typed it in and it worked!

Now, if you were to jump in and helped them add a "Sync All to Dropbox" button, don't you think that's gonna be really beneficial to a lot of the users?

You might have learned the feature in jQuery to trigger an action, but to actually do something with it to solve a problem you need to not only learn the tools, but also start thinking about problems using your programmer brain.

coldtea 16 hours ago 0 replies      
>Well, I can write code, sure. But I don't know how to _solve problems_ with it. I know how to create a webserver in Node that echos "Hello, World!" because I've done it a thousand times. But I don't know how to make a site with logic and structure behind it that will lend itself to solid functionality that users can benefit from.

Well, first think of a site. Something that's not "hello world", but it's not Gmail or Facebook either. Something simple.

E.g. create a site were a user can log in, write notes, and save them.

That can be the start -- it's a real problem (not novel, but real) and it teaches you how to move forward from hello world.

Then you can add to it:- Auto-save the notes as the user writes.- Let the user write notes in a rich text editor.- Let the user share his notes with other users. - Let the user mail the notes.- ...

thehoneybadger 1 day ago 0 replies      
The question is a bit open ended, so here are a few thoughts. Programming involves learning by doing. Just start on something. Perfection is the enemy of the good. Your first real attempt won't be perfect. In fact it will be downright terrible. Set your expectations accordingly and do not let this prevent you from getting started. It will also never be finished. Do not let the scope of the project prevent you from getting started. In fact you might even be bad at estimating the amount of time it will take. Ignore those fears and confusion and just start. Channel your weekend warrior instinct. Sit down on a Friday and just start typing stuff.

Start with an idea, a problem. It really helps when the problem is personal. What do you hate? What annoys you? The text editor you use? Some little feature of JS that the makers of the language seemed to have forgotten about (how could they!)? Some website that just looks wrong to you? The todo list that doesn't work the way you want? Just think of something that doesn't quite work the way you want, a void, and then try to fill it. Just start and get in over your head. Do some spying on how others solved it (preferably only if you really get stuck, or once you made substantial progress). Maybe you can solve it better? Gotta dog food it. I find dogfooding a solution to a personal annoyance is what keeps you progressing towards a finish line.

If your asking about, say, the idea of website design, and the typical systems that make up sites (the software stack), just start reading about website design. Make a dumb website. Make a blog. Make a family photo album. Basically, start, and then figure out what you don't know, and then figure out what you need to know to proceed. It is an iterative learning process of realizing all the things you do not know and calmly tackling them. For some, this is the best part, the adding of another tool to the toolkit, the unearthing of some common pattern among the tools.

rlearner 1 day ago 0 replies      
As others have mentioned, you need to practice solving problems with increasing complexity. You can try Project Euler which has lot of mathematical/computer programming problems. https://projecteuler.net/problems

You can also try daily programmer subreddithttp://www.reddit.com/r/dailyprogrammer

If you want to practice with Bioinformatics problems:http://rosalind.info/problems/list-view/

exDM69 18 hours ago 0 replies      
Project ideas will come to you at some point. Meanwhile, while you're practicing, start making small projects that you know you can finish in a few days, but there's something new to you in it.

I learned by doing games, can't go wrong with that: Minesweeper, Poker/Blackjack (or any card game, implementing the rules of a complex card game is very educational), Tetris, Connect Four, etc. These are not unique projects and won't make you rich but keep on doing them one per week or so until you get a grasp of what you're doing. Just make sure you can and will finish your projects.

Small projects like that are also a very good way to fill your portfolio for your first entry level job. It's no substitute for a good CV but will certainly get the foot between the door compared to someone who doesn't have any work samples to show.

akwebb1 1 day ago 0 replies      
Remember, programming languages are a tool and problem solving is a skill. Learn data structures and algorithms. There are plenty of good books and websites out there on those topics. Once you have a basic understanding of those you can learn to apply your language of choice to implement solutions to problems. Next, find problem and solve. Also, some languages lend themselves to solving certain problems better than others. Don't limit yourself to one language. Once you have the knowledge of one language you are only a different syntax away from the next. Logic does not change, problems do.
i4i 21 hours ago 0 replies      
I'm in the same boat and it's so frustrating I've simply given up caring whether or not I actually ever make anything. I did Udacity CS101, (253 was a nightmare), every single Codecademy track, Ruby Koans, Ruby Monk, Learn Python The Hard Way, Command Line the Hard Way, and the Ruby on Rails Tutorial. That's a couple of years of daily practice. There's no shortage of projects I want to make or actual problems I'd like to solve. I kept hoping I'd run across something that was close enough to what I actually want to do, that I could bend it to my will. Here's what I think would work: Using Michael Hartl's Ruby on Rails Tutorial as a model, add 10 projects that increment in complexity between 'Hello World' and the Twitter clone.

I assumed that smart people who code would be able to solve the problem of teaching eager minds how to make stuff with code. I was wrong!

aspl 1 day ago 0 replies      
Try make something that interests you, see how you would go around implementing it. If you're stuck with a feature, google it. Then see how you did against the "proper" way of doing something, and maybe adapt your code to use the "proper" method. By proper, I mean that it's a more efficient way to do something than to hack it together and have it just about work.

You've learnt the language and the syntax, but it's the experience of just doing something that counts is where it's at! Good luck :)

haidrali 9 hours ago 0 replies      
Well i think you need pick a real world problem or need or an Idea and turn it into a product like

Skype ( it solve voice problem over ip and people uses it more than any other software)

whatsapp, Airbnb, Uber, Twitter etcor build something which people love to use

habosa 23 hours ago 0 replies      
I remember exactly when I was at this point. I had a decent grasp of Java, but I couldn't build anything that I wanted to use. The way to learn is to build something you want, or something you'd like to show off. For me it was an Android app. I knew there was Java involved, but it taught me all of the things I could never learn from just reading a book (user interactions, getting data off the network, etc). Building my first Android app and my first Ruby on Rails website showed me 'real' programming. The funny thing is it turns out that stuff is all boilerplate rarely involves the fancy algorithms you learn first, but it's what makes real products.

Since you know JavaScript, go build a mobile app with Phonegap. You'll get a really great rush when you see your first app pop up on an iPhone or an Android phone. You'll naturally want to iterate and improve, and that process will make you learn.

goblin89 1 day ago 0 replies      
A few of my friends are learning or have recently learned their first programming language. By my observation[0], what prevents them from building real projects is that while they know the language, they arent very comfortable with any frameworks.

Im not arguing that you have to know frameworks to build real projects. However, I believe knowledge of a framework reduces the effort required to complete a working solution so dramatically that it changes the game, especially if youre new to programming.

Im not a pro by any means, but my practical advice would be: dont stop at having learned JavaScript (the language) and Node.js (the platform). Learn Meteor.js[1], build all the examples you can find in the official docs, and after you become familiar with the processthe ideas will flow.

[0] It was a surprise to me, but in retrospect it shouldve been obvious as I myself have quite literally learned Django before Python.

[1] Meteor is just an example that came to my mind, Im not affiliated with them and its possible that there are better choices in the land of Node.js-based web frameworks.

dreen 12 hours ago 0 replies      
Apart from good advice already given in this thread, solving problems with code usually consists of the following actions:

1. Define the problem - think about/write down exactly what you want the final program to do.

2. Break it down into smaller problems, then break those further, right down to the smallest.

3. Solve the small problems individually, one by one.

saluki 1 day ago 0 replies      
Pick a problem you need a solution to . . .

a todo list appshopping list appblog/cmssimple crmtracking lego minifigures in your collection

Basically pick anything you would use, then dive in and start developing it.

You'll be creating a basic CRUD app initially but you can expand and improve on that as you go/learn more skills.

I'm not sure js/node is the best starting point but use what you know. Typically I recommend learning

html/css/js/jquery/php/mysql/(rails or laravel) then top it off with angular.

I recommend rails or laravel.

railscast.com or laracasts.com have lots of great tuts.

Coding something up from scratch before diving in to a framework is probably a good idea. The first time a started learning rails it was tough to follow what was going on behind the scenes. But after creating a few apps from scratch in php/mysql rails was a lot easier to learn.

Good luck, have fun.

progx 18 hours ago 0 replies      
Programmers learn programming by doing, they solve a problem / need, a problem for themselves, for customers, for other users.

What program did you/your customer/other users need?

Then do it.

No course in the world will tell you the exactly need and how to solve it exactly -> if it exists, millions of programmers will be unemployed ;-)

I learned it when i was 10 years old (C64), i saw the "cool" games and thought -> i want to create my own. Learned Basic, learned Assembler and Build step by step many different games and programs.

kev6168 22 hours ago 1 reply      
No no, don't work on petty real problems just yet, because you have only finished half of the programming training, specifically the bottom half that is the lowly Javascript(or PHP).

Now you need to spend 3 months on a lisp language(Clojure, Racket, SBCL, Arc, doesn't matter), then another 3 months on Haskell, the King among Kings of programming languages, yet another 3 months on the almighty Emacs, and finally 3 months on Vim, so you can use the Evil plugin with Emacs. Only after all these, you can confidently and proudly start learning PHP, work on a Rails project.

You will thank me every time in the future when you visit Hacker News, Reddit or StackOverflow, every time you walk into a meetup, or join in a water cooler conversation.

primitivesuave 1 day ago 0 replies      
Your best project ideas are going to come to you in day-to-day life, like the time my roommates started complaining that the laundry machine in our basement was always being used. A couple days later, a simple web app was hacked together that displays the washing machine status, and let's anyone "claim" the machine. I did that project when I was in college, and I probably knew way less about web servers and Node than you. I just Googled the first thing I wanted to do "make a website", struggled for a bit figuring out DNS and hosting for the first time, and then put up a test page. Seeing a page show up on the internet at yourwebsite.com for the first time is a pretty magical thing, and the rest was history.

In general, what you need is activation energy - that initial bump to get the project or idea started. After that, you need to practice maintaining the motivation to complete the project you started.

Asking the HN community was an excellent way to start. Good luck!

d4mi3n 1 day ago 0 replies      
This is a very common problem for people getting into software development. You are not alone!

A lot of other people in this thread provided some good advice to finding problems to solve, but I'd just like to comment a bit on how to solve them.

My advice: read code. Lots of it. Find popular libraries in your language of code and pick them a part to see how they work. Set up some open source project that solves a real problem (a CMS, chat bot, whatever) and explore how it operates.

Seeing how other people solve problems will give you a good frame of reference on how to tackle other challenges you encounter. You will also occasionally come across sub-optimal solutions: learn from those as well. Seeing how to do something badly can be just as valuable as seeing something done well!

At the end of the day I think programming is a lot like writing: a good writer reads a lot of books and writes often.

Just keep at it, there's a whole community of people here who've gone through this exact same thing. Good luck!

JoseVigil 1 day ago 0 replies      
You hit the nail on the head with a huge question, not sure if was on purpose or not but well done.

Your question is much more important than learning code even for a long time. That is a good start. Even super great developers never solve a real problem.

Solving a problem, demonstrating a business model and creating a successful start up are -to my eyes- more and less the same thing and takes years of extraordinary hard work, much more work than people at an office could even imagine.

My advice, watch all these videos are amazingly useful http://startupclass.samaltman.com and try to attach as much as possible to the advices.

Best of the luck! Great start.


lordnacho 21 hours ago 0 replies      
There's some great comments here to the effect of "find a project to do". That's ok, but I find the problem with that is you tend to find projects that you already know how to do, and you end up making a spec that is just a slightly bigger hello world. You miss out on collaboration and moving goalposts.

Real world projects often come from other people, the spec changes over time, and other devs need to collaborate with you.

Make me a tutorial site that exercises these two goals, with someone else at your level.

bjt2n3904 21 hours ago 0 replies      
Hey bnb. A few thoughts from my perspective.

What does it mean to "solve a problem"? Furthermore, how can computers be used as a solution? Let me illustrate this with a precautionary tale. It doesn't involve software design, but the principles are the same.

An old company I worked at had a crippling problem. Development groups were not communicating with each other. Each team would work on a module, only to find there were separate interfaces. Months of man-hours were wasted, time and time again. An up and coming intern convinced the management he could solve the problem by implementing a forum. Resources were allocated, and he spent the next few weeks setting up phpBB. Hopefully you can see where this is going.

The tedium of checking forum threads soon wore on the jaded developers. Nobody wanted to root through non-threaded, disorganized responses, or update the attached Wiki. Soon, the server turned into a forgotten wasteland.

Computing problems are solved with computers. Human problems are solved by good leaders. Sometimes, computers can help. Although the forum didn't work, a new developer was hired as I was switching jobs, and was doing a marvelous job uniting the development team. Before I left, a Jabber server was setup in place of the forum. The reception was much better--but the real problem solver was a good leader. Not the computer.

cphuntington97 1 day ago 1 reply      
Hi from Tent :-) https://cphuntington97.cupcake.is

If you're uninterested, please ignore, but here is something I want that might make an educational project:

A list of English words and/or phrases that are "phonetically contained" within Spanish words and/or phrases (and vice versa). For example, the English words 'cone,' 'tea,' and 'go' are phonetically contained within the Spanish word 'contigo.' (I'm trying to write songs in both languages that converge at key points). You might be able to do it with a https://www.wiktionary.org dump.

unclesaamm 1 day ago 0 replies      
The most salient part of your question to me was the word user. How do you add functionality to benefit a user? Once you have a clear idea who your user is, and what they want, the answer comes more naturally to you. For instance, if your user is someone who wants to know a piece of information, you can display that information. If there is logic to be handled depending on who the user is, you can google "nodejs authentication" and use a library to handle that for you. Everything is constructed in steps, and I don't think there's a magical barrier between writing your first lines of code and having useful functionality.
akafred 1 day ago 0 replies      
If you want a process that takes you from problem to product I recommend one I have used in developing several real world solutions, described by Freeman & Pryce in the book "Growing Object-Oriented Software - Guided by Tests". Allthough the book uses an object oriented paradigm and Java (none of which I particularly recommend) the process described in the book's first few chapters is solid and makes quality software development more predictable - and less of an art. (For those of you in the know, but who haven't read the book, this is about TDD, London style, (outside-in) with a high level of automation (continuous delivery).)
lakeeffect 1 day ago 0 replies      
I was in this same situation for a long time and when meteor 1.0 came out I went through several tutorials, including discovermeteor, bulletproof meteor. Its like a wave of ok, now I can build stuff and its dynamic, I had a plan to learn socket.io and now it just works. I have also signed up for the free mongodb class jan-Feb so that I don't make a big mistake at some point and dump my database. I also used erlang zotonic for a while but meteor has a bunch more kool-aid that makes it easier when you get stuck or have a question. Oh man, good luck I have been in that situation and can really feel your pain.
arc_of_descent 21 hours ago 0 replies      

I'm currently learning Python and I did the Letter Frequency problem and I'm now working on the Bulls & Cow problem. I highly recommend you visit the website and pick a random task(s) and solve it using code.

keypusher 23 hours ago 1 reply      
The question you are asking is like"How do I build a house?" It's too broad. Instead ask, "how do I pour a foundation?" or "How do I frame a wall?" Figure out how to setup a database. Figure out how to execute queries between database and application. Figure out how to write a login form. Build up from there, one small piece at a time.
red_hare 1 day ago 0 replies      
Pick a small, simple project that will force you to learn new things and put pieces together. My favorite starter server project is building a super simple URL shortener. You just need to render a page with a form, accept a POST from that form submission with the URL to shorten, hash the URL, store it in a database, return the hash, and set up a GET that maps your hashes to your URLs by looking up against the database.

The most important thing with beginner projects is scope. Pick MVP versions of things you want to make and build out.

fragmede 1 day ago 0 replies      
What have you done that's more advanced than 'Hello World'?

I'm assuming you don't literally mean you've written 'Hello, World!' a thousand times, and I assume you've tried more complicated projects, so where do you keep getting stuck?

Logic and structure doesn't leap, fully formed, from the head of an architect like some prophecy. It starts with some notions that are carefully honed into a working implementation.

aaronm14 1 day ago 0 replies      
I've often felt the same way. I've found things just by spending time brainstorming, and keeping it in the back of my mind as I go about my week. You can actually come up with a lot of ideas just by practicing observation of daily tasks you have.

I'd also recommend attending a Startup Weekend or hackathon of some kind and just joining up with a group working on something interesting. Being around the creativity at these can the wheels turning even afterwards

martinald 1 day ago 0 replies      
I learn it backwards. Take something slightly complicated (so much so that you find it challenging to read) that solves a problem that you understand.

Then think of a feature or modification that you think would be useful. Try and implement it.

It's incredibly painful but I find this works better than trying to build something from 'hello world'. Before you know it, you can understand why stuff was implemented that way and what not.

husseiny 1 day ago 1 reply      
Just do it! You need to pick a pet/side project of something you want to work on and try to figure out how to get there with code. Perhaps start with a framework and go from there. If you can't come up with a project, find yourself a product person friend who can brainstorm ideas with you and work on it together. Where are you based?
hayksaakian 1 day ago 0 replies      
based on what you wrote, i would say the next goal is to write a twitter clone.

write something that takes user input, stores in a database, and represents it later on.

CRUD (create read update destroy)

many webapps could be categorized as a CRUD app, or start as a CRUD app. if you've only gotten as far as "hello world" then i'd consider this a worthy "next target"

simonblack 1 day ago 1 reply      
Start small then build up. Give yourself lots of small nonsense throw-away challenges, or maybe take one small part of somebody else's website and see if you can duplicate it.

You have to keep challenging your boundaries. Don't do stuff you know, try to to do things you don't know. But keep each step upwards simple - don't try to build a skyscraper before you can build a house.

minthd 1 day ago 0 replies      
Since you know javascript, read this:


It's from a workshop called "how to build your first mobile app in a day"

attheodo 18 hours ago 0 replies      
Don't think too far. Find a problem of your own, your family or friends and try to solve it. Best chance is that if you have it, someone else might have it too.
aosmith 1 day ago 0 replies      
The best way to learn to sole problems is to find a practical problem and solve it!

Find something that would make you more efficient or something that you would personally use. It's going to be a lot of head banging at first but it keep banging away and then start adding complexity.

kedargj 1 day ago 0 replies      
Are you having troubles coming up with problems to solves or in getting started on a problem you've identified?
hoodoof 1 day ago 0 replies      
Why are you learning to program if not to build some specific software application?

Start doing it. Within seconds or minutes you'll hit your first problem that will need a solution. Keep doing that forever. You are now a programmer.

krmboya 21 hours ago 0 replies      
Vanzetti 19 hours ago 0 replies      
>But I don't know how to _solve problems_ with it.

Do you have problems? Maybe you just don't to solve anything at the moment.

kazinator 1 day ago 0 replies      
[H]ow to make a site with logic and structure behind it that will lend itself to solid functionality that users can benefit from.

How do I learn that?

When you figure it out, please pass the message on to the fifty bazillion useless websites out there, that all want me to enter my e-mail address and create an account, yet provide no benefit.

To create something that will benefit users, you need a brilliant idea, not only the ability to code, even to code very well.

If you don't have your own idea, then you get someone else to supply the idea. The idea will start out vague, then take the shape of concrete use cases (interaction scenarios between the proposed system and the people or other agents that use it). From those emerge requirements and a detailed design, and then some prototype code that becomes production code.

petercooper 1 day ago 0 replies      
Read Programming Pearls to begin flexing your mind in the right direction. It's a somewhat older book in terms of the actual practicalities, but in terms of getting you thinking about how code is applied to situations, it's timeless.
jaequery 1 day ago 0 replies      
before i learned to program, i knew what i wanted to create. that was 13 years ago when i was too busy playing an online video game (nba live 2000) and i wanted to create an association league out of it, just like nba.com. first thing i knew i needed was a website, somehow picked php and after heavy amount of trial and error, just under 4 months or so i had a website going with my own forum, standings, team management system, player/team statistics, etc ... little did i know, that was all it took to set me off on a career path i've never have imagined otherwise and i love every day of it. :)
xanderjanz 1 day ago 0 replies      
Great question.

Problems are solved by tools. Powerful tools can be built with code.

So try first to think about what kind of tool would be helpful for you. How could a computer help you accomplish something that you couldn't do yourself on pen+paper.

One example I like was I was making designs for various sports teams, and I liked the idea of word clouds, but it seems like too much work. So I built a javascript app that counted words in wikipedia articles and built wordclouds form that.

It's a cool project, but the original seed didn't comde form thinking 'what problem can I solve with code' it came from trying to do something new, then thinking if that specific problem could be done with code.

surganov 1 day ago 0 replies      
See '180 websites in 180 days' project.http://jenniferdewalt.com
akwebb1 1 day ago 0 replies      
Programming languages are a tool. Problem solving is a skill.
mck- 1 day ago 0 replies      
The best way to learn is always to just do it. Now that you r got some fundamentals down, think of a project that you would enjoy building. Now Google the little pieces together :)
yakamok 1 day ago 0 replies      
find things in your everyday life you could use programing to make easier or solve
robomartin 22 hours ago 0 replies      
Take the MIT Intro to CS with Python course. It's an introduction to using computational methods to solving problems. Then take the second course.

Then find problems to solve. Lots of them.

Find a mentor.

I had my 15 year old son take these courses (with me acting as tutor). There is no way to describe the transition he made. From wasting his time learning a bit about a language here and a bit about another language there to focusing on one, learning how to solve a range of problems, learning about data structures and more. He cam out of that swinging and capable of approaching real problems (still with a need for me to coach, but a huge step forward).

contingencies 23 hours ago 0 replies      
Pike's 5th Rule: Data dominates. If you've chosen the right data structures and organized things well, the algorithms will almost always be self-evident. Data structures, not algorithms, are central to programming. - Rob Pike, Notes on C Programming (1989) via https://github.com/globalcitizen/taoup
wellboy 1 day ago 0 replies      
For this, you don't need to ask yourself how you solve problems with code, you need to ask yourself how you can solve problems with products.

Coding is not the hard part, it is rather a means to an end. Figuring out for whom you are solving that particular problem and how your product will actually solve that problem is the hard part.

For every problem that there is to be solved, there are 1,000 ways to execute the product that is supposed to solve that problem. However, only 4 or 5 out of these 1,000 ways actually do solve the problem that the product is intented to solve.

So, now you need to

1. Find a problem that is worth solving and that interests you

2. Find out if this is actually a problem. The more people have the problem, the better

3. Figure out how to build a product that is built in such a way that is solves that problem that you are intending to solve

All in all, as you are just starting out, you should probably start writing little scripts that solve your own problem. However, your questions is basically how do I build products that people want to use or how do I start a startup. I would recommend you to start with this essay. http://www.paulgraham.com/start.html.

graycat 1 day ago 0 replies      
When I went to grad school, my careerhad been programming, and I'd done a lotof it for some years. Two applied mathprofs were starting a computer science course and asked me what good lessons I'dlearned, and I answered. The answer remains current:

A programmer stands between a real problemand a computer.

The computer does onlywhat operations it is carefully instructedto do and no more understands the real problemthan the chef's knife of a good cook understands cooking.

So, the work of the programmer is to take the real problem and see how to use the computer tosolve it.

For this work, as a first step,if only to make the work easierfor the programmer, get a first list of thedata inputs for the problem and the dataoutputs. Yes the code for a Web page isa special case of this first step.

Then outline how the program will take theinputs and generate the outputs.

Here likely will need to define storagefor the inputs, say, some or all ofvariables, arrays,data structures, instances of object-oriented classes,database tables, etc.

Then move on to the work manipulatingthe input data to get the desired outputdata. In the case of a Web page or anysoftware with a graphical user interface(GUI), also will want to outline what the output will look like on the user's screen.

Then for the manipulations of the data,use the old strategy of divide and conquer, that is, break the work downinto largely or entirely independentpieces of work. People have been doingwork of wide variety this way forcenturies, likely back to the pyramidsand the first boats that couldcross an ocean.For each such piece,have in the software a section of code,subroutine, or function. The work of such a piecemay be further subdivided.

In the end, want each such piece ofcode, section, subroutine, ...,to be small, to have a purpose that iseasy to explain briefly, that is fairly easy to debug, by desk-checking(that is, careful critical reading),running test cases, etc., and with logicthat is fairly easy to create, explain,and follow.

This division of the work shouldbe, at least intuitively, robustto small changes in the real worldproblem to be solved. That is,the division should be for a problema little more general and complicatedthan the one actually given; how muchmore is a matter of judgment, buta small change in the problem statementshould still be a small changein the software!

Next, in the division, exploitthe scope of names rules in theprogramming language to helpthe software pieces be independent.

Next, remember that at least onehuman needs to be able to understandthe source code and that"When a program is written, it isunderstood only by the programmerand God. Six months later, only God."So, humans need to be able to understandthe code, for small projects, just byreading the source code and not needing additional documentationoutside the source code.

Next, remember that humans communicatein natural languages, e.g., English,hopefully with sentences, paragraphs,etc. Remember that, no matter how muchwe might wish and intend otherwise,the source code of software is notin a natural language. Yes we canuse mnemonic spelling for the variousnames we choose and use, and suchmnemonic naming does help someone tryingto read and understand the code, butsuch mnemonic names are still a longway from English. Bluntly, asinformation for a human reader, thecode doesn't really mean anything oris likely a puzzle problem to solveto guess the meaning.

So, net, have to document the code,that is, explain the code toa human, explain with English, essentially with sentences, paragraphs, etc.

Here is an example of a techniquein source code documentation:My project now is a new Web site;the source code for the Web pages isin Microsoft's Visual Basic .NETmaking use of the .NET Framework(collection of object-oriented class),SQL Server,ASP.NET, and IIS. For this work, I have5000+ Web pages of documentation, nearlyall from Microsoft's Web site MSDN.

So, my code makes use of a lot ofclasses, functions, etc. from those 5000+ pages of documentation,and some of those classes, etc. doa lot and need some good documentation.So, in my source code, when I useone of those classes, functions, etc.,I insert in my source code a commentwith the title of an appropriate Web page of documentation along witha tree name of the Web page ona hard disk on my computer. So, whenreading such source code, one keystrokein my favorite text editor(which is what I use to write code)will display the Web page so thatI can confirm that my source codeis doing what I intend.

Since thecode is awash in symbols,good examples of how toexplain code are in good textsin subjects based heavily onsymbols. So, can explain codemuch like a good freshman physicstext explains Newton's second law or Coulomb's law or howa good freshman calculus textexplains conic sections ordifferentiation. E.g., forEnglish readers, mathematics isstill written in English;then the symbols are names,that is nouns.

In large projects, the documentation may be hundreds of pages.But essentially always thereis documentation as sourcecode comments in the source code.

Then, six months later God, theprogrammer, and others will allbe able to understand the code!

My view is that currently the biggestbottleneck in practical computingis poor documentation. Sorry 'boutthat. YMMV!

Ologn 1 day ago 1 reply      

  1) Go to Github  2) Browse the Javascript projects  3)  Look for projects which are active with many follows/forks  4) Click on the Issues tab  5) See what open issues there are  6) See if the maintainer is active and applies pull requests  7) Pick an issue you can fix, fix it, write a patch  8) Send a pull request  9) See if the maintainer has any comments   10) Go back to step 1
See - you're solving problems. This is the kind of stuff you'd have to deal with on the job, and is the kind of stuff you'll deal with with your own projects as you or your users discover problems.

I know exactly a problem you can solve right now with Javascript.

   * Go to this website - http://maps.huge.info/zip.htm    * Move around the map so you can see where various San Francisco zip codes are.   * Now try to do this on your phone
I'd love for this to be a mobile-friendly website, but it isn't. It's a useful tool, it looks like it's just a mashup of Google Maps and ZCTA's. A perfect project and problem to solve.

curiously 18 hours ago 0 replies      
The reason you don't know how to solve a problem is because you do not have a solid grasp of what you learned. This will sound harsh but node.js is a horrible beginner choice. you should've learned python, java, php. asynchronous programming is a bit advanced way of doing things, and synchronous, functional programming works best. i've dabbled with OOP, but have rejected it largely because it doesn't work well for most of my projects.

Pick a new language, which will be now easier since you know javascript, create a simple project with it. Once you get to creating something, you will realize, the confidence to solve other problems. You keep going until you are very confident. You can't learn it, you have to use it.

Ask HN: How to make the most of a slow job?
9 points by scmoore  7 hours ago   15 comments top 10
techjuice 2 hours ago 0 replies      
I'll just say you are in a very good position for now to advance your skills to the max.

Your in a place that needs some renovation and your the chosen one to do it.

1st Phase:Doing an survey on what can be implemented to improve the work environment.From what you have listed the first thing I would recommend is setting up Git on your machines to implement modern version control. Then setup a testing, staging and testing environment. You can then setup an integration server and run ColdFusion tests in the staging environment before you deploy your code to production. This will add development, automated continuous code integration and source control management to your resume.

2nd Phase:Setup a ticket system for all requests for bugs, features, etc. to be funneled through to decrease email support.

3rd Phase:Build analytics into the system, first start out with setting up monitoring for the web and database servers. If you only have one web server create a new server to put the database on to enhance security. Have the database server only accessible internally. Then duplicate the same to your staging and testing environments. This will help increase security of the overall infrastructure if this is not done already. For you this will allow you to add designed secure muli-tiered server infrastructure, infrastructure monitoring and analytics.

4th Phase:I am not sure if you are able to change what your running as a server side language from Cold Fusion if not I recommend that you master Coldfusion, also not sure what version of Coldfusion you are running but if it is the enterprise edition there is a nice bit for you to learn.

If you are able to change the language I would recommend doing a survey to see what features you currently have in the site and then choose a language that you can migrate the system too and get industry certifications to help you become more marketable.

If you choose Java you can get certified in Java SE, Java EE, 11g,12c, etc. use this until you get all the way up to expert level for each cert if possible. If you do not see this as a route due too the required class costs you can choose an alternative from a highly demanded programming language or framework like Ruby, Ruby on Rails, Python, Django, C#, ASP.NET MVC, NodeJS, Go, Closure, ClosureScript, Scala, Dart, etc. Then setup the frontend in AngularJS and create a WebAPI to interface with the website.

5th Phase:After you have a strong site setup you can use the API to interface with mobile applications you create for iOS and Android to add both to your resume. I

This should help you add some meat to your resume and if your going to be working somewhere for 8 hours a day you might as well make it work for you and get your experience and certifications. Check with your manager, admissions and HR to see if there are any opportunities for you to get a B.S. in Computer Science fully paid. You might even be able to move up the ranks over time to higher positions within the company or start your own consulting company.

I am also sure you probably see a nice bit of variation of people at work. Get to know them go out to eat from time to time. They might be a very good contact or business associate for you in the future. You could become friends with the next Mark Zuckerberg or become the next Mark Zuckerberg and might need some college buddies to help you get things started up.

Once you have done what you feel has fulfilled you there it will then be time to spread your wings and fly to a new job. If you can get the B.S. in Computer Science degree that would be nice but don't let that hold you back.

mooreds 5 hours ago 1 reply      
What do you want? What are your end goals? It's hard to answer this without knowing that.

For example, if you want to work for a SV startup, I'd move out there asap, as the skills they want are decaying right now.

Or, if you wanted to teach CS, or even IT, at the college level, you should take classes and get a MS or PhD in CS.

Or, if you want to do webdev and support for local companies and ColdFusion interests you, you could learn the ins and outs of ColdFusion, learn project management and estimation, and set up some of the basics of the Joel Test ( http://www.joelonsoftware.com/articles/fog0000000043.html ) for your current job, and learn a ton.

jared314 3 hours ago 0 replies      
It sounds like you have a less demanding job, thus allowing you to choose your own adventure. Don't loaf around. This is a gift.

My suggestion:

1. Learn the existing CF system, with full knowledge that CF is not a "marketable skill". (Even though there are a ton of legacy systems written in CF out there.)

2. Institute the process changes (source control, bug tracking, testing, etc) yourself, just to learn them and experience the problems in implementing them.

3. Use the free time to build a complete replacement for the existing system in a currently marketable stack (Node / Javascript, Elixir, Clojure / Clojurescript, .Net, etc).

4. Socialize / network with other developers at meetups and conferences.

5. Start the CS degree (and possibly explore options for transferring).

Extra Credit: Start a side business as a web dev consultant or, even better, a product. The education market is full of niches that can be better filled, and you have a front row seat.

redmattred 4 hours ago 0 replies      
ColdFusion is kind of a dead language at this point, but there are still many legacy products build in CF that need to be maintained. With CF developers in short supply, you could carve out a valuable niche for yourself if you want to deep end on the language.

Getting a CS degree on the cheap seems like the big pro here and would help you down the line. Even though its possible to get a developer job without a CS degree, it certainly helps. Many companies screen out anybody without a CS degree altogether.

If you have a lot of downtime you might be able to pick up some consulting work as well and broaden your exposure to some other technologies.

cnp 6 hours ago 1 reply      
Honestly, I would recommend looking for another job. I was in a similar position recently and took advantage while I could, but it really starts to get the best of you. Also, considering we're in a development renaissance right now, why would you want to miss out on the possibility of advancing your skill-set and doing something interesting?

It sucks to change jobs but trust your gut.

derekp7 7 hours ago 1 reply      
Whatever you do, do not let yourself become too idle. It will make the days drag on, and at the end of the day it will feel like you wasted the day.

You should at least use version control for what you are working on. Even if it is just a local Git repo (that you keep backed up, of course). Same with ticketing, either pick up one of the open source ticketing systems just for your own sanity, or take time to create your own ticketing system if there is that much slack time.

mikkow 7 hours ago 0 replies      
Try to improve the situation. Software development is all about team work, and skills and experience in developing the development are appreciated. If you can tell in your CV that I made this and that improvement, I would consider it a great plus. CS degree also sounds like a good idea (I'm in Finland, don't know about scene there).

If it does not work out, you can always look for a new place.

michaelmcmillan 6 hours ago 0 replies      
Make yourself as valuable as you can. Learn ColdFusion, be humble, suggest using other alternative technologies, and perhaps most importantly: show initiative! It will get you very far, even if you're only there for a short period of time.

If I were you I'd start out by attending some interesting classes and if possible sign up for them.

papaf 5 hours ago 1 reply      
I recommend this talk by Zed Shaw. I consider it a classic and worth the time to watch:


arh68 7 hours ago 1 reply      
How quickly could you acquire the degree? 4 semesters? Is the department going to grow any time soon? Certain commuter schools in nova seem to get bigger all the time.
Ask HN: How to find a co-founder that would help you sell your product?
49 points by willnw  22 hours ago   31 comments top 20
Maro 18 hours ago 1 reply      
I was in a similar situation when I was doing my startup several years ago. My advice:

1. Be very careful when dealing with sales people. They will be good at selling themselves, and you do not know how to evaluate them. Do not make any promises, do not make any vague statements, esp. about equity. Also be careful regarding statements about %s of deals, ie. do they get a cut from the first 3 months of payments, or the entire lifetime of the subscription? I got burned on this one.

2. In the comments you write: "I am afraid to speak to [customers]". I will be brutally honest with you: with this sort of mindset, you will fail. If you want your startup to succeed, you will have to stretch beyond your wildest dreams. Going up and talking to your customers is the zeroth step. Keyword: stretch. Corollary: if you can't get yourself to talk to your customers, you should stop right now and get a job! (No offense!)

3. At this early stage, the process of selling is undefined, and is a sort-of engineering challenge in itself. A salesperson [that you can convince to work with you at this stage] will not figure this out for you. A salesperson will ask you who the customer is, what to tell the customer, what the pitch is, you will have to write the contract, etc. Maybe they have a few contacts, in my experience that's the most you will get out of them. Based on your description of your business, you don't need that because restaurants are everywhere, you just need to walk in and hustle.

Basically, my advice is: do _not_ look for a salesperson. Learn to do the job yourself. Once you know what the job is, what it takes to be successful, what the rates are (1 sale out of 5 pitches) then you can hire somebody and evaluate them in their first month, and hold them accountable to be at least as effective as you were.

Startups are tough! If they weren't, everybody would do it :)

tptacek 11 hours ago 0 replies      
It is extraordinarily difficult to hire sales people, one of the hardest "business" tasks there is. Even on teams led by people with a background in managing sales teams, the hit rate on good salespeople is low. I came up in my career with a bunch of people who went on to start companies, and so I talk to a lot of founders, and the number of tech founders who managed early in their company to hire salespeople that actually worked out is (0) zero.

The biggest problem with this task is adverse selection. A salesperson who can take a product with no traction and no awareness and successfully sell it can sell any other product. The world is full of potentially but not kinetically viable products. Good salespeople have their pick of all of them. So if a salesperson is willing to talk to you... you have to wonder why you're their best option.

An approach that can work:

1. You figure out how to sell your product to some subset of its potential users.

2. You execute on that strategy until you can reliably hit some number every month.

3. You hire an inside sales person, a dial-for-dollars robot, to execute on the script that you worked out in the previous step.

Don't kid yourself about steps 1-2, or you'll just throw money away in step 3. It's important to understand the implications of this: it means you can't easily hire someone to figure out how to sell your product. You have to cross that gulf yourself.

bradnickel 38 minutes ago 0 replies      
You are a salesperson, you just don't realize it. You sell in most facets of your life.

To Sell Is Human: The Surprising Truth About Moving Others: Daniel H. Pink - http://www.amazon.com/To-Sell-Is-Human-Surprising/dp/1594631...

Feel free to reach out if you need some guidance or advice.

richardw 21 hours ago 1 reply      
I'd suggest doing two things. Start looking for sales & marketing people and learn some yourself. Kick the marketing tires, interact with restaurants. You'll learn a lot from the process, even if it's just establishing that your product-market fit is perfect (usually not). Don't delegate all your client interaction to "sales" because you lose a lot in the process.

Unless they have a serious track record, let any salesperson earn their way in. Don't give up equity on promises.

Checkout saastr.comhttp://saastr.com/2013/02/12/what-a-vp-sales-actually-does-w... http://saastr.com/2013/04/02/the-48-types-of-vp-sales-make-d... http://saastr.com/2013/11/06/if-your-vp-sales-isnt-going-to-...

P.S. I have a friend who has a restaurant-chain SaaS app and he's not enamoured with their sales setup. Speaking to him next week. Someone really needs to make a company that handles the relationship with restaurants and connects to all these related solution providers.

andersthue 18 hours ago 1 reply      
I can reccomend finding a great salesperson in your network and ask if he would teach/coach you on your sale.

I did this and in a few days I improved my sales skills dramatically.

Remember that selling is a proccess and a skill that can be learned, just like programming, and if you have a great teacher you can learn the basics really fast.

Too me the hardest lesson was that the more annoying and hard questions a person asks, the more interested in your product they are and the more they see how they could use the product. Not because they did not like it as I thought!

greghinch 17 hours ago 0 replies      
If you think you've done market research, but you haven't spoken to your customers directly (in person or by phone if in person is not possible. no email), you haven't done market research. And if you can speak to your customers to do research and discover their problems, you can sell them your solution if it's a good one.

To underscore what others have said, if you want to have any success, you have to sell this yourself.

xivzgrev 19 hours ago 1 reply      
You won't like this, but sell it first. Your first few customers are buying a vision and if you can't sell your vision, no one can.

Then once you can show some kind of product market fit (eg your customers love it, and would be really disappointed if you pulled plug), and you're ready to begin scaling, THEN hire first sales person.

You'll have an idea of who likes your product and why, and that can give sales person a lot of confidence and focus.

zeeshanm 15 hours ago 0 replies      
You are saying you can do market research but it seems to me after building the product you realized it was not a very hot field to be in. Not to point fingers at you but this should be a good takeaway for you. It may be easier to assume before you build but in some cases it may not work out later on.

Now, to answer your question, if you cannot get to your customer yourself maybe you should have not entered this market to begin with. Even if you hire a "co-founder" or an independent contractor to "sell" for you this may still not work out. For one thing, it seems you have not tested out your idea with customers. So, you may or may not have a product that solves a pain point. Although, you may get lucky to find a partner who is effectively able to communicate back customer feedback to help you in product development.

This stuff will take time. Just don't give up. And I'd suggest if you really believe in your idea you should go talk to your customers yourself. If this idea doesn't work out, next time may be build something for yourself or your friends so you don't have as much anxiety when it comes to talking to your users.

JacobAldridge 19 hours ago 0 replies      
When doing your market research (by which I specifically mean talking with your target market about their pain - you can't do market research in your basement, only competitor research which is not the same thing) ask them about sales reps for their other providers that they like and trust. Get an introduction wherever possible.

1) If nothing else, people who already sell to restaurants understand the market and can introduce you to other owners you can speak with, and

2) You probably want a salesperson with industry expertise and existing relationships, rather than someone with App / SaaS experience. Even if they've previously sold produce or tableware or linen services, you can teach them the technical basics and they can sell it in terms that will create cutthrough in the market.

Lastly, when people Ask HN about finding a technical co-founder, the advice is nearly unanimous: try learning some of the skills yourself. The same is true of Sales and Business strategy - you may never become an expert, but forcing yourself to learn the basics will help you identify the really good operators in that space.

Good luck!

JDcarlu 21 hours ago 1 reply      
Talk to your customer. Where do you live? You probably frequent the same restaurants and probably they recognized you in some of them. Ask to talk to them. Don't sell. Tell the story of why and listen. If you want to start with one (and you are in the Valley) hit me at @JDcarlu and I will go with you to a friends restaurant and introduce you. Don't be scared to ask.
stefanocutello 14 hours ago 0 replies      
Pay attention that some sales people will be good at selling themselves to you but not your product to the customers.ABC: there's no way to know if he/she's a good sale person if not seeing it in action.

To know which kind of sale person is best for you - you have to try to do it yourself first: know your customers, know their problems and which are the values they see in your product (I assume you have done this before building the product).

Then start searching key people in the industry you're targeting and ask for help - get into that network and you'll find your person.

Avoid sales consultant. Avoid external sales company. It's too early for you. You need someone internal that will do more than just selling your product. You need someone that will listen to any comments, feedbacks, needs, feelings of your potential customers and will identify opportunities, product changes, propositions and values.

To get him/her on board pay attention to do not give out shares on day one. Setup an option pool with vesting and link i.e. salary with company performance (not personal one). I can give you some further tips on that if needed. I did that myself with a new biz dev guy.

All the best!

snikch 13 hours ago 0 replies      
This is a really hard question. It's also the reason my product never took off. I've got ~50 loyal customers who love the platform and send millions of emails a week but I never found a co founder to come along for the journey.

I looked locally and abroad for a founder, and had investors ready to continue to back me. I'm a good engineer and gave sales a go but realised I'm just not cut out for it. I put up ads and got plenty of interest (early product hunt advertiser) but never found the person making investors were willing to put their cash on the line for.

It's a tough find. Especially if you don't have a sexy as fuck product. I wish you luck!

Tl;dr without a go to market or sales co founder, chances are you're fucked.

Edit: Abysmal spelling.

dkrich 13 hours ago 0 replies      
In my experience business owners are very open to cold email introductions. Somewhere it became legend that nobody responds to sales emails but if you rethink your pitch as an earnest attempt to either listen to their problems or provide them a solution, they will respond. Just write as a person in an honest tone about the solution and ask for a few minutes to discuss on the phone or in person. Send ten of these personally written letters and I can almost guarantee that you will get at least 3-4 meetings. From those you will learn more than any salesperson could teach you in two years.
hartator 19 hours ago 0 replies      
We have found our CMO on AngelList.

You can post an something on it saying your are looking for a CMO or a VP of sales. People on AngelList are usually really smart, get startups and are looking for opportunities like that!

doctorpangloss 20 hours ago 1 reply      
> ...help restaurants to speed up sales. Apparently it is not a very hot field to be in at this point.

Money and confidence. It's probably better than you think!

phreanix 20 hours ago 0 replies      
Do you have an email? I'm in the industry.
oxama 18 hours ago 0 replies      
Take interns to see how it goes
curiously 19 hours ago 0 replies      
if you can't sell it yourself then somebody else will have a tough time. you have to figure out how to sell it on your own, you being the creator.

once some product market fit is established, and you need more bodies and time to expand, you should do it.

this is what I learned this year.

trvz 18 hours ago 0 replies      
regency 10 hours ago 0 replies      
I'll respond with a quote by Rumi (and try not to sound pretentious as hell while doing so):

If you are hungry and unable to find food, be the bread.

Ask HN: What does it take to hire for merit, and avoid biases?
10 points by kedargj  1 day ago   9 comments top 2
jtfairbank 14 hours ago 0 replies      
I'm more concerned about a diversity in hiring channels than biases on an individual level. Many startups want 'the best people' but only hire based on a candidate pool already familiar to them: friends and recent alumni of their school.

This is especially problematic when you consider that most startups are created by white males who have had a societally positive bias all their lives. And they tend to associate mostly with people similar to them. This leads unintentional to sexism, racism, and ageism in our industry, and prevents many startups from even talking to a large number of talented people.

I'd encourage you to reach out to older alumni, minority coding groups, and more experienced developers through previous jobs or your board and advisors. More diverse hiring channels will lead to a more diverse candidate pool.

rnovak 1 day ago 4 replies      
I'm sorry, but how are University/GPA/Courses not directly tied to median candidate merit?

If you had someone in front of you who went to MIT and had a 4.0, and always took the most stringent professors for each course in the curriculum, how on earth do you think they compare to someone from ASU, or some community college, with a 2.15 GPA?

Ask HN: The best Linux laptop
64 points by Nib  15 hours ago   70 comments top 30
josephkern 15 hours ago 4 replies      
Stick with thinkpads and checkout ThinkWiki[1] to make sure that there are no oddities you are not willing to work through on the model you want to buy.

The Dell XPS Developer Edition[2] comes with Linux installed, and has supported binary drivers from Dell. Just a little outside your price range.

[1]: http://www.thinkwiki.org/wiki/ThinkWiki[2]: http://www.dell.com/us/business/p/xps-13-linux/pd

tdicola 8 hours ago 2 replies      
I'm not sure why you're ruling out Mac laptops, perhaps you think they're too expensive? I was a long time Thinkpad user but converted to a MacBook Air a few years ago and haven't looked back at all since. You can run Linux in a VM perfectly, and OSX itself has some nice Unix features.

Right now you can get a 13" MacBook Air with good specs for $800: http://www.bestbuy.com/site/apple-macbook-air-latest-model-1... IMHO this is the way to go. No $800 Windows laptop is going to come close to the build quality of the MacBook Air.

simonblack 5 hours ago 0 replies      
Lenovo Thinkpad T410S here. The only thing I've done to it in the 4 years I've had it is to upgrade the 500gig hard drive to 2 TB. And when I bought it I specified the larger battery rather than the standard one. It has an included DVD drive which is surprisingly often used.

I have kept it as a Linux-Win7 dual-boot, but Windows is restricted to 50 gig and I'd boot this maybe 4-5 times a year, while the other 1950 gig is in use with Linux.

CraigJPerry 14 hours ago 2 replies      
I've always gone thinkpad for Linux and never really been let down.

I got an M$ Surface Pro 3 last month (don't laugh) but its actually first rate, hardware wise.

Fedora doesn't quite work perfectly yet but its pretty close.

High DPI touch screens rock!

lsiebert 7 hours ago 0 replies      
So you don't say what you consider best. Do you need a discrete GPU and a huge screen? Do you want a lightweight ultraportable with great battery life?

Also after christmas sales are often good for tech, if you can wait. You can often get refurbs from returns for great prices.

I'm on a thinkpad T530. added an aftermarket SSD and 16 gb of ram (You need a W system to get 32GB, but it's possible). Note, get an intel wifi card that supports 2.5 and 5.0 channels. a T540 is a substantially better machine, both with haswell getting better power managment, and the ability to hotswap batteries because of a smaller internal battery.

I also have an hp chromebook 14 running crouton lubuntu 14.04 I got for $236 on woot. It's fine as a secondary laptop, and seems to have good battery life. I do occasionally miss having a meta key. I run xfce, not unity, and I'd recommend a light-weight DE. It is notably slower compiling (things like YouCompleteMe's C++ code for vim).

The other thing to consider is a cheap foreign made computer, like Sager or Clevo. They are bare bones systems, but that's often better for linux support. I'd also look at resources from reddit's r/SuggestALaptop like http://www.reddit.com/r/SuggestALaptop/comments/2448oy/guide...

wanda 14 hours ago 0 replies      
Lenovo Thinkpads have always made for good Linux machines, and even now nothing seems like it will ever beat old Thinkpad keyboards. New Thinkpads are still good but I've never been a big fan of the chiclet keyboards and the resolutions sometimes seem to be worse than in the past.

Of course, there is always:https://system76.com

but I've yet to give any of their gear a spin.

CoffeeDregs 14 hours ago 0 replies      
EDIT: oops. I just noticed your price range. The X1 Carbon doesn't fit with that.

I would strongly recommend the last generation Lenovo X1 Carbon, but I would strongly recommend against the current X1 Carbon for a few reasons:

- They merged the trackpoint's buttons into the trackpad's and now it's very difficult find the middle chord or to select text using the trackpoint.

- They merged the function keys with the utility keys (e.g. volume control) into a single, dynamic row, so closing a window (Alt-F4) often requires you to toggle from utility to function key. If this sounds confusing and useless, it is.

- Worst, because of the doubled-up row (fn, utility), Esc and ~ wound up overlaid. So they moved the ~ next to the LOWER RIGHT Alt key. I hit Esc every time I try to reference my home directory...

Other than that, it's a lovely laptop.

Oh and don't get a HighDPI display unless you want to deal with funky application layout issues...

nickysielicki 10 hours ago 0 replies      
I'm a fan of really cheap chromebooks.

The Toshiba CB35 that recently came out is my current laptop. Don't buy that right now, though. We don't have the coreboot situation worked out, although we're close. Currently hating myself by using crouton every day... But its still a great machine for the price.

For me, and probably you too, nothing matters more than display quality, keyboard quality, and battery life (in that order.) I do most everything remotely, so power isn't even a part of the question.

larzang 13 hours ago 0 replies      
A lot of people haven't heard of them, but Clevo is a major laptop OEM that makes both rock-solid business platforms and gaming platforms. Sager, System76, FalconNW, and most other boutique laptop builders use rebadged/modified Clevo systems. Clevo doesn't sell direct to customers, but there are plenty of sites where you can buy customized or barebones systems for very reasonable prices.

This summer I bought a W670SZQ from AVADirect, with an i5 and SSD it was just under $900. For a full size 17" laptop the weight is very reasonable, and it's a great system that Xubuntu and Mint worked fine on with zero tweaking.

sampo 13 hours ago 0 replies      
HP EliteBook Folio 1040, 14" 1920x1080 screen:

Pros: Thinner (1.59 cm vs 2.06 cm) and lighter (1.49 kg vs 1.58 kg) than ThinkPad T440s. Everything in Ubuntu works.

Cons: The keys are flat (like in Macs), I'd prefer some contour like in ThinkPads. Touchpad has no mouse buttons: 2-finger tap on the touchpad (for right-click) is quite easy, but 3-finger taps (for middle-click) is a little tricky. Also selecting text by pressing on the pressure-sensitive touchpad while moving the cursor is a little tricky. Personally, I always use external mouse, so I don't care.

loudmax 13 hours ago 1 reply      
I bought an X230 Thinkpad a year ago, and I'm quite pleased with it.

I wanted an SSD, but I found it was cheaper to select the cheapest hard drive they had and then buy an SSD from Newegg than to get the SSD from Lenovo. Replacing the drive was quite easy, not like a tablet or cell phone. It goes without saying, but you should do the same for RAM.

A month or so after I bought it, the fan stopped working. Their customer service was quite good. They sent me a box so I could return my laptop, and they fixed the fan and shipped it back at no cost to me.

gvb 14 hours ago 1 reply      
I just ordered a Thinkpad T540p for $649 (plus tax, no s/h) from the Lenovo site. "Web list price" is $1,413.00. I don't know how long the deal will last. Obviously, I have not tried to run linux on it, but I don't expect problems.

Downsides: It is a heavier machine at 5.5lbs. Battery life is good but not great. The display is decent resolution but not great.


Make sure you pick the best deal. :-)

Processor: 4th Generation Intel Core i5-4300M Processor( 2.60GHz 1600MHz 3MB)

Operating system: Windows 7 Professional 64

Display: 15.6" FHD AntiGlare 1920x1080

Graphics: Intel HD Graphics 4600

Memory: 8.0GB PC3-12800 DDR3L SDRAM 1600 MHz

Hard Drive: 500GB 7200 rpm

Optical Drive: Multi Recorder

Network Card: Intel Dual Band Wireless-AC 7260

Bluetooth: Bluetooth Version 4.0

Warranty: Three year

Pointing device: Clickpad

Battery: 6 Cell Lithium-Cylindrical

spectre256 14 hours ago 0 replies      
I have a Lenovo Yoga 2 and really like it. nice form factor, 3200x1800 screen (great DPI on a 12" screen), pretty good battery life, and the folding screen lets me use a nice usb mechanical keyboard while on the go.

The wifi drivers are the only area that doesn't have perfect linux support, but the 3.18 kernel is a drastic improvement, and more are coming.

Also, the price is right, mine was only $1000.

keybits 12 hours ago 0 replies      
Dell Latitude's work well. I'm currently on an E6320 with Xubuntu 14.04. I've removed the DVD drive and replaced it with a 2nd SSD so I have dual SSD's in a 13" laptop. Everything works perfectly including the docking bay which allows me to plug in a 27" monitor at 2560x1440 via Display Port. Multi monitor switching works better than Windows 8.1 for me since it's hot swap and the windows retain sensible sizes for when the larger display is plugged back in (they all instantly resize in Windows).

The new E7440 is very nice and can be had for great prices on eBay. I tried one of these with the Full HD IPS screen. Unfortunately I couldn't get HiDPI to work to my satisfaction (even with latest Gnome and KDE). Having said that, I couldn't get Windows 8.1 to work to my satisfaction either.

scalesolved 14 hours ago 0 replies      
I own a Lenovo Thinkpad S540 and I just bought my second yesterday in the black Friday deals. For me it's been the perfect Linux Laptop, practically everything works straight out of the box, good performance and I use it for home and professional programming. It's slim and light, I've used it for travelling between Europe and the US and it's been fine on the move (definitely not as petite as other ultrabooks though).

The specs are below:

- Intel Core i7-4510U Processor- 15.6" FHD (1920x1080) Anti-glare Display Black- AMD Radeon HD 8670M Graphics 2GB- 16GB RAM- Keyboard Backlit - UK English- 256GB Solid State Drive Serial ATA3 OPAL2.0

I managed to get it for just over $1000 dollars yesterday so I know it's a little out of your price range but I find the keyboard solid, screen is pretty good and I don't notice any performance issues. (I mainly do Java development and that can be resource intensive).

Perhaps you could pick one up on ebay even cheaper, happy to answer any other questions you've got about it!

dandelion_lover 12 hours ago 0 replies      
I would suggest the 2014 Holiday Giving Guide by FSF [0].


bluedino 13 hours ago 2 replies      
Intel-powered Chromebooks are great for running Linux and you can get them for $150-$300

The best part is you don't have to run it inside ChromeOS, you can simply remove ChromeOS, enable the legacy boot loader, and use a regular old Ubuntu USB installer.

Of course, the models with more RAM are ideal, as well as being able to upgrade the M.2 SSD, but even a 2GB RAM/16GB SSD model will run pretty good, especially if most of your work is remote or on the cloud. Ubuntu 14.04 takes up about 7GB of storage.

I love older Thinkpads but these are cheaper, slimmer, and have more battery life.

cjbprime 15 hours ago 2 replies      
The ThinkPad series (T400s, X1 Carbon) has the best Linux support; kernel developers often use them. But they're out of your price range. Maybe you can find a deal on a T400, though?
jebediah 14 hours ago 2 replies      
I am going to break OPs rule: anybody here has linux running on a macbook air? I really wanted to get a light laptop with a long battery and found no alternative as good as MBA
jessaustin 13 hours ago 0 replies      
Depending on what you intend to use Linux for, a fairly recent Chromebook (I use the Acer C720) plus Crouton may be ideal. That won't be the case if your main activity is Gimp/Inkscape/etc., but it definitely could be if you spend most of your time coding in vim. While I do like Inkscape, I've personally never fallen in love with the office-type Linux desktop apps, so using google equivalents is fine.
nostromoa 9 hours ago 0 replies      
Are you asking about the best laptop or the best laptop for Linux or what. Seems like any Intel laptop will work with Linux (if wrong state which don't would be useful from someone). Using Ubuntu 14.10 seems fine if you don't like their wanna be for touch screens etc style, Google 'classic menu' and '14 things I did after installing Ubuntu 14 etc.' There is also Linux Mate which you can install over Ubuntu 14.10 for traditional desktop. Also you can install Linux in a Virtual Box Machine if you are running windows something or other. Separate Video card would be nice but not necessary. Linux will recognize your multiple processors in you Multi-Processor CPU unlike Windows which in many cases comes from the store set to default of ONE! <--outrageous.
erkose 13 hours ago 0 replies      
bufordsharkley 14 hours ago 0 replies      
I've been running Ubuntu 14.04 on an ASUS i3-- a real bargain, and no headaches (other than a weird thing where the hardware switch for wireless is automatically disabled on reboot).
pXMzR2A 9 hours ago 0 replies      
Also check out system76.com offerings. (I am not affiliated, just a happy customer.)
jhwhite 14 hours ago 0 replies      
The Gazelle from System 76 is $799. It comes with Ubuntu.
clarry 14 hours ago 1 reply      
What about the best laptop that's not tied to any particular OS? Also, is there something that's fanless and doesn't break the bank?
lucb1e 14 hours ago 0 replies      
Someone in class and I both have an Asus N56-series. He runs Fedora, I use Linux Mint. No problems.
umrashrf 14 hours ago 3 replies      
Asus ZenBooks are good.
foolinaround 14 hours ago 1 reply      
one more nice to have is a backlit keyboard on the laptop. I find that it makes a world of difference as I try to hack away in the dark...
jqm 14 hours ago 0 replies      
Agreed on Thinkpads.

I just picked up two oldies (core2 duo) for less than $100 apiece on ebay. No hard drives, but I had some laying about. Although the tech is old, the machines are in amazing shape (they are so well built). They do everything I need with full Linux installs for less than the price of a chromebook.

Ask HN: How do you keep up to date with security advisories?
5 points by duck237  9 hours ago   5 comments top 2
rgacote 3 hours ago 0 replies      
US CERT sends out a vulnerability list weekly on Mondays. You can also get frequently-updated RSS feeds: https://www.us-cert.gov/mailing-lists-and-feeds
stevekemp 9 hours ago 1 reply      
Mailing lists.

I subscribe to the Debian security advisory mailing list, and when new updates are released I ensure all that are appropriate are updated upon my systems.

I also use an RSS to XMPP gateway so that that the RSS feeds of Debian, Ubuntu, *BSD, etc are posted to an internal chatroom. Generally automated updates are applied every day, but sometimes it is nice to do them immediately.

(I also pay attention to oss-security, full-disclosure, etc, etc, but these tend to be less useful.)

Ask HN: Asking to co-own a web app with employer
4 points by jgmmo  9 hours ago   7 comments top 4
rahimnathwani 2 hours ago 1 reply      
Looking forward, what are the interests of both sides?

Could the company develop this SaaS offering without you? Could you develop the SaaS offering yourself, without the contacts, infrastructure and salary that the company is currently providing?

If you want a cut of the product, then it probably needs to be in a separate company. This may not be what you or the employer would like, as you're effectively getting into the same discussions about equity split, vesting etc. that multi-founder startups do.

If you just want a nice bonus based on revenue the product brings in (reflecting the value you bring, but also the value the company brings and the fact that you have a salary), then negotiate that.

grizzles 4 hours ago 0 replies      
It's pretty simple. You need to negotiate a deal with your employer now, quit the company or keep working at the company with the knowledge that they will own it. By doing nothing it will be regarded as a work-for-hire owned by the employer.

How would this be done: If they are open to negotiating with you, then I'd keep the deal pretty simple. Incorporate a company, figure out the structure of the cap table, and figure out how you are going to handle any obvious possible future disputes that will affect the continuity of the business. Eg. they stop paying you, you stop working on it, etc.

What type/amount of ownership should I request?In business you should try to be equitable and leave some money on the table. Don't forget about all the time they have spent testing and giving feedback on the product. Figure out how much time each side has invested in this product, and also figure out who is going to be a better custodian of the product if there is a dispute in the future. Change the cap table accordingly. You can if necessary separate these two concepts. For example, one side can have dominant voting power over the company, but distributions of shares could be (if deemed appropriate) payed out 50/50 between the parties.

Any other next steps (eg. like getting a lawyer involved) would be a dumb idea.

AznHisoka 6 hours ago 0 replies      
You probably shouldn't have told your company about this product. You came up with the idea, and implemented it, yes but in the company's eyes, you did it under their watch, time, and salary (even if it's partially true). Basically, they're going to keep all the profits if this succeeds, and you're just going to be in the same position, as lead dev supporting it. Good to put in a resume, but not potentially life changing.
carlhancock 9 hours ago 1 reply      
I've been in this position and it didn't go well. Definitely avoid this scenario in the future. You can ask but I wouldn't be too optimistic and the conversation may not go well and impact your relationship with your employer.

A long time ago I owned the domain name saintlouis.com and had started a site that somehow eventually came under the wing of my employer. Needless to say I didn't own the saintlouis.com domain when I left not long after.

Ask HN: OS projects looking for contributors?
3 points by blubbi2  11 hours ago   2 comments top 2
gault8121 3 hours ago 0 replies      
Check out Quill.org, a free literacy tool that provides writing, grammar, and vocabulary activities to K12 students. We're an open source nonprofit, and we currently have 45,000 students using our platform. We're primarily looking for help with our Rails projects (https://github.com/empirical-org/empirical-core/issues)

We also have a Wordpress community portal (http://community.quill.org) and an Ember/Firebase app (http://quillwriter.org).

Please feel free to reach me at peter@quill.org. I'm the founder of the project, and we'd love to have your help.

stevekemp 7 hours ago 0 replies      
If you're interested in fighting spam, and looking at JS-code, then https://github.com/skx/blogspam.js might be worth a glance.

#25 in particular makes my head hurt, and comments are most welcome.

Ask HN: How did Microsoft hold back the Internet for 6-7 years?
40 points by biznerd  10 hours ago   58 comments top 15
Joeri 8 hours ago 3 replies      
The truth is more shaded than saying they held back the web. What I remember is that IE 5 came out in 1999, and was a significantly better browser than netscape 4, which was my favorite browser at the time. So, netscape had an inferior product. Meanwhile microsoft also decided to bundle IE with windows, for free, on all new PC's. So netscape had a worse product and worse user acquisition. If you're a startup in that position, what is the logical thing to do? Well, netscape decided the most logical thing was to start a multi-year rewrite of their entire product, with the goal of having an identical UI, but a fresh codebase. IMHO, it is fair to say microsoft helped netscape into the grave, but it is also fair to say netscape did much of the walking.

So, from about 2000 until about 2006 IE was the only game in town because there just weren't any viable competitors (well, ok, there was opera, but...). Looking around and noticing they didn't have competition, microsoft figured they didn't need to iterate their product, so they didn't.

Now, this will sound strange to say now, but IE 6 had the best standards support, in 2001. However, it also had a lot of proprietary features which made things easy to do that were hard to do using W3C standards, which as standards tend to be weren't as developer-friendly as they could have been (I still think CSS's layout model is a big mistake). Web developers being web developers they couldn't resist those features to build stuff quicker, and they ended up building a lot of IE-only sites, which created the legacy which we are still battling today. And that made it very hard for upstart browsers like firefox to gain marketshare.

Now, again IMHO, it is fair to say microsoft did nothing to discourage people from using those proprietary features and getting locked into a dead-end platform. However, it is also fair to say you could and can build a standards-compliant codebase which is IE 6 compatible so developers were helping the jailer put on the chains.

I think blaming it all on MS is easy but inaccurate. It was a shared blame across netscape, microsoft and the web development community of the early 2000's, which ended up in a stagnated browser market from 2000 to 2005/2006.

wrs 9 hours ago 4 replies      
The very short, oversimplified version:

Microsoft leveraged their dominance of desktop computing to gain dominance of browser installed base with IE. Having won the battle, they stopped improving the browser as an application platform.

During the first period, Microsoft developed and deployed a variety of browser technologies such as Dynamic HTML (aka the DOM) and XMLHTTPRequest that moved the browser toward being a viable application platform. During the second period, IE stagnated and it was left to Firefox and, later, Chrome to pick up the baton. But they had to fight for market share for several years before having enough influence to make significant progress. IE has recently caught up, but that still leaves several years before enterprise customers will deploy the improvements.

Thus in 2014 there are still major gaps in the browser platform that really should have been solved some years back, and a large portion of installed base still using the transitional IE 8 and 9.

general_failure 9 hours ago 4 replies      
Short summary: there was a time when people paid for browsers. Microsoft started bundling IE for free along with the OS. This killed the paid browser market completely (bringing down companies like Netscape) as everyone started using IE since everyone was using windows. Once their position was established, Microsoft stopped developing IE. The IE team was mostly disbanded and there was no updated in IE for many many years.

Not progressing the internet was in MS' best interest. They wanted a world where desktop apps running in their OS was the future.

Ollinson 9 hours ago 0 replies      
I hate to give just a wikipedia link but I really have nothing more to add than what is there:


While this might not explain "6-7 years of holding back the internet" it definitely was not beneficial.

twa927 9 hours ago 2 replies      
"Microsoft cast a shadow over the software world for almost 20 years starting in the late 80s." It was not only the internet. In some way it was an evil monopoly that did everything to prevent others from innovate and forced usage of it's own crappy software. The citation come's from PG's essay from 2007 "Microsoft is dead" [0].

[0] http://www.paulgraham.com/microsoft.html

Rizz 7 hours ago 0 replies      
They didn't hold back the Internet 6-7 years. IE was far, far beyond whatever competitors offered, it might be more fair to say that Microsoft released IE6 years too early. AJAX, CSS, JS, all the cool technologies that make the web today were part of IE 6 (but not quite at the level they are today of course), and in addition to that there were some DirectX accelerated graphics, an advanced plugin system while other browsers only supported NSAPI, etc.

After that there was little innovation from Microsoft, but there was little need for innovation either, most developers looking for advanced capabilities used Flash instead of addressing the web browser natively, because that was the trend back then and Flash works on other brands of browsers as well, and for a while because a lot of people still used older browsers. For those reasons there was no developer demand for more advanced features, the features that were offered were hardly used for a long time

For example AJAX was publicly introduced in IE5 in 1999, while other non-beta versions of competitors appeared from 2002 to 2005. Websites using AJAX thus were rare until about 2004-2005. There was no need for Microsoft to add more technology until the competitors caught up. Unfortunately for Microsoft, the competitors didn't just catch up, they overtook them and implemented some features differently than in IE, those missing and different features in IE have caused plenty of grief for web developers ever since.

rythie 6 hours ago 1 reply      
It terms of how (from memory + fact checks on Wikipedia):Microsoft and Netscape battled over browsers throughout the late 90s with Netscape starting in the position of the dominant/only browser and IE was seen as a joke, that quickly, by the time IE5 (1999) was released Netscape seemed completely in technical debt with it's product when they couldn't support even the most basic CSS support in Netscape 4.x. IE5 was also the release that added support for what is now called AJAX.

IE6 was released August 2001, at which point it had most of the market, IE also existed for the Mac and most people I knew at the time thought of Mozilla/Netscape as completely irrelevant as a development target. Opera has basically always been irrelevant in my view. This started an era of IE-only sites which further damaged the competition.

Microsoft disbanded it's IE development team and it wasn't until a few years later that people realized that this happened (It wasn't announced till 2003) - people seemed to assume Microsoft was working on new version of IE, which was natural since it was pretty much the only browser in town.

WHATWG was formed in 2004 so everyone else (except Microsoft) could work on web standard because this had basically stopped at that point.

Firefox wasn't released till November 2004, which was the first time it looked like there would be a credible threat to IE (though it had been pretty good for a year before with Mozilla, but still unknown to most).

Acid2 test was created 2005 which further highlighted the problems with IE6's rendering: http://en.wikipedia.org/wiki/Acid2.

IE7 was released in October 2006, by which point web developers who had been trying to more and more with the web were thoroughly frustrated with IE and it's rendering bugs. IE7 was a big disappointment because it whilst it fixed some long standing problems like it's box model, it was still a long way off the standards that had been produced since IE6 and it didn't pass that Acid2 test.

In terms of why:I've wondered why for a long time now. Mostly, I think IE6 was already too good at being web application platform and Microsoft was worried (as they had been with Java) that this would make Windows irrelevant. Given that IE was effectively free the probably assumed there would be no viable competition due to the lack of business model. Microsoft stopping work on IE they could allow websites to work, but continue to make web apps that were too clunky to use so people would write native Win32 apps.

mwhite 8 hours ago 0 replies      
This post has a detailed description of the tactics Microsoft used to kill Netscape, which stalled innovation in browsers until Firefox.


That site also has a nice collection of evidence that Bill Gates' philanthropy isn't as great as you might think: http://techrights.org/wiki/index.php/Gates_Foundation_Critiq...

protomyth 8 hours ago 0 replies      
I think it is more than a fair statement to say Microsoft held back the web[1] for 6-7 years, but we settled on the web browser as the delivery for internet services and are still trying to shoehorn everything into it.

Microsoft had a monopoly in the OS market, gave IE away free, and provided tools and incentives to develop for IE and nothing else.

From a company's point of view, it makes a lot of sense. Cost and 90% of customers don't have any problems. The company has a standard development and testing platform. Cost is an amazing motivator and having that OS monopoly was an easy leverage point.

1) there are still issues with using educational / testing sites in any browser but an outdated version of IE. The college textbook with integrated websites could really use some disruption

T-A 9 hours ago 1 reply      
Just venturing a guess, I'd say it's a reference to early versions of Internet Explorer (particularly IE6, but also later) which combined a dominating position (thanks to Windows) with (1) an insistance on doing things their own way instead of following standards and (2) a very slow pace of innovation. This forced coding to a very low common denominator and/or duplication of effort for advanced features and different browsers. The impasse ended when other browsers became popular enough to make IE's dragging its feet counterproductive for MS, too.
danieltillett 7 hours ago 0 replies      
I think it interesting that no one here has brought up the fallout from the dot.com bust and 9/11. Both of these had far more effects on the pace of innovation than anything Microsoft did or didn't do.
naner 8 hours ago 1 reply      
Now it seems ISPs have been holding back the Internet (in the US). There's almost no competition on price, bandwidth, latency, etc. Nobody is pushing the envelope.
hnriot 9 hours ago 3 replies      
The very short answer is that they of course didn't. It's utter nonsense. I was around in those days, worked on Mozilla and Nutscrape etc. Back in the day there were many browsers, all spun off the Spyglass original code, the internet was pre javascript and it was a very different place. Then the browser wars started, there was Netscape and IE and others, back then it was viable for individuals to actually make a competitive browser, but over time they got to be big complex pieces of code, basically a VM. Security became a big deal and the open source movement built the best browsers, Mozilla, Phoenix and Firefox ten years ago. Microsoft tried to get the Internet to come to it rather than the other way round, just as companies like AOL did. They tried to add proprietary technology to lock in the internet to their Windows platform. Can't really blame them for that, but meanwhile every user on the planet was free to install any other browser they wanted. Just because they didn't isn't Microsoft's fault. They didn't prevent you doing so.

These days the internet has shifted from the desktop to laptops to mobile phones and tablets where Apple and Google have the lock in as Microsoft did. Apple allow other browsers provided they don't want fast javascript. Yet nobody's accusing Apple of holding up the internet.

The main things that really did hold back the internet was bandwidth, it was/is the phone and cable companies because they really do have a stranglehold on their customers.

Others here have suggested microsoft tried to stop others from innovating. Again, total bullshit, they forced exactly nobody to use their software.

I am no fan of MSFT, I haven't used their products in years, but someone who was around then really needs to set the story straight.

bascule 9 hours ago 1 reply      
If it is actually referring to IE6, in some ways IE's stagnation was helpful. Prior to IE6 was an arms race-like flurry of different browser vendors haphazardly slapping on features to their products, and the IE6 code freeze we saw thereafter gave standards-writers like the W3C and WHATWG time to catch up writing specifications for the web.
Ask HN: Winter reading + other activities for a stronger 2015
6 points by petecooper  17 hours ago   6 comments top 3
a3n 14 hours ago 1 reply      
"I will readily admit that although I can do a bunch of things well, I don't excel at one thing; rather, I haven't yet found that thing."

No book recs, but when I read that sentence I immediately thought: pick something that you would really like to excel in, and then immerse yourself in it. Don't worry too much about what you pick, because you aren't committing to that one thing exclusively for life.

Go from making simple toy-like items to really significant work products. DON'T be reluctant to start small; an immense ambitious project at the beginning can be daunting to the point of discouragement. Lots of silly inconsequential things lets you focus on the subject, rather than any artificial constraints on direction that a real project/product might impose.

Connect with whatever physical or virtual community is available for that subject and your circumstances.

Eventually make something that you want everyone to see and use, either as consumers of your thing or as producers using your thing to produce their thing. (I obviously don't know what your thing is. :) Write a Show HN post when you have something.

It's really thrilling to feel like you're devouring everything you can find on a subject, and it feels really nice when other people use what you made.

thret 16 hours ago 1 reply      
www.codecademy.com is okay I feel. I imagine you will want to get into websites/mobile apps, that kind of thing?

The truth is, the programming books I read in the beginning are all out of date now, I wouldn't know what to recommend today. However, I fondly recommend The Art Of Computer Programming by Knuth if you have a lot of time and no fear. Converting an algorithm from MIX to your language of choice is a good way to ensure you understand them both.

For depression, brain wiring, state of mind - maybe Gdel, Escher, Bach: An Eternal Golden Braid. It is quirky, stimulating and altogether delightful.

macmac 17 hours ago 1 reply      
Instead of reading I would suggest:

Watch this: https://www.youtube.com/watch?v=Dt5Qv9tUObI then begin to meditate.

Scryptmail, an encrypted email service. Now we open our doors for users
10 points by vvSaKvv  1 day ago   3 comments top 2
bramgg 21 hours ago 0 replies      
You should change #LoginForm_username from type "email" to type "text" or people will get this false error:



read 1 day ago 1 reply      
Congrats for bringing this to the world. A few questions:

1. Are you doing the encryption in a browser plugin?

2. How do you send the email without learning who the recipient is? Are you saving it on the server, thus not using SMTP, and then requiring both the sender and recipient to be users of Scryptmail?

Ask HN: Confused software developer
34 points by nxi  13 hours ago   48 comments top 25
peterhi 13 hours ago 2 replies      
Not wanting to be brutal but if you have 2 years experience of anything then you are no longer a junior. Maybe not actually a senior but certainly not a junior. Junior is like saying trainee. Stop thinking that you are junior.

You seem to play down your accomplishments "Just converted some existing HTML(static) sites to dynamic(developed a simple & crude cms like interface to edit the content on the website). I also made some simple web services"

Lets rewrite that for you:

1) Rebuilt existing site into a modern Web2.0 dynamic website complete with it's own CMS to make the sites easier to maintain for the users.2) Developed webservices to allow the content of XXX easily accessible by other services.

If your CV is like this post then it needs a makeover.

You are not a junior anything, you are an experienced ASP.net C# developer!

Building on your ASP.net and C# skills will provide greater benefit in the short term than becoming a noob in a whole bunch of other technologies.

SCHiM 12 hours ago 0 replies      
Not-an-expert-disclaimer here.

First of, believe in yourself. This sounds clinched, but what I mean that you should do is dare to take on more responsibility.

Presumably you don't advertise yourself as 'experienced' when applying for the job openings because you feel you won't be able to add value the the company you're applying to. I presume you don't trust yourself to be able to complete the tasks the company will ask of you and that you refuse to have the company lose money because of you.

The solution, in my opinion, is to inflate instead of deflate what you've done. Even if you yourself don't believe it amounted to much: having 'built a custom cms' on your cv will, if phrased the right way, sound like 'experience' to potential employers. You're not lying when you do this. You _have_ built that CMS, and even if it seemed simple it still counts for something.

I can honestly say that I've written accounting software for the marketing department of a certain company. On my cv this sounds impressive, and I've actually done it. In reality it came down to 500 lines of (very ugly)VBAv6 code in excel. Do I think it's the best work I've ever done? No, but I did do it.

Next, perhaps you don't realize this, but after a certain point the language you program in matters less and less. You see what's important in programming is not the languages that you know but the paradigms that you've mastered and the intuition you develop for doing things in a certain way. In C# you've learned object oriented programming. This experience is much more valualbe to you than knowledge of C# itself. With you having played around in Java, C#, Phyton it sounds to me that you've sampled allot of different ways of getting stuff done with programming.

And you do _know_ this, even if it seems so simple to you, putting on your cv 'two years experience with OOP' is true and a valid way of advertising yourself. Allow yourself to advertise the 'generic' programming skills you've learned with C# when applying for openings that require Java. You're not lying, and you'll see that you can live up to the challenges your future employer has in store for you.

When I wrote that VBA application I hadn't written a single line of VBA in my entire life, and while the source is a mess (I don't envy the person who needs to fix something in the future...) the program does work.

You _must_ trust yourself to be able to tackle the problems that could be thrown your way by your employer. That way you won't feel guilty when applying for a job and you can say that you are, in fact, experienced, which you are.

OliverJones 12 hours ago 0 replies      
With your level of experience, you should not make the mistake of jumping on, or off, a particular technology stack's bandwagon. Look, lots of worthwhile work happens in .net, and in Java, and in Python, and even in older languages. When the technology in a stack has inconvenient or irritating aspects, that's a big opportunity: if you're good at dealing with that stuff, you're valuable.

What counts? Getting stuff done, not indentation styles.

If you don't know SQL, now, while you're looking for work, is the time to learn it. Give yourself the assignment of building a program and maybe a web site to browse some kind of open data. (Historical weather measurements? Nursing home quality scores? Political donations? There's tons of open data available on the net). Get your system working.

For $10 a month, you can subscribe to an online books service like Safari Books. That should allow you to overcome the somewhat chaotic state of online teaching materials for popular software stacks.

echo272 12 hours ago 0 replies      
The way you describe things reminded me of a fairly recent Hacker News post: https://news.ycombinator.com/item?id=8630972

It's a about a blog entry of a self taught programmer who was changing technology stacks back and forth, I suggest you to read it.

As he concludes, the answer is to focus. IMHO if you don't enjoy .Net and you want to change it, go for it; you will need motivation along the way and if certain technology doesn't give it to you then learn something that does and STICK to it.

nolite 13 hours ago 0 replies      
Sorry dude.. you are looking at this the wrong way. This is an industry where you do not need a job to get experience, you just need to RTFM (of whatever tool you've adopted), learn it up and down, and find a way to apply it. That's what you get from experience. After that, people will hire you
drawkbox 11 hours ago 0 replies      
Most developers need 5-10 years to really get to be engineers and solid product makers. Until then work on teams that are better than you and get as much experience as possible.

Keep doing what you were doing in .NET or something you can take on. Maybe explore some new areas/platforms but only when you have some projects in them. You can learn to deliver product on any platform but change it up when you have the ability or in your free time. Start small in deliverable chunks always and build from there.

I feel that you need to slow down, write sentences into paragraphs, figure out what you want. Be concise.

You are focusing on the 30 year old thing, most developers are their best in their 30s+, so don't believe the hype. Think about it, graduate at 22 or 25/6 with masters if taking that route, 5-10 years of experience puts the best of their industry right at early to mid thirties as the starting point for good developers. Just because VCs want developers before you know your value doesn't mean good developers aren't needed. You need to focus on making yourself better in your eyes. You aren't there yet but you are on the journey and you are thinking about these things so that is a good sign.

Keep working at it, you have time. Right now though since you feel a little lost, just take on a .NET role, or something you can take on, and rebuild your confidence. You can make a product on any platform and you will learn many good patterns and anti-patterns even if that is not the platform you choose in your own projects. What you need right now is experience and some of it may suck but find the good/fun/learning in each adventure.

christopherslee 12 hours ago 1 reply      
What I tell most people to do is to build a lot of toy projects. A lot. Ship a lot of code out onto the internet for the world to see.

There are several purposes:

1) Building a lot of things will hopefully help you uncover different problems that you will have to struggle to solve. Hopefully after struggling to solve them, you will gain understanding. Just following hello worlds doesn't really help much. But when you're trying to figure out how to implement a "real-world" product problem, you'll have to figure out how to develop features that don't come for free with whatever framework you are using.

2) Also, don't write everything from scratch. Research what frameworks or libraries might help accelerate your development. Understand the pros and cons of using them.

3) Hopefully as you build more things, they will get better. And then you will have something to showcase to prospective employers. You'll have real code you can share with them. Be humble, get pointers on how you can improve. Bonus points if you have tests too.

4) It shows initiative and interest. I'd imagine these are important intangibles. I'd be very reluctant to hire an engineer who didn't tinker with things at night. (not necessarily all night, every night.)

5) Additionally, taking vague concepts and requirements and turning them into products does take some discipline. Which features will you keep, which features will you cut. How can you change your requirements and still get what you want. It shows that you can do things without being told exactly what to do, or how to do it.

Hope this helps.

canterburry 12 hours ago 0 replies      
First off, read this:http://blog.freecodecamp.com/2014/11/a-cautionary-tale-of-le...

Then, read this ranking of the most popular languages:http://www.tiobe.com/index.php/content/paperinfo/tpci/index....

Figure out what type of development you enjoy. Do you enjoy the backend, the frontend mobile etc. Different languages are good for different things.

If you like APIs and backend development learn java/scala or C#. Python is a really good all around programming language but you'll need JavaScript, CSS to do frontend web development. If you enjoy mobile, then java or Objective-C/Swift is pretty much a must.

Next, what kind of job do you want? If you want an enterprise job then java or C# is what you want. If you want to work for a small company, then many languages will do but Python is again a good bet.

If you want to be a freelancer, then probably you should pick a skillset to get really good at, whatever you happen to like, and stick to it. That's how you'll stand out against others and be seen as an expert.

I personally don't believe in knowing 5+ programming languages and claiming to be great at all of them. Pick 1 or 2 as your core, and then dabble in others. Your core languages you should be able to do in your sleep and be good enough to ace any interview.

Sakes 12 hours ago 1 reply      
Some more background would be nice. All I was able to gleam was that you have 2 years experience developing in c# which mainly consisted of converting a legacy code base to an ASP MVC code base. Don't worry about being 30, it just matters what you can do. So, with that being said.

How were you making money before you became a c# developer? It sounds like you might have been programming, but what specifically?

What city/country do you live in?

What did you like about the tech you were using before c#?

What did you like about c#?

What kind of app were you building in c#?

What kind of online articles do you find yourself reading when your mind starts to wander?

What was the vision you had for your life at 25?

How long did you spend writing your resume?

How many jobs do you apply for each week?

How many do you apply for each month?

I just want to get a sense of who you are. If I get that, I'm sure I can offer some good advice as to what tech to invest your time in, and possibly even some actionable steps for you to find work.

This will all work out. Success doesn't care how hard you fall, only how quickly you get back up. So put your fucking rally cap on, cause this about to be a memory.


phektus 12 hours ago 0 replies      
"I do not have experience due to which I cannot find a job and I cannot get a Job as I lack experience. Its like a dead-lock situation"

Nowadays, whenever a programmer says this a cat dies in the other side of the world. We developers are almost immune to this, because we have what we call open source software and free cloud services doing very specialized tasks. What I mean to say is that if experience is your problem, you should be glad to know that there are ways to gain experience without a job. This is quite easy to do in our field - contribute to open source, do some personal projects for portfolio, or even help out some startup in need of manpower. All these things can be done right now, and reaching out to HN is a good start. Relax, my friend. Just head out and continue on, say, the Python web development path, and pretty soon you will find some arrangement or gig that will get the wheels rolling for you.

disputin 12 hours ago 0 replies      
You say you're battling to get hired with only two years experience, but now you're wanting to abandon that two years of .Net experience and then go job hunting with skills in which you have no commercial experience. Build on the little foundation, stay with .Net at least until job hunting isn't a problem.
zeeshanm 12 hours ago 0 replies      
I pretty much agree with what everyone has said. But I'll just emphasize that you should believe in yourself and just try to fake until you can believe in yourself. Like they say "fake it till you make it."

And the only way to make it is to keep going and don't give up. Believing in yourself will help with not giving up. You'll be surprised how much you'd be able to learn by just not giving up. For example, I know this one developer who used to ask these ridiculously stupid questions on stackoverflow. I mean things like you can learn simply by reading the docs. But I've always known him having thick skin and just getting stuff done. Your aptitude can only help you to a certain extent but it is your attitude that can help you achieve great heights. Have a growth mindset and don't worry about not learning fast or what others have done.

mackraken 13 hours ago 1 reply      
Don't over think it or start self doubting. Are you getting interviews?As previously asked - where are you located?

1. You must network. Make the effort to go to local meetups, etc. One problem you have is that you don't have other developers around. Knowing how to market yourself comes with awareness and experience you get by having relationships with other developers. Get out to a local meetup or something.

Without knowing more, in general:1. If you're able to reduce your salary requirements then look for something that offers you a chance to build skills (sacrifice compensation for now). 2. You may need to relocate for greener fields.

As for tech choices, I think it's more about being with a team (or project) that is actively practicing high-quality code craftsmanship. Languages come and go, but delivering high quality code is a skill that sticks.

legohead 12 hours ago 1 reply      
Consider moving to an area with more jobs available.

As for your skills, continue to create on your own. You should know SQL and how to work with memcache or redis. Making an android app is good but if your career path is more towards web development keep toying around with that technology as well. Ideally you could build something and include it on your resume.

As nolite said, pick a language and stick with it. You need to learn one language inside and out and then you'll be able to pick up other languages that much easier.

And lastly, don't sell yourself short! You have experience, you are excited about this work and willing to learn, then you will do a great job. Let that show through when you interview. Tailor your resume to fit the job description you are applying for. Your resume gets you an interview, the interview gets you the job.

Hates_ 13 hours ago 0 replies      
You already have experience in .NET so I'm not sure why you are trying to move away from it to a language in which you have no experience at all. You mention the work you did on the simple CMS and praying that it worked. Build on those skills. If you could do it again what would you differently. What methods could you employ so that you didn't have to pray it worked. Read up on webservices so that you fully understand them. Getting good takes a lot of time. Even though I know a few languages and frameworks very well, moving to something new can feel like starting all over again.

The great thing about software is that there are plenty of ways to get experience outside of having a job. Write your own software or develop your own sites that show off your capabilities. Make the source available on Github if you want. Write some blog posts. Help out on Stackoverflow.

gfmyork 12 hours ago 0 replies      
I know people get fed up of C#/.NET because it feels so separated from what's going on in the rest of the development world and because the (relative) lack of open source community makes it seem quite dull. But it's a great language and a decent framework and with Microsoft open-sourcing so much of it a few weeks ago it could be on the verge of becoming more exciting.

If I were you I'd consider trying to get involved (or at least following developments) in the official .NET on Linux projects. That way you don't have to learn a new language but you can move away from Windows and Visual Studio. And try to get some practice deploying Linux .NET applications in Docker - I'd guess that experience will be in high demand in the near future.

eldelshell 12 hours ago 0 replies      
IDK anything about the job market in the UAE but I have an acquaintance in a position very similar to yours (self-taught .Net webdev with some years of experience) and my advice was to go into mobile development. You say you're doing some Android development. Stick with that and apply for those positions. If you publish something in the Play store, much better since you'll have something to show.

Use your knowledge (as limited as it might be) on web services as a leverage (all mobile apps use some sort of web service) and exploit it.

Also, try to apply to positions in consulting firms, since those usually grab the cheapest option and allows you to gain some real world experience.

jammycakes 12 hours ago 0 replies      
The main thing I'd recommend here is this: start building up an online portfolio.

Get yourself a GitHub account if you haven't already done so and start contributing to one or two open source projects. Submitting pull requests or patches to existing projects and having them accepted is one way of getting yourself noticed.

Start answering questions on Stack Overflow. Start a blog. Leave comments on other people's blogs.

Things like these can compensate considerably for a lack of workplace experience.

sharp11 12 hours ago 0 replies      
These are in no specific order and I haven't tried them. But, sounds like you might benenefit from some structured training:


kazinator 11 hours ago 0 replies      
> I am 30yr old software developer with 2 yrs experience as a ASP.net C# developer.

That's it? Your only development experience is that? No school or anything of that sort?

There is a backstory missing: how did you get that ASP.net C# job with zero experience?

stewbrew 12 hours ago 0 replies      
You say you don't have any senior software developer friend. Aren't there any opportunities for networking in Dubai? Meetups etc.?
dvanduzer 12 hours ago 0 replies      
Have you considered focusing your job search on systems administration, while continuing to develop your programming skills?
mansa 12 hours ago 0 replies      
Try harder, look for a job in start-ups and at-least for one year just do good work instead of looking for package.
byoung2 13 hours ago 1 reply      
Where are you located?
not_kurt_godel 12 hours ago 2 replies      
If your sloppy grammar and spelling are anything to go by, perhaps your issue lies with inattention to details.
Ask HN: Great and intuitive courses on Algorithms
5 points by Nib  16 hours ago   3 comments top
Ask HN: How do you design your CV's?
7 points by hoers  1 day ago   11 comments top 6
dopplesoldner 1 day ago 0 replies      
zubairq 1 day ago 1 reply      
Try Nemcv.com. There is only one design (candidates often hate this), because it is designed for the way that companies like to see candidates.

It allows you to focus on the content, not the style of your CV

jordsmi 1 day ago 0 replies      
https://jsonresume.org/ has a few good templates
shahocean 1 day ago 1 reply      
You can check out services like resumeonk. These people have got nice ready made templates.
richardknop 1 day ago 0 replies      
I just use LinkedIn's export to PDF function.
victorantos 1 day ago 0 replies      
if you have an ipad there is a pre-installed app there with some nice templates
Ask HN: From zero to IT career, what is the fastest path?
63 points by antirez  3 days ago   56 comments top 31
draugadrotten 3 days ago 3 replies      
I would say the answer depends on Where in Europe your friends are seeking employment. The job market - and the job requirements - are significantly different between Rural Romania, Berlin or an oil field in Norway.

They are 30+. General advice there is to stay away from competing with the 20+ crowd. Compete where age is on your side, which means go into business where you have 10 years experience over the young ones. If you were a carpenter and want to be a programmer, build solutions for the construction industry. If you were a car mechanic, build solutions for the car salesman. You get the idea.

For starters, your friends can choose between getting an education , or trying their luck at "skill". If they want to work for big corporations, education is mandatory. If they want to work for small companies, education isn't going to be as important, but reputation is key. Be sure to never leave a job unfinished, and always ensure your customer is happy. Your happy customers are your salespeople.

If one of your friends are already fluent in HTML/CSS, it's natural to go into the custom wordpress theme coding, etc. This is not really an IT job anymore, but a part of the advertising industry. Pays poorly, and will continue downwards.

Your DSP friend is in better luck. This is a hard, difficult-to-learn skill. Especially if he also understands the advanced math behind it. Good DSP jobs are found in larger industries, so if he doesn't have a math degree, that would be advised. Having a Master's degree and being good at DSP programming will secure a very good future with few competitors.

As for "programming", that's not really one job but a wide field of jobs. Marketing style jobs are plenty and small, and available for both web and mobile. They pay poorly though. Corporate 10000+ hour projects or salaried positions are out there, but almost always require a M Sc.There are always going to be plenty of 100 hour projects at smaller companies, but it's poor job security.

"Programming" in general is also under very heavy fire from outsourcing to lowest bidder, so I would not advise anyone to start it as a career.


mping 3 days ago 0 replies      
I'd say to them: learn Java.

Java is in high demand, and if you know either C and/or PHP I'm sure your friends will pick it up. Although there's some competition, you don't have to worry with competing with the 20s kids as long as you are an OK programmer. I believe there's enough demand for your friends to get hired, and theres a ton of resources on java stuff. Better yet, if you can manage to get Oracle certified, I'm sure that no recruiter will put you aside.

Consulting is rather easy to join (comparing with the other IT stuff, such as startups or reputed companies, consulting, etc), provided you can cause good impression with the recruiters. Technical interviews are normally easy, and there is scarcity on the supply side. The hard part is really getting the interview.

I helped a friend of mine who didn' finish his degree and was working in a music shop to enter the consulting industry. The plan was basically a) get some skills and b) bombard alot of recruiters to try and get interviews. We rehearsed some interviews so that he could feel the stress, and I pushed him to study some github projects. He got hired within a month or so, and he's on his second gig.

If you (or anyone) want my .2c, let me know.

Ryan_LOL 3 days ago 1 reply      
My #1 advice is to start by making your own job. This can mean bootstrapping a simple app, grinding away at building wordpress themes, or making paid programming tutorials.

This might not be the popular advice, but it's coming from a self-taught developer that now has > 10 years professional experience.

vassilevsky 3 days ago 0 replies      
I have worked as a tech support guy for PHP-based apps for ~6 years. Pretty shitty schedule and pay.

Then I finished all Ruby and Rails courses on CodeSchool. Then practiced myself, using mostly Google for info. This allowed me to apply to a Rails company as a junior developer. I got hired and trained. I love it.

redmattred 3 days ago 2 replies      
QA is probably your quickest path towards a job IMO. If you're willing to do manual testing but has some capability to do automated testing you can bring some real value.
daxfohl 3 days ago 0 replies      
Search for, and go hang out at meetups that cater to programmers and independents. Socialize. Find good people that have some boring, mundane work that they don't want to do, like converting photoshop to HTML or just rote testing, and offload it from them for cheap. Learn more about programming while you're on the job.

It'll be hard to find a "real" job for a while until you prove your mettle this way a bit, even at a small company. I speak as a small business owner; we don't really have time to hand-hold unless you've really proven your ability to learn quickly already.

edelweiss22 3 days ago 3 replies      
I know you're a proficient developer (to say the least) so maybe a clear perspective is a benefit: programming for a living is damn hard :) especially if you're almost starting from scratch suggesting node.js as a career path could be a sort of nightmare for a newcomer.

I'd suggest your friends to get their hands dirty with a popular open source project and getting involved in a software company doing technical support. E.g. apply at one of the many WordPress plugin/theme development companies (or any other popular open source consumer platform out there)

I suggest this in particular because such PHP projects are usually well manageable on the technical side once you get the grip.This does not involve programming at the start, but could very well be a "first step" into the IT world, and as paid by the hour could also be a side project.

Then, as time goes on, if the passion kicks in they can learn all the inside out of the things they're doing support for, and start from there towards working on development itself, or going solo and try building their own software project on the side.

As a dev for various software projects I saw some other support staff members grow their knowledge over time and in the end contribute to the project as developers themselves, also as a consequence growing their income.

jfmercer 3 days ago 1 reply      
My advice: buy a subscription to teamtreehouse.com. Take ALL of the courses on HTML, CSS, Javascript, and PHP and/or Rails. They should then take what they've learned and build one or more projects, preferably hosted in a public GitHub repo, that act as a portfolio for potential employers. If they prove that they've actually built a real project(s) that actually does something, they'll be on a good track to find a job.

IMHO, they should avoid programming books. You don't learn how to play baseball by reading a book about baseball; you learn baseball by playing baseball. The same is true for programming: they'll learn more by building something, anything than they would from a book. Books may help them later in their career after they mastered basic programming subjects. For this piece of advice, I'd add one caveat: I have met some programmers who have learned immensely from books, so, if one of your friends falls into this category, discard my anti-book advice. In any case, the focus must stay on project building.

Finally, I would add that if you, or someone else, or a number of experienced programmers could mentor them through this process, that would probably help more than any other resource.

johngalt 3 days ago 0 replies      
The quickest path to 'a job' is via operations. Sysadmin positions generally dont require CS degrees. Hobbyists will have enough general knowledge to useful with a fairly small amount of training.
agentultra 3 days ago 0 replies      
I would suggest for someone with previous exposure to web development and some design flair: learn Javascript. There are great boot-camps available and if front-end UX/design isn't in their interests they can fall back to Node.js

An alternative might be Python. It's an easier language to learn than Javascript since there are fewer "features" one must learn to avoid. It's also rather prevalent in the web development space. And the bonus is that if, later on, they want to transition to another area of expertise there are fields such as scientific and cloud computing that use Python rather extensively.

If the other friend is fluent in DSP and has some exposure to C I would suggest staying on that tack... take a refresher course in C and possibly pick up a scripting language like Python on the side. Check out Art & Logic: they hire remote developers and work with many clients on DSP-related projects.

Joeboy 3 days ago 1 reply      
It depends a bit on whether they're prepared to move. If they are then it makes sense to learn a niche thing where demand outstrips supply. If they don't live in a big city and need to find work locally it probably makes more sense to learn something popular, or where there is a known local demand.
sarhus 3 days ago 0 replies      
Id say a safe bet is Javascript, there are plenty of online resources, good courses online and whatnots. Although its true that self learning is possible, I guess the _fastest_ way would be to join few coding meet-ups (there are many here in London and they are free) and learn together with other people.

They should keep a blog/github with their progress too. They basically need to prove they can do, having a CV saying Javascript: 3 month online course wont work.

Are they prepared to move away from Barcelona or Vienna? Cities like London and Berlin are great place to look for a job in IT.

best of luck

shaohua 3 days ago 3 replies      
Learn JavaScript. Go attending the 3month JavaScript bootcamp with http://www.hackreactor.com. You have 99% of chance of landing a $100k+ job afterwards
nrshrivatsan 3 days ago 0 replies      

I would love to teach both of them Python/NodeJS/Java.

NO FEES! I believe in sharing knowledge for free.

@nrshrivatsan is my twitter handle.

Rest I will tell to them in person.

- Shrivats.

amsheehan 3 days ago 0 replies      
My friend and colleague Alex3917 was a YC non-technical co-founder (not sure which class) then decided he wanted to learn how to code. He's now really good at it and you should read this blog post on how he did it:


qeorge 3 days ago 0 replies      
Android is a great place to jump in. There's a lot of work for mobile developers and Java is a very marketable skill even outside Android.

The tooling (Android Studio) is also relatively accessible, and you don't need to know 4 different languages to finish a project (only Java, as compared to web programming where you'll need a working knowledge of HTML, CSS, and JS as well).

You can also ship something to real people relatively quickly, and without a gatekeeper. Shipping an app of any kind, even a free Android app, will force issues like QA, version control, and customer support which are skills outside of just coding that developers should have.

Finally, Android development has a vibrant community that's learning together, and the landscape is rapidly changing. Your friends could jump in now, and wouldn't be starting from too far behind.

V-2 3 days ago 0 replies      
Don't learn to program, program to learn. Of course this is just an adage. You won't learn good practice only by trial and error; that's reinventing the wheel. Still, writing (and rewriting) a non-trivial project in one's spare time is the best way to learn. It's comparable to learning a foreign language - you need to have live conversations, not just study grammar and memorize vocabulary.

Create some app of your own - or several - and opensource it once it is of fairly solid quality. That's a ticket to getting a proper programming job, even if you're in your 30s or 40s.

Do not overestimate the role of a technology stack that you happen to choose.

SethMurphy 3 days ago 0 replies      
UI UX Design (User Interface/Experience Design) probably has the lowest barrier to entry at the moment. This is a very different skill than programing but learning to program greatly enhances your value at the job and can lead to much better/faster results. I only say it has a low barrier to entry because it involves many soft skills (in addition to strong analytic skills), is one of the newer must have positions, and the position is still changing. However, don't underestimate how hard it is to excel at the position. Oh yeah, and learn Javascript no matter what.
hessenwolf 3 days ago 0 replies      
Getting the skills and getting the job are not necessarily totally overlapping.

Certificates in Javascript or whichever will look good on a CV, show willingness to learn, and open doors for you.

Then of course it needs to be backed up with demonstrable programming skills. Coding dojos, meetup.com events, hobby projects are all good for this, and can be discussed in the cover letter when applying for a job.

The age can be an advantage. I mean, I adore my younger colleagues, but they are politically retarded.

zeddotes 3 days ago 0 replies      
I'm a university drop-out because I had trouble paying attention in a classroom. My hobby/interest was development and design since I was 12 years old (am now 25) and created stuff just for curiousity and fun. What I was doing, unknowingly, was creating my portfolio which I would use to land many different jobs and establish a career for myself. The web is booming and we need more masons in the field.
FloNeu 3 days ago 0 replies      
http://www.theodinproject.com/ I am a web-developer since 15 years and i found this excellent! Also gave it to a friend who wanted to see if working in this field would work for him and he loved it. I find it really gives you great insights in the broad knowleadge required. all the best, florian
brandonhsiao 3 days ago 0 replies      
I'd suggest web development. The barrier to entry is extremely low, it's such a big deal that there are a bunch of libraries and communities ready to be taken advantage of, and it pays so well that sometimes you feel like a scam artist charging as much as you do.
antirez 3 days ago 0 replies      
Thank you to everybody is replying here. I and my friends really appreciate that. Thanks!
mmanfrin 3 days ago 0 replies      
QA, follow online tutorials while you work, ask to help write unit tests, then ask to write code.

My job title went from 'QA' to 'Engineer' in 3 months doing this.

blahblahOOO 3 days ago 0 replies      
IT is such a broad area. Getting in to Development, is pretty hard without any experience.

My suggestion, get on a technical help desk, and work your way up.

fillskills 3 days ago 0 replies      
If you need help figuring out which languages to learn to make the most money, or to get access to the most number of jobs, contact me at: abhi at hadipa dot com
peterwwillis 3 days ago 2 replies      
Software development is a hell of a lot more difficult to do right than all the other non-programming IT jobs.

If you want a job ASAP, learn desktop support, be a network analyst/systems analyst, systems administrator, database admin, quality assurance analyst/engineer/tester, etc.

A lot of jobs out there are just "we needed someone to set up this software for us and push a button once in a while", and they pay well. One guy I worked with had a job similar to mine, and he was supposed to be some kind of engineer, but he kept coming to me asking things like 'how do I sort the lines in a file?' Speaking of which, you should look for contract jobs or government jobs, or government contracting jobs. They require the least expertise and pay the most.

NicoJuicy 3 days ago 3 replies      
Perhaps you don't know how time consuming getting decent at programming is... I know people who just started a business (not in IT), who make way more money everyday then programmers.

Programmers get their source for income from online discussion (mostly) , while some people you know find local niches, not involved into programming. Eg. a take-away bar that earns 1.000$ / day from day 1 (we do their cash-register)... I don't see many programmers do that :)

timwaagh 3 days ago 0 replies      
the php/html/css guy should learn javascript and node. plenty of projects that use both and quite a few moving to node. the DSP guy should apply for jobs in the telecom industry. they need to apply to a lot of jobs until they get one. Also, spain seems to be a particularly bad place to be right now.
nickthemagicman 3 days ago 0 replies      
IT also encompasses Systems Administration. They could work on a CCNA/ CCNP /MCSE/ Red Hat certs.
j45 3 days ago 0 replies      
Your fastest path is to always be learning. I spent my 20's working to get 20 years of experience in 10.

Your best path is to pick something universally in demand and is largely in one technology/stack/framework to learn to create value with.

For this reason, (even thought I do specialized work) you may want to look into .NET or Java development for starters while rolling into learning other technologies.

Another angle that I have found in universal demand is mobile app development. Specifically creating only those types of mobile or web apps that can be created by Javascript to build prototype/functioning mobile apps using tools like appery/ionic while only learning one language, and at the same time you can touch web apps through javascript applications, be it node, or not.

You will grow and become a polyglot in time when you are always learning.

This way there is one core technology to learn to start creating value. With a lot of the other stacks you have to learn 5-10 different things and tie it together. I'd focus on building results and using higher level tools in the beginning while your talent depends.

And as always, ymmv

Ask HN: Technical books to get during BlackFriday/CyberMonday
28 points by ludwigvan  1 day ago   2 comments top 2
ludwigvan 1 day ago 0 replies      
Here are a few suggestions by me, tried to pick items that will hopefully stand the test of time, one per major publisher:

- Nathan Marz' (of Backtype/Twitter/Storm fame) Big Data (Manning): Don't let the name Big Data make you feel this is only for people with big data needs, in fact Nathan Marz tries to rethink how we store data. Immutable, append-only master data sets and views derived from them. http://manning.com/marz/

- Martin Kleppmann's Designing Data-Intensive Applications (O'Reilly): http://dataintensive.net/ in beta. "This book will help you navigate the diverse and fast-changing landscape of technologies for storing and processing data. We compare a broad variety of tools and approaches." Martin has been researching for the past year for the book and aim to have a timeless book on the subject.

- Colin Jones' Mastering Clojure Macros: Write Cleaner, Faster, Smarter Code (Pragmatic Bookshelf): This short, but dense book makes macros understandable. Recommended if you want to learn what makes Lisp so powerful. https://pragprog.com/book/cjclojure/mastering-clojure-macros

Aldo_MX 1 day ago 0 replies      
To start the list, I would recommend OpenGL ES 2 for Android: A Quick-Start Guide


Ask HN: Tips for selling a website/startup
11 points by philiplindblom  1 day ago   9 comments top 3
MalcolmDiggs 21 minutes ago 0 replies      
Flippa is still worth checking out. When you list such a high-revenue site on Flippa you'll get taken through a different track than normal. They'll act more as brokers for you than just listing your auction (they'll contact the buyers on their list, etc).
dangrossman 1 day ago 1 reply      
Most small website sales happen on Flippa -- https://flippa.com/

If you're hoping for more than $100K or so, you might look into brokers or reach out directly to companies you think might be potential buyers.

krzrak 1 day ago 1 reply      
The site seems to be down right now?
Django-hijack 1.0.2
5 points by philippeowagner  1 day ago   2 comments top 2
lazyfunctor 21 hours ago 0 replies      
Sounds interesting. This could be really useful.

In my previous project for a client I implemented a similar feature (though I named it masquerade).

Thanks for sharing it.

Ask HN: Is there an Emacs plugin for live web development?
4 points by jwdunne  1 day ago   1 comment top
auganov 19 hours ago 0 replies      
Not Emacs specific - https://github.com/webpack/docs/wiki/hot-module-replacement-...Emacs- wise there's several plugins that build on top of http://www.emacswiki.org/emacs/MozRepl to provide that sort of functionality.
Ask HN: How do you handle language communication problems?
7 points by tericho  1 day ago   2 comments top 2
luxpir 1 day ago 0 replies      
With regard to the documentation and commit situation have you considered looking into Plain English? [1]

As for interpersonal communication, perhaps doubly clarifying meaning, preferably in writing. This would force thoughts to be better articulated than a throwaway spoken comment.

Alternatively, how about flipping it and learning your colleagues' languages, or at least the key vocabulary you might need to communicate?

[1] https://en.m.wikipedia.org/wiki/Plain_english

ryno2019 1 day ago 0 replies      
Honestly, the main thing I can think of is: patience. I don't think there is a quick solution.
Working on an Emacs lisp package docs generator
5 points by samueltonini  1 day ago   discuss
Ask HN: What are you thankful for?
10 points by rjsamson  2 days ago   11 comments top 9
jayd77 2 days ago 0 replies      
Before I go to sleep, I run through what I did the whole day and be thankful for everything. That I'm alive, that I had a hot shower, that I have a heater, I have to eat.This also help me remember what I did the whole day and evaluate everything in a positive manner. The whole thing take me like 5min and it changed my life since I started doing it. It doesn't matter whether you believe in god or not, being thankful will make a difference in your life. Try it :)
RexRollman 2 days ago 0 replies      
I am thankful to the people who make the free software that I enjoy using. Off the top of my head: NetBSD, Firefox, Mame, Vim, FLAC, Lame, MPD, Scrot/FEH, Ratpoison, and Scrypt.
rjsamson 2 days ago 0 replies      
For me it's my family, a good job, and to be alive in an exciting golden age of technology.
maruidea 1 day ago 0 replies      
Of course my family, my health, and I am still alive :)
danbolt 2 days ago 0 replies      
Nice friends from my hometown! I've been working abroad the past eight months, and they've been loving enough to keep in touch with me every once in a while.
JoseVigil 1 day ago 0 replies      
For having the chance to keep on trying.
arisarnado 2 days ago 0 replies      
Automated testing :)
_RPM 2 days ago 0 replies      
microprocessors, the C programming language, the government for giving me money to go to college where I otherwise wouldn't have been able to go.
beeskneecaps 2 days ago 1 reply      
Unit tests so I can sleep at night.
Ask HN: Companies that make startup videos?
4 points by jlft  1 day ago   2 comments top 2
chatmasta 16 minutes ago 0 replies      
Checkout fiverr.com, there are some good providers on there.
thomasmeagher 1 day ago 0 replies      
Sandwich video has done product videos for Slack, Coin, Airbnb, Square, etc. http://sandwichvideo.com
Ask HN: What's your thought on data-sharing?
4 points by philiplindblom  1 day ago   discuss
Ask HN: Any deals on learning this holiday?
6 points by vijayr  1 day ago   3 comments top 3
Lennington 1 day ago 0 replies      
Designcode.io (80% off) - https://designcode.io/Bitfountain iOS Bundle (97% off) - http://bitfountain.io/course/iosbundle/?couponCode=blackfrid...

I don't have any experience with Bitfountain, but Designcode.io is a great course for designers looking to get into actually building their ideas.

m_ke 1 day ago 0 replies      
safari books online is 25% off
Ask HN: Best way for selling my webapplication
5 points by NicoJuicy  1 day ago   1 comment top
NicoJuicy 1 day ago 0 replies      
There's a demo on: http://www.ledenboek.be/EN/Account/Login?Demo=True

If anyone would be interested, you can fill in the form on http://goo.gl/forms/ejom4J7dSo (application was created in Dutch, some small parts aren't translated yet)

Ask HN: Where do you, personally, go to learn mathematics online?
4 points by trcollinson  1 day ago   3 comments top 2
Bahamut 1 day ago 1 reply      
Learning mathematics outside of a mathematics curriculum at a university is difficult, largely due to the fact that in higher level math classes, the professors become more like mentors - their aim is to guide you to approach problem solving with the right intuitions, and to prevent the all too easy rabbit hole of getting caught up in one approach to oblivion.

No text can provide you with this sort of benefit.

I came into software engineering after leaving research level mathematics. What I have found is that there are no shortcuts around investing a massive amount of time reading textbooks and trying to solve problems/figure out proofs. The time investment itself is what bakes the knowledge into your head.

This probably isn't what you wanted to hear, but at least do weigh these thoughts in.

smnplk 23 hours ago 0 replies      
This path might be of interest to you http://hbpms.blogspot.com.es/search/label/stage%201
Ask HN: How can we solve diversity in tech talent without allocating quotas?
6 points by kedargj  1 day ago   14 comments top 4
webmaven 15 hours ago 0 replies      
Quotas are exactly what you need. But not hiring quotas.

Feel free to adjust the percentages below, but this is what you should aim for to eventually get to gender diversity (for example):

Tell recruiters you want 50% of the qualified candidates they send to you to be female.

Evaluate resumes in a form stripped of as much identifying information as possible.

Half of all candidates interviewed should be female. If not, try to identify an additional upstream bias, perhaps at the resume evaluation stage (example: Women have less free time for side projects, so make sure that when you evaluate a Github account it is for quality not quantity).

Aim for diversity in your interviewers. Half of the interviewing employees should be female. If that isn't possible, at least one of the interviewing employees must be female (and if you only have one interviewing female employee, she should get a 'creep factor' veto, especially if anyone else in the company (like a founder) has a veto. If that isn't possible (because you have no female employees), fix it and hire a woman already.

That's it. No need for actual hiring quotas after that point, you should be able to hire for merit out of the interviewees. If you end up not being gender diverse (ie. only industry average or below), figure out why (perhaps an existing interviewing employee is setting of their 'creep factor' alarms so they don't accept your offer, or there is a promotion bias and talented women aren't sticking around after you hire them).

In parallel, you can make similar efforts around race, etc.

lastofus 1 day ago 2 replies      
Quotas are not the answer... (I can't think of anything I've read recently that hinted as such)

The answer is similar to the answer for problems that have been recently highlighted by the Ferguson catastrofuck.

And that answer is to figure out how to remove systemic and often institutionalized biases and narratives that have been baked into our society and in turn the heads of individuals growing up and living in it. That's the first step. The second is to figure out a solution to the income inequality that opens so many doors for some, and keeps them closed for so many others. It's about creating a fair playing field for everyone, where a theoretical, honest to god meritocracy could actually perhaps exist.

How does one go about doing that? No fucking clue.

EvanZ 1 day ago 1 reply      
Why not just hire based on merit, and let gender and race percentages fall where they may?
greenyoda 1 day ago 3 replies      
By instituting quotas, wouldn't companies be explicitly discriminating against potential employees (e.g., white males) based on gender and race, which is illegal under U.S. law?
Ask HN: An Online Incubator What would be a good way to build one?
3 points by philiplindblom  1 day ago   2 comments top 2
phantom_oracle 1 day ago 0 replies      
Not to detract you from your idea, but running an online incubator is probably ten times as difficult as a localized one.

Evidence of this can be taken from YC shutting down NYC as their other incubator-area.

Running in 2 locations is hard, imagining trying to manage startups from Hawaii to Sri Lanka.

That being said, there are online incubators, but there isn't so much competition to get in as there is for incubators like YC (unless all those fraudulent applicant mails count).

taprun 1 day ago 0 replies      
I would think the first thing to do would be to figure out what "unfair advantage" you'd have as an online incubator. One option would be to to find an affluent geographic area without a big tech community and then be "the only guy in town" for raising angel money.

You could own the "supply side" of money for the region and then advertise yourself as being someone who is able to fund people living in low cost places.

       cached 30 November 2014 05:05:03 GMT