hacker news with inline top comments    .. more ..    23 Feb 2014 Ask
home   ask   best   5 years ago   
Why doesn't FB to implement restriction/ACL for accessing uploaded photo?
8 points by hrasyid  3 hours ago   6 comments top 3
patio11 3 hours ago 1 reply      
This is a product decision.

It may be partly informed by 1) If anyone sees a photo, they can redistribute it regardless of what our restrictions are serverside, so might as well not give users unreasonable expectations. 2) We really WANT people to share photos. That's basically what Facebook's core interaction is. 3) Implementing this additional security does not increase any metric which Facebook cares about. 4) Users occasionally rely on this feature to post pictures which they host on Facebook to other sites on the Internet, which we want to support, because it means they post photos on Facebook.

buro9 2 hours ago 0 replies      
It's hard to do when you have users counted in billions, and photos counted in trillions, and then have those photos stored across multiple datacenters and served globally through many CDN endpoints.

It is undeniably possible, but the cost (money, performance) is so extreme and the benefits so small (the edge case of people sharing confidential things by copying file URLs when they are always going to be able to take a screenshot in an undetectable and sharable way)... that it just does not come out as a thing worth doing.

Then when one considers that the faster you can make file serving and the UX of the web site and app, the more responsive and higher the engagement... which means increased likelihood to click adverts too.

So you have a huge cost, with little benefit, vs a drop in speed and potential impact to advert revenue.

No reasonable company is going to say that this should be done unless there is an overwhelming business reason to do so (i.e. you are Box and storing company secrets and the liability of leaking them is extreme).

wslh 1 hour ago 1 reply      
I always thought that configuring Facebook permissions is more complex than administering Windows Advanced Server.
I'm completely demotivated to work; what can I do?
97 points by iyra72  20 hours ago   121 comments top 61
bane 17 hours ago 7 replies      
I'm going to say something that's a little tough but it's meant as advice coming from years of mistakes before I finally got my head on the right way: Part of growing up is learning to prioritize what you need to do, even if it isn't fun, over what you like to do. This is how the real world works, and it's what you'll spend the rest of your life doing. Learning to do it when you're young, when mistakes are smaller, will make the rest of your life so much better.

When you get your needs out of the way, the fun stuff you can do is all the better, and you'll know more about the fun stuff that you're doing enabling you to open more worlds of enjoyment later that you'll never be able to conceive of without putting in the hard work to start. Doors will be open to you that you'll never even imagine if you put in the work to build the foundation of your life right now. Digging the metaphorical ditches and laying the metaphorical concrete for your foundation sucks, but that's how life is. Lots of sucky boring shitty work, for a few profound moments of bliss.

I know this sounds just like words right now, but I wish this was a concept that I had truly grokked much earlier in my life before I had to spend years fixing all the bits and pieces I needed to do that I had deferred.

Nobody gets to do the fun stuff for long, without working out all the dreadfully boring bits a head of time.

Want to be an explorer? Spend months raising money and building schedules and looking at maps and buying equipment.

Want to be a rock star? Spend years learning to play an instrument, playing in dive bars and making demo tapes. Get a break then play the same 4 hit songs for 20 years.

Want to write awesome code and run an awesome business? Spend years learning computational theory, business management and leadership, raising funds, and last but not least, writing thousands of lines of boring boiler plate, edge case handling and plumbing code.

Want to be an author? Spend a few years writing a couple hundred pages on your topic then get rejected by 99 out of 100 publishers. Then do an endless book tour where you read the same passage from your book 300 times.

Learning to do the boring, dreadfully dull, uninteresting stuff...learning to just muscle through it...is the most important life skill any human being can learn. It's the marshmallow test magnified by a million.

kirillzubovsky 13 hours ago 4 replies      
Dude, whatever you choose to do, please do yourself a favor and ignore the bullshit advice that starts with - "this is how the real world works..." That nonsense only comes from people who had settled for the average.

Life works in any way that you want it to work.

Look, if you don't want to do the shit work, don't do it, but don't bitch and moan and complain about it. Instead, find a way to still get shit done, while not doing the work you don't want to do.

You don't like doing homework? Nobody does. It's a waste of time and you will not use 90% of what you've learned.

Spend the bare minimum time you need to pass high-school on work that you have to get done, devote the rest of your time to the work you want to get done. If that means learning computer programming, do it. I had friends in high-school who managed hosting companies, while at high-school. Guess what, while the rest of us were solving stupid problems and learning history, those guys made money. It's not a bad skill to learn.

Anyways, this discussion could go back and forth...Get off your ars, close HN and just f'ing do something!

billyjobob 18 hours ago 2 replies      
So you don't like school work. You could get higher grades if only you were more motivated...

i.e. you are exactly like every other 16 year old I ever knew.

Most of them because more motivated once they started university and were able to focus on what they enjoyed studying. I'd be more worried if you were motivated at 16, because then you'd probably burn out, or grow up to be an obnoxious brain box.

Also, since you sound like you are in the UK, you should realise that grades don't matter here. No-one will ever ask what you scored in your maths A-level. Your success in life will mostly be determined by the connections your parents have. The only thing you can do to improve your chances is network and make some more connections of your own at university. Plenty of top jobs go to those who graduated with the "gentleman's third" because they spent their time networking rather than studying.

ef4 18 hours ago 1 reply      
> Are there any ways by which I could motivate myself to study more?

Probably not, if you're asking the question. But I don't think you should study more. I think you should program more, since it's already something you enjoy enough to do for fun. It's a question of playing to your strengths.

Put in the 10,000 hours of sustained effort that it takes to truly become great at it. Prove your abilities through open source.

You will have no problem finding an interesting and well-paying career, if you push yourself hard to always keep learning both about programming and about the business of software.

If that sounds like a lot of hard work, well yeah, it is. There's no shortcut. Either suck it up and do your homework and color inside the lines, or summon the guts to blaze your own path. Or do neither and let the path of least resistance take you where it wants.

Which path are you more likely to regret 40 years from now?

DanBC 18 hours ago 2 replies      
You have a temporary hurdle to jump over. Get good grades. The aim of getting good grades is only to get good grades. There's a bunch of stuff that you can do with good grades, and if that motivates you it's great. But at the moment you just need to get the good grades.

So, perhaps when you're studying you put in 30 minutes for school work, and 15 minutes for what you enjoy, then have a break. Then repeat that.

This allows you to get the good grades, and keeps you interested in the subject.

You'll have a bit more freedom in Uni, and you'll so you can see your current task (get good grades) as also being "learn some discipline".

There will be some people who want to get better grades than you. Thus, you should get best grades you can just to stick one in the eye of those people.

nulagrithom 19 hours ago 1 reply      
Do you have a job? Go push a mop for a couple years. It will motivate you to do well in school and has the added benefit of giving you some money for university.
mistercow 15 hours ago 1 reply      
If you spend your free time programming or researching, and aren't motivated by academics, then you might want to reconsider academic direction you're going in.

For someone who has the motivation to learn programming on their own, I seriously question the value of a formal education in anything like CS or math. You already know you can learn that stuff more easily outside of a classroom, so I would argue that taking that academic path is a waste of both your time and money.

Instead, I would consider studying something totally different. Programming is a wild card - you can play it to improve any hand you have. Keep honing those skills, but go to university for something you can't so easily learn on your own.

This is the advice I wish someone had given me before I went and wasted time in college.

dhughes 15 hours ago 1 reply      
They way I think about it is you can work a dead end job for 80 hours per week making $8 an hour to make enough to survive and not have any free time to socialize, go to the gym or be with family. Or study for and try to get a decent job you like that pays half decent so you don't have to become a human eraser and wear yourself down doing the work of others. Having many skills to fall back on is great but trying to learn everything losing focus and never finishing anything isn't much help.

Or realize you need to focus and find a career that you like and is wanted by employers. I recall years ago they mentioned "The fear" and it is a great example of suddenly realizing shit I better start getting good at this life thing, now!

Time is shorter than you think your health can suddenly rapidly fail, saving for retirement is a constant worry. Time is so short it's as if nothing you do can be done soon enough. Realizing that early in life is fantastic. A big part of life I think is having mentors who are examples to follow it's good to have a person who you can think "What would Bob do?" as an internal guide.

It's easy to say all that but hard to do, I haven't mastered that yet.

Theodores 14 hours ago 0 replies      
The problem with education is that it always has a different take on a subject to what personally fascinates you about the subject. Subjects that might have floated your boat personally for many years will be taught differently to what you expect, killing your interest in a subject.

There is an adage about teaching - if you cannot do then teach, if you cannot teach then teach Geography. If we take Geography as an example, you might think of geography as being about places on a map, be able to name all U.S. state capitals and know where Dhaka is and Dakar isn't. Then, in a geography class, you might find that knowing where anywhere is does not matter in the least. 'How flood plains are formed', 'how a volcano works' will be what is taught, without any mention at all of physical places.

The geography example is an example of how expectations of a subject can be wrong at the basic school level, you can live with a mis-match of expectations in geography syllabus, however, go to university and it is another kettle of fish. You might think politics would be a useful thing to study, be passionate about the subject and be knowledgeable about current affairs. Again, none of that would matter.

Computer science is another area of concern. You might be good at programming and be up to date with whatever is on HN. Yet, at university you might get taught languages and methodologies that are a world away. There might actually be reasons why the university teach what they teach that are not readily apparent. The military might have some link up that means that stuff that matters to designing jet fighters gets taught. Clearly none of it - 'ADA' - for instance - might have no relevance in the real world.

Returning to your subject of maths, in the real world you are doing pretty well if you have problems that require secondary school stuff - trigonometry, calculating prices with tax, differential equations. Actually you could probably go a long way on getting a man on the moon with secondary school maths, yet there is a whole world of maths beyond that. Triple integrations, anyone? Even if you do find a real world use - electronics with Gauss's theorem - there aren't many uses for that real world use. It is all too convenient for maths to be taught in such a way that it is abstract and not practical, e.g. teaching a program to do it for you, or working on a large dataset in a computationally efficient way. Even reading the data in is not something that would be taught. It is a bit like how you can do a degree in electronics and never touch a soldering iron or know how to fix a fuse.

So my suggestion is to not head off to university so hastily. Work somewhere for a little while then go to university because you know why you are going. You can actually learn useful stuff at university rather than go there to just get a bit of paper.

Aqueous 19 hours ago 2 replies      
It's nice to chip away at programming but if you don't have an academic basis to guide your studies it is going to keep you out of a lot of jobs when you get out. Take it from someone who knows - I've programmed useful things in just about every language, but because I didn't major in Computer Science (Physics/Philosophy instead) I'm unable to compete for the top tier of jobs. Hopefully this isn't permanent, as I'm teaching myself computer science now, but I could've saved myself a lot of work if I had just chosen a concentration more suitable for the jobs I was interested in.

You may be a confident auto-didact but even auto-didacts tend to have large blind spots. You don't know what you don't know, and school is there to tell you.

yuxt 19 hours ago 1 reply      
Open a map, close your eyes and point randomly. Pack you backpack, buy tickets and go there without any reservation. Spend at least 1 month away from home, comfort and routine.

When you are back you will know exactly what to do.

zacinbusiness 15 hours ago 0 replies      
Get a shit job. Get shot at by a thug. Clean up other peoples shit and piss all day for minimum wage. That's what worked for me.
loceng 19 hours ago 0 replies      
Exercise. Relatively new discovery that lactic acid, that comes from muscle use, is a "pre-cursor" for motivation.
alecco 18 hours ago 1 reply      
Some things that help me:

    Visualize goal: close your eyes, imagine your acceptance letters    When stuck, go for a little walk or physical exercise    Do goal-oriented studying (e.g. Pomodoro technique)
Understand the education system wants you to comply, this is wrong, but the faster you get over it the faster you'll forget about it. It's better to keep your mouth shut, don't complain or antagonize, they are not going to change for you or anybody (they haven't in centuries). Give them the little self importance they crave for and get from them what you want (grades, diploma). Of course, keep your mind critical but keep it to yourself until they give you what you want.

Also don't overwork yourself, perhaps this is not the best time to spend many hours doing unrelated programming or research. It can be a distraction to your education goal. We have limited willpower, try to avoid depletion. Only when you achieve your studying goals for the day you get to do your own thing. Study in the mornings, play in the afternoons.

Modifying your routine takes a while, do it in baby steps. Remove all temptations that might get in the way to your goals until you achieve them. But keep a good chunk of the day to clean up your head.

Of course, YMMV.

RivieraKid 13 hours ago 0 replies      
I tried couple of anti-procrastination techniques and the only one I had moderate success with is the "no internet mode". When I have some project to finish, I make a decision that until it's finished, I won't use the internet at all from the morning to 8pm (except for work-related things and email). What's really important here is that you have to decide firmly. This usually lasts couple of days but I'm thinking about doing this every day.
Goladus 18 hours ago 0 replies      
One way to overcome a lack of motivation is to ruthlessly eliminate distractions. Tailor your environment and to be (and practice habits that are) maximally conducive to studying. If you have a hard time "taking a step back" to take an objective look at your habits and lifestyle, you might find yoga and meditation helpful.

Exercise can also help keep your energy up, but in my experience exercise doesn't magically solve motivation problems and sometimes gets in the way. Working a hard labor can give you good experience but I think the motivation that comes from that sort of work tends to be vastly overstated and wears off very quickly.

Do you spend time programming because you're motivated to program? Have you produced anything of value? What sort of research do you do? What motivates you besides programming and research? Who is paying the bills right now?

alexkus 18 hours ago 0 replies      
Sounds just like me at 16. Wasn't very motivated despite studying the A-Levels I wanted to (Maths, Physics, Computing). Spent all my spare time stealing Internet access at the local University (this was back in 1992/1993). I got decent grades (AAB) and got into my first choice University, but the motivation to do well still wasn't there. Ended up getting a 2:2 where everyone expected me to get a 1st. After that I was lucky and ended up in a good job where degree result didn't matter.

Looking back I wish I'd talked to someone (not my parents) about it at the time. So I'd recommend finding someone to talk to at your college; your form tutor (depends, I didn't get on with mine), careers advisor, pastoral care reps, etc. Just remember that they should be there to help you do your best, not bollock you for not putting your full effort in.

allworknoplay 19 hours ago 0 replies      
Fuck school, it has no intrinsic value. It's not an end in itself, and it's not built for everyone. If it's not built for you, find something you DO like and dive into it hard. You're on hacker news for some reason -- what is it you're into? Learn how to do it yourself, get technical, build skills around that. Also, make friends who are likewise into it. I promise you'll be a lot more engaged.

Do the school work but do it with something else in mind.

Also: the guys suggesting drugs know nothing about you and are probably not doctors. I love drugs, but I'd never suggest them without knowing more about you. It's absurdly easy to build a serious amphetamine dependency that will leave you feeling a lot worse than you do now.

forgottenpaswrd 15 hours ago 0 replies      
"Are there any ways by which I could motivate myself to study more?"

You told us, the answer is no.

You already dedicate your time to programming, because you need it. I also needed it when I was your age.

In my case I started programming while also studying engineering in Europe. I made a company with the code I accumulated over this time, with the knowledge of programming being really useful to manage other people(and identifying who is really good or not at it and so on).

People consider me rich now(there is always someone else with more money, but I have more than what my family needs), but I went through very hard times before it(my family wanted me to get a good job instead of risking so much).

If you force yourself to study more, you will regret it.

My advice:

Focus on learning to study more efficiently, the idea is to use the time you already use to study faster and get better grades while also giving time to programming.

Learn from the masters, read the Audiobook "The Now habit", learn aabout mindmaps and mnemonics, and always go for the best.

Use software for remembering stuff.

jahewson 17 hours ago 0 replies      
I went through this phase of the British school system some 14 years ago, just as the AS/A2 exams were being introduced. I'm a very technically minded person, but I found school's treatment of these subjects to be intensely boring. I found it hard to pay attention and not be distracted by some more interesting or immediately rewarding passtime such as programming.

While much of the A-level material is presented in a tedious manner, there are other books and sources available beyond your curriculum and I encourage you to seek these out. Applied topics such as computer science and engineering simply assume that you have a good grasp on the fundamentals. Books such as The New Turing Omnibus give you a taste of lots of topics, find some you like and dig deeper. Try and find some exciting, applied use of the boring school math, or chemistry, or phyisics. Find books and resources which guide you through learning rather than just reading Wikipedia.

In summary, try to find the cool things that can be accomplished with the fundamentals you learn at school and you'll be more motivated to work through the tedium. Don't be afraid of "degree level" texts. Try to stay away from any programming that involves drudgery and focus on enlightened, mathematically-inclined tasks: learn Haskell, implement fundamental algorithms, find hard problems like SAT, fourier transforms, optimisation. Find something which requires the skills you learn at school but which is exciting enough to hold your attention. Do lots of little things.

brador 18 hours ago 0 replies      
Researching? Tell me you don't mean reading random wikipedia articles and browsing the web here.

You're at the stage of life where you need to develop deep skills in subjects. At the early stages of that process it can be hard to motivate yourself. You're gonna have to power through and realise you're doing this for future you not current you.

gqvijay 11 hours ago 0 replies      
Wow, you sound like me 20 years ago. And I am quiet surprised at "that's life, shape up" responses.

Knowing what I know now, I wish someone would've told me:- Try to get into top schools like Stanford, Harvard, etc.- If you don't have the financial means or the grades or whatever, don't get discouraged one bit!- Since you enjoy "programming or researching", stop stressing over colleges. In my humble opinion, most colleges are overrated. They are designed for drones and will suck the passion out of what you are majoring in. (note: may not be true for all)- In my opinion, typical educational institutions in our country is broken.- Instead, start interning. Do small projects that you can showcase on your passion. Join programming groups, meet ups that are related, etc.- In short, make a living in doing what you love (programming). When you find a job and love what you do, you are no longer "working".

Finally, watch this:http://new.ted.com/talks/larry_smith_why_you_will_fail_to_ha...

wildpeaks 2 hours ago 0 replies      
If you're a gamer, think of it as Skyrim: you have to craft a lot of iron daggers before you can make dragon armors, but it's worth it :)

(that or install a mod, but I haven't found the editor for RealLife yet)

aaron695 11 hours ago 0 replies      
People seem to be misreading your question.

You seem fully aware that the subjects you're studying are very important and you need to do well at them.

As someone once told me most motivational speakers just lend you motivation. Once you've left the room pumped you quickly go back to square one.

So it's hard to know what works, there's a lot of crap out there.

I've had moderate success with the Pomodoro Technique http://en.wikipedia.org/wiki/Pomodoro_Technique

But if it doesn't work for you, or as often happens it only works for a while, make sure you go on to something else.

linux_devil 19 hours ago 0 replies      
Take it easy, there are lot of options available online if you are not enjoying what is being taught in college but you have interest in particular subject. For e.g.: When I was in college I felt my profs. are boring , so I always used to take online courses , like algorithms , operating system through ocw.mit.edu or stanford.edu or coursera , It helped me a lot to maintain interest in subject , and at same time participate in discussions online , there is always a big community somewhere which will be happy to help you .
winstonx 17 hours ago 0 replies      
> I'm two years before heading off to university, but I have no motivation to learn the things that are being taught at college.

Personally, that was a really tough time for me in my life.

> I chose to study the subjects that I thought I would enjoy, but sadly this isn't true.

That happened to me too.

> I'm assuming that if I had made other choices for subjects, I'd be in a similar problem.

Maybe; it's hard to know where other paths would have led.

> Maths is one of the subjects I'm studying, and although I enjoy maths itself, I'm not enjoying what I learn in school.

I had that same experience. That's why I studied maths on my own, outside of school (I consider programming a subset of maths.)

> I can't be motivated to put the work in, so that I can get good results at the end of the year.

Same thing happened to me.

> I spend my free time programming or researching instead,

That's also what I did. Studying philosophy also helped alot :-)

> but I can't continue doing this if I want to get the A-levels I need to enter a half-decent university.

I found my high school to be very oppressive, so instead I went on academic strike and programmed for fun. I almost flunked out of high school, and only got into one university that has a tradition of accepting everyone.

It was all for the best. I'm not saying you should do that. But, it was the path I needed to take. You can live a wonderful life regardless of what academic success you achieve or fail to achieve.

Older people have a bad habit of advising younger people they need to do very specific actions in order to achieve very specific goals.

In this ancient tradition, I will now offer you very specific advice ;-)

(1) Ask yourself: do you desire the goals you are told to desire. What are your goals? What do you actually want from life?

(2) Once you have your goals in mind, your advisors will usually be conservative. That is, their advice usually describes one path to your goal --- not the only path. For example, if you want to go to a half-decent university and an advisor tells you, "you should try to get straight A's" --- then your advisor is being conservative. Yes, if you get straight A's it will be easier to get into a half-decent university. But it's not the only way. Furthermore, younger people are often more creative in finding ways to sidestep tradition.

(3) Ask for lots of advice, but only listen to advice skeptically.

(4) Don't be afraid to "Go ahead and fail." http://www.bloomberg.com/news/2014-02-20/go-ahead-let-your-k...

> Are there any ways by which I could motivate myself to study more?

I would caution against trying to coerce yourself into being more motivated. Follow your own path. When people give you advice it's up to you to take it or leave it. Even this advice.

romanovcode 12 hours ago 0 replies      
If you want to be professional programmer you don't really need university. In this profession recruitment doesn't lie when tell things like "BS in CS or similar experience.".

Just go and work, then pick up and study something else, like Mathematics or Physics.

chegra 13 hours ago 0 replies      
Ok let me play some mental games with you. Ask yourself would you rather pay $10/$100/$1000 or study for 5 hours?

Find the amount where you rather do the studying then pledge to donate that amount to charity. Do this everyday. I find this works for.

I estimate you are doing 4 a-levels. That's about 2000 pages of work. A 500 pg book for each subject. If you study 20 pages a day and do all the exercises, I guarantee you will get an A for whatever course(oh yea and do the past papers).

In a hundred days or so you could be finished studying for A-levels.

Enjoy the days of where you have if/then reward structures. If you study hard you get good grades then you go to a good university then you get a good job. After this, there is hardly any guaranteed recipe for success. So, take the success while you can.

irremediable 18 hours ago 0 replies      
Hey there! From the sound of it, you're about sixteen years old and live in Britain. A few years ago, I was your age and in a similar position. What grades are you getting at the minute? A-levels might be easier for you than you realise.

As to how to motivate yourself to study for them... study the cool things you can do with maths. Try to solve problems. Calculus, linear algebra and statistics are the fundament of the maths curriculum, and they're all hugely useful. Figure out how to prove things. Figure out how to solve mechanics problems with calculus. Program some statistical analysis stuff.

Frankly, if you're a smart kid and enjoy maths/programming, I expect you'll do fine at A-level. And if not, it doesn't mean much. Some of the best programmers I know didn't bother going to university.

usablebytes 18 hours ago 0 replies      
First thing - don't search for motivation or don't try to get yourself motivated. You'll end up looking for things that will make you feel good which will in-turn promote procrastination and thereby take you away from actions. The truth is motivation doesn't last. It's a push mechanism. You'll have to focus on things that pull you towards it.

If you keep going like the way you are currently, how would your life be? Definitely you understand the problem with it and this post is the proof. But ask yourself - "why do you want to get A-levels at school?". If programming and researching keeps you going, by all means, you should focus on it. Make sure you put the best possible efforts in it; the rest will follow automatically.

clipityclapity 13 hours ago 1 reply      
Here's my story.

Two years ago, I dropped out of a mathematically oriented master's. Let's say I quit because I wanted to found a company. That's what I tell everybody. And that's what I did.

I can get into the details of why it didn't work, but I'll tell you something here, something which, until now, I have only written down in places nobody would read it: I might have been running from reality. Using the company as a hide-out. "Maybe this will give me a purpose?"

We pulled the plug when we were forced to realize that it was a dead end.

Pause six months. Rethink life. Winter, not a good time.

Moved to another country and tried again. It went better, but still not good enough.

Again, six months of nothing. Winter.

Travel. Maybe languages are my thing? Different cultures? Get lost. Come back.


This time, I'm not letting it steal six months. I'm trying for another project (Show HN soon), I'm going on another travel, and I'll keep on looking, because I know one thing: an office will be the death of me. Unfortunately, programming is generally done in offices.

But there's always that doubt. Got some freelance jobs to make ends meet. Flipping burgers, for programmers. Can't continue this way. Stability, future, kids, wives, divorces.

So listen, I can't give you a straight advice. I still don't even know where I went wrong exactly, or if I went wrong at all. I don't know if I would've been happier in another place. I sometimes lovingly think back about academia, then I see what happens there and I want to run even farther away than I already am.

Motivation is still a problem for me, at times, but it's getting less. I have no regrets (yet), just doubt. A shred of what I would've had, had I not tried for that first company.

On the upside: I feel free. Every day. Alive. I can decide to drop everything here and emigrate within a week. And I'm doing it. Because I can. Because it feels like the right choice.

If you tell me where you live I can drop by if I'm ever around :)

Good luck with whatever path you choose. No matter what you do, do it with pride, son. I believe in you, as long as you do.

Sorry I couldn't give you real advice.

Oh wait that's not true I totally do have some! Got so caught up in the story.. listen if you really want to tackle this: TALK TO PEOPLE. In terms they can understand. Don't say, "I have doubts." Say: "Can I study with you next Friday? If you FORCE me to be there and do it, I will cook dinner for you." Tell a girl, if she asks why explain here you have trouble concentrating alone, joke that maybe she will make it worse but you're willing to try, and tell her that it's definitely absolutely not a cunning ploy to get a date with her (it's not). If she rejects you ask someone else until you have a girl. Then choose a guy for a different subject (not a close friend, high risk of fucking around), and somebody you really don't know for another one, and a buddhist for the next, and an atheist, and and and make sure you surround your study-self with as many different styles of living as possible. You will be able to draw inspiration from them. Solitude is what's killing you. Your life will mix with theirs and your energy will combine. I'm not even half joking here; the energy you draw from linking your progress to someone else ("teamplay") can amaze you.

I'll be your first contact if you want, no problem. Drop me a line on Skype and we can work / study for an hour every Thursday afternoon. (send me your skype though, not leaving it here :P)

Peace out, stranger!

reledi 15 hours ago 0 replies      
> but I can't continue doing this if I want to get the A-levels I need to enter a half-decent university.

Not sure where you're from, but in Canada you don't need all A's to get into a half-decent university. However, if you want to get into a top university, you'll need good grades and more (e.g. extracurricular activities).

I'm sure any university you will get into will be just fine. During your time at uni, you get out what you put in. Don't stress about getting into your dream university. You'll do fine wherever as long you like what you do and you get involved with stuff happening around you. Grades are just a means to an end, don't focus on them too much.

brianbarker 11 hours ago 0 replies      
I had a rough time getting through my Computer Science degree, despite loving software. I still find things I hate. Currently, I've done web apps for a few years and now I'm fucking sick of them. Time to move on to a new area of CS that challenges me. That's pretty much how it goes. You'll do stuff you hate, but you have to use that as a foundation to do the things you love.
fit2rule 17 hours ago 0 replies      
Get a job. Plain and simple, this the best way to motivate yourself to study more.

Fact is though, you don't need to study more. You should work a lot more. Working is the only really effective, motivating, way to take what you've learned through your studies and apply it to the real world. Without actually doing something for someone, a lot of what people learn in school is useless.

It isn't until you actually have a user that you become a developer.

orasis 7 hours ago 0 replies      
Travel the world. Ignore these asshats that try to guilt trip you into working through your slump.
gmantastic 14 hours ago 0 replies      
Being 16-18 and studying for your A-levels can be a horrible time - it was for me. Relationships with your friends start to change as you grow up at different rates (I don't know whether this applies to you), interests change, and you have so little energy it feels like an effort to get out of bed before noon. Some things that worked for me were hanging out with some different, more studious people, and learning the course material from books in the order I chose rather than following the course (I missed a lot of classes, but I would't recommend that). Make a game out of getting the grades that will be your ticket out of there! On a serious note, if you think you might be depressed, talk to someone (a doctor or counsellor) about it.
betadreamer 15 hours ago 0 replies      
University and school is very different. I was a B~C (even D & F) student in high school because I hated what I was taught in school. I enjoy Math but somehow was not motivated as well.

I went to the okay university afterwards but things started to change. Everything what I learn there somehow made sense and was not boring anymore. It might be just the fact that university have better teacher but it was more motivating. Somehow I turned my self from B~C student to a A dean list student. I went to CMU for grad school after graduation.

The point i want to make is that university is different from school and you can always climb up the ladder as long as you try hard at some point.

JamilD 19 hours ago 0 replies      
I know it seems like what you learn in school is boring, and perhaps even trivial, but it provides an important foundation to what you'll learn in University.

When I was in high school, I'd attempt to apply the stuff I was learning in math to more interesting problems that I was actually interested in for example, using the simple calculus I was being taught to start to understand some aspects of machine learning.

The truth is, a lot of high school math is rather fascinating you just need to find a place to apply what you're learning. I still use that technique now; I find a lot of the electronics courses at university extremely dull, so I'll write a program to solve, say, a diode circuit using the exponential model. And I end up learning so much more than I would just studying.

So studying high school math and learning interesting things doesn't have to be mutually exclusive :)

almosnow 18 hours ago 0 replies      
There are none, if you don't feel it then it's not there.

Or you could follow the advice other people had leave here... and eventually you will come back to this same situation but when you are 50 and tired...

Seriously dude, my advice, if you don't feel it leave it; and if you don't feel nothing anywhere then do nothing, many cool things happen when you are "doing nothing".

bayesianhorse 15 hours ago 0 replies      
Sounds a lot like an onsetting depression. Seeking medication now might save you a lot of time and suffering.

It's very important to recognize that your judgement about what interests you is probably distorted, currently. So think twice about making any rash decisions that relate to emotions or relationships....

unobliged 19 hours ago 0 replies      
It sometimes helps to study the history of whatever subject you are working towards in school. For example, the history of mathematics can provide a lot of inspiration for what can be done with the knowledge. Focus on the outcomes you want and see the schooling as a means to an end.
ISeemToBeAVerb 18 hours ago 0 replies      
Pick up a copy of Cal Newport's book "So Good They Can't Ignore You." Read that book and then think about your situation some more. Cal brings up some very interesting observations, and you're at the perfect point in your life to read it.
Geee 17 hours ago 0 replies      
You don't need motivation or inspiration, and most of the time you don't have these. Just do what you have to do.
ehutch79 18 hours ago 0 replies      
Wait, your two years from going to college? That makes you what, 16?
cognitiveben 19 hours ago 0 replies      
Drop out and find something that motivates you. It's harder than the standard path, but if you're bright and industrious it can be a much more interesting ride. Also, university is always there later. I did the above, got bored in my second successful career and am now finishing up a Ph.D. that I started, as an undergrad, at the age of 27. I think I got more out of the program than my younger counterparts, and thanks to a decade of making money and connections, I did it in significantly better style. No regrets.
tobinharris 12 hours ago 0 replies      
Keep programming and researching. Then use your skills to make cool things. Then show them to potential employers. You'll do great.

Try and get to uni anyway. But take the pressure of yourself. If you're making cool things and learning loads you're ahead of the pack.

sillysaurus2 19 hours ago 0 replies      
Step back and ask yourself: What are my assumptions? Why do I believe these assumptions to be true? What if they aren't true?

You have at least 50 years ahead of you. That's a long time. But the next 5 years will profoundly shape your next 50.

If that feels like too much pressure, then simply don't worry about it. It's more important to relax than to optimize your life if you're the type of person who doesn't react well to a lot of pressure.

poobrains 12 hours ago 0 replies      
It could be depression. Google "depression test" to give you an idea about it's symptoms. If you think you've got depression, get medical help ASAP. There are some treatments that can make a big difference in your quality of life.
jbcurtin2 9 hours ago 0 replies      
You're depressed, mate. I bike 10 miles a day( 4 - 6 times a week ) to keep myself in the saddle. After that, I have no issue with this kind of stuff. Eating right is huge, too.
negamax 18 hours ago 0 replies      
What do you seek? Minimizing pain, maximizing pleasure. That's what we all are programmed to seek. You find that and associate it with the studies.


Maximizing pleasure:

+ Do you want to work in another country/place. Your studies can get you there.

+ Want to have interesting conversation with people. Study.

+ Want to understand and have a say about a topic. Study.

Minimizing Pain:

- Don't set yourself for failure few years down the line or make it tough

- Avoid getting into a meaningless job

- (Works for Asians) Think of peers getting ahead of you.

SixSigma 18 hours ago 0 replies      
Go and visit your local big council estate. Poor futureless unfortunates should give you some mojo. Or even just watch Benefits Street
WWKong 17 hours ago 0 replies      
Yes. By changing your attitude that 100% of what you do should be "enjoyable". Try and strike a balance. In real world you will find that most everyone puts up with stuff for safety net around basic needs like house, car, raising family etc. Right now I would enjoy 2 weeks off in Maldives. But I'm here working on this presentation to make my boss look good.
gte910h 16 hours ago 0 replies      
Lots of people hit depression in college. See a doctor. You may not be sleeping enough, drinking too much, sleeping irregularly, etc, all which can cause depression
sosborn 18 hours ago 0 replies      
> spend my free time programming

Sounds like you enjoy programming. Assuming this is a correct assumption, go all in on it and start contributing to open source projects. If you have the talent then you might be able to get a good job out of high school. At the very least, you might want to look into Computer Science programs in University.

briantakita 15 hours ago 0 replies      
Adopt continous improvement for everything you do. This makes a game where you can improve your thinking, skills, and processes.

It won't be boring because you can always do it better.

Codhisattva 15 hours ago 0 replies      
Exercise. Lots of it.
rando289 18 hours ago 0 replies      
Endeavor to make these things a habit. Every day or 5 days a week etc.

Write down some realistic things you want to do today that you might avoid. Do this as early in the day as possible.

Before you make a decision which will avoid doing one of those things you wrote down, stop, think about it for 60+ seconds. Usually these decisions are done just like instincts without thinking: "hit next episode on netflix", "read this HN link", etc.

In that 60+ seconds, suggestions:

1. Decide to start on the thing you'd rather avoid for just 5 minutes, then you can quit if you want.

2. Imagine your future self looking back on your decisions.

3. Remember how this thing ties into long term goals.

4. Plan a reward for yourself if you do the thing.

5. When negative thoughts or feelings happen, accept them, don't believe them or give them any more power, see them from the outside.

undoware 19 hours ago 1 reply      
Your soul is probably waking up. That's the black lung of coding.

You have three, maybe four choices. Visual arts, music, and writing, with performing with an asterisk (it's not for everyone.) Get used to being a lot poorer, but happier.

mamuninfo 17 hours ago 1 reply      
This is very common situation for most of the people and it is also general for all fields. Many colleague around me who are also not interested about their daily work. Mind set is important factor to do something. Just sharing a video with you....

In youtubehttp://www.youtube.com/watch?v=pN34FNbOKXc

hacktard 17 hours ago 0 replies      
Obviously growth hacking. My own experience in endless self-promotion. twitter. Guru. And perhaps... Venture Capital.


nemathode 19 hours ago 2 replies      
Aniracetam (or Oxiracetam, if Aniracetam doesn't work for you) + DMAE.Don't forget to balance your blood pressure, use venous or arterial drugs to enhance whole body blood flow (don't use drugs that work only locally). If you don't want to use blood-related drugs, then just exercise regularly (try to focus only on resistance-oriented exercises). Try to sleep on a hard bed without any pillows.Also, increase your metabolism and energy by drinking a cup or three of coffee in first half of day and eating a big (300+ grams) portion of boiled grains + a good piece of meat, but with small amounts of fat. And don't forget to eat a lot of fruits - primarily oranges, apples, bananas and pears.
Lumia phones are leaking private information to US-servers
2 points by pasiaj  1 hour ago   2 comments top 2
pasiaj 1 hour ago 0 replies      
Here's an other article from HS detailing the data that is sent to US-based servers.


All an all, the content seems aimed to people who do not understand the realities of modern computing. Things proxies, cloud services etc. or the phone communicating with servers even when you're not doing anything with it.

Using the default settings, web browsing (or at least DNS-queries) is proxied through the United States. Also the Nokia Maps & navigation services are sending your location information to "foreign servers".

It also says "Lumia can save photos and text messages to a Microsoft cloud service".

pedalpete 1 hour ago 0 replies      
I've got an Android, an iPhone (and a Windows Phone arriving tomorrow), I assumed that both of these were already sending location and web browser usage stats to Google and Apple servers.

I think Microsoft does a pretty good version of outlining their data collection in easy to understand terms http://www.windowsphone.com/en-us/legal/wp8/windows-phone-pr..., I just hope they aren't collecting more than they say they are.

Ask HN: Why isn't Erlang more popular?
172 points by gordonguthrie  1 day ago   233 comments top 77
jerf 1 day ago 5 replies      
Honestly, I think what kills it is that it's not an Algol-descended language [1]. If Erlang was written with an Algol-esque syntax it would have taken off years ago. But instead it has this weird syntax, which it then doesn't really do that much with. What do I mean by that? Haskell has a radically different syntax, but it does things with that syntax and its pervasive currying to enable a powerful succinctness that one can not imagine being translated back into the Algol-esque framework. Lisp does things with its bizarre syntax, making it obvious how to write correct macros and being homoiconic, which translates poorly back into Algol-esque infix languages. It's almost inconceivable that one could translate a concatenative program back into Algol-esque syntax [2]. But Erlang really doesn't do anything that couldn't be in Algol-esque syntax. (Near existance proof: Go. Yes, there are significant differences, but the two are inter-transliterable to a much greater degree than any pairing of any of the previous sets of language families.)

If it had an Algol syntax, and performed the SSA transform behind the scene, it would probably be very, very big now.

Bear in mind as I say this that I'm not necessarily advocating for those changes. For instance, this would require some tweaks to the semantics of pattern matching, too, which aren't necessarily for the better... in the abstract. However, they probably would be for the better in terms of usage.

I'm pretty sure Go is going to eat Erlang. Erlang programmers will 100% absolutely correctly complain that OTP can't be translated without loss into Go, and almost nobody will care. Again, I'm not necessarily advocating for this, because the Erlang advocates will be right, you just can't quite get it fully expressed in Go and that saddens me, it's just what's going to happen, I think.

In fact I'm doing it myself; the Erlang core of my system is getting pulled out and replaced by Go for a variety of reasons, and one is despite the fact my team is fairly adventurous over all, we're still better off finding people to work on Go than Erlang. (In the next couple of months I hope to release my first release of "reign", "Rewrite Erlang In Go Nicely", which brings some of the Erlang stuff into Go for the purpose of porting existing programs. I've been pulled into other fire fighting so I'm not on it this second, but I'll be getting back to it soon. That implements Erlang-like mailboxes and network clustering, and I've got a supervisor tree implementation on deck for Github too. Subscribe to https://github.com/thejerf to see when those come out in the next couple of months.)

By the way, Erlang advocates, bear in mind that trying to argue me out of this position is a waste of time. I've been programming in Erlang for 7 years now. I get the syntax just fine, even if I still don't like it. The problem is that you have to argue the greater programming community out of this position, and I don't think you have, and I really doubt you can. For better or worse, being non-Algol seems to put a hard limit on your general-purpose programming acceptance. (In my opinion, that is for the worse, but here we are. Again, please don't mistake this opinion as celebration of any of these facts. My opinion is that Erlang deserves better. My belief is that it won't get it.)

[1]: That's pretty much every modern mainstream language today: C(/++/#), Java, Python, Javascript, etc. Not all those languages come from the same semantic heritage (scripting vs. conventional OO manifest types being one big example), but they come from the same syntactic heritage. Contrast with the ML family, the Lisp family, the Prolog family (which is pretty much just Erlang now), and the Forth family for different syntactic heritages.

[2]: http://evincarofautumn.blogspot.com.es/2012/02/why-concatena...

DougWebb 1 day ago 6 replies      
I haven't looked at Erlang before, so I thought I give it a quick look. Google led me to the Erlang home page[1], which has "What is Erlang" (sounds good) and "What is OTP" (which doesn't bother to define what O, T, and P stand for.)

Following the Erlang Quickstart [2] link, I get a page that doesn't really tell me anything about the language. It demonstrates a program that implements a factorial function, then tells me to go write games. Other than "Burn the CPU", I'm not sure what kind of games I can write with what I learned here.

The first link to more documentation at the bottom of the page goes to a book's website, so that's a dead end. The second link goes to an online reference guide [3] which seems more promising, until I read the introduction [4]. Under "Things Left Out" is "How to communicate with the outside world". Hrm...

So, what I have so far is that Erlang is a functional language, and that the online reference doesn't cover interaction with anything outside of your program. Based on this I'm guessing that Erlang is one of those functional languages that are great for mathematical proof-like software development but not practical for solving actual problems because the world is mutable and the language constructs are not. Yes, I'm making a big inference here, but that definitely seems like where I'm heading.

So I'm going to stop here, and do some real work in a pragmatic language.

[1] http://www.erlang.org

[2] http://www.erlang.org/static/getting_started_quickly.html

[3] http://www.erlang.org/doc/getting_started/users_guide.html

[4] http://www.erlang.org/doc/getting_started/intro.html#id62800

jaimebuelta 1 day ago 1 reply      
Erlang is a very specialised language. It does one thing well (scalability) at the expense of not really being a general purpose language.

The syntax is just weird, not only in a paradigm-way (pattern matching is not huge in most languages, but, hey, that's the way of doing stuff in functional programming), but on strange places ("read" lines ending on dot, semicolon takes time, it does not share any common syntax definitions with the languages used by 99% of the programmers). That sets a high bar in approaching the language, so it's difficult to "play around" with it (at least compared with other languages)

While I like some of the advantages of Erlang, the lack of general support for a lot of common operations (and yes, string manipulation is a huge deal) and the fact that it is designed with a very very particular problem in mind makes it "a silver bullet". Not in the usual meaning, but in the way that's only useful for killing a werewolf. For every other task is too expensive and just not the proper tool.I was involved in a project that used Erlang for something not well suited for it, and it was absolutely awful, you have to wrestle with it to perform common stuff that in other languages is done by the standard library. Again, you win something, but only in a very very VERY specific problem.

(I've used it in another project when it was the proper tool, and, in that case, it's still not the most pleasant experience, but you're getting a clear win)

technomancy 1 day ago 1 reply      
My theory: writing network servers that are not web servers is a relatively uncommon problem to have these days.

One of the hardest parts about learning a new language is coming up with a learning project that showcases the unique strengths of the language without being intimidating to a newcomer or too contrived to actually be useful. This is difficult in any language, but it's especially so in Erlang.

Obviously "it's different; people don't like things that are different" has a lot to do with it, but we've seen other FP languages experiencing faster growth recently, so I don't think that can be the only cause.

I've been using it for a few months, for what it's worth.

Edit: obviously there are lots of people who need to write concurrent network server clusters, but I'd argue that the benefits of the Erlang approach are difficult to grasp before you've actually deployed something written in Erlang; simple toy projects (which are a prerequisite to learning a language) don't usually play to its strengths. A language that's really good at web apps is going to grow more quickly simply because its advantages are easier to appreciate from the start.

lincolnq 1 day ago 1 reply      
I've tried using Erlang once or twice. I inherited an open source project written in it, wanted to maintain it a bit but I couldn't make head nor tail of it, and I'm a good programmer (but very busy with other things). There were too many things to learn to get started working with the Erlang ecosystem and I didn't really have the time.

I didn't find any good tools.

The error messages were obtuse.

I didn't understand how simple shit like configuration files worked. I couldn't find any place where the file was 'opened' from code. I chalked it up to the magic of the underlying framework or whatever.

cia_plant 1 day ago 1 reply      
I think the majority of programmers are very conservative about language, they use whatever they already know, be it Java, C#, C++, ruby, etc.

A minority are more fashion-driven - if something seems like the hot new trend they'll jump on it, scoffing at the old-fashioned crap their coworkers are using. Erlang unfortunately is not fashionable, and it's hard to predict or control fashion.

A smaller minority are driven by some concept of technical merit. However, once you've strayed from the safety of Java/C#/etc., it seems like you might as well go all the way and get into Haskell, which is pretty widely seen as the most advanced, mind-expanding, powerful, futuristic programming language right now, and for good reason.

redthrowaway 1 day ago 3 replies      
Fun fact: I did a co-op at Ericsson in second year. I asked my interviewer (later boss) if they used Erlang at all, and she'd never heard of it. Some of the hackers in the company had a limited degree of familiarity with it, but none of the PMs/managers seemed to know what it was.
gordonguthrie 1 day ago 1 reply      
Pierre Fenoll has provided a link to an extensive list of links (and summarised them) about why it has not taken off:https://github.com/fenollp/kju/blob/master/criticisms.md
pbnjay 1 day ago 0 replies      
I tried it for approximately 6 months (a few years ago). I translated some slow python into fairly idiomatic (IMHO) erlang and got some pretty significant speedups. I had vary little functional programming experience before that, so my comments here come with that caveat.

My hangups:

- lack of easy-to-use string libraries. far and away the biggest pain point. working in bioinformatics, I deal with a lot of poorly-formatted text.

- installing erlang itself was fine, but installing (and finding) any other packages was a PITA.

- documentation could have been better. I can't remember what specifically I disliked but remember being frustrated trying to find info about builtin nuances.

- syntax. this one seems silly from the outside, but the whole commas-here-but-definitely-not-there and other idiosyncracies really made tweaking code and debugging a pain. Go has similar pains around the "unused variable" errors so I know this type of thing isn't particular to erlang.

captainmuon 1 day ago 1 reply      
It's just not suited for what I do. At work, I do number crunching. Essentially a bunch of simple calculations in a for loop. C++ is excellent for this. I use a lot of Python for rapid prototyping, and as glue code. When I need to do concurrency, it's usually the easiest thing to run multiple instances in parallel, or to submit jobs to a cluster. There is already a well-tested infrastructure in place, and I don't need all the fancy stuff erlang has in this area.

Second, but more important, my colleagues know C++ (good enough at least). If I started to use something else, we couldn't collaborate. We're physicists, not computer scientists or professional programmers.

Then, I often find myself writing GUI code. I wouldn't know how to start writing a GUI in Erlang, but it's trivial in Python or C++.

If anything, I would need a language centered around mutability, so almost the opposite of erlang. A language where everything is mutable, where you can databind to any object. Where you can just make an array of objects and bind it to a graphical widget, and get create, edit, update, delete operations for free. You never have to write `listview.insert(...)`. Maybe the command pattern is part of the language and it is trivial to write an undo function. And finally, it would include multithreading, with only a simple syncronization primitive, the transaction. The goal of concurrency here would not be speed, but GUI responsiveness.

So, I have two very different use cases, for one I can use C++, for the other the ideal language has not been invented (but C# and Python are both not bad). I just don't know what to do with Erlang (and Haskell, Clojure, and all the other hip languages).

astine 1 day ago 0 replies      
Learning Erlang has been on my todo list for years now. I know Java because I was exposed to it in school and had to use if for work. I know Perl because I've had to use it for work. I know C because I've had to know it for projects and some work. I know javascript because I have to. I know Common Lisp and Clojure, because I want to.

Erlang belongs in this category of languages that have really cool features but which almost nobody has to learn to do a certain job. Nearly everything you can do with Erlang you can do with something else and there are a lot of languages that are necessary for one purpose or another and can't be replaced with Erlang. This is usually because said language is so entrenched in a space that it doesn't make sense to use anything else.

The end result is that programmers only have so much time and only so many projects that they can reasonably devote to their 'fun' language and there are a lot of those from which to choose. Erlang isn't competing with Java, it's competing with Lisp, Smalltalk, Factor, Haskell, OCaml, etc. That's a long list of competition.

arh68 1 day ago 2 replies      
Popularity is probably the worst metric for a programming language. Programmers conflate popular for good pretty often. They line up often, but they are orthogonal. The original question is loaded. Why not ask "What usually increases a language's popularity? How can these effects be applied to Erlang?"

Now the answers are a bit more useful, a bit more constructive:

* write more, better docs (Erlang for Java programmers, .. for JS devs, .. Ruby, etc)

* polish the websites, improve search rankings for helpful links (the standard library, etc)

* write at least one good O'Reilly book

* write lots of libraries, especially web frameworks

* integrate seamlessly with other platforms (possible with Clojure, maybe not Erlang)

* upload screencasts "15 Minutes in Erlang", etc

* ...use your imagination

Lisp is another prototypical "our language is awesome, why is it dying?". FreeBSD used to get joked on, too. Well la-dee-da, Erlang on FreeBSD can be a winning combination! These technologies will remain good, but they won't magically make themselves popular. It's not if-you-build-it-they-will-come anymore. There are too many programming languages to get acquainted with even 20% of them. Languages need to be more competitive to be more popular.

thedufer 1 day ago 3 replies      
I haven't used or looked at Erlang, but bear with me.

* no package manager

This is _huge_. For example: I currently work very heavily with node.js. I understand all of the many, many problems with javascript. NPM single-handedly makes up for all of them put together, in my eyes.

Which is to say - an amazing package manager can make a poor language. A decent package manager (pip, for example) allows a nice language to shine, but won't make or break it. Lack of a package manager could probably kill just about any new languages these days (and Erlang - correct me if I'm wrong - appears to have the popularity of a pretty early-stage language right now).

paperwork 1 day ago 1 reply      
Like Clojure, I like that Erlang has lots of interesting ideas. I may never use either in production, but Erlang's OTP sounds very interesting as a way to handle real-world scenarios like failure handling. Similarly, Clojure's datomic, core async, etc. are interesting ideas, implemented by people with good taste.

However, too many examples show trivial things like mapping over a list or calculating something recursively. As a professional programmer, I get how those things wrok. What sets these languages apart from Javas of the world is how state is handled. It isn't easy to dig through tutorials and docs to find the best way of keeping state, updating it, referencing it, etc.

I once attempted to implement a small order matcher (from the stock trading world) in Erlang. I know how to do it in imperative languages, but it was pretty painful to do so in Erlang. It was getting very verbose, I wasn't sure how to create a priority queue, how to modify elements in a data structure, etc. Since this wasn't a simple transformation of data, I had a hard time finding references in documentation spread across the web.

I realize that if I was committed to learning Erlang, I would work through a book or two. Perhaps find a small open source project and work through the implementation. However, I, like so many others, wasn't committed. I was merely trying it out and when I couldn't make progress, I decided to use my precious free time on something else.

RogerL 1 day ago 0 replies      
I looked at it, even bought a couple books. A guy here at work was a huge booster for it, and used it in some small piece of production code. It looked cool, and I love parallel and distributed processing, so the idea of 'fail fast' appealed to me because of how it seemed to simplify a lot of thinking about such things. Hot swapping sounds awesome.


1) I don't currently do much that requires any of that.

2) I don't want to learn a completely different 'kind' of language just to hit one pain point.

3) Resources are quite limited (re the website, training, books)

4) and this is the biggee: I just don't want to do functional programming. Our Erlang booster? Want to know how much time he sometimes spent on mailing lists and such asking "how do you do X"? I mean for pretty basic stuff. I get the value of functional programming and immutability ("oh no you don't" you'll respond, but bear with me), but in the end it is too high a price to pay FOR ME. I work in imperative languages, I am comfortable in them, I can't get away from them (I need C++ for speed, for example), I'm just not going to take on a language that kicks my legs out from under me like that. Y'all can argue about the finer points of functional vs whatever, but I'll abstain. I'm interested in solving my problems, and the imperative model works very well for my brain and needs.

So, for me, an interesting toy. I'm 47 and don't have time to chase 'yet another language' which is all this is for me.

Now, if I was trying to solve issues like the ones that got Armstrong to write Erlang in the first place, perhaps I'd revisit it. But as it is? No. No time. Not enough return on the investment.

rvirding 1 day ago 1 reply      
I am not going to enter into a syntax argument I have already given my views on that here http://rvirding.blogspot.se/2014/01/erlang-syntax-again-and-... . My main point is that the syntax is simple and that it fits the semantics much better than anything based on an Algol like syntax would, even one which uses ';' in the "normal" way.

And one reason it works is because it has built-in those features for building fault-tolerant systems which, for example, Go lacks. Borrowing from NASA "Failure is not an option".

waffle_ss 1 day ago 0 replies      
I fall under the "tried it & stopped" category.

I stumbled upon Erlang in 2011, and did the full "Learn You Some Erlang for Great Good!" tutorial and about 1/2 of the Erlang Programming book (and exercises). Where I ended up is that I had no real-world use cases that would benefit from Erlang, so I just kind of atrophied with it. It seems to me like Erlang is really really good at building programs that can be modeled with message passing (like chat), but a lot of problems are difficult to map to that paradigm (or perhaps my mind just has trouble envisioning how to do it yet). The closest I got was starting to use it to write a distributed Web crawler, but I ended up using scrapy (a Python framework) because the string manipulation was annoying with Erlang, and scrapy already had a lot of features that I would have had to re-implement on my own. But as I'm starting to try and manage crawler distribution with Celery and RabbitMQ, I find myself starting to think more and more about how Erlang would probably do this bit in particular better, so I might return to it.

The language that I've since discovered I really want for most tasks is Haskell. I've been programming Ruby full-time for the last few years, and I've grown really jaded with it. I get sick of having to write so many unit tests around everything in what I see as a poor fix for its loosy-goosyness. I'm still pretty early on in learning Haskell, but I find the approach towards correctness first to be exactly what I want, and while so far some of the material is pretty challenging I can see it will be very rewarding as well.

prodigal_erik 1 day ago 2 replies      
To me it sounds like Erlang's biggest departure from the mainstream is http://c2.com/cgi/wiki?LetItCrash, casually letting processes die and be recreated. When I put effort into actually using a niche language (as opposed to merely learning it for fun) I expect it to enable me to write software that's less embarrassingly defective than everyone else's, where Erlang only seeks to reduce the pain from my doing bad work.
bunderbunder 1 day ago 0 replies      
Based on my (limited) experience. (Learned it for the sake of learning it, thought it was fun to work with, not considering using it for any serious projects.):

I think it's similar to the reason why DSP's aren't very popular compared to general-purpose CPUs for most tasks. It's a very specialized tool, designed to solve a very specialized problem. If you don't have that problem, it's not a practical choice because it's more difficult to use and often ill-suited to more common problems. I'm sure plenty of others have mentioned strings already.

Even if you do have that problem, but only a little bit, it might not be a practical choice. There are a lot of tasks where a DSP might perform better but a general-purpose CPU's still preferable because it's good enough, and the skills necessary to work with one are more common. The story's similar for choice of programming language in many applications that require concurrency and fault tolerance, but not to any particularly great extent.

501 1 day ago 1 reply      
I've posted these before[1]:

* No public bug tracker

* epmd's security (or lack thereof)

* Can't insist that epmd be started separately (`erl -no_epmd` won't start epmd but it also won't start epmd's gen_server)

* Can't swap out epmd because while `erl -epmd_module foo` is there, `net_kernel:epmd_module()` is barely used. (Although I don't think its interface is documented anyway)

* No built-in way to hook UNIX signals

* While the documentation itself is pretty good, it's presentation is lacking and it's difficult to quickly correct mistakes as you run into them

* It can be difficult to reason about when a shared binary will be garbage collected

* OS packaging (I'm thinking of Debian/Ubuntu) of Erlang and Erlang apps tends to be more harmful than helpful (old packages, namespace conflicts, etc)

To them I'd add:

* No agreed upon build tool (rebar while prevalent isn't universally accepted)

* Community libraries often have no support for upgrades or aren't packaged properly for releases

* Can't upgrade SSL if you're using it as a carrier

* No standard code format tool like gofmt (yes I know about erl_tidy, no it doesn't provide the same functionality as gofmt or it'd see similar use)

* Not enough infrastructure around built around edoc; where's the godoc or godoc.org work-a-likes? (yes I know about erldocs.com, it's no godoc.org)

[1] https://news.ycombinator.com/item?id=5801706

jwatte 1 day ago 0 replies      
We've developed and run a rather large erlang cluster (> 100k simultaneous users) for several years. It's pretty clear that OTP is not ready for that scale -- most of our big bugs have been in the libraries and OTP, not in our code. Couple that with the poor type safety at compile time, and a "in place update" model that doesn't actually work for "many times a day" continuous deployment, and I feel it's not lived up to the hype.We also run PHP, C++ and Haskell stacks, each of which has had less environment-based problems.
jeffdavis 1 day ago 0 replies      
Shared state is great as long as you control it.

Databases are a giant blob of shared state, albeit a carefully-managed one. People complain about them all the time, but databases completely take over in huge areas of the application development landscape. There's a reason for that -- consistency is a very powerful simplifying assumption (giant understatement). Getting consistency in erlang may be possible, and of course you can still use a database from erlang, but the philosophy doesn't quite line up.

Databases already offer isolation between transactions. And they naturally work with immutable structures similar to functional programming.

For most applications out there, HA means replicating a database, and when it goes down (which is actually quite rare), you lose a little time doing a failover.

Hot code loading means uploading a PHP file with a new extension and "mv"ing it over the old one. Need schema changes? PostgreSQL offers transactional DDL (e.g. ALTER TABLE).

Any error in the database usually just causes that one transaction for that one request to fail. Any error in the application usually just crashes that one process serving that one request.

Philosophically, using erlang is trading consistency for availability. Given that it's easy to get good availability using normal applications connected to a database, using erlang is somewhat of a niche.

I have spent some effort learning erlang, and I really like it in many ways. I bought the new book and I like it so far. I have no problem with the syntax and I find it enjoyable to write in (though I haven't written any large programs). There are certain projects where I think erlang would be a great choice, like management and control of a cluster system. Obviously it works for telco-like things, too, but I've never developed anything like that.

wcummings 1 day ago 0 replies      
Erlang is dogmatically functional and smells of prolog. Most people don't know what to do with it.

I love reading all these posts about new cool-kid concurrent languages when Erlang has decades of maturity and a sophisticated scheduler that kicks the shit out of go/rust/scala/insert cool new thing.

Source: I've used it professionally and its my language of choice

squigs25 1 day ago 0 replies      
Never used it, have thought about spending an hour or two to play with it but ultimately:

There is no good reason that I have encountered yet where I need to use it. Generally I think people try to use the tools they have at their disposal to solve a problem. I have python, and I can do most things in python. It's not always efficient, and as an example, when I first started using python, I blindly used urllib without thinking about it. The requests library has been getting momentum recently, and I found that I prefer it and that it simplifies some of what I do, but at the end of the day why would I have searched for an alternative if what I had was working?

As developers we have to value our time. In an ideal world we would learn everything there was to know about every programming language, and pick the appropriate language for each project. In reality we stop to think that a language is capable of achieving a task, and if it is, we don't look any further.

Ironically, the reason so many people use c/java/python/ruby is because so many people use c/java/python/ruby.

stdbrouw 1 day ago 0 replies      
As an everyday language, it seems too different to get used to. As a language you learn to expand your horizons, it's not weird/different enough when compared to e.g. Haskell and Lisp.

Also, Erlang has long had an excellent reputation for performant, parallelizable code, but Go and node.js have stolen some of their thunder on that front. (I'm talking purely marketing-wise, I don't know enough to compare them technologically speaking.)

I'm not sure if "no platform / no package manager" really matters.

People first learn a language and get excited about it, and then if something irks them, they'll scratch that itch. It's like that famous de Saint Exupry quote: "If you want to build a ship, don't drum up the men to gather wood, divide the work and give orders. Instead, teach them to yearn for the vast and endless sea."

The node.js ecosystem was absolutely awful at first, and the deployment story really only got fixed about a year or longer after the first release of NPM.

eliah-lakhin 1 day ago 0 replies      
In my opinion, there are three main issues:

1) The Language actually is not general purposes. Or at least it is not promoted this way. If you really need Actor based model and lightweight threads, you can choose Scala/Akka, that is also well suitable for a wide range of different objectives.

2) Standard library(I mean OTP) is simply ugly.

3) Language's syntax is ugly too. Pascal again? No, thanks. :) I know there is Elixir that fixes most of the issues, but too few people know about it outside of the Erlang community. When someone mention Erlang he/she probably thinks about "vanilla" Erlang, which is ugly again.

P.S. I had been using Erlang for a while and then stopped.

seldo 1 day ago 6 replies      
Since you asked: I have never tried Erlang because I've heard it's like Haskell but harder to learn, and Haskell already breaks my feeble mind, so I have steered clear. This may or may not be an accurate picture, but it was my decision-making process. I have no programming problems that make me think learning a whole new language would be worth it (on top of my existng stack of 10 or so).
room271 1 day ago 0 replies      
I like a lot of things about Erlang. But the main reason I would be wary of using it is that it seems like an all-or-nothing kind of thing. The distributed actor model effectively means Erlang everywhere. This contrasts with RPC, queues, http, etc. where a variety of technologies (and languages) can be combined together. And an all-in approach seems laden with risk - all devs and relevant technologies need to fit in with the Erlang stack.

And if you are not using distributed actors, then why bother with Erlang at all?! (It's a nice language to be sure, but there are lots of nice functional languages available so the competition is pretty fierce).

pessimizer 1 day ago 1 reply      
Tons of people mention Elixir in threads like these. Is anybody actually using it in production, or is it just something that Rubyists use as a foil to criticize Erlang's syntax?

I feel the algol-ization of (functional, prototypical)javascript is a confusing mess and a weakness that makes js harder to use. Making Erlang look object-oriented just seems awkward.

Syntax: comma means AND, semicolon means OR, period means "done." Is that so crazy? There's no comparison to how badly Perl does my head in.

chc 1 day ago 0 replies      
A language needs to get a foothold somewhere. Ruby started on the low end and worked its way into a position of power. Java started in the enterprise and became normal thanks to catering to their needs so well. Erlang is in an awkward place where it solves certain problems well, but there is not a big class of user for it to get a foothold in. It's not better than Ruby at bring Ruby and it isn't better than Java at being Java and it isn't better than C at being C.
ssmoot 1 day ago 0 replies      
I found learning Erlang difficult since pattern matching is poorly justified in the material I came across. You don't see the benefit right off the bat.

Also, the "processes only" model is pretty off-putting compared to Scala IMO where you're able to choose between threads and processes. You lose _some_ benefit in reliability (I assume, since it's said so often), but I've never seen that actually play out in the real world. What I have seen is comparably slow IPC exactly a real world development cost. So I'm personally more of a "in-process first" kinda guy.

I may be completely wrong on that one BTW. It's just what I recall from reading half of some Erlang book and studying online material trying to pick up the language.

It wasn't until Scala and Akka that the benefits of both pattern-matching and actors really clicked with me. Though I still prefer Scala's versions on both counts so I don't feel a great need to revisit Erlang at this point since I'm not working with Telco equipment. ;-)

_halgari 1 day ago 1 reply      
Before finding Clojure I dabbled in Erlang. In the end I found the "share nothing" model to be too limiting. Sure its great for highly fault-tolerant systems. But the fact is I just don't need that most of the time. It's just easier to setup a AWS autoscaling cluster of web servers running Clojure and be done with it.

Oh yeah, and Clojure beats the pants off Erlang when it comes to performance. Even Erjang is faster than stock Erlang.

bfrog 1 day ago 1 reply      
It has a huge learning curve compared to many other languages.

Ask the simple question of how do you write the equivalent of

int main(....) { ... } and well... there isn't one!

You are almost forced, from the start, to learn about releases and a ton of other really complicated stuff just to write a program you can share. Its sort of being fixed with relx.

Secondly no one seems to understand pattern matching at first. Its just such an alien concept when you look at it compared to all the other mainstream procedural/oo languages people usually already know. Again a huge cliff to climb to really grasp the possibilities and usage.

It really is quite a great language, and an even better runtime. The learning curve to making great things with it is just quite high in my opinion. I've done two major projects with it, one shipped as an embedded web app in some lab equipment out there. I think it was a good choice!

twunde 19 hours ago 0 replies      
I've actually considered learning Erlang, but never gone through with it as other languages seem more useful and/or enjoyable.

For me to seriously consider learning a new language/framework it should have:

Good documentation. Python is the gold standard.Good SEO for that documentation.Multiple good FREE learning resources, preferably with something useful being built.Good tooling (package manager, testing, etc)

Most importantly there should be a reason to learn it. For Node, I get easy asynchronous code. Clojure I get an enterprise-acceptable lisp. Go I get C-like performance + concurrency in an enjoyable language with modern tooling. Hell, learning Java allowed me to program for the Android.

Erlang? Well it's got some great concurrency and it's highly available. But I don't know anyone using it (and when I hear about it, it's usually because someone has stopped using it), it has a high learning curve and most of what makes it interesting can be found elsewhere.

bandris 1 day ago 0 replies      
Rails made Ruby very popular.

Django made Python very popular.

There is no killer webframework for Erlang. However, N2O looks promising. [1]

Also, the learning curve: I took me half a day to be good enough in Python and years to learn the basics in Erlang. It is way more complex and the standard library is plagued with inconsistent/messy interfaces. (They say it is because of legacy code support or other BS.) But under the ugly surface lies the hidden beauty: single assignment is great when reading other people's code. Patching several running servers without stopping with one command is thrilling. Or the built-in nice abstractions for distributed programming like rpc:multicall [2].

[1]: http://synrc.com/framework/web/

[2]: http://erldocs.com/R16B03-1/kernel/rpc.html#multicall/3

9999 1 day ago 0 replies      
I've actually always wanted to use Erlang and I've worked on quite a few projects where it probably would have been the best solution possible (massively concurrent websocket backends for example). The two things that made Erlang a non-starter on those projects were:

1) It's hard to find people that have production experience with Erlang2) The perception is that batteries are not included (even in comparison with Go... if you have some information to refute that notion I would be more than happy to learn more)

swvist2 1 day ago 0 replies      
I have tried it and (try to) use it when appropriate. I am fairly comfortable with it and my only disappointment is that I do not get to use it often.

The ability to solve a problem in a particular programming language is often dependent on the ability to express the problem in the constructs provided by the language. A very good example is the problem of concurrency. Doing something concurrently in a primarily procedural/OOP language often seems hacky and it is something that does not feel natural. The actor model that erlang implements is a very powerful model for certain class of problems and concurrency is one of them. Erlang the language, minus the OTP, is extremely small and once you get over the culture shock experienced when it comes to syntax, things will seem pretty easy. OTP isn't magic. Its years and years of erlang experience packaged into one neat library, solving commons problems, so that you can concentrate on your work instead of reinventing the wheel.

Reading Joe Armstrong thesis 'Making reliable distributed systems in the presence of software errors'[1] is highly recommended if you want to understand why things are the way they are.

[1] : http://www.erlang.org/download/armstrong_thesis_2003.pdf

dwb 1 day ago 0 replies      
I really think moaning about the syntax is a bit pathetic. It's not what most programmers are used to, sure, but it's hardly Malbolge, is it? If Erlang/OTP is a good fit for your problem, use it. Learn the syntax. It's really not that hard.
andyl 1 day ago 0 replies      
The problem with Erlang is the syntax.

Elixir is the solution.

timje1 1 day ago 0 replies      
I learned Erlang at University, and haven't come across it in the real world yet. I've mostly been locked into Microsoft houses since I graduated.

It's not wasted, though. I use my knowledge of functional programming to write better, more stable programs in Javascript and C#.

The lessons of Erlang, of what can be achieved when one shrugs off the burden of state... are extremely valuable in scalable, concurrent programming - regardless of language.

skittles 1 day ago 1 reply      
Erlang needs a production quality web server that is a fully compliant OTP application, and mnesia needs to have its dependency on dets abstracted away so that other storage engines can be used (relational database of choice, dynamodb, etc.). This would give a web developer a single platform that is extremely fault tolerant and scalable. This sort of thing may be possible (by using an embedded web server wrapped in your own OTP code and by experimental mnesia extensions), but it wouldn't be easy to get it set up and working.
mstump 1 day ago 0 replies      
Something not mentioned in the the list of criticisms linked by gordonguthrie is the lack of a coherent release and distribution framework. There are several half baked implementations none of which have the full support of the community. Sure Erlang allows hot code swap, but it's mostly a manual process requiring a user to interact with the shell.
benmmurphy 1 day ago 1 reply      
i find messaging between processes and handle exits can be a bit awkward as well.

for example if you send a message to a process there is no way to know whether it actually received the message or not. if you wait for a reply from the process then you can tell if the process received your message AND processed it but sometimes you only want to do the first for performance as well as semantic reasons. for example you may not want to retry sending a message that has crashed a process. i think this is because erlang wants to be network transparent and with the network you obviously can't be 100% sure whether your message was received or not.

handling exit()s is a bit weird as well. you get a message which is like {'EXIT', pid_that_called_exit_or_the_pid_you_are_linked_to}. so you need to know who would call exit() on you to handle exits correctly (OTP assumes only your parent will call exit on you) or assume that you will know all your linked pids correctly at all times and if you get an exit for a pid that is not linked then assume it is for you. i think it would much cleaner if there was a way to differentiate between an EXIT from a linked pid and an EXIT from yourself.

seiji 1 day ago 0 replies      
Short answer: You have to be slightly smarter than average to use it properly.

Longer answer: The only proper way to learn Erlang is to read the documentation. Then re-read the documentation. All of it. It takes 3-6 months to get proficient, then another 6 months to stop doing things the native or outright bad way.

If you are primarily an "erlang programmer," you can't interview for jobs. Everybody hires for either java, ruby, or python. If you do see a rare "Erlang job" position, they probably actually mean "We want you to understand ejabberd because we based our company around it and it's actually unusable at scale, so you get to fix other people's problems all day long." (Of course, building your own company/services around Erlang stops the "need to interview in other languages" problem.)

But, why can't you interview in Erlang? I guess you can, but the way I work, I have an editor in one window and API docs in the other. Interviewers, sitting up there on their oh-so-high perches, don't like it when candidates want to do quick API lookups for things like parameter order or return values. (Does it take (Fun, List) or (List, Fun)? Does it return Value or {ok, Value} or {value, Value}?)

Short conclusion: Erlang is a system and understanding systems takes effort and practice. People, in general, don't want to learn, they want to do. It's the whole "one year of experience 15 times over" instead of 15 years of growth and advancement problem. It's the "person with 20 years in computing can't write a tail recursive function" problem. It's just a problem.

Alternative question: why don't people understand defmacro (and recursive defmacro) and write their programs from the bottom up?

Bonus analysis: In a world where people just want to learn one thing and use it forever, Erlang doesn't fit. With Python, you can learn it once then keep "extending" it to pretend to get concurrency and other fancy features Python actively rejects at the implementation level. So, you learn Python once, then feel productive because you're duplicating functionality given to you for free in other languages.

Erlang has so much "done right the first time" built into its VM you don't have to reinvent basic parallel computing every time you want to get two webpages at once or serve more than one client at a time from a basic five line server. ButErlang people know for other tasks, say something better served by numpy, they should jump over to Python or Lua or something else better suited to the task without reimplementing all of the "they did it right the first time" code in Erlang just because they refuse to learn any other language.

etrepum 1 day ago 0 replies      
Erlang requires a fair amount of boilerplate for a small project (rebar, app file, application behaviour, gen_server behaviour, etc.) and escript doesn't work very well.

It lacks a good way to do abstract data types (records don't count).

The compiler's ability to optimize is limited by the lack of purely functional guarantees and the metaprogramming facilities (parse transforms) aren't easy to use to work around that.

There's no facility like Haskell's ST or clojure transients to encapsulate mutable stuff, just a hole to write code in C and who really wants to do that? Yes, I know about the process dictionary and ets but those aren't appropriate for most algorithms I've wanted mutability for.

That said, I still use Erlang, but only in the domains where it really shines.

awnird 1 day ago 0 replies      
Compared to other languages, Erlang has a huge learning gap between "playing around in the REPL" and "deploying an application". There's a much larger base of knowledge needed to deploy Erlang apps, than an equivalent app in another language such as Python or Java.
jderick 1 day ago 2 replies      
I've used it and I like it alright. I like the CSP style communication and automatic serialization especially. However, I probably would seek another alternative in the future. Here are my primary concerns.

1. Erlang performance is not very good (forcing significant FFI usage which is a pain).

2. Debugging code which is a mix of Erlang and C is difficult

3. Weakly typed language seems unsuitable for larger projects.

4. Better interop with C++ or Java would be a plus.

5. The syntax I can see people complaining about but it didn't bother me.

angersock 1 day ago 0 replies      
So, it's probably not any sort of technological issue--I'm pretty impressed by the tech behind Erlang.

It's the language (somewhat Prolog-ish) that is weird and uncomfortable to people new to it. Elixir helps with this, but still, every time I've tried to pick up Erlang I've rapidly been turned off.

It's the community--rather, the lack of one. Right now the product I'm working on pretty much plays directly to the strongpoints of Erlang: high-availability, high-scalability, soft-realtime performance, and straightforward error handling. Should be an obvious play.

But, I can't find Erlang developers where I live--which is funny, because at least one company with a good exit in town is an Erlang shop.

Maybe we'd be better off trying to open a branch somewhere in Europe to poach ex Ericcson folks. :(


More thoughts.

Prototyping is just a hell of a lot faster in JS/Ruby than in Erlang, though this could be a side-effect of it being a lower-level language more suited to infrastructure stuff. Then again, I've seen at least one 3D modeling package written in it ( Wings3D ).

Maybe that's part of the problem: just what the hell is Erlang good for? I see it used for really hardcore systems stuff, but it also seems to want to serve web pages, and draw 3D objects, and orchestrate builds, and all these other things. It doesn't seem to have a clean focus in the public eye right now.

mpd 1 day ago 1 reply      
There's a lot that I like about Erlang the language, but using it in production left a sour taste in my mouth due to difficult-to-find documentation, difficulty in testing the code, and (especially) the misery that is mnesia.

It was a poor fit with our cloud-based infrastructure, and once the mnesia database began corrupting itself weekly, requiring a full rebuild, it was an easy decision to move to another solution for what we were using it for.

tlogan 1 day ago 0 replies      
Erlang is meant to be high-availability and high-performance language. Good. It has potentials.

However, I cannot build any high-availability and or high-performance system based on it because it lack community around it. I.e., if something stops working there is very little resources or support - I'm not even sure if anybody tried or tested that.. So it is chicken and egg problem :(

nfm 1 day ago 0 replies      
Never used Erlang nor considered it, for the same reason C programmers don't start rewriting their code in Python: it's just not the right tool for the kind of stuff I work on.
iqster 1 day ago 1 reply      
I'm seriously thinking about Erlang now. What raised my eyebrows was "2-3 million concurrent connections on a single FreeBSD box"[this is what WhatsApp achieved]. Async network IO can be done with library support in Python, natively in nodeJS, etc. I wonder if one can push those stacks to this level.
nickmain 1 day ago 1 reply      
> doesn't run on the JVM


wolfeidau 1 day ago 0 replies      
I have learnt a small amount of it a few times, I use and rely on RabbitMQ every day so it is important I know a bit about it.

That said I just can't get over how bizarre and jarring the syntax is, this paired with the configuration structure and error messages really make it hard to get into to.

Having seen a few talks on the subject I tend to agree, more recently I am using golang for most of the things I intended to do in Erlang.

The reason I chose this route is to stick with a syntax which is common to all the languages i use day to day, while exploring a new, but much smaller toolset for building concurrent applications.

It seemed to me a much wiser route in the long run.

That said I still like the Erlang runtime and the modules it provides, if only the authors of the language could chart a course out of this unusual and sometimes frustrating syntax.

On elixir, I really hope this catches on but unfortunately like coffee script you will still need to get your hands dirty in Erlang if you want to wrap any existing libs or modules available in the runtime, or debug the crazy error messages it produces from time to time.

abvdasker 1 day ago 0 replies      
What nearly all these comments seem to agree on is that the syntax of Erlang is unusual, which poses a not insignificant barrier to entry.

Personally, I'm willing to try a new unusual language if there's some killer feature, but I haven't heard much about Erlang at all. What incentive is there to put in the extra effort if there is no perceived benefit?

redspark 1 day ago 0 replies      
Have never used it nor considered it.

The driving force behind most of the new languages I have adopted; is a friend with experience who plants seeds, then can offer support and answer simple questions as I am learning. I have no friends that I know of who use Erlang.

chaostheory 1 day ago 0 replies      
For me it was lists for strings, something both basic and that I know I'd run into a lot.

Another issue is that a lot of languages are bringing Erlang's best feature (actor model concurrency) via libraries or into their core, so it makes me less interested in pursuing Erlang.

bsder 1 day ago 0 replies      
Erlang isn't more popular because to be popular you need to be at least passably good at a lot of things. There is a lot of stuff where Erlang makes life hard. Operating system integration, lack of IDE, imperative programming, UTF-8 manipulation, and maps (which just hit the language) are all good examples of things that Erlang gets stomped on by most more "mainstream" languages.

That having been said, anybody who is serious about concurrent network programming knows about Erlang. The problem is that those people are far outnumbered by the people doing CRUD all the time.

zzzeek 1 day ago 0 replies      
haven't used it. but I recall reading a lot of "I tried erlang with its promises of immense concurrency and my program runs like crap!" "That's just because you're doing it wrong" (discussion of highly esoteric details one needs to deeply understand ensues). Made me much less curious about it.
gordonguthrie 1 day ago 0 replies      
All your thoughts most gratefully received - the internal debate is pointless and fruitless.
jhawk28 1 day ago 0 replies      
Erlang has 3 issues. It has a VM dependency, its syntax is not C like, and it doesn't have a huge marketing budget. Elixer fixes #2, but I don't see it helping the other two issues.
cordite 1 day ago 0 replies      
Coming from Haskell, the actor model does not seem composable. The state machine style is interesting, but the pattern that it comes out as distracts from the concept / algorithm.

This comes from reading rabbitmq and riak-core sources.

billrobertson42 1 day ago 0 replies      
* tried it & stopped

Performance was focused solely on throughput, latency was terrible for anything requiring even modest computation. Finally dropped it after rewriting a naive Clojure implementation of something that ran 8x faster than the Erlang version.

dustingetz 1 day ago 0 replies      
Scala and Clojure were designed to succeed Java for all the types of problems that people typically use Java for.
lectrick 1 day ago 0 replies      
Elixir, aka "Ruby on Erlang" ;)


CmonDev 1 day ago 1 reply      
Doesn't run on CLR/Mono.
coldtea 1 day ago 0 replies      
I, for one, it's 90% about the syntax.
fegu 1 day ago 0 replies      
Don't forget RabbitMQ. It must be one of the most widely deployed Erlang applications, surely?
nox_ 1 day ago 1 reply      
> * FP is trs, trs la mode

That is spelt "trs", not "trs".

JVerstry 1 day ago 0 replies      
Erlang is not available as PaaS and it is missing a good editor. Solve those issues and it will take off.
sebastians 1 day ago 0 replies      
Didn't understand how to use dializer. Situation seems to have improved since I tried last time, because of learnyousomeerlang.
6d0debc071 1 day ago 0 replies      
> Never used Erlang nor considered it


Well, I guess only the first part of that is true now. :p

But yeah: Why not Erlang?

I haven't seen a good pitch for it that addresses anything we're interested in.

Erlang's big thing seems to be that it scales. We don't have that as a major problem for our programming. If we did, I imagine I'd be interested in quantitative comparisons with other programming languages for similarly advanced code, (i.e. I wouldn't want to read some ungodly shitfest alongside decent code as the argument that Erlang was better.)

To be convinced from that perspective, I'd have to:

A) Know ahead of time that we were going to be in a position where we'd need that sort of optimisation

B) Know, or strongly suspect, that we wouldn't have to expend more effort learning Erlang than we would optimising it to 'good enough' performance in another language.

C) Be assured that I'd be able to hire sufficiently intelligent programmers who knew, or were willing to learn, Erlang to maintain things if I set up in it.

That seems a rather niche position to be in requiring both a very strong pitch for that advantage on the part of Erlang, and a significant degree of foresight on my part. If it takes six months to a year to gear up for starting a decent Erlang solution, we'd best be expecting to do massive systems engineering fairly frequently as compared to writing the solution in something that we know right now for that to pay off.

People may say that it's trivial to implement what's missing in Erlang, as compared to the systems side of things that's missing in some already known language. That may be true, I don't pretend to know enough about it to comment on it. However, even if it's so, is it sufficiently harder to implement something that scales out to the required efficiency in Known-Language-X than it is to learn Erlang to that level? Especially given that there's probably already community support for scaling in Known-Language-X.


It does seem to have some other nice features. But from that perspective - and this was my first response on dipping into Learn You... I look at it and think 'This looks kinda like Haskell. Why not use Haskell?' or, as the case may be, 'Why not Lisp?' Both of which I've some experience with and would be easier to find good programmers for.

In that regard Erlang is competing with some damn powerful languages.

sdegutis 1 day ago 0 replies      
A mixture of things:

1. It doesn't fill a pressing need

2. It has foreign syntax

3. It's hard to tell if it has familiar semantics (due to #2)

Credentials: I looked at some Erlang sample code twice and haven't looked at it again since; also, I'm no stranger to new languages, I fully adopted Clojure within a month of learning it

tg1234 1 day ago 0 replies      
Erlang is dark magic. Not intended for the faint of heart.
ninjakeyboard 1 day ago 0 replies      
No strings :P
nousernamesleft 1 day ago 1 reply      
I have "tried it & stopped". I only tried it to check out webmachine, which appears to the be only web framework in existence that is not stupid and terrible. I stopped because I was done trying webmachine, and went back to my normal language that is much nicer than erlang (haskell).

I don't think my experience with erlang has anything to do with the reasons it isn't more popular though. The biggest thing I see is the lack of module/library/package management. CPAN was a big deal. It is now expected that every language have their own CPAN. I think the lack of one is a huge problem for any language, erlang being a good example. I think it is also a big reason that ocaml and haskell went from being "ocaml is the more commonly used one" to "haskell has ten times the userbase of ocaml".

s1gs3gv 1 day ago 0 replies      
The name is too easily confused with Uhhh Lang ?
Ask HN: How do you keep from getting burnt out?
5 points by jit_hacker  9 hours ago   2 comments top 2
mello151 6 hours ago 0 replies      
Maybe a vacation or sabbatical?

Or if you have spare time and some other type of work piques your interest work some on a different project. I've worked in groups where when it's a down cycle, it's really really down... like boring me to tears down. So I started trying to learn stuff that I never deal with at work, even when it is busy. When I would go back to the regular gig it was nice to look at the same code with a "new set of glasses".

kfawcett 9 hours ago 0 replies      
Get sleep. Get exercise. Eat well. Only drink alcohol on weekends and never during major development stretches.
Ask HN: What are the three most significant things you have learnt till date?
10 points by BhavdeepSethi  1 day ago   13 comments top 11
ACow_Adonis 21 hours ago 1 reply      
Concept #1: Opportunity Cost: Everything has a cost. Everything. At a minimum, it is the foregone time you could have invested into other activities rather than the thing that you've chosen to invest time in. Even if you had unlimited funds, you still have to chose what to do with your time, and that's frighteningly finite. Realize, therefore, that you are always giving up something, and choosing to be weak in one area in return for being strong in another. No one is good at everything. No one has it all.

Concept #2: Labor-elasticity relative to wages/money can be negative, and that's ok. For those not keyed in on economic mumbo-jumbo, that simply means that having more money can result in people choosing to work less. First year economics people (and i'm assuming many young, and HN-types) assume that everyone will do more work for more money. But money is not the point, and unless you're neurotic and insecure (and most people who chase money are), there comes a time when you realise that maybe now that you've got money, you can instead use it on the things that really matter rather than trying to get more of it. And work, on the whole, is not the shit that matters...

Concept 3: Be humble and self-critical. Humble to realise how fallible and pathetically human you are, so that you don't beat yourself or others up too much, and how much luck had to do with any success that comes your way, and how much it has to do with a great deal of suffering that comes the way of others. Self-critical so you can deal with, improve upon and compensate for the flaws you realise you have.

Bonus concept 4: Learn from the things stupid people do so you don't do the things that make them stupid. Their sole purpose in life is to act as a warning to others.

karterk 10 hours ago 0 replies      
1. Don't be too hard on yourselves. You tend to make mistakes, and there is no way to become better without making them. Put the past behind and move on. Easier said than done, though.

2. Failure is the default state of any venture. Give your best to succeed, but remember that you're starting from failure. This way, you learn to handle the lows associated with failures better.

3. Focus on the process as much as on the results. The idea is to master the process that's expected to return results so that you can keep using it to succeed at various things.

sharmi 1 hour ago 0 replies      
* There is no point in brooding over a decision we have made in the past. Given the circumstance and no prior knowledge of the future, we will always make the same decision. So we have to accept our shortsight/mistake, learn from it and keep going.

* I try to give the maximum I can for an objective, so I will not have any regrets later, whether it is achieved or not. Clear conscience.

alok-g 19 hours ago 0 replies      
1. Irrational behavior is much more common in humans than what I had imagined. The world seems to be running on it.

2. If you are not experimenting, you are not learning. E.g., Don't be scared to share your thoughts with others, since if they are wrong that's your shortest path to get corrected.

3. Need to figure how to undo childhood learning that is likely wrong but yet ingrained in our minds.

Plus a large number of technical things that the question does not preclude though probably does not intend to ask for.

sedeki 1 day ago 0 replies      
Good thread, though I can only come up with one thing.

# Good relationships are really important for your mental health

jkaykin 15 hours ago 0 replies      
#1: Spend more money on experiences and less on things.

#2: Don't dread potentially poor outcomes because they are never as bad as they seem.

#3: Competence, confidence, and efficiency go a long way.

biznerd 22 hours ago 1 reply      
"#2 Hard work beats Talent when talent doesnt work hard."

Interesting. So which is more important, working hard or working smart?

petervandijck 23 hours ago 0 replies      
1. Think bigger. Work on ambitious projects. You become what you spend your time on. And big visions attract money and talent. Think bigger.
weddpros 1 day ago 0 replies      
#1 Life is short, so make sure you'll have no regrets when you die

#2 Whether you think you can or can't, you're right

#3 Foolish decisions are often the ones you regret the less

japhyr 17 hours ago 0 replies      
Work hard. Be strong. Don't complain.
10dpd 23 hours ago 0 replies      
Just one thing:

1. The importance of good grammar.

Ask HN: Disable GPS chip on Macbook Pro Retina
2 points by quantumpotato_  9 hours ago   2 comments top
wmf 9 hours ago 1 reply      
Do Macs even have GPS?
Ask HN: Non-tech founders, what are your biggest tech challenges
2 points by boy88  9 hours ago   discuss
Show HN: I've open-sourced my ERP SaaS, Stockor
38 points by nathanstitt  1 day ago   26 comments top 10
gizmo 1 day ago 1 reply      
The demo doesn't look bad, but it seems to suffer from design-by-programmer. It also seems like the stockor.com website is more of an afterthought, even though it's a critical part of your sales funnel (other ERP vendors can afford to have a lousy website because they do face-to-face sales).

You can make a ton of money in the ERP business, even if your product isn't very good. So if you're losing hope that stockor.com is going to bring in serious money anytime soon, it's probably because you need to focus way more on your onboarding experience and quality of the stockor.com website.

pinaceae 1 day ago 1 reply      
Interesting attempt.

Key questions I would immediately ask an ERP vendor that I do not see answered on your homepage:

- What kind of interfaces/APIs does Stockor provide? Both for in-house systems (analytics, whatever) as well as externals (EDIFACT, etc.).

- Is there some sort of pricing engine to fully calculate an order? How flexible is it?

I assume this is US only? If not, then what about languages, currencies, etc?

callesgg 1 day ago 1 reply      
Look very nice. Looks allot like Pimcore http://pimcore.com

The demo stuff was laking good test data on most pages. That was my initial thought.

yebyen 1 day ago 1 reply      
Is it a coincidence that the page says

"It's 11 o'clock in the morning, do you know where your inventory is?" and I'm reading the page at 11 o'clock? Creepy

Everything looks very polished, I've never worked with an ERP before but I didn't know it could include your customer-facing website and process orders directly. I guess that's what ERP is for...

lubos 1 day ago 1 reply      
I love the roadmap gauge on your website, can I steal it?
ing33k 1 day ago 1 reply      
do you think this can be used by a small scale manufacturing industry as an Internal ERP ? ( there no need for Store sort of thing ). Reason I am asking is that I had to do a very basic inventory management app for a friends mechanical industry, just generated some models in rails and used an admin panel gem to generate the app..


andersthue 1 day ago 1 reply      
I am using an online ERP, the trust to do that came because my accountant used it.

He liked it because he have access to my data without the need to come to my office.

So you might try to get accountant/bookkeepers to like it so they can be your trustbuilders!?

2810 1 day ago 0 replies      
Just curious, how much revenue it has generated up to date?
dougaitken 1 day ago 1 reply      
Having a 2 second look at the demo, it looks like a lot of useful kit. But what makes this different to other software, or indeed compared to Shopify and the like?
PhasmaFelis 1 day ago 1 reply      
Stockor was my favorite He-Man toy. He had pallet jacks for hands! I think his sold-separately vehicle was a shipping container.
Ask HN: Whats the most interesting and exciting field in computer science?
2 points by ericthegoodking  11 hours ago   3 comments top 2
whitef0x 10 hours ago 0 replies      
Pentesting and security fields that surround it can be pretty interesting. Also working in startups can be exciting with the right company culture and team.

However for the most part, the most 'interesting and exciting field' is very subjective and varies from person to person. I think you won't be able to get a definate answer on this because everyone thinks their field is the most interesting (and for good reason too - otherwise they shouldn't be in it!).

primaryobjects 9 hours ago 1 reply      
Artificial intelligence, currently popular by machine learning. Lots of potential and undiscovered applications. Everyone will have their own opinion on this, however.
Ask HN: How much would you charge to mentor me in C++?
8 points by sedeki  1 day ago   13 comments top 5
fredophile 10 hours ago 0 replies      
I write C++ for a living. I don't have time for Internet mentoring but I will suggest a few resources and general ways you can improve your code.

Are you a C++ novice or a programming novice? If you're a programming novice you should take some time and learn some standard algorithms and data structures. Introduction to Algorihms is fairly standard for university algorithm course. Make sure you understand complexity and big O notation. Understand typical container classes and their trade offs (lists, queues, stacks, deques, various types of trees, etc).

The best way to improve your code is to write code. Reading good code also helps but when you start out you can't tell good from bad. Here are some questions to ask yourself as you write:Is what I'm doing clear? Will I be able to understand what I did and why I did it if I read this a year from now?What could go wrong? What inputs do I expect and what happens if I get something unexpected?How hard will this be to update?How hard will this be to debug if things go wrong?

For a novice I'd suggest reading Effective C++ and More Effective C++ by Scott Meyers. Read a point or two a week and really focus on using them in your coding that week. This will help you build up good habits. A lot of good coding is good habits accumulated over time. Herb Sutter is another author with excellent books for beginning to intermediate coders. He's also got a really good blog.

Once you've read and used techniques from Meyers and Sutter get a copy of Code Complete by Steve McConnel This book is a great resource. Once you've read it all the way through you can read Modern C++ Design by Alexandrescu. Anytime you find yourself thinking you should use a technique from Alexandrescu stop. You've probably gone too far and over thought something. Maybe ten percent of the time this happens you'll be right and template craziness is the right approach. You'll save yourself a lot of headaches the other ninety percent of the time by thinking more about what you're doing.

I know that some of these books are expensive but you really don't need to get them all at once. You can take a long time reading through each of them and learning to apply their content.

BSousa 22 hours ago 1 reply      
Do you really need a mentor? Or just a list of good books and path to take? What is your experience with other programming languages?

On the mentor charge, I think trying to get a mentor and pay a per hour thing maybe wrong. I mean, I can charge you for an hour for a skype 'lesson' but what about all the other work a mentor/teacher would have to do (checking code you wrote, writing notes, writing assignments or doing 'lesson plans')?

If you are interested, you can email me (info on profile) and we can discuss it further (for reference, I've wrote a book about C++ and having using it for more than 10 years as a developer).

neilxdsouza 21 hours ago 1 reply      
Not a direct answer to your question but ...

You should probably find someone in the Open Source world who is willing to mentor you for free and you could contribute code to their project (thus building a profile for yourself).

I myself am not very good in C++, but the more you program, the better you become. You may need to read Exceptional C++ by Herb Sutter and some other style guides and other books including Modern C++ Design by Andrei Alexandrescu and C++ Templates : The Complete Guide by Josuttis and Vandevoorde. The Stanley Lippman book mentioned in another comment is also very good.

I work on an Open source project in C++ (but it's also got yacc and it's a compiler (so it may be a high barrier for you, but if you'd like to give it a try I would be happy to help for free) ), and I dont think I am good enough to mentor someone, but you should be able to find an Open Source dev who will mentor you, if you agree to contribute back. This way you can save yourself some money and build a profile at the same time.

fogleman 20 hours ago 0 replies      
I was once contacted out of the blue by a local student who wanted some programming lessons. I met him at a coffee shop and worked with him for about an hour for free. We only did it once, but I was glad to help out.
ddorian43 1 day ago 1 reply      
Also what would be a great resource to learn c++ ?

My goal is to contribute to open-source database (like create a data-type extension(ex:hll) for postgres (iknow it's in c))

Ask HN: Are data markets a bust?
3 points by emrgx  17 hours ago   1 comment top
chewxy 12 hours ago 0 replies      
In what sense? DMPs are doing fine in online advertising.
How young does a startup founder have to be?
3 points by jameshk  14 hours ago   1 comment top
jameshk 14 hours ago 0 replies      
Sorry about the duplicate posts!
Ask HN: How much is my webapp worth?
9 points by abeiz  1 day ago   10 comments top 5
nicholas73 21 hours ago 0 replies      
I think you would know the answer better than anyone - because you should have the most feedback from users already. If it doesn't look like the idea easily catches hold, then sell it after some negotiation. Don't think about "webapps like this", but think what's it worth to your acquirer. That's the only way to gauge price. Every buyer would be different.
charlesdm 1 day ago 0 replies      
First tip, always be willing to walk away from a deal. It gives you leverage. They've shown their hand by contacting you and saying they're interested. Would you hate it if you couldn't sell it to them? If not, then great - you now have leverage.

Second, price is often negotiated. A first offer is usually a lowball offer, but not tht low to be laughed out of the room. I'm not saying you can get 500k for it, but 25k does seem low. They obviously want it for something, try and find out how they intend to use or integrate it. Where would the value be for them? If they're a development company, maybe one of their clients asked for something similar? Determine the value and price accordingly. Make sure to make it a win-win scenario; the perfect pricing would be one where they'd actually waste more resources building it vs buying it.

bliti 1 day ago 0 replies      
Given how big online poker is I don't think 25K is a lot of money. There are so many ways to monetize this site that it hurts. I would finish the multiplayer feature and then promote it well. It will make more than 25K easily.
erikig 1 day ago 1 reply      
Two questions:Is there any funds management functionality?Have you tried listing it on Flippa to gauge interest?
doubt_me 1 day ago 1 reply      
How long has it been around?

Does 25k include the purchase of the domain as well?

Ask Sama: Do you plan any major changes with HN and YC
9 points by diminish  1 day ago   2 comments top 2
beat 1 day ago 0 replies      
Actually, as a clarifying question... will pg continue to maintain HN separately from YC? It's always appeared to me to be two separate projects with congruent goals, operated by the same person, rather than HN as a YC sub-project.
sama 1 day ago 0 replies      
probably a lot of minor changes that all together will help us grow a lot.
Ask HN: App that helps pick a political platform/candidate, worth pursuing?
3 points by Inc82  22 hours ago   2 comments top 2
27182818284 15 hours ago 0 replies      
On the one hand, I wanted to encourage you with my reply, but on the other hand, I wanted to tell you all the reasons why nothing you just presented is special or novel and why it isn't going to work.

I don't think it is a good idea because you haven't thought it through or you don't have enough experience. There is nothing in your post that hasn't been thought about by 1000s of poli sci students already.

In startup-Steve-Blank-terms, you haven't done nearly enough customer development interviews. How much time have you spentbe honest herein the trenches on political campaigns at the county, state, or otherwise level?

sam152 22 hours ago 0 replies      
Sounds like an interesting concept. Few thoughts:

- You would need a large user base to get enough momentum for all of the voting and rounds.

- Wouldn't the user-voted platform have the potential to produce a candidate that appealed to an individual equally or even less than existing candidates?

- I don't know if this is the kind of thing which people would put money into on Kickstarter.

Would be interested to hear other peoples thoughts.

Whatsapp down. Facebook starts a war?
2 points by isaacjohnwesley  17 hours ago   1 comment top
JacobH 15 hours ago 0 replies      
They wouldn't take it down without a prior notice.

To buy something for 16bil, they wouldn't be so quick to do anything, but monetize from it.

Give HN: Take over my Apple video site?
7 points by jason_slack  1 day ago   7 comments top 4
e1ven 1 day ago 1 reply      
I apologize I'm on mobile, so I can't really look carefully right now, but if you don't have time to run the site, perhaps you could convert it to something with lower maintenance, like YouTube channel?
bitkitchen 1 day ago 0 replies      
We would happily host your footage at Viddme - http://vidd.me
anonhacker 1 day ago 0 replies      
Consider giving this material to an interested archive. This is what archives are for.
jason_slack 1 day ago 0 replies      
For some reason I cannot edit this anymore. It is HTML5.
Ask HN: How to create an anonymous site?
78 points by Murkin  4 days ago   discuss
patio11 4 days ago 1 reply      
Much like security, you pick your countermeasures in advance in the hopes of raising the cost of an attacker to penetrating your security. You're not anonymous. You're anonymous to an adversary with a given amount of technical/legal/intelligence/etc resources to bring to bear on deanonimizing you.

People will probably give you links which describe adequate methods for securing you against adversaries without $1,000 or equivalent amounts of brainsweat. If that's your adversary, there. May you execute properly.

If your theorized adversary is a nation state, pick another adversary. You're guaranteed to lose that fight in the long run. If you bid the price of your identity up to $5 million, they will counter with "We routinely pay that to kill mosquitoes" and mean that entirely literally.

yoha 4 days ago 2 replies      

More specifically, if you truly care for anonymity, you won't be using a plain DNS+Web site. Instead, you should go for Freenet [1] or a Tor-hosted website [2].

[1] https://freenetproject.org/

[2] https://www.torproject.org/docs/tor-hidden-service.html.en

captainmuon 4 days ago 0 replies      
Besides the technical measures in the other comments, there are a bunch of other tricks that might be useful. (Please don't take this as advice, but just as a thought experiment! If I were writing a spy novel, these are some things my characters would do.)

Find a homeless person, and ask him/her to register a bank account in exchange for some cash or a meal. Use that account to set up your website anonymously. You'll find that you need to dirten money if running such an operation - reverse laundering or taking "clean" money and putting it untracably into the business. Such a proxy account is a vital ingredient.

Don't rely on Tor alone. It might be completely subverted, you wouldn't know until it's too late. Buy access to a botnet and route your stuff over it.

Have multiple servers. If you have one single server, its easy to trace. Either by brute force: the ISPs disconnect/slow down 50% of customers for a split second, depending on wheter your site went down or not they know in which half you are, repeat until they find you. There are much more sophisticated techniques that don't require active interference. But if you have at least two or three identical servers at different locations, it makes it a lot harder to catch you. Don't forget tamper-proofing your servers.

Have trustworthy accomplices. Generally, the less people you tell what you are doing, the better. But if you have a close circle of people you can really trust, it becomes much easier to pull this off. You can work from multiple locations, give each other alibis, etc..

Build fake personas. Don't just take a pseudonym, but create fake identities. Keep records on their interests, their motivations, what you disclosed about them. The purpose is to throw investigators off. You should be aware of techniques used by them, such as behavioral analysis, stilistic analysis, etc.. Working with accomplices can help alot in creating these fake identities and concealing your own (e.g. writing style).

Go somewhere safe. If possible, move your servers, or even yourself, somewhere where what you are doing is not punishable, or the authorities can be bribed.

This list could go on for ever... I'm not sure how practical many of these ideas are, but one thing is clear, you'll need a certain amount of "criminal energy" to pull this off - no matter whether your intentions are criminal or not. (Disclaimer: I'm too pussy to actually have done any of the above, so it may or may not work :-))

igvadaimon 4 days ago 2 replies      
Here are a couple of interesting links:



To answer your questions - you can buy domain for bitcoins and use some free hosting like Wordpress or Github Pages.

p4bl0 4 days ago 0 replies      
I would go with a Tor [1] hidden service or an EepSite on I2P[2].

Both are easy to setup and are accessible by anyone using "inproxies" such as onion.to or i2p.us.

Another advantage is that you can host the sites anywhere even behind a firewall or a NAT as long as the computer it's hosted on can run Tor or I2P.

I personally have a preference for I2P, since this is its main purpose while Tor's hidden services are not the primary purpose of Tor (which is to anonymize users on the clearnet).

[1] https://www.torproject.org/

[2] https://geti2p.net/

austerity 4 days ago 3 replies      
1. Buy BTC with cash

2. Buy a domain with BTC via Tor

3. Buy hosting with BTC via Tor

4. Do not accidentally leak your identity in one of million possible ways

#1-3 are pretty easy, but #4 is next to impossible. If nobody cares about you there might be some small room for error. But generally it takes one smallest mistake and you are ultimately busted.

evgen 4 days ago 1 reply      
If you need to ask these questions you are not qualified to run such a site, or at least not to ask anyone else to trust that you are not going to screw up when setting it up or at some point in the future and break anonymity. The more you move away from "free speech" to avoiding regulation and toward criminal activity the greater the chance that someone out there will actually try to see how good you really are, and then your whole house of cards will fall down. Seriously, don't.
bdcravens 3 days ago 0 replies      
Depending on what you're trying to accomplish, couldn't you drop content on the blockchain? Not a traditional website, but relatively anonymous (depending on how you move the coin), and more importantly, it can't be seized or taken down (kinda scary when you think about the potentially implications for everyone who downloads the blockchain)
tmikaeld 4 days ago 1 reply      
Maybe someone with experience of such hosting?Like: http://www.nearlyfreespeech.net

I should add: Goes under US Law, so forget pirating or illegal content.

rjzzleep 4 days ago 0 replies      
if you host it yourself, don't forget to clean up your access logs. you might want to actually fill them with invalid data, rather than completely deleting them.
gesman 3 days ago 0 replies      
Launching and maintaining fully anon site is close to impossible. And maybe not worth a hassle depending on your purpose of course.

Instead - register Twitter nick and link your tweets to pastebin or similar repository where you'd post something worthy of reading.

Use Tor for all above.

xrctl 3 days ago 0 replies      
I think most answers here are over thinking it; I do not think he wants a website that can defeat the NSA, just one where the service provider could get subpoenaed and not lead them to him.

So, just buy webhosting with Bitcoin at somewhere that does not require contact details.




Sign up at the local library to cloak that IP then use tor after that if you think you will have a dedicated adversary.

anongrid 1 day ago 0 replies      
It is not as much creating an anonymous website as it is about protecting the users (keeping their anonymity) and their content (from prying eyes).A service can be in plain sight, but if it employs the correct (often needed - extreme) practices, it can provide its users with this level of confidence.I happen to be a Co-Founder of such a service :-)www.anongrid.com is an extremely secure and anonymous content sharing service. still in its infancy but you're welcome to check it out and see what I mean.
cturhan 4 days ago 0 replies      
Use subdomain on any known websites like http://anonymous.wordpress.com ?
wellboy 4 days ago 1 reply      
The untraceableblog.com below is a great resource.

However, in the end, there is always text analysis though that can give your identity away, which the untraceable blog does not address.

That's why you possibly need a ghost writer that you provide with a script or a robot audio recording if you want to go 100% sure. You need to be able to trust your ghostwriter a 100% though then. :)

thesorrow 3 days ago 1 reply      
What is really hard is to have a secure (SSL) anonymous website with a valid SSL Cert.
kungpooey 3 days ago 1 reply      
For how long? Get a dyndns pro account, laptop(s) and host the site from multiple coffee shops. I didn't give this much thought, internet advice eh.
Ask HN: Any examples of currying that's not toy stuff?
7 points by coldtea  1 day ago   8 comments top 6
NickPollard 1 day ago 0 replies      
The problem is that currying is useful for so many things that this is a bit like asking 'what is addition useful for?'

Currying can always be implemented just by lambdas, so it does not actually enable any new behaviour, but it makes a lot of things simpler - any time you want to close over values, it can normally be neatened by using currying.

Let's say you're making a 3D renderer. You have a list of vertices (points) in object space, and you want to transform them to screenspace by multiplying by a modelview matrix and then a projection matrix.

Without currying:

  vectors fmap (\x -> multiply modelview x ) fmap (\x -> multiply projection x)
With currying:

  vectors fmap (multiply modelview) fmap (multiply projection)

cgore 1 day ago 0 replies      
I'll use a C example, GUI toolkits. Look at the code example for GTK+ at:


All of the calls to gtk_fixed_put are of the form:

    gtk_fixed_put(GTK_FIXED(fixed), button1, 150, 50);
For most applications, the leftmost argument is going to be exactly the same window/buffer/menu/etc. for several calls in a row. A shortcut version like this is nice if you are going to add 25 buttons to the same widget:

    curried_put(button1, 150, 50);
You can do this sort of thing with curry, making a shortcut function.

chriswarbo 1 day ago 0 replies      
We can think of methods in Object Oriented programming as functions with their first argument (self/this/etc.) curried.

This is a very limited form of currying though, since a) only the first argument gets curried and b) in order to access these curried functions (methods), we have to qualify them with the object they're inside. This pretty much 'cancels out' any syntactic saving we might have hoped for.

For example, compare these two implementations of the same algorithm:

    foo = function(this, x) { run(this, x, x); }    foo(obj, 10);    class Bar {      function bar(x) { this.run(x, x); }    }    obj.bar(10);
The "foo" implementation requires us to pass in an explicit object parameter like "obj", which is then explicitly passed along to the "run" function. However, the "bar" functions are wrapped in objects, so we must specify which one we want in order to call it (eg. "obj.bar"). Likewise, inside "bar" we must look up the "run" function inside "this", so we've not actually gained anything here; we've just shuffled the tokens around!

bjourne 1 day ago 0 replies      
Partial application is syntactic sugar over lambdas. For example, say you have a print_with_color function:

    print_with_color(color.RED, level.INFO, "some message")
But it's to long to type, each time you want to print a message, so you define some wrappers:

    info=lambda m: print_with_color(color.GRAY, level.INFO, m)    error=lambda m: print_with_color(color.RED, level.ERROR, m)    warning=lambda m: print_with_color(color.YELLOW, level.WARNING, m)    info('hi im an info')
Which works, but it is perhaps nicer to use partial:

    info=partial(print_with_color, color.GRAY, level.INFO)    error=partial(print_with_color, color.RED, level.ERROR)    warning=partial(print_with_color, color.YELLOW, level.WARNING)    info('hi im an info')
You could also use it on objects:

    std=partial(stdlog.log, level.INFO)    std('hi')    err=partial(errlog.log, level.ERROR)    err('bad')
Partial application saves you more in languages with syntactic support for them. There api producers design their functions with partial application in mind, unlike python where you often wish for an rpartial function because you want to partially apply from "the other side."

fakenBisEsRult 1 day ago 1 reply      
Dependency injection using currying would be some real-world example.
collyw 1 day ago 0 replies      
I had this feeling for a while, then I notice some places it fitted into Django - for creating actions. I wrote it up.


T.E.C.H. Foundation Spring Beer Tasting featuring Family House - San Francisco
12 points by brookeveres  1 day ago   1 comment top
waster 8 hours ago 0 replies      
I see the date of the event is on your eventbrite site, but you might get more participation from HN readers by having the date right here -- readers may fail to realize this is coming right up.
Ask HN: Where I can post my startup to get beta users?
122 points by matysanchez  6 days ago   discuss
nfm 6 days ago 1 reply      
This is a lesson I have learned the hard way... You should know the answer this question before you start work on anything. If you're having trouble figuring out who your product is for, or how you're going to get in touch with prospects in an affordable way, you may have picked the wrong thing to work on.

That said, it's definitely possible to recover from being in this position. It can just take a long time.

benologist 6 days ago 2 replies      
Sites that are relevant to your audience. Don't prioritize "startup" sites over industry-specific sites.
hglaser 6 days ago 1 reply      
This is super hard and there is no great answer. I've never met anyone who's had good luck with places like Betalist. (Though "Show HN" can work.)

Realistically you are going to be tracking down your first 100 users yourself manually. Figure out who among your friends is a good fit and bug them. Then ask all your other friends who they know who'd be a good fit. If they don't click, follow up and ask why. If they click but then don't come back, follow up and ask why. If they become an active user, you are about to become best friends, always talking about what they like and why.

You're going to feel like a mooch for a while -- like you're always asking your contacts for things and not giving back. This is normal.

Also, this thread is on the front page, so post a link. Quick -- an opportunity!

nate 6 days ago 0 replies      
My best tools for getting beta users when I was kicking around Draft as an idea:

1) Build your own audience through teaching. Stop looking for the one time hit. The odds your startup/project is going to last the long term are probably low, and if you move onto the next thing, you'll be in the same spot. Start trying to build an audience around you of people and students who share your world views, and build stuff for them. Blog, write articles, do webcasts, talk at one of the many co-working spaces that look for speakers now.

Many people reading this are saying "But I don't know anything to teach." That's ridiculous. You just learned something last week that someone still doesn't know. I was teaching an entire Freshman Chemistry class as a Senior. There were juniors doing it. Sure, I took the class myself, but I didn't think I knew it well enough to even teach them. But I did the work to prepare, and teaching made me learn it backwards and forwards. Teaching isn't just good for the student; it's good for you.

"What is obvious to you is obvious to you" -John Medina (author of BabyBrainRules).

There is so much you know that someone else would love to acquire.

2) User testing. Get some beta testers simply by paying some people to use your app. (Read: Don't Make Me Think) I got some early folks on Usertesting.com. They were invaluable in finding problems and providing feedback in way you just don't get from some comments on a forum or thread about your product.

3) Go do some volunteer/non-profit work for 2 hours a week. Join something that has a big group of people you can help out and commit to for awhile. You'll quickly find when you start working for groups have a cause much bigger than you, you make a lot of new friends. And when you help them out, they love helping you out. You'll have these new groups to reach out to kick around new ideas. And they are the first ones spreading your stuff. Even better if you can find some groups to help with stuff you are building, but definitely not required to get some great benefits.

zvanness 6 days ago 0 replies      
I'm currently working on http://headlinr.com/

It's supposed to be a billboard for startup and product launches.

I pushed it out about three weeks ago, it's picking up some pretty good traffic so far.

I plan on expanding it into something more, something that actually gets you your initial user-base.

rrhyne 6 days ago 0 replies      
If B2B, decide on a few target verticals. Verticals that post email addresses to websites would help you get started easily, else get creative with linked in and google to find emails.

Then create an email campaign using something like Toutapp.com to email these people telling them you'd like their opinion on a tool that does x for their needs.

If consumer, try the same thing with facebook or similar.

notJim 6 days ago 0 replies      
Where do your customers hang out online? If your customers are everyone, pick a narrower group to start with that you can target more directly, and then once you get traction there, expand to other groups.
grisha 6 days ago 0 replies      
Hmm. It seems to me, that if you answer such a question, then you do not know who your users are. And this is not good for your startup. Because you have to know your users to be able to fix problems worth fixing. So try ask another question. Who are my users? And what actual problem I want to fix for them? Then, I think, you will be able to find a way to them.
DanBC 6 days ago 0 replies      
You don't appear to have a link to it from your profile?
cmelbye 6 days ago 0 replies      
Are the people who use "betalist" and HN in your product's target market?
nish1500 6 days ago 0 replies      
I had my last product on the front page for a while. Show HN can be a good source of traffic, but it was quite useless for getting users, or even quality feedback.

I suggest you look for niches in your industry.

makyol 6 days ago 1 reply      
Startup Buffer: http://startupbuffer.com Disclaimer: I am built that.
mtrimpe 6 days ago 0 replies      
Once you're no longer closed beta Museum of Modern Beta's is another option: http://momb.socio-kybernetics.net/

Technology showcases also work, like e.g. builtwithbackbonejs.com

johns 6 days ago 0 replies      
davidbarker 6 days ago 0 replies      
http://startupli.st is one I often look at.
scottmcleod 6 days ago 1 reply      
By picking up the phone
sparrish 6 days ago 0 replies      
Contact non-profits directly and offer them a free beta account. It worked for us.
adinb 6 days ago 0 replies      
Centercode is a good, for-pay beta service provider. (Centercode.com)
Offer HN: Improve and show your skills by working with a NPO/NGO
68 points by professorTuring  5 days ago   discuss
Blahah 5 days ago 3 replies      
We're building a site, http://solvers.io, to enable projects that improve the world to recruit highly skilled volunteers.

Adelante Africa is a great fit - we'd love you to post to Solvers and we'll try to put some eyes on the project.

Just this morning I heard that a Solver had helped fix the website of another Africa-related charity, TReND in Africa. We're still in open beta and would love feedback.

kenrick95 5 days ago 1 reply      
By the way, non-profit organization is not the same as non-governmental organization (NGO)
beshrkayali 5 days ago 4 replies      
Because most NGOs (I know it's not all of them, but I would say the majority) are bullcrap, do-nothing orgs. Spending more money on lobbying and staffing than the original cause.
Ask HN: How the hell is Whatsapp worth $18 billion?
10 points by notastartup  2 days ago   19 comments top 12
gexla 2 days ago 0 replies      
Facebook mentioned the volume of messaging sent through the application is approaching that of the SMS volume of the entire world. So, it's like buying a huge (the largest by far) global telco which only allows texting. In some poor countries, that's all people really use a cell phone for anyways. Calls are too expensive, so you see far more people texting than talking.

As big as thing thing is, it's possibly headed to 1 billion users. I'm assuming that's about as massive as anything which exists right now. It's one big platform among very few that are operating at that level.

I just don't think there is any comparison. Money doesn't matter. You make big plays. If Zuckerberg were thinking small when he built Facebook, it would be a small e-commerce store selling T-shirts or something.

akg_67 2 days ago 0 replies      
You may want to read this blog post from Prof. Damodaran. I thought it was one of the best valuation/ pricing article I read on Whatsapp acquisition.


brudgers 1 day ago 0 replies      
The deal is only worth $18 billion if FaceBook can sell additional shares into the market worth $14 billion dollars without lowering current share price. Since the announcement of the deal itself influenced share price, such an opportunity seems unlikely. It's supply and demand. WhatsApp is in the same boat. They cannot dump $14 billion worth of Facebook shares into the market without likewise influencing share price.

Thus neither company values the deal at the headline grabbing number because the opportunity costs are low. Facebook doesn't have a lot of options to move that much equity and WhatsApp does not have a long list of potential buyers with $4 billion in cash plus the discounted value of Facebook equity.

gopi 1 day ago 1 reply      
WhatsApp is not really free but supposedly cost $1/year from the second year. Yes they are doing free renewals for now and i am guessing it will not be long they begin to charge again.

They have 400 million active users now and will be around billion users by next year. If they charge the usual $1/yr in the emerging markets and say $5/yr in the developed markets that will get them around $3 billion revenue. Also they have almost 90% gross margins as from what i read its a tight operation with just 50 people and 600 servers.

So with a $2.7 billion EBITDA by 2016 the $19 billion dollar valuation is just 7x multiple and very reasonable. This is not even considering the strategic value of WhatsApp to Facebook!.

phantom_oracle 1 day ago 0 replies      
Here is a couple of theories I have had about it:

Firstly, Facebook doesn't need to monetize it. WhatsApp seems to be generating enough cash to run on its own. Instead, WhatsApp is a data-cow (I, phantom_oracle, officially coin the term data-cow on 21/2/2014 :P, which is the 21st century equivalent of a cash-cow).

WhatsApps value proposition lies in the data it has access to. I've already read on pandodaily/wired/one of those tech blogs that explains that whatsapp can access your private data, as it is in their terms.

So now think about it.

WhatsApp is always on/connected, so user tracking and trend-creation becomes easier.

People discuss a lot of things on it too, thus a lot of personally identifiable info exists (think, planning meals with your loved one, chatting to your kids, etc.).

By combining these 2, FB can improve its targeted ads on the FB platform and Instagram. Link all three and they basically have the equivalent of a user-database that is the envy of the NSA (pictures, messaging, location, etc, etc.).

If FB can improve its ad-revenue by even US 1 billion each year through this purchase, then the real ROI will be over 19/16/14 years (whatever the true amount they paid is).

Chances are, it will increase by a lot more than 1 billion a year. There's just too much data they control.

If you want to spot how they might monetize on their data, look at FB for jobs about natural-language processing (now or in the past). Also look at their ad pages to see if they boast about targeted ads.

badman_ting 2 days ago 1 reply      
I read a comment that said people run their entire businesses on it, and that in many places there is a 90% chance that someone you're talking to has WhatsApp on their phone. Sounds pretty valuable to me. It's a communication platform, what's more valuable than communication.

You might say they don't have enough lock-in, that someone else could come along and take their business. True, but I don't think that changes the value of this space in general. People always say that startups focus too much on problems that young white males tend to have, well here's something that's as generally useful as you can get.

workhere-io 1 day ago 0 replies      
We're in a tech bubble. I don't see any other explanation, because it's unlikely that WhatsApp itself will ever generate the amount it was bought for. Some years (months) from now the bubble will burst, and IT companies will be bought for a far more reasonable sum (a sum they'll have to justify to the buyer by having decent revenue. Sure WhatsApp has revenue, but nowhere near $18 billion).
jwheeler79 2 days ago 0 replies      
price is what you pay, value is what you get. it cost 19b, doesn't mean it's worth 19b. intrinsic value is the amount of future cash flow the business will generate discounted to present value. projected earnings must be measured against the returns of the s&p 500 rate of return 6% per year adjusted for inflation. they would need to have profits in the range of 500M to 1B for that valuation compounding much higher than that. it is a totally bogus valuation based on new metrics a la zuckyberg
a3voices 2 days ago 0 replies      
It's worth that much because it has the growth potential to overtake Facebook. The value is in futures. In order to keep your lead in the market, you sometimes need to buy out the competition. I'm not an expert on it, but that's just how I understand it.
pratkar 2 days ago 0 replies      
Most acquisitions should be compared from a lenses of a peer company acquisition (Peer multiples in financial-speak). If you compare the acquisition of Whatsapp with Viber a few days back, you would know why Whatsapp was such a steal.

Read more here: http://appiterate.com/whatsapp-vs-viber-who-got-a-better-dea...

checker659 2 days ago 1 reply      
That's how much it's worth to Facebook. Not to you and I but to Facebook.
nodata 2 days ago 1 reply      
Nobody has answered the OP's question: why $18B? why not $18M or $523M?
Source of the recent outagelet
62 points by pg  4 days ago   discuss
_pmf_ 4 days ago 2 replies      
> We have a list of phrases that get replaced in titles and their replacements (which can be the empty string if we simply want to remove something). A moderator accidentally added an identical pair to it.

This should prove once and forever that tail recursion is dangerous and does not help with real world problems. Clearly, blowing up the stack would have been the appropriate and safer response here.

minimaxir 4 days ago 1 reply      
So a tautology broke Hacker News?
jemka 4 days ago 4 replies      
I spent entirely too much time trying to parse 'outagelet'.
United857 4 days ago 2 replies      
Out of curiosity, what are some of those phrases?
elwell 4 days ago 1 reply      
For a hardcoded list that is manually edited frequently, maybe a duplicate-safe data structure would be preferably. It might require an extra line to parse out duplicates, but at least a page won't fail if something like this happens again.
lutusp 4 days ago 0 replies      
"Outagelet"? That's too cute by half.
keville 4 days ago 1 reply      
I guess "outagelet" is a replacement for "downtime".
aruggirello 4 days ago 2 replies      
issue: code 403 (Forbidden).

I think you should do your best to always return an appropriate HTTP status header, and in this case it is status 503 (Service Temporarily Unavailable). You really want to reserve 403's for those pesky w00t w00ts :) , ' aNd 1=1 and the likes.

Getting 403's with my personal account, but gaining (slow) access through another browser, I was convinced that the issue had to do with my account being blocked.

mjcohen 3 days ago 0 replies      
You just need enough cores so the infinite loop completes in a finite amount of time.
ChristianMarks 4 days ago 1 reply      
A cute wordlet.
aalpbalkan 4 days ago 2 replies      
That's why, have tests and a staging environment.
angersock 4 days ago 0 replies      
These things happen. :)
greatsuccess 4 days ago 1 reply      
Why none of us should quit our day jobs...
Ask HN: Were you ever scared of pushing to production?
5 points by zipfle  1 day ago   9 comments top 7
thelogos 1 hour ago 0 replies      
Yes, the worse part is the nagging feeling that there is some nasty bugs lurking underneath that you forgot. Somehow there will always be bugs and sooner or later, we all have to face judgement.
japhyr 1 day ago 1 reply      
I think this is why having real-world experience in non-programming realms is valuable. When your life has been on the line in some physical adventure, things like pushing to production are easier to keep in perspective.

I have run in the woods with bears, climbed steep and sketchy mountains, rock climbed, tried hang gliding and paragliding, kayaked in rough waters. Most of that was quite safe, with well-qualified people, using the right equipment, with the right training and with the right progression of risk. That said, I have definitely held my life in my hands a few times,put my life in others' hands, and had other people's lives in my hand.

When you've had these experiences, technical risks are easier to manage. They don't become easy, but you go through the same mental checklists. "Can I close my eyes and pull my kayak skirt off if I flip in these waves" becomes "have a followed my backup routines, so if this push fails will I be able to recover in a reasonable timeframe?"

I've been a hobbyist programmer for most of my life. But now I'm dabbling in more meaningful and important projects. This is the perspective that makes me comfortable jumping into technical projects, without being paralyzed by the fear of breaking something important.

vermasque 19 hours ago 0 replies      
More so recently because I'm working with more complexity now: an inexperienced team on top of a code base being shared among 2 teams. Ultimately, you have to counter your fear with preparation to reduce the risk of something going wrong. We use Jenkins CI for running unit tests and doing deploys to a sandbox environment similar to production. However, I have to additionally review my team's diffs to catch problems that were missed by automated tests not being written or by requirements / design being wrongly interpreted.

So I guess the goal is to improve the preparation of a production push.

taternuts 1 day ago 1 reply      
If you aren't at least a little nervous during a production push, then somethings wrong, I think.
edavis 1 day ago 0 replies      
I still get nervous, but I've learned to manage it.

Some things that help:

- Keep your changes small. You should be able to fit the entire diff in your head and completely understand the purpose for every changed line. If you can't, split it up.

- Automate the process as much as possible. Invest in learning whatever tool works best for you (Fabric, Rake, Grunt, etc).

- Use a staging environment. This is especially helpful for catching issues like missing dependencies, DB migration problems, etc.

robbiea 1 day ago 0 replies      
I was scared in the last email I sent to over 30 people. Like /u/taternuts said, you have to be a little scared. But yes, you will get over it, but if it's a big push to prod - you will still be scared.
JacobH 1 day ago 0 replies      
Currently scared
Ask HN: Are there no irrational/incorrect valuations? [Re: WhatsApp and others]
4 points by sendos  1 day ago   2 comments top 2
alok-g 16 hours ago 0 replies      
Another one is just outbidding the competition, but that probably falls within #2 (via estimation what the acquisition of the company by the competition would do to your company in the long run).
notastartup 1 day ago 0 replies      
I honestly think that we are in a bubble right now. Somebody today posted a 1998 AOL article highlighting the purchase of a chat company and the languages are very similar to what we read today about these type of mega buyouts. Having said that, I think that the financial forecast of Facebook is questionable at this point, if they need to keep buying billion dollar price tag items without making money from it's core product, it's a no brainer math that at somepoint in the future they will lose investors confidence and ultimately disappear. I have similar views regarding Twitter.

If Google bought this I wouldn't be worried but it seems that Facebook is more concerned about portraying the image that they are powerful and too big to fail without making enough revenue like their rivals.

Google and Microsoft have enough cash to fail many many more times than Facebook has relatively fewer chances to fail.

Ask HN: What keeps you off of Postgres?
11 points by moron4hire  2 days ago   14 comments top 7
sheff 2 days ago 1 reply      
Postgres is a fantastic database.

That said, I've also used Oracle quite extensively in the past when clients have needed it and it has some features that would be great to have in Postgres - as well as some features which we won't see in Postgres as they don't match the Postgres philosophy. Lack of one or more of the features below have driven the choice for various clients to use Oracle despite the cost, so having them would help grow the Postgres ecosystem.

Features in Oracle I'd like to see in Postgres :

1) Flashback. This name encompasses lots of ways to see data as it existed at a previous point in time.

If you drop a table, make a big (wrong) change etc, being able to flashback to just before it is brilliant. Or if you have a multi-terabyte sized performance test database, running a test and then a flashback to before the test is much quicker than restoring from a backup.

2) More robust partitioning - Postgres is quite lacking in comparison here.

3) Better backup options. PG really needs an in core incremental backup to start with, with something like Oracles block change tracking for backups thrown in to do quick incremental backups of a large database.

4) Replication - the lack of something like Oracles switchover which is used in a lot of architectures where you have a application and DB replicated across two sites, with one site being the active one at a point in time. When you need to take one site down for whatever reason, in Oracle you can just do a planned "switchover" to the replica DB and then switch back whenever you want without having to do anything as the DB knows it was a clean switch.

5) The diagnostic and performance monitoring built into Oracle are more extensive than those in Postgres.

The one other really useful feature Oracle has which will likely never be in Postgres is RAC (Real Application Clusters) which lets you create a multi-node active-active DB cluster quite easily.

staunch 2 days ago 1 reply      
For a number of use-cases Linux is technically and practically superior to Windows and OSX. For servers there is essentially no viable competition. Postgres by comparison has a hundred viable competitors and very few exclusive killer features. It's a free Oracle alternative in an age where people don't even want Oracle.
dventimi 2 days ago 3 replies      
Breaking the question down into parts, so that Postgres is compared one-on-one with each of its potential competitors, consider Postgres-vs.-MySQL. After all, it's plausible that one of the first decisions you make is whether to use a proprietary database or an open-source database. If the former, then you're probably deciding among Oracle, Microsoft, and maybe IBM. If the latter, you're probably deciding between MySQL and Postgres. So let's concentrate on the latter for a moment.

Why do people choose MySQL over Postgres?

I don't know the answer to that, but I was TOLD by a DBA colleague of mine who believes Postgres to be technically superior that the reason companies choose MySQL is because of the commercial support. Though it's open-source, MySQL evidently is in some sense "owned" or at least "sponsored" by Oracle, and if you go to www.mysql.com you'll find that you can purchase various services (support, training, etc.) directly from Oracle. Contrast that with PostgreSQL which even today appears to be more a house divided. At www.postgresql.org, you're presented with a list of third-party consulting organizations. I'm not positive, but I would be unsurprised if that made corporate managers a little nervous. "No one was ever fired for buying IBM." as the saying goes.

Of course, this is just conjecture on my part. Perhaps someone with better intel can comment.

ohsnap 2 days ago 0 replies      
To do a clean sweep you really need a 'order of magnitude' type of justification ... some benefit that completely justifies the risk and time of changing platforms.

Postgres does a lot of things better than Mysql, but unless you have a really unique data problem to solve (perhaps say a robust spatial database) it's hard to switch midstream.

allendoerfer 2 days ago 0 replies      
MySQL works for me and switching to Postgres would cost time and energy, which I like to spend on things actually making money.

That said, I have encountered some shortcomings of MySQL here and there (Constraints) and I can totally see how Postgres would be "nice to have", but I feel, that I am just not operating at a scale, where it really matters.

Edit: Typo

AznHisoka 2 days ago 0 replies      
What keeps me off Postgres is hopefully something they just fixed today: http://www.postgresql.org/about/news/1506/

Binary replications to slave had a very nasty bug that would make your replica data corrupt at random moments of time. Apparently I was one of the unlucky few that encountered this issue time after time.

maxharris 2 days ago 0 replies      
Postgres doesn't work out of the box with Meteor.
Anybody else hating web fonts lately?
83 points by throwaway420  7 days ago   discuss
paulirish 7 days ago 8 replies      
> It is very frustrating when loading up a website and seeing a mostly blank page because the fonts are still downloading.

Soon to be fixed! Blink (Chrome, Chrome on Android, Android 4.4+ WebView, Opera) will be implementing new behavior for how webfonts are loaded: http://crbug.com/235303#c17 Basically, you'll only see invisible text for a maximum of 3 seconds (this is the same as Firefox). As Ilya's post also points out, we have strong data on webfont latencies in the wild that supports this behavior.

Further, we're shipping it with Font Load Events so you can customize loading behavior very easily. On the Safari side of things, I've seen WebKit add a radar tracking ticket for font loading behavior, so it seems likely Safari will be updating their style soon as well.

tomkin 7 days ago 3 replies      
You know what's annoying? Having to wait for JavaScript to download before I can click on a menu.

You know what's annoying? Having to wait.

Waiting is annoying. But at the end of the day, a web without typography freedom is not a web I want, or would value. Especially since I remember what people did when they couldn't have web typography: save it as a one-time use only image.

Sorry, you were saying something about speed?

joemaller1 7 days ago 0 replies      
The problem is font-loaders. All of them. At best, you've got an additional http request, at worst a javascript file loads, executes, authenticates and then generates yet another CSS file.

The solution is to make everything as legal as you can, then quietly embed the font files directly into your CSS as data:font urls.

sdkmvx 7 days ago 4 replies      
In Firefox they can be disabled via the gfx.downloadable_fonts.enabled about:config switch. Unfortunately that will really highlight the accessibility nightmare that icon fonts are, as they don't display and have no alt-text like images.

I've also noticed that disabling JavaScript has a huge effect on some websites' speed. But other sites don't even work without it nowadays.

eps 7 days ago 0 replies      
What's more annoying is that disabling HTTP referrers breaks virtually all hosted font services and results in absolute mess as nobody seems to care to test their designs with their actual fallback fonts.
DanBC 7 days ago 1 reply      
Speed is a very important feature of a website.

Content is next.

Way way down the list is presentation. Give me ascii text in Courier? That's fine. I'll read that while all the other guff loads in the background.

pcurve 7 days ago 0 replies      
I haven't noticed it too much, but I agree a few design trends today have horrendous impact on UX.

My personal beef is anything that causes jerky or laggy scrolling. Usually it's caused by parallax and/or fixed fancy header of some sort.

The only parallax effect that I found truly functional was this page: http://www.fiftythree.com/pencil

mrspeaker 7 days ago 0 replies      
Especially noticeable when a site uses it as their main content font, rather than just titles. Countless times I've closed a tab before the font renders (hey, there's too much stuff to look at, not enough time waiting for web fonts to load!).
JoeAltmaier 5 days ago 0 replies      
So use standard fonts. What you have to say will be impaired by Ariel? Give me a break. I'm reminded of all the 'research' that went into early half-tone printing (silk-screen) - where ink flows through variable-sized holes punched in a sheet to make newspaper-like pictures. Folks argued about what shape of hole to use (really!) Because square holes would bleed and the ink would make rounder dots on the paper. One guy determined if you put little round holes at the corners of the square holes, the dots were squarer. Why? What possible difference did it make?

That's what I think about fonts. Don't get in the way of reading == win. After that, its squarer dots.

ryanackley 7 days ago 0 replies      
Haven't noticed this recently but I did when I had a slower internet connection. But yeah, I was still on broadband when I was noticing the blank page problem.
sp332 7 days ago 0 replies      
Looks like different browsers behave differently. http://24ways.org/2010/using-the-webfont-loader-to-make-brow... edited
interfacesketch 7 days ago 3 replies      
I have a website[1] that uses web fonts[2]. I have found that if you host the fonts yourself and compress the font files using Font Squirrel's web font generator service, you can get fairly small font sizes. I'm using two font weights (regular and bold) and the total comes to 104kb. Admittedly, that's quite large for a mobile website, but I think it's acceptable for a desktop site.

I've found the font files served by Google fonts are quite large and this is probably because their fonts contain the entire character set. Font Squirrel strips out characters it thinks are not needed.

[1] http://www.interfacesketch.com[2] The font I'm using http://www.behance.net/gallery/ALEO-Free-Font-Family/8018673

peteretep 7 days ago 0 replies      
+1 - this is dreadful on the iPhone. There is surely some kind of sane fallback that could be used while it loads
diaz 7 days ago 0 replies      
You know what's worse? Just try to use the option in firefox to "Allow pages to use own fonts" because, you know, you would like to read all pages with the freaking same font and font size you define in the browser options, and then just go to some random page like github and see all the broken stuff around without any icons.

I'm sorry that I have to say this and people will feel hurt and use their reasons, but don't use fonts to put images / icons on websites. Those are IMAGES, use that, please. Fonts are for text. Stop the madness.

igvadaimon 7 days ago 0 replies      
I detect mobile devices on the server and simply disable web fonts for them. You just don't need all that stuff on mobile.
null_ptr 7 days ago 1 reply      
A page being blank while the fonts are downloading is a browser bug. The user's default font should be displayed in the meanwhile, just like (I hope) it would be if the font link was broken.
wyuenho 7 days ago 1 reply      
Is there a reason that the font fallbacks you've defined in your CSS don't get used by browsers while the prioritized fonts are being loaded? This will take care of the blank page problem wouldn't it? Are there any JS solutions out there for this?
halisaurus 7 days ago 0 replies      
The instance that irks me the most is Fast Company, more specifically m.fastcompany.com. The subtitle that's highlighted in yellow loads the BG color before the font is loaded and line-height is calculated, so on mobile there's an empty yellow block that then separates and then gets filled with text. For a site/magazine focused on design it's one of the uglier things I see on a regular basis.
guan 7 days ago 0 replies      
How well does Typekit implement those best practices?
bluthru 7 days ago 0 replies      
Digg.com is horrible for this. I can't believe that I see the images before the text.
kolev 7 days ago 0 replies      
I always hated them! I spent endless hours making things load faster and the designers would always kill my effort by pushing Typekit. I think the average user cannot tell the difference anyway. I won't even mention how big our bills were at the last two large e-commerce properties we used Typekit!
dunham 7 days ago 0 replies      
You can try ad-blocking font urls. (I've done this in the past to get rid of a hideous heading font on some apache site.)
stagas 7 days ago 0 replies      
Don't use too many fonts and embed them in css. The waiting time is roughly the same but the experience is better because you see all the styling at once.
nperez 7 days ago 0 replies      
Some of the potential reasons that this is more annoying than usual (for Chrome users) right now are these bugs:



100k 7 days ago 0 replies      
On mobile, it's the worst! I have to stare at a completely blank screen for several seconds while the fonts download.
aniketpant 7 days ago 1 reply      
Hating is good. It allows you to think of improvements. But, hating without any solution is highly annoying.

I understand the fact that you prefer speed but just speed is not the only solution to effective web design. Typefaces play a very important role in the overall UX of any site.

deluvas 7 days ago 0 replies      
>It is very frustrating when loading up a website and seeing a mostly blank page because the fonts are still downloading.

Yes, annoying, can confirm. So I load the page, and all I see are text decorations like underlines, but no text. I have to wait like 1.5-3 seconds, depending on the connection. I mean, seriously, come on!

chebum 7 days ago 0 replies      
To me the biggest problem is very complex websites that start downloading content after the page loads. For example, Facebook. Page loads, get displayed and only then it starts loading content, ads, navigation, etc. The second problem is super-slow scrolling. Only my new i7 laptop with 16gb of RAM can open Facebook smoothly.
donatj 7 days ago 0 replies      
I notice it a lot on Digg.com on my iPad. The images show up sometimes 10+ seconds before the text! hurts my brain!
ksk 7 days ago 0 replies      
Do you have any examples of this? I haven't noticed this occurring.
julie1 7 days ago 0 replies      
You know what is even more annoying?

The web is a regression in the art of typography; not a single browser proposed to stop all this absurdity such as pixel based measures. Not a web page respect the rules of typography, not a single font is "nice", we have to drop accents.

Typography are sets of rules that are well codified, but the we put the burden of enforcing typography not on the computer, but on web designer (line spacing for instance).

Web is WYSIWIG, it should be What You See Is What You Mean, and computers that have so many CPU power should do their job of automation and take care of the part of the presentation that is both hard and that can be automated: typography.

The web is archaic. A web page is just a stupid port of the stupid "physcical page with boxes in which you put content". The abstraction of web page is a shame compared to all we could provide: automatic versioning, true separation of the content and the styling (yes I think of latex or wiki), something to make bibliography when quoting an URL automatic and complete (who, (c), legal conditions for reusing, scientific informations, related articles...).

The web concept is conservative yet progressing irreversibly towards a de facto standard that brings less advantages than a pure paper system (think of the cost of conservation of the content over time and the cost of maintaining server operational+permalink).

At one point, we will have to erase data from the web, and the knowledge will be lost.

What will have been the benefit of internet when you see you can still consult the first book printed by Gutenberg

kirbyk 7 days ago 0 replies      
Hmm. I've never noticed such. Does anyone have any good examples?
hippich 7 days ago 0 replies      
try data-uri's
Ask HN: private open source social networks for family use?
2 points by valevk  1 day ago   2 comments top
higherpurpose 1 day ago 1 reply      
RetroShare is probably the only one more or less "finished" right now. There is also a similar one from FSF called GnuNet, and a very Twitter-like alternative called Twister, but they are both pretty alpha. If you also want a Skype alternative there's Jitsi, and a new one called Tox, but I haven't looked much into it. I think it's also pretty alpha.






For mobile you can take your pick from these:


       cached 23 February 2014 13:05:01 GMT