hacker news with inline top comments    .. more ..    21 Jan 2015 Ask
home   ask   best   4 years ago   
It's time to abolish the HTTP referer
points by marco1  46 minutes ago   1 comment top
tantalor 20 minutes ago 0 replies      
It's a good thought... can you expand on it? What is the state of Referer in modern browsers? Why keep it? Would removing it break anything?

File bugs against browser developers to remove Referer.

Meanwhile users can disable Referer,

* https://chrome.google.com/webstore/detail/referer-control/hn... * http://www.technipages.com/firefox-enable-disable-referrer * http://www.nullrefer.com/hide_referrer.html

It could also be removed by a proxy.

This becomes less of an issue as sites move to https, where Referer is not sent.

Ask HN: What is unique about your company's culture?
points by bugsbunny123  9 minutes ago   1 comment top
patrickfl 3 minutes ago 0 replies      
Good question. I don't work at a company with a lot of culture so I'll refrain. I'd like to see answers to this from the same company, but the CEO's perspective vs a mid level workers perspective.
I bought js.org and want to give it back to the JavaScript community
points by jsorg  6 hours ago   11 comments top 6
josemando 2 hours ago 0 replies      
You could focus on redirects, maybe some for npm modules, other for jquery plugins, etc

Also you could link/redirect references, like the Mozilla one https://developer.mozilla.org/en-US/docs/Web/JavaScript (Mozilla rocks \o/)

yunyeng 2 hours ago 0 replies      
Lets create an online Javascript bible, not the frameworks like angular, ember, backbone etc... But core javascript, objects, constructor functions, bitwise operators. Everything about Javascript language should be there.
califield 5 hours ago 1 reply      
You could make it a redirect service for npm modules.

e.g. https://js.org/express 301 redirects to https://www.npmjs.com/package/express

Another idea is a blog. One of my favorite blogs is http://npmawesome.com/

galfarragem 3 hours ago 1 reply      
You could somehow use it to establish kind of an official page to JS-community. Right now js-community is divided, there is the angular community, the jquery community, the node community, the meteor community, etc, but a JS community that would aggregate all JS project communities is not organized yet. Without it JS will always look less popular than it really is.
thekillerdev 3 hours ago 0 replies      
subdomain + email is a good thing, setup a invite only "not so" closed beta staging, see if it works. Write a user agreement understanding that this is a test enviroment and making them aknowledge that all their data hosted on that email can be erased.

So you are safe, and can see if it at least work it out.

striking 6 hours ago 1 reply      
Free subdomains and email would be really cool, actually. However, who is "Everyone"? Who gets a subdomain/email address?
Ask HN: What language should I invest my time into?
points by niix  5 hours ago   10 comments top 6
jacquesm 5 minutes ago 0 replies      
It's good this isn't stackoverflow because this question would be closed in a heartbeat. I'm going to go completely against the grain here since you're asking about jobs and advise that you learn Java.

It may not be the most elegant language (to put it mildly) but it's a solid one and it gives you some interesting long term options such as to use your knowledge of the Java runtime and libraries by adding Clojure.

peterkelly 4 hours ago 3 replies      
Don't learn a specific programming language. Learn programming.

The book you want is here: http://mitpress.mit.edu/sicp/

tomconroy 3 hours ago 0 replies      
Learn Clojure (and LISP).

If anything it will help you write better JavaScript (immutable data structures, functional programming, functional composition, ...)

striking 4 hours ago 1 reply      
Every language is essentially a fad. The newest fads are Julia, Go, and Rust.

Go forth and learn, if you want. But language doesn't matter, it's what you do and how you do it that counts.

nevdka 1 hour ago 0 replies      
If your concern is job security, learn COBOL.

If you want to become a better programmer, to be flexible enough to write whatever software needs to be written over the next couple of decades, then diversity is important. Learn a Lisp. Learn a scripting language like Perl. Learn something low-level, like C or C++. Learn a line of business language like Java or C#.

Most software doesn't require mastery of a specific language, and having a broad background will mean you can adapt to whatever the future decides is 'in'. Learn a bit of everything.

Edit: Don't learn COBOL.

coralreef 4 hours ago 0 replies      
On what platforms/systems do you enjoy building things for? Software/internet isn't going anywhere. Everything appears to be gradually shifting to mobile, but I still think websites will be just as important.
Ask HN: How to approach making a 3D Game Engine?
points by Betelgeuse90  4 hours ago   8 comments top 4
partisan 2 hours ago 0 replies      
Something I didn't do: try making a game using SDL or some other game library before you go all in on your own. From that, you will learn how it can be done, from the public API. It will give you a sense of when things should happen and why.
cjbprime 4 hours ago 1 reply      
You could start with a simple raytracer? They're considered small enough to be an intro undergrad project, but it's still a very substantial amount of work.
mediumdave 3 hours ago 0 replies      
Don't write a game engine: write a game. You won't really know what features your engine will need until you have specific requirements. The generic parts - the "engine" - can be extracted via refactoring once you have a working system.
_pius 4 hours ago 1 reply      
Have you used other game engines? If not, I'd suggest you start by building games in a few different game engines so that you can develop good taste.
Ask HN: We Have Been Asked for a Price to License Our Online Game. How Much?
points by garrettdreyfus  2 hours ago   2 comments top 2
hashtag 46 minutes ago 0 replies      
Congrats. I have no advice to offer as I am not knowledgeable enough in this area but I would love it if you could do a follow up after. Would be informative.
kayhi 2 hours ago 0 replies      
Ask them for the range that they had in mind
Ask HN: What kind of salary should I be looking at?
points by codecurve  2 hours ago   2 comments top 2
techjuice 1 hour ago 0 replies      
What you should ask for depends on how easy your able to accomplish tasks and bring value with your work with the technology and business skills you provide to the company (How much money you generate or save vs them hiring more people to do what you do for less. Or how smooth and professional your work is compared to your peers.). You should also take into account how much money the company is generating. If your going to go work for a large bank your starting salary can be much higher versus going to work for a small or medium size business that does not have quarterly profits in the multi-millions or more.

Just be careful with the Senior level jobs, I would would not recommend going for them unless you really know the technology inside/out and develop in it with ease.

If your knocking out large applications with ease

Which are you:journeyman, junior,intermediate, senior, expert, master developer?

Regular ranges here in the USA metro areas are among the following:

For your general development:(Generic Java/C#/etc. General Website Design/Development)Journeyman:$50k-$59kJunior:$60k-$79kIntermediate:$80k-$89kSenior:$90k-$180kExpert:$181k-$250kMaster:$251k-$1M+

For high demand programming languages/skills(Ruby/PHP/Java/Python/Node.js/large company Java and/or C# high performance optimization on the JVM or .NET Framework or websites and automation)Journeyman:$60k-$69kJunior:$70k-$79kIntermediate:$80k-$89kSenior:$90k-$199kExpert:$200k-$399kMaster:$400k-$1M+

For specialized programming languages/skills (GPU/Cuda/OpenGL/ORACLE/C/C++/Cryptology/Game Engine development/Finance/Graphics or Animation software)Journeyman:$90k-$99kJunior:$100k-$119kIntermediate:$120k-$250kSenior:$250k-$400kExpert:$500k-$750kMaster:$750k-$2M+

Also note these are for salaried positions, if interviewing for contract positions you would double the amounts since you are also covering the employers share, your own vacation, medical, dental, health, life insurance, savings, and investment income.

Just remember don't sell yourself short and get what you know your worth.

grhmc 2 hours ago 0 replies      
My strategy is to look in the mirror, and say a number. $60,000. Go up... $80,000. $90,000. $100,000. Until you laugh, then step back down one. Then ask for that. I've never been turned away from a job for asking too much.
Ask HN: Best way to get beta app signups?
points by rohitrajan  8 hours ago   2 comments top 2
orky56 21 minutes ago 0 replies      
1) Create a landing page with an easy-to-type and remember URL.

2) Convey the basic value of the app (why it matters, why it's relevant, why should they use it over the competition, etc.).

3) Give users ability to give email address and other optional info such as name or other survey questions.

4) Create at a minimum a chance to have users give their friends email addresses. Even better would be to give them an incentive to invite (quicker access, additional features, etc.). Check out untorch.com for a easy turnkey solution

Using a mail service, you can automate sending an email with the build invite.

bbcbasic 2 hours ago 0 replies      
Walk up to people on the street, explain what you are doing, and ask for their email.
Ask HN: Why are there never any job postings for non web positions?
points by nsnick  9 hours ago   58 comments top 12
vinceguidry 8 hours ago 11 replies      
Web development is hot right now. Really really hot. In Atlanta, code school grads with little experience are getting snapped up as soon as they graduate. I'm having to look to Eastern European remote talent because salary expectations in the US are unreal.

Literally every company needs a web presence, and it's quickly getting to the point where the usual crappy UX just isn't cutting it.

It also happens to be as hard or harder than most other types of software engineering. You have to stay on top of trends, keep building your skills. You don't deal with algorithms much, but your OOP needs to be on point if you hope to build something maintainable for the web.

Most of the potential talent has a subtle disdain for web work, everyone wants to be a game dev or do stuff that's math-heavy or algorithmic.

So giant shortage of good web programmers.

minimaxir 9 hours ago 1 reply      
The job postings are only for YC companies, of which there are not-as-many non-web/mobile companies.
polvi 7 hours ago 0 replies      
All YC companies build technology, however many (most?) are building technology for markets that traditionally have not used technology in a modern way. These are things like cleaning (HomeJoy), flower delivery (Bloomthat), t-shirts (Teespring), etc etc. Theses technology enabled businesses are the ones that primarily use web/mobile, and thus all the jobs.
gizzlon 6 hours ago 0 replies      
As others have said, web development is hot right now. In my experience, it's hard to find people willing to build customized back-end stuff. It's probably too expensive, and companies just buy whatever ready-made solutions that kind-of cover their needs. (think ERP, CRM's etc)

The demand for web-devs might be artificially high right now, as most normal people have not yet discovered that they do not really need a programmer to build their website. I think Squarespace / Wix / WP etc, maybe with a custom design, should cover most websites.

I've been doing back-end web programming as a freelancer for a few months, but it's really hard to find good clients, so I'm moving to something else.

jtbigwoo 7 hours ago 0 replies      
It's partly selection bias. The content here probably doesn't have as much appeal for the middle managers who do a lot of the hiring at big companies.
mwfunk 8 hours ago 0 replies      
I always assumed it was because HN is somewhat specific to YC and SV startups, and pretty much everything that YC and other VCs are investing in right now is mobile and/or web stuff.

There are plenty of other tech jobs, just not necessarily in the startups that YC focuses on.

drtse4 8 hours ago 1 reply      
If you are referring to the monthly jobs threads i was wondering the same thing, i would have expected more people searching for mobile developer (especially freelancers), but i guess mobile apps are not yet the new "website".
mathattack 6 hours ago 0 replies      
The warning sign of 1999 was Marketing majors becoming web developers. Are we there again?
yellowapple 7 hours ago 0 replies      
Because this site has been overrun by (and/or revolves around) Silicon Valley entrepreneurs who don't give a damn about something unless it's in the form of a single-page noSQL web-scale big-data in-the-cloud CrappucinoScript imperatively dysfunctional HTTP2 Wangular.js monstrosity written by "hipster rockstar ninja devs" wielding Macbooks and plaid shirts and pocket calculators and half the inventory of ThinkGeek in a mockery of actual programming? ;)

More seriously, it's because web developers are in high demand, so there are going to be more postings for them; having a proper web presence is absolutely vital to modern businesses nowadays, and that requires developers to establish that presence. Hacker News is also run by YCombinator, which specializes in funding startups - a market which tends to lean very heavily on web development, since many of those startups are based on web apps - and therefore will already have an inflated quantity of web development jobs by that virtue alone.

logfromblammo 7 hours ago 0 replies      
Journalists and novelists are both writers, but they do not compete in the same niche.

The former will need to do several hundred writing jobs per year, while the latter may only need two. Thus, 99.5% of writing jobs may be for journalist stories. Any novelist looking for commissioned work will not want to sift through 200 posts to find even one relevant listing. So people posting such jobs would probably get better results on a site that explicitly excludes the noise.

In short, there are more "lightweight" postings because the people who solicit them and do them need to secure new work more often. If you can make 20 websites in the same time that you could build one enterprise application, you will probably see that job advertisements are 95% for websites and 5% for business software.

serve_yay 9 hours ago 2 replies      
"Why does everyone listen to Taylor Swift? There are lots more musicians than just her."
citibank 3 hours ago 0 replies      
Citi Bank United Kingdom14th Of January 20153 Hanover Square, LondonW1S 1HD, United KingdomTl. :+(44)7024029803Fax : +(44)7024053618http://www.citibank.co.uk/

You Are Hereby Notified That Your Inheritance/Contract Payment Of 12,500 000 (Twelve Million Five Hundred Thousand Great British Pounds) Has Been Approved To Be Made To You Through Central Bank ATM Visa Master Card. Due to Fraud and E-mails from different Agencies without making the delivery to the rightful owners of the ATM Card We have decided to make the distribution to every individuals that was nominated as a Beneficiary by The Government Body of United Nation as a redeemable way of making life better due to the Economy Recession. and we shall send you the Certificate of deosit for you to go through it as well

You are to make available a details of Western Union or Money Gram of 3,300 for Shipment and Insurance Handling of your ATM Parcel DHL Courier Services and UPS Services.The Security Fees of 3,300 must be paid to be safe during the transaction and from unwarranted Bills from our client. After the Security Payment is paid Your ATM Card will be made available to you through your information you posted to us within 8 days because as soon as we received your information The Bank will inscribe your information on your ATM Card and send you your Operating Codes Via Alert on your Phone for Privacy and the card will be dispatch to you immediately.A certificate shall be issued to you to present to your Local Bank as a form of Identities and Recognitions as the bearer of the Funds.

For your information you are advised to call me to know your Funds Manager before you start making any payment call us through the Phone Number below.

You Are Advised To Re-Confirm To Us The Below Information Or Call Me Immediately For More Details: +(44)7024029803 You can E-mail here: (orabank24@gmail.com)

1. Full Name:2. Phone & Fax Number:3. Address Were the ATM Card will be posted to (P.O Box Not Acceptable)4. Bank Coordinate:5. Sex/Age:6. Status & Occupation:7. Country:

Best Regards

Brian McAreavey,CEO- Citibank Plc.Phone Number: +(44)7024029803 +(44)7024053618

Ask HN: Why is soylent worth $100M dollars?
points by giaour  11 hours ago   18 comments top 9
IanDrake 11 hours ago 1 reply      
>they've proven themselves unable to meet customer demand in a timely fashion

Well, that's a good thing, certainly better than the opposite.

>What makes them different from any other meal replacement shake vendor?

IMO, a focus on being a food replacement rather than a meal replacement.

A food replacement needs to have all your nutrition in one product. They don't care about taste.

Slimfast, as you suggested as a comparison, isn't meant as a 2,100 calorie/day food replacement. You'd have to drink ten 11oz cans to get that many calories and that would throw off the entire ratio of fat, carbs, protein, and nutrients per day.

In any case, soylent seems to have the right product/market fit.

toomuchtodo 11 hours ago 3 replies      
Same reason Tesla is valued so highly, even though they're not profitable yet. Expectations.

Also, their product is nutritionally completely. It's not slimfast. I'm sure you've compared the nutritional information, right? Of course you have.

fragmede 9 hours ago 0 replies      
Just answering "marketing" is a bit glib, but it's a large part of it. Read NutraFit's marketing on e page you linked - it's all about muscle building whey-powder protein. If I don't care to set foot in a gym, that doesn't appeal to me. Soylent identified an underserved market and is catering to them.

Underarmor had a similar revelation - selling what previously amounted to women's underwear, to men - and they've made a killing doing so.

GoPro is yet another example of this at work.

smt88 11 hours ago 0 replies      
Valuations have much more to do with social issues (faith in founders, quality of lead investor, size of recent exits) than it does the product.

The product could be terrible, but if all those things are in place, investors could be fighting each other to get a piece of the deal.

You can fix a product in the future, with enough money. You can't fix a founding team, and you can't go back in time to join a deal that you missed out on.

suchow 8 hours ago 1 reply      
Soylent has a bigger vision. Here's a recent statement of it by its founder, Rob Rhinehart. Start 5 paragraphs in.


joshtronic 11 hours ago 1 reply      
Shot in the dark here, but perhaps it's the fact that consumer demand is (and has been) so high. Unsure how many orders they have backlogged at this point, but they took money for each of those orders. For all we know, they could have 30m$ in back orders making that valuation pretty reasonable
SEJeff 11 hours ago 0 replies      
One word: Marketing
MalcolmDiggs 11 hours ago 0 replies      
Precisely because of this kind of thread. It's the rare meal-replacement shake that gets both detractors and proponents posting and talking about it all over the place. It's getting exposure and hype in channels that slimfast could only dream about. It's a marketer's wet dream.
deadfall 9 hours ago 0 replies      
Current Customers Sales + Potential Customer Demand = Value?
Ask HN: How do people with successful careers play the game?
points by nns  13 hours ago   14 comments top 8
marypublic 12 hours ago 1 reply      
Read this book: http://www.amazon.com/How-Star-Work-Breakthrough-Strategies/... and do what it says.

(I am a senior technical resource in an environment like you describe. Read this after I was pretty far along but it basically sounds like how I operated to get where I am.)

Don't waste time. Be mission/vision focused. Be polite to everyone always. Be helpful whenever possible. Be insanely organized. Do not be That Guy/Gal who is always forgetting things, late to meetings, doing the wrong thing, asking stupid questions about stuff that's already been covered in meetings, etc. Seek and respond to constructive feedback on your work. Do the sh#t work without whining. All of this will build human capital with other people in the organization, which will both practically give you more resources of help from others to draw on in your work requirements, but also increases your visibility with people who aren't on the front lines doing the work (e.g. Management). That visibility gives you the means to move in whatever direction you might desire. It also (for want of a better way to put it) usually tends to help make you layoff-proof because people know you are competent, professional, and have some flexibility to work as part of a team.

None of this means you are anyone other than who you are. Don't kiss anyone's a##, but also don't be an a##hole. At the end of the day with two people even remotely similar in "technical" capability, personal behavior will matter for increasing your effectiveness within any organization.

percept 12 hours ago 0 replies      
In a truly dynamic environment there should be more opportunity to figure out where you can best contribute as a team member. (Work is about more than simple technology.)

Maybe you're blocked in some areas, but are there others where you can help with your unique combination of knowledge and experience?

It doesn't even have to be directed at the core of the project. Some teams aren't good at creating infrastructure; maybe there's a need in the areas of documentation, devops, or bug tracking and fixing. Stuff others don't want to touch.

Consider starting there. (And always be thinking about your next move.)

tixocloud 12 hours ago 0 replies      
Be helpful.

A lot of people talk about playing the game. You don't have to play any game. Besides delivering the best quality work, Be helpful to everyone around you - including your boss, his boss, your peers, etc. Emotional intelligence is a huge component in driving one's career forward. Be sensitive to everyone around you. Know when to say and what to say at which time.

In addition to marypublic mentioned about being organized, I would say being able to communicate/articulate your ideas and turn them from complex details to simple nuggets of information.

alexpotato 7 hours ago 0 replies      
Every company/organization/group etc has multiple "dimensions" that they use to determine who is valuable and who is not.

For example, in a technical organization, one dimension might be ability to quickly create production level code. Another dimension might be ability to refactor legacy code.

In a sales organization the dimensions might be different e.g. ability to make existing customers happy vs ability to find new customers.

NOTE: even in the same company, one group may have different dimensions than other groups.

The key is to:

a. figure out which dimensions your company/group/manager are using to define value

b. if there are multiple dimensions, try to find the ones that are easiest/most natural for you but are hardest/least natural for others

c. focus on maximizing b

d. profit

Case in point: I once worked at a high frequency trading firm. I was one of the few people WITHOUT a STEM PhD. However, I was much better, relatively speaking, at over the phone customer interactions/support. Within a month of being there I was made Head of Customer Support purely as a function of being the group member with the best people skills.

Another key point, be wary of creating "Unspoken Covenants" e.g. "If I do X, my manager should do Y".

No they don't.

Go to your manager and say propose a mutually beneficial agreement. e.g.

You: "I would like an increase in salary/title/benefits/vacation days. I know that's a big ask but I know you value sales/code quality/production rate, correct?"

Manager: "Why, yes I do!"

You: "Great. I can improve that thanks to %ABILITY. If I do that can I get my initial ask?"

They should be saying "Hell yes!!" at this point. If not, you may have either misjudged what they value or you are dealing with someone who doesn't believe in mutually beneficial agreements.

sinelanguage 13 hours ago 1 reply      
Neil Young said it best, "keep your head down and walk forward". Don't just look at the people who you perceive are moving forward, look at the ones that appear to be standing still, and what do you think is the difference?. Sure there are those that have moved forward due to being able to dramatize with success the superficial things and say/wear/do/hangoutwith all the right things and trick higher ups into believing they have more real authentic capability than they actual do, but that only lasts so long. Where you really move forward is in your authenticity. If you authentically love what you do, and you excel at it, and you look forward to advancing it forward no matter where you work or what you're paid, then you're pretty much invincible. You will naturally exude passion for your chosen skillsets, you will embrace all that is thrown at you with gusto, and people will naturally gravitate towards that. Most of all, pay it forward. Mentor those around you in the same skillset area, and make a difference and demonstrate that even though you are an expert and SR level in your field, that the success of the team is rooted in the power of everyone being able to produce at the same level as you. When you do that, whether you are intentionally trying to impress your superiors or not, it won't matter, they will notice, and if they don't, then you have some choices to make. In field of dreams, the phrase, "if you build it they will come", applies to you as a person, if you become the highly skilled, sr level expert, that exudes passion and innovative mindsets, people will come, they will gravitate towards it and you will be successful. Maybe not as fast as those just phoning it in and playing the parts really well, but slow and steady always wins the race. I work in a highly competitive environment and I am not even a full time staff, yet because I practice what I just preached, whenever a PM needs dev work done, my name usually comes up very early in the conversation. That wasn't a calculated thing on my part, I didn't play a game, I didn't coax anyone my direction, I just work really hard because I love being a developer, I constantly evolve and advance my skills because I feel empowered when I build more advanced things with code, and my authenticity and passion is obvious and authentic and people with good intentions will always appreciate that and gravitate towards it. Now does this work EVERYWHERE? Hell no, but its up to you to decide what works for you in terms of where you work, and don't compromise your authenticity just to move up or make more, its not worth it in the end.
partisan 12 hours ago 0 replies      
Sounds like a great place to be. I would say you should pick someone who you admire most in the group and try to emulate their behavior.
rubiquity 13 hours ago 1 reply      
I would work on finding an environment where only high quality work matters. If you're in an environment where ass kissing matters you aren't actually in a high quality environment.
bjourne 12 hours ago 0 replies      
What is a successful career to you?
Ask HN: How do you find freelance/contract gigs?
points by eatonphil  2 days ago   102 comments top 46
keithwarren 2 days ago 9 replies      
I have been on my own for 15 years. I bill around 150/hr give or take 20% depending on the situation. Most of the work is Microsoft stack web related but mobile apps and api building has been steadily increasing for a several years now to the point that probably 20% of my 2014 revenue was in that space.

50-60% of my revenue is sub-contracting. I have a few firms that often take on projects that they are not suited for or do not want to increase staff to cover and they often sub out all or parts of the project to me. These relationships were built through networking with other developers who worked for these companies - never the bosses per se. Meet other devs and when the company needs help, they remember and recommend. In my experience this kind of introduction is about 5x as fertile as a cold intro.

Roughly 30% of my revenue is from direct relationships between myself and another company. These tend to merit a higher rate but also increased risk.

Very few of my direct relationships start from cold calling/intro (not sure if any ever did actually); most came via word of mouth recommendations of other people. Networking at the right kinds of events can also increase your profile and help you meet the right people.

ProTip: Networking at networking events is a terrible idea.

Lacking a sales force the best pseudo sales force you can create are acquaintances who understand your skill set and respect you as a person. They don't need to see your work, they don't need to have hired you before - to drop your name to someone who asks. They need to know your name, what you do and have a generally good feeling about you. If you pay them back for this, even with a simple thank you or lunch - they will continue to be an advocate for you.

Another tip which probably falls into the anecdotal evidence category - get off of ODesk and ELance. You are right about the price war. Your name and value to people also gets damaged because you seem to be just another guy among thousands who need to find work that way - it is a 'dime a dozen' mentality and they will always see you as that.

msutherl 2 days ago 0 replies      
Pro tip: when people say "build a network," they really mean "make friends in your and related industries." Like, actual friends: people you go out for drinks with and enjoy talking to. The trust you build, as friends, will lead to work.

Normally you meet these people in unexpected ways. Just today I was offered a potential job from a girl I met while auditioning apartments. I've also gotten jobs from people I've met on dating websites, on the train at 2am coming home from a party, and on unrelated online forums.

Leave the house, keep an open mind, be friendly.

USNetizen 2 days ago 0 replies      
Network, network, network. Referrals are the prime driver of business for many, if not most, freelancers. When you get a client and have done good work, ask them "what three other people do you know who could use my services?"...things like that. Don't be afraid to ask for it. Get out of the home office and attend events and conferences. Start meeting people and ASK for their business. Don't be shy about it.

Also, don't expect much from cold emails. It's way too impersonal. Telephone calls are only slightly better, but in-person events are by far the best. Your goal should be to MEET as many people in-person as possible.

notduncansmith 2 days ago 0 replies      
I do business pretty exclusively through referrals in my network. Every now and again someone will find me through my site, but I do 0 outbound marketing/sales. Caveat: if I were consulting full-time, I would be doing content marketing and have an autoresponder series.

Actionable tip #1: whenever you do work for someone, be sure to get a testimonial. If possible, do a full case-study on your engagement. Feature these prominently on your site. Then, just keep in touch with everyone you do business with. DON'T directly ask for referrals. Just ask how their business is doing. Make it about them. They'll remember this and like you for it, and you'll be at the front of their mind when the topic of consultants comes up.

Actionable tip #2: read this blog post by Patrick McKenzie, the man's advice is pure gold. http://www.kalzumeus.com/2011/10/28/dont-call-yourself-a-pro...

Loic 2 days ago 1 reply      
Build your network and nurture it. Then, after a while it will come along nicely. I run my business in the field of chemical properties, fluid phase equilibria, so really a niche market, but every year, I send a card to all my contacts in the field (100+ cards) and I try to write a personal note for each person. I takes time, but it now a kind of tradition I do not want to break (started for 2008). On the back of the card, I have a link to a summary of my year and what is coming next. 80% of my contracts are coming after such card.

Front of my 2015 card:


I use Moo to print the cards, quality is great and service excellent. This is a referral link, just remove the /share... if you do not want to follow the referral.


asgeo1 2 days ago 0 replies      
I get most of my leads from either:

* My website. I rank reasonably well in Google for search phrases such as "Freelance Developer in $mycity". Probably if I blogged I would get more traffic. But it doesn't hurt to get a website going, and see if you can get ranked in Google for a particular geographic area. I suppose it's only really useful if you live in a city large enough that businesses are trying to find developers in via Google.

Also I've found that the people who do search Google for developers in a geographic area, are generally doing this because they want someone local, and have often previously tried offshore developers and not liked the results.

* LinkedIn / Github / Stackoverflow - occasionally I get leads from these sites. LinkedIn is easily the best of the three. I don't think you even need many connections on LinkedIn (I've only got 60). I think I just show up in the search results. Usually LinkedIn you will get recruiters looking to fill a contract job. Github/Stackoverflow are usually other developers from a company looking for someone to help out on a project.

I'm a bit disappointed in Stackoveflow Careers - I've never had a lead from there, which is odd.

* Referrals. This is probably the best way to get work - it would be hard if you were young and just starting out I guess. I've found that now and then clients will mention you to other potential clients, and it does kind of snowball a bit once you've worked for enough people.

FigBug 2 days ago 0 replies      
I've been contracting for 4 years. I have received 1 job via my website. The rest have been through contacts, primarily through people I previously worked for when I was a full time employee. I've got a few through people I know from cycling. Cycling is apparently the new golf. http://www.economist.com/blogs/prospero/2013/04/business-net...

I find events and conferences to not be much use, unless they are very specific to your industry.

dmarques1 2 days ago 1 reply      
There are a few services now that scour dozens of sites around the web for freelance dev jobs, haven't tried one yet but have considered:https://freelanceinbox.com





netaustin 2 days ago 0 replies      
I run a medium-sized digital agency that started as side work that my co-founder and I basically fell into. We ran our business on the side for about a year before going full-time. I would advocate stepping back and asking what you're really looking for out of the time you have and proceeding carefully.

Selling software development services as an individual is extremely risky, especially if you are selling services to buyers who are not tech-savvy. It takes patience and energy, and software developers have a finite amount of these resources.

Serious consulting generally requires daytime availability. It's a slippery slope from "side hustle" to "leading a double life." If extra income is what you're after, is it an option to change jobs for better pay, or to get more income from your day job?

One bit of advice if you stick with this plan: you can make the sideline nature of the contract work a benefit in your clients' eyes if you set your rates at a level where they feel like they're getting a good deal compared to what you'd be charging if you worked full-time as a consultant. You can also mitigate the cost to your performance at your day job if you consult on a different technology than you use at work.

But if your day job is in professional services, I strongly recommend against contracting on the side. If it's all you do, work-for-hire will slowly kill you.

clapas 11 hours ago 0 replies      
I am in a similar situation to the OP and I'd like to thank you for all your valuable sharings.

For me, it seems obvious that referals are the best way to attract new clients, but there are times when you just don't have them. I agree with most of the comments about freelance sites not being worth the effort, but I want to contribute with my perpective on cold-emailing or cold-anything.

Although I don't have much experience, I found very usefull an advice from the blog of inboundsales.net: the people you contact when you do cold-something are regarded as "suspects" (everyone in your target market). As such, they will not be receptive to invasive sales messages, but they will value your knowledge and will appreciate any great content you are able to share with them, like infographics, non-demo videos, interesting articles about their problems, etc. Then, if they take action, they become "prospects", and so on. It is a kind of science, not easy for us computer geeks. I am starting with this in mind and hope it yields good results.

dannyr 2 days ago 1 reply      
I did contracting for over 2 years. All my contracts were through a referral from my network.

I never had to do cold-emails.

I live in the Bay Area though where there are a lot of companies looking for somebody to build their Android app.

What's great with the network though is that I never had to negotiate rates since there's already some trust established.

Those who found me through LinkedIn though seem to negotiate a lot with rates which can be a pain.

lwhalen 2 days ago 1 reply      
Not to hijack someone else's thread or anything, but if folks have a line on a site that pairs 'people who need *nix-based system administration/automation/devops-anything' with 'system administrators/automaters/devops engineers' and could post it, I would be deeply grateful.
asfarley 2 days ago 0 replies      
I've had some success on elance. The trick is to be extremely selective about who you will talk to. Also, refuse to compete on price. The good clients will see the difference; if they're comparing you against a large firm, you will be competitive on price even if you're making a reasonable hourly rate.

Lately I'm starting to think that both of these points apply to freelancing/contracting whether it's online or through some other channel.

Also, build a decent portfolio of your work.

tomasien 2 days ago 1 reply      
I almost entirely use my network to get jobs - if you possibly can, build a personal network, because that network will start referring you to people as an expert. This will allow you to rapidly increase the price of your services. I know this is difficult to get started - but whatever you do to get your first few jobs, make those people into contacts and over deliver.

As a side note: anyone doing freelancing that is struggling with the tax part of it, would love to get your feedback on http://painless1099.com - a smart bank account for your 1099 income that does automatic withholding and helps make your tax situation more like that of a W2's. Product is deep in development by some awesome folks (I'm advising) and they still need more sophisticated eyes on it to get the alpha right.

cahlansharp 1 day ago 0 replies      
I've found that other programmers are one of the best places to get your first few gigs from. The best programmers are too swamped to take on extra work, and many are eager to refer rejected clients on to someone they can make a solid recommendation for.

So I would personally try to network with some well-known, talented folks in your own community and let them know you're looking. If they trust you and are good, you'll likely get referrals.

From there, if you treat your clients well and do good work, freelance will find you. You'll quickly find yourself having to say "no" to too much work. Word of mouth is a very powerful referral source when it comes to contract work. It can also work against you very powerfully if you don't do a good job or screw anyone over.

wsc981 2 days ago 0 replies      
Some companies (in the Netherlands) don't want to deal directly with freelancers, for legal reasons. Also, they don't want to bother looking for developers themselves, while at the same time they are not interested in providing developers with any permanent positions. Usually they use a middle man to find appropriate developers for a fixed fee. Such a middle man might be able to provide you with several clients you'd not be able to contact yourself directly.

Some headhunters don't mind dealing with freelancers either. Currently I'm freelancing through Computer Futures.

robwilliams88 1 day ago 1 reply      
I run workshop (a service mentioned already: http://letsworkshop.com that delivers freelance consulting opportunities)

I've seen this question come up a lot and its part of the reason I started workshop. For me emailing companies who specifically said they were looking was great because I was able to control it directly.

Since starting workshop I've helped hundred of freelancers make a lot of money, but some continue to make nothing. It mostly has to do with the emails they send and a few big common mistakes:

-- emails too long -- blab on about themselves-- obviously scripted-- don't propose a next step

It's easy to focus on the wrong things. "What's the Best job board?" "There's not my exact perfect match" "there's not enough opportunities"

But if you focus on emailing one person everyday that needs help, and write an email focused on their problem and not you, you CAN and WILL make a lot of money.

I've seen it with hundreds in your position

jules 2 days ago 0 replies      
Referrals, and some gigs found me after I wrote some technical articles. I have not done any cold calling and I have not used any freelancer sites. If you're good then it's a bad idea to participate in a lemons market. It's much better to start from a position where you don't have to convince your client that you are capable of delivering value.
sheraz 1 day ago 1 reply      
I'm late to the game here, but I'll chime in. There is a general consensus here that networking is the fastest path to that first dollar, and I agree.

The freelance marketplace is a big reason I created 3cosystem[1] - the biggest and most comprehensive tech and startup event calendar.

See if your metro area is listed. There are certainly a number of events popping up around you. Show up early and talk to the organizers. They might mention you in their pre-game presentations.

[1] - http://www.3cosystem.com

raeldc 1 day ago 0 replies      
I became a freelancer shortly after graduating college. Though sites like Elance/Odesk/Freelancer.com(GetAFreelancer back then) provided me a platform to start with, it didn't take long before the cutthroat prices made it unsustainable.

The answer, which has been mentioned already by other commenters, is network. You need a great network and a great reputation. The real question is how do you build a great network? And how do you build a great reputation? As an introvert geek with only a drop of marketing prowess in my DNA, I struggled about the same questions.

One way I built my network is through Open Source Communities. Joomla! was just forked out of Mambo back then and there was an opportunity to participate in the then small community. So I joined the community, made friends with the right people, and I made a living out of building Joomla! Extensions. I also participated in other OS communities like Django, Kohana, and many others. The more I participated, the more my connection and reputation grows. The flow of projects from the connections I got from those communities allowed me to survive, and also thrive, which enabled be to build my own web development company (https://www.wizmedia.net).

I think that marketplace sites like oDesk/Elance/99designs/TaskRabbit etc are horrible place to be in for creative people particularly programmers and designers. I've been looking for alternative places to go to but didn't find any that is fair for both Clients and Freelancers. So it became an idea for my Startup that I'm building right now. That is Creatizens - http://www.creatizens.com. It's still under development, but you can read more about it here https://angel.co/creatizens. The idea is based on the fact that the most profitable freelancers get their projects from their professional network - mostly from colleagues who has overflow projects, or ex-coworker whose company needs contractors. I don't want to talk too much about it since I'm bordering on spammy so I leave it at that.


damm 2 days ago 0 replies      
I've been a 'Contractor' since 2012 and I haven't gotten thrown out of my hose for non-payment of rent so I guess I am doing good.

First off:

There really is no good 'job' site for Contracts. There are a lot of 'Work From Home/Work Remotely' sites; but there is not one for contracting exactly.

What I do:

I network through people I know; cold calling can work if you see the company has a problem and you tailor yourself as the fix. But often those are short term gigs unless they love you.

Other than that.

Don't be afraid to post yourself on the monthly who's hiring and who wants to get hired. Making yourself visible will net a few responses that maybe gold.

Lastly, Stackoverflow Careers job has bene helpful.

Really last comment: http://thenubbyadmin.com/2014/01/20/best-list-of-remote-sysa...

mcv 1 day ago 0 replies      
Mostly my gigs tend to find me. A recruiter calls me, and if I'm available (rarely), I discuss details and rate, go talk with the client, and sign a contract. This does make me very dependent on recruiters, and some recruiters are absolute scum, but there are also some good ones. My CV is out there on Linkedin, Monster, etc, and people apparently know how to find me. It's the lazy way to freelancing, I guess, it works for me. At 70/hr I'm apparently a bit cheaper than some other people here, but it's still better than what a lot of my salaried friends make.
phillytom 2 days ago 0 replies      
When I consulted I also offered training on different technologies, languages, etc. Training itself is not very lucrative, but it's great for lead generation.

Also, I'm surprised that no one has mentioned this yet, post in the HN Freelance thread on the first of every month. I've hired a number of freelancers from there.

up_and_up 2 days ago 0 replies      
I have been moonlighting/contracting on the side for a couple years now: http://www.featlabs.com

I drum up work by:

* Posting myself on the Monthly HN Whois hiring Freelancers thread (1st of month)

* http://www.authenticjobs.com/

* Attending and doing talks at meetups - got a recent retainer from doing this.

* Old contacts pinging me about projects (rare)

Odesk and Elance, IMHO, are not worth my time. It is a race to the bottom honestly.

I get at least 3 hits a month from my HN posting of which one is solid enough to move forward with in some fashion. Since its part time I dont need more than two clients at a time.

scrollaway 2 days ago 0 replies      
I've used Peopleperhour.com to build my career. It has a good community and isn't a "php-farm" like the other freelance sites (though it has been going downhill a bit lately). I still would highly recommend it but you will need a good profile before you start getting jobs. Though, once I did have a good profile, potential clients kept inviting me to bid to all sorts of jobs, so it's not hard to get good income out of it once you get started.

I don't use it much anymore since I found a full-time job, but it kept me in great shape for almost four years.

Below is an affiliate link if you're OK with it.


mafellows 2 days ago 0 replies      
Avoid eLance and oDesk. You're positioning yourself on the low-end of the market just by being on the site. Network locally and get to know entrepreneurs in your area. Reaching out to other dev shops can also be a great way to get consistent contract work. Don't underestimate the value of remote clients either. Services like letsworkshop.com send out quality remote web development opportunities. They're not perfect, but they can be well worth the cost. iOSLeads.com and AndroidLeads.net are a couple of services I started for mobile devs. Happy to answer any questions.
tejay 2 days ago 1 reply      
No doubt, the best freelance gigs are the result of close, pre-existing relationships. Easier said than done tho if you're just getting your start.

Try using the sites mentioned within the thread - pickcrew, gun.io, etc. - these sites generally have higher-priced contracts and more interesting work than the classic variants. Use these sites at first to discover what work you like and build long-terms relationships with a few key clients.

1. Remember that the comms overhead with freelance work can be really lumpy and unpredictable. Programming is the fun part - the phone calls and emails can get painful really quickly

2. Avoid hourly pricing whenever possible. Do value-based pricing. Just trust me on this one.

woohoo7676 2 days ago 0 replies      
I've been contracting for about 3 years now, one I found via StackOverflow Careers, and the other was via a co-working space.

I think the general consensus here is right. Avoid finding jobs on contractor bidding sites like Elance/Odesk (they're devaluing your work/skills). Put yourself in positions where you can tell people about your skills/services, and where people might be looking for said skills. I'd start with tech meetups, co-working spaces, other places where people you might want to work with are. Good luck!

pablo-massa 2 days ago 0 replies      
https://angel.co/jobs has given me results.You can filter by "Remote OK" and the job position, also subscribe to email notifications for that filter.
alexjeffrey 2 days ago 0 replies      
in my experience, if you can grab a couple of not-too-underpriced gigs on a freelancing website (my preference is PeoplePerHour as it's less price-war-y) and can get a few regular clients from that, they'll be more happy to pay a reasonable fee for a reliable and familiar developer. Bear in mind that there are a LOT of unreliable and flaky developers on these sites so once you've proven your value to someone they'll be more likely to pay higher rates to retain you.
stevejohnson 2 days ago 1 reply      
This has been asked a few times over the years. Look over the HN search results for some ideas. https://hn.algolia.com/?q=how+do+you+find+freelance#!/story/...

(This is not to say it's not a question worth asking again! I look forward to today's responses.)

callmekatootie 1 day ago 0 replies      
http://www.topcoder.com - apart from the algorithm competitions that it is known for, it also has "challenges" where you compete with other participants and work on building applications.
gargarplex 2 days ago 1 reply      
What kind of software do you build? How much do you charge? Are you willing to work on legacy code bases?

As a hiring manager, I currently have an availability to hire a freelancer. I just need someone responsible, mature and professional who's willing to roll up their sleeves and go from "receiving requirements" to shipping and thoroughly testing.

tebeka 2 days ago 0 replies      
One way to network is to go to job interviews. Be open about the fact that you're mostly interested in contracting and maybe you'll consider joining after a time (which is true in my case - there's a lot of overhead in contracting).
icpmacdo 2 days ago 1 reply      
What level of skill did you have in Web Dev before you started freelancing(to freelancers in general)?
jqm 2 days ago 3 replies      
Don't contract as a contractor to businesses that are programming themselves. Build things for businesses that will be the end user. Most of these types of businesses have less of a notion of how to go about getting tools that will help their business in the first place and it can be a hard sell unless they have an immediate need. Sometimes you have to really learn about the specifics of how the business functions and this can be a pain. But once you build a few small accounting apps that export to CSV or inventory management tools specific to the business...stuff of that nature, you have a good point to take off from and examples to show. You do have to deliver though... a finished product, not just code. But I stay pretty busy like this.
godzillabrennus 2 days ago 0 replies      
Talk to small recruitment/staffing companies in your area to drum up some clients. Best part is they do the collections and handle the sales. You just set the rate.
walshemj 2 days ago 0 replies      
Normally via recruitment agency's they quite often have perm and contract teams.
hellbanner 2 days ago 0 replies      
Are you near any major cities you can attend conferences of major industries?
homakov 2 days ago 1 reply      
Simply have a blog, post cool stuff, and clients find you not the other way around.
cweagans 2 days ago 1 reply      
Gun.io is pretty good, IMO. I'd stay away from odesk and elance.
hashtag 2 days ago 0 replies      
Check your local contracting agencies
dsfreed 2 days ago 0 replies      
cshipley 2 days ago 0 replies      
A great place to start is posting something on the find a freelancer thread here on HN every first of the month. I get a fair number of inquiries from that.

As others have mentioned, meeting people and letting them know what you do. Most of these will not be direct clients. Rather they will either know of someone who is seeking help, or will remember your name.

It can take some time to get your name out and get the ball rolling. When I started up again, it took about two months. When you talk to someone, you never know how long it will take to turn into something. I have had conversations with clients that took 6 months to come to fruition. Others in just a week. The moral of that story is to always be looking, not just when you need work. Get in the habit of always saying yes, and then just manage your availability.

There is a spectrum of the kind of work you can do. I don't mean which language/platform. I mean straight staff augmentation to managing projects. It is easier to find the staff augmentation gigs. These are easier since someone will just be telling you what to work on, and you do it. You will make less for these and this sort of work doesn't scale as well. I would only ever do this for straight a straight hourly rate.

Managing projects doesn't mean you will (necessarily) be managing people, just managing the project. With this, someone needs something built, but may not know how. It requires an additional skill set of knowing a bit of sales, knowing how to set/re-set expectations and how to negotiate. You can get a much higher rate for this, and it is possible to scale this a bit better because you can sub out some of the work.

Another thing you will run into very quickly is how to structure the relationship. There are people out there who are incompetent and others who are nefarious. It is important to know how to protect yourself legally and practically for both. For the legal aspect, find a local attorney who can look over contracts and help you craft a reusable template. Always have an attorney look over contracts before you sign. Most of the time someone gives you a contract to sign, it will be written to be in their best interests. Other times, they will just be poorly written.

For the practical aspect, understand there is a difference between working with someone in-state, out-of-state and out of country. You have the most legal recourse with someone in-state. If they are out-of-state, you may have to go there to pursue any legal action. (which is a massive pain) If they are out of country you may not have any legal recourse. So you will want to structure the business relationship to protect yourself, which might be as simple as half of the estimate up-front. The remainder on completion, and they get no code until it is complete.

A lot of times I structure it by milestone or iteration, with time limits, requiring permission to continue, but all billed hourly. Each iteration or milestone delivers something tangible. They get code on payment. This way I get paid for the work I do, and they won't get unexpected costs and they always have a pretty good idea where things are. Risk is mitigated in both directions. At any point, they can decide to pull the plug and they still have something for what they've paid so far.

It is not uncommon for potential clients to ask for fixed-bids. My advice is to steer away from them. They require you to be able to make good estimates then inflate them to cover your risk. That risk is all on you. They also require you to have tight definitions and manage scope changes mercilessly. If you don't, then you eat it. That said, some people like them because they're really easy.

Some other pieces of advice:

* You're not dedicated to a particular project until either they've given you a deposit, or something is set up legally so that if you start working, you'll get paid.

* Generally ask for a deposit from new clients.

* It is ok to drop bad clients. Sometimes they're not worth the trouble.

* Think about it in terms of collecting/building long term relationships rather than "work". Once you get an established base of good clients, the work will tend to come to you.

* Remember, you're not their friend and not their employee. You are in it because it is a business relationship that has mutual benefit.

* Keep good records of time, expenses and income.

Email me at curtis [at] saltydogtechnology [dot] com if you have more questions. What sort of work are you looking for?

EGreg 1 day ago 0 replies      
Networking and being known as the go-to guy for something many people need. For me it's been social media and apps, I've worked with startups and interactive agencies and seen it all. It often helps to give a free consultation and send in your own proposal to be paid corp-to-corp, then hire people to help you. It helps even more to have a small shop with a portfolio and be listed prominently for that particular technology.

If you want to go to the next level, create an open source project or start a blog, to get a reputation. The more people hear about you the more some of them will convert to potential customers, increasing ambient demand.

Look at Yehuda Katz with Ember for instance, or the guy Bob who wrote nvd3. Having a niche that can help businesses improve their bottom line pays very well.

cuckol333 2 days ago 0 replies      
MY STRATEGY works somewhat? but is old and dusty.old and dusty warning and YMWV - mileage will vary.

-1.) It has nothing to do with your willpower or even yourskillsets.

0.) the key strategy is rule out - some big companies,even stingy and the case of CIO chef info officer is clueless - AVOID THEM like the plague. U get a great job.affter change of bosses - once every 9 months for 3 years;you get 'fired' and put on the blacklist.


1.) it's all about MBA work, screening and positioning.get to know the rankings of the S&P 500 rank listing well.this is ONLY a template and guide. oh by the way,over 51 + 7 years of experience; various fields, and someodd experiences.

4.) before I get to the GOOD SEXY FREE MILLIONAIRE STUFF,figure out how to crash the local conferences/convensions.Yes, pay off the low part time work who moved goods. I ama substitute.

get the business card. say NADADADA! research the hell outof them. then it is mano a mano. eyeball to eyeball.i know u need this. this is what your competitors knowhere a ANONYMOUS QUOTE.

oh, no i am not a journalist. media, lawyer, stranger,etc etc. U R DOING THEM A FAVOR.

5.) ask reasonable questions. no i dont need the moneybut i really love programming / s?redacted? x, etc etc

6.) remember the obscure system engineer who does unixor the assoc vp does not want a referral free. Grass isalways greener on the other side.

7.) it's just me but five dimensional programming code on an origama (YES I AM ASIAN) ORIGAMA ball /can be be fun.and a nice prop. wave it around like a big CIGAR.

8.) most of the workplace have the 'hacks'; unix engineerslike i former trying to become a database engineer consultetc. cold mail and cold call - is fine, but the wallstreet method rule applies - 250 dials a day. 4 days awekk on various times. wt ???? 250??? is a lot.note - this is dials and yes i have done freelance 'boilerroom similar looking like work' - i am not a stock brokerfilm db BOILER ROOM !! yeahhhh baaaabbyy

9.) the MEAT the millionaire the sexy the GOOD STUFF.please delete this comment. or the censors may take it out.ok with me.

here it is......the Rotary Club works on a non-compete, diversifiedP2P network. ROTARY CLUB. non-compete since onlyone real estate agent in any one circle.

THE SCENARIO:my good 'friend' and associate REAL ESTATE AGENT or fill inblank spends a lot of time in the WOMAN CLUB. So, thewife of the VP of the data center mentions how ASTOUNDINGis this person.

the VP, is a man married and will give you at least a courtesy interview. Provide value, turn down 20% of thejobs.. shadddde the truth???? but

i have read at least 20 of the top books. compiled linuxkernel,blah blah learn a new language Haskell with succkybooks so the problems are NEVER technical or delivery.

it has only to do with some clueless CIOsss who barelypassed certification Micosoft exams.sorry, no person offense meant.IT HAS ONLY at least in USA, to do with somesystem engineer who WANTS U DESPERATELY but has aoutsource contract with a guy who cannot understandcode comments in ENGLISH or deal with HR where talent TALENT talent is a priority.

and of course, U are DOOMED. sorry to say.the extra income and part time jobs / health benefits /DESTRUCTION OF THE USA MIDDLE CLASS continues!

PS. full time -?? been there, done tthat kinda.i always allocate at least 10% to make boss look good;frills and bells; make the code look pretty and beautiful;and othher WORTHLESS GARBAGE. this is called the hiddentax.

also, 20% for learning and at least finding HOLES IN THECOMPANY SOFTWARE. logic flaws, security flaws, bad code,bad process, bad procedures, bad SQL, bad db architecture,

warninggg! this can be dangerous. doing the job of the cluelesss CIO chief inof officer can lead to BLACKLIST.

does tthzyat help?

Ask HN: Best way to manage all of your startup's accounts?
points by jameshk  4 hours ago   6 comments top 4
sumodirjo 4 hours ago 1 reply      
If you use Mac you can use keychain to save all those passwords. If not you can use password manager.

1Password and LastPass is a good alternatives. Both of them offer hosted service where you can sync all your passwords. This is really needed if you have several team members that need access to these passwords.

AFAIK the service also allow you to save ssh private keys. in case you also need to save lots of keys

bbcbasic 2 hours ago 0 replies      
I have used Keepass (Classic) for years. http://keepass.info/
detaro 3 hours ago 1 reply      
Related note: Look into 2FA methods, especially for the higher-profile things. Avoiding getting your bank account or domain hijacked or your code stolen because you made it to easy for an attacker is worth the slight inconveniences.
buckofalltrades 4 hours ago 0 replies      
1Password: https://agilebits.com/onepassword

Create an "Identity" for general stuff, and tag everything else with [startup name]. Done.

Ask HN: Good resources for determining early-stage pre-money valuation
points by api  5 hours ago   3 comments top
maaku 5 hours ago 1 reply      
Not sure what you're trying to learn? There is basically no intrinsic rhyme or reason to early-stage valuations. Figure out how much money you need, how much equity you're willing to give up for it, and find an investor that agrees to those terms. That's it.
Ask HN: What's the best way to write an API spec?
points by chrisshroba  1 day ago   54 comments top 33
rodw 1 day ago 6 replies      
I guess I'll take this opportunity to plug my own little tool for this.

I use Swagger [1] and more specifically Swagger UI [2] to generate interactive web-based documentation like the sample at [3].

But rather than relying upon source code annotations to have swagger auto-generate the documentation, or hand-writing swagger's verbose JSON structure, I created a little DSL for it as demonstrated at [4] and available on GitHub at [5].

Let me know if you have any questions about swagger-dsl. It's under-documented right now but perfectly functional. I use it often.

[1] http://swagger.io/

[2] https://github.com/swagger-api/swagger-ui

[3] http://petstore.swagger.wordnik.com/#!/pet

[4] http://intellinote.github.io/swagger-dsl/demo/live.html

[5] https://github.com/intellinote/swagger-dsl

gamache 1 day ago 3 replies      
There have been an explosion of API specification formats in the last few years. No clear winner has emerged.

JSON Schema and JSON Hyperschema are JSON-based formats for describing JSON and REST (hypermedia-driven) APIs. The formats make decent sense and can be used to generate docs, validators, client libraries, UIs, and more. http://json-schema.org/

API Blueprint is another emerging format for API description. It's written in Markdown, so it is very human-readable and -writable. It is not yet suitable for hypermedia APIs. Like JSON Schema, its tooling includes validators, client library generators, mock server generators, docs generators, etc. http://apiblueprint.org/

Swagger is a YAML-based format for specifying JSON APIs. It is meant to be created using the Swagger UI, rather than handwritten. It generates pretty docs, client software, etc. but is not suited to describing hypermedia APIs. http://swagger.io

Slate is an API documentation framework/template, designed to generate very handsome documentation pages. Its concern is more documentation than specification, and therefore doesn't concern itself with things like library or mock generation. https://github.com/tripit/slate

WADL is an API description language which describes API interactions in an XML format. It resembles WSDL. Not many people use it. http://en.wikipedia.org/wiki/Web_Application_Description_Lan...

Which of these is the best? Good question. I like JSON Hyperschema, but I am writing hypermedia APIs and the other formats here are lacking in their hypermedia support. API Blueprint is a nice format to write in a text editor and is easily read as-is or rendered from Markdown; no separate docs generator is necessary.

deeviant 1 day ago 0 replies      
There is no single secret to making good API specifications.

But here are few things I've learned:

* The more comprehensive the documentation gets, the the quicker it gets outdated, un-useful, or flat out pants-on-fire lying. Define what the thing does and what assumptions are made, save detail for "gotchas". Be concise.

* Start out on a white board, run through each function, what it should do, what it shouldn't. This really is a huge benefit of spec'ing out a api, just sitting there thinking about it, tons of stuff comes up and you come out with a better product in the end.

* If the format you came up with can't be put into something like a table or spreadsheet, you probably doing it wrong. Sure you can get some sort of framework that lets you create all sorts of UML and create class/function shells or what have you, but I have never found these to create value or clarity. If you are spending more than 20-30 minutes outlining even a complicated function, your probably wasting time. Use time saved to create a clear system-wide DFD.

* Don't go deep into implementation detail at this stage, but at least think about it. Some much time can be saved with a little forethought here.

DevX101 1 day ago 0 replies      
I used apiary.io which is the best tool I've found for writing API specs. You can write your specs using an online API Blueprint format editor via their site. Alternatively, you can put a text file in your repo and authorize apiary to pull the file every time you make a commit to github. This way you do everything via your development environment.

The documentation they provide based on the specs looks very well designed and intuitive.

One of my favorite features about apiary was the mock backend server they use based on my API specs. So if you're doing a single page app, just write your specs then point your frontend app to the mock server they provide. This greatly simplified development process for me.

davnola 1 day ago 0 replies      
Here's a summary of the discussion (RAML vs Swagger vs Apiary vs RSpec...) we had at Lonely Planet: https://lonelyplanet.atlassian.net/wiki/display/PUB/API+Spec...

5 months in, we're happy with API Blueprint. We used to use Dredd for API validation but ran into to some limitations:

- Dredd does not perform any validation against the siren response beyond the first key level. For example, it does not validate if the class-name is user-events, or usr-events

- Dredd does not make any difference between Action parameters and Resource parameters. Then, an action POST to create user-events will have undesired url parameters. E.G: POST /user-events?take=0&skip=2 (The apib blueprint specs allows to make this difference: https://github.com/apiaryio/api-blueprint/blob/master/exampl...)

So one of our devs created a Ruby validator, https://github.com/nogates/vigia. See http://engineering.lonelyplanet.com/2014/11/18/vigia-integra... if you're interested.

pksunkara 1 day ago 0 replies      
Disclaimer: I work for Apiary.

API Blueprint [1] is an open source API description format which can be used to intuitively describe an API.

MSON [2] is a recent addition to the above format which makes it easy to describe all kinds of complex requests and responses in the spec.

You can email me at pavan [at] apiary [dot] io if you have any more questions.

[1]: http://apiblueprint.org

[2]: http://github.com/apiaryio/mson

dkarapetyan 1 day ago 1 reply      
Write some client code for how you want to use the API and then elaborate those examples by making references to the spec. This might seem backwards to you but you'll discover all sorts of edge cases and awkwardness in the process that you wouldn't have discovered by just writing the spec.

You don't need any special tools to do that although apiary comes to mind as something worthwhile.

smt88 1 day ago 2 replies      
Erwin 1 day ago 0 replies      
Like others, I use the Apiary's Markdown format, using aglio to generate a HTML page from it. I also use Protagonist to convert the documentation to a JSON object that Python code can consume and verify that there's a 1:1 relationship between documented and implement API endpoints, as well as as arguments passed. There's room for further validation as my API endpoints have type checking and permissions declaratively configured (via Python decorators).

I tried RAML -- it makes sense for quick prototyping of your resources and methods, but I oculdn't see myself writing too much documentation as a giant nested YAML document.

I also tried apidoc which might make sense of you have internal documentation you wan to quickly expose. However my docs are longer than the code implementing them, so I don't like mixing them in as e.g. apidoc would require. I'd prefer lots of English in my documentation and it seems odd to conflate hints on how to use an API call as an external user with the implementation of it. Compare Sphinx-generated Python docs with some auto-generated python library documentation.

The apidoc versioning system is pretty cool, though if you are making a public REST API backwards-incompatible version changes should be avoided.

xiaoma 1 day ago 0 replies      
1) The best tool is probably RAML. It's very succinct, looks like YAML and has powerful features such as traits that really simplify the process of documenting many endpoints with similar traits (e.g. pagination).http://raml.org/

2) Swagger is an older option that is quite verbose but has a lot of good tooling support.

3) A third tool that is pretty decent is API blueprint.

Disclosure: I did work on an open source swagger-raml converter about four months ago.

jobu 1 day ago 0 replies      
After working on a couple API's used by mobile devices I would recommend starting with some static pages containing JSON, then write a client against them first. That will help verify that you have all of the needed data and the format is correct.

Once the format is nailed down it's easier to write documentation, and the server side code will go quickly because less time is spent iterating changes.

phipz 1 day ago 0 replies      
We used to start with Aglio (https://github.com/danielgtaylor/aglio) and the API Blueprint format 1A (https://github.com/apiaryio/api-blueprint) provided by Apiary.We recently moved from Aglio to Apiary.
yogiHacks 1 day ago 0 replies      
I've really liked using Apiary http://apiary.io/It lets you build sample output and URI address for your API's, document multiple routes, and stores everything nicely on your account on their cloud. I've used it for 2 projects this year already and have really liked it.
debacle 1 day ago 0 replies      
Writing tests for your spec is probably the best way. You get to test the design of your API (and any edge cases/scaling issues) before you actually have to design it, and, bonus, when you're done you have a full suite of tests.
simi_ 1 day ago 3 replies      
We tried a lot of options at Lavaboom (including apiary, readme.io, swagger, etc) and ended up using Slate: https://github.com/tripit/slate
jlouvel 14 hours ago 0 replies      
Restlet Studio (http://studio.restlet.com/) let's you visually craft your REST API and then view it as Swagger 2.0 or RAML 0.8 source code by simply switching tabs.

It is entirely free and available as a simple web app and installable as a Chrome app. Disclaimer: I work at Restlet.

kikibobo69 1 day ago 0 replies      
My former colleagues have been working on http://apidoc.me/ (https://github.com/gilt/apidoc). I really like this approach, which is basically:

1. specify the api in json2. apidoc generates really nice api documentation3. apidoc generates a single-file client for the service (currently ruby or scala)4. apidoc generates a routes file for play2

It's scala-biased at the moment because that's their tech stack, but in practice an api-first approach seems to lead to higher quality APIs compared to just hacking something together and annotating it to extract docs. Also having a really nice client without a complicated compile-time dependency graph (on the JVM) feels like a sweet spot.

prabhatjha 1 day ago 0 replies      
My vote is definitely for swagger. Besides being a great way to write API spec, it has tons of tooling to take a given spec to the next level. See the list at https://github.com/swagger-api/swagger-spec. My favorite is Swagger Editor which allows you to write a spec in YAML and shows you consumable API in real time.

There also exist an opens source project that has Swagger at its core called a127 (https://github.com/apigee-127/a127-documentation/wiki) that allows you to build enterprise-class APIs in Node.js locally and deploy to any PaaS where you can run a node app.

Disclaimer: I work with a127 project.

jestar_jokin 1 day ago 0 replies      
Isn't this why enterprises favoured things like SOAP web services with XSDs and WSDLs? The verbosity acts as human and machine-readable documentation, and the files can be used to generate client code.

Ignoring the benefits of using HTTP as the request transport mechanism, this seems like another cycle of people coming up with a comprehensive but complex solution, other people getting frustrated with the complexity and developing a simpler solution, then filling in the gaps (such as documentation) until the solution is a complex patchwork of competing libraries, none clearly better than the others, leading to fragmenting of mindshare and expertise...

monkeypodio 1 day ago 0 replies      
At Willowtree, we created Monkeypod (https://Monkeypod.io) to serve as an API design, documentation and virtualization tool.

It uses Swagger and swagger ui extensively and can output (and soon input) Swagger specs. It creates a virtual API based on the design you create, and you can play with it from Swagger ui sandbox or any Http client.

We have a lot of cool features on the roadmap. Feel free to sign up and give it a try. Let us know what features you'd like to see. Cheers!

andrewstuart 1 day ago 0 replies      
Regardless of solution chosen, Swagger or otherwise, I'm puzzled as to why people integrate the API spec/documentation into their source code. Seems to me to provide incredible scope for bugs and dramatically increase software complexity: http://fourlightyears.blogspot.com.au/2015/01/swagger-is-gre...
mrkd 1 day ago 1 reply      
It looks like there are some options out there for REST APIs.

Does anyone know of any API specs written for websocket APIs?

I am working on creating a websocket API and would like to at least look at a few other examples.

z3t4 1 day ago 0 replies      
I always start "backwards" by writing some example code.
pedrobelo 1 day ago 0 replies      
I wrote about a few of the different formats before:http://pedro.by4am.com/past/2014/5/23/get_more_out_of_your_s...

And been working on a tool to merge the schema with actual code for Sinatra apps:https://github.com/pedro/sinatra-schema

liamcode 1 day ago 0 replies      
I use http://apidocjs.com/

You define the API in comments within your code. When you run apidoc it scans your code and generates pretty documentation.

I tried various other solutions before this such as apiary.io. Apidocjs is really easy to update as it is part of your code, which also means it goes into your version control!

ioseph 1 day ago 0 replies      
We've just started designing a new api and gone done the json-schema path which is particularly suitable since we're using json-rpc over websocket / http post.

Aside from that whatever tool you use, having markdown as the base source is really useful as you can then display it however you want while still quickly read it in a terminal.

conorgil145 1 day ago 0 replies      
You may find my comment in a related thread interesting: https://news.ycombinator.com/item?id=8847072

I was discussing my interest in documenting an API and then generating client libraries, API tests, and other artifacts automatically. Some relevant tools and projects were mentioned/discussed.

sm_sohan 1 day ago 0 replies      
May I say, look at SpyREST (SpyREST.com) if you consider developing the API first and then produce the documentation automatically simply by exercising the API? This is an open-source tool, feel free to take a look.

I'm developing SpyREST and will be happy to discuss if you want to learn more.

marcoherbst 1 day ago 0 replies      
I can't be entirely sure that it's to do with the tools used (I'm familiar with most of the ones mentioned in the comments) but my most successful API designing, at a high level, has been in a spreadsheet.
eterps 1 day ago 0 replies      
I use Cucumber to write the API spec for our hypermedia API, it doubles as an end-to-end test which guarantees that the specs are never out of sync with our API implementation.
kephra 1 day ago 0 replies      
I would follow the RFC and the Unix manual layout. I normally use XML to write my documentation, and simple xslt to convert them to roff to produce text/plain and pdf and html.
haidrali 1 day ago 0 replies      
use something like capybara or Rspec Testing (rails ) to stimulate a real user behavior
dreamdu5t 1 day ago 0 replies      
Why not model your REST resources so that API documentation can be auto-generated from your actual code? Makes a lot more sense to me than trying to generate code from documentation.
Re: Yesterdays post on cli tools being near 100x faster than dedicated systems
points by biturd  6 hours ago   3 comments top 2
biturd 6 hours ago 1 reply      
or crap, basic returns are not part of markdown, and my editor sucks I guess.
biturd 6 hours ago 0 replies      
markdown not supported?
Ask HN: NGINX + PHP-FPM on CentOS + CPanel/WHM?
points by brianjking  8 hours ago   discuss
Let's chat, HN: On "X makes you more creative"
points by visakanv  20 hours ago   5 comments top 3
read 6 minutes ago 0 replies      
I'm not as convinced it's changing your state in general that makes you more creative. We all change many states daily. Are we all de facto more creative daily and haven't got a clue about it?

The general idea is you start from an open mode where all thoughts are entertained and progress is slow. After you become sure of what you want to do, you eventually enter a closed mode, where you shut out the world and move as fast as you can, until you run into the next big obstacle. According to John Cleese, who studied creativity, a big problem is we stay in the closed mode too long. It's the change between open and closed mode that is a big deal.

I do know of a few specific creativity exercises though.

1. Unstructured play. Setup some time, at least 1.5-2 hrs and ideally every day, where the goal is to just play. This removes the expectation to produce anything, which allows your subconscious to visit thoughts you ordinarily wouldn't let it. It's one way to counteract one of the biggest killers to creativity: expectations.

2. Constraint before freedom. Don't initially give yourself the freedom to work on something big or on everything. Instead focus on something small and specific, however minute and irrelevant it might originally seem. This has the effect of keeping the fire contained, which leads to a denser collection of connections. You touched on this already, it's a way of artificially setting a filter without waiting for a personal mood swing or an external change to do it for you. It feels like zig-zagging aimlessly like a fly originally and that's ok.

But do switch into a freedom mode after that. Once the ideas kick in, feel free to run after them. When? There's an embarrassing pull of delight that alarms you. "Why didn't I think of this before...?"

Unstructured play is one instance of the application of this principle.

3. Purge in the morning. This is another long-known writing trick. Write aimlessly in the morning as soon as you wake up, mostly to get the negativity out. Although you are awake, the critical part of yourself isn't yet, which allows thoughts produced by your subconscious overnight to come to the surface. This might be more related to the REM state of sleep, which is when dreams happen, and where tough problems are solved by the subconscious. (The book The Committee of Sleep provides ample evidence to this.) So it might be less related to mornings and more related to waking up.

Sounds too negative? Don't be surprised the writing continues with solutions to the annoying problems you write about.

4. Toy with limits. You touched on this too with improv comedy. Get in the habit of purposefully looking for the two extremes in each situation. If you could lay out every subject on a continuum, what's the worst the case and what's the best? It mostly helps understand the forces at play behind a subject and it helps generate ideas.

btw, I like your thinking :)

wstepp 11 hours ago 1 reply      
Excellent insight. I wish this were articulated in blog form somewhere.

Personal anecdote. I moved to Santiago, Chile for 6 months in 2011 to participate in Startup Chile. The first week I was there I had an idea for a novel come to me like a lightning bolt. It sort of overcame me and I worked out the entire story in a few days time. More than anything I think it had to do with the sudden change of environment that sparked my creativity. (and yes, I later wrote that novel)

visakanv 20 hours ago 1 reply      
I also think that there are specific exercises that can make you a lot more creative. I wrote about this once from the perspective of songwriting. Instead of trying to write a good song, why not try to write the worst song ever? The silliest song ever? The stupidest song ever? Doing these things challenges you to change your frame, change your perspective. That's what inspires creativity.

Chris Rock had a great quote in an interview:

"You keep notes. You look for the recurring. Whats not going away? Boy, this police-brutality thing it seems to be lingering. Whats going to happen here? You dont even have the joke, you just say, Okay, whats the new angle that makes me not sound like a preacher? Forget being a comedian, just act like a reporter. Whats the question that hasnt been asked? How come white kids dont get shot? Have you ever watched television and seen some white kid get shot by accident?

> And out of that comes comedy.

Comes humor. You laughed right away. I just asked a question that no one had ever asked."


Steve Jobs:

"Creativity is just connecting things. When you ask creative people how they did something, they feel a little guilty because they didn't really do it, they just saw something. It seemed obvious to them after a while. That's because they were able to connect experiences they've had and synthesize new things. And the reason they were able to do that was that they've had more experiences or they have thought more about their experiences than other people.

Unfortunately, that's too rare a commodity. A lot of people in our industry haven't had very diverse experiences. So they don't have enough dots to connect, and they end up with very linear solutions without a broad perspective on the problem. The broader one's understanding of the human experience, the better design we will have."


Ask HN: Need a career advice
points by rukshn  13 hours ago   7 comments top 5
kohanz 12 hours ago 0 replies      
I'm a software engineer who has spent most of my career working for medical device companies. My advice may not be a good short-term fix and it's just one of many paths, but it's based on my experience.

Be a doctor. A good one. The more specialization, the better. Gravitate towards a specialization where technology either plays or will play a big role (surgery, radiology, etc.). Get experience with these technologies (new or old), such that you know what works and what needs improving/replacement. If you can, write cases and do research that influences your field. Work at a hospital with a strong bio-tech research element and find ways to collaborate (hint: collaborating clinicians are always in demand). Through collaboration, you'll inevitably be exposed to spin-off and startup opportunities. You'll work with all sorts of programmers and engineers, who will drop everything to spend time with you when you have a free moment.

Once you've got some good experience under your belt and perhaps have built a small name for yourself, congrats, you are now a relatively hot commodity for a multitude of medical device companies. We often use the term KOL (key opinion leader) for certain clinicians - they command big bucks and get huge influence on product development. If you network well, you'll get early access to new technologies, perhaps the ability to work with the engineers during the design phase, your opinions will be treated as gold when it comes to product development.

This all hinges on you actually practicing medicine in a fairly active fashion for at least a few years if not a decade. I know that's a big commitment, but you should know that it comes with a lot of non-monetary rewards. It opens doors.

Even as a relatively unknown MD, a few years of active practice are invaluable in your back-pocket. If you ever decide to do a medical-based startup, investors will surely value your credentials.

To be perfectly honest, I'm an engineer, I love software and technology, but if were to do it all over again, I'd go to med-school first!

akg_67 1 hour ago 0 replies      
I have two people in my close circle who made jump between medical profession and information technology and vice-versa.

[1] My cousin became a medical doctor and practiced for a year. He just couldn't disconnect himself from his patients sickness and that was causing him depression. Long term, he just couldn't see himself around sick people without becoming mental nut-case himself. He was very interested in Technology but couldn't see himself starting from entry level. He decided to go for MBA at a top 5 school. It seems not many medical doctors apply for MBA so it was easy for him to get admission. After MBA, he initially worked in healthcare technology consulting. He found his medical degree, Dr before his name and MD and MBA after his name very valuable since then in his career. Today, he leads healthcare technology practice for a major technology service provider and responsible for over billion dollar in revenue and P&L for his division.

[2] My eye doctor has graduate Electrical Engineering degree and worked for about ten years in development with SoCal defense contractors and NorCal technology companies before quitting to go to medical school. He is now a successful Eye Surgeon. While working in technology, he didn't like the politics of the workplace and overall work environment and expectations of technology companies. He has been very happy since becoming Eye Doctor and enjoys working with his patients. He still gets his technology fix by getting involved in medical technology innovations. He says his EE + Medicine qualifications makes him quite a desirable person in medical device industry.

It might take you a decade in technology to even get to the level of starting salaries of medical doctors. If you have high medical school debt, you may want to consider this in your decision to switch career.

You may benefit from your medicine background in a "relevant" technology company if you slide into the company at mid-level where you medical background is valued. Entry-level developer or IT person may not offer you any extra credit for being a medical doctor. Also in a non-medical technology company, you may be at a disadvantage compared to a person with CS degree with promotions and being taken seriously.

Unless you are interested in going to Business School, personally I will not recommend switching field from medicine to technology. You can always continue as medical physician while being involved with technology on the side.

bhhaskin 13 hours ago 1 reply      
If you are comparing salary of a physician to a tech related field it is going to be hard to find something on pair with out a lot of schooling.
JSeymourATL 8 hours ago 0 replies      
Reach out to some of the participants at Medicine X, they may have some helpful perspective > http://medicinex.stanford.edu/2014-schedule/
hashtag 12 hours ago 1 reply      
Why limit to something that relates to the medical field? Just focus on programming as a career.
Ask HN: Why do people hate PHP so much?
points by udswagz  1 day ago   21 comments top 14
feedjoelpie 1 day ago 1 reply      
Mostly because the legacy of PHP as a toy project carried forward forever. Here's a great tidbit about why all the original functions have ridiculous, inconsistent naming schemes:

> "Well, there were other factors in play there. htmlspecialchars was a very early function. Back when PHP had less than 100 functions and the function hashing mechanism was strlen(). In order to get a nice hash distribution of function names across the various function name lengths names were picked specifically to make them fit into a specific length bucket. This was circa late 1994 when PHP was a tool just for my own personal use and I wasn't too worried about not being able to remember the few function names."

That's right: Every one of the original function names has a different character length because length was used as a lookup. There are a lot of clowny things like this that have never been stamped out of the language.

Add to that its history of being a beginner language that most of its early adopters sprinkled into HTML and where many people who mayyybe have no business being professional programmers started making a career out of it. This severely undermined PHP's credibility as a language for professionals even though good software can be created in PHP in the right hands.

That all said, I spent about year coding in Hack, and while the parts that still feel like PHP are annoying, it is awesome in so many other ways. Hopefully it either starts to unseat PHP or PHP turns into Hack at some point.

api 1 day ago 1 reply      
Inconsistency, very prone to security mistakes, poor type system, and some people just find its syntax "ugly." For example lots of folks hate $strings and $_WTF['bbq'] type syntax. Perl is another language whose syntax draws a lot of haters.

I'd say the second problem is the most objectively bad. It is very easy to write PHP code that exposes you to all kinds of known exploit classes like SQL injection, command injection, cross-site scripting, etc. The language seems to encourage poor practices like building query strings directly from remote input without the use of a true query builder.

PHP also has a problem that it shares with JavaScript and to a lesser extent Java -- the quality of the user base and user-contributed code is often very poor. If you look for PHP code on StackOverflow or Reddit or similar sites, you are likely to get something that is horribly wrong, comically inefficient, or whose use will immediately introduce a dangerous remote security vulnerability. This comes from the simple fact that it's often a beginner language, so you have a lot of inexperienced people participating in forums and contributing sample code.

sarciszewski 9 hours ago 0 replies      
I've asked the same question before, and the answers I've received are basically:

A) People like to compare frameworks (e.g. Rails) to the PHP programming language, rather than an apples-to-apples comparison, and therefore PHP always falls short in their eyes.

B) The abundance of poorly written, insecure legacy code has besmirched PHP's reputation beyond repair, even if its actual security isn't bad.

C) The fact that n00bs can pick it up quickly and get a dynamic website out of PHP with minimal effort leads elitists to look down on it from their glass enclaves.

D) Academic reasons that no one outside academia cares about.

Full disclosure: I read and write PHP every day regardless of what people say about it. :D

davidw 1 day ago 0 replies      
I'm a web developer too, and I've worked with PHP professionally. It's not a great language in terms of features, but there are worse.

One of the good things about PHP is that it has a very low barrier to entry, making it easy for people to get up and running.

I think, though, that that sometimes leads to one reason why people dislike it: a company gets up and running (which is a good thing) on a hideous pile of crap codebase (not so good) and then decides to hire some more serious developers.

I've been in that position, and it is not fun.

ts-jondin 1 day ago 0 replies      
Inconsistency, would be my topmost argument, in general.Among many other things these include what PHP dodges underthe term "language construct" which when searched producesa wikipedia stub article with the only examples in PHP.

Failed closures that lack proper scoping, while they have been improved the underlying problem remains.

Continuation on inconsistency is that functions are not first class even though the syntax is the same for closures:

function foo () {} <--- This is a function

$foo = function () {} <--- This is a closure

Inconsistency; Cannot access functions (closures) directly from arrays.

$list["something"] = function () {};

$list["something"]() <- fatal error

What is "truthy" and what is "falsy", not unique to PHP but that doesn't mean PHP should do it.

Assumptions such as how it interprets numbers in octal

Functions do not follow any specific naming standard, i.e. some array functions are prefixed by array_*, some are not.

Include and require scoping is messed up as anything that is not a variable is mashed into the global scope.

Lastly in my post but far from all issues with PHP;A crap-load of legacy because "we can never break anything"

giaour 1 day ago 0 replies      
PHP gets a lot of hate because of internal inconsistencies and sometimes bizarre pass-by-reference semantics, but I mostly get annoyed at how dog slow it can be.

When PHP is fast (and it often is!), it's because the functions you're using are written in hand-tuned C. The kind of "modern PHP" that I write professionally (think Java or C# without types or a compiler) is often disappointing performance-wise.

HHVM is slowly proving to the word that this is not due to PHP itself but to the Zend runtime, but it'll be a while before HHVM takes over.

franze 1 day ago 0 replies      

> An array in PHP is actually an ordered map.

haidrali 1 day ago 1 reply      
I am also a developer with experience in PHP(Cake, Codeigniter) Python(Django) Ruby(Rails) according to my experience PHP isn't a bad language and i don't hate PHP its just matter of fact i don't prefer to work in PHP( or any of its framework ) the reason is RAILS offered so much to me in context of Rapid Application Development that neither of PHP's framework offer

This is what i thought

LarryMade2 1 day ago 0 replies      
Take your pick (probably a combination of the below):

1) it is more popular then what they are using, developing or have skills for

1a) they use language x which does something different that they feel PHP sucks because the lack of it.

2) they got stuck using it and prefer language y instead.

3) They really arent all that good programmers and rely on pre-implemented security features to save their butts, and PHP doesnt meet their dependencies

4) they are invested-in or represent language/platform x and PHP is a compelling contender.

5) they prefer to argue instead of fostering as accessible/usable alternatives for for one reason or another

Just as COBOL, FORTRAN, Visual BASIC, Perl, etc. are reviled by some, they still get jobs done. In some respects it may suck, others it's just fine partly based on intended application and/or coding skill.

If PHP was so bad in all the respects argued, there would be a much more compelling alternative, but it isn't all that bad, and actually quite useful... and popular.

frostmatthew 1 day ago 0 replies      
I'd suggest reading PHP: a fractal of bad design http://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/
deekarma 1 day ago 1 reply      
It's interesting to read all these comments and more interesting for me to constantly be hearing "But hey, Facebook's built on PHP".
mfc5 1 day ago 0 replies      
Here's a whole list of reasons: http://phpsadness.com
sighsighsigh 1 day ago 0 replies      
Weak refs are a joke in PHP. All problems stem from that.
ryanloring 1 day ago 0 replies      
Because people are stupid. And stuck in the 90's. That's the main reason. Other reasons include self-hatred for spending so much time on RoR's/Node's penis. That's definitely the second leading reason. Making less money then "stupid PHP programmers" cause they seriously thought they could develop real applications after learning JavaScript. That's pretty high on the list.

Look the bottom line is PHP has some weird issues (naming inconsistencies, parameter ordering, security issues with deprecated functionality, etc. etc.) but you can find issues on the same level with ANY language. Professional PHP dev's can consistently build large enterprise applications that are readable, scalable, maintainable and performant. Anyone who tells you otherwise is simply not familiar with the transformation that PHP and the community has gone through since version 5.3.

Ask HN: How to find a student job as a programmer?
points by wofo  1 day ago   10 comments top 5
onion2k 1 day ago 1 reply      
To answer each point in turn;

1. You're a new developer with no professional experience who wants a reasonably well-paid job on your terms rather than an internship/junior role. You're going to end up doing the boring stuff. On the specific task you mention - that's either a fairly trivial exercise in regular expressions or a reasonably interesting task refactoring a codebase to use a proper database abstraction. Either way it's not that boring. I can think of much more boring coding things.

2. Don't look for roles at big companies then.

3. Every company has things that look bad from the outside but there's usually a reason for it. Don't judge. You'll be responsible for writing some pretty horrible code during your career. I guarantee it.

4. Some startups have plenty of cash and are absolutely desperate for developers. Look here: http://workinstartups.com/ (if not there, there might be a more Netherlands specific version somewhere.)

5. Yes, you can network. Finding events is easy (Google, Meetup.com, etc). There's loads of them everywhere. Also, ask your tutors/professors. They'll be pretty well connected. And go old school - Google for local software companies, find their email addresses/phone numbers, and reach out to them. You will be amazed how happy people are to help you.

EDIT: One more thing.. don't underestimate the value in getting a job that isn't anything to do with coding. For example, working in a restaurant would give you plenty of 'soft skills' experience dealing with people. Being a 'people person' will set you apart from other developers later in your career. It's worth thinking about.

ruigomes 1 day ago 0 replies      
I'm in a very similar situation and about a month ago I posted this exact same question here on HN.

Since then, I went ahead and built a functional job board for part-time jobs for students/parents/etc.

I'm currently looking for some early adopters who have part-time jobs to post (for free!), so if any readers have part-time jobs to fulfil, email me at hello@ruigomes.me.Even though I'm currently booked for months, it'll help people in the same situation I was a month ago, and in the situation the OP is now :)

nickysielicki 1 day ago 1 reply      
Does your university have a job posting site?

I found my student job out of sheer luck, mucking around in bash before an exam and suddenly someone was peering over my shoulder and gave me an email address for their boss, I had a job interview a week later as a junior *nix sysadmin for my university.

You might not find the same luck, but you should definitely try to find something on campus. My boss is very flexible around exam time, and it's just a laid back atmosphere where you learn a lot.

Zekio 1 day ago 0 replies      
you could choose a low salary and work with a start up for experience, unless you need the money.personally i would go with a start up with a low salary since my country pays students and don't care if you have a job on the side.
ichramm 1 day ago 0 replies      
I'll go with number 4
What does it take to run a web app with 5K 10K users?
points by bw00d  11 days ago   discuss
karterk 11 days ago 12 replies      
The most difficult thing is going to be getting to 10K active users :)

These days RAM is cheap and SSD storage is also widely available. For a very long time, one of my side projects with 50K users was hosted in a EC2 small instance. With that out of the way, here are a few things you will need to take care of:

* Security (especially passwords) - Rails should take care of most of this for you, but you should ensure that you patch vulnerabilities when they are discovered. Also, stuff like having only key-based login to your servers etc.

* Backups - Take regular backups of all user data. It's also VERY important that you actually try restoring the data as well, as it's quite possible that backups are not occurring properly.

* One click deployment - Use Capistrano or Fabric to automate your deployments.

* A good feedback/support system - this could even be email to begin with (depending on the volume you expect), but it should be accessible.

* Unit tests - as your app grows in complexity, you will never be able to test all the features manually. I'm not a big fan of test driven development, but really, start writing unit tests as soon as you have validated your product idea.

* Alerts, monitoring and handling downtime - Downtimes are inevitable. Your host or DNS could go down, you might run out of disk space, etc. Use something like Pingdom to alert you of such failures.

* Logging, logging, logging - I can't stress on this enough. When things break, logging is crucial in piecing together what happened. Use log rotation to archive old logs so they don't hog the disk space.

rwhitman 11 days ago 2 replies      
Despite what the smart engineers of HN are going to prattle on about running a web app, it's not about systems infrastructure. It's about people. 5-10K user records in the DB, relatively speaking, is a small list and can be kept on a single pretty minimal server instance.

10K user records is not the issue. It's dealing with the humans who use the app on a day to day basis.

Typically getting only a small fraction of your user base to be active in the app is pretty challenging - if you can acquire them in the first place.

That said, having even a few hundred active users can tip the scales in terms of what is manageable, depending on what the app does and whether they're paying money or not. Customer support can be a full-time job or worse. In the early days your users will discover every bug and problem imaginable.

Biggest mistake I ever made was scaling up an active user base on a free product without a revenue model. Twice I managed to hit a sweet spot in acquiring active users but because I couldn't leverage the scale to achieve anything other than more work for myself, I burned out and it collapsed very quickly. If you make more money as you grow, you can afford to invest in delegating responsibilities or at least justify it. Otherwise you've got a very stressful hobby on your hands..

Quick add-on edit:

If you're launching a web app for the first time, the biggest takeaway you should get from the comments on this thread is anticipate that customer support will be a major challenge.

One of the best ways to prevent a flood of CS inquiries is aggressive logging and alerts to squash bugs or outages before they inconvenience too many users. Lots of great comments in here cover that point, so take notes.

jsherer 11 days ago 5 replies      
I run Minimal Reader [1] (which has about 5k users) and I can say that running a web app like this takes a lot of time and energy keeping everything running smoothly.

My service has a lot of moving parts, all of which are distributed among a couple dozen different servers. Keeping the technical infrastructure running smoothly requires a lot of data visualization of server stats, database stats, web request stats, worker stats, user stats, etc. I have everything piped into a nice dashboard so we can see if there is anything odd happening at a glance. When things break (and they will) you need to know where to look first.

Having 5k users also requires time to help them with support issues. Users generate a lot of bug reports, questions, and suggestions. To keep paying users happy, I offer a 1-day response time on support issues, which requires me to spend quite a bit of time sending emails.

Then, of course, if you want to grow the app, you need to spend time marketing it. We could talk for hours about this.

The list goes on and on. Feel free to shoot me an email (email in my profile) if you want to talk specifics about anything.

[1]: https://minimalreader.com/

soheil 11 days ago 1 reply      
It's relatively simple to create a server that can handle the traffic as long as your app is something simple. The 10k users you're talking about I'm assuming is monthly active users (means they visit your site once or more per month) I have a website (yes a "web app") with 120k active users per month. It's running just fine on a relatively small server. To get users usually you need to give them something to come back to because they feel like it's something that they can't do without, maybe something that only you can provide, and something that makes them feel good and causes them to keep coming back to you to get their dose. If your question is more about technical details, then I'd just suggest not to worry about that until you have to, ie. your server is crapping out right before your eyes, that's a good problem to have. However, one mistake that I have made is to give up eventually on something that I may not see the immediate value in just b/c it's bit too difficult to maintain. So having said that don't waste a second optimizing something that no one's gonna end up using in 3 months. Everything else is really just noise.
troels 11 days ago 0 replies      
That's not a very meaningful metric on its own. 5K users per day? Per month?

How's the distribution of traffic? Do people use it spread out over the month or mainly within the last or first days of the month? Do they use it on work days or throughout the week? Are they from different time zones?

What do they do? Is there a lot of write activity or is it mainly read? Is the read stuff cacheable between users or is it highly individualised. etc. etc. etc.

akurilin 11 days ago 0 replies      
Obviously this depends a lot on the kind of usage patterns your application provides, but in my experience you should be able to comfortably run a 30k _daily_ users (the total n. of registered users could be 10x-100x that, depends) web app on a single $200-300/mo AWS machine (with hourly payments, you can get a better rate by prepaying). Get a bunch of cores and plenty of memory and put both your web app and the DB server on the same box for ultimate simplicity. Postpone scaling efforts for as long as humanly possible, probably until PMF and accelerating growth.

With reasonably "low level" tooling such as Java/Clojure/Haskell/whatever and a properly configured Postgres instance you should be able to go quite far. You're very unlikely to be CPU-challenged in the web app (again, no idea what your web app is going to be doing, so it's just a guess), most of the memory and CPU will be consumed by your database server caching and running queries. You should be able to handle a good 500-1000 db transactions / sec without much hassle.

IMHO most of the challenge will be making something that 10k people will want to use daily, not actually being able to scale to that many users.

filearts 11 days ago 0 replies      
I run Plunker (http://plnkr.co) that gets up to 20k daily active users. Users hammer the preview server[1] all day long generating a significant number of requests (by default it refreshes at each keystroke, debounced by 500ms or so).

That server runs happily as a single servo on http://modulus.io with absolutely no need for intervention on my part.

The rest of the application has similar requirements. I have one micro-equivalent server running the front-end, one the api and one the thumbnail generation. In general, this requires no hand-holding by me.

If your site is not processing or memory-intensive it should be feasible to scale to 10k users with a single $5/month instance on DigitalOcean or an equivalent level server on Heroku or Modulus or GCE.

Good luck attracting your first 5k users!

1: https://github.com/filearts/plunker_run/)

kemayo 11 days ago 0 replies      
Depends on what the app does, of course.

I have http://ficwad.com/ sitting around, with Google Analytics telling me it gets daily users in the upper end of that range. It runs on the cheapest plan webfaction offers (and I'm making it even cheaper with some affiliate credit...). The only place where it's running into issues is email, which I had to write a little queue system to throttle the sending to keep it under the plan's daily limits while still making sure that the important messages go out first.

I could make it fancier and put it on pricier hosting if I bothered to monetize it in any way.

phacops 11 days ago 1 reply      
I have a little over 10k DAU for http://cronometer.com/ and it runs on 2 fairly small cloud instances + a cloud database. A single host can handle the load fine, but I keep 2 running to survive failures.

And it took me nearly 4 years to get that many users. We cant all grow like facebook!

animex 11 days ago 0 replies      
Are you talking about 5-10k simultaneous users? It's very subjective depending on the usage profile of your site. The best thing is to pick a service like AWS/Heroku/Cloud Hosting Service that allows you to grow your offering. After you get to a point of profitability, you can look at greater efficiencies like setting up your own hosting hardware depending on your needs, if that makes sense. Our company has grown to a point where we are looking at implementing our own multi-datacenter cloud to save on hosting fees. But that's a good problem to have :D
mrbig4545 11 days ago 0 replies      
In my experience running https://thisaintnews.com the hardest part is getting and keeping users. It would probably be easier if I did some marketing, but that's too much like work! Still, it's not doing bad for something that's been around for 6 years, and hasn't been worked on in a year.

The second problem is motivation, after a certain amount of time, it becomes far less fun and much more of a burden, at which point you have to decide if you'll power through, give up, or quit totally.

The rest is just a software/hardware problem, and easily dealt with when needed.

As for the load, it's not that busy, but not that quiet for what it is, (http://stats.thisaintnews.com) and it runs on a cheap server from http://www.kimsufi.com/uk/, has a Xeon(R) CPU E3-1225 V2 @ 3.20GHz, 16Gb ram and 2x 1tb hdd, unlimited bandwidth and 1gbps link. It only costs about 25/month iirc.

david_shaw 11 days ago 1 reply      
Okay -- "what it takes" is a pretty broad question, but I'll do my best to put some thoughts together. I run a few web applications, but the most popular one is http://sleepyti.me -- with about ~50-60k views per day.

- A reliable hosting environment. I currently have a Linode VPS (basic $20 package, with $5 monthly backups) that runs http://sleepyti.me, my personal web site, an IRC server, a Mumble server, and a bunch of other stuff -- it's not even close to being maxed out resource wise, even with all the constant traffic the site is getting. It's important to remember that consistent network connectivity is a really important aspect here: a 30-minute downtime during peak hours can easily lose a lot of users. I'd say Linode is great, and I'm very happy with their service, but I also host several Sinatra web applications on a Digital Ocean VPS that only costs $5 per month (although I do my own backups, rather than using their service). I've noticed zero load-related performance impacts. Clearly, though, there is a limit to how far that can scale.

- A production web server. This probably goes without saying, but a lot of webapp developers are used to just working on their own dev environment. For my apps, I use nginx (and thin, when necessary).

- Security. Make sure that you have the basics of application security covered in your app itself. OWASP produces some pretty great "cheat sheets" that can help out in this area. Furthermore, make sure that your server is updated frequently, using SSL correctly, etc. I work in information security -- please believe me when I say that getting hacked is not something you want to deal with when you're trying to grow.

Hope this helps, and good luck with launched your apps!

zamolsys 10 days ago 0 replies      
1. First off, don't think too much about what programming language/framework to use. For such a user base you can use mostly anything and it'll run smooth on a low spec server. Using Ruby and Rails for a website with 5-10k users (assuming they're active users) will definitely not cause problems or empty your CC.

2. Do not invest time and/or money in learning another programming language or framework until you are sure that for a specific component of your product, programming language X will perform at least 2 times better with 2 times less HW resources.

3. Stressing again on the app stack (I saw some really pushy comments on changing the programming language), it is rarely the bottleneck of a web app. You'll scale your storage stack way earlier and more often than the app stack.

4. Know your data. That's how you decide if it's better to use a RDBMS, document store, k/v store, graph database etc. Like I said before, you're going to scale your data before any other layer becomes a problem so choosing the right data storage solution is crucial. Don't be afraid to test various storage solutions. They usually have good -> great documentation and ruby tends to be a good friend to every technology. There's a gem for everything. :)

5. Scale proportionate to your business/product growth. You will have to scale at some point. But be careful to scale proportionate to your growth. For example, if the number of users will double, get the hardware that suffices that growth. Less HW resources will lead to a slower user experience thus user dissatisfaction. More HW resources than needed will increase your costs and the resources that are not needed will stay unused. Why waste money?!

These are my 2c. As your business gets bigger - I hope it does - other problems will occur. But usually these things will last up to 100k users.

Disclaimer: this is for a generic web app as you didn't give us any details. Depending on the app, some of my points might be inaccurate or invalid.

jakejake 11 days ago 0 replies      
Since the article you point to is about programming then I'd assume your asking about the technical side of things rather that actually acquiring 5-10k users (which is very difficult). It's an interesting question, but as you have it phrased it's similar to "how long is a piece of string."

Firstly, the load of a web app is going to be dictated by what the app actually does.

Also 5k-10k users should be clarified as to whether you mean total users or concurrent users. Testing capacity can be actually tricky figuring out how the number of users equates to actual hits to your servers.

As an example, we have nearly 50k accounts but on average only a few hundred are using the service at the exact same time. I would guess that our app is fairly complex compared to the average app. We run 3 app servers, 1 DB master, 1 DB slave, and 2 cache servers. Our monthly hosting bill is around $1,200.

patio11 11 days ago 0 replies      
I think you're asking a capacity planning question. To the extent that you're asking a capacity planning question, for most apps in the Rails sweet spot (CRUD which takes data from users, munges it, and stores it in the database, perhaps interacting with a few external APIs and making occasional use of more advanced things like e.g. taking uploads and storing them in S3 prior to processing by queue workers), you're going to not even notice the day that your user count hits 10k.

If you back out the numbers, they go something like this: eight hour work day, worst hour has 25% of the user base actively logged in (we'll assume it is a very sticky app), 10 significant actions per hour implies 25k or so HTTP requests which actually hit Rails, which is less than 8 requests a second. You can, trivially, serve that off of a VPS with ~2 GB of RAM and still have enough capacity to tolerate spikes/growth.

Let's talk about the more interesting aspects of this question, which aren't mostly about capacity planning:

Monitoring: Depending on what you're doing, at some point between 0 users and 10k users, the app failing for long periods of time starts to seriously ruin peoples' days. Principally, yours. Depending on what you're doing, "long periods" can be anything from "hours" in the general case to "tens of minutes" for reasonably mission-critical B2B SaaS used in an office to "seconds" for something which could e.g. disable a customer's website if it is down (e.g. malfunctioning analytics software).

I run a business where 15 seconds of downtime means a suite of automated and semi-automated systems go into red alert mode and my phone starts blowing up. I don't do this because I love getting woken up at 4 AM in the morning, but because I hate checking my inbox at 9:30 AM in the morning and realizing that I've severely inconvenienced several hundred people.

You're going to want to build/borrow/buy sufficient reliability for whatever problem domain it is you're addressing. I wouldn't advise doing anything which requires Google-level ops skills for your first rodeo. (There is a lot to be said for making one's first business something like a WordPress plugin or ebook or whatnot where your site being down doesn't inconvenience existing customers. That way, unexpected technical issues or a SSL certificate expiring or hosting problems or what have you only cost you a fraction of a day's sales. Early on that is likely negligible. When an outage can both cost you new sales/signups and also be an emergency for 100% of your existing customer base, you have to seriously up your game with regards to reliability.)

Customer support:

Again, depending on exactly what you're doing, you will fail well in advance of your server failing on the road from 0 to 10k users. Immature apps tend to have worse support burdens than mature apps, for all the obvious reasons, and us geeks often make choices which pessimize for the ease of doing customer support.

My first business produced a tolerable rate of support requests, particularly as I got better about eliminating the things which were causing them, but I eventually burned out on it. I have a pretty good idea of what my second one would look like if it had 10k customers -- that would imply on the order of 500 tickets a day, 100+ of them requiring 20 minutes or more of remediation time. This would not be sustainable as a solo founder. (Then again, if that business had 10k customers, revenues would presumably be in the tens of millions, so I'd have some options at that point. There are many businesses which would not be able to support a dedicated CS team on only 10k customers, like e.g. many apps businesses, so you'd have to spend substantial brainsweat on making sure the per-customer support burden matched your unit economics.)

The biggest issue: selling 10,000 accounts of a SaaS app is really freaking hard.

pjbrunet 11 days ago 0 replies      
Depends what they're doing. With a Linode + LEMP stack you can serve millions of users. I'd say MySQL is usually the bottleneck but if you have time to perfect your software, there's no telling how many users you could serve from a good VPS account. Don't get caught up in the hype. Cost of the hardware is not really prohibitive. Finding someone that knows what to buy and what to do with it, good luck!
arihant 11 days ago 0 replies      
I'm not sure how system intensive Rails app is, but we ran a Facebook game with 20K daily active users on a $8/mo Dreamhost, back in 2008, with a fantasy league and all. My point is, unless you're doing something extraordinary, I doubt you would need more than a VPS.

As others have mentioned, multiple of those users can be hosted on an EC2 small instance. I suggest you start there. When moving to production, a bigger challenge is security, both in terms of intrusion and data protection. Making sure you have good rollback feature built into your rollout regime, because things can be fatal with real users. If you're using something that's basic like Heroku or EC2, you can scale way beyond that user strength with a click of a button. Scaling up would be least of your worries, at least for a few weeks.

If you're unsure, go with Heroku. Once you understand your system use, you can very easily switch to AWS and reduce costs.

darkarmani 11 days ago 0 replies      
> I am now wondering what it takes to launch and successfully run a website with 5-10K users?

What do you mean by this? Doesn't this depend on the usage patterns? Do you have 5-10k concurrent users or are these users spread over a day?

The operations side is a whole other profession that dovetails into the technical aspects of getting it running on a good architecture.

metaphorm 11 days ago 1 reply      
I can think of three things that you'll really really really want to be on top of while scaling up

1. your architecture must allow for vertical scaling. this means upgrading your hardware to beefier, stronger, faster machines with more CPU power and more memory. vertical scaling is often a very cost effective of improving performance.

2. your architecture must allow for horizontal scaling. this means being able to provision and deploy new instances of your application servers very easily, using an automated process. more servers running in parallel is a very effective way of handling increased load.

3. you must be able to monitor and protect your systems. https everywhere. highly secure passwords everywhere, and you should rotate your passwords on a regular basis. log everything and set up services to monitor your logs and notify you when weird/bad shit happens.

jacquesm 11 days ago 0 replies      
It mostly depends on what the users do. If the interaction is minimal and most pages can be rendered once and then served from cache you can run this on a laptop. If interaction is intense and everything has to be generated on the fly it could tax a mid range server. It all depends on the use case.
earth2jason 10 days ago 1 reply      
Well, I think good indexing is key. How do you have your indexes. If they are aligned with what is frequently queried then you should be in good shape. A database of 5-10K users isn't difficult these days for any major DBMS. The key lies in the other things attached to the users and items you query. That can run into the millions. Even that is not much, but depending on how many times you query a million row table, it could put a pinch on your optimization.

Good database mechanics is key. That is the most important thing in my opinion. That is really the whole point in rails when you are deciding relationships. The abstraction in Rails when deciding what should be the best model structure is the same thing as deciding what should be the best and most efficient table structure in your database.

The rave about MongoDB is that it (maybe not quote me on this) "cures" the need for the desire multi-dimensional database. However, even with MontoDB's ability to expand due to it's not needing a pre-defined structure and the ability to expand out dimensionally to a certain extent, PostgreSQL (claims anyways) is still more efficient if you correctly index your tables (think about how you will be querying) and create the correct relationships. Build out models. Allow flexibility.

Also, don't forget caching. Redis and performing jobs is key in certain situations. However, don't get caught up in too much hype. Especially those coming from closed source technologies (Not just talking about caching technologies here but everything in general). They will sell and produce an atmosphere of necessity, but do some research first. Don't follow the heard. I am not going to call anyone out on this. Just do the research and think why is that necessary. I've mentioned Redis a few times and maybe that isn't even necessary either.

Most importantly, put your stuff out there. If it crashes, so what! At least you know you have something. And then you will have people who will give you advice in a coherent direction if necessary.

I salute you in your efforts. Now the most important part is put it out there and kick ass!

You may even want to look into Redis which is a cache system.

saluki 10 days ago 0 replies      
@DHH's startup school talk says it best.

"Scaling problems rule . . . "


Sounds like you have the skills to grow this up to 500 to 1k paying customers on your own. Early on you can increase ram/cpu to handle any initial scaling issues.

Once you even have 1k customers you'll have revenue to hire experts to help you with scaling and security.

Good luck in 2015.

kentf 11 days ago 1 reply      
Before we sold WinJunkie.com we had:- 75K users- 5K daily w/ 10K burst on Sundays- Over 1M db transactions- Rails- Redis- Memcache

Heroku: $279 - 400 / month

shaunrussell 11 days ago 0 replies      
I am hosting upbeatapp.com on heroku's free tier. We have ~10k users, with ~250 concurrent at peak.

Getting the users and keeping your head in the game is the hardest part.

pmelendez 10 days ago 0 replies      
I have an online game that has 16k active users and for the backend I use a $90 per month dedicated server. I can share the details if you want but my point is you won't necessarily need a huge server to maintain 5-10k users.
majc2 11 days ago 0 replies      
Could you clarify if its 5-10k users concurrent? per month? per day?
atom_enger 11 days ago 0 replies      
I run Reverb (https://reverb.com) and there's a lot of good information in this thread. Backups, Security, Alerts, Monitoring, all good things.

However, the biggest piece to scaling your application is the automation of everything you possibly can so that you can scale when you need to. You're going to be in a bit of pain if you need to scale everything manually.

Here's a few things I automate using Jenkins:

* Creation of web application servers(whether it be Puppet, Chef or Ansible, etc) make sure you can bring up a new node quickly and scale your app layer horizontally. Ideally automate the addition of this node to the LB.

* Data store backup/restores to all staging environments on a schedule(tests backups/restores) this is done using some custom code and the Backup gem. This way your dev team has access to an env that closely resembles prod and can resolve current prod bugs.

* External security scans using NMap (again using custom scripts). The jenkins job will fail if output is not as it expects. This way if we change a layer of our infrastructure we can know if something is exposed and shouldn't be.

* Static code analysis using Brakeman

Information you're going to need to scale your infra:

* Metrics on each one of your hosts. Use DataDog if you can afford it, integrates with all major systems and technologies. Great tool.

* Log collection via something like Logstash or Loggly and being able to visualize your application and web logs.

* Application response time measurements using something like NewRelic or building your own using StatsD and tracking the heck out of your application actions

Last but not least, have a plan for failure. While you're laying in bed at night, ask yourself these question:

* What would happen if the DB went poof? Can I restore it? How much data will I lose from the last backup? Will I know when this happens?

* What would happen if you're now being scanned by 30 ips from the netherlands, all of which are submitting garbage data into your forms. Are you protected against this? How will the added load effect your app layer? Do you have a way to automate the responses to those requests so as to deny them? This is a case of when, not if. Be ready.

* What would happen if my site gets put on Digg(lol)?

There's no magic bullet here. It's just practice, failure and learning from yours and others mistakes.

Good luck!

lcfcjs 11 days ago 0 replies      
Probably the first thing would be to drop ruby and use the PHP Zend framework or node and a nosql db.
thinkcomp 11 days ago 0 replies      
PlainSite (http://www.plainsite.org) has about 12K users per day on average. Most of them are just browsing for cases, not paying, but some are paying.

The main stress on the system is really determined by the complexity of the SQL queries on each page. I've spent a great deal of time optimizing them, and I know there are certain ones that need to be further optimized. I have the database (MySQL) on one server, the web server and documents on another, and static resources such as images on a third, which probably isn't even necessary. All three servers run Linux and the database server has 48GB of RAM. They're hardly new; you could buy all of this equipment today for under $1,000 total.

The biggest technical bottleneck is really RAM; the biggest expense for this kind of site is bandwidth.

Ask HN: My son wants to make side money programming
points by Vivtek  1 day ago   51 comments top 29
underyx 1 day ago 1 reply      
Hey, I work at a startup in Budapest (allmyles.com), I'll ask the team if we could teach him a thing or two by passing off some work. We mainly work with Python, and having him around (office is next to Dek Ferenc tr) might prove fun for all of us. Remote works for us as well, of course.

Disclaimer: We're rather bootstrapped, so I can make no promises. (Jeez, we might not be able to afford a 15 year old programmer.) An even larger issue might be that I think it's illegal to give work to anyone under 16. I'll have to ask around and if you send me some contact info to bence.nagy@allmyles.com, I'll get back to you once we've got things figured out.

crdb 1 day ago 3 replies      
I'll take a different tack.

In my world (data) there is a lack of developers - or just people of any kind - with sound understanding of the relational model and its (only relatively correct) implementation, SQL. SQL is a very declarative language, high level and intuitive and easy to write correctly. With a good RDBMS, it's also easy to optimize when you are resource constrained.

And literally EVERY company out there has a database that needs to be queried, reports that need to be put out, databases that need to be normalized, data warehouse schemas that need to be drawn up, data sources to be joined together, questions that need to be answered and relatively few people to do the work.

I would say start with bases in set theory and logic in parallel with C. J. Date's books (which are easier than Codd's original paper as a starting point). An additional benefit of starting there is he's less likely to shoot himself in the foot with ORMs later on.

Regarding where to look for work, talking only about Singapore and ASEAN companies, I get contacted several times a week by agents, headhunters, and executives from local companies who have these problems. I can't speak for Europe, but here, a cold approach or a well formed reply to a job ad with "data analyst" in the title offering cheap ("because 15") but high quality remote work might work.

Beltiras 1 day ago 1 reply      
Python. Fullstop.

Is he interested in games? Make him implement a roguelike, or study Panda3D, if that's where he leans.

Does he like to design UX? Use one of the wonderful web frameworks (my fav: Django, but also tornado, Flask, Pylons) and do some webdesign.

Useability applications for the Desktop? https://wiki.python.org/moin/GuiProgramming more frameworks than you can shake a stick at.

Best calling card you get when looking for work is pointing to what you built. Rent a DO dyno and post the work there. Showcase cool stuff.

karterk 1 day ago 0 replies      
I started along the same path 12 years ago, so I can share my experience.

* I started with PHP. My suggestion today is to start with Django (Rails is fine too, but Django has less magic and so things are lot more explicit)

* Bootstrapping out of nowhere is difficult. He will have a lot to learn from the knowledge perspective. So, looking out for opportunities, negotiating payment etc. can be draining. This is where you can help so that he focuses on learning his craft first.

* It will be tempting to work for free. Advice him against that. He can work for a low fee, but getting paid puts the work in the right context.

* Stay away from portals like Elance and ODesk.

* Working as an intern at a company would really help him with the other meta aspects like planning, team collaboration etc. which are all important to pursue his long-term goals.

nkuttler 1 day ago 0 replies      
It seems like almost everybody who replied is a web developer, and assumes your son wants to build websites. Let me suggest something different.

Figure out which part of programming he's interested in, why he likes it. Is he good in maths/physics, does he want to write games, websites, apps, etc.

If he's just interested in "programming" in general, get him a nice book on algorithms and suggest different languages he can use to implement them (something C-like, a scripting language, a functional one, a modern Lisp dialect).

Oh right, get him to use Linux or BSD, as that will give him access to a ton of free development tools. I also mention free because I don't think he should focus on making money at 15, but find something he enjoys learning. If necessary, you could provide incentives to learn this properly, instead of following possibly short-lived market trends.

luch 1 day ago 0 replies      
Generating money from programming is hard, really hard. I'm a professional developer (though a junior one) and I can't find ways to do it reliably.

If it's still interested in programming, here is my list of languages :

- Desktop : Python obviously. You can make little graphical interfaces, easy scripts, manipulate data in Excel or Word, even some remote automation since there are network libraires.

- Web : I would recommand against full-blown web frameworks like Django or Rails. Start small by using some simple static sites using HTML+CSS and then learn to build dynamic ones using PHP and Javascript.

I would also add that there are others ways to make money than programming : I know a 17 y.o. which rigged up a farm of Minecraft servers for his highschool and he's being paid by his classmates for the hosting.

chippy 1 day ago 0 replies      
How much does your son want to do programming? Does he do it for fun already?

What other interests does he have? Are there parts within these interests that could have relevance for programming? For example he might like bird watching, so perhaps a mobile app for birding might be good, or he might love platformer video games, etc etc.

In short, he should do what he is interested in, don't worry about the choice of technology - by far the most important thing is that there is some interest, passion and enthusiasm. The choice of technology is less important than the choice of what to do.

codingdave 1 day ago 0 replies      
It depends on why he is trying to make money, and how quickly he wants it. But if this is the start of a long-term career plan, then I suggest doing some small projects for free to learn more skills and build a reputation.

If those projects go well, he will quickly get referrals to do more, and then he can charge. On the other hand, if they go badly, people don't feel like they lost money, and instead will feel that they gave a 15 year old a chance... and may even give him another one when he is 17.

It is amazing how quickly expectations rise alongside bill rates.

jakobegger 1 day ago 0 replies      
If he wants to do freelance work, I suggest browsing job boards on university websites or on facebook. There are always lots of people looking for part time developers there.

But as an alternative to freelancing, I'd recommend making a little useful app and selling it on the web or on one of the app stores. I make Mac software, and there's a big market for useful utilities on the Mac App Store. The hardest part is probably coming up with ideas for apps; when you're 15, you just don't have a lot of experience with the kind of problems people have.

Here's an idea for a simple app, to illustrate what I'm thinking about: Make a CSV file converter that can convert between comma-separated-files and semicolon-separated files. If you add hungarian localisation, you even have a unique selling proposition.

As for what programming languages to start with, I'd probably pick Objective-C / Swift if your on the Mac, and C# or Java if you're on Windows, and C++ & Qt if you're on Linux. These languages are popular, in high demand, will probably still be very relevant in 10 years, and you can quickly get an internship in many companies if you have basic knowledge of those.

Why? Native development has a bit steeper learning curve than web development, but in general the tooling is better (IDE, documentation, etc) and there's less competition.

davidw 1 day ago 0 replies      
I'd recommend this book and the bootstrapping community in general:


He could probably do ok with Ruby on Rails, Django, Node.js or something like that.

vayarajesh 1 day ago 0 replies      
If he is interested in web development I think Khan Academy is a good place to start (https://www.khanacademy.org/computing/computer-programming)

Great teaching lessons and lot of jobs around the world for the web

toyg 1 day ago 1 reply      
15 is late -- by mainstream reports, at that age you're either a billionaire already or you're never going to make it. </joking>

Back in my days, I'd have built websites for friends and some would turn into (badly) paid gigs. If he's got other interests (sports club etc) they could become engagements.

If really he wants to do websites, you'll have to start with JavaScript/jQuery, then graduate to server-side (node, PHP, Python/Django, Ruby/Rails, pick your poison).

Consider that the real dazzle these days is mobile, and it's not that much harder than making websites (or he can make mobile-optimized websites, which can be almost as cool). It might be easier to get engagements on that side at the moment, since most people/clubs/businesses already have a website but they likely don't have an app.

edtechdev 1 day ago 1 reply      
There's contract work - like creating little websites or web apps for people. So, learn things like Wordpress, CSS, Javascript, image editing, to start.

If I were him, I would first ask around - family, local businesses, organizations, etc. to see if someone needs a website or internal database or something like that, and then learn what you need to learn to do it. Another option might be to find groups or small businesses or individuals that do coding and see if he can learn from them and help out.

What I wouldn't do is just try to learn programming for its own sake - such as taking a course or buying a book without any idea of how it might be useful. He'll just forget it and perhaps even decrease his interest in programming. Flip it around and find a project first, a reason to learn programming.

sheraz 1 day ago 1 reply      
Love an entrepreneurial spirit!

Bust first, some comments/questions:

- Programming is too broad. I would sit down and get him to think through what he means when he says "make money programming." This can go in a lot of directions (games, setting up wordpress sites), SEO, data scraping, etc.

- Get to know the local ecosystem. Check http://www.3cosystem.com/budapest to see what meetups are coming this month. (Disclaimer - 3cosystem is a pet project of mine). Go to those events and ask the same questions here. See what is in demand. See who is making money locally and abroad.

- I just checked, and there are quite a few events coming up this month. That is a good opportunity for both of you!

Good luck!

barrystaes 1 day ago 0 replies      
Yes experience is important. I'd say "software development experience = spending time hitting walls".

So find an interesting wall, and let him spend time on hit. For me the interesting things where thrill to see the computer do things, but for others that may be a paycheck.

Do not make cheat time by arranging or buying stuff, except for maybe a laptop. The time consuming obstacles motivated me a lot, i spent more time and effort in learning than i would have otherwise. I went through several programming books that way, just to satisfy my curiosity. Not deliver to some boss.

Later, ofcourse i descided to work for a boss, but by then i discovered what exactly i really found interesting.

facepalm 1 day ago 0 replies      
My personal opinion is that JavaScript is the most fun and the most versatile. For example if he is into making games, creating HTML5 games with JavaScript works very well.

Not sure what is best for generating money.

But for learning, starting with a personal project (like a game) tends to work well.

WorldWideWayne 1 day ago 0 replies      
Don't count out C# and SQL via SQL Server because C# runs everywhere and has got the proper tools to support it running everywhere (mobile, web, desktop) and SQL Server because it's the easiest to start using with C# if and when you get to that part...

Other languages like Python, PHP, Javascript etc. need to be shoe-horned into their mobile, web or desktop environment and don't have really good tools for one environment or the other. Furthermore, those languages come from the open-source world, the "Bazaar" if you will and they're simply not engineered as well as an industrial language like C# or Java.

fjord777 1 day ago 0 replies      
Python, specifically winpython 2.7.xYou can see variables in the Variable Explorer and ipython is the default shell. Easy to install packages using the WinPython control panel.

Download it at https://winpython.github.ioWindows packages at http://www.lfd.uci.edu/~gohlke/pythonlibs

glxc 1 day ago 0 replies      
Learn programming fundamentals through TopCoder and HackerRank, which have programming puzzles and teach algorithm and data structure fundamentals

Then also get involved in an open-source project, just keep looking for interesting subjects and find one you like. Programming is more about managing projects, and it will give you something to put and talk about on your resume, and meet new people, and lead to jobs

Everything you need is online. "Pick a job and become the person that does it" - Mad Men

steedsofwar 1 day ago 0 replies      
If it's solely for the purpose of making money (as opposed to learning for the challenge/curiosity) then do some research: freelancer.com, odesk etc etc. I'd check which technologies are in demand and go from there. It's also important to play to your strengths, for instance i find web development very finiky, i tend to excel in more meaty things like transaction processing. hth
nnain 1 day ago 1 reply      
Honestly, if the lad's driven and 'wants to make side money programming', he should be curious enough to ask this question. I find it weird that people are suggesting SQL or Swift or Python, without even knowing what he's like. Maybe he likes microcontrollers. Who knows!

That you can mentor him is great but programming needs an innate interest. You can't really do his homework.

thejew 1 day ago 0 replies      
I started at 15 (15 years ago). Although today I am a Python guy and generally a little anti PHP. I think that the ease of PHP with web servers translates almost immediately with beginners. It will teach him to search for what else is out there. Plus if he is going to be doing little church/synagogue websites, he start to grasp HTML/CSS/Javascript at the same time. Same way I started.
bobx11 1 day ago 1 reply      
Maybe you guys should offer wordpress services for setting up websites. Then you would be:

1. working within a large piece of software (learning)

2. up and running fast and feeling good about making progress

3. able to use google to resolve more of your issues since stackoverflow and many blogs talk about the common beginner mistakes

4. have more customers up front (since money is the motivation) where many people are willing to pay for wordpress setup and management

kamalisreddy 1 day ago 0 replies      
I suggest he start with creating his profile at odesk.com and freelancer.com . Initially, he needs to apply for smaller projects and at significantly lower prices than the other bidders. He can build a good portfolio and start moving to bigger and paying clients.

He could start with web development initially. It's the fastest way to get going. Then move to other subjects like algorithms, machine learning, Big data.

Ask him to build some stuff which can solve some real world problems that he faces in every day life. If other people also face such problems, they will pay to use his tools.

Good Luck

jkot 1 day ago 0 replies      
Programming is very competitive market. Python is probably good choice for first language. Together with programming language I would recommend to learn some database, perhaps Cassandra, RethinkDB or SQLite.
gghootch 1 day ago 0 replies      
A lot of kids start with Wordpress customization or selling themes on ThemeForest.
jacquesm 1 day ago 1 reply      
KISS: Python, Ruby or PHP, Django, Rails or Yii.

If any of those take the world will be his oyster.

Thiz 1 day ago 1 reply      

The money is in mobile right now, and for the foreseeable future. Try Java for android too. In a couple of years he'll be making good money without leaving home.

Or anywhere in the world for that matter.

willholloway 1 day ago 1 reply      
A $450 Seiki 50" 4k display makes an excellent teaching tool. It's so large you can see code from a higher elevation so to speak. Visualizing and "seeing" how a script flows become much easier. You can stand by the display and point to how a function call executes the code where the function is defined and things like that.

This is the stack I would set up with, optimized for ease of use, elegance, and market demand:

Debian sid or Ubuntu

Tiling window manager


Python flask on the backend

Bootstrap on the front end.

A hacker that is comfortable with Linux and the command line, python, html, css and js can find work anywhere.

Ask HN: What tech companies are most like grad school?
points by jnbiche  1 day ago   10 comments top 3
temporary_art 1 day ago 2 replies      
I've heard great things about Two Sigma, they sell themselves as having a very academic environment (lots of PhDs, tech talks, etc.).
gamechangr 1 day ago 3 replies      
Obviously...Google. You should think about including (not Google) in your title.
GFK_of_xmaspast 23 hours ago 1 reply      
The thing about being a graduate student is they work you like a dog and pay you peanuts, it's not a kind of environment I have any desire to go back to.
       cached 21 January 2015 05:05:01 GMT