hacker news with inline top comments    .. more ..    21 May 2017 Ask
home   ask   best   2 months ago   
Ask HN: How do I switch from being a passive consumer to an active producer?
375 points by humaninstrument  11 hours ago   170 comments top 76
marvin 9 hours ago 17 replies      
I'm going to say something that might be wildly unpopular among ambitious people: If you have a full-time job, you are by far not a passive consumer. You presumably contribute >40 hours every week of creatively demanding, high-quality labor to society.

For most people, the premise of this question is wrong. Procrastination, when you don't obviously have a lot of available time and effort, is a symptom that most of your creative energies are already spent elsewhere and are unavailable for other high-energy pursuits. I commend the effort to organizing your remaining free time to produce something of societal value, but for most people this is an exercise that will in the long run lead to burnout. Your mind is already subconsciously telling you this.

I know some people who have energy levels that allow them to sustainably burn the candle at both ends, but they are a small minority. I am quite envious of this group; they appear to have a big leg up in accomplishing great things, but there appears to be a component of either genetics or upbringing that leaves only a small portion of people with this capability.

If you are not in this minority and you strongly desire to produce more creative output outside of your full-time job, there are two options: You can set small goals, e.g. spending 3-5 hours a week of dedicated time towards your pursuit, or putting everything else in your life on pause for a year or two while you go at it with all your effort. The latter course of action will likely not be sustainable, and you have to listen to your mind and body when it's had enough of it.

My preferred choice would be to get a job that pays enough to sustain your lifestyle but has much smaller hours (e.g. 60% or 40% of a full-time position), if this is at all possible. Most places, sadly, it isn't an option. If you can organize this, you free up a significant portion of your creative energy, which can then be used for other ambitious goals.

wpietri 6 hours ago 1 reply      
My biggest tip: minimize what you do.

Since you want to do more, I know this sounds crazy. But when I set up a personal kanban system, it really changed my life. You establish a backlog of what you want to do. Then you limit the amount of work in process (WIP). That gives you a very small number of open tasks to switch between, which means you end up increasing your focus and being forced to finish things. (Or at least clearly admit that you're quitting a thing.)

This process is, honestly, pretty unpleasant at first. Being a passive consumer pays off right now. There's always a new article, a new tweet. When you're bored, you just skip ahead. Real work is frustrating and pays off very slowly. So you're going to spend months just breaking yourself of your quick-entertainment habits and learning to put up with the frustration of longer scale.

If you really struggle, consider trying out the pomodoro system, which involves fixed periods of focus with breaks. E.g., 25 minutes of work with 5 minutes of break. When I'm feeling really resistant to production and just want to fuck around on the Internet, I'll tell myself, "Ok, one pomodoro of work on the project." I'll set my countdown timer and just fucking do the work for 25 minutes, no matter how much I don't want to. Often after that, I get into it and it's fine. But that first wall of resistance can be brutal.

The other thing that really helped me is taking up running. Pick a race, like a 5K. Train for it and do it. Then pick another race. The main trick to running successfully is not giving up. You learn to put one goddamn foot in front of another. Some days it's a joy and some days you hate it, but that ends up not mattering so much. You slowly learn that your feelings are just these things your brain does. You can notice them without having to obey them.

factsaresacred 9 hours ago 2 replies      
How much spare time do you have, what are your living conditions like, your energy levels, hours of sleep, computer speed, monitor size, task management approach?

I ask because you need to:

A. build an environment conducive to producing.

B. practice discipline.

Like you, I had some half-baked blogs and projects that were doomed for failure. After way too much wasted time it was obvious that I wasn't living a lifestyle congruent with my goals. No successful person ever prioritized Facebook over their project. I was lying to myself and had to snap out of it.

So I began applying a version of the Broken windows theory* - which argues that if you prevent small crimes it discourages large crimes - to my life. (In this case the smaller crimes were procrastination and the larger crime was not getting my shit together like I know I ought to).

The rules were simple:

1. Everything I did had to align with my goal to produce. I got a faster laptop, dual screens (this makes a difference, trust me), began sleeping well and eating well, rationed consuming to 2 hours a day, stopped drinking (hangovers are dumb...for now at least).

2. Apply discipline everywhere. I made my bed first thing each morning, the apartment was always spotless, I worked out every day. Even began doing stuff like not using auto-correct on Chrome - fight your lazy brain and spell the word correctly dammit. The idea was to practice discipline as much as possible so as to train it like a muscle.

End result: I learned how to code, built a product, quit my job and am now at 500 customers.

So you can do it. It's just going to cost you - dates, meetups with friends, a slight drop in Facebook-notification-induced-dopamine. But, I assure you, the joy from creating something that people enjoy eclipses all of that.

This approach is geared more for an all in lifestyle change. If you just want to be a better blogger, even a fraction of the above will do.

Worse than the fear of commitment is the tinge of regret. Took almost a decade to figure that one out.


pgbovine 9 minutes ago 0 replies      
This is something I've thought a lot about in the past. This short vlog episode of mine may give you some ideas: "For Aspiring Creators, Content Means Everything" http://pgbovine.net/PG-Vlog-9-content-means-everything.htm
andai 10 hours ago 2 replies      
No one else can answer these questions for you. If your rationalizations don't make sense, they're covering up for deeper fears you may be reluctant to face.

Imagine starting work on these things right now and notice how you feel. Investigate from there.

Or, ignore the feeling, and go work on your dreams anyway :)

Best wishes

Also, an important thing to realize is that everyone is bad at stuff in the beginning. In the words of Jake the Dog, "Suckin at something is the first step towards being sorta good at something!"

Or (can't remember where i got this) "Every artist has 10,000 shitty drawings in them, it's best to get them out as quickly as possible."

Deliberately making something bad (because it will probably end up sorta bad at first, whether you want it or not) can help you overcome the delusion of "it has to be perfect or people will judge me!"

Aim to fail because failure is an essential part to success. You keep sucking until one day you wake up and realize things are going really well. You have to make it to that day though. The only real failure is giving up.

paublyrne 9 hours ago 3 replies      
I would ask if you think uploading videos to youtube that you feel obliged to produce for the sake of being 'productive', is really contributing to society.

We have a glut of online content. For every tweet that illuminates, there are 9 that constitute meaningless chatter, background noise that serves only to obfuscate the good stuff.

The freedom that the internet has given people to communicate is a wonderful and empowering thing, but the idea that we must 'produce' something to be contributing to our world is just wrong, in my opinion.

If you have free time, why not do some volunteer work in your community? Most countries have, for example, charities that help connect lonely elderly people with others to meet, say, for coffee once a week. I would say that represents a contribution of significant value.

superasn 9 hours ago 0 replies      
Having been a similar situation myself my advice for you would be to first of all stop blaming yourself for being lazy, or not doing enough. I don't know if you are but it's easy to fall into that trap.

My most unproductive period was when I was trying to do too much, all sorts of things, with insane deadlines. It really had an opposite effect on me wherein I started procrastinating a lot and then felt guilty for wasting another day. Weird part was that I wasn't even having fun with my time. It was just a weird state where I was working without actually accomplishing anything.

Anyway, I got my mojo back when I just said fuck it and said goodbye to those imaginary deadlines and started doing the so called time wasters like watching Netflix, reddit, hn, etc 100% guilt free. Instantly without the pressure and guilt, the quality of work and more importantly stuff started getting done again. It may be a unique case but try it for a few days. Maybe it'll work for you too!

andreasgonewild 9 hours ago 0 replies      
"Our deepest fear is not that we are inadequate. Our deepest fear is that we are powerful beyond measure. It is our light, not our darkness that most frightens us. We ask ourselves, Who am I to be brilliant, gorgeous, talented, fabulous? Actually, who are you not to be? You are a child of God. Your playing small does not serve the world. There is nothing enlightened about shrinking so that other people won't feel insecure around you. We are all meant to shine, as children do. We were born to make manifest the glory of God that is within us. It's not just in some of us; it's in everyone. And as we let our own light shine, we unconsciously give other people permission to do the same. As we are liberated from our own fear, our presence automatically liberates others."

~~Marianne Williamson, A Return To Love

Do it :)

dizzystar 3 hours ago 0 replies      
>> Lately I've realized that I consume way too much. Be it Instagram, Facebook, Reddit, HackerNews, Youtube, etc.

Maybe easier for me to say since I don't like social media much, but really the mindset is wrong.

There is a HUGE difference between using FB, YouTube, Twitter, etc, for product promotion -vs- consuming content. You are sort of consuming, but the mindset and results are very different.

>> Another thing that is holding me back I think is the fear of commitement. I have a partially ready youtube channel, with two videos, not listed. I tell myself that I'll open the videos to the public and then start realising videos on a weekly schedule but the commitement seems like a such a burden on me that I don't think I'll be able to keep up.

This is wrong as well. You are confusing "commitment" with "consistency" or rather, attempting to reach some undefined metric of consistency. The only "consistent" thing you have is either "do it" or "don't do it." It doesn't matter if you post once a week, once a month, or every day. Just get started.

The first step is always the hardest step, and this goes for your project, blog, YT channel, whatever. Just doing it once is enough to get those first steps past your fear.

And don't confuse myth with reality. Every overnight success story took 10+ years to write, and the back-story is a graveyard of failed ideas and plans.

Fricken 4 hours ago 1 reply      
If want to deliver value to society, just stop. It's a bloated overweight out of control monster. It's already way too much, don't feed it. Don't contribute to it, it's not the sort of thing we want to encourage. We don't live in times of scarcity anymore, we live in times of too much of everything. If you feel otherwise, it's because you're a dumb ape who only understands not enough, because that's all your evolutionary history has taught you.
dahart 5 hours ago 0 replies      
Curiosity, and fun -- selfish fun.

You're giving yourself not just too much, but the wrong kind of pressure.

Find something that's more fun and interesting to you than browsing Facebook, something you'd rather be doing, and something that scratches an itch or helps you learn something you want to know.

Don't do it for social value, don't expect to give more than you take, and don't commit to it. Do something for yourself, and those things will happen naturally as a byproduct when you find the right thing that you care about so much more than Instagram that you can't bring yourself to browse Instgram.

Finding the thing is your job at this point, so don't stick to one of the things you listed until you try them all and try many other things too. Try boating, or woodworking, or exercise, or eating, or volunteering at the homeless shelter. (If you want a blog or vlog, you need stories to write/video about, after all.) Find something you enjoy before you even think about commitment.

There's almost nobody writing blogs or open source software or posting videos to YouTube that are worrying about their contribution to society -- they are doing it because they love it, they like participating in the activity for reasons that primarily benefit them -- and only occasionally and secondarily do they benefit others -- and that's okay!

transposed 3 hours ago 0 replies      
It may come across as a simplistic answer but here it goes: just get comfortable making mistakes and being wrong. When I first entered this sphere, one thing that immediately struck me was the worshiping of brilliant ideas/code and the perfectionism that comes with it. In my opinion, less is gained when there is a culture that causes the majority of people to first doubt and second guess themselves while the people who have established a reputation raise their hand and continue to dominate the discussion. I like to believe the we live in a meritocracy, and that the best ideas inevitably make their way to the top, but that is stifled when our western obsession with flawless individualism gives pause to our intuitive and creative thoughts.

If you have good intentions and find yourself in good company, you should have nothing to fear. It really is a matter of "just do it". Thought without the possibility of action is imprisonment.

msaltz 51 minutes ago 0 replies      
I was having similar thoughts/issues lately (a couple months ago), and I came up with a way to be more systematic about achieving goals, etc. I wrote about it here: https://hackernoon.com/an-agile-approach-to-life-7bb2e9ccbc8...

Tldr; Think of myself as a product, and try to use a sort of agile development style to improve myself. I assign myself "sprints" (one or two at a time, one to two weeks each) and basically during my free time when I think "What should I do now?" I just do the sprint and it takes the pressure off. I've still been doing it since I wrote the above post and it's been working pretty well. I've read 5 novels in the past two months or so (EDIT: for context, more than I'd read in the past year), and I've tried a variety of what I call "personal sprints" that include things like "Wake up at the exact same time for two weeks", or "Say yes to all invitations for things for two weeks". I sort of have the mentality now that "The sprint is the law" and it's helped me have a level of discipline that I haven't achieved in the past. It's really fun because it's low pressure and experiment-based ("Let's try making excessive eye contact for a week, lol") and if something doesn't work out, you didn't spend much time doing it anyways.

Another less related thing is that I read that habit forming is sort of like a muscle, and once you form one habit, it can become easier to form others. So for a little while I was doing habit "layering" where I'd have a priority list for habits and basically as long as I did the top thing on my list, I was happy, even if I didn't get the others. Gradually I moved to the top two things, and so on.

Hope that helps.

awl130 4 hours ago 1 reply      
I made one change that made a difference: Cancel all-you-can-eat subscriptions, including Netflix, Amazon Prime, etc. When you must opt-in every time to consume content, it makes it easier to instead dedicate your time to creating content.
kstenerud 7 hours ago 0 replies      
Don't contribute out of guilt. You'll never make anything good that way.

At certain points in your life, you'll be inspired to build something for its own sake. THAT will be something worthwhile to contribute. Until then, chill out.

Want to increase your odds of that happening? Train your creativity. How do you do that? Play!

Play with things. Fuck around. Use it in ways it's not meant to be used. Break it! Have you ever seen kids keep themselves occupied by using things in weird, wrong, and probably useless ways? Do that!

Do things that nobody else is doing, not for what riches it might hold (because it probably won't), but for the pure joy of play and exploration, not caring about the judgments of everyone who will inevitably shake their head.

Randomness breeds novelty.

thatwebdude 28 minutes ago 0 replies      
I recently ditched most social media. Starting contributing to my blog about guitar more. It gets basically no traffic, but I definitely feel like I'm actually contributing something, even if it's for the one lone googler out there.

I force myself into a specific topic that interest me. I think that's the key.

mark_l_watson 5 hours ago 0 replies      
I write books and sometimes blog. I keep a file for notes and ideas for future writing. This process might provide you with kickstart material for the times when you are motivated to spend an evening writing.

For open source projects, choose something that you are really interested in and start a public git repo. Whenever you are motivated to work on your project for an hour or two, then add a feature. My friend, it is all about one thought at a time, one keystroke at a time. If you are not enjoying the creative process then stop and start up again on another day.

scriptstar 4 hours ago 0 replies      
It's a combination of several things like 'fear of failure', 'fear of success' and procrastination.

1. Just build something very very tiny thing and sell it for less than 5 quid something like $1.99.

2. Repeat until you see some success and get motivation.

3. While doing this just be in the same tribe who's making things like you. Talk to them and share your experiences with them. Grow with them, together.

4. The momentum automatically move you to the next level.

5. Finally find a mentor who's been in this journey before and embrace his/her advise.

Let me know where can I buy your first tiny product and I will buy no matter what it is.

Good luck!

OliverJones 8 hours ago 0 replies      
Your transition -- consumer to producer -- is one I've been through a few times. But I didn't realize it in the moments it happened for me.

(I produced written-word stuff; tech tutorials etc).

Each time I went through ramping up my output, I did so because I realized people were benefiting from what I produced. I did realize people were reading what I wrote. It was the knowledge I was doing somebody some good that motivated me.

You asked for advice, so I'll give it. Open up that YouTube channel, as soon as possible. Add more videos when it makes sense to do so, not because of a self-imposed schedule.

If the subject matter of your YouTube channel is relevant to your workplace, see if you can work out some kind of lunch'n'learn project so you can present it. You can also invite colleagues to present their stuff in the same lunch'n'learn series.

This next bit of advice probably sounds impossibly artsy-fartsy. Let your muse -- your motivation -- find you. Don't force yourself to crank stuff out just for the sake of cranking it out. Your job has enough of that.

As for finding the time.... what are you doing reading Hacker News? :-) :-) This point applies much more strongly to FB and other media outlets who measure "engagement" -- who get paid for stealing your time.

yodsanklai 1 hour ago 0 replies      
Don't put too much pressure on yourself. You don't need to commit on anything. Upload what you have, and little by little your channel/github will grow. It doesn't have to be perfect.

I can share my experience. I post some guitar videos on a youtube channel, maybe two or three times a year, whenever I feel like it. It doesn't seem like much, but it's been 7 years now and I have about 20 videos now. It's not going to change the face of the world, but it's satisfying. I can follow my progression, it's an additional motivation to practice, and some people find them useful.

Same thing for github. Whenever I write some code, I put it there. Better than lost on my hard drive and it incentives me to write better documentation. Even if nobody cares, it's still useful for me. I regret now that I didn't do it back when I was a student (pre-github).

nickjj 9 hours ago 0 replies      
I schedule out my time.

For instance, Wednesday and Friday are dedicated to nothing but writing blog posts. I tend to spend half the time researching and the other half writing.

By the time Wednesday rolls along, I'm pretty eager to start writing. I usually keep a buffer of a month's worth of posts.

Then the rest of my time is spent producing content of other types (courses, etc.) and consulting.

Luckily I don't use FB, IG and barely use Twitter. HN and Youtube still soak up a pretty decent amount of time, but I use various browser extensions and other tactics to keep myself in check. In fact, I blogged about that[0] a few months ago and this combo works better than anything I've ever tried.

[0]: https://nickjanetakis.com/blog/how-to-overcome-procrastinati...

duopixel 10 hours ago 0 replies      
Through my hostsfile I block everything of which I habitually consume and feels like "junk information", such as Reddit. You notice it is junk when you have spent some time there, look back and think "what have I learned" and the answer to yourself is "nothing", then you can do away with it, as it's a time waste.

I block these websites because habit takes you there when you're bored. The dns failure is simply a reminder that you were about to waste time, and you can put it to better use.

There is nothing wrong with consuming information, what you put into your mind eventually comes out in creative expression. In my case I can't force myself to be creative when I don't feel like it, but when the creative impulse is felt, my raw materials (the contents of my mind) are better ingredients.

cpt_snowcrash 1 hour ago 0 replies      
Many people have already listed out some good solutions for bandwidth issue. For your passive consumption issue I would highly recommend cutting yourself off from mainstream social apps like instagram, snapchat and facebook. Human minds have limited capacity to focus and be attentive to particular area and using these apps usually overload the daily threshold limit of cognitive load we can take. I have personally renounced all of mainstream social media apps and am very conscious of what I consume on daily basis ( I prefer very few news articles which are relevant to me ). Other than that I depend upon books or long form in depth content for a topic I need to learn about. This gives your brain bandwidth to think and construct original thoughts which are the very foundation producing or building anything.
paintnp 2 hours ago 1 reply      
I can definitely relate to this. Here's how you do it. You just do it. Period. If you have two videos ready, make them public. It's the intention that counts. If you want to help people learn, or contribute, don't get bogged down by how people will judge you. It is an extremely exhilarating feeling when someone reaches out to you and lets you know that they found your content useful. The moment you make the switch from being a passive consumer to an active producer, something switches within you. I started putting out videos on tensorflow a few months ago. https://www.youtube.com/watch?v=g-EvyKpZjmQThis was the first time I had done anything like this- my goal is not to get subscribers, or views or anything, it is just to put out content in a form that I would have liked to consume. I have a three and half year old and there have been times where he is literally sitting on my head while I am trying to make the videos. It's all worth it. Just take the next step.
humaninstrument 1 hour ago 0 replies      
I just want to say thank you all for your responses. You guys are amazing.
daddyo 2 hours ago 0 replies      
For me blogging worked best when blogging on a subject I just turned novice in. I'd write as if writing for myself 1 year ago. This worked out really well. Positive feedback made me write more. Now I've become more expert on that subject and I don't want to write simple tutorials anymore (it feels too much like work). I also gained a fear of being wrong, as I realized how deep and nuanced the subject really is.

As for Youtube: seems like you fell into the trap of planning too far ahead. Most channels never work out. Even if you stick to a weekly schedule, viewership will only steadily rise. Why not release your current videos, try a (bi-)monthly schedule and see where it goes?

Fear of commitment is a rationalized excuse your brain makes to avoid burning calories :). Or it's to avoid a setback: you put in all this effort and it did not work out. People avoid relationships for fear of commitment too, without ever giving it a shot, or asking if the other person also wants commitment.

For open source or research I give myself very small timeframes. You can think about it the rest of the week, and have a very productive hour or two coding or writing.

As for procrastination, check out "productive procrastination". It helped me get stuff done, when even more important stuff needed to be done :).


stvrbbns 4 hours ago 0 replies      
It sounds like part of the problem is not wanting to commit to just one of those tasks (assuming that releasing YouTube videos weekly would make it hard or impossible to also contribute to open source software, and write for a blog, etc.). If that is it, then I'd simply say "don't worry about it". A YouTube channel with 2 useful videos isn't a failed channel, it is 2 more useful videos on YouTube. Most visitors won't care whether or not you have 0 more or 100 more videos, or blog articles, so long as you can solve their current problem (whether that is entertainment, or instruction, or whatever).

Make sure to find something you enjoy doing so it's not just more work.

Don't confuse "being productive" with "seeking numeric social validation". For example, why would you make more videos? Is there content which you once wished were freely out there and can now provide yourself, or would you just feel better getting 100 views and 10 likes on a video you made instead of reading a book?

touchofevil 9 hours ago 0 replies      
As an extremely dedicated procrastinator, the most insightful idea I have found regarding this topic is something called "The Procrastination Doom Loop"[1]

I'd also highly recommend a book called "The War of Art"[2] which was written by a procrastinator who eventually made good.

I'm still struggling with procrastination, but my personal feeling is that the key is probably to create a routine where you just execute your productive work during a set block of time everyday, much like a job. This is just so you don't have to decide whether or not to do the work "now" which will break the procrastination doom loop. Good luck!

[1] https://www.theatlantic.com/business/archive/2014/08/the-pro...

[2] https://www.amazon.com/War-Art-Through-Creative-Battles/dp/1...

themagician 41 minutes ago 0 replies      
Consume less.

When you post on Facebook or Instagram you are just doing work so someone else can make money off that work. If you want to actually make something then do it for yourself.

geekme 2 hours ago 0 replies      
The only thing in my mind everyday is to get out of my 9 to 5 job. This keeps motivating me. I have started a blog which teaches a programming language. I had a target of 2 blog posts per week. I have given up watching television totally and I work for 12 to 14 hours daily even on weekends. My urge to resign my job and start on my own keeps motivating me. Although I am not able to achieve my target of 2 blog posts a week, I am able to post 1 per week and I guess I will be able to post 2 per week with a little more dedication. One more thing that helped me is the pomodoro technique. https://en.wikipedia.org/wiki/Pomodoro_Technique. I would encourage you to start first. Whether its a youtube video video or a blog post stop making it perfect and publish it right now. Once its out in the hands of the public you will learn a lot from their feedback.
titanix2 10 hours ago 0 replies      
For your Youtube channel, I'll advise you to prepare a few more before launch: this way you'll be able to skip a week or two easily... which should lessen the fear of not being able to keep the pace. Also you can choose a two weeks release schedule which is easier to keep (video is a lot of work).

Having deadline helps a lot to start and finish projects. Procrastination can also be change in productive procrastination: instead of making you video you can write a blog post. For example, I'm right know programming a game I wanted to start for a long time instead of writing a research paper (and oh, commenting on HN).

Finally I use visualisation before starting something. Instead of just thinking or writing down "write the blog post about XXX" I envision the final product for some time and how it will affect positively my life. Then I have more motivation to actually start it!

jansho 7 hours ago 0 replies      
If what is holding you back is fear, then perhaps I can make a recommendation to break it. Start with meeting like-minded people! Whether it's volunteering, meetup groups or tech events ... just pick one.

While it sounds nerve-wrecking - it was for me - actually, it's a low commitment activity. You're not trying to prove anything. You're not even expecting to make new friends. But watching other makers in action, and listening to what they say can slowly build up that push for yourself to become one.

It's different to reading and watching interviews at home because when you're out there, it all becomes personal. If I read about a guy who dreams of the next guitar picker, I'd probably roll my eyes and move on. But actually meeting one who is excitedly showing his prototype, and talking about his dream and motivations, that's endearing and actually inspiring. I may not see the guitar picker to ever change the world but I add this to my mental stock of maker stories, and this helps me to keep going.

Lately, I've found that it's much easier to slide into my project and focus on the real essentials. The more I go out and meet people, the more confident and articulated I get, and my idea gets refined further. And yes, inevitably you do make new and quite interesting friends :)

When it does become too much, then just step back a bit - remember, this is supposed to be low commitment!

Edit typo.

aurelianito 5 hours ago 0 replies      
What I do is to publish short things that I may want to read latter in my blog. Sometimes someone else find them useful, if so great. But the main consumer of my blog is me. I usually use it as reference for some little problems that come over and over. And, sometimes, I do send links to my blog when someone else has a problem I blogged about in the past.

Doing this I publish about 25 articles every year. Wanna take a look? Is at https://aurelianito.blogspot.com (warning: content is written in Spanish)

And lately I also do some YouTube screencasts about go, the game. The trick for me is to commit to upload whatever happens in the screencast, no preparation at all. Check them out too. http://www.youtube.com/playlist?list=PLTQoyI2lMoFO2bGa2b6Sy-...

rwieruch 9 hours ago 0 replies      
I followed two rules to shift from a consumer to a producer:

1. have a fixed amount of time to read HN, Reddit, Twitter, Email

2. have a release schedule

The first rule helps me to keep the consuming time to a minimum. Only once in the morning, after lunch and after work I check the recent (!) updates on all necessary platforms. It can be hard in the beginning, but at some point it becomes a habit.

The second rule helps me to stick to producing. I blog about web development and self-growth and therefore I have a backlog of ideas to write about. Once a week I post an article.

agumonkey 2 hours ago 0 replies      
I'm partly waking up for various reasons. And right now I just go to meetups, events etc to see what would stick. Fun fact, I expected that event related to my deepest hobbies would make me feel at home but not really (if at all). All in all, it's a human feel thing and a subject.

Also, I realize that existing as an adult outside of a field or shielded by a big company is quite a surprising experience. You have to integrate with people, communities, society and is mostly an altruism thing. It makes you see other working people differently and also adult life altogether.

vcool07 3 hours ago 0 replies      
Don't start with "How", you'll most probably give up after some time. Always start with "Why?". If the "Why" part is a strong enough reason for you, you will find a way to accomplish it. If it's not, well, you'll find excuses and give up on it sooner or later !
cubano 3 hours ago 0 replies      
If you find something you truly love to do, it will never really seem like "forcing" anything and your high commitment level will just happen.

My take is that you really haven't found this love in your life yet. You are trying to pigeonhole other peoples passions (like youtube vids and OS projects) into yours. That will never work long term.

For me, it was music; I loved it so much that you couldn't stop me from playing, and pretty much all available time outside work was spend practicing and playing in my band at the time.

It was the ideal social lubricant as well, as being a gifted "nerd" 35 years ago was a totally different thing then it is now. Literally, at work and school I interacted with the math kids that were often picked on and made fun of.

Playing and practicing live music not only soothed my soul, but gave me self-esteem and a ton of social status. And it hardly ever seemed like "real" work

I think that is the key for a sustainable hobby commitment.


spaceisballer 5 hours ago 1 reply      
So there is another possibility, it can be that you are more excited by the idea of creating videos than doing it. Perhaps there is some other venture you are both interested in and motivated to do.
kilon 5 hours ago 0 replies      
"but I just can't force myself to do it" Actually you can. I used to tell myself what you just said but then when I reached the dead end of lack of powerful motivation I did understand that I had to force it.

In Greece we say "The beginning is half of everything" and my problem is beginning something. Sticking to it is not a big issues assuming I do not take a large break for it , say a few days or couple of weeks . Then I have to force myself to start again. Which as you imagine happens ofter. But when I do it , its easy to continue, no pressure involved and makes me happy.

So yeah starting something can be a pain in the ass and you need to punch your way through this phase which fortunately does not last long.

Forcing yourself to start doing something is a good idea. But forcing yourself to keep doing it can be an indication that it does not make you happy or you simply do not like it. Dont do that. Pick something you really like. It does not have to be amazing, just something you like doing.

Whats the worse it can happen if you pressure yourself ? Will you head explode ? Will you be very unhappy ? Will you fail ?

Heads do not explode, happiness is not permanent and failure is part of life and improvement.

I think if you pressure yourself hard at the right time can easily solve your problem.

In the end you will realise that motivation alone is not enough always to overcome fear of failure, boredom or confusion. See pressure as your first product, self motivation. Actually self motivation is best thing you can produce. The second best, is motivating others.

zatkin 10 hours ago 0 replies      
Identify a problem, and develop a solution for it. Don't let anyone, even yourself, hold you back from solving that problem. It can be a problem at any scale. With sufficient motivation and commitment, you can solve just about anything.
exception_e 2 hours ago 0 replies      
> I also would like to contribute to open source software projects

If you'd like, I'm looking for help on https://github.com/GoTeamEpsilon/OpenEMR-AWS-Guide

Send me an email at matthewvita48@gmail.com

...this applies to anyone in this thread as well :)

sova 6 hours ago 0 replies      
The process from consumption to production can be gradual and organic. Highly I'd recommend getting some sort of blog service and posting when you can about various topics. It does not have to be anything massive or even focused, but over time if you did, say, one post a week, you will find that things add up, all those little dust motes of posts can become a mountain all together (as the Japanese proverb goes).
spookyuser 9 hours ago 0 replies      
Since I find these book recommended on HN a lot, I guess it's my turn to share them as well.

The War of Art [1] and Do the Work [2] both are excellent books about making things and why it's hard. I found them motivating not only because of the solutions in the books but also just because someone describing the problems I have with creating, so clearly, is helpful to read. It's nice knowing you're not a crazy person and that these are problems a lot of people go through. They're also very short and easy to read. So give them a shot.

[1] http://www.stevenpressfield.com/the-war-of-art/

[2] http://www.stevenpressfield.com/do-the-work/

baxtr 9 hours ago 0 replies      
I am like that too. I need to push myself towards creation every single day, otherwise I slip into the consumption trap (still happens once in a while).

This is what helps me:

- Think backwards. How many years do you have left? How many days? Time is running, we only get to live once

- Stop consuming in the morning. Instead of checking emails, news etc on your smartphone, I get up and write down all the things I want to do the day. Then I start working on the top items

- Enjoy traction. Once you release something you'll get hooked on the data. How many people like my post? What's the feedback I receive. When I see that there is traction, I get excited and I enjoy interacting with the community

Btw: You are already contributing :) Look at the feedback here.

pjc50 10 hours ago 0 replies      
Other way round: you're feeling a desire to contribute, but you're not seeing an unmet need. Start by finding an audience, even if it's just one person. Maybe you actually want to make a different kind of contribution such as through volunteering.
rmetzler 10 hours ago 0 replies      
Your time is limited. You spend time consuming, when you want to spend time producing. So, stop (or at least decrease) your consumption.

Start small. Put online what you learn. If you learned something today, you might teach someone else tomorrow.

zem 3 hours ago 0 replies      
somewhere along the line our notion of amateur internet content production shifted from a site model to a blog model, and I feel we do not consciously examine that enough. take your youtube channel - why are you bothered by your weekly production rate? the 'channel' (an unfortunate name that plays into this fallacy) does not consist of one latest video, growing more and more irrelevant the longer ago it was posted, it consists of all the videos you have added there, living in parallel, and interesting to different people at different times as and when they are discovered. posting two videos and then nothing for months does not mean you have a dead channel, it means you have a collection of two videos. add to that collection as and when you feel like it; it will only grow over time.
aurelianito 5 hours ago 0 replies      
What I do is to publish short things that I may want to read latter in my blog. Sometimes someone else find them useful, if so great. But the main consumer of my blog is me. I usually use it as reference for some little problems that come over and over. And, sometimes, I do send links to my blog when someone else has a problem I blogged about in the past.

Doin this I publish about 25 articles every year. Wanna take a look? Is at https://aurelianito.blogspot.com (warning: content is written in Spanish)

Oh! The key for me is no commitment. Just do the first video/ blog post and work from there. If I take a year off it is fine.

timwaagh 3 hours ago 0 replies      
you can always choose to do this. cancel your internet subscription would be the first thing to do. then you will be more productive in your free time. guaranteed.

now that is a radical step but it has worked for me. what is key is creating the right environment to be productive. not everybody can be with 10,000 distractions just one mouseclick away.

rythie 8 hours ago 0 replies      
To me, you need come up a schedule a stick to it no matter what. For example when I wanted to do more photography, I started a 365 project [1] to a take a photo everyday and publish it. The first couple of weeks were hard, but after a while I restructured my days, workflow & equipment to suit it.

I'd say, if you want to do YouTube, you should at least do the 1 per week thing. If you are short on time, you can do Q&A/livestream episodes. I'm sure you'd be are aware of Casey Neistat [2], who has said multiple times he wished he'd done daily vlogging sooner.

[1] https://www.flickr.com/photos/richardcunningham/albums/72157...[2] https://www.youtube.com/user/caseyneistat

disillusioned 10 hours ago 2 replies      
Man, this is me all over. I've spoken to friends about how I feel like on the "consumer vs. creator continuum," I'm far too far on the consumer side. It's just easier to watch Netflix after coming home from work, instead of creating something new.

The commitment is a big deal too. I don't want to start a blog, write two posts, and then abandon it, and I know that's more likely than not. I even struggle a bit with what the voice would be of the blog: would I write about work-related things? Just whatever comes to mind?

I don't have a great answer for you, but accountability and not breaking the chain are the two biggest things I hear: creating something every day, and having a couple of friends checking in on you, for instance.

Oh, and in my case, having just had a newborn doesn't help the situation. My brain is just too tired with the down time I have, frequently, so here I am, writing in an HN comment instead of the course I should be writing, or the other ideas I have kicking around. :-/

jes5199 2 hours ago 0 replies      
I recommend the book "Art & Fear: Observations on the Perils (and Rewards) of Artmaking"
sireat 5 hours ago 0 replies      
Not everyone can be productive all the time and that is ok.

Also, think what you really want to produce. It could be that your goals are too vague and big.

As soon as you stop thinking of it(blogging, making videos, coding) as a committment you will be at an ease.

The trick is to make a committment for two-four weeks, after that it could become a nice habit.

If it still feels like a burden it is not the right thing for you.

thruflo22 10 hours ago 0 replies      
Publish at least one tweet / post / video / commit / GitHub issue / comment per day.

If you want to run a marathon, the most important thing is to run 1k per day. Once you're out in the road, the distance will take care of itself.

visarga 9 hours ago 0 replies      
All the frameworks, languages, libraries, datasets, courses, papers, videos, groups and tools (have I missed any?) are here for us to combine and configure however we like. We might be overwhelmed by their volume and think that we have nothing original to add, but we can still remain creative in how we combine and mix them. All this content is like lego pieces, we can have lots of fun putting them together in new ways. That's why they shouldn't be a barrier, but an ingredient to creativity. The trick is to seek what you enjoy, then creative energy builds up.
bsvalley 5 hours ago 0 replies      
Start taking actions - baby steps. That's it! Keep being a consumer, it's not one or the other, you can produce while consuming it's not a big deal. The only difference between the 2 is "actions". Just do it :)
Walkman 10 hours ago 0 replies      
You just start doing, that's it. Don't overthink just start it NOW! No work is perfect, you have to release it and let people judge so you can improve or abandon but if you release nothing, you will never know.
edem 8 hours ago 0 replies      
What you can always do is to give feedback. For example I actively create issues on OSS projects I use. Most devs (including me) have no idea how their software is being used and what corner cases they have with which other devs are struggling. If you want to start your own blog the easiest way is to use Jekyll + Github. It is just 5 clicks away...Contributing to OSS can also be started by simple bugfixing tasks.
rayalez 10 hours ago 0 replies      
Figure out(decide) what you want to create, and then develop enough skill to be able to do that.

Some epiphanies I have encountered on my path:

- Terminal value - do things you want to do for the sake of themselves. Not to achieve some purpose, or benefit the society, or whatever, understand what YOU value and want to make.

- You don't "find your passion", you choose it. Make a decision on what you want to do with the following years of your life, and then figure out a way to make it work.

- Enjoying the process of creating things is a combination of skillset and value. When it works - programming or writing is supposed to feel like playing minecraft(or whatever is the most engaging computer game you can imagine). You do not force yourself to do it, you do it for the sake of the game. You are driven to make fun stuff, and then you do it because you can.

- Read the book about Flow, and about gamification - understand how your mind works and what drives it. It's all about the reward loop, your brain craves dopamine, and you satisfy this craving by setting clear, small goals and accomplishing them.

- If you feel "fear" I would guess that it's either because of the lack of skill(you dont want to waste time and hard work when you're not sure that you can successfully create something valuable), or because of the "ego" - you care too much about your self image, about what others will think of you or about what you think of youself, you tie your sense of self-worth to the quality of work you produce. To fix the first one you develop more skill, to fix the second you realize that this shit doesn't matter. The only thing within your control is how much understanding/practice you put into your craft, so you learn to only care about that and none of the irrelevant stuff.

To summarize:

1. Find the terminal value your brain craves. What do you want to do with your life, what do you want to make?

2. Follow the path to mastery, give all of your attention to getting good at what you do. That's the only thing within your control, and everything else doesn't matter.

3. Focus on practicing your craft, for the sake of the process. Design a rewarding process by understanding the idea of flow state, and your brain's core drives, and turn it into a habit. Set clear, valuable, attainable goals, break them down into simple steps, and accomplish them. Make this your lifestyle.

And creating cool stuff will simply be a side-effect of this process.

Also don't feel too guilty for "consuming" stuff, it's okay to relax and have fun and watch comedy and be inspired by the creativity of others. Focus your energy on creating more, not on consuming less.

Also, don't worry about following the schedule - it's an unnecessary arbitrary constraint you've made up that will just make things more difficult and add pressure. Moving further matters, following a plan does not. Use it as a tool if it helps, throw it out if it stands in your way.

the_cat_kittles 2 hours ago 0 replies      
publishing stuff means accepting its flaws, which is hard. just do it, the feedback you get will help you improve faster than if you hadn't.
ignostic 1 hour ago 0 replies      
> Am I pressuring myself too much to make the switch? How did you do it?

It sounds to me like you feel pressure to do this because someone told you that you should be a creator. So in that sense, yes, that's foolish. Instead pressure yourself to accomplish something you want to accomplish.

Let me use a parallel from my previous life as a technical/digital marketer. There was a prevalent idea out there that you should be "building your personal brand" all the time. Every speaker would tell me this, and they were the experts, right? So I wrote lengthy blog posts in my free time. I'd tweet and retweet and follow the right people, making the right connections, working for the right company.

I had built up to several hundred twitter followers, hundreds of thousands of pageviews, and was on a path to becoming a well-known voice in digital marketing. And I was absolutely miserable. I felt constant pressure to say something meaningful every day. When my blog posts received lukewarm reception or criticism it was very hard for me. I'd internalize it and try to use it as fuel to do better next time.

Then one day I followed a fantasy author I had just read. He had 100 tweets, 10k followers, and only following a few others. And he'd only written one book so far! He'd done none of the work I had to "build his own brand," but he was infinitely more famous than I was. The reason why was obvious: he'd contributed something of great value. I was out there rehashing knowledge and adding 160 character commentary, but it was all low-value high-volume stuff. And I wasn't contributing because I enjoyed it. I was doing it because someone told me I should from a podium.

Those people who talk about contributing are the contributors. Those people who talk about building a personal brand have the podium because they built their personal brand. They're approaching things from their perspective. But I was an introvert who hated speaking. I was working to a goal I would HATE.

So how did I make the switch? I thought about what I wanted to accomplish. That was a comfortable life with financial independence with very little attention from the outside world. I realized the speaking circuit was a high-investment highly-visible way to make money, so I abandoned my "personal brand" altogether, which didn't make my bosses overly happy. After all, I was getting their name out their as well.

Instead I created something that made money quietly. I enjoyed the challenge of it, and I felt like I was finally working towards something worthwhile. I worked most weekends, and honed my skills. I became a better writer and learned a lot more about coding. Knowing I'd started on the right path - a competitive but clearly potentially lucrative path - gave me confidence and motivation. Now, a few years later, I'm basically retired. I still have goals, but things that would have seemed ridiculous to me a few years ago seem within reach now.

If you want to cure cancer, you don't need to write a blog or contribute to projects. If your goal is to become a name in the software development community, maybe you do. But don't create for creation's sake. Think about what you want to get done, and if that involves making money be certain that you can do something measurably better than what's out there already.

TL;DR: Don't focus on 'creating' as your goal, but on what you want to accomplish

swiley 6 hours ago 0 replies      
Get rid of your browser and your smartphone. Avoid GUIs and closed software and anything that involves psychologists or "UX designers." Force yourself to understand what your doing.
everyone 7 hours ago 0 replies      
It sounds like you dont actually want to do those things.
slackingoff2017 10 hours ago 2 replies      
99% of the human species blows their time on Facebook so don't feel too bad about it
z3t4 4 hours ago 0 replies      
figure out what you really want. what is the end goal ? if its a inner goal set aside time. prepare for it so there is no start cost. make it a habit.
orasis 4 hours ago 0 replies      
My practice is mindfulness.

Each moment is an opportunity to serve.

paulcole 1 hour ago 0 replies      
Just embrace being a consumer. You're already doing it a lot and probably enjoy it in some way. If producing was really that important to you, well, then you'd be doing it.

There's nothing wrong with just consuming. It's how most people live and odds are that you're not that different.

I'm a proud consumer and non-producer (outside of work).

zobzu 3 hours ago 0 replies      
how do i make money instead of spending it?make stuff.when it fails, make more stuff.never stop.
faragon 4 hours ago 0 replies      
Open a GitHub account and publish.
abuani 8 hours ago 1 reply      
I've gone through this recently, and it's very difficult to overcome. I've read close to 50 books on topics like this, and some of the best advice I have gotten are from 7 Habits of Highly Effective People, Turn that ship around, Talent is Overrated, Flow, and The power of habit. These books provide mental models and frameworks that you can start using immediately to overcome this issue.

What I've found is most people look entirely at efficiency. They want to produce more with less, and this is their goal. However, this usually completely leaves out the value of the activity in question. What value is it that you contribute to open source? Do they provide a truly meaningful difference in your life currently, or are they merely passive participants that are means to an end for you? Do their values and goals match your values and goals? Chances are, if you answered yes to these, then you will not need much more motivation to give back to these groups. You will do it out of a sense of duty to your values and knowing that it will satiate a personal demand you have.

Now what can you do today without reading all of the literature in the world on the topic? Write out the eulogy you want told at your funeral 3 years from now. Seriously, turn off all distractions and think long and hard on how you want your family, friends, coworkers and connections to speak of you. Chances are through this activity you will begin to define some values that define your character. Hone in on these, and identify tasks that will relate to these values and drive them forward. Think of what single activity you can do today that will have the biggest impact on your ongoing well being, and figure out how you can turn that into a habit. After you start having small successes, you hopefully will begin rewiring yourself to start chasing personal victories as opposed to constant consumption.

What I personally found is that I tried to do things for the sake of doing things. I would create simply to share, and skip the 80% of the work that would actually provide me value. Sharing with the world is important, but if you don't go through personal growth while creating, sharing with the world becomes empty and you chase metrics and statistics. You will beginning acting out of need for validation as opposed to acting out of what's important to your values. The closer you can tie your values to your actions, the more satisfaction you'll ultimately get out of what you do. It makes it easier to prioritize tasks and see a week/month/year in the future and know that you're making the correct decision not just for present you, but future you.

There's a ton of crap advice out there on this particular topic, but there's a lot of good. If you start with the few books I listed above, note books that the authors reference and relate too. Create a list from these books on what to read next. Be ready to throw away old habits and models that no longer drive your life in the direction you want to go. Habits are reprogrammable, but the longer and deeper they're held, the more effort it will take. Most people reject this entire process because in the short term, you're more likely to be uncomfortable as things don't always work out. You may lose some productivity, or at least perceive yourself as losing productivity, but habits pay off much like compound interest. It's a long game, the payoff is built up over time. Be ready to adjust your parameters to improve the likelyhood that you meet the long term goals, but don't be afraid to see short term losses. The more legitimate experience you get, the quicker it will be for you to know when to cut your losses and move on. You can always reduce this by reaching out to people who may have been in your situation. You learn more from others failures then you do successes, so make sure you fluff their accomplishments, but don't be afraid to ask about what they "wish they knew". This is often where the real advice is.

JohnStrange 2 hours ago 0 replies      
Okay, I believe I can say something about that, because I've just finished my 9th novel in German - where only one [1] is (self-)published so far, though -, have published a little hobby music album [2], and also used to sell a little shareware program [3] next to my full-time job. So I'm definitely not super-productive but still relatively active, even when most of my projects never see the final daylight.

In my experience, if you find something that you really, really like and manage to reserve the necessary spare time, then you will become productive automatically. That could be anything, from sword smithing to rocket construction. If your projects persistently fail or die, then you're perhaps already too busy with family or daytime job, or maybe what your doing is not really the right thing for you. Just do it for the fun, never for money or fame.

Self-advertisement:[1] http://richard-loewe.de[2] https://ericspace.bandcamp.com/releases[3] http://peppermind.com

PaulRobinson 3 hours ago 0 replies      
There are some great answers here, truly. I am only going to add to it from my own perspective.

I have had a side business with a partner since 2006. In that business we might have turned over 50k in all that time. We aimed for it to be a replacement for our day jobs. The problem is the exact problem you have.

About two months ago I suddenly lost the ability to use my legs thanks to an abscess compressing my spine which was removed and have undergone rehabilitation. I'm still on crutches, and hope to be able to make a full recovery within a couple of months. However I spent 2 months thinking about this a lot.

What's interesting is that I could have spent 2 months working on side projects - I was off work, an inpatient in a hospital with WiFi and my laptop. Instead, I decided to take stock.

I then realised the key was the rehabilitation itself was giving me the answers, and I concluded:

- Whilst having big goals is awesome, you need to focus on the here and now and doing the work you can do right now

- Small and often is better than big commitments

- Celebrate small victories. Got 5% more done than you did last week? Well done you - keep that up, and in a year you'll be doing 12 times what you did last week.

- Keep a log of what you have done once you've done it, with dates. Once a month go back and reflect, and congratulate yourself for the progress you have made. Seriously, this helped me so much - it's a bit like not wanting to break the chain.

- Give yourself time to rest. Your body really, really needs it.

- Things will rarely work out quite as well as you hope, or as badly as you fear. Just do the work, and see where it takes you.

- Motivational videos got me out of slumps a few times. These both helped me at different points:

https://www.youtube.com/watch?v=hbkZrOU1Zag (technically a Nike advert, but I have the audio of this on my phone and listen to it a few times a month)


All of this got me through rehab, and I'm starting to see it drip into other parts of my life including work and side projects.

Don't be so hard on yourself, but remember the best laid plans are worth nothing: go get a pomodoro timer and do 25 minutes on that project right now. Then do another tomorrow. And then perhaps another straight after. Have a days rest between if you want.

If you find yourself doing two of those pomodoros every other day, you're going to look back after a few weeks and realise you've actually got quite a lot done.

Good luck.

SFJulie 4 hours ago 0 replies      
I code, do ham, wine, gardening cider, bread, pastry, cooking, music, bike fixing, knitting, sometimes write and compose.The secret: being ruined and not having money for buying any of these goods.

Let me tell you, you sometimes you would like to stop having to be an active producer.

It is a rich person problem to not be able to produce in whatever field (intellectual or physical).

xname2 6 hours ago 2 replies      
Find a lover, get married, raise at least two good kids. This will be your best contribution to the society.
RichardHeart 6 hours ago 0 replies      
By breaking old habits and putting the new ones first thing in the morning. I did it, made a YouTube channel, and made a video about it. I think the gambling sucks, stop gaming one or stop learning start doing would be most relevant towards you actually getting your channel up.
Siduri 9 hours ago 0 replies      
Eat the world while you still can, fool.
Ask HN: What are the Madrid and Barcelona tech scenes like?
137 points by throwaway0110  9 hours ago   91 comments top 36
Fargren 3 hours ago 1 reply      
I work as an SDE for Amazon in Madrid since 3 months ago, having relocated from Buenos Aires for the job. If you are cut for the culture, I can't recommend it enough. Everyone is fluent in English, and all work happens in English. I read really bad things about the work environment at Amazon before joining, but I guess that must be in the past or in some other office because I have seen nothing of the sort here; the environment is demanding but reasonably so. They pay is (much) higher than anything else I've heard of in Spain for a developer, and the relocation package was very generous and helpful.

If you are interested, here's a job search: https://www.amazon.jobs/location/madrid-spain?base_query=&lo...

I will echo what others said though: you need to speak Spanish in Madrid in order to survive, more so than in Barcelona. Outside of the more touristy areas English may not be enough in many places.

faragon 3 hours ago 2 replies      
You can work in English in most tech companies in Madrid and Barcelona. In fact, if some company discard you because of that, it would be a good thing for you. I know people working for more than 10 years in Madrid and Barcelona with just English, without speaking Spanish (most people is not nationalist, so you'll not feel strong social push for learning the local language/s). In fact, most people will appreciate it, so they can improve their English (coffee breaks, lunch time, etc.).

Available jobs:

- Pharma industry- Car manufacturers (industrial software, automation, etc.)- Misc manufacturing (again, automation, robotics, plant/line planification)- Finance, insurance.- IT consulting, logistics, start ups, etc.

Pretty similar to everywhere, plus industrial stuff.

Best paying jobs: finance, Pharma industry, car design-related (3D, materials, aerodynamics, etc.), SAP consulting, import/export logistics.

Before getting too much depressed with salary figures, note that "before taxes" salary is not the full salary. E.g. someone making 40.000 "before taxes" means the company puts additional 13,000 for retirement and Social Security, being like making near 50,000 USD in the US (plus with 100% medical coverage, no matter how expensive is, e.g. a cancer treatment, or any other expensive treatment).

Of course, if you come from making 130,000-200,000 USD / year, you'll feel "poor" in comparison. For better salaries, New Zealand and Australia may be better options.

pvaldes 8 hours ago 4 replies      
> will likely involve a pay cut in absolute terms.

In absolute terms, but take in mind that life in Spain can be much less expensive than living in Berlin or Paris. It depends on the area and the job.

> I'm currently functional in Spanish but I have a long way to go until fluency. That's one of my goals in moving to Spain

Madrid is the right option then. Has worst climate with more hot in summer and colder in winter, and is as stressful as any other big city, but is a much more easier place to learn spanish, and (probably) an easier place for a foreigner to mix with the locals. Barcelona uses heavily Catalonian language for all: trafic signs, street posters, commerce, casual conversation, television, politics... all.

On the other hand, if you can find work in any of the other "big/but not so big" province capitals (or can do remote work) maybe you should consider it. Smaller the city, worst pay, but much better life quality. The climate is better around the coast, as usual.

> How limiting is it to not be fluent enough in Spanish for use at work

As long as you speak english and know your stuff, should not be a big problem. English is worshipped (an old national inferiority complex) and in fact could be much more difficult to you to find a job in Spain if you were Spaniard.

francamps 8 hours ago 3 replies      

Barcelona native here, lived and worked for years in the NY tech scene and now I am in London, although I go back to Barcelona often, and I'm seriously considering moving back. (I don't know the situation in Madrid well enough). Here are my points:

On the one hand, the tech ecosystem is clearly not as strong as Berlin/London or even Paris, and the average engineer salary is _low_. That also might mean there is more room to experiment and make an impact, offset by a general not-so-mature or agile business environment. Barcelona has good universities, and that means many good developers eager to work on cool shit for lower pay than in other places, if you're into starting your own thing.

Barcelona has many peripheral, small offices of large companies, so I'd say you may be able to find some of the jobs you're looking for in that circuit.

Additionally, Barcelona has a wonderful creative scene. Many strong designers, any many studios doing interesting stuff. Not sure if that's a world that interests you, but many small and big agencies have offices in the city.

And I know you're not asking about that, but dude, quality of life is unbeatable: weather, food, culture and pace of life compensate for what you may be missing on the other end, particularly if you have cultivated relationships in the rest of Europe that you may be able to maintain and use to secure business.

It may depend on what you are looking for. If you truly prioritize really good tech jobs, I would say don't do it. Adjusting your expectations in terms of salary and general ecosystem is required. Salaries won't be at London or Berlin level by a pretty big margin, but at the same time you should adjust by a cost of living that is about like 40% of what it would be in London.

If you want something more balanced, and a rich well-rounded human experience (ha), I'd encourage you to consider the full picture and do it.

freyfogle 8 hours ago 2 replies      

moved to Barcelona about two years ago (from London). Here's a post I wrote last summer about some of my impressions. http://www.freyfogle.com/post/1466857133/moving-to-barcelona

In short: quality of life is great, and the tech scene, though still small, is growing rapidly.

For the Barcelona I highly recommend you subscribe to this weekly newsletterhttp://www.barcinno.com

carlesfe 6 hours ago 0 replies      
I'm a founder in Barcelona.

Barcelona is great and it's difficult to find tech people, demand is skyrocketing. Most of them already have a great job.

Salaries range between 20k for entry positions to 45k-50k for top senior positions. Cost of life is adjusted accordingly. Tech people are well paid in Spain and have non trouble living an affluent life.

Language is not an issue. I do all my interviews in English/Spanish. 99% of people in Catalonia do speak Spanish [1]. You'll definitely need to learn Spanish for life outside your workplace: shopping, taxes, etc.

Barcelona is very tourist friendly, hipper and has better weather than Madrid. Madrid has better top level positions (director of big telco, top public servants, etc) and better "quality culture": cinema, theater, etc. That being said both cities are great both in work & leisure. You'll feel comfortable in both. The only thing that makes a real difference is the sea: if you're used to being near the coast, Madrid can be a bit stifling.

Spanish tech is pretty hot but you won't find any unicorns. You can make a great career but we don't have any Googles, Apples or Facebooks. However some big companies have offices in Barcelona: King, Social Point...

The catalan area is undergoing a political process where they want independence from Spain. Nobody knows what's going to happen. In any case that hypothetical independence would affect both cities more or less equally -- if only by different reasons.

TL;DR: Both cities are great. Barcelona has the sea and Madrid is the capital. Tech jobs are paid well w.r.t. cost of life. Spanish people like to argue about politics but that shouldn't be a deal breaker either way. Reply or PM me if you want more details.

[1]: http://www.elperiodico.com/es/noticias/sociedad/conocimiento...

kh_hk 7 hours ago 0 replies      
(born in Barcelona, lived on both cities): these two are really different places. Tech scene is also clearly different. As I see it, Barcelona is smaller and cozier, tech scene might be hotter, but that might be from my own bias. Madrid is big, active and noisy. There are plenty of jobs on Madrid, compared to Barcelona, although I still think the hot stuff is on the latter.

Being both cities relatively near, why don't you take a week to visit them both? Register to some meetups, visit tech hubs, incubators, etc, and see for yourself which one feels like the place you want to be in. Now is a good time to visit, as the weather is calm. I would stay away from Madrid on august.

As for freelancing, I wouldn't recommend unless you are going to work for foreign clients.

davmyth07 3 hours ago 1 reply      
Irish/Aussie in Madrid here. I moved from Sydney a few years to take up a gig at Cabify. As has been mentioned here, you'll take a pay cut compared to the big European capitals, but cost of living probably balances it out.

Foreigners will probably be more familiar with Barcelona, but I find that Madrid is generally more welcoming. Most people who live in Madrid, although they may be Spanish, are not from in Madrid and so you'll find that most people are in a situation not too different from your own. The food is great, nightlife and culture some of the best you'll find in the world and you're well connected with budget airlines and high speed trains.

If you're at one of the more well known tech companies in Madrid you'll have no problem getting by with limited Spanish. Most work and all documentation is of course in English. You might just find the after-work/socialising sessions are where you'll most suffer not being a native speaker - but of course it's only a matter of time before you'll improve. Outside of work, with basic Spanish you'll get by, but it will be much easier and more enjoyable when you're comfortable cracking jokes in Spanish over a few "caas".

The sector is definitely growing due to a few recent success stories and although the sector is not huge, there seems to be a solid amount of available venture funding, appetite for risk and I think it will only continue to grow as companies like ours put the city on the "tech" map.

We're hiring if you're interested :-) https://cabify.com/jobs

alvatar 6 hours ago 0 replies      
Bienvenido! I've lived a few years in Madrid and in several parts of Spain. As I expected, most people here would have a bias towards Barcelona. Barcelona is a great city, but don't underestimate Madrid. It is less turistic, vibrant, and there is a lot of cultural activity with many options in ways you can live. Barcelona does a much better job at promoting as a city, but to me, the real advantage over Madrid is the sea. Madrid takes time to understand, but people fall in love with the city.Regarding tech, what happens is the the job market here is less "efficient" than say, the SV, where salaries tend to be determined by the market. Here you can find very good options, and very bad options.
lottin 7 hours ago 0 replies      
This might interest you: https://www.jobfluent.com/jobs-barcelona/

From what I see, wages are considerably lower than in the rest of Europe and the US.

On the other hand, some offices I have been in have spectacular views of the sea :)

NoCanDo 13 minutes ago 0 replies      
There's tech in Barcelona and Madrid?`?
decodingvc 8 hours ago 0 replies      
There's not much of an ecosystem, but rather good companies in both places:- madrid: cartodb, ontruck, jobandtalent, cabify,... - bcn: typeform, wallapop,... Some of those previous companies have English as the working language, so that shouldn't be a problem. But in some companies, even the senior leadership might struggle with English. You will need to test that during the recruiting process :) Freelancing might be more challenging, because of the smaller pool of opportunities. Salaries are 20-30% lower than in London, but as a foreigner relocating to Spain, you have a tax break that makes the net salary closer.
ruairidhwm 8 hours ago 0 replies      
You may like to check out the Slack group: https://madrid-devs.slack.com/

Generally good opportunities but expect pay to be a lot lower than London etc. Cost of living is pretty cheap though so it evens out :)

jakub_g 6 hours ago 0 replies      
It's interesting to see so many posts telling "costs of living are low". I live in south of France and while Barcelona is slightly cheaper, the salaries are significantly lower. I know lots of Spaniards and Italians who moved here due to that.

Having said that, exciting career opportunities in south of France are kinda limited.

BTW: If you want a place that is indeed very cheap, look at Portugal (I don't know how's the job market there, but several of my colleagues moved to Lisbon recently and I think they're doing well).

zerr 8 hours ago 1 reply      
The city is good but I can't get how people live there with such low salaries (20K-45K). This is in tech. I don't want to think about what people make in other areas (humanities?)...
NetStrikeForce 1 hour ago 0 replies      
Not much to add to the wide variety of insightful comments here, but if you'd like an American comparison, Madrid would be more NYC (busy, finance, big co's HQs, cultural offer) and Barcelona would be California (sea, weather, hotter startup scene, more laid back).

Both are awesome and whatever you choose you can't go wrong.

jurgiles 8 hours ago 0 replies      
Qu tal! ThoughtWorks recently opened an office in BCN. Feel free to reach out for more details.


alourenco 1 hour ago 0 replies      
Check out these reviews of what it's like to work at tech companies in Barcelona: https://www.reddit.com/r/Barcelona/comments/6bopoj/software_...

Do you have a work permit?

olakease 7 hours ago 0 replies      
Bienvenido!I do not think that the language is going to be a barrier for the kind of companies you are looking for. Also, you can always look for a remote job.

If I was you I'll double check other cities like Valencia, Mlaga and Mallorca.

Bear in mind that the cost of life in Spain can vary a lot from one city to the other.

raverbashing 8 hours ago 0 replies      
Go to job sites, search positions matching your skills and evaluate their quality and quantity

People might expect you to talk Catala in Barcelona but you should be able to get around with English and Spanish

Learning a language can be daunting at first but it gets there eventually

newlog 36 minutes ago 0 replies      
Hi there,

Native from Catalonia here. Specifically, from Barcelona.

First of all, let's talk about the language because I see many concerning posts in this thread. Anyone that tells you that you won't be able to speak Spanish in Barcelona is highly misinformed to say the least. I've worked with people from around the Spain without any issue, either for them or for me. No issue either when you visit the city, go to restaurants or anything like that.

What is more, my parents are from southern Spain and I can tell you that my mother still does not speak Catalan after 30 years, just because she does not want given that she feels more comfortable speaking Spanish.

Obviously, as with any other bilingual nation, people here feels more comfortable speaking either Spanish or Catalan, or both. In my case, being raised in Spanish and talking with about 80% of my friends in Catalan I feel comfortable with both. I've seen native people having trouble both with Catalan and Spanish, but you, as a foreign, most probably won't be able to realize that. Funny thing, I'm from a town 20 miles from Barcelona, and when I moved to Barcelona I was surprised how much people defaulted to Spanish.

What's not debatable is that when people speak one to another, they might do so using Catalan, so in those cases you might not be able to understand it - at least for the first half year, given that if you understand Spanish you will only need some time to train you ear to understand Catalan too.

Another point, answering other posts. In some cases, Spanish accent is really complicated. Depending where do you go, sometimes not even a native Spanish speaker will be able to fully understand everything (e.g. you go to Cadiz). The same might happen with Catalan if you go to Mallorca ;)


Regarding the tech/jobs scene. Right now, Barcelona is living a bubble in the tech field. People saying that the salaries are low or tied to the cost of life are people who might have been living abroad for some years being unaware of this fact, at least in Barcelona's case.

What's happening in Barcelona is that many foreign companies are opening branches here because it's easy to attract talent from around Europe (good weather, great lifestyle, safety, beach, mountains/forests, etc) and college here are quite good too. As someone has stated, senior salaries for developers go around 50K, which is a LOT taking into account the cost of life (e.g. nice flat in Barcelona's downtown might be 800, daily lunch menus are 10 - first, second dish, desert). In general, educated people not in the tech field here might do about 30/40K and have a very good lifestyle.

There's a lot of foreign cybersecurity companies operating here, many dev startups too, big consultancy companies and, as I said, many other companies coming from abroad which make the salaries go higher and contributing to the bubble.


Lifestyle is unbeatable here. I was in San Diego, CA for more than a year, so I know what I'm talking about :)

What most people coming from abroad miss is the opportunity to get the best from two worlds. Being able to work and experience Barcelona while living in a suburb where you can walk to the beach and bike/walk through the forests. That's something Madrid cannot give you.

One last thing, whoever tells you it's perfectly OK to go around with English only is highly misinformed too. Not everyone speaks English here. If you go around the streets trying to talk with people it's quite likely you might find people who don't talk English. Another story is in your workplace. Most likely people will ""talk"" English if you work in a tech job. But bear in mind, when I say talk I mean babble. You'll have trouble understanding them in the beginning, but I guess they will improve over time as you will with Spanish.

cynusx 1 hour ago 0 replies      
As somebody who has been hiring engineers in Barcelona for 2+ years now as founder of NoviCap I can tell you more from an employer POV. (if interested more info about us: https://gist.github.com/noverloop/ec033c20c02cf9e219d2fc9739...)

On Madrid vs. Barcelona, the level of english spoken in Madrid is much lower among engineers and I suppose in general. It's also noted that working culture in Madrid is more 'formal' (dress, manners) than Barcelona. An example from Spanish culture is that Madrid refers to catalans as hippies and Catalans to people working in Madrid as 'suits'.

As for economic differences Madrid has more headquarters, especially of companies active across LATAM while Barcelona has manufacturing (automotive, industrial,..), tourism (a lot) and about 75% of the countries' startup scene. cfr. https://novobrief.com/barcelona-madrid-startup-ecosystem/

The tech sector in Barcelona is booming with new investments and new funds entering. VC funding used to be relatively inaccessible but all major EU VC's invest in Spain now and it has two great homegrown funds too. There are many bootstrapped companies and some big tech companies have opened engineering offices here.

There are plenty of english-speaking conferences and meetups going on and it's easy to meet other engineers.

You won't have much problems mixing in as most meetups are in English and engineering teams are often a mix of foreigners and Spaniards. I don't think not speaking spanish will hold you back professionally. In fact, our team is majority British :)

In terms of outdoor activities you can do both are not really comparable since Barcelona is near the sea-side but also a 2-hour train ride away from a ski-resort in Andorra.

In terms of weather both cities get really warm during the summer, but Madrid is located within a group of hills and traps the heat more.Barcelona on the other side has some shade from the mountain and its proximity to the sea makes it more humid which makes it tolerable except in July/August. Catalans tend to take long holidays in these periods. The winters are milder though, I have been wearing t-shirts in January ever since I got here.

In terms of absolute salary the amounts are lower than London but in terms of quality of living I find you get more value for money.

For startups the salary levels are about:

Juniors get around 25k

2y+ work experience gets you around 35k

Senior usually gets you around 50k

It also depends on your stack as PHP, .net and Java pay less.

However, there are big companies here that have put engineering offices here such as Xing or Typeform that can be negotiated to Berlin levels. They will always try to pay you Spanish levels first but they are happy to pay Berlin levels when pressed.Their offer range is from 55k to 75k

As for contracting, there is almost none of that here. The ones I know that do it contract remotely for London.

gfiorav 6 hours ago 1 reply      

Madrid native here.

The scene is growing and it's exciting. I work at carto.com, and there are plenty other like it (growing startups). If you want to visit our offices, hit me up at @gfioravantti and I'll give you a tour!

Salaries are low but quality of life is top notch

mixmastamyk 1 hour ago 3 replies      
Just a comment on the Spanish in Spain. They don't speak "Spanish" there, but a number of languages instead. Unless you want to learn Catalan, choose Madrid. Sure they understand Castellano but will prefer the local language.

(BTW, this boggled the mind of my younger backpacker self from California who grew up on Mexican Spanish.)

mannigfaltig 6 hours ago 0 replies      
Kinda related: What about Portugal? What is the tech scene like in Porto?
atroll 8 hours ago 3 replies      
Salaries are lower than 20k euros a year.
fesja 6 hours ago 0 replies      
Disclaimer: I'm from Madrid and I live in Madrid right now. I've created 3 startups. I've spent monts or weeks working from San Francisco, New York, London and Barcelona. My companies have been invested by Atomico, Idinvest, PointNine, 500 Startups

Many people ask me why I haven't moved permanently elsewhere. The answer is simple: quality of live. It's really hard to get the quality of life that we have in Spain (free health care, awesome food, awesome weather, lots and lots of places to visit on the weekends, awesome hiking places, beaches, mountains to sky, etc). Specially if you have a high salary like us in tech do.

About Madrid and Barcelona. I think both are good choices, but let me summarize some thoughts:- Barcelona. It has a beach and the sea; if you are really into it, it's a great choice. It's near France, so it's great to rent a car and travel to Europe (France, Italy). The city is lovely although there are way too many tourists now (you will avoid many areas). It had an ecosystem much bigger than Madrid, but right now it's not anymore. The design community is bigger there. There are more international people living there for 1-2 years, but they usually leave.- Madrid. The bigger companies are here (Amazon has tons of good paying jobs, Google, Facebook). If you avoid Puerta del Sol, the rest of areas are very calm. It has high-speed trains with all over Spain, it's the best spot if you want to travel. The startup ecosystem has grown a lot, Google opened a Campus there (like in London). There are many accelerators in Madrid. And many of us who sold previous companies are already into our 2-3 companies. Wages are higher and the cost is kind of similar now (what they told me in Barcelona two weeks ago). Madrid has more events than in Barcelona.

About the work. If you work in Tech, Spanish won't be a problem neither in Madrid nor Barcelona. In both places you may want to learn some Spanish & Catalan words to communicate better, but the situation is improving a lot (there are thousands of American & British teachers in our schools).

Salaries? Lower than in UK and Germany. But the top companies are paying much more than traditional companies. Let's say that the idea is that you save the same money. A Senior dev can get paid between 40 and 60k in Madrid in one of the top startups + stock options.

Don't do freelancing with local clients. If you are into remote, that's the best way to save money. Remote for a US client and work from Spain.

If you are searching for a startup and Madrid is finally a good option for you, check ours https://ontruck.com/work-with-us/. We are around 40 employees, we have grown a lot () in one year and we have just been invested by Atomico and Idinvest https://techcrunch.com/2017/05/11/ontruck/. Our focus is Europe.

zmix 7 hours ago 1 reply      
I remember having read a forum post of a highly (!) gifted spanish programmer and engineer over at diyaudio.com, maybe ten years back. She was seeking for a job in her home and complained, that there is no place one with her talents could go, if interested in research. Admittedly, that was ten years ago, she was a hardware person (switching PSU design, etc.) and a systems, not a business, programmer.
scalesolved 5 hours ago 0 replies      
Hola! :)

I was in a very similar situation to yourself almost 5 years ago so I'll try and list some of my thoughts and experiences.

I was working as a backend developer in the UK, my girlfriend was off doing her masters and told me I should do something interesting with myself as I felt stagnant in the job I had at the time.

I'd always loved Spain and Catalunya so took the plunge to move out here, my girlfriend joined me and we've now spent almost 5 happy years about here in Barcelona.

Getting a job:

- I found interviews to be similar to interviews in the UK.

- Companies are much slower in getting back to you and moving you through their pipelines. One company came back to me 3 months after having offered me a job and wondering why I'd had to look for other options.

Working/Work environment:

- I joined a company of around 60 people, don't fool yourself that the work environment will be in English just because the interview was. I personally wanted to learn Spanish but it was still much tougher starting a job, a new life and a new language(s).

- While quality of life is better I'd say the work environment is tougher, people work hard and long hours here, at neither company I worked at did we do a standard 9-5. 9-7 was much more common with an hour for lunch.

- Management feels quite old school, they can be more rigid and traditional than say in the UK. Developers on the other hand feel ahead of the curve, there is more interest in side projects, new tech and trying out different skills.

- Salary is quite a lot lower, I took a 30% pay cut when I moved. I managed to get a couple of pay raises but the ceiling and cadence of raises is much lower. I'd attribute that to the more traditional management treating workers as equal resources and also that back then there were a lot of talented developers around (and less larger companies like King were in the area).

- Both companies I worked at worked in English official but in reality it was mainly Spanish, switching to English if there were non Spanish speakers present. I'd say having fluency is a huge huge boost to your career potential (and ability to make friends) :).

Quality of life:

Quality of life is great, a slower more family focused culture and a plethora of fun things to do within the city and surrounding areas. It really makes such a difference having nicer weather for both your mood but also ability to get out and do more sport or taking long Sunday walks (a great pastime here).

I think most people responding to you will rave about the quality of life (I'm one of them) but let me gave you some things that are tougher.

- If you want to learn and live in Spanish then you are best off in Madrid. Significantly less tourists and the use of just Spanish means immersion will be much quicker. Barcelona is great but due to having two official languages, a ton of tourists and foreigners means that a lot of people will fall into just speaking their native language anyway. You really need to make an effort to take classes, not switch to English and persevere. As my partner is also British we've had to make an extra effort as we speak English with each other.

- Making local friends is quite tough, all our friend are Spanish speakers from outside of Catalunya or South America. Locals are very friendly but they tend to have grown up with their friendship groups and it can be harder to integrate (doubly so as their are two languages and learning both to a good standard is tricky).

- Do not live anywhere near the center in Barcelona, tourists invade the city and really make it quite unpleasant. House prices are also rocketing for renting at the moment.

I now work remotely for a US company as it seems the best of both worlds, I love living here, the people,culture,food and weather all combine to make me happier. If you are serious about taking the plunge I'd look ASAP for a Spanish teacher, it'll be the best investment you'll make! Best of luck!

harperlee 7 hours ago 1 reply      
Tech salaries in Spain are not higher than for other sectors, as the tech sector is still very small, and most jobs are inside "cost centers" of other companies (banks, telcos, etc.).A typical (good!) staring salary would be 25k for Madrid or 20k for Barcelona. In contrast you'd see 40k in Paris or Berlin for a similar job. It's typical to have 14 monthly payments (with extra payment in July/August and Christmas), so that ends up being around 1200 euros net per month.

Quality of life is great, though, and not so expensive. The Lancet recently [1] put Spain's healthcare as 8th in the world, food is great, the social scene is very open to foreigners, climate is better than in northern europe, etc.

The worse part of your expenses in either Madrid or Barcelona will be renting an apartment, as prices are rising quickly (after the financial crisis, housing plummeted, so construction stopped. But now everyone with some extra cash is buying apartments for renting them, and there's extra pressure to make them a worthwhile investment).

Spain's economy is divided in tiny companies (PYMES), and huge companies. We lack a lot of medium sized companies such as the german mittelstands, and it shows on job mobility and opportunities. Compounding this with a small tech scene, it might be hard to find a job opportunity. But tech is growing quickly, as others have mentioned.

If you are functional in spanish, it shouldn't be a problem, but mind that spaniards are not so used to working with other nationalities, so you will be somewhat "exotic" and you will get a mild joke from time to time. You might find some "inferiority complex", particularly if you are german/french/american, as Spain has traditionally looked abroad for innovation and modernity references (famously pictured by Unamuno and his "Que inventen ellos" quote [2]).

The contracting area is dismal. Most of autonomos are either micropymes or false autonomos, actually working for one huge company, with total dependence and a huge risk, without the normal employee rights and securities. Spain is not accustomed to paying fair prices for contract work. And outside the tech scene, there will be often requests for working for free (typical for design or copy work), or without paying taxes ("cobrar en B").

On the Madrid vs. Barcelona topic I'm of course biased, being from Madrid, but I find that foreigners are initially much more familiar with Barcelona, and they overlook Madrid. Madrid is great! And more objectively: it is bigger, with more opportunities, without language problems (catalan might be an issue from time to time, mostly if you are still learning spanish, but you will also find people from time to time that refuse to speak spanish for political reasons), and with less tourists yet more foreigners (you will not be treated so much as a cash-cow tourist, as some of my friends have suffered a couple of times in Barcelona).

Overall, I'd say you can live very well in Spain, but it is not the place if you seek big career opportunities. Of course all of this is a HUGE simplification, and you can find excellent opportunities in Spain, and shitty opportunities elsewhere. I personally have a lot of french friends working in Madrid with excellent jobs and adamant on staying for the rest of their lives. And all of what I said is improving quickly; Spain got a really big economic push when entering the euro, and although the crisis stuck VERY hard, we are recovering and accelerating a lot!

[1] http://www.thelancet.com/journals/lancet/article/PIIS0140-67...[2] (spanish) https://blogs.iadb.org/puntossobrelai/2016/06/06/que-invente...

ifrins 8 hours ago 0 replies      
Barcelona local here. I don't think that you need Spanish fluency to get into most of the tech jobs. There are many startups whose founders or most of the team aren't locals.
bryanh 3 hours ago 0 replies      
Definitely look into 100% remote tech companies as well.
bogomipz 7 hours ago 0 replies      
Is the pay cut equivalent to the difference between London/S.F tech salaries and Berlin or would it be even more drastic?
no1youknowz 8 hours ago 2 replies      
> considering moving to Spain for non-career-related reasons

Which are? Genuinely interested why someone would consider taking a huge cut in salary.

Instead of moving now. Why not slash your current expenses to the bone? Save like crazy for a year, then move with a nice bank balance and ease yourself into the country without the stresses of quickly learning the language, making good friends, networking, etc.

Even better, with a healthy bank balance. You could find out what is missing from the tech scene and create a start-up to fill it.

qmc666 1 hour ago 0 replies      
hi. i work in BCN in one of those companies some people mentioned. some notes:

1. if your company is big and international you won't need to be super fluent in spanish. the city has plenty of expats so you spanish/catalan is as needed in barcelona as german is in munich (i lived in munich as well). you say you're functional, that's enough for now, you'll figure it out once you're here. if the company is "a startup" then it's a lottery, but most likely more than half of the people will be spanish speakers with some english fluency. they will all speak it but they'll often speak to each other. this is something that happens in my company on a daily basis.2. salaries are an odd topic. i can't compare to the US because i have no idea what people do with money there, but in terms of an average techie lifestyle i can say that barcelona and london aren't very different on a net level. you might get (unlikely) 90k in london for a senior dev position, and this is factually not much different from 60k in barcelona since most of the fixed costs (rent, public transport) are half the price. 55-60k for a senior dev position is possible (trust me) but not in a startup, unless you manage to snitch a lead position, which might happen. i've seen people moving out of normal position (not entry, not senior) and becoming leads in startups.3. the comparison was just with london but the same applies to paris. it probably doesn't apply to berlin since berlin has high-ish salaries (comparatively) and low rents, but it has its disadvantages.4. even if 2. and 3. don't apply i.e. you still are worse off on a net scale (after rent, tax, etc.), barcelona has its perks over london and, for my experience, munich. these are entirely subjective but if having a terrace with a hammock you can float in december with a hoodie drinking cocktails sounds like a nice idea to you, then surely you can't do that in paris or london. food is also a plus, and not great to say that out loud but since the expat scene is a bit of a bubble and the locals have slightly different lifestyles you might easily find yourself in authentic gems (restaurants, bars) you don't need to queue for hours to get in.

having said that, here's a few cons:* the tech scene isn't great. if you hate your new job you might have to relocate or search for something which is "alright" but not great. things are getting way better than even just 3 years ago but barcelona ain't no london.* if you're looking for 100k barcelona isn't for you* if you end up in an old-style spanish company (god forbid) you'll find out that the traditional mediterranean working culture is madness (compared to, say, germany or sweden). if you come from "strict schedules", "insane hierarchies", "little meritocracy" etc. then it's probably comparable. newer companies (spanish/catalan too) are much better so it's not a matter of genetics (obviously, just in case somebody thinks i'm a huge racist), rather, inefficient traditions* there are virtually no parks compared to even paris* house prices are very random and estate agents are a laugh. i found a very nice loft which was very close to a club. i told the guy "well i'd like to figure out how noisy this gets" and i'm pretty sure his idea of "figuring out" was renting it and spinning the wheel. if you come at the right moment you might find an 80sqm flat for 1200. if you're unlucky you might pay 1900.

i hope this is clear enough :)

BCNative 8 hours ago 2 replies      
Any advice on donating programming skills?
8 points by ra_ra_robyn  2 hours ago   4 comments top 3
drallison 1 hour ago 1 reply      
There are numerous issues that need to be considered.

If you are employed, what disclosures do you need to provide to your employer? What disclosures do you need to provide to the folks you are helping? Check your contractual relationships for possible conflicts. Get written riders to contracts as needed.

Will you treat your programming as an "in-kind donation" for tax purposes? If so, you should check with your tax professional to find out exactly what is needed.

What will be the intellectual property status of what you create? If you are creating code or compiling data, who owns the results of your effort? If you are working as part of a large multi-participant project there needs to be a work-for-hire agreement for all concerned.

As with any project, you need to have a plan and execute to the plan but provide a way to adapt the plan as situations change. It is usually smart to define how decisions get made and who is responsible.

Finally, you need to consider what happens when the project is in production. How do bugs get fixed? Who is responsible for maintenance? Will you be supporting your creation forever?

tedmiston 1 hour ago 0 replies      
One alternative to donating programming skills to other people's problems is to donate your time to teaching programming through organizations like Girl Develop It.
ndc33 37 minutes ago 0 replies      
just join kde, its a huge umbrella organisation. kmail and akonadi need some serious code love :)
Ask HN: Which closed-source software would you most like to see the code for?
7 points by rxlim  5 hours ago   8 comments top 6
toomuchtodo 31 minutes ago 1 reply      
- US air traffic control software

- Software that drives the NYSE and NASDAQ

- SpaceX vehicle controller (primarily what calculates the boostback trajectory on the fly)

Disclaimer: Please lawd don't let this put my on a watch list.

futhey 36 minutes ago 0 replies      
Early versions of Google would be interesting to see (would be interesting to look at parts of a version of the engine that are still small enough to reason about).
whyagaindavid 25 minutes ago 0 replies      
XP. Would love if somebody continued development in open way!
violinist 1 hour ago 0 replies      
Visual studio. I've heard that its design is beautiful and I think I'd learn a lot reading it.
saimiam 1 hour ago 1 reply      
Off topic but it's heartening to me that after 3 hours, this thread has no replies. To me, this could be because of two reasons -

1. People believe most of their favorite softwares are already open source OR2. They don't think highly enough of closed source softwares to want to know their internals

HaoZeke 1 hour ago 0 replies      
Matlab of course.
Ask HN: What do want to see in programming language?
5 points by mubaris  4 hours ago   8 comments top 4
andreasgonewild 4 hours ago 0 replies      
I would like a C++ without the spider webs. Not different, we have plenty of different languages out there; I have no interest in debugging other peoples fancy ideas. I just want a powerful language that lets me say what I mean without keeping 30 years of accumulated exceptions in mind.
dkersten 1 hour ago 0 replies      
A statically typed, native-compiled clojure. That is, a statically typed, native-compiled lisp with a focus on functional programming, immutable data-structures by default, the sequence abstraction and other clojure-isms (protocls, transducers, core.async)
drallison 2 hours ago 0 replies      
Programming languages are exceptionally difficult to design. Most "new" programming languages end up looking a lot like the "old" programming languages but with a slightly different set of warts.

Programming language design is distinctly different from programming language implementation and distinctly different from program optimization. A programming language designer need to have experience and skills in implementation and in optimization. Optimization is important because it assists in understanding the underlying concepts that need to be supported by a programming language.

Brian Kernighan, Jon Bentley, and others have long advocated for designing and implementing little languages, small domain-specific languages to solve a limited class of problems using "natural" abstractions, operations, and data. The Unix pic language is a classic example. Read the literature about "little languages"; Google is your friend. See, for example, http://broadcast.oreilly.com/2009/04/an-interview-with-brian... to learn about little languages.

What I would like to see is for you to learn about programming languages and their implementation before you rush off to design one. You might design, implement, and use a little language for a class of problems you encounter in a domain in which you work regularly. Use it to improve your productivity. Share the language with others who have the same problems to solve. Get their suggestions and feedback and incorporate them into your language system and repeat. That is likely to give you joy.

Designing a programming language is just the beginning. If your language is to have legs, you need to ensure that there are readily available implementations with libraries and operating system support for your language. You need to write papers and manuals and promote your language actively. And you need to be patient since adoption of a new programming language takes decades. And you need to be aware that language choices are often fickle.

If your goal is to eventually devise a new general purpose programming language, you need to program a lot of different problems in a multiplicity of languages and styles in order to understand what languages need. Asking HN is likely to be a sub-optimal strategy because most folks who read HN tend to conceive their problems and programs in terms of mechanisms and abstractions in existing languages.

You might want to look at the evolution of particular programming languages and the conceptual problem solution frameworks they express. Do this for several different language styles: procedural, functional, distributed actors. For example, I think the evolution of Python (including Lua and Ruby) contrasted with Perl would be quite educational.

Also, I would be cautious about trying to be different for the sole purpose of being different. Our current programming languages encapsulate years of experience and scar tissue which needs to be retained.

dozzie 4 hours ago 1 reply      
A specific purpose. What are you aiming with your programming language at?Only to be different?
Ask HN: How do you close your side projects?
84 points by andrewgrossi  18 hours ago   28 comments top 17
Cyphase 15 hours ago 1 reply      
> and then purging the content such as code, mockups, assets, etc.

Why? I would never destroy anything I'd created like that. Unless you're doing it for some sort of closure, the way people throw things into the ocean in books and movies, I don't see the benefit. On the con side, you never know when you might start it back up, or just have some use for it. More than once I've gone back to a project I hadn't touched in years and either used it again (e.g. a "one-off" utility script), or just copied pieces of it to use in something current.

I think open sourcing something you're done with (that wasn't already open source) is a great idea in general.

MaulingMonkey 11 hours ago 1 reply      
My original method was to just move my project to I:\home\projects\dead.

After accumulating a few hundred of these, I started going back and reviewing what I'd accumulated - a short one-line description, and a screenshots folder, following a naming convention under a ".projnfo" folder (description.txt, visibility.txt, screenshots\*.png, etc.), with a quick program to accumulate these into a single HTML page overview. My latest iteration of this actually adds shortcut links to launch VS, git shells, etc. and dynamically updates, but ditched the screenshots (for now): http://i.imgur.com/gbj1Cr5.png . I keep telling myself I'll eventually spin off a public version of that page, but so far I haven't. But a common goal: Make it absolutely trivial/low friction to give something a quick summary.

Most recently, I'm now also trying to embrace the idea of "always be shipped (tm)" as a means of combating my tendency to get hung up on perfectionism - in the most extreme form, this means a public github project and an empty initial commit is my first push, the second commit maybe adds something that's actually usable, and the third commit is a .nuspec so I can package it and reuse it at a whim (completely ignoring the question of if it's even worth reusing.) This also encourages me to pick up an old project against instead of rewriting a whole "new and improved" version - easier to just fix the old one than go through all the effort of .nuspec s and new github projects etc etc etc... and in this state, "closing" a project is a simple matter of no longer committing to it. No cleanup necessary before making it public - it already was public!

I still have some projects that I never make public, or only make a github page public for though.

nfriedly 7 hours ago 0 replies      
I usually push things to GitHub. When I replace my laptop every 3-5 years, I'll download the things I want to work on and leave the rest.

I also try to always put up a paragraph or two and maybe a screenshot on nfriedly.com/portfolio.

My projects are rarely "done", but "good enough to include in my portfolio" is a major milestone that often coincides with when I stop working on it so much.

amenghra 14 hours ago 0 replies      
For code: create a readme (for your future self) that documents the state of things and dump the whole folder/project on github.

Often times, you'll have a hard time running old stuff you wrote (finding the same versions of the compiler/libraries/tools/etc.) so try to vendor your dependencies if that's an option. Even if you can't run your code down there road, having the source file can be a fun read or useful.

For non-code stuff: convert to a plain file, PDF or screenshot and file it away in your Dropbox/Google drive/whatever.

chvid 13 hours ago 1 reply      
It takes work to prevent things not just die due to oblivion and inactivity.

I had a bunch of Java applet computer games that ran for more than a decade but eventually were killed by applets becoming obsolete.

I ended doing the following:

1. Putting all code on github.

2. Making a series of youtube videos of the gameplay.

3. Writing a blog post.

Obviously this was a lot of work; but so was creating the games.

It felt good doing the "archive" of them even though no one else cares. I suppose it is a bit organising a box of old photos; makes you think about what you have been doing.

everdev 14 hours ago 0 replies      
Keep all the code, mockups, assets, etc. Running a web dev/design shop for 6 years, many clients have come back even years later asking for a specific file, or a small variation in an old asset. I kept the code on GitHub and the assets on Google Drive. If you want to delete things, send the client the .zip archive first so the ball is in their court when they need something from the past. I didn't put too much value in post mortems or recaps.
cyberferret 14 hours ago 0 replies      
I am a digital hoarder... I have folders on my hard drive with stuff I created 25 years ago still on there... AND backed up on multiple cloud locations too!
xena 15 hours ago 1 reply      
I personally have a repo full of old code and move projects there once I'm done with them: https://github.com/Xe/code
stewbrew 14 hours ago 1 reply      
I like the idea of creating a memorial blog post.

I don't understand though why you mention "open source" as a method. Although some people do this, I don't think github etc. should become graveyards of abandoned projects. Open source should rather be a method of developing a project. (When you're done with it put a note at the top of your README.)

WRT to (digital) archiving etc., I'd like to take a slightly different take on that topic: Every project is of limited interest. Sooner or later your interest will wane. Let's organize projects (or rather their digital artifacts) in a way that incorporates this fact. E.g. put all files related to project X, you created this year, into "Projects/2017/X" and create a symlink to that folder in "Projects/now", where you keep your references to projects that you're working on now. No need to archive anything later on. Just remove the symlink.

penagwin 3 hours ago 0 replies      
I zip it up (makes it easy to manage, especially with node.js) and throw it onto my backup server (With mirroring to B2).
rythie 9 hours ago 0 replies      
Do film directors delete their old films?Musicians delete their old music?Photographers delete their old photos?Why would you delete your old code?
Falkon1313 15 hours ago 0 replies      
I don't. Mine just lapse into torpor, sometimes indefinitely, but more often I end up cycling back when my interests cycle back around to whatever they were about. They seem to be roughly seasonal. So if I look at created/modified dates on one of my old unfinished projects I'll see something like:

file_a 2014-05-04

file_b 2015-04-17

file_c 2016-03-23

Clearly that's something that my mind gets interested in around springtime (for no consciously apparent reason). I wrote it in one language in 2014, redesigned it in 2015, and rewrote it in a different language last year. Who knows what I'll do with it this year or next?

I don't purge because I know I'm likely to want to take it up again, or at least pluck part of it out to use in something new.

tracker1 5 hours ago 0 replies      
Depends on the situation, but generally some fairly bad ideas... "node.js left-pad" and "Mark Pilgrim 410"
Walkman 10 hours ago 0 replies      
I don't understand why should you delete any piece of your work. Disk is so cheap you can keep it forewer.
strin 13 hours ago 0 replies      
I put code, data and other files on trusted cloud services like Dropbox or Google Drive. I also make a copy on a external hard drive in case any of these cloud services go down one day. A README.md is the essential index to organize the files.
pieterhg 7 hours ago 0 replies      
I keep the landing page up but show an alert that the project is discontinued.
exception_e 15 hours ago 0 replies      
Archive folder works. Disc space is cheap and plentiful!
Ask HN: Which MOOCs are often overlooked?
41 points by jmstfv  23 hours ago   10 comments top 6
DanBC 11 hours ago 1 reply      
Citizen Maths: https://www.citizenmaths.com/

> Citizen Maths is for people who want to improve their grasp of maths, and become more confident in using maths at work and in life. Maths may have passed you by at school. Or you may be rusty. Maybe youve passed maths exams but find it hard to apply what you know to the types of problem you need to solve now. Problems like using spreadsheets, judging amounts or assessing odds.

> If so, then Citizen Maths may be for you.

> The course is at 'Level 2' the level that a 16-year-old school leaver is expected to achieve in maths.

It's from the UK.

macp 16 hours ago 0 replies      
For entrepreneurship, I would recommend: (a) Technology Entrepreneurship, and (b) Venture Deals with Brad Feld -- both are team and project-based experiential courses offered via novoed.

Technology Entrepreneurship is focused on the lean startup. The next session is expected around June.

Venture Deals is sponsored by Kauffman Fellows Academy and TechStars and is all about funding. A new offering just started and you can still join at https://app.novoed.com/kfa-venture-deals-spring17/

adamb_ 15 hours ago 1 reply      
eps 12 hours ago 0 replies      
Apparently, MOOC is a "massive open online course."
JPLeRouzic 12 hours ago 1 reply      
For me, MOOC were initially a bet that the way we work, would shift from the classical way where you are employed for years at the same place, to a gig economy.The reasoning goes like that: If you spend only a short time with employers, then you do no need to waste long time in universities. On contrary you could take a quick course on the needed subject and would prove your fitness to a job by other means (Github/Hackaday/...)

Unfortunately all classical long term jobs will not disappear overnight, companies are social constructs because they have customers that are human, they need people they can trust.In addition, the gig economy had frightened many so many people, that they thought that having a university degree is the best way to escape it. So much for the MOOCs.

I think that as usual (and as Paul Graham said in 2012) universities will be challenged by new comers, but for me it will not be MOOCs. Universities are becoming more and more commodities (as reported in another HN discussion which says that the average IQ of the increasing masses going to university, is diminishing simply as the result of the IQ distribution law). Employers will trust them less and less to select the best individuals.

This is not new, I remember during the mid 90', there was a recruiting crisis, there was not enough people mastering the C language, the answer was not to make everybody to learn it, it was to invent new languages (Java/PHP/Python) that were much less demanding and also new tooling (IDE) making it possible for less gifted but more numerous people to enter this industry.

So the next thing will not be MOOCs or more people to universities, but tooling like DARPA's AIDA [0] applied to science.On a lesser scale, tooling like Galaxy[1] in biology, are excellent steps in the right direction.

There are many benefits for the society at large to create tools to plan, assist, track and audit the intellectual processes, the science replication crisis is a good example.

[0] https://padiracinnovation.org/2017/04/07/362/

[1] https://en.wikipedia.org/wiki/Galaxy_(computational_biology)

Ask HN: In the next 5 years which markets will grow the most and why?
46 points by zongitsrinzler  1 day ago   65 comments top 27
crypticlizard 1 minute ago 0 replies      
Timescales are hard but...Ai will do mostly all of it and humans are being factored out. Humans will need not apply for real work, fake work could proliferate. Automation vertically integrated into robotic systems will prevail in mostly all sectors... Embodied AGI will autonomously operate under duress, capable of or superior to humans at warfare. This is already normal today to a lesser extent, but not publicly claimed by anyone. I believe this is so because a soldier never reveals his position. Superior Industries could be: computer hacking using AI, computers being used in new ways on a mass scale, super computer quantum computing, nanotechnology, organ replacement, DNA therapies, automated field doctors, 3d PTSD therapy machines, data thievery & recovery using AI. AI will cause crime sprees as new exploits using AI trump non-AI systems. Also, People plugging their brains into computers makes sense bc then we achieve intelligence upgrades.3d printers that print anything fast. Lifelong AI Buddies/monitors. Nostalgia Industries as old people feel really out of touch with the modern world. Propaganda and fake news bc they will be more effectively convincing bc AI. As AI really starts to prove itself superior People will question everything. Maybe we will want to colonize Mars bc it will make humans feel not obsolete. Who knows.
Mz 1 day ago 1 reply      
Most people are terrible at predicting the future in this way. Some of the most accurate predictions sound like (or are) jokes at the time, like when JK Rowling was writing her first book as basically a "welfare mom." She did a lot of the writing while her baby napped at some eatery owned by friends/relatives. She would make jokes to the effect of "When my book gets famous, it will put your place on the map!" That basically all came true, from the book being famous to it making the place she wrote it famous too.

But when you go back historically, predictions of what life would be like "now" all left out the world changing invention of computers and internet.

There is a scene in the movie "The Graduate" where he is at a party and everyone is telling him what he should go into as his career because it will be big in the future. One person tells him "Plastics!" This was a joke at the time, a ridiculous statement. Years later, the plastics industry used that bit in a TV commercial.

If you really, sincerely believe "The Future is all about X industry," you aren't telling people that on the internet. You are quietly behind the scenes buying more shares in X or getting training to work in X or otherwise trying to make sure you are the firstest with the mostest in X.

chauhankiran 1 day ago 1 reply      
I personally think the market of add-on or web browser's extension.

Why? Because, web browser is second most software used after operating system by a normal computer users. If you are developer you use editor and web browser, if you are writer you use world processor and web browser, if you are market person you use trading software and web browser and so on. I mean web browser is something used by everyone.

We have written applications ( for computer and mobile device ) for most useful sotware - operating system to reach out our users. Now, it is time to target next software used by everyone. You might create a website but it will only be there until user do not close that tab. But, with extension, you will be in constant connection with user.

Currently thid market is uder estimate as many developer consider that it is not something that consider as programming. But, I think every website specific limit to connect users. and at that situation, add-ons will come to rescue.

tonyedgecombe 1 hour ago 0 replies      
Anything to do with mitigating climate change, clearly we aren't going to do anything significant to stop it.
pdog 1 day ago 2 replies      
Blockchain and cryptocoin markets will probably grow the most in the next five years.

The total market cap for cryptocoins will grow from $50 billion today to $1+ trillion in the future.

sonink 1 day ago 2 replies      
India. Because it will go from 100mn internet users to 1200 mn, enabled by a massive 4G/fiber deployment currently underway.
stock_toaster 1 day ago 1 reply      
Healthcare. Because a large portion of the population in the west (baby boomer generation) is getting older.
BatFastard 1 day ago 1 reply      
AI in all its guises, such as self driving cars, virtual assistants like Alexa, Siri, etc.

Augmented Reality, I would suspect in a year or two we will have the first successful product.

Services and entertainment for aging populations.

Real estate auction services, Trump is going to have to sell of a lot after going to prison.

zackmorris 22 hours ago 0 replies      
Wrote a whole long response beginning with "my gut feeling is that markets are driven as much by politics as technology so Hacker News may not be the place to ask." Then said, man, that sucks.

I'm hoping for a market to end all markets, where the product is money. You sign up with a company, it pays you. All anyone wants is cheap, cheaper, free. Getting paid tops that.

So maybe solar panels are just getting competitive, but getting paid to put them on your roof, that's hot.

Turo is hot.

Universal basic income is hot. Maybe politicians don't have the imagination to make it happen, but we do. Secretly every employee in the world yearns to load the part of their job that even a monkey could do into a spreadsheet, go home, and still get paid. Given the permission to automate our own jobs, well do it gladly and in large numbers. The only thing stopping us is really really, ridiculously rich people, and people with no imagination. Somehow we have to find a way to pay them as well, and keep paying them, no matter how much they dont want to get paid.

clio 22 hours ago 1 reply      
The atheist generation will have grown up and begin to look for someone to tell them everything will be okay. It's a good opportunity to start a new religion.

Also, some form of artificial companionship.

beagle3 1 day ago 1 reply      
Person tracking.

We're going through something similar to the industrial revolution, lots of people will lose their job to AI (or still be employed, but with significantly lower wages - even previously untouchable professions like lawyers, doctors and programmers).

To avoid riots, these people will be fed either through existing welfare programs or new basic-income style ones. But the old guard will want to make sure they don't blow their money on hookers and blow and booze, so anyone who peddles "here's how we can figure out which of the welfare recipients is non-compliant with their spending habits" is going to make a killing.

Sad, but inevitable in the current political climate.

espitia 1 day ago 0 replies      
The medical cannabis industry! - Science: as we pass the obstacles of regulation, more studies will be able to confirm (hopefully) what we suspect so far.- Zeitgeist of our times is "going green".- Damaged image of big pharma.
tyingq 1 day ago 2 replies      
Low cost cloud providers. No idea why there's not a low cost competitor to AWS, GCE, and Azure. And I don't mean just a VPS. Full service cloud with equivalents for EC2, ELB, S3, Lambda, etc.
dominotw 1 day ago 0 replies      
a reaction to technology overreach in ours lives. People are sick of their phones, laptops, sleep tracking, social media. We want to reclaim our mind back. There is place in LA that does Buddhist retreat where you sit in silence for 1 week, its booked 8 months in advance.
richardw 7 hours ago 1 reply      
VR. People living in a place/time/body they physically aren't. When I'm old I'd like to VR to all the places I missed out on visiting because I was working too hard. I won't be alone.
ParameterOne 18 hours ago 0 replies      
Indexing. Who needs Google when you have your own index? And I don't know about you but I can't get passed 16 pages of search results on google even though it has billions of results for the search term "contact us" (have it set to 50 per page)
westoque 1 day ago 4 replies      

Have you sent someone money internationally before? How about across different banks? Typical transfers process at around 3-5 days. With the help of cryptocurrencies like Ripple, Steller and the like. Transfers happen in seconds. This will grow because now, banks will utilize this technology to get rid of the old one (Swift anyone?) and will save banks lots of time and money.

avaer 1 day ago 1 reply      
Some mode of online social interaction that seems ridiculous now but will seem obvious in retrospect. This will be milked for ads and acquired by a big player while me-toos nibble the ends in the aftermath.

The market will grow from zero to millions in this time, but it will be entirely consumed by one of the big five and everyone will just think of it as a Google feature or something.

id122015 1 day ago 1 reply      
There will be war. Anything that will protect us will do.
Existenceblinks 1 day ago 0 replies      
1) Weapon. Because of War.2) Entertainment. Because of Pain.
AznHisoka 1 day ago 0 replies      
carpal tunnel syndrome specialists.
WalterBright 1 day ago 0 replies      
Health care. The boomers are entering their prime health care spending years, and Obamacare will engender huge industry profits from "spend all you want - someone else will pay the bill!".
nugget 23 hours ago 0 replies      
Support for trade schools and skilled vocational pathways (and vocational entrepreneurship) in place of four year university education for all.
olalonde 1 day ago 0 replies      
Not a market per se, but there seems to be a lot of low hanging fruits related to machine learning.
atroll 1 day ago 0 replies      
im betting my pennies on real estate
NoCanDo 1 day ago 1 reply      
AI, because everything and their grandma needs to be smart.
iamacynic 1 day ago 1 reply      
my three guesses (my company is in 1 of these areas):

consumer internet privacy and security (think barracuda for the home market -- above and beyond a standard router/firewall possibly with active L7 features)

consumer and enterprise storage management (they literally can't even make enough ssd's right now, people and companies are hoarding data and can't manage it effectively or reliably)

rural and wilderness area wireless internet (people will start moving out of cities again and will want the same > 50 megabit low latency service).

Ask HN: How do you organize and store your notes?
32 points by robschia  23 hours ago   32 comments top 26
Top19 19 hours ago 1 reply      
For everyone using OneNote I'd like to make the comment that there are actually 2 versions of OneNote that Microsoft makes. There is "OneNote" and "OneNote 2016". Windows has both versions while your phone and Mac has only the lesser featured but more modern looking "OneNote".

Personally, I got a Parallels VM running on my Mac with Windows just so I could use "OneNote 2016". Many more features including deeper organization and custom tags.

In general, as long as you plan it out properly, hierarchical organization tends to be superior to tag based organization, and "OneNote 2016" (and even the other version) are really good at hierarchical organization compared to say Evernote.

bigzen 17 hours ago 1 reply      
Org-Mode is great but not perfect. I would be willing to pay a significant amount of money for anyone that can reproduce most of the features of org-mode outside of emacs in a light-weight format.

It doesn't seem like it would be that difficult but it hasn't happened yet. People seem to start replicating org-mode, realize how many complex features there are and give fall off before completion.


cJ0th 3 hours ago 0 replies      
A mixture of things. From the top of my head:Folders of plain text files, mindmaps, paper

Having said this, the actual challenge for me lies in deciding what notes are actually worth storing. I recently browsed through the hard drive of on old laptop and was astonished to find out how maybe 95% of the notes were completely pointless. I guess a good deal of notes are only important the moment you are writing them down (to make something clear to yourself). In other words, much could have been written directly into /dev/null.

goldrake 11 hours ago 1 reply      
I use org-mode (in spacemacs), folder synchronized on some cloud, private notes GPG encrypted. For me it's more than perfect. I always find what I am looking for immediately, org-mode is useful in lots of other use cases, emacs has been around for a long time and I trust will stay for the rest of my life...
btgeekboy 12 hours ago 0 replies      
Quiver (macOS) is my go-to. It works a lot like basic Evernote functionality but stores everything in readable, text files in a JSON format. You can commit them to a git repo, read them over a network, sync them with DropBox/SyncThing/etc, and so on. It's relatively cheap too @ (iirc) $10. I have no affiliation to them; I just like the product.

There's also an iOS client being worked on as well.


pfranz 15 hours ago 0 replies      
I used to use Evernote, but it just go so slow, seems like a larger app than necessary, and had a bunch of functionality I didn't use get in my way.

I tried OneNote, but it didn't stick.

I've been using Bear (Mac platforms only) and have really liked it so far. Free to use, syncing is $1.50/mo. Evernote migration worked pretty well for me.



DylanFuery 21 hours ago 1 reply      
Notational Velocity on the Mac, even if it isn't updated it still quickly stores and organizes (good for rough or final works). I'll use TextEdit or iA Writer if I need to actually work with the note or to publish. Sadly at least once a month I still need to use Office for Mac for something.

I don't personally have a need to save or insert data, images, or other content. If I really need to I'll insert the online URL or the location on my server in the note. Which makes a basic solution the best solution for me.

I also use iA Writer on my iPhone synced with iCloud for on the go access, and writing *nothing personal/private for security, secure notes are encrypted and accessed online or I use a physical air gap between machines I need it on.

mzehrer 12 hours ago 1 reply      
For me vimwiki [https://github.com/vimwiki/vimwiki] is good enough, here is a nice overview: https://www.dailydrip.com/blog/vimwiki
mattbgates 12 hours ago 0 replies      
I created a web app to do this for me, including the ability to save the posts I created. I wanted something that would allow me to create even more than notes, and allow for HTML and CSS. I created https://mypost.io.

Officially: MyPost is your post, your content. Create beautiful web pages in minutes for free. Whether you know how to code or don't know how to code at all, MyPost is for you. The combination of HTML, BBCode, and various font icons will allow you to write professional and personal posts in no time. No experience necessary!

I shared it with the world... and people have taken a liking to it and found their own uses for it too. Completely free. If you decide to experiment.. hopefully you find a purpose for it.

andrewgrossi 18 hours ago 0 replies      
WORK: I dont a defined organizational system since it hasn't provided value for me, but my general guideline is to store the notes nearby the context of the associated topic. This can be in project file folder, on a white board, or in a collaboration tool wiki. my formats are usually txt files, email, paper (notebook, paper), or onenote. Often times I will write a note on a scrap piece of paper just to remember a topic better.

PERSONAL - I also always switch but Evernote has worked for the last year. here is my sample setup (although I do not swear by it similar to my work structure). I dont like post-it notes near my home rig ; ). Here is a snapshot: https://www.dropbox.com/s/tlnzut54agbycnh/notes_screenshot_f...

Falkon1313 15 hours ago 0 replies      
I use a mixture of Zim Wiki for personal stuff, Dokuwiki (the portable wiki on a stick install) for my own work-related stuff, and Confluence wiki for work-related stuff shared with the team.

I just find that the wiki format works really well for me.

mobitar 14 hours ago 0 replies      
Standard Notes. Simple and encrypted. Available on every platform. Markdown and code editors, as well as custom themes.


VladimirGolovin 14 hours ago 0 replies      
Personal: Evernote, as a big dump of things I may need in the future. I don't use tags, but when adding a note I try to include meaningful keywords which I think the future me may use to find the note.

Work / Projects: Workflowy. Each project gets a dedicated top-level folder in my Workflowy account, and under that are the (Diary) folder for chronological records, and various non-chronological / accumulation folders for things like (Site), (Marketing), etc.

sirrele 22 hours ago 0 replies      
I use OneNote! It's probably the only Microsoft software that I use, but its amazing. You are able to create Notebooks, that contain section-groups, sections, and pages. You can draw, record, paste, etc.


rwieruch 10 hours ago 0 replies      
- Clear https://itunes.apple.com/us/app/clear-tasks-reminders-to-do-...

- Sublime Editor + Markdown + (private) GitHub repository

meitham 13 hours ago 0 replies      
I write my notes in restructuredtext, and have them version controlled in. GitRepo. Spacemacs support for restructuredtext is as good as vim's. I can also edit my notes from the Web editor offered in GitLab, or GitHub.
DebasishPanda 10 hours ago 0 replies      
For small notes I use Apple Notes app. Intentionally I don't keep too many notes in it.

Some larger ones graduate into a .txt file which go into a iCloud folder.

iEchoic 13 hours ago 0 replies      
I've been using Todoist. Now that I'm good with the keyboard shortcuts (including the quick-add from the desktop app), I find it to be a lot more effective than Evernote or OneNote was.
gonvaled 12 hours ago 0 replies      
Org mode, in git repo. Can be exported as blog, but I mostly do not care, since I am usually at my desk.

I push the repo to a server I own on the net. If it has secrets, I gitencypt it.

davidchua 16 hours ago 0 replies      
I'm starting to use Gitbook and Gitbook-Editor for my personal notes. Love the Editor's UI and the fact that I can keep it in my private repository is also pretty nifty.

I'm curious to hear what's everyone's workflow

jbpetersen 13 hours ago 0 replies      
A journal made up of both digital logs and a physical notepad, a graph of associations between things, and a wiki for deeper details on specific topics.
kradem 20 hours ago 0 replies      
Mindly software's "bubble" on smartphone and TODO, NOTE, ..., in editor if they can't be immediately digested by Trac's ticket or wiki page.

If it's valuable it would end up as git committed record in sqlite Trac database, and simply erased if not.

oxplot 11 hours ago 0 replies      
Google Keep:

- simple interface

- can access it on multiple devices

- shareable

- can set time/location reminder

- can pin/set color+picture for each note

- checklist, audio note, etc.

MiddleEndian 17 hours ago 0 replies      
At work I log my activities and notes on an incredibly long text file.

For other notes I just email myself. I like email as a format. It's accessible on all platforms.

pcr0 16 hours ago 1 reply      
Google Keep. It lacks formatting, but it's readily available on all platforms.
chauhankiran 9 hours ago 0 replies      
Dropbox's Paper
Ask HN: How can I do social good through programming?
444 points by simplicitea  2 days ago   368 comments top 123
peacetreefrog 2 days ago 14 replies      
Just read all the top line comments here. Interesting that no one had mentioned the one thing that has probably done the most to "better our chances as species" in the last few hundred years, and has helped hundreds of millions in India and China get out of backbreaking poverty and accumulate some wealth. And that is...

Work hard, accumulate skills, and become better at your normal job. Even if you're not writing open source software to help local governments in third world countries have free elections and fight malaria or donating 50% of your salary, you're creating value and "bettering our species" just by doing something that someone is willing to pay you for. In fact, that's how most of the world's wealth is created.

Not saying you shouldn't volunteer or donate your salary (I personally try to donate a decent chunk of my salary to givedirectly) but -- unless you're a nigerian hacker or malware developer or something -- just because you're getting paid or working on something that isn't an absolute necessity doesn't mean you aren't doing social good. Just something to think about.

ajdecon 2 days ago 3 replies      
Honestly, I think the most effective thing to do is find an organization doing social good, who is hiring programmers, and go work for them. There are plenty of non-profits and governments that do a ton of good, and employ developers to work on their web sites and infrastructures. A good friend of mine is a developer for the ACLU, for example.

There are also organizations like Code for America that do open source work with local governments. Since those projects are open source, you could probably volunteer your time and contribute to those. Or simply volunteer in a non-developer capacity! :)

Doing actual social good -- helping people in ways that will actually solve their problems, understanding the consequences of changing their lives -- requires a ton of context and communication. I think it's very, very difficult to do so without either dedicating most of your time to that cause, or working closely with an organization that is already doing so. (E.g., volunteering for a food bank is a lot more effective than just picking up food and distributing it on your own.)

falcolas 2 days ago 1 reply      
Warning - strong opinions ahead: Provide services and tools without the strings attached.

That is to say, provide email services that don't mine data for profit. Provide a social interaction space that doesn't attempt to manipulate moods, opinions, or sell its user's eyeballs. Provide an aggregation service with strong filtering tools in place of strong moderation. Provide a code repository with great tooling that doesn't include value judgements. Provide anonymous, secure communication between parties. Make mobile applications that provide wanted services without the in-app purchases, ads, or profiling.

The downside is that you're unlikely to get paid for it. You'll probably even lose money on it. In some cases, you'll even face legal pressure to stop or change.

jancborchardt 47 minutes ago 0 replies      
My partner is doing an incubator program called Social-Digital Innovation Initiative: https://sdinnovation.org

The basic idea is to bring together a person who knows of a specific social issue, and a tech person who wants to help solve it. Together they are the core team and are helped to work on their project, form a non-profit, get conmections etc.

At the moment the program is piloting in Berlin. It's planned to expand to Hungary, Austria and ideally other areas. If you are interested, drop by at one of the barcamp/unconference events or check out the website. :)

tacostakohashi 2 days ago 6 replies      
Work as a programmer for whoever will pay you the most. Invest, and donate money to causes you care about.
llccbb 2 days ago 2 replies      
I have posted this before, countless times, but techies who want to volunteer their skills and knowledge to advance the democratic process should think about joining the PROGRESSIVE CODERS NETWORK[0]. They are a non-profit that helps organize and direct volunteer coders, programmers, designers into open-source political projects. They are about connecting and facilitating projects, not dictating what projects should be. They are party-neutral, but seek to empower the people and provide tools for running successful campaigns and being engaged as a citizen.

If you can take away the need for millions of dollars to run a campaign then policy makers aren't beholden to the few wealthy supporters that helped get them elected.

They help connect volunteers to projects that range from building an open-source voter database to an Uber-like app that helps the mobility-limited get transportation to vote. They are extremely transparent and always interested in growing the network. Many members of the network are engineers, product managers, or independent coders.


chrisfosterelli 2 days ago 2 replies      
Check out 80,000 hours: https://80000hours.org/

They have a bunch of interesting research, online articles, guides, and a book. The entire website is focused around how to make a difference with your career in a way that aligns with your own goals. It's a great resource.

awjr 2 days ago 1 reply      
As a cycle campaigner I am using my programming/data/design/socialmedia skills to present information to decision in better ways.

1) https://cyclebath.org.uk/map/ This one has gone national and is up for a Creative Bath Innovation Award.

2) Using Census 2011 Data I've created a healthy cities and towns league index as well as spatial analysis on commuter behaviour. (6M people drive to work, of which 3.5M live within a 20 minute cycle ride) https://drive.google.com/open?id=0B4YARJgso6IxRjd1ZlNDZklGaX...

3) Worked with Bath Hacked and Strava to deliver a year of cycling in the city of Bath strava.bathhacked.org

4) Get involved in your local tech4good meetup.

Do not start from a "hey where can I use my skills for good?". Start with "I am passionate about X, what can I do to help X in anyway?"

Jemmeh 2 days ago 0 replies      

Open source, modern software for charitable hospitals in the developing world.

Find some open source projects for some issue you care about. The medical community could use a lot of help, anything that automates some part of their job means medical staff is available to help more patients. There's a lot of room for automation in this field.

Personally I think anything in renewable energy, sexual education, and poverty alleviation are good highly effective causes to get behind as well.

kolbe 2 days ago 2 replies      
My opinion: take whatever idea you have for a great company, but make it a non-profit.

Other than maybe e-mail, wikipedia is the best thing to come out of the internet. And its creator may not be a billionaire oligarch, but he has a GREAT life. If you can set aside a need to be filthy, needlessly, pointlessly rich, then maybe turn your next idea for a social network or a communication platform or whatever into a non-profit. It's amazing what types of products can be built for this world when you're building for the world, and not the shareholders.

holmesworcester 2 days ago 2 replies      
I work at fightforthefuture.org and I've thought a lot about this.

My first answer is to develop your skills to the point where you are strong on design and UI/UX, not just coding.

I say this because we've worked with some people who have this ability, and they're extremely effective as activists once they focus on a mission.

Aaron Swartz is one person who had this ability, but you don't have to be a genius polymath to be good at this, and Aaron wasn't amazing at visuals and design either. (He was good enough at it though, which was what mattered.)

Ideally, you should be able to speak persuasively online, using text, code and design creatively to get your message across. But as a minimum you should be able to build a prototype from your own vision, get the UI/UX to a point where you're happy with it by iterating, and QA it yourself.

There are a few reasons for this, but the main one is that most social change gets done by small groups of people, and many of those people aren't technical. And usually it leverages certain moments when people happen to be paying attention, and makes the most of those. So you won't have a big team, and being able to do most things yourself lets you respond quicker.

If you have that, I'd try your hand at working on some issues that interest you, either directly, or showing up at an org you admire and seeing if you can help.

We're setting up a space for volunteers, and also a YC-like fund for new activism projects that emphasizes the need for technical founders: http://fightforthefuture.org/ateams/

numlocked 2 days ago 2 replies      
Work with mission-driven businesses. B Corps[0] are a good place to start. There's nothing quite like coming to work every day with a group of like-minded folks who want to make a dent in the universe.

My company, www.grove.co, strives to help families making it easy to buy sustainable products vs. conventional CPG. It seemed a bit crazy when we started, but now literally thousands of families get sustainable products from us every single day. It's hard to make a big impact on your own, but organizations and companies can do great things.

[0] https://www.bcorporation.net/

delormev 2 days ago 0 replies      
Volunteer for DataKind (http://www.datakind.org/), a charity that connects "data professionals" (in the broad sense of the term) to charities who have problems to solve and the data to solve them, but not the resources to do it!

They organise different types of projects: DataDives, which are hackathon-type events and focus on data exploration and analysis; and DataCorps, longer term projects (a few months), where a team of volunteers will team up on a more project for the client charity.

They are looking for volunteers for a wide range of roles, including data scientists, programmers with experience with ML, dataviz experts, project managers, etc.

hooverlunch 2 days ago 2 replies      
Join or start a tech worker co-op!

First, one of the best ways to do social good is to fight capitalism. Just by working at a worker co-op, you're doing this. Many tech co-ops are also built around resisting other oppressions like racism, patriarchy, etc.

Second, many co-ops (e.g. http://sassafras.coop, the one I work for) work on lots of social good projects.

swalberg 2 days ago 1 reply      
Leave your programming at work. Find a cause you believe in or a political candidate you think will do good, and volunteer for that. Knock on doors. Call people. Do research. Organize events and people. Donate money. Change other people's minds.

A lot of these social good things need people to get involved, not software to be written.

Mz 2 days ago 1 reply      
I think the best social good comes from fostering a more civilized environment. Sure, we need things like fire fighters and EMS. But keep in mind that fire fighters also try to do fire prevention. Sometimes, people get so focused on how to be a hero (metaphorically looking for the best way to fight the worst conflagrations) that they overlook opportunities to do more valuable though less "sexy" prevention.

Anything that helps feed people well or better, promotes germ control, reduces social friction in some way, helps marginalized peoples earn a living or helps people of limited means access basic decent housing promotes the social good. But those things are often not the heroics people have in mind when asking this type question.

andkon 1 day ago 0 replies      
Honestly, most of the skills I've learned in building products for people can be used to make tech that has a social purpose. First, you find a problem. Then you find people who can honestly tell you if your solution will actually work. Then, you do the hard work of building what you're gonna build, and seeing if it can fit at the locus of how things are actually done.

That sounds vague, so an example might be nice. I travelled to Oaxaca recently and toured around a bunch of palenques (mezcal distilleries) to see how folks did their work. It sounded like there's an enormous problem with overcultivation of maguey a plant that needs 30-some years to mature in some cases. I thought maybe an app that could identify + track maguey would help. I talked about it with folks, and realized that the problem isn't that they don't know where the plants are, or that they don't know how long they should grow for. It's that there's too much demand for what the ecology can bear, and a lot of it gets carted off to Jalisco to fill tequila bottles before it's mature.

In that light, an app for identifying + tracking maguey isn't really gonna help. But now I have the contacts, they know I want to help, and we can keep talking about what they're working on. Maybe it'll line up. But it's uncertain. And frankly, that's how this stuff works whether you're building something in the hopes of getting into YC, or building something to help out humankind. Just because you can earn a paycheque writing code doesn't mean you can identify and fill a new need with that same skillset.

santiagobasulto 2 days ago 0 replies      
We do that everyday. Maybe indirectly, but we're making a lot of things way more efficient. Information is a huge part of our nature, since the first days, and we're the main collaborators to simplify the access to information.

Said that, you can also think "smaller". Teach someone how to code, and it might be a complete life changer. I run a coding school and we offer free sits for people who need it, and we're greatly satisfied. We've seen students working for McDonald's, for 10 hours per day making just minimum wage, move to a software company with a $+90K salary and changing their lives completely.

Share what you know, try to fix the problems that humanity faces. Don't try to do everything just by yourself. But your "tiny" collaboration ads up.

jjhale 2 days ago 0 replies      
For an in depth talk about the affect of directing your salary to charity check out the following Tech Talk by Toby Ord: "How Many Lives Can You Save? -- Taking Charity Seriously"


They talk about using the metric of "how many lives can be saved" with your cash.


People admire doctors and rescue workers and marvel at the possibility of saving someone's life -- something that few of us would ever achieve. And yet at the same time, we routinely hear that for a small sum of money we could save someone's life in a developing country and this scarcely impacts our behaviour. There is an important disconnect between these two attitudes and it has serious moral implications. I will speak about the evidence which shows that we really can make a tremendous difference by giving, and then explore the moral case for giving much more than we typically do. I will then look at the great disparity in effectiveness between different charities and show how choosing where to give can be even more important than the decision to give in the first place.

timpark 2 days ago 0 replies      
UN Volunteers ( http://www.unv.org/ ) has a Technology development section. ( https://www.onlinevolunteering.org/en/opportunities?f[]=fiel... ) A lot of it is web work, but there's sometimes app development.
cprayingmantis 2 days ago 1 reply      
I'm working on an application that will allow organizations to better keep up with the homeless. From what I've heard a lot of folks who are chronically homeless difficult for a single individual to keep up with so it often takes a team to keep tabs on them. Sometimes information isn't adequately disbursed through the whole team and it leads to knowledge that goes nowhere. My idea was to create an app that works as a single source of truth allowing all workers to update on an individual and raise issues. Probably just going to make it donation oriented unless it really takes off and I need to acquire an operating budget.
zubairq 1 day ago 0 replies      
Programming is only a SMALL part of doing social good. Find a problem you care about first.

For us we wanted to help people who were skilled, but ended up washing dishes, as they did not understand the Danish culture. We made NemCV.com to make them CVs in 2011. The website is now defunct, but since we cared about helping people we turned into a real life event to help people and has helped 1000s of people into a better life here in Denmark, and continues several times a month to this day:


So, find the problem first, and then spend time helping and make an IT tool IF needed!

inlinestyle 2 days ago 0 replies      
You should check out Popcode! (https://github.com/popcodeorg/popcode). Its is a free OSS online IDE used by https://scripted.org to help kids in under-resourced high schools learn HTML/CSS/JS.

The big focus is helping students identify and fix mistakes in their code in a friendly and approachable manner.

mmesh 2 days ago 0 replies      
Find a local nonprofit or other organization you like and ask them what tech help they need. Many small nonprofits are starving for IT resources, either for financial or cultural reasons.

It's not glamorous, but if you're willing to volunteer your time helping with an org's Wordpress site or making sure everyone is educated about phishing and 2FA, you can make a meaningful impact in your community.

EnFinlay 2 days ago 0 replies      
This link will be of interest to you: http://worrydream.com/ClimateChange/. It's a long read, but it's packed with ideas.
zubat 1 day ago 0 replies      
Fix ordinary problems.

That is to say, there are probably hundreds of things, off the top of your head, that bother you and probably bother others. To the best of your ability choose one that you have a clear "thread to pull on" - as in, there is an action here you could take that might not be elegant, might not scale, be politically heated, or put you in a position beyond your understanding, ultimately require a team or need financing. But you could do it NOW and not just dream about it, consequences be damned. When the potential is scary like that, that means you actually hold a lot of leverage to unleash new forces, just by starting on it and not stopping.

Most of software isn't like that: it's predictable in its design, it automates a thing that was done slower or less effectively before. It fits into the system and stays within the lines. So you also won't find many examples for the particular thread you're pulling on, and that's expected.

If you do this and it's something you personally care about and will pour heart and soul into, you're doing about as much as anyone could hope for. You won't and can't get all of it right - but what people need isn't perfection, so much as a vehicle that will last well enough for the journey.

matthjensen 2 days ago 0 replies      

Open source tax-calculator for tax policy analysis. Used by many policymakers to inform their decisions about tax policy via the TaxBrain GUI (https://www.ospc.org/taxbrain). Influences decisions that affect hundreds of millions of lives.

vok 2 days ago 0 replies      
Work to make widely-deployed software more efficient. For open source software, anyone can help with this. Data centers are ~2% of U.S. energy consumption [0], and that will probably grow.

[0] http://www.datacenterknowledge.com/archives/2016/06/27/heres...

sethbannon 2 days ago 0 replies      
I really like the UN's Sustainable Development Goals as a guide for "the world's biggest problems". See them here: https://sustainabledevelopment.un.org/?menu=1300

Luckily, these days there are an abundance of ways you can 1) make money, 2) work on interesting problems, 3) work with amazing people, and 4) do social good. You used to have to choose 2 or 3 of those things, but no longer. I run a nonprofit organization that highlights these opportunities: http://impact.tech/

I also run a VC fund that supports these sorts of startups. You can see an example of the companies we back here: http://www.fifty.vc/companies/

If anyone is considering jumping into the social impact startup space, feel free to drop me a line and I can help you navigate the opportunities. First name AT the URL of the nonprofit I mentioned.

nyargh 2 days ago 1 reply      
Support the people already doing important work - get away from the egocentric "tech will save the world" attitude that is so endemic to our industry. Just get involved and see where you can help.
perlgeek 2 days ago 0 replies      
Something I recently heard on a podcast:

Teach Python to girls in Zimbabwe: https://www.zimbopy.com/become-a-mentor

java_script 2 days ago 0 replies      
Join the Democratic Socialists of America's tech committee! [0]

[0] http://www.dsausa.org/tech_committee

Svenstaro 2 days ago 1 reply      
This is going to sound pessimistic at first but hear me out: Unless you're extremely gifted in many ways and super resourceful, you're not likely to make any noticeable impact on the species.

However, you can still make a big difference for groups much smaller than the whole species (and I think that's actually preferable from a human point of view because it's more tangible). The world is full of problems that could easily be solved by good software. This is especially true in industries that are usually not very technological by themselves.

Depending on your current network you might have gotten to know an industry or two that is not strictly technological. If not, ask your friends who do not program software all day and ask them what problems they have at work that they find annoying and try to come up with a software solution for that.

Once you do that, convince their bosses that it saves them more money to pay for your software than to do things the old way.

ungzd 2 days ago 0 replies      
Get involved into development of free software, preferably that can be used by people and other free software developers, not just corporations building "cloud services" (i.e. graphic editor, not js framework).

"Fixing world with software" nowadays cynically means just "to build closed platform and seek for rent".

rojobuffalo 2 days ago 1 reply      
I think the most basic and overlooked thing is food. Eating well, reducing waste, and sustainable production are areas with huge opportunities. Energy and food are fundamental for improving quality of life; and they're also the human activities with the largest negative externalities to nature.
welder 2 days ago 0 replies      
sorrymate 2 days ago 0 replies      
I would also like to mention the Humanitarian Toolboxwww.htbox.org/

The goal is to help humanitarian organizations solve technology problems with open source solutions. This excellent group of people are developing solutions to common problems like logistical, and communication issues that help improve humanitarian aid.

You can see the source code on their github:https://github.com/htbox/

If you are interested, you can hear more about it by listening to Richard Campbell on this podcast and many others like it: http://www.podcastchart.com/podcasts/herding-code/episodes/h...

FrozenVoid 1 day ago 0 replies      
Kick start the singularity by writing the first recursively-optimizing generic AI? Probably with some new kind of neural network that is fast and versatile enough for all problem domains.An neural network that can extract features of its own design and improve on it with some external metric, test improved copies of itself to solve other problems.AIs that have human-level of intellect would advance science and technology, without any human-level limits.Though such AI would have to be pro-human by design:e.g. https://www.reddit.com/r/frozenvoid/wiki/ai/super-intelligen...
ouid 2 days ago 0 replies      
Social utility is not easy to define. The main problem is that it's impossible to speak for all timescales at once. Particularly when you take some sort of norm on all the individual utilities. This sounds overly technical, but I have a point.

Don't work towards maximizing the utility of everyone, it's nonsense. People aren't that cooperative, even. Work towards bounding the minimum utility. There's lots of social and physical extinction events that humanity faces. Even if you have nothing directly to contribute to these problems, perhaps you can realistically contribute to the welfare of other people who are contributing to these problems.

teddyh 2 days ago 0 replies      
FSF's High Priority Free Software Projects list:


Free phone operating system: https://www.fsf.org/campaigns/priority-projects/free-phone

Decentralization, federation, and self-hosting: https://www.fsf.org/campaigns/priority-projects/decentraliza...

Free drivers, firmware, and hardware designs: https://www.fsf.org/campaigns/priority-projects/hardware-fir...

Real-time voice and video chat: https://www.fsf.org/campaigns/priority-projects/voicevideoch...

Encourage contribution by people underrepresented in the community: https://www.fsf.org/campaigns/priority-projects/contribute

Free software and accessibility: https://www.fsf.org/campaigns/priority-projects/accessibilit...

Internationalization of free software: https://www.fsf.org/campaigns/priority-projects/internationa...

Security by and for free software: https://www.fsf.org/campaigns/priority-projects/security-by-...

Intelligent personal assistant: https://www.fsf.org/campaigns/priority-projects/personalassi...

Help GNU/Linux distributions be committed to freedom: https://www.fsf.org/campaigns/priority-projects/help-gnu-lin...

Free software adoption by governments: http://www.fsf.org/campaigns/priority-projects/free-software...

nyae 2 days ago 0 replies      
Check out one of Data for Democracy's projects and see if you'd like to contribute to any of their open source work: http://datafordemocracy.org/
NoGravitas 2 days ago 4 replies      
This is almost certainly the wrong place to ask this question, unfortunately. The HN demographic is spectacularly disinterested in the well-being of humanity. Try /r/socialistprogrammers or /r/anarcho_hackers on Reddit.
davidmooreppf 2 days ago 0 replies      
Our non-profit builds Councilmatic - https://www.councilmatic.org/ - free & open-source tech for city-level civic engagement. Closing the feedback loop with local government, accessible tools for community dialogue.

But in my ten years' experience, here's what I see as the biggest potential for tech for social good: open data standards for constituent communications. Breaking public messages out of the current silo's of individual e-mails, e-petitions, social media, civic tech apps, and issue advocacy platforms. Making possible open structured data on real public priorities and policy preferences in every Congressional district. This never took off because government offices haven't wanted such a level of participatory democracy, and because existing advocacy groups haven't wanted to share membership lists and enable peer-to-peer organizing - it would undercut the business models of e-petition companies and legacy advocacy vendors and VC-backed civic startups. But making public opinion info more free and open for analysis could push forward reforms that have wide support, and are stymied by the current U.S. two-party system: http://www.participatorypolitics.org/open-data-infrastructur...

Alex3917 2 days ago 0 replies      
Join the Progressive Coders Network: https://www.progcode.org

There are a ton of projects you can jump on aimed at helping to get progressives elected and enact progressive policies. For those not familiar with progressive politics (or at least not beyond Bernie or whatever), the basic idea is to make it easier for people to get involved with government. For example, making it easier to to figure out which elections you're eligible to participate in as a candidate and/or as a voter.

tahw 2 days ago 0 replies      
Join wikileaks and their ilk in the fight to uncover and unravel the conspiracies that are preventing progress from advancing in "first world" countries!
splitrocket 2 days ago 0 replies      
Blue Ridge Labs @ Robinhood.

We have a yearly, paid, 5 month long fellowship in Brooklyn for mid-career engineers, designs, and product managers that combines human centered design and Lean Startup to build tech ventures that fight poverty.

https://joinpropel.com came out of our fellowship and just raised a seed round from Andreesen Horowitz.

Our website: https://labs.robinhood.org

tonydiv 1 day ago 0 replies      
Teach kids how to program! I view it very similar to "teaching the (wo)man how to fish."

I'm working on the 1st live online school that teaches kids to code. It's nearly impossible for parents to find teachers locally between 4-7PM, especially at a reasonable price, so come help :)


whatwhosdis 2 days ago 1 reply      
Program whatever the heck you want to program but stop eating meat while doing it.

Check out the documentary Cowspiracy (free on Netflix) to see what I'm talking about.

claytoncorreia 2 days ago 0 replies      
If youre looking for a job where you can do good as a programmer, were always interested in speaking with talented people at Chimp. Our platform, chimp.net, is built to dramatically improve the human experience of participating in charity by helping people, communities and corporations to make bigger impacts on causes they care about.

I personally have been at Chimp for over 5 years. I can tell you that its a pretty amazing feeling to come into work every day, sit in a comfy chair, wiggle my fingers on a keyboard and, as a result, help get hundreds of millions of dollars flowing into the charitable sector. All while getting paid a competitive salary at a stable company thats poised for massive growth.

If this sounds interesting, checkout https://chimp.net/careers or email jobs@chimp.net if you dont see a role posted that matches your skill set. Again, well always connect with talented people that we think we can work with.

simplicitea 2 days ago 2 replies      
OP here, actually floored by the rapidity and variety of responses. Thanks HN.

I'll take this opportunity to float an idea that's been kicking around in my head for a long time.

The premise is to:

1) (this is almost certainly the easy part) build out a platform that is like a two-way khan academy - teacher and student, with at least the teacher having a tablet and a stylus that function well, sharing a digital blackboard, with a video chat optional -- where a student of something in a relatively privileged situation teaches a student of the same thing in a relatively less privileged situation -- where the sessions are stored and rewindable, both video and blackboard input.

2) the hard part; selling it as something to invest in and driving it to a point of having an endowment behind it, like Harvard's endowment, that allows the service to pay for moderation of student-teachers something like $12.00 USD an hour to teach, while subsidizing well-chosen students to have to pay something like $2 an hour to learn

it's been an idea for a passion project for a while

_asummers 2 days ago 0 replies      
Machine learning is pretty popular right now. With obvious applications in things like biology, you can go into things like gene research (see CRISPR) or AI. Could even go embedded and do medical security things to prevent the next WannaCry.

A recruiter shot a job across my email a few months back about using technology to get people more active in government. Depending on how you feel about government, that could be taken to any number of applications, with some company filling the niche along the way.

I work in education, myself, and I find that pretty rewarding. Being able to use technology to help teachers do something even a little bit easier is a good feeling.

Even though these scenarios are very different, they all help advance individuals and the species in their own micro and macro ways. Tech is useful everywhere, so decide who you want to help, and find companies that exist to help those people and go from there. And if you don't find a company there, then maybe you have your YC interview already cooking.

staltz 2 days ago 0 replies      
Hint: help the Scuttlebutt P2P project https://www.scuttlebutt.nz/. It can be used for social media in areas disconnected from the global internet, through gossip replication of social feeds. Can be quite useful for communities in Syria, Amazon, and Africa.
grblovrflowerrr 2 days ago 0 replies      
IDK about helping the species but maybe contribute to open source software in one of the following?:

Disaster Management SoftwareEMS SoftwareAssistance software for the blind,deaf,etc.

Of course, not everything becomes magically better from software's involvement. There might be some good opportunities in robotics, robotic medical care and elderly care especially come to mind.

lbearl 2 days ago 0 replies      
Come look at Transplant Connect: https://transplantconnect.com/

We make software which facilitates the organ, tissue and eye donation process in partnership with a number of other organizations and non-profits. It's really rewarding work.

rnmp 2 days ago 0 replies      
I work at a matchmaking platform that connects nonprofits with professionals of all kind who are willing to volunteer on projects. http://www.catchafire.org/

Sometimes our nonprofits post iOS/Android prototyping projects, for example.

andmed3 1 day ago 0 replies      
As a programmer you have knowledge which can guide you to make a donation to organization that does something important for many people. They just don't realize that, but you do. Donate to EFF that fights for net neutrality, or some other organization of your choice. And just do your normal work, to have money for that. Thats the way I prefer personally, yesterday I have made my first donation, ever. And kind of proud of it.
shawndimantha 1 day ago 1 reply      
We are taking a technology driven approach to improving the US healthcare system at the Peterson Center on Healthcare, our goal is to improve the quality of healthcare accessible to all, reduce the total cost of care our system bears, and improve the experience of healthcare professionals delivering this care.

Feel free to let me know if you have any questions, on HN or by email at sdimantha(at)petersonhealthcare(dot)org.

Here is one of the engineering roles we are recruiting for (more to be announced later) - http://petersonhealthcare.org/careers/software-engineering-t...

bradyo 2 days ago 2 replies      
I recently went through a job search focusing on organizations doing social good. Full disclosure, I now work at Remix (https://www.remix.com/jobs) and we're hiring! We're a for-profit founded by a collection of former Code for America fellows helping to improve cities.

I have a list of resources that I collected while I was searching as well:

- The Fast Forward accelerator's tech nonprofits job board and directory. This is easily the most extensive list I found: https://www.ffwd.org/tech-nonprofit-jobs/, https://www.ffwd.org/tech-nonprofits/

- The YC-funded non-profits (subset here https://github.com/smartergiving/open-data/blob/master/v0/fu...)

- The well-known non-profits: Mozilla, Wikimedia, Khan Academy

- https://twitter.com/goodtechjobs

- Code for America is hiring, takes fellows, and has a government job board: https://jobs.codeforamerica.org/

- Tech co-ops: https://techworker.coop/members

- https://www.fossjobs.net/

- Angel list nonprofits: https://angel.co/nonprofits

- Some other random social good orgs that I found were hiring in the SF area or remote: Open Whisper Systems, Binti, Nuna, The Human Diagnosis project, Bayes Impact, Nava, GovEx, Democracy Works, The Guardian Project, The Internet Archive, EFF, Exygy, Open Law Lib, Angaza, Fight for the Future,

- An article written by the co-founder of Bayes Impact for techcrunch: https://techcrunch.com/2017/04/25/a-call-to-action-for-tech/

- Civic Makers (http://civicmakers.com/) has a newsletter highlighting civic news

I also second the progressive coder's network.

Casseres 1 day ago 0 replies      
One option is to contribute to a cryptocurrency. Being able to store one's money without the use of predatory banks and cheaply transfer money to places without good banking infrastructure will lift people out of poverty.
purrcat259 2 days ago 0 replies      
I started a project to link charity streams to 3rd party charity fundraiser websites to allow better exposure of the cause and the fundraiser progress in real time.

I'm currently working on version 2 which returns a lot of stastical information, allows for graphs and better statistics to be shown on stream overlays and a back end console for auditing and reporting purposes.

I am currently breaking up each part and exposing them over HTTP APIs to allow future integrations and to allow the system to scale for large streaming events such as Special Effect's Gameblast.

The gaming for good initiative is ripe for new tools and services, as there are very few players in this space, to the end where I thought that I was the only one with this idea up until a few months ago.

LostWanderer 1 day ago 0 replies      
I am working on restarting tech from the ground up in rural places.It always amazes me on how phones get so easily addictive but hardly have much utility values.Like recording the environmental changes or just simple information dissipation to their peers would do wonders to help them. Something i have been very interested in the use of local languages in developing areas in spreading of their rights and information
jtalbot 2 days ago 0 replies      
If you're interested in using your developer skills to help social impact organizations engage their communities, I'd love to talk. At twilio.org we connect volunteer developers with nonprofits and social enterprises that need your help building high-impact communication tools.

Our current volunteer developer initiative is called Voices for Democracy, and is focused on creating tools to advance the discourse between people with their elected representatives.

If this excites you, or if you'd like to learn more about other opportunities to use your skills for good, check out twilio.org and send us a note.

Thanks for starting this awesome thread.

-Jacob from twilio.org

garysieling 2 days ago 0 replies      
One simple thing is to volunteer your time to build websites for non-profits, which I've done.

If you have time, you can also build a useful side project.

For me -

Youtube and Reddit give a lot of weight to popular content. If you're trying to learn new ideas, videos with conspiracy theories, popular speakers, and things people already know dominate search results / subreddits.

My project (https://www.findlectures.com) recommends high quality content, but across as much topic variety as I can find (discourages ignoring speakers based on demographics or them not marketing their talks well).

TheAntiEgo 2 days ago 0 replies      
At Helpwith.co we're focussing on facilitating something that seems very simple and obvious, but is often very difficult to achieve: One person teaching another person what they know.

We believe that peer-to-peer, community driven, education is one of the best ways that our small team can meaningfully impact the world.

The more effectively we can disseminate meaningful information, while also building connections between people, the easier it becomes to solve every other world problem.

Always looking for more collaborators, so feel free to email me: John@helpwith.co

j45 2 days ago 0 replies      
I've volunteered technology skills for a long time for social and community causes. Tech assistance ends up often starting as a secondary way to assist and first beginning with non-tech volunteering as a way to learn about problems. It's interesting how much more we can get done if a social enterprise/cause had the right tools and I invariably end up helping with something if I just get involved as a volunteer.

There's some important things that can make a lasting difference, beginning with ensuring there's something you care about, possibly obscure, but important, for possibly a long time. A big part of this is learning about what the issues are and their impacts.

To help pick a problem or area you care about.. there are things that you are naturally drawn to and can't help yourself with.

It's not a bad place to start looking for problems (and other people trying to make a difference) you care about and want to add value to is an important consideration.

Why? The most important thing I experience is the importance of always adding value first, and finding a way to do it. It simply opens more doors and opportunities than anything else I've ever experienced.

From a tech perspective, many social enterprises, groups can benefit from basic mobile apps or tools for the people they work with. The skillset here isn't the hard thing to find, it's a willingness to learn and only then solve problems even if they aren't new or interesting but deliver great value.

If you can help someone save a few hours a week with 10-15 minutes of making an excel sheet, it is a greater help and a start.

All big problems begin as and consist of a lot of smaller problems.

A secret of finding interesting projects that can grow, is that the willingness to solve small problems, because small problems leads to large problems on their own. Almost all of my multi-industry experience is due to the transferability of solving similar problems.

With this in mind, social good can happen independently, with a group, from an initiative at work, and not just exclusively from working with non-profits. Help where no one's helping and you'll find lots of opportunities to add value.

sophacles 2 days ago 0 replies      
I can't link directly to the talk (or i can't figure out how...), but I enjoyed a short talk about this topic at shmoocon this year. If you go to this page:


Then go to video 20 (friday night firetalks) and skip forward to 1:31:55 theres a talk called "You can do the thing".

tl;dw - Theres a lot of help that can be done by finding local orgs that you agree with, and offering to modernize their websites, help manage IT, and so on.

RichardHeart 2 days ago 0 replies      
Humans are executed data. The blueprint of life has never been more like computer code. Ben Horrowitz believes where data touches biology is where there's ton of profit waiting. Pick a SENS initiative and see where you can attack it with software. Human Longevity Inc is using machine learning I think to figure out what genes actually cause what pathologies.

It would be interesting to point at the genes for the heritability of IQ for giggles. We are all data, the meat is what matters. The life you save may be your own.

fjahr 1 day ago 0 replies      
The best you can do where success is guaranteed is to teach underprivileged how to program for free and help them improve their situation by finding a job in the space.
iammiles 2 days ago 0 replies      
I know a few people who have contributed some of their time weekly teaching less privileged kids the basics of programming. I always thought that was a great thing to do.
caseyohara 2 days ago 0 replies      
PrintReleaf is a platform for automated reforestation https://printreleaf.com/

We measure paper consumption for businesses, equate that to forest impact, then automate the planting of those trees back into the environment at planting projects around the world. We're always looking for talented designers and developers that want to do social and environmental good through technology.

fimdomeio 2 days ago 1 reply      
I would love to have the opportunity to explore the concept of hyperlocal. Using the web to help bring local communities closer together. Never really had the opportunity yet.

I myself, work mainly on projects related to museums, culture, green economy... In the projects I accept I try to find a balance between money I can get and how I view it as work for the greater good. A very hard balance and a very subjective one.

Also have some friends that are a lot into open data which is also an interesting area to explore.

meesterdude 2 days ago 0 replies      
I had the exact same thought, a few years back. I believe there is a vast amount of untapped human potential that languishes in self-defeat. People that, with just a little help, could right themselves and unleash all sorts of good on the world.

so, I'm trying to help people make cognitive and behavioral improvements in their lives with my side project (http://willyoudidyou.com)

pwne 2 days ago 0 replies      

"Data science competitions to save the world"

OK, the tag line might be a bit much, but here's a snippet from one of their current competitions:

Your goal is to create better models to estimate populations for hard-to-reach sites in the Antarctic, and thereby greatly improve our ability to use penguins to monitor the health of the Southern Ocean!

asmt3 2 days ago 0 replies      
Consider working for NGOs like ours - International Alert. In our case, we use software development to analyse data and build mobile apps. Android is particularly sought after skill in the (economically) developing world. Follow me on https://twitter.com/alanthomson to hear about job opportunities. (... when Twitter starts working again!)
ianai 2 days ago 0 replies      
OP is asking for what problems to work on, not projects/etc. there is a difference there.

I personally think we need better ways and more people to know about better ways to aggregate social preferences. If people knew about alternative voting methods they might entertain using them. You could work on coding implementations that would introduce the masses to alternatives.

xysmas 2 days ago 1 reply      
I have recently started volunteering my tech skills (I'm a data scientist for a well-known tech company) to the local chapter of the ACLU and am exploring volunteering for a UN subsidiary who desperately needs the help. If you are interested in potentially working to help the UN project, message me.
msadowski 2 days ago 0 replies      
Probably not exactly what op had in mind but I took interest in a humanitarian hackathon organized by a CERN group The Port(http://theport.ch/) in Geneva, Switzerland. I'm hoping I can take part in it this year.
valarauca1 2 days ago 1 reply      
You don't.

The idea you can _do anything_ to _help_. Is mostly a myth people repeat so they don't constantly feel like shit for doing nothing in the face of mass social injustice by which they are (partially) the benefactors.

If you want social change, you need social action. Anything short is just rationalizing your guilt.

eriknstr 1 day ago 0 replies      
Contribute to the Tor Project, aka The Onion Router.


johan_larson 2 days ago 2 replies      
You have a job, right? If your employer solves a useful problem for its customers at a reasonable price, obeys the law and treats its employees and suppliers fairly then it is doing good and you are doing good through it. Do your work conscientiously and go home happy.
leoreeves 2 days ago 0 replies      
I'd recommend http://dotimpact.im/, it's part of the Effective Altruist movementpeople who want to do the most good with the time/money/resources they have.
acd 2 days ago 0 replies      
Social good Ideas

* Program for charities* Make Reddit style voting for political topics* Invent an econmic system that saves the planet* Work on blockchain projects for good for all* Contribute to open source projects

SolubleSnake 2 days ago 0 replies      
DTOcean is an interesting piece of open source software, to help engineers install renewable energy equipment offshore (wave, wind, tide).


andreasgonewild 1 day ago 0 replies      
How about simply working on what you find interesting and sharing the results with the world for free? If more people did that, this world would be a better place.
SolubleSnake 2 days ago 0 replies      

An open source tool to help engineers install renewable energy equipment offshore. Wind, wave, tide (one day!) etc

francamps 2 days ago 0 replies      
If you're into political action, live in London and are proficient in THREE.js or WebGL, well, we could definitely use your help here -> www.forensic-architecture.org/jobs-internships/
devrandomguy 2 days ago 0 replies      
Looks like a lot of the top-voted suggestions are only applicable to a single country. If your suggestion has a major restriction like that, then would you please declare it upfront?
leke 2 days ago 0 replies      
I think any charity would benefit from software. You just need to contact them and ask what is taking up their time and try and simplify the process.

Educational tools are also good investments of time, IMO.

neuronotic81 1 day ago 0 replies      
Read "Forces of Production" - it'll give you some background to what pressures are at play in technical roles.
rajadigopula 2 days ago 0 replies      
https://socialcoder.org/You can find a project that you can contribute to.Can even boast it on your resume!
NumberCruncher 1 day ago 1 reply      
Take care about your own family and children. Do not harm others. It is that simple. If everyone would do that, we would be all better off.
dontreact 2 days ago 1 reply      
The medical world has a lot of uses for software and machine learning.
jblz 2 days ago 0 replies      
Do everything you can to advance the "open web" (or publishing & distribution of content in general) and eschew "walled gardens" (corporate or otherwise).
erlend_sh 2 days ago 0 replies      
mulnz 2 days ago 0 replies      
Where do you live? find things like this: http://atxhackforchange.org/
Xoros 2 days ago 0 replies      
I worked years ago on a project named babeltree(.org).

Don't know if it's still active, but the idea (and the founder) behind it was really about making the world a better place.

alexfi 2 days ago 0 replies      
You can become programming teacher for startups in Gaza.

Check out: https://gazaskygeeks.com/

dominostars 2 days ago 0 replies      
You can also work a normal job and donate a non-trivial amount of your money to organizations working to make a difference.
dragonbonheur 2 days ago 1 reply      
Local exchange systems.Mentoring and apprenticeship forums and exchanges.Grants and sponsorship databases.Digital permaculture, hydroponics, aquaculture, aeroponics & DIY encyclopedia.Tools to fight against misleading and inaccurate information and to clarify and annotate ambiguous laws that don't benefit the population. Better corruption and dark financing graphs about people in power.
shmerl 1 day ago 0 replies      
Replace some proprietary stuff with FOSS. That's a social good.
conductr 2 days ago 0 replies      
Teach! You know you have a valuable skill, help others tap into that value
hwayne 1 day ago 0 replies      
Find a nonprofit you like and offer them free tech support.
gregable 1 day ago 0 replies      
How about something like US digital services?
oevi 2 days ago 0 replies      
Teach coding to children and those who want to learn it.
tryitnow 2 days ago 0 replies      
Improving the efficiency of biomedical research.
isomorph 2 days ago 2 replies      
OurPath maybe. 23andMe ? Medical / health stuff
bevan 2 days ago 1 reply      
Work on what pays the highest and then donate that money to the most effective charity. According to GiveWell.org, that charity is currently the Against Malaria Foundation, which will statistically save a life for every $3500 it receives going forward. It is ridiculously cheap to save a life that would otherwise not be saved. I highly recommend Sam Harris' interview with Will Macaskill on this topic (effective altruism).


aswin8728 2 days ago 0 replies      
elixirlabs.org :) donate your spare time to building tech for nonprofits who could really use the assistance!
mythrwy 1 day ago 0 replies      
If we go looking for what truly betters our chances as a species I'm not sure we'd like the answers we'd find.

And I'm pretty sure most of it would fly in the face of just about every conventional human morality (which comes about largely for self serving purposes in my opinion).

Our horizons of view are necessarily limited by the narrow slice of space and time we occupy and the culture in which we come to conceive the world. We can break out a little from time to time but for the most part we can't separate our innate ideas of "social good" from that which more objectively probably is better for the species.

I understand the sentiment. I thought about it a lot. As I got older I realized the important things in society are the little things. We are individuals, there are millions of us. We generally won't dramatically alter the course of history but the way we treat others personally, the way we conduct our affairs, our character as individuals, that's what makes up a society. We have to eat and drink. It's part of life. So we sometimes have to do things that we'd rather not. But we can try to minimize our negative impact.

Also I think we partially got where we are right now because some of our ancestors were basically beasts who killed the competition and took their women. And if that hadn't happened at some level regularly we'd probably still be swinging from trees and eating seasonal fruit. I'm not sure I want to know what the implication of that is. But I try to live in peace and stay balanced which means not worrying about saving the world all the time. Because it truly cannot be saved but maybe you can be. And a few others.

Externon 2 days ago 0 replies      
You can do something for education.
Frondo 1 day ago 0 replies      
If you want to do social good on your own, pick a cause you can get excited about and look for meetings in your town around that cause. Go to those meetings for six months and get to know people. Talk to them and find out what problems they're facing, and brainstorm with them ways tech can solve those problems. Find the most curmudgeonly people in that community and work with them until you've won them over. Now you have an idea! Make it, refine it, and when you launch, your local community around that cause will be able to promote it to like-minded folks elsewhere.

Simple, but takes a lot of time, patience, listening, and humility. You can't go in thinking you have the answers, it's got to be a collaborative process.

simplicitea 2 days ago 1 reply      
Curious that ctrl+f 'climate' doesn't have a single hit before this comment, at 234 comments.
Kholo 2 days ago 0 replies      
Wikipedia and Khan Academy.
droithomme 1 day ago 0 replies      
> I want to apply what I know to better our chances as a species and/or as individuals.

As an individual how are you doing? Is your life in order? You're doing OK, those you love are doing well, things are good?

skdotdan 2 days ago 0 replies      
Externon 2 days ago 1 reply      
do something for the education
4a60ab76 1 day ago 0 replies      
someone would tell you:"if you want a selfless, social work - some good jobs are, but: don't work for nuclear weapon production" (finance what (also) finance such production, healthcare that (also) heal the weapon enterprise managements desease, and so on - think this all as examples)but then a (here abstract) "other side/party" will then (because without your benefit for nuclear weapon controll software) thirst start a rocketso your decision was not real altruistic (at all men in world) because you make a "broken glass" (like in the funny nice example above https://news.ycombinator.com/item?id=14379040 )

so, your problem was: your data before decision were not enough and the analysis of the situation (in the whole world) not deep enough.some people will argue: so much data - never possible to make the best decision.I agree with it.But you can do some approximation and before doing an (also only aproximated) List of "good, selfless, altruistic" destinations (with view of whole world and view to some influence like climate, politics, geophysics, space-riscs ... and so on.) make a risc and a potencial map about the world. And second part construct your own priority List for this risc and potencials. Big project - but also big fun! So go web and search for science studys, travel around the globe, talk to many people, educate kids, help older people with desease - so you get a good (eventually excellent) database.Work out a mind set of gouls, of answers for the question "what is good (for my neighbor)". Your longtime values.But you will not forget the borders of your brain: for example - you are a good coder and engineer, and not so good corner speaker ...so go politics as job would not good decision, because your influence will go zero and as coder zero++ ... ;-)But you will not forget the borders of others brain: for example - you everytime check different (also antagonistic) sources of the data for your decisions. And if somebody troll you - be calm: very good input for your decision - database (part:psycho-problems)!

And think of the time of your live: its all in move, you must check in some weeks or months again and again, the same procedure ..(Will be fine: DO WHILE(true))ask, analyse, check, do - a simple and fine procedure in a endless loop: your live.and the backup loop is: ask one more question everytime, everywhere - to everybody ...Find the position were you with your (everytime living) "database" can make the most influence to the "problem-vector" of the world.then so you also will make some mistakes, errors appeare again and again, BUT:then you are old and grey you can say:I had done best of my willnes, my power and what my brain was able to think:attempt(sic!) to change the world to a better one.A (only limited) list of my own tasks (differ already to the list of my son, friends) :- participation, transparency with (for example) openData Apps -- networking: bring together good coders amd other- identify deficites in care for older people - organise help and also change of the reasons- ... and so onthe list is under construction and any bugs I must find out next days ... ;-)Wish you a good and viable decision for your dream - job!CU

dragonbonheur 2 days ago 2 replies      
threepipeproblm 2 days ago 3 replies      
lngnmn 2 days ago 1 reply      
as a species, no less? ;)

Education then.

DarkKomunalec 2 days ago 0 replies      
As individuals, we benefit from being in control of our computers. To maintain that control, good security is essential. So I'd say work on that, specifically on sandboxing and limiting the damage untrusted or compromised programs can do, re-writing crucial programs in languages immune to as many exploitable bugs as possible, maybe even try formal verification (for small but essential code, like OS kernels or filesystems), if you're feeling ambitious.
cybermonkey 2 days ago 1 reply      
We, as species, are invasive parasites. If you want to do some good for the future of the human kind, environment and this planet, invest your time in research about reducing human population by at least 2/3 without compromising future scientific discoveries and advances.
brbrodude 2 days ago 0 replies      
Study anticapitalism and go on from there. I`d recommend anarchism and World History.

Ps.: In tech & programming specifically, I think Free Software is a beautiful idea.

Ps.: I`ll add, why I think this is(my original point), is that I think it's very nice to understand(or try to understand) what is the `structure/mechaniscs of the world`, I mean, to me it would be the same to study capitalism as it is to study anticapitalism(that is, the more you see how it works, the more you`ll see stuff that is flawed), some would disagree with this, of course. Contrary to what many think, ideology to me means NOT seeing reality as it is(so I'm not talking about intantile, superficial, ideas/agenda here), so I think it's absolutely fair the everybody should take some understanding of it based on people who wanted to figure out found out, even if not 100%. Since the more correct is your model of things, the better you can act on them(you can't engineer a car with wrong math, for example). To me, personally, getting my mind out of the techie neophile mindset and knowing broader and deeper stuff gives me plenty of ideas on things to do. Even more so, that since I'm using this 'footing', I can then try to see if it matches reality and goes on to have real-world effects! ;P But anyway, what I`m saying is sort of a longer road, to try to get interested and understand other topics and then look to your habilities and see what you can do with them about the other thing. That's where the project I'm trying to work on came from and it's really meant to be a drop in the ocean and a simple program etc, but it's something I really care about since it's tied to deep layers of my person and perspective on `world`, `society`, `individuals`, `species`, etc.

Ask HN: What is one app you can't live without?
7 points by avadhoot  10 hours ago   8 comments top 6
mattbgates 9 hours ago 0 replies      
I live and breathe LoseIt! (http://www.loseit.com)

I've been logging my caloric intake since 2009. Logging my food keeps me accountable for what I eat and forces me not to eat so mindlessly and without knowing what I put into my body. While I don't usually go back 3 months from now to figure out what I ate or whatever, in the long run, I am able to use the long-term data to understand my eating habits vs. my weight and BMI.

keehun 9 hours ago 2 replies      
1Password (or other password managers)
AznHisoka 5 hours ago 0 replies      
Gmail and Google Maps. Everything else is cheesecake (not even a vitamin)
mikiem 8 hours ago 0 replies      
ssh and a web browser. I know that's two.
avadhoot 10 hours ago 0 replies      
I can't live without slack for sure.
MichaelBurge 9 hours ago 0 replies      
tmux is pretty handy for keeping a long-running session open on a server for development work.
Ask HN: How to protect public APIs from bots when using a BaaS?
13 points by raulk  1 day ago   3 comments top
tyingq 1 day ago 1 reply      
I don't know that there's a generally applicable answer if the api calls are direct from end user -> public api, and on infrastructure you don't control.

The answers would be highly dependent on the specific service, and whatever capabilities they offer. Firebase, for example, has a concept of custom tokens where you could implement rules on a per-api-consumer basis.

There does seem to be an opportunity for CDN companies to offer an API gateway with throttle, scripting, oath, conditional caching, bot blocking, etc. I don't know why they haven't offered yet. A CDN hosted Tyk or Kong instance would likely be popular.

Ask HN: What will coding be like in 25 years?
10 points by throwaway7645  23 hours ago   10 comments top 6
borplk 15 hours ago 1 reply      
I hope that we stop sharing an ASCII language with the compilers.

It is the root of many of our difficulties in programming.

If we create very good "program editor" (not text editors) and store our programs as a data object in a database a lot of our current "problems" automatically vanish.

Every node of the program will have a unique identifier so the editor can keep track of it across the lifetime of a project.

We will get automatic version control. Syntax war will end because you will be able to customize the syntax exactly how you like.

The editor can track the association between tests and documentation with the objects in the program.

And so much more. At the moment we share an ASCII language with the compiler. This creates a fundamental tension between the human and the computer.

On one hand we want to specify lots of things about our programs to make it more maintainable and reliable on the other hand we want to keep things easy on the eyes and parseable.

So we create a strong dis-incentive to providing information about the code to the compiler.

Because all we have is a single layer of text which will quickly become polluted.

We need our programs to be able to have lots of meta-data but have an editor that is capable enough to allow us to view what matters at a given time.

This can only be achieved if we stop thinking about programs as lines of text, but rather as data objects.

This is known as "Intentional Programming" if you are interested search for it on Youtube.

Also see Isomorf.io for a basic demo (https://www.youtube.com/watch?v=awDVuZQQWqQ) (I'm not affiliated with them).

bsvalley 5 hours ago 0 replies      
It will probably be like electricity: Invisible, crucial, handled by a gigantic infrastructure. Similar to the internet today, you subscribe to a service then it's up to you to create products on top of that.

Depends how fast automation/AI will grow within the development field.

tabulatouch 22 hours ago 0 replies      
Mainly AI writing code under our guidance, detecting patterns, applying patterns, suggesting best practices, digesting decades of Stackoverflow to solve problems at higher level.
MichaelBurge 13 hours ago 1 reply      
It will probably be much the same as it is today. Styles will go in-and-out of fashion(today: OOP is not cool; FP is hip), but in 25 years I for one will probably be typing ASCII characters into a text editor, debugging with logs & debuggers & print statements, and using a command line.
Bino 21 hours ago 1 reply      
I think we will come a far as we've done in memory safety with "logic safety", making programs that can't misbehave.
0xc000005 10 hours ago 0 replies      
less relevant
Freelance rates/help
5 points by pcglue  12 hours ago   5 comments top 4
tedmiston 1 hour ago 0 replies      
You have to initiate the rate though you can inquire about their budget.

I wouldn't charge separate rates. As soon as you do this, you open yourself up to needless bickering about how much of your time was spent on x vs y. It becomes complicated to separate sessions that are programming intertwined with technical discussion.

brudgers 5 hours ago 1 reply      
No. I charge the same rate. For travel to the client's location sometimes I will use a per trip rate instead of a per hour/day rate for trips to the client's site. I stopped discounting rates years ago because it does not help me and encourages the notion that it might be ok to not pay me or pay me less in a client's mind.

Because my rate structure is simple. I can describe it easily: W per hour/day. X markup on expenses. Y per mile travel. Z as retainer applied against final invoice based on my non-binding estimate of the time it will take to do the project based on the client's description (often Z is from 25% to 50% of the initial non-binding estimate). Most projects take at least K hours/days.

I don't wait for a potential client to bring up rates. Once it is apparent that the person is soliciting services, I describe my rates. This avoids wasting both our time when there is a gap between a potential client's economic expectations and my rates. It avoids wasting my time with potential client's who balk at writing me a check to get started...willingness and ability to pay are features of a good potential client. Execution of payment is a better criterion than a signed contract for separating actual clients from potential clients. A reluctance to pay me is a good criterion for distinguishing bad clients.

To put it another way, the essence of consulting is the business of "nickeling and dimeing" clients. And in general, charging money is the essence of business. A reluctance to charge people money is not wrong but it is at odds with trying to run a business.

The flat rate up front replaced my previous system where I would tell the client that I would follow up with a proposal and then spend time researching and pondering and estimating and then putting together a document and then waiting for the client's response or non-response.

Good luck.

mattbgates 9 hours ago 0 replies      
While I don't charge for reading an email, I do tend to charge my regular rate for a Skype or phone call. If you don't charge your clients, they will take full advantage of your time, and they need to see that you are a professional and your time is money. If you want to offer your first meeting on the phone for free, like a consultation, on what they want, what your terms are, than that is no problem.

I have made the mistake of not charging in the past, and I don't technically charge to read or respond to emails, though I might factor in some of the work - at least - say something takes me a minimum of 25 minutes to do, I will charge an hour of labor because I've had to take some time out to understand their email and clarify that the work they want is accurate from the information I understood it to be.

In this fast-paced world, meetings can eat up a lot of [your] time. And sometimes you do get those clients who want to meet you in person or they always want to talk to you on the phone. I had one client who kept wanting to meet with me every single week, and I lived close to her business, about 15 minutes away, and the first two or three times, I did not charge her for it. I was naive and just happy to have her as a client, since her business was popular in town. It got old real quick. I decided to charge her her for those meetings, which usually lasted anywhere from an hour to two hours. Once those charges came, the meetings switched over to email or a very brief quick phone call real quick.

I have since trained my clients to send email. Paper trails are much more accurate than in-person meetings or phone calls. They protect me and my client so there are no misunderstandings of what was said vs. what was heard. Clients will usually send me an email with work they want or need. Before I start any work, I normally reply back and inform the client: "Please confirm by replying that it is okay for me to begin an invoice and work on what you want me to do. You will be billed at my normal rate of X per hour."

This confirmation they reply back with is an email of their recognition that I am doing work for them and my billing has begun. While I've never had issues, stating your business clearly of what you are doing, what you are charging, and them agreeing to you doing it, is for your own protection and theirs. An email can protect you as it can serve as a legal contract in the court of law.

stephenr 4 hours ago 0 replies      
An initial call I will do for free, to find out what the client wants, how I can help them, etc. If we agree to move forward, I'll bring up payments with them, part of which is agreeing on a rate.

After that, any significant time is billed, and labeled so they can see where the time (money) is going.

Ask HN: For those programming 10+ years, what do you wish you knew 4 years in?
342 points by dhruvkar  3 days ago   508 comments top 166
ravenstine 3 days ago 10 replies      
Everyone's code basically sucks, including yours. The boundary between a beginner and a coding rockstar really isn't very great unless you are getting into the realm of computer sciences, like machine learning. Learn from your seemingly smarter peers, but don't idolize them. Chances are they will leave the company long before you do, and you will figure out that their coding skills aren't all they are cracked up to be, especially if their code is poorly documented. You will soon understand that they were focusing on getting the job done, while you were expending all that effort to be clever. In that sense, they were totally right.

Don't overwork. Seems obvious, though it's not only still prevalent in America, but more important for our field. Working extra hours has rarely benefitted me either in quality of work or in company treatment. Nobody cares that you put in extra hours. In fact, don't expect your boss to care about anything you are doing even if they are generally benevolent.

Your success is mostly dependent on your personality with appearance as a close second. That's not to say you won't have big wins with the projects you work on, but a lousy programmer won't get fired if they are charming and everyone likes them. The more I refined my social skills, as well as my grooming, the more my minor achievements would get overinflated by my peers and the more they would overlook my mistakes. It's just a cruel fact of life, but at least it's something most people can actually address.

scarface74 3 days ago 8 replies      
I have been developing professionally for 20 years and I'm in my early 40s. What I've learned:

* Salary compression is real: most companies are not going to keep giving you raises to match what the market would give you for your skills. They would rather you leave and take all of the institutional knowledge with you than pay you the amount you could get elsewhere. Even if that means hiring someone else at market value.

* Don't get comfortable at a company to the point you're not getting new experiences and learning new skills. Don't become a dinosaur.

* Even if you don't want to become a manager, when the time is right and you have the right skill set, demand a title with "architect" or equivalent in it. Titles are B.S. but people listen to developers with "architect" as part of their title. I insisted on the title and now I'm being recruited for much higher salaries even though I had the same responsibilities as a "senior".

* Good local recruiters are your friends. They can tell you salary ranges for a job and they do a lot of the hard work for you.

* know how to calculate your contract rate if you're doing contract work. Your rate will be different if you are a W2 contractor vs a 1099 contractor. Take into account self employment taxes (1099), the lack of PTO, the time between contracts etc.

* Whether you are a contract or perm, realize that you are still your own company. Your employer is your customer. Do you your best work but never feel a sense of loyalty that keeps you from jumping ship for higher pay. They don't have any loyalty to you.

rhubarbcustard 3 days ago 7 replies      
That shipping stable software that works and meets requirements is what people really want. In other words, what the non-tech business people want, or your customers want, is software that fixes their problems, makes their lives easier or makes them more money.

It's easy for us programmers to become fixated on using a newer JS framework, a slightly tighter Java loop or the latest cool language. Took me a few years to realise that even though I care a lot about those things, other people do not. They are interested in the outcomes, not how it got built.

I'm running my own business and building things for myself these days. I use vannilla JS on the front-end and Java 8 on the back. Since I gave up chasing the new cool tech I have built a bunch of stable systems that have been great, well received, products.

If you become someone who has a history of shipping things that work, you will do a lot better than someone who knows how to write hello world in every JS framework.

maxxxxx 3 days ago 10 replies      
Work somewhere where software is the main product and not just a cost center. You can learn a lot quickly if you do cutting edge things with people who care about technology and not just cost.

Solve real world problems. Doing elegant thingsis very difficult because the real world is much more convoluted than theory.

Do a few things in depth. Don't jump at the latest thing every few months.

bitL 3 days ago 15 replies      
There is no future in software development as a job. Move to a management position quickly, network, make friends with decision makers, don't spend too much time on crafting your skills, your reward for perfection will be more insane work and crazy interviews where one part not 100% done kicks you out. Work on your appearance, kiss up, lift, dress properly, use anti-aging cosmetics, make cool looking hairstyle, wear objects of power (like rings), work on your voice, make yourself seen by making presentations, even if pointless and/or stupid, do some trendy thing on a side and show everyone, appear confident at all times even if you have no clue what is going on. Demonstrate your skills by getting an MBA, PhD (even if from a crappy university, it doesn't matter) or a respected certificate. Basically, don't hack computers but people around you. Our field has shifted from meritocracy to over-politicized field, if you are a male you'd in addition face 50/50 gender ratio split pressure and given how few women are in our field, you'd compete for less than a half the available spots as everyone now wants to compensate this ratio in their mostly male teams.

If you really need to make software (like I do), make your own company and license/sell your work instead for >500% more than what would be your salary.

falcolas 3 days ago 6 replies      
You're going to read your code 100x more than you're going to write it. Optimize the code you write for reading.

Your code will be in production either much longer or much shorter than you think it will. The 5 lines of code you spend three days perfecting will be replaced in a week, and that one-line 3am hack will be out there for ten years.

A good walk around the block will help you solve a problem faster than staring at code.

Find someone smarter than you and learn from them. The corollary is if you're the smartest person in your area, you're more likely to stop learning.

What the customer needs is rarely what they say they want.

You will derive more long-term benefit from finding an answer yourself than finding that answer on Stack Overflow, at the cost of time. When time matters, at least try and understand why the Stack Overflow answer is right.

Don't be afraid to question a decision you don't understand, or don't like. At best, you'll get either your mind or the decision changed. At worst, you will learn something about your co-workers.

There's never enough money, time, or domain specific knowledge.

Office politics matter, regardless of how much you wish they didn't.

ZoFreX 3 days ago 1 reply      
If I could go back in time and give myself advice it would be:

0) Nothing is too hard to do, no matter how much those doing it might seem like towering titans many levels above you, or how out of your reach it may seem. Nothing is too hard, there are only things that take time, and things that take more time. If you put in the work, those titans will be your peers before you realise it. Of course, you can't do everything. If you want to put in the amount of work needed for some things, you need to focus. That means deciding to not do some things that you want to do.

1) No-one who is serious about programming gives a shit about language wars, they're for fanboys and spectators. People who get shit done are too busy to spend time on that. So don't sweat what language you choose (too much there is still such a thing as the right/wrong tool for the job) and especially don't worry about the people insulting it.

2) If it's not constructive practice, you're wasting your time. I spent too much time - literally years - spinning my wheels, writing code but not getting any better at it. Make sure you're reflecting, make sure you're improving.

3) (related to #1) seriously stop worrying about choices and just get something done. You don't get things completed by worrying if you're using the right language/framework/library.

Unfortunately I worry that this advice would send me down another bad path and I'd probably need to add on something like:

4) All that said, some languages really are limiting, either in what you can do, the level of concepts you will learn, or straight up teaching you bad habits. Likewise some libraries / tools / frameworks are actually bad. While you should definitely avoid trying to optimise the last % of productivity, you should spend some time to make sure you're not using something highly suboptimal. If after reflection you believe you are using such a language/framework/etc, then broaden your horizons. That doesn't necessarily mean rewriting your current project, maybe do a toy project or some exercises in something else.

KirinDave 3 days ago 0 replies      
5 things:

1. That statistics and metrics collection is incredibly important even if you only ever use it via libraries.

2. That code performance doesn't matter if the code is incorrect or insecure. So much of my life in industry has been tainted with an influence to conform to the cultural norm of "fast is best." This influence and culture is one of the most counterproductive parts of our industry.

3. The industry is actually full of great people, but those people avoid most of the media hubs that projects have access to because a tiny slice of terrible people dominate discourse. These assholes set the tone for the entire industry, and should be ostracized and punished. It's not everyone, it's a thin coating of hate.

4. Corollary to 2 and 3, I wish I learned to ask for help earlier in my career. I wish I could go back to my younger self and take the chip I'd acquired working with government contractors.

5. Corollary to 4, I wish I realized that I should be reading academic papers and that the people writing them weren't wasting time. Much of what's considered modern state of the art is in fact 5-10 year old work out of universities and MSR.

ransom1538 3 days ago 1 reply      
13 years.

0) Money. the big money is in projects that need help. E.g. CEO during your interview: "The last lead programmer flipped me off and our accounting system in small talk is broken." That's hard. But that is where money is.

2) errors happen. Do tdd - so you can go to that concert.

2) Be the go to guy. If someone needs something you better be able to help. Brushing someone off creates office enemies and will remove any hopes of promotion.

3) any idiot can write code. I can with one hand tell you the names of people that can take over a system with 500k of mangled code.

4) think win/win. If you are doing a project - work hard -win for the company, but also put it docker so you learn something too.

5) launch side projects. You should release something large every year.

root_axis 3 days ago 3 replies      
If you're self taught, get a degree as soon as you can, even if you take night classes over an extended period. No matter how good you are, a large portion of companies and recruiters will autotrash your resume without an education section.

If you're not a founder, NEVER take equity in leu of salary. If they offer a competitive salary and equity, that's a significant plus, but equity as a portion of your compensation value is essentially a scam. if the company goes under or you're let go before the cliff (which is usually two years or more, a lifetime in this industry), all that money disappears: not true of salary. If a founder or officer alludes to houses, cars or other riches as a pitch to join their company run. Seriously.

Take the time to understand systems and infrastructure. Not every dev needs to be a kubernetes expert, but the big difference between a code monkey and a code assassin is that the assassin can deploy their own code to production if necessary. If you're a web dev and you can't configure nginx or apache, you have a gaping hole in your skillset.

Launching off the last point: learn to be competent with linux. Linux is the preeminent environment of the software world and it pays huge career dividends to be able to script, configure, compile, install and maintain linux software and systems.

RTFM. This is a big one. Don't skim. Relax and dedicate some time to a thorough understanding of details. You can save yourself an immense amount of time when working with a new library/framework/language if you actually read the manuals and understand what your tools are capable of, otherwise, you end up wasting tons of time brute forcing your way into a crude solution that may have been trivially and correctly solved by utilizing the tool's strengths and features where appropriate.

avaer 3 days ago 1 reply      
- Keep it simple, stupid. Advanced is not a compliment.

- Languages and frameworks don't matter. There's a closed set of concepts they're all reusing. Especially if it's hot shit: that means someone mined ideas from 30 years ago.

- Most problems tend to fall not to cleverness, but to compute power and the right glue. See previous two points.

- Everything is a tradeoff, everything is a moving target. Programming is about the battles you choose.

runeks 3 days ago 0 replies      

I spent at least five years chasing down "AttributeError: X has no attribute 'Blah'"-errors in Python at runtime, and came to think that this was what programming was. Three-or-so years ago I discovered Haskell, which transforms these types of errors into compile-time errors, preventing me from building the program as opposed to a sudden runtime crash.

I wonder just how many hours I've wasted doing this completely meaningless task. It's not really a problem while your programs stay small but, as they grow, I found it became the main source of time spent programming, taking away precious time defining the actual application logic.

Mind you, Haskell is fairly extreme in this regard, and I'm sure there are languages which take a similar approach, without the mathematical certainty of Haskell. But, as I've become used to the precision offered by Haskell, settling for something with fewer guarantees -- but more libraries and easier-to-digest documentation -- would feel like a great loss to me.

jackmott 3 days ago 4 replies      
I spent a long time never bothering to master semi-advanced text editor or ide features. Like really simple stuff like moving forward/back by a word at a time, deleting a word at a time, hopping to next/prev brace/paren, renaming globally, doing everything without needing the mouse, multi-select etc.

You can go even deeper and get into deep VIM style skills but there are many very easy things to learn that let you do stuff so much faster. Whatever editor your use, learn to use it.

patio11 3 days ago 3 replies      
~13 years in:

Spend your early career, to the maximum extent possible, in well-run organizations surrounded by supportive, skilled teams, so that you can optimize for skill growth and (secondarily at first, but growing over time) for individually attributable impact/ownership.

Honorable mention: AppAmaGooBookSoft hire mere mortals, too, and mid-career salary expectations at them are $300k.

baccredited 3 days ago 2 replies      
I wish I knew I could save aggressively and achieve financial independence in a relatively short time frame. Even medium salary programmers in the US can save the bulk of their income and retire early (if they so choose). I'm on track to retire in about 4 yrs but wish I had done so quicker.


krylon 3 days ago 1 reply      
I was kind of shocked at the discrepancy between the reality of working as a programmer at a small company and what one learns about how to "do things right the right way" - version control system? What is that? Automated testing? Or even systematic testing? No time, we have to ship the next release! Using global variables sparingly? - Hysterical laughter

The important lesson for me was not to despair and not to get all preachy on the other programmers, but to see how to make the best of that situation. And while it was a real pain at times, I was able to be productive and get some real work done.

Also, if the only tool you have is a hammer, every problem starts to look like a sore thumb eventually. Do not stop learning new things. Both for pragmatic reasons, and because it helps keeping it fun. It doesn't mean one should use every shiny new thing out there just because. But without knowing what options you have, making the right choice is not trivial.

yonah 3 days ago 3 replies      
I've been coding professionally for 20 years, a lot of the comments below are legit, but I figured I'd add one or two more:

- As many people point out, the languages don't matter - something better and newer will come along, and you'll need to adapt, but that's not where programmers provide value - they provide value in understanding how to solve the problems that the business side is facing. It's easy to find someone who codes better than you - new grads, offshore devs, but it's harder to find someone who understands your business well and can solve the problems that it's facing.

- Always be learning, always be reading, always be innovating.

- If you can, contribute to Open Source and/or stack overflow, etc. People who interview you will do their homework, and you want to have a public presence that will help sell you.

- To me, the most important thing, is to try to work for an organization where you are the dumbest person in the room. It might sound counter intuitive, but if you are the smartest person there, who are you going to grow from? At the very least, when you look for a job, the people should matter the most. Obviously, pay, technology, commute, etc. all matter, but if you surround yourself with a good group of people, it makes work easier. The jobs where I was by far the most skilled and the most talented wound up being the jobs where the less-qualified people on my team became the biggest drain on my attitude and time.

- If you are going to go the management route - make sure that you get training. Can't emphasize this enough. Just because someone is a good engineer, and is able to self-manage and prioritize well, doesn't mean that he or she is good at managing other people. Just like you didn't learn to code overnight, you won't be able to learn to manage overnight. (That advice alone 15 years ago could have put me in a different trajectory).

crdoconnor 3 days ago 1 reply      
* Develop a good eye for hype and real trends. Try to follow the real trends and avoid the hype-fests. Avoid investing time learning fly-by-night technologies, but when something new and genuinely better comes along, jump on it.

* Listen to developers who have deep and abiding hatred for some technology that they can argue coherently (with a range of deep technical details, links to bug trackers, etc.). These rants are a gold mine can save you a universe of pain.

* Almost all good coding boils down to three things - choosing a less powerful language/approach, writing less code to do the same thing and looser coupling.

* All things being equal, take the job with the higher pay. It almost always means you're treated better in other ways, you work with better people, you work with better tech and on better code.

agentgt 3 days ago 2 replies      
What I have learned is:

* Typed languages while more complex are worth it (circa 12 years ago I was a heavy scripting language fan)

* Unit tests that heavily use Mocks are almost always a bad sign. Brittle tests suck. Don't increase coverage for the sake of it.

* Get it done and move on. Try not to obsess on little details that add no value.

* "It depends"

* NIH (not invented here) is not always bad. In general it actually is often better (ie invented here). Respect the previous engineers when you move to a new company. There is a reason why things were built the way they are.

* Almost everything can be done in Bash :)

chubot 3 days ago 2 replies      
Shell scripting (which will lead into Unix internals). A lot of programming is automation and yak shaving, and shell is often the quickest tool to get past that. It lets you get to the meat of the problem you're actually solving.

Using the same tool for build, test automation, deployment, sys admin, refactoring, etc. is valuable. Otherwise you are stuck with frothy and immature domain-specific tools that clutter your brain.

Shell is sort of universal in that C/C++, Go, Python/Ruby/JavaScript, etc. programmers all use it.

It's sort of like the idea of mastering a single editor. You wouldn't want to switch editors every year. Likewise I think knowing shell and Unix really well pays off over the long haul.

mysterydip 3 days ago 1 reply      
You don't have to design the whole thing before you implement. This applies more easily to smaller teams but there's a continuum between rapid dev and thinking everything out.

In my game dev it took me a long time to let go of "but I need to create an elegant/clever solution that covers all my planned features rather than just what I'm implementing now". What that got me was a lot of unfinished projects with elegant solutions. When you have time to code, code. Not necessarily the first solution that comes to mind, but maybe the second. Now you can keep coding instead of being stuck. Let your mind percolate on the solution in the background while you code, and while you're doing other things later. It's amazing how many times the solution will present itself after you implement a couple different pieces that now need to tie together. Use the power of your brain's pattern recognition.

Yes, you will "lose" some time in refactoring, but the truth is every project I've worked on, one-man hobby up to multibusiness teams, has had refactoring due to scope creep or "we didn't realize this would be an issue until we implemented it."

It will take time to learn how much thinking vs coding to do (both extremes are bad).

Final bit of advice: don't listen to the opinions of people as to what is a good or bad language. Try them out, use the right tool for the job.

Jeaye 3 days ago 1 reply      
To myself, 4 years in, I would say:

OOP is just a sliver of it and the typical ALGOL-based languages you're learning are a small piece of what programming can be. Learn functional programming now. Learn about immutability, referential transparency, and data-oriented programming. Even if you continue down the imperative, OOP path afterward, this knowledge will change the way you approach every design.

There is so much more to learn, and so much more I could reveal; you'll get there, though, and it'll mean more because you did it yourself. Keep at it.

ensiferum 3 days ago 0 replies      
- That it's a dead beat job. Get into something with more money like finance sales or management. There's no real money except for the few rare top 10% performers at Google,Facebook etc.

- software is just pure crap. Tools are crap environments are crap libraries and frameworks are crap. Nothing ever just works but endless nonsense and meta problems.

- career progression is shit unless you're really few of those superstars at an organisation that appreciates technical skills. Or unless you have other skills such as bullying ass kissing or office politics.

- regarding code itself. Code as little as possible. Code is very expensive so you want to solve your problems with as little code as possible ideally without any code.

- be aggressively lazy. Don't do anything that really doesn't need doing. Focus your effort on the few things that really matter. Remember hard work has no intrinsic value. Engineers in general don't understand this.

- don't be sloppy. The things you do code while you try to minimize the code the code you do write needs to be at least ok quality.

AldousHaxley 3 days ago 1 reply      
I wish I knew earlier that I had enough knowledge to build production quality applications. I had this idea early on that I had to attain some level of mastery that was always just outside of my reach, and that the only remedy to that was learning everything possible under the sun. But after spending years trying to get to that point, I realized that I could have been building and shipping products that whole time. If I could do the last decade over, that realization would have the most profound impact.
wccrawford 3 days ago 1 reply      
My wife hates it when I say this. (She's QA, I'm dev.)

One of my best skills is assuming. I have to make tons of assumptions, and if I stopped working whenever I didn't know the answer for sure, I'd never get anything done.

Instead, I make my best guess. If I'm unsure enough, I'll also send off an email stating my assumption and asking for direction, but I'll still keep coding based on that assumption.

I am almost always right, and I get a lot more done because of it. Even if I'm wrong, it's going to be a lot quicker to rewrite what I've done than to have done nothing and have to do it all after I get the reply.

I'll answer a question you didn't ask, too: What do my bosses wish I'd known when I started?

That saying, "no," isn't a good answer. Never just reply "no" when someone asks if something can be done. Find out what they're actually trying to do, or suggest an alternate way to accomplish it that can be done.

nf05papsjfVbc 3 days ago 0 replies      
I was working hard to learn more about the language I was using then.

When I look back at that period, I think I enjoyed what I was doing but in terms of technical knowhow, I wouldn't change much. Of course I know more now than then but I walked a certain path and I enjoyed it. The process was part of being where I am now. So, I think I'm happy with it so far.

What, I would like to have had since then: A good perspective on how the business functions. More empathy.

I've learnt these over time and even in this case, I think learning these was part of life. I don't really feel like "I wish I had the chance to go back and change things". I just feel foolish about some things I did then but I acknowledge that at that time my level of maturity was different from now and even if I had more (relevant) information or ideas, I'd not have been ready to use them.

Finally, I'd say that as long as you tend to reflect on what you do and where you want to go, you'll do fine. Conscious and intentional incremental improvements take you quite far on the long run.

Good luck!

mattlondon 3 days ago 0 replies      
Most important: don't try and be clever when solving a problem. Simple & readable code is typically better than clever-tricks or one-line unreadable-solutions.

Almost-as-important: stay curious.

Apart from that:

- experiment, make mistakes, screw-up, accidentally do rm -rf / etc etc. Just make sure you learn from them :-)

- look at how other people have solved similar problems, perhaps what your colleagues have done at your job rather than just random github stuff so that it has more context. See if they did anything that you didn't think of (... or not!)

- learn the basics of key data structures and how/why they work (graphs, trees, hashmaps etc). Learn why they are cool, what the benefits are and where they could be useful, but remember the most important point and try not to be too clever and force them in where a loop would do!

- try to keep your interests/skills/knowledge fairly broad. I've interviewed people who seemed really good, but turned out to really only know about one specific narrow field (e.g. they knew everything about ReactJS/Angular/VueJS (for example), but did not know even the basics of how HTTP works or how to do a SQL join) so I've had to reject them. As well as programming, learn a "enough to be dangerous" in unix CLI, networks, databases, web stuff, basic OS stuff, storage etc.

- similar to above, try and learn another programming language after you are competent in one. The learning experience and different perspective will make you a better programmer in both languages.

- finally in a slightly more negative vein, the company you work for might be nice and might be friendly, but the company will have zero loyalty to you if it comes to layoffs/re-orgs etc. Don't stick around at a company longer than you know you should just because you feel like you "owe it" to them.

Have fun and good luck!

david-gpu 3 days ago 0 replies      
Most companies seem to prefer folks who have a broad base of general computing knowledge plus one specific area of expertise. This is sometimes called a "T-shaped programmer". There are definitely exceptions, but is a good place to start.

Other than that, practice, practice, practice. And get out of your comfort zone when you practice, don't just do things that are easy for you. You are only learning when it is hard and it makes you wonder if you might be stupid.

robotpony 3 days ago 0 replies      
Side projects and life-long learning are the only way to stay relevant.

Stop feeling guilty for not finishing side projects (only finish the good ones).

Adapt not just your skills, but your learning techniques (you're not in college any more, and the learning landscape is evolving quickly).

Don't be overly loyal to your company, at least more than is rational (their loyalty to you is limited to shareholder return and their basic humanity). This isn't to say you should bail early (as you won't learn or ship anything real), but value your own career over the number of years you stay with one company.

Look ahead regularly: where do you want to be in 5 years? It takes 5 years to get somewhere (like front-end, back-end, kernel dev, UI designer, etc.). As this question EVERY WEEK, and do something about it.

Make good habits: your habits are your learning and productivity, this includes the wetware (i.e., you).

pjmlp 3 days ago 0 replies      
Make sure you get to learn a bit of everything, don't become too focused only in tech.

Yes, it is cool to know all latest features from language X or framework Y, but real work on a company is not only typing code.

Learn to get overview of how software architecture and development processes work.

Build your social skills to be able to bridge between technical audience and those not so technical.

Do not work in silos, make sure you get an overview of what everyone is doing, get domain skills on the business areas the product is targeted for, learn what customers actually do and want from the product.

DanielShir 3 days ago 0 replies      
Been doing software for 20 years now, and I think the best advice would be to keep things simple.

Keep your software design simple, your code simple, your tools simple. Sure, it's nice to use new and shiny tech for your side projects, but real software should be done simply and efficiently.

Simple trumps everything else, but it takes a real master to know how to pull it off. Especially in the context of complicated software requirements.

During my career I've met very few programmers who are capable of doing this well. It's the true art of the profession IMO.

eranation 3 days ago 0 replies      
Few things come to mind

1. To not worry about my code being judged too much. Everyone's code can be improved. The real art is to know the balance between good enough, and not contributing obvious technical debt.

2. Not being afraid to break things. (unit testing helps lower that fear, so is documentation, single responsibility principle, open closed principle etc)

3. Assume you will probably never have time to rewrite it.

4. Assume you will probably never have time to do a major refactoring on it either.

5. Boy scouts rule. Due to the above, just gradually make the code a little better everytime you touch it. You see something bad in the neighboring method? cleanup, even if you didn't write it, and make sure the unit test covers that (shows how unit tests are important. It's not just to test your code, it's to allow people to feel comfortable changing your code when you are not there)

6. Unit test (almost) everything on one hand, but feel ok to skip testing a function that does something so trivial that the test itself is just repeating the same logic. Also consider mutation testing over code coverage as a metric.

7. The obligatory - check your own code first before blaming others, Google everything, if something looks WTF, then you are either looking at the wrong server, have cache issues, wrong git branch etc... (9/10 of the times)

8. Use other people's code, avoid NIH syndrome, use open source (with the right attribution) and don't be afraid to try and contributing back to the community. Best code is code you never had to write.

zubat 3 days ago 0 replies      
My number one piece of programming advice is that you can always find a simpler way - and if you have R&D time to sink into simplifying your problem, doing so is a good idea - but actually simplifying is a very hard task and there is no blogpost tip or design pattern that will do it: it requires knowing your problem very deeply and being willing to shave a few yaks and reinvent a few wheels and generally grind away at something that was already solved, but in a way you find dissatisfying.

If the problem is genuinely original to you, your best bet is to find the biggest leveraging factors(language, tools, libraries, etc.) and consistently lean on those to arrive at a solution fast, then pay down the resulting debt in dependencies, performance and gaps in UX later. This can actually aid in an R&D effort because reaching a clunky solution quickly will lend a certain maturity to the codebase and the problem you're addressing. But it means being willing to read and reuse code that you are personally uncomfortable with and know does not really solve the specified problem exactly. This is a revision-heavy process and it's antithetical to what many programmers are inclined to do - which is to get everything finalized in one shot, drawing on all the stuff they know is the "best practice" even if it's tangential to shipping.

The more you're willing to allow your code to be "knowingly wrong" in ways that are easy to call out and to return to later, the faster you can get to the stage when actually revising it has value. This is why everyone writes bad code yet some code looks better than others: the good code was bad code that solved the right problem, then revised.

giberson 3 days ago 0 replies      
The company (any company and or manager) will try to get away with paying you as little money as possible. Even if it's below industry/region average, even if they know you're worth a hell of a lot more. They will offer the lowest pay bumps they think they can get away with.

You have to ask for more to get what you're worth. And it doesn't hurt to ask, worst case is they will say it's not in the budget (even then it's usually not a firm no).

The trick is during your review you have to say you want more. You have to present a case that you're worth more. And it's not even a hard or complicated case to make.

If you know what the industry standard is in your area and you're underpaid say "I think I deserve a pay bump of <gap + 5k>. The average rate for programmers here is <x> so I should be at least making <gap> and you just told me I'm doing a great job, so I think I deserve a little more than average."

In all seriousness I'm basing this on past experiences (both myself and colleagues). You probably deserve more than you're being paid. The company will easily pay more than they offer by a little and most likely by a lot (if you're a good negotiator and make a good case).

The key is: ask for more, justify by reminding them you do a good job.

GrinningFool 3 days ago 0 replies      
* When troubleshooting and hitting a wall, there is always sanity in checking the obvious thing that you assume always works. Not a cursory check, but an actual look without assumptions.

* What customers and clients _need_ isn't always what they say they need. Learn to drive at the underlying problem in your discussions with them, and don't focus on what they think the solution should be. While you should always accept their input for the latter as well, keep in mind that most of the time it will address a symptom and not an underlying problem.

* What a customer wants may be related to what they need, but this varies.

* Don't solve problems prematurely. Even simple bug fixes - what is the impact? Are you changing something used downstream?

* Don't assume good tests will always catch all breakages. If they did that, we'd never have to fix bugs.

* Don't trust your dependencies, vendors, platforms, or anything else to reliably inform you of breakages and incompatibilities. They're all run by humans and humans make mistakes.

* You are responsible for shipping working products. If you include a dependency and it breaks, you are responsible for finding that out before your customers do.

catwell 3 days ago 0 replies      
- What rhubarbcustard said: get interested in the business. This is especially important if you work at the bottom of the stack. You must understand what you users (higher-level developers) want, what the company's customers want, and what the company itself want.

- You must decide where you want to go next. The first thing you should think about is: three years from now, will you take the Manager path (lead a team) or the Individual Contributor path. If you choose IC, do you want to specialize, or you want to broaden your skillset and become more of a generalist? In any case, I would say work on soft skills, broaden your horizon (e.g. learn new languages, write front-end code if you do backend and vice-versa, etc) and learn one to three domains very well (look up "T-shaped", this is where you want to go). But focus on the part you will need the most for your next step.

- If you go for the generalist IC route, try to work as close to production as possible. That means: deploy your code, monitor what it does to the servers (or machines) it runs on in the wild, watch how real users use it. Also, it is time to learn how your tools (build system, programming language, OS...) work.

- If you specialize, pick something with a future, engage with the community, and if possible with Academia. Sometimes when I talk to engineers and mention I read research papers they think I'm crazy, but there is no way you'll be good at an R&D topic if all you do to keep up with research is watch videos and read popular science blog posts.

- Have fun. Don't burn yourself out working too much. Keep doing fun side projects, they teach you things you don't learn in a professional setting.

mnm1 3 days ago 1 reply      
Be skeptical of all the advice and best practices you read about online. It's mostly fads and fashion with a few useful gems that might not be so obvious. Implement what measurably works not what some blog or news link aggregator site thinks should work. Shoot for simple over complex.
flavio81 3 days ago 0 replies      
After about 26 years programming -- that is, since i was a little kid, this is what i wish i would knew, not only 4 years in, but also on my 1st year at doing actual paid work:

-1. That I should have jumped in straight into Lisp from day one.

0. That popular technology does not mean that said stuff is the best, great, good, or even acceptable. Example: PHP 4.

1. That the industry raves about a seriously, seriously crippled and flawed language (Java)

2. That "Design Patterns" are mostly workarounds for the problems introduced by flawed languages (again, Java and friends); not great ideas to be proselytized.

3. That Object-Oriented-Programming is not only done in the way of C++ or Java, but that there are much superior ways to do OOP. (i.e. Smalltalk, CLOS)

4. That if you want to solve complex problems in a productive way, you need a multi-paradigm language. Strict-OOP languages or Strictly-Functional languages will limit you, unless the problem is really suited to it.

5. That the "Blub paradox" is real. Programming languages are not equal.

6. Real world (i.e. commercial, production) software should always be done by experienced people, not by juniors.

7. A seasoned (say, 8+ experience) programmer can done things 8 times as fast as a junior (graduate) programmer. I've seen this firsthand.

8. Dilbert -as others have pointed out- is a documentary.8.1 Corollary: Pointy-haired bosses are real.

9. The customers will always think everything has been done using Excel Macros.

10. The salesmen are very important to the health of the company, so don't make fun of them; rather, make friends with them and help them get aligned to what the technical team is able to do.

ams6110 3 days ago 0 replies      
- Many things that seem new and innovative today (virtualization, containers are two examples) were actually invented in the 1970s. Learn some history.

- Don't get caught up in hype. Technologies go in and out of favor. Not long ago the idea of writing a application in JavaScript would have been laughed out of the room. Today the idea of building applications in Perl seems antiquated. The truth is it doesn't make a lot of difference which language you use, and no matter what you pick it will probably be less popular in 5-10 years if not virtually abandoned.

jaylynch 3 days ago 0 replies      
Learning new things is great but don't be afraid to reach for familiar tools.

Using one or two new things on a project rather than 10 you'll be both more likely to get somewhere, and more likely to pick up the newer elements well.

Malice 3 days ago 1 reply      
* Functional is generally better but don't be crazy about it.

* Have tests but don't be crazy about it.

* Keep your development process as streamlined as possible.

* New languages generally aren't as hard as you might think and they might be the right tool.

* The right tool for the right job can make a huge difference.

junkilo 20 hours ago 0 replies      
1) Learn one thing really well and stick with it until you master it. Human confidence isn't wired to derive satisfaction from breadth of skills. The stronger single skills you develop, the easier it becomes to develop context and understanding as you add to your skillset.

2) Get solid on the basics and stay current: data structures, algorithms, computation and basic operating systems. Without these you'll never reach high levels of competency.

3) Develop boundaries. I've seen stellar developers reduced to a pile of depression and anxiety by poorly trained managers getting them to overcommit. Learn to know what you know well and what you do not know well. Push the rest back onto your manager and make them do their job.

4) Take time to enjoy and savor this time. We're in an age of technology that has never before existed.

bflesch 3 days ago 1 reply      
- Don't stress about code coverage metrics.

- Don't use the next big thing before actually understanding the benefits only because someone else tells you to. (Looking at you, Angular and Docker!)

- Stay away from programmers who have strong opinions about certain things. Most of them can't back them up with skill.

kenshi 3 days ago 0 replies      
Separate the code you do for work (delivering a product/service) from the code you use for learning and experimenting.

Keep your work code as simple as humanly possible.

Do your experimentation elsewhere (using the time gained by keeping your work code simple).

Your future-self, your co-workers, and your client will be grateful.

mattkenefick 3 days ago 1 reply      
Read more into things than you need to given the opportunity.

Let's say you need an icon for something, but don't know much about design. Once in a while, try making it on your own. Learn about the pen tool, image formats, etc.

Let's say you need a simple SELECT from MySQL. Read more into how they actually work under the covers, in large-scale environments, or how they change for MSSQL / Postgres.

Let's say you need a particular jQuery function.. take a few minutes to read the source and see what it's actually doing.

If you take a few minutes each time you do something unfamiliar, you'll gradually build up a better understanding and larger skillset without having to put in too much effort.

LocalMan 2 days ago 0 replies      
1. Many managers and customers really do not know what a computer is. At all. We know they don't understand code. Many don't even understand data. This problem very slowly dissolves over the decades, as the populace ages and gets replaced.

2. Personalities matter more than technology.

3. Don't let people drive over a cliff, just because it's their responsibility. Remember, you're in the same car. In a matter of life and death (of the project, or the company) grab the steering wheel. Of course, you'd better be sure you know what you're doing.

4. Out of desperation, some people will sabotage you and then blame you for it. Sometimes there is nothing you can do.

5. Always maintain a good working relationship with the person you're working for, whether a manager or a customer. Chat more often, even if it is uncomfortable. Especially with idiots.

6. Some people will be afraid of you, if you have greater expertise. They need to be flattered.

7. Seek out and learn from those who know.

8. Notice I said nothing about technology.


Beware the changes in technology. I spent decades in an environment where saving a few bytes mattered, and C compilers were just okay. The coding style I developed is now obsolete in the era of gigabyte memories, and too hard to read. Change with the times.

agentultra 3 days ago 0 replies      
> What advice do you have for programmers just hitting their stride?

Stop calling errors, bugs. They're not cute things that just happen because all software has bugs. Software has errors. Trust your instinct to leverage tools to manage complexity and reduce the likelihood of introducing errors. Lean on sound typing, formal specifications, invariants and property-based testing. Learn to love restrictions.

Remember: tests prove the presence of errors, not their absence. It's much more powerful to state, formally, what your software will not do.

Also be creative and play. Take an idea to its extremes and let the haters hate.

Programming is beautiful!

eps 3 days ago 0 replies      
Invariants is the key concept to writing good code.

Going for a walk and thinking things through yields better code faster than iterating over it hands-on.

Frameworks are overrated and often a source of ephemeral knowledge and code bloat. Think twice before committing to a framework or a 3rd party library.

Also, picking a good name for a variable may take up to a day.

kitd 3 days ago 1 reply      
A reliable build pipeline is your most valuable asset. It could even be argued that what you build should be determined by whether your build pipeline can build it. Tinker with the pipeline at your peril. Be very careful what you do with it. Only when you are sure it works, submit new capabilities to it.
intrasight 3 days ago 2 replies      
Find another profession. Unless you really love programming (I do). I am well compensated, but my contemporaries in other professions are better compensated - from two-fold to ten-fold.
caleblloyd 3 days ago 1 reply      
Use strongly typed languages for large projects
novaleaf 3 days ago 1 reply      
I started off in .net, where historically all functionality not provided by the .net framework is offered at a financial cost.

if you don't have a large team (who can help with bouncing ideas, etc), the benefits you get from using module ecosystems like npm or pip can not be understated.

dom0 3 days ago 0 replies      
That it's not a competition on writing dense code.

People tend to not say what they really want. Become good at finding the actual requirements. As a CS student, if there are requirements engineering courses, do take them.

For many projects implementation is the least important part of the project.

Professional conduct is worth a lot.

Udo 3 days ago 0 replies      
I'm in my fourties now, started programming when I my parents finally relented and bought me a Commodore at age 10. My point is, when I was 14, things were quite different - mainly because information was hard to come by and it all depended a lot on what the people in your vicinity could teach you. However, I found one similarity to modern programmers starting out:

I wish I had known more about what was actually going on behind the scenes as my code executes.

In my time, I knew my knowledge was lacking, but being poor and relatively isolated I had few options. Today, factors conspire to leave new programmers largely unaware there might be problems in the first place.

Nowadays, we have way better tutorials that teach people how to use effective programming methods, but we're still failing when it comes to imparting the understanding necessary for programmers to make mindful decisions about trade-offs.

I also wish I knew more about persistence and communicating what I'm working on, it's something I'm still trying to improve. When I was just starting out, I was working on a text editor, but gave up because I thought it was superfluous. When I was about 16, I had made a pretty good game (in hindsight), but gave up on it because I thought it wasn't good enough. My life might have turned out differently if I hadn't been so shy and uncommunicative at certain points.

willwagner 3 days ago 0 replies      
Here are a couple things that have served me well:

* Own what you own 100%. Be proactive, ask questions so you understand context, and raise concerns along with possible solutions when they pop up.

* Help others when you can. If you are going to be in this industry a long time, your network of colleagues and friends will help you long past your current gig. They can help you solve problems and avoid bad technical choices and when you are ready to move on, they can help you find a new job. The kindness you show others pays off in many ways.

* It's easy to get emotional when you are passionate about a job or a project and that passion can quickly turn into anger. Before sending an inflammatory email, sleep on it.

* Learn the tools of your trade well. Know your editor, debugger, devstack, monitoring tools, deployment tools, etc. I'm a bit hyperbolic but the single best thing I did in the last 20yrs was learn vim well.

* Work hard but pace yourself. Put aside time for yourself to stay healthy.

* Enjoy the moment even when it's stressful. You'll eventually look back on your career and see that the highlight reel features some "against all odds" moments and battle scars.

* Keep learning

qdev 3 days ago 0 replies      
Been a developer for over 15 years in the Vancouver area.

Various bits of advice:

1) Pay attention to the severance package when you sign your contract. When you join a company, you probably aren't thinking about what happens if things don't work out. But let's say you end up working there for 10 years, bad times hit, and you get laid off. You don't want to be surprised to find that you only get the minimal statutory limit. Some companies, I conjecture the larger ones, will have more generous severance packages.

2) Be cautious about choosing to work in "branch offices" which aren't involved in key decisions in products/features. You may find yourself limited in how you can grow, both in terms of scope of technical projects and scope of career path. This is probably a bigger issue if the region that you live in is not a tech hub like silicon valley.

3) When I was younger, I was completely focused on programming and "software craftsmanship". In fact, many of the problems in commercial software development are people problems -- team co-ordination, process improvement, empowerment, motivation, etc.

Dzugaru 3 days ago 2 replies      
I wish I knew the Functional Way :)
jargnar 3 days ago 0 replies      
Lots, but these 3 points stand out for me:

* that there are too many things to build and too little time, so don't code for the sake of coding, but solve problems and touch more lives

* that I could have supplemented my coding skills with business skills, and built something that made me money

* that life is short, and coding isn't the only thing to do


Bonus tip: strong CS fundamentals, math > new hip language, new framework

Kequc 3 days ago 0 replies      
I wish I had learned to keep my head down and code without the expectation to release. Because nothing I released in the first 4 years of programming professionally was good, at least not by my standards today. Try telling me that 6 years ago.

I was dead set on building entire products, it's why I loved programming. It was why I love lego. But in hindsight it would have been a better use of my time to work on smaller projects and ideas. As almost nothing ever got finished before I was working on something new. I have very little in terms of a tangible outcome from that time period, and it extended beyond those first 4 years.

Now I wouldn't want to work on a full product before I knew I had all the larger parts finished first. I wouldn't want to work on those larger parts before I knew I had the smaller parts those larger parts depend on first.

Programming with this mindset has provided me not only with endless work to do. But less stressful, more satisfying, easily digestible work with semi regular tangible outcomes.

stevepotter 2 days ago 0 replies      
Tons of great stuff and I'll add what I can from 15 years as a full-timer preceded by 10 years as an amateur. I've in settings ranging from a startup I founded to a large insurance corporation. I'll just keep it to bullet points:

- Relationships are key to your career. Align with good people and maintain those relationships.

- The product is more important than the code.

- Keep up with the latest tech, but don't necessarily use it.

- When starting a new job, learn the business first. Understanding what the product does and why is crucial and doesn't take long to learn.

- Avoid an adversarial relationship with other departments like marketing and accounting. Work together with them (back to point 1).

- Share your wisdom, don't hoard it.

- When you are no longer curious, something is wrong.

- Writing code is simply that. Enjoy it, don't glamorize it, and try not to obsess over it.

tekstar 3 days ago 0 replies      
To really understand what's going on you, learn your tech stack at least 1 layer of abstraction lower than the layer you typically work in.

The biggest wins are where you make a good decision that avoids an entire class of bugs or an avoid having to write an entire layer of software. These are also the hardest wins to measure.

Pick something you are genuinely interested in and learn it very, very deeply. Don't jump around constantly or you won't have insight.

One thing I wish school taught was code maintenance. Most of the code you write has a shelf life of a few weeks as you fulfill your assignments. Bad decisions only come to haunt you after months.

You need to watch for new technologies that matter, but 90% of what is new will not matter. One technique I've seen work is to build a list of people in the industry you respect and watch what they're interested in.

Joeri 3 days ago 0 replies      
- If you haven't done so, learn functional programming properly, it changes the way you think about code. The coursera scala funprog course is a good way in.

- Design for maintainability, not ability. Code should be simple, maybe even a bit boring, and not trying to be too many things. YAGNI and KISS. This gets rid of a ton of time wasting down the road.

- When faced with a standard problem, use standard solutions. Use popular proven languages, libraries and frameworks, instead of the hip new thing. This saves time which you can invest in the parts that are novel and require novel solutions.

- Understand the business value of the code you write, and the political process that produces its requirements. This knowledge will create opportunities to earn more, do more interesting work, and have happier users.

AnimalMuppet 3 days ago 1 reply      
Learn how to evaluate trade-offs. Not everything is black and white. Given two alternatives, both of which have advantages and flaws, learn how to decide which one is better (and why).

Learn a sense of... I want to say "taste", but it's more concrete than that. Learn what the bad ideas are, and why they're bad. Learn a sense of "that doesn't feel right" that's technical, not just aesthetic.

Learn what it's like to maintain a two-decade-old code base of a million lines or more. See what the problems are. Think about what you're doing when writing new code that's going to create some of those problems.

Learn to document what you're doing to an appropriate level of detail. Take the time to do so.

pawadu 3 days ago 0 replies      
Don't be a snowflake.

If everyone are using X, don't go with just Y because it is slightly more elegant or efficient.

galdosdi 2 days ago 0 replies      
I wish I'd realized that I wouldn't enjoy it anymore and be bored of it after 15 years, and that I invested in a skill that despite paying well does also put me in the line of fire of cardiovascular disease, carpal tunnel, feeling like a zombie from sitting alone in front of a screen all day, and general burnout from death marches and the like.

It took me a long time to get this bored of it though, so if you are similar you should be OK for a long time maybe.

If you get paid well, don't spend to match your income. Save as much as you can. You never know if you'll lose the drive 10 years in.

I know the world of code can be very exciting, but after a lot of work you start to see there is nothing new under the sun and you fix and write the same old things in different forms. And most of the problems you grapple with are man-made, like the idiocy of using languages without static typing voluntarily

yamalight 3 days ago 1 reply      
That nobody cares which language/stack/libs you use as long as it works.
madiathomas 3 days ago 0 replies      
- Use stable tools(language, IDE, frameworks etc) with proven track record

- Use tools and programming language that you personally enjoy, not the one trending on tech sites like Hacker News

- Focus on mastering at least one programming language

blt 2 days ago 0 replies      
I spent too much of my studying effort on being a programmer. Mastering C++11 features, writing SIMD assembly, reading Agner Fog manuals to learn the x64 ABI and instruction timings. Implementation stuff.

Those things are important, but I focused on them too much. I should have spent some of that time on higher level math-y skills like machine learning, numerical optimization, vision, NP hard approximation algorithms, computational geometry, control theory, etc.

skynode 3 days ago 0 replies      
Expand your experience with C#, Python and JavaScript. Nothing gets past those three (you could add SQL to the mix). Take on as many projects as possible, preferably with increasing technical (not business) difficulty. If you plan on starting your own company, get in bed with someone with stellar business development/marketing skills, while you focus on developing/maintaining the product/service. Under this scenario, also retain the services of a good lawyer. You'll be happy you did.
Const-me 3 days ago 0 replies      
Theres no universal criteria of code quality. The same source code can be terribly bad for one project, and 100% perfect for another one. Dont just blindly trust what other people say or write about the subject, when possible ask them why they advice stuff.

Learn algorithms and Big-O just enough to pass job interviews, deeper understanding of these is nearly useless in practice, at least outside few narrow niches.

Learn to design and code safe and efficient multithreaded software. While not often asked on interviews, youll do that over and over again regardless on languages and platforms, because nearly all modern CPUs are multi-core.

Learn to use other peoples libraries and third-party tools. While their quality vary, good ones can save you tremendous amount of time. BTW, an IDE is one of these tools. Just dont forget about costs (some might be too expensive for particular project) and licensing (some are GPL).

Dont afraid to change jobs. Just that youre working with nice people is not a good reason to stick to your employer. Make sure you learn new stuff, skills degrade over time as the industry moves to new technologies and platforms.

kabdib 3 days ago 0 replies      
Learn how to work with other people effectively (not just programmers, but PMs, finance types, legal experts, etc.) Took me like 15 years to be any good at this at all.

Get exposure to customers. Try to get involved with decisions involving them. Many companies actively discourage engineers from having customer contact; this is bad, IMHO.

Get exposure to the financial side of whatever industry you're in. You don't need to do official work, but definitely make sure you understand how your company makes money and what its risks are. (Do a start-up or two; this will give you a visceral feel for what money is worth assuming the places you work at are run well).

Read a paper a week (e.g., something from usenix or the ACM, or whereever). Sites like The Morning Paper (https://blog.acolyer.org/) are pretty good; the thing is not to get caught in a rut.

If you're doing IT work, get involved in dev work. If you're doing dev work, get involved in IT. These feed pretty heavily off of each other and operational background will boost your engineering skills as much as coding skills will help your IT work.

Things I wish I'd studied harder, earlier: Statistics, practical aspects of databases and SQL, at-scale networking [didn't exist when I was a sprout], practical aspects of operating systems implementation (the stuff they didn't teach you in your course at school), maybe the first six months of an EE course . . . I could go on for quite a while. The good news is that there's no way you'll run out of stuff to learn, not in your entire career, and it's all (usually) applicable at some point.

sebringj 3 days ago 0 replies      
By the sheer number of responses here, this is a testament to how personal each coder's experience is and how much they value it unto itself. Coders care about the work they do and especially in the beginning find their choices to equate to who they are, tending to find unwanted changes or revisions to their code by others' hands as annoying or encroaching upon their precious domain, at least for me.

To this day, I still get very annoyed when someone takes what I have done, completely reworks it or even throws it away, doing something else that IMO is more complex and difficult to work with. My values have shifted from doing the quick and custom style to moving more toward standards and TDD in a style that everyone can pickup easily and understand.

This has made my work so much more productive in getting to the final production quality by a factor of not less than 2. In my youth, I spent 99% of my time fixing code as it broke. Now, I unit test and in many cases, end-to-end test with TDD frameworks providing myself with a much higher probability of success when pushing to production.

quantumhobbit 3 days ago 0 replies      
There are sexy tasks and unsexy tasks. Don't be a hero and do the unsexy tasks for the good of the team or company. You will become typecast and soon won't be able to get any of the sexy tasks. Your boss will stop investing in your career and you won't be competitive when you try to get a new job.

You actually have to play politics to be allowed to do your job to the full extent of your abilities.

lackbeard 2 days ago 0 replies      
This advice is situational, but if you find yourself on a team with some experienced, talented, productive programmers, pay attention to what they're doing and learn as much as you can from them. (Things like: what they choose to spend their time on, what trade-offs they make, how they evaluate technologies, when they listen to customers and other stakeholders and when they ignore them.)

Most programmers are short-sighted, selfish, and lazy, so it's unusual to find yourself with a group earnest talented people who have experience. Appreciate it, and take advantage of it while you can.

jmcgough 3 days ago 0 replies      
(Not at 10 years, but...)

Take care of yourself. You are not a robot. Showering, skin care, hair care and sleep are important. It's worth it to go to a good stylist regularly. If you're happy, you're doing better work, and most importantly you're more approachable to your coworkers.

Don't ignore mental illness. It needs to be dealt with aggressively, on multiple fronts, until you've figured out the right ways to cope and be functional.

You can't just code alone in a corner. You need to socialize with your team, or you'll miss out on the meta knowledge (patterns, styling) that's being passed around the team.

You are smart. Give it a few years, and those impossibly talented and brilliant senior programmers will be your peers.

Don't be afraid to refactor and change code. The person who wrote it didn't know what you do now, because business requirements are constantly changing. Be aggressive - sticking TODO statements in code isn't going to fix technical debt.

kobigurk 3 days ago 0 replies      
Enthusiasm is great, but over-working and burning out is easy to get to - so make sure you take care of yourself.

Be delivery-oriented and don't be afraid to make design mistakes - it won't be perfect on the first time anyway.

Know more than your niche, get out of your comfort zone once in a while.

Respect your co-workers - even if they make mistakes, it's OK, you will too at some point.

raintrees 1 day ago 0 replies      
How important documentation is. Having to go back to code I wrote years ago, figure out what I was trying to do, relearn specific add-ons/libraries that were only used for that project, then figure out all that has changed/abandoned in the intervening time, avoiding the temptation to start by refactoring... Very difficult, and very easy to be doing unprofitable work because my state of programming mind is so much different each time than the project that is now years older.
dahart 3 days ago 0 replies      
In retrospect, I wish I had spent half as much time learning how to be better at social and team-building skills as I did learning programming. Both as a team member, and as a manager.

During my career I've spent a lot of time resisting and rejecting the overhead of time spent reporting what I'm working on and to some degree careful planning for the future. Like a lot of programmers, it only takes one or two short meetings a week before I feel like it's too much and meetings are a massive waste of time.

My first real job coding CG effects at DreamWorks, I got a black mark in my personnel file in my first 6 months for complaining about being asked to show my progress once or twice a day. It was during a 3-4 week coding project, and it took about and hour to prepare for dailies, so it seemed to me like I was being asked to sacrifice 25% of my productivity, to the detriment of both me and the company.

A few years later I'd been working on a shot for a month, thought it was exactly what they had described, and pretty good and close to done. But it kept not being finaled. Three months later when the director approved it, I looked back at what I thought was near done month 1, and it was crap. I realized that we sit in meetings and describe in articulate detail what we want to achieve for hours, everyone agrees vigorously, and people still walk out of the room having completely different ideas. I realized I need the overhead for course corrections for what I'm doing -- I will veer too far away from what others want without fairly continuous feedback. After seeing that in myself, I see it everywhere with others, programmers working too long by themselves will make what they want and not what the team needs.

Communication is what I want to improve. Not more of it, but how can we make it better?

I also wish I'd gotten out of C++ and into web earlier. ;)

rudyrigot 1 day ago 0 replies      
It's all about business/user value. You're not solving useful problems if they're solely technical and don't solve anything useful for someone else. Solve business/user problems with technical solutions, and (1) people will like you more, (2) feeling useful is gratifying, (3) you'll feel more productive with less code, since you'll be focusing on the right output vs code.
tchaffee 3 days ago 0 replies      
1) Wherever you work, find at least one good mentor who is better at coding than you, and who can hopefully teach you a little about soft skills too: negotiating, company politics, making presentations, and so on.

2) Most companies have zero loyalty to you. They will fire you and thousands of others the minute they are in trouble, and without hesitation. If you're loyal to a company it's a one-sided relationship. Take care of yourself, the company will be fine without you.

3) Age discrimination exists, and it is VERY harsh. And your brain will eventually slow down while technology ruthlessly and quickly marches on. You might find it tough to keep up due to either or both of those factors. Save up early. Be able to retire by 45. Keep working if you still love it.

EDIT 4) Get EVERYTHING in writing. Happened in a conversation? Follow up with a simple email "Just so there are no misunderstandings, I wanted to confirm that..."

bbcbasic 3 days ago 0 replies      
Work for profitable companies. The company that can barely afford you won't give good pay raises and will have lousy practices borne from the need to make ends meet at any cost to technical debt.

Also some aspect of your job will always suck. Even if you find the perfect job the manager can change or even company gets taken over. For control you need to run your own biz.

gry 3 days ago 0 replies      
It's never a technology problem. It's always a people problem.
twsted 3 days ago 0 replies      
As in all the disciplines, the most important 'tool' is the experience, and that - a va sans dire - needs time.

That said, I think the best advice I can suggest is Divide et impera, https://en.wikipedia.org/wiki/Divide_and_conquer_algorithm

kenshi 3 days ago 0 replies      
Write some documentation.

A high-level design document of any significant system and subsystem is worth its weight in gold (or: programmer hourly rate * time to get up to speed on system).

This documentation will also help you in a years time when you need to either maintain that system, or need to remember how you built it so you can build something that is 90% similar to it for another project.

random_coder_nz 2 days ago 0 replies      
The most important lessons in coding have little to do with coding and a lot to do with people - code is written for people not the computer.

The more you know the more you will come to understand you don't know much; that is both good and bad (Dunning Kruger vs Imposter Syndrome).

Every time you think you are the best in the room, look around and ask yourself are you overestimating your knowledge. If you are still the best in the room, maybe it is time to find a room with smarter people.

Not every solution requires code / technology.

The best code is easy to read and even easier to delete.

Give your code to the most junior member of your team - if they struggle with it you need to make it simpler.

There are many many lessons like these around - the single most important one - always be open to new ideas no matter how much they oppose your current beliefs; strong opinions, weakly held.

mmphosis 3 days ago 1 reply      
"4 years in" I am not sure what "in" means, but I started getting paid for programming in 1984. So, what do I wish I knew in 1988?

I think you already said it: "I'm also realizing there's SO much more to learn."

Don't stop learning. It was probably around 1988 when someone suggested I look into Lisp and I dismissed the comment at the time, although I did look into AI. I do wish I had known more about Lisp, not necessarily programming in Lisp, but just the knowledge of the concepts that come out of learning Lisp: garbage collection, stacks, lists, trees, macros (not the terrible C macros I was using at the time but Lisp macros), parsing, code generation, profiling, the benefit of programming in a more functional way, and I am probably missing a lot of things here I take for granted. Don't stop learning.

tjansen 3 days ago 1 reply      
Make sure you're not the only person who can work with your code. Make yourself easily replaceable, on a project level.

Otherwise you will get calls during your vacation; you may not be able to work on other projects, switch teams or even get promoted - or if you do, you will still be supporting the code you wrote years ago on the side.

ainiriand 3 days ago 0 replies      
Leadership and conflict solving through empathy. Also public speaking.
Clanan 3 days ago 0 replies      
I've only developed professionally for ~6 years but here's the mandatory non-answer: make sure you prioritize "life" things too, especially when doing full-time plus side projects. My kids are still young but I already wish I had spent even more time with them when they were teeny.
epaga 3 days ago 0 replies      
"Clever" usually ends up being a negative word when it comes to programming solutions. "Elegant" and "simple" are far more important. Keep searching until you find a solution that feels elegant and simple. If you're sure there is none, only then write clever solutions.

I also wish I had known to buy some Bitcoin.

jecxjo 3 days ago 0 replies      
Everything should be done in moderation. Eventually you learn how to only put forth the amount of energy required of a task. While it is fun to do things in new and interesting ways, the name of the game is least time spent.

This also applies to how much energy you put into your work. I started out trying to meet crazy timelines and for the most part I did it. But eventually it became the norm and I couldn't keep up. It took a lot longer to get managers to understand that nights and weekends are not sustainable.

Lastly I would have jumped ship sooner. I've been working for the same company for 11 years and now that I'm in the market for a new job, no matter how much I tried to diversify myself within the company, I don't always have specific skill sets these new positions are looking for.

annnnd 3 days ago 0 replies      
That you can learn anything the way you are learning programming - by reading, trying, failing, trying again, debugging, trying again... You want to have a successful software business? Learn business, not just programming! You want to grow your business? Learn marketing / growth hacking!
moomin 3 days ago 0 replies      
Some really simple technical principles:

Explicit is better than implicit. All state is hard to reason about and debug. Code that doesn't have tests is brittle. Short code is better than long code and no code is better than both. Inheritance of implementation is hard to reason about.

Some technical advice:

Write comments about why you're doing something, not how. Write lots of comments. Check preconditions, especially nulls. Write explicit error messages for every failure: you'll be searching for them one day.

One non-technical thing:

Understanding the problem you're trying to solve is often better than any technical knowledge. Understand the business processes, the users and the people and you'll find you're vastly more effective.

royjacobs 3 days ago 1 reply      
That while C# is probably a better language than Java, the Java ecosystem is so much more innovative and open.
bartwe 3 days ago 0 replies      
That making a lot of crappy stuff is a much better way to learn than making one thing perfectly.
giancarlostoro 3 days ago 0 replies      
I'm more or less on the same boat. My advise is, don't let it overwhelm you, learn as the need arises (or you have a burning interest in something). At work I've done a handful of languages (web development can do that quite quickly these days) and I've not been here a year. On my own time I experiment with D and Rust, and maybe soon Kotlin. Those are my languages of interest, I don't do something every single day for hours on end, but now and then I open up an editor and play around with one of those till I find something to build on my spare time. Chances are as you get new jobs you'll learn new languages and stacks, so don't be overwhelmed. How many co workers do you see doing 50 projects in 50 different languages and stacks all at once? ;)
yehohanan7 3 days ago 1 reply      

- "how to solve it" by george poyla

- asking more "why"s to problems

MichaelMoser123 3 days ago 0 replies      
In order to get somewhere you have to commit yourself and invest a lot of time and effort; however if you overcommit then burnout and disenchantment will follow... Now finding the right balance is hard, if you know some good advice then let me know (I still haven't found it after 20+ years in the profession).

It is important to meet the right people that one can learn from (who are ready and able to share their knowledge).

Spending too much on sites like HN/slashdot/reddit is a bad idea. Again one has to find the right balance (and the right sources of information that do not turn into time sinks), balance is important like with the other stuff ...

oxryly1 3 days ago 0 replies      
Most programmers (you included) will tend to build things not because they are the correct solution for the problems at hand, but because they are interesting and just happen to solve at least some aspect of the problem.

When this happens repeatedly over time in an organization you wind up with a large, complex codebase that tends to solve problems in pieces and at scales other than the correct level (i.e. as the user experiences it).

Usually, the best approach to solving the largest portion of the problem at hand does not involve writing code, and if it does, it won't be code you are interested in. Such is life as a programmer.

czue 3 days ago 0 replies      
This might sound cheesy but mine is to pay attention to your inner state of mind. If you love coding then don't let yourself get drawn into management just because it's "advancing your career", and likewise if you find you enjoy making a broader impact through managing a team or expanding your skillset then do that and be okay giving up code.

If you start going down a path that makes you feel less happy, take a moment to ask yourself why that is, and what you're getting from that tradeoff. If you can't answer that question in a way that makes your inner mind happy then figure out a way to change course. And a slightly higher salary is not a good reason.

cbanek 3 days ago 0 replies      
Learn how to test your code. I'm not just talking about unit tests either, or TDD, which I find are nothing more than buzzword bingo.

Take your testing as seriously as your development. Not just in the details of the implementation, but understand your user and your use cases. Write end-to-end test suites, integration tests, and unit test complex logic.

Don't be one of those "unit testing is enough" or "I TDD all my code." I find the more time people spend on little testing, the bigger problems seem to fly through to prod.

logfromblammo 3 days ago 0 replies      
Don't get so involved in technical details that you don't pay attention to the business.

Your company will try to stab you in the back one day, so you have to keep an eye open for it. Always reserve 1% of your career energy towards looking for a new job greater than or equal to your current job. Whenever you find one, take it, and just keep on looking. (If you do contracting, never let any single client represent more than 50% of your total income.)

It's harder for them to hit a moving target. And even if they do get you, they're more likely to just wing you instead of hitting something vital.

porker 3 days ago 0 replies      
People who shout in your programming community that there's "one true way" to do something and gain 'guru' status will either disappear or be telling your/a different community a different "one true way" in 4 years's time.

I wasted years trying to do things "properly" (completely pure OO in my case) when I could've been releasing software, and wasting effort anguishing over why I thought differently to the gurus.

Now I have no time for programming fads. But try not to go too far this way - it's easy to be too late an adopter too.

nils-m-holm 3 days ago 0 replies      
Before becoming a professional programmer, be sure you understand that programming for recreation and for money are two completely different things, otherwise the latter has a big potential to take all the joy out of the former.
Blinks- 2 days ago 0 replies      
I inquired about this to a friend of mine who was mostly self taught at first, he has now past the 10 years experience mark but is just finishing up school in between freelance jobs. One of the things he told me was to take a terminology/vocabulary class, you probably know most of it after a few years experience but even a slight misunderstanding in diction can have serious implications down the line. I was surprised how much I learned and how beneficial it was to the conciseness of my code comments.
lwlml 2 days ago 0 replies      
Sleep and high-intensity exercise are underrated as productivity tools.

Anger is best solved by not ruminating about it---the catharsis hypothesis is busted.

Read other people's source code of interest, closely.

Increase focus/limit distraction by limiting the work-in-process with Kanban-like systems.

Assembly language matters but abstractions can multiply the power of your systems. Conversely, too many layers of abstraction is a design-smell.

And soft-skills care not what programming language you speak.

Independently of work, learn a new language once a year.

Nursie 3 days ago 0 replies      
If you're any good, and confident in your abilities, you can go contracting for the (comparatively) big bucks without needing over a decade's experience.

Most people are not that good, or confident, even among higher earners.

tonescience 3 days ago 2 replies      
Sitting in front of a computer 60+ hours a week is not great for your body. Take the time to understand good ergonomics, buy yourself a great keyboard (like the Kinesis Advantage), and ditch QWERTY.
1001101 3 days ago 0 replies      
- Find the tools that work with you to improve quality and productivity, for me that's: Syntastic Vim plugin (with 4x C/C++ linters), cscope, valgrind, asan

- If you do something more than once, automate it. Create a script, write a bash alias, something

- Keep reading; Go to conferences; Get a subscription to O'Reilly Safari - worth every penny; It's easy to become a dinosaur as a programmer

- Step through every line in your code - TDD is a good way to do this (corollary: figure out a good TDD methodology for your workflow).

Good luck!

makmanalp 3 days ago 0 replies      
1) When adopting tools, methodologies, and practices, think about /why/. Don't use things because they're "good practice", look at what problem they solve, see if they solve your problem, adopt or adapt accordingly.

If you're going to use design patterns, great. But don't argue about the exact official gang of four definition of the facade pattern - a more productive conversation is about which specific bits of the pattern help you solve your problem and which are an impediment.

Tests great, but when you're just starting a brand new project where the behavior and spec is changing as you build and learn, should you suffer through brittle unit tests because "not testing is bad practice", or could you perhaps start only with integration tests, and wait a little bit until you start doing anything more granular?

Complex git branching / release / hotfix / etc schemes can be great in a larger organization, but when you're on your own, do you really need all of it or is it too much overhead? If you don't have a staging environment, should you have a staging branch?

Summary: a) Am I actually trying to solve a problem? What problem am I trying to solve? b) Is this thing going to solve my problem or a problem that I don't have? c) What can I change so it /does/ solve my problem?

2) In a large enough codebase, there is always bits that are shitty for a variety of reasons involving bad programmers, bad practices, no practices, bad requirements, terrible deadlines, old tech, whatever. You don't /want it/ to happen, but it will. Or perhaps you'll be dropped into that codebase, and so you'll have had no say to begin with. An unappreciated part of the practice of software architecture is about containing current and future shittiness, stopping it from spreading, managing the risk around that, not allowing that to impede current development, setting up a surrounding architecture, getting people on board socially to do the right thing, having a good plan to replace it and acting on that. "No new code until everything is clean and tested" sounds so valiant, but I'd like to see it happen in a 100 person organization with bills to pay. Alternatively, after you've contained things, then you can feel free to adopt such policies at a smaller scale within well-defined regions of the code.

tmaly 1 day ago 0 replies      
If you end up staying a few more years at the company, the code you write today, you will have to work on again at some point.

Since we read code more often than we write it, put a little extra effort into making your code easier to understand.

strictnein 3 days ago 0 replies      
This is more true now than it was back 10 years ago, but there is simply too much tech out there to have a solid understanding of it all. Be okay with not understanding the latest thing or cool new field because many times they fade away, no matter how popular they seem to be, and you simply can't understand all of it.

On this and other forums it seems like everyone knows everything, but that's only because there's a lot of people here.

f1gm3nt 3 days ago 0 replies      
Learn soft skills such as communication with different stake holders. You'll need to be very good at explaining tech concepts to non technical people.
andyjohnson0 3 days ago 0 replies      
Most of the code you write will probably be dead and gone within a few years. Get used to not being able to point at something and say "I did that."
praneshp 2 days ago 0 replies      
1. Learn gdb/pdb/whatever. With IDEs, it's even easier to set breakpoints, etc.

2. Try to setup a nice workflow in the early stages. To me, this includes setting up the code in git, and a minimal test/deploy system. This encourages me to commit often, make incremental changes, and rollback/switch branches frequently.

arnoooooo 3 days ago 1 reply      
I wish I had taken the time to understand LISP earlier.
Zelphyr 3 days ago 0 replies      
How much you can learn, and how fast you can learn when debugging. Now, whenever I start with a new company, I make it known during the interview process that I expect to spend at least the first 2-3 weeks (preferably more) doing nothing but fixing bugs. That's the best way I've found to get a solid understanding of the codebase.
ivan_gammel 3 days ago 0 replies      
Go beyond the code. Learn UX, DevOps, QA, look at other engineering disciplines. Improve soft skills. Learn management and laws. Learn design and arts. You may not become good designer or manager, and you'll probably never be a lawyer, but everything can contribute to your success on many different stages of SDLC.
davotoula 3 days ago 0 replies      
Test driven development.

Continuous integration first - first line of code second.

Understanding that writing code is a small percentage of my day - then there is testing, designing, writing docs, deploying, automating, infrastructure configuring, discussing with stakeholders,

Learning multiple languages - especially from different families (procedural, functional, scripting, low level, etc).

cdicelico 3 days ago 0 replies      
I wish I had known that programming was something I wanted to know how to do, not something I want to do with my life. :P
gits1225 3 days ago 0 replies      
I wish I knew the importance of working on an idea that is mine. You'll not be influenced by external pressure or constrains. You can build it how it should be built according to you. Along with following the right people and working with smart people, this habit has helped me improve my skills across different domains.
joeblau 3 days ago 0 replies      
More respect for testing on larger teams. Code regressions cost teams I've worked on 1000's of hours of debugging.
weego 3 days ago 1 reply      
That almost every job you get will highly prize pragmatism and general problem solving skills over pure technical know-how
sevensor 3 days ago 0 replies      
Hopefully you're three years into the "Teach Yourself Programming in Ten Years" program (http://norvig.com/21-days.html). If not, Norvig's advice is short and to the point, and well worth following.
jbpetersen 3 days ago 0 replies      
If you dig into the origins of a buzzword, it's highly likely there's a very valuable concept hiding underneath the accumulated cruft.

Had I known this sooner it would've sped me along considerably towards finding a lot of cool things that give me more motivation to program.

eggie5 3 days ago 0 replies      
Cracking the coding interview will get you a job at any tech company for pretty much any position.
dgregd 2 days ago 1 reply      
Take care of your health. Sitting long hours damages your spine. I learned this too late.
tpae 3 days ago 0 replies      
Be nice to the people that's taking their time to teach you. Don't take their time for granted.

Throughout my career, programming mentors have shaped me to be who I am. I've learned most of best practices through code reviews and from my mentors.

blinks 3 days ago 0 replies      
It's more important to make code readable than clever, and more important to be simple than fast.

It tends to be pretty easy to speed up readable+simple code when you need to do so, but fixing broken fast+clever code is much more difficult.

kevrone 3 days ago 0 replies      
I wish I had more systems knowledge (ie: better command prompt skills) and I wish I had spent more time learning about networks and ssh. Some of those concepts are really not that complicated but just _seemed_ impenetrable at the time.
NicoJuicy 3 days ago 0 replies      
Except for using what you know, and that tech doesn't really matter.

I would add that you shouldn't be afraid to use new tools is they get you to the end faster. Common case for me: I use c# for almost everything, but nodejs wrapped in an API for crawling

awjr 3 days ago 0 replies      
To have read Code Complete (now edition 2). I'd add Clean Code to that list as well.

Looking back 24 years, I'd also add, to be more involved in the local hacking community and participate in hackathons.

Anybody can code, but to make a difference, you need to network ;)

arwhatever 2 days ago 0 replies      
The sooner you accept and acknowledge that you can't find an entire project's code in your head, the sooner you can start incorporating that awareness into the design decisions that you make.
Xeoncross 3 days ago 0 replies      
Pick the language and tools everyone is using. They will improve quickly and where least expected simply because so many people are using them. A great mind will think "Hey! I could ...." (and do it).
ctocoder 2 days ago 0 replies      
I wish I knew that I should keep practicing all my math skills I spent 5 years perfecting, to loose them after 10 years and now I need it to truly understand ML instead of using API's
grandalf 3 days ago 0 replies      
Maintain a perspective of openness about the state of what you've built. At any moment you might realize that a smarter person could build it in a few hours using a better abstraction. That smarter person might be you.
sgt101 3 days ago 0 replies      
Your code should not be optimised to execute algorithms, it should be optimized to communicate intent. You write code so other people can read and understand it. Most other people are you, in six months.

You will thank me.

sidcool 3 days ago 0 replies      
I wish I put more time in thinking about the problem rather than jumping on solution.

I wish I designed a testing strategy for the feature I am developing.

I wish I learnt and embraced good engineering practices and spread those in the organization.

solomatov 3 days ago 0 replies      
Focus on learning fundamentals, i.e. things which will be useful in 10 or 20 years, like math, machine learning, algorithms, different programming paradigms, etc, instead of pursuing a fancy framework of the day.
atemerev 2 days ago 0 replies      
"Don't worry you'll never reach the superstar level. There's always time and space for improvement".

Still not a superstar, but my code became better in the last 4 years.

velebak 3 days ago 0 replies      
Software Development as a career requires a commitment to a continuous cycle of learning (and teaching.)

Your skills will grow, but the churn of tools and techniques will have you relearning things on a regular basis.

JohnDeHope 3 days ago 0 replies      
I was hired into my first cubicle around 1999, doing asp classic web dev. I've gone off on some side tangents here and there, but have more or less been building web apps using MS technologies to this day.

It's not them, it's you. Any problem you have is your problem and the solution is something you're going to have to do. Be it a compiler bug, deadlines blown through by partying interns, shoddy code written by contractors, insane deadlines imposed by self righteous VPs, etc. All of these problems are caused by you. You took these jobs. You fed the mice cookies. You didn't say no. You didn't spruce up your resume and blog on LinkedIn. You are the only person that is ever going to try to help yourself, so if you don't like what's going on, there is no where to look but inwards.

Every line of code is a devil, waiting to bait you. Every curious syntax, handy shortcut, convenient convention that only you and the few who read the docs will know about, is bait in a trap. It's better to write less code, simpler code, and code that eschews advanced features in favor of being obvious. Imagine yourself having not slept for 24hrs, being drunk, with a CRT monitor at 640x480, typing on a keyboard covered in elmer's gluge, and then write code you could debug that way.

In about 20yrs on the job I don't think I've ever seen a situation that truly called for more performance. I've seen bad processes that were too slow because they were bad, and I've seen inner loops that needed to be unrolled, and I've seen (written) code that was hitting the database in ways that were totally bonkers. Slowness is mostly about bad decisions earlier up in the decision tree. Unless you're writing trading algorithms or video games, you likely have no use for your program to run any faster.

Prefer bad working code over good code that still isn't producing any useful output.

Your choice and relationship with your spouse will have more of an impact on your career and long term happiness than anything in technology. Take care of home first. Then go to work.

You are going to need a few key side skills: public speaking, making small talk at parties, presenting to people above your pay grade, technical writing, etc. These are key differentiators that are more valuable than being able to write more or better code.

When you're feeling burned out, take a day or two off. If you aren't able to, or you do and it still doesn't help, then something deeper is wrong.

Cutting down on the drama of deploying and maintaining production software is just as important, maybe more, than fun during development. Yeah some languages are excrutiating to code in, but they run smooth, and that's worth a lot. And some languages are a lot of fun in the editor but a bitch on the server, avoid those.

Steal ruthlessly. Anybody who is doing anything cooler or better or faster than you, buy them lunch and ask them what they're up to. You don't have to follow in their footsteps, necessarily. But at least being familiar with other ways of accomplishing things really helps broaden your horizons when brainstorming or thinking about problems.

It's okay to take long breaks to do something else. You can always come back.

Make friends and stay connected. Your rolodex is your escape hatch if things get ugly.

You are a business. The product is yourself. You're the founder, CEO, president, etc. When you answer the phone, do so as the CEO of You, Inc. Ask yourself: if I was a business person, and one of my employees was representing my business to my customers the way I am doing now, would I fire that person, or promote them?

Knowing which rules are actually enforced and which rules are just for keeping chumps corralled can really help your navigate a bureaucracy.

Making friends with people who make and enforce rules can get you out of following a lot of those rules, or just provide back doors into the processes.

You pick your boss and at work that is likely one of the most important decisions you'll make. If you don't like them, find a new one.

michaelchisari 3 days ago 0 replies      
Study the abstract stuff. You'll never use it, until you do.
anovikov 3 days ago 0 replies      
The world of coding is cynical and this is a much dirtier business than it sounds, you can get away with almost everything.

Apart from startups: in startup, technical bullshit is replaced with business bullshit.

d1ffuz0r 2 days ago 0 replies      
Don't try to learn everything. Take 2-3 main areas and become an expert in these areas. Then keep revisiting every 2 years what you wanna be an expert in.
koolba 3 days ago 0 replies      
I wish I knew about FOSS earlier. After becoming involved in a number of projects I had the happy realization that there are many smart/crazy/fun people just like me.
wizzerking 2 days ago 0 replies      
The half-life of OS knowledge is only 3 - 4 years. So half your knowledge about Windows, or Linux is obsolete in 3 - 4 years
tapatio 3 days ago 0 replies      
You have to switch companies to get a large pay bump.
beaconstudios 3 days ago 1 reply      
build it to work first, then refactor the code to be pleasant. You often learn so much about the problem while getting even a rudimentary spaghetti code implementation working that you couldn't possibly have designed a comprehensive set of objects/interfaces up front, so get it running first, take what you learned about the problem and update the code to be readable and well-designed.
pknerd 2 days ago 0 replies      
A few points:

- Selling skills either by sharing knowledge in form of code or teaching/blog posts.

- Learning the fundamentals.

alecco 2 days ago 0 replies      
"How you do anything is how you do everything".

You don't get to complain if you are part of the problem.

legohead 3 days ago 0 replies      
Don't become a language elitist. Love all the languages -- there is something to learn from each...except Objective-C.
scalatohaskell 3 days ago 1 reply      
one of most important:

- get a mentor. Some chilled senior guy with lots of experience. Speak to him regularly to fish for knowledge. But don't get hung up on everything s/he says. Programming is huge field with lots of parts.


- there is no silver bullet

- simple is not easy (search Simple Made Easy by Rich Hickey)

- always be pragmatic

- there are indeed better approaches than OOP, which differ greatly in long run of project, and pay back (FP) later, and it matters

- avoid "the chase" of latest best-good thing, get productive in something that matures well

- don't ignore latest practices and latest progress just because of the above mentioned things. Keep learning and try to reapply new stuff (at least in your head) to range of problems you solved, and think if pro-s and con-s.

- avoid any heated discussions about languages

- keep your ego out of work

- the less you need to code, the better. You are paid to solve problems, not to churn code.

- finished is better than perfect. Don't gold plate your solution. On flip side, don't code shit and try to excuse it with above-mentioned sentence. Be pragmatic.

- types are your friends (and friends of your colleagues that have to work with your code), take time to learn how to leverage them

- unless you're working on life critical software, don't stress (even then don't, but...). If you feel pressure and stress, work on handling that. There is no point in being miserable because someone needs ability to put dog face onto a photo.

- you'll be programming for a lot more years to come. You may genuinely like and enjoy it throughout that period, or hate it. If you hate it, it doesn't mean you're not suited for programming, maybe you're not using language that suits you or allows you to express yourself clearly. Yes, people say languages don't matter. From your perspective as programmer, they do (they don't for business as long as it gets job done etc.).

- learn new language at least once per 1-2 years. No need to use it, just get familiar with it, it's design choices, it's public APIs, some internals. Language creators are generally very smart and you can learn from them a lot.

- Once you're a bit more senior learn from other (junior) devs. They're the ones usually chasing latest hot frameworks. They have time for that. Be appreciative about that, and take your time to listen to what they have to say, and what excites them, and how it relates to your experiences. It is also opportunity to grow.

- Try to contribute to open source projects. Not to build portfolio, github or whatever. But to give back some of the service. You'll be paid back by learning a lot.

darose 2 days ago 1 reply      
That you need a lot more than just coding skill to have a successful career in engineering.
saw-lau 3 days ago 0 replies      
Shipping is a Feature. The most important lesson I've learnt without a shadow of doubt.
killin_dan 3 days ago 0 replies      
Python is going to fuck shit up like you wouldn't believe. Jump ship asap
zamalek 3 days ago 0 replies      
Complexity isn't smart.
frobware 3 days ago 2 replies      
If you think you are in for the long haul then please buy a standing desk!
yuchi 3 days ago 0 replies      
Discipline: using, creating and sharing (among the team) checklists.
rcarmo 3 days ago 0 replies      
Python. I started out with LISP, C/C++ and Perl.
95014_refugee 3 days ago 0 replies      
Get. More. Sleep.
iamleppert 3 days ago 0 replies      
1. Use programming and software as a tool to accomplish your goals, and build a domain expertise in one or more industries.

2. Pick a programming language and/or ecosystem and stick to it. That's not to say there isn't power in being a polyglot, but in order to get really good you need to pick one thing and practice it. It's that simple. That said, do not brand yourself as any one thing or be too specific. The key is to both specialize and generalize. You need to be malleable enough as things change, but at the same time not constantly chasing your tail with the latest thing. This fine balance comes with experience, as most new technologies and techniques you will find are the result of someone rediscovering something. I can't count the number of times I've seen something rebranded as new or revolutionary that was originally published as a paper in the 50's or 60's.

3. Own what you do. Don't wait for others to come to you with problems, think about ways in which you should be improving your software via instrumentation and closed loop controls. Try to understand the users of your software and what they really want and need. Sometimes little things and details that are seemingly unimportant are very important indeed. Software is a way for you to directly influence and collect information about the world, so you can be constantly testing your assumptions and refining your model.

4. Do personal projects. It's the only way to avoid burn-out and to keep yourself interested. And in many cases, personal projects can shine the light for you on where to go next or what to do next.

5. Get good at interviewing others on a team and make yourself part of the interview process. Real team building is a far more valuable skill in accomplishing your goals as an engineer than becoming a manager.

6. Stay close to the tech. At a certain point you may find yourself in a position where you aren't coding or creating every day. Avoid this at all costs. It doesn't matter if you have a team, or if you're in an architect role, or whatever, you should have the code checked out at all times on your computer, have it working, and be able to contribute at a moment's notice. If at any time any of this isn't true for you, stop what you're doing right now and make it true.

7. Don't be afraid to throw out huge legacy code bases and start over from scratch. Nature does this all the time; it's called trial by fire. The second time you do something is always easier than the first and you can really eliminate a lot of debt for you and your team.

8. The first time you do something, if its not messy and weird you aren't trying hard enough or pushing yourself hard enough. The code will be awful. Don't strive for perfection in the code the first time, if it sticks you and others will have plenty of time to refactor and make it better later. I've seen tons of "perfect", unused code that has never seen the light of day again and its really sad.

9. Work for a variety of companies, small and large, startups, mid-size, big tech, and do freelance at various parts of your career. Different size companies have different goals, needs and problems and it will help you understand what is applicable to a Google does not matter at all to a startup or mid-size company.

10. Work for companies that are actually doing something, preferably new work, and try to match that to your interests at the time. Avoid places and people that are toxic and do not have a deep love of technology and do not identify as "nerd"/"hacker"/"geek" etc (unless you yourself do not identify this way..)

fb03 3 days ago 1 reply      
Unit testing.
gcp 3 days ago 0 replies      
thomk 3 days ago 0 replies      
You are going to learn cool new things along the way: just remember though, when you only know how to use a hammer everything looks like a nail. A better way to think of it is "Do not be clever". Write code in the most obvious possible way so you and everyone else that looks at it in 6 months can understand it.

Early on I was always tempted to prove how smart I was by writing very neat code that nobody could understand because I was using some esoteric library or a weird pattern that only kind of fit (although it worked). Don't do that. Try to be very VERY obvious and you'll thank yourself later.

Its easy to over-engineer any project, but I find OOP especially easy to screw up with outsmarting yourself. You've heard of "spaghetti code"? Well with OOP the dreaded paradigm is 'ravioli code' which is tiny little classes all over the fcking place.

Find a better way.

Another rule of thumb someone told me once is that your classes should not be longer than about 1 page of text. Now, before I get yelled at, yes, its very subjective. You could have 100 lines on one page and I could have 30, I get it. But I think the idea is at least it is some* point of reference so you yourself can judge if a class is trying doing too much.

I worked with an "Architecture Astronaut" (see: https://www.joelonsoftware.com/2001/04/21/dont-let-architect...) one time who was supposed to be giving me a way to access a flag in the database. Just a simple boolean that let me set something to, obviously, true or false.

This guy checked in a 200 line class and walked down to my office to teach me how to use it. Finally I said "can I just set the value manually?" "Sure" he says, "Just use this function" and he showed me a 3 line function buried in there somewhere. Last I heard he is still confusing everyone with his overly complex solutions to simple problems for Ford.

Programing is FUN, but it's also a profession. Don't get too lost in the fun of the moment. Write clean, obvious code and you'll see that you don't have to make things complex to have fun. You'll have more fun solving those big problems now because you made everything nice and neat and clean along the way.

I'll end on a quote from Blaise Pascal, Winston Churchill or Mark Twain (depending on how you google it) that I think applies here as well:

"If I had more time I would have written you a short letter, instead I have written you a long one."

This could be rewritten like this:

"If I had more time I would have refactored you a short class, instead I have coded you a long one"

Its a comment about editing (obviously). yes, write long classes then delete all you can to make them simple like I have explained above.


I should make this comment short, but I do not have the time.

brango 3 days ago 0 replies      
That chicks love older guys.
Ask HN: Is Hackernews still using the file system as database?
261 points by tosh  2 days ago   77 comments top 8
dchuk 2 days ago 7 replies      
While on the "how HN works" topic, I have a question:

I'm working on an HN app reader idea that I think is unique (more to come) that requires regularly getting the front page posts and comments. I wrote a script to do that through the Firebase API but holy shit it ended up needing thousands of requests to get all the data for the current state of the front page.

So instead, I wrote a scraper script to produce the same thing, just with 30 requests (1 per front page post). (Trying to turn these damn <tr>'s into a recursive comment tree was a quite the mindfuck btw)

...is it ok to scrape HN? I see nothing in the robots.txt to say it shouldn't be allowed, and I actually feel better making 30 scraping requests rather than XXXX API requests.

EDIT: Also happy to receive suggestions. I'm coding in Ruby and don't see an obvious way to access the Firebase DB directly (quite frankly I don't even know if what I just said makes sense) so any help is appreciated.

Kaizyn 2 days ago 2 replies      
The source code used to be open, and it isn't clear what happened to it. Maybe ask over on the arclanguage.org forum as HN is written in arc.

The closest thing to a source repo is this from many years ago:https://github.com/wting/hackernews

markkat 2 days ago 0 replies      
We at https://hubski.com use a very hacked version of news.arc. Going on seven years. We moved data to postgres though.

The app is top notch, but it does not scale very nicely. Too much to hold in memory.

ers35 2 days ago 0 replies      
I'm working on a tool that maintains an up to date archive of Hacker News and a companion tool to browse and search it. I'm not ready to release yet, but here is a dump of the stories, comments, and users from the Firebase API as a SQLite database with a full text search index: https://archive.org/details/hackernews-2017-05-18.db
sandGorgon 2 days ago 0 replies      
The source of lobste.rs is actually a good second alternative to HN https://github.com/jcs/lobsters

It has been in active development for several years, and is actually quite popular in its own site.

It also incorporates several interesting concepts like an invite-tree,etc.

I don't mind HN close-sourcing its code...But I'm definitely curious keeping Arc alive. IMHO, the rest of YC stack is pretty vanilla.

I wonder if Arc is the "burning candle that must never be allowed to die out"

cyberferret 2 days ago 1 reply      
The database is now on Google Firebase, is it not?

At least their API is sourcing all data from Firebase last time I looked at it...

zitterbewegung 2 days ago 2 replies      
I would also like to know about how they have optimized arc and it's underlying runtime from racket . They seem to have proven that arc can scale .
peterwwillis 2 days ago 4 replies      
Don't use a filesystem as a database. We did that back in 1998 mostly just because we were using 1998-era computing power, and the more static content you could serve the less likely your box would get hosed by Slashdot. Now my watch has more computing power than those old servers. Use a real database, even a file-backed one like BerkeleyDB (or god forbid, SQLite)
Ask HN: Can Cryptocurrency Beat Credit Card in Consumer Micro Payment Market?
4 points by jw2013  1 day ago   1 comment top
MichaelBurge 14 hours ago 0 replies      
> 1) it has cash back;

That's only a benefit for a small percentage of people. If you're a middle-manager or salesperson, cash back on purchases reimbursed by the company can be considered part of your compensation.

I suppose the bank can negotiate with certain popular companies for a higher cash-back rate, which is harder to do as a bunch of individuals.

Outside of these, it's not really a benefit since it's included in the interchange fee. You might not notice it because your bank hides it with clever marketing, but it's there.

> 2) it has no fee in most cases

One common credit card fee is 2.9% + $0.30.

> 3) the payment is instant for the user, meanwhile bitcoin is much slower.

Payment is 6 months if you want to be sure. Anything less can be charged back. Bitcoin payments are instant if you're willing to immediately confirm, which isn't a bad idea on payments smaller than $50 or where it's a repeat customer.

The one area that you truly benefit from a credit card is in the consumer protection laws: You can chargeback very easily and it's tough for the merchant to dispute it. Bitcoin transactions can't be reversed, so if you get scammed you're out of luck.

The items you've mentioned are just banks out-marketing you. They aren't fundamental benefits. You pay for them with a markup that the merchant adds, and you also end up paying for a bunch of banks and Visa/MasterCard to exist.

Checks or ACH are better than both credit cards and cryptocurrencies, when applicable. Terrible security and a bit clunky, but very efficient for moving money around. And you can even get a card with a lower fee: I think the debit cards from major banks are 0.05% + $0.21, though you might have to convince the merchant to charge you less.

My ruling? For casual use, then - mostly because of the better security:

Credit cards > Cryptocurrency > Check/ACH

For anything serious, then - mostly due to cheaper transfer costs and assuming you can trust the counterparty:

Check/ACH > Cryptocurrency > Credit Cards

For guns, drugs & porn, then - mostly because you don't want self-righteous politicians or outraged soccer moms pressuring your financial processor:

Cryptocurrency > Check/ACH > Credit Cards

Ask HN: Startup naming as a service
2 points by tifa2up  16 hours ago   5 comments top 5
brudgers 4 hours ago 0 replies      
This essay might reframe naming, http://paulgraham.com/name.html
fgrimes 14 hours ago 0 replies      
Unless you specifically want to include "carpool" as a keyword, I'd say the name you have seems as good as any...
bbcbasic 9 hours ago 0 replies      
It's a good name. Don't sweat it.

Alternatively grab a German dictionary.

tiredwired 12 hours ago 0 replies      
ideas: Poolber, RouteScrum, EventuArrive, RideOrgy, Menage-A-Trip.
nik736 11 hours ago 0 replies      
I like the name you already have. You should keep it.
Ask HN: Do you keep a developer diary?
76 points by simopaa  1 day ago   53 comments top 35
samuell 1 day ago 1 reply      
I researched basically all the solutions (wikis, tiddlywiki, evernote etc etc), but they all had some limitation either in offline access, shareability, portability, openness or something else.

What finally made it into a working solution is writing plain markdown files, one per day, automatically synced to bitbucket via tiny bash scripts that initiate a new file for the day (aliased to 'j' for minimal hurdle to start writing), opens them in an editor, and committs to the repo after closing the editor.

It is available here: https://github.com/samuell/mdnote

The nice thing with markdown, if you make a level-1 header for each new file, is that you can concatenate the file into a long file, and run pandoc -i allnotes.md -o allnotes.epub, and get a formatted and searchable notebook for offline use, when you want to read it, with the Level-1 headings denoting chapters - so, one chapter per day!

(I have a script for this too of course: https://github.com/samuell/mdnote/blob/master/as_epub.sh).

kabdib 1 day ago 3 replies      
Keeping a diary is pivotal to how I work. I used to write things down in notebooks, but you can't grep dead trees, especially handwritten ones. So I keep a simple flat text file with a new timestamp every day, and nearly everything I do makes it into this file, at some level. I can answer all kinds of questions, from when someone joined or left a team, to how I installed that driver last year, to which servers I installed three years ago and the problems I encountered configuring them. Pretty much anything unusual, or middlin' difficult, or just thoughts on engineering problems. It's candid, I swear and call things as I see them. These notes are an extension of my brain.

I start the day with:

 % note (which just runs Emacs on my notesfile)

 M-x new-day
which just appends the current date to the file and positions the cursor, all ready for typing. Dirt simple.

I used to have macros and whatnot for carrying forward lists of TODO items and important tasks, but that was overkill and keeping things simple seems to be the key to success. Likewise, apps like OneNote and so forth just got in the way and wanted to own a piece of me.

simonw 1 day ago 1 reply      
I use Evernote for this - every time I figure out how to do something I drop it in a note. I create 4-5 notes a day. It's incredibly useful - I find myself referring back to some notes months after the fact.

My team also do standups on Slack, and I've got into the habit of writing detailed Slack stand up bullet points with links to commits, documents I've created and so on - almost a semi-public developer diary. I don't check back to these very often myself, but they do spark some useful conversations.

I've also gotten into the habit of writing extremely details commit messages - often multiple paragraphs for a few lines of code change - that record the background and reasoning that lead me to the change. I do most of my code reading through the GitHub web interface, frequently referring to blame and history, so the more context I can find for historical commits the better.

jammycakes 23 hours ago 2 replies      
I started keeping a comprehensive developer diary (I actually refer to it as lab notes) back in December, and it's made a considerable difference to how I think about what I'm coding.

The way I write it is similar to test-driven development I write down each step in what I'm doing before I do it. When I run a command, I copy the command itself into my notes, then once it's run I copy the important parts of the output (e.g. any error messages).

It really comes into its own when I want to pick up on a task that I had put to one side a few days previously, or when I run into a problem that I think I'd encountered before. It also makes it much easier to avoid the trap of trying the same thing several times before you realise that you're going round and round in circles.

It's also useful for writing documentation. You can just copy and paste what you've written in your lab notes into your commit summaries, Jira tickets, e-mails, spec, help files, whatever, then tidy up as appropriate.

domk 1 day ago 0 replies      
I use org-mode in Emacs to keep daily notes, with the majority in one big file with an entry per day. The content is quite diverse - a mix of TODOs for the day (especially when I need to get through multiple smaller things that day), things to do or think about later, small notes to self about the code I'm working on, and sometimes quite extensive notes when thinking through the design/architecture of something new.

The last technique especially helps me a lot. When thinking through a hard problem, type out your thoughts in a semi-structured way, never deleting anything. Makes it easier to deal with problems that can be too large to hold in your head at once, to think about the aspects of something step by step, or to retrace your thought process and see why you made certain decisions earlier and maybe explore a different route when you get stuck. When finished, it can be used as a foundation for a design doc I share with the rest of the team.

smoyer 1 day ago 1 reply      
I use the Bullet Journal [0] method (with ink on paper) for all my personal and professional journaling. One notebook per year is about perfect. The only thing missing is aggregation (across years) and search - but I'm working on those "features".

[0] http://bulletjournal.com/

zubat 23 hours ago 0 replies      
I keep a minimal form of journal for all life events. I briefly describe a thing I did or a thing that happened, and how much energy it took me to go through it on a 0 to 4 scale, where 0 is breathing and 4 is major life crisis. If I think there was a lesson I write the lesson too.

This creates a feedback loop for stress reduction where I aim to mitigate both the likelihood of having a crisis and train a calm response by learning how to deal with smaller stuff so that the day is full of 1's. I chuck it all in a text file once a day, and return to it because my todo is also in there so I always have a backlog. I don't distinguish between work and hone tasks although I might if I were going in to an office.

Long form diaries I don't really engage with because they'd sap relatively more time - I would get caught in trying to make it a storytelling experience.

5_minutes 1 day ago 0 replies      
I've been thinking about a little app to keep "logs" about the sites I am working on. Something that lives in the menu bar, and pops up with a short key. A litle pull down to select the project, so I can quickly dump the changelog, and automatic time stamp to the entry. All this in markdown.

I can't believe nobody made this already!

uvatbc 1 day ago 1 reply      
I keep daily status logs to remind myself of the work that I have done because that's the only way I can put a stop to the nagging anxiety that I haven't done enough.

A nice side effect is that weekly status meetings are easy.

A simple markdown formatted file is more than enough.

sawyerjhood 22 hours ago 0 replies      
I've always struggled with journaling in my personal life as well professionally. Recently I created a small messenger bot for myself that I can then use to send messages about what I did / learned, categorize them by hashtags, and then generate a list filtered by categories and sorted by timestamp. I don't think this solution is for everybody, but it works especially well for me because I use FB Messenger as my main chat app and I tend to want to be able to write anytime I have a thought, but generally read my notes infrequently.
ytjohn 1 day ago 0 replies      
Nothing shared like this. But I have kept daily logs, first as text file. Currently I do this using quiver (a multi-noteobok editor). I create a notebook called worklog and each day I put in a short list of planned actvities and then I copy/paste a lot of details below as I move through the day. Code snippets, log snippets, bits of conversation. Along with my own notes of what I tried and observed.

Currently, I'm sort of split between three tools. Omnifocus (a GTD manager) for tracking all the tasks, quiver for notes through the day, and then I use [emergent task planner], a paper based task planner for the days tasks. As much as omnifocus/gtd helps me track things, I found using paper to block out each hour of the workday ahead of time really helps me focus. If I find myself losing focus, I can refer to that and (usually) get myself back on track.

wishinghand 20 hours ago 0 replies      
I don't keep a diary or journal but I do keep a public repo of little things I discover that I won't need everyday, but will definitely need again someday.


They're not deep or very in depth, but I leave them public in case someone needs what I discovered.

I got the idea from someone who posted their version on Hacker News years three or four years ago. Theirs was more journal like in its disclipline- the author added one a day.

drakonka 1 day ago 0 replies      
I used to keep a very active dev blog, with near-daily posts about what I did/learned each day in my game dev projects. However, that was when I was freelancing and had a lot of time to spend on personal projects daily. So there was a lot to talk about and so much new activity each day that the posts really helped organize my thoughts and hammer in what I had just learned - it was in practice a public developer diary.

After I moved to a full time role in my chosen industry, I had less time to focus on personal projects and less motivation to keep blogging regularly. I try to keep up with it but blog posts are few and far between now so I would no longer call it a diary.

dpc_pw 23 hours ago 0 replies      
Relevant: https://github.com/vimwiki/vimwiki (I highly recommend; does have journal support as well)
MaulingMonkey 1 day ago 0 replies      
Yes and no. I tend to write long, rambling details along the same lines in my commit descriptions and JIRA tasks (after the shorter summary that people will actually bother to read). I've even got tools to pull all my commits from multiple projects for easier review of the previous week/month.

The only standalone artifact I keep, though, is an excel spreadsheet tracking rough office hours, project, caffeine consumption, and choice of lunch. This helps me reassure myself that I'm not slacking off (especially when I'm considering a short day), a top level rough timeline, keep my caffeine intake in check, etc.

herve76 1 day ago 0 replies      
I do keep a dev diary. It helps me a lot in organizing and coding. I encourage it. For me writing down my current affairs and coding endeavours, keep me in sync with my plans. My journal is a simple md file that I edit with Atom.
Arun2009 1 day ago 0 replies      
I keep a private blog for my side-project, with key links and resources in pages specifically set for them. For example, I might have a page on market research with links to posts on specific topics. But probably I should be more systematic about it, since a lot of my documentation related to the project is also in miscellaneous text files (committed in the /doc folder of the project), and also a few Google docs (for sharing with others).

I find it really handy to figure out how your thought process about the project has grown over time.

vfulco 18 hours ago 0 replies      
Simplenote is turning out to be an excellent resource. Light enough to be a pleasure to use and with great search functionality, automatic archiving, etc. A lot of thought put into it. https://simplenote.com/

It's available for every platform.

vlfig 22 hours ago 0 replies      
If the main purpose is to document decisions on a project, not your journey as an engineer, consider using Architecture Decision Records ADRs. Simple, to the point, live-with-the-code. https://github.com/npryce/adr-tools
gkya 1 day ago 1 reply      
I don't have any such experience but, shouldn't the VCS log serve that purpose? Maybe in conjunction with a NOTES file?
pagutierrezn 23 hours ago 0 replies      
I use TrelloYes I know it's not for diaries.I have one column/month. And specific columns for special projects/issues.When a note doesn't fit in a project it goes to the current month column.

You can create checklists.You can share anything from your mobile with trello so I keep track of everything I read.

car 1 day ago 0 replies      
Using a developer diary is essential to my work. It's very similar to keeping a laboratory notebook.

Initially I kept notes in Evernote, but eventually switched to Quiver (http://happenapps.com/).

wickedOne 21 hours ago 0 replies      
i've taken notes for a while, but in the end considered it to be a waste of time (other than that it helped me remember thing more easy at first).

like any other diary, you won't re-read it and if you run into an issue of which you know you've faced it before, chances are that your written down thoughts are that unstructured that solving the issue for a second time probably takes less time than trying to find the solution in your notes.

so if writing down the issues you're facing and their solutions makes it easier for you to remember, go for it, other than that such a diary is of no use to my opinion

afarrell 1 day ago 0 replies      
I have a paper scratchpad which I just use for swap space, a bullet journal i use to keep track of what I'm doing, and a dropbox papr doc that I use for reflection and recording the problems I'm working througg.
sehugg 1 day ago 0 replies      
I take notes in text files as I'm learning stuff. I've published a couple of books from these notes (and also using the example code I write.)
RobBlackwell 1 day ago 0 replies      
I write notes in markdown, one file per day, and use Pandoc to create HTML , PDF and mobi versions monthly for reading back later on the train.
mooreds 1 day ago 0 replies      
I do this with my blog. Not with every decision, but often enough that I have referred back to it occasionally.

Share the wealth! :)

mohitsingh 18 hours ago 0 replies      
Just a markdown file with emojis and special characters is enough for me.
NoCanDo 1 day ago 0 replies      
No. Have used in the past, didn't really help me and didn't really see the point in continuing it.
VladimirGolovin 22 hours ago 0 replies      
Yes, I keep diaries for all my projects. I use Workflowy.
mythrwy 1 day ago 0 replies      
I do not keep a developer diary.

What I do keep is a large file of projects or snippets of projects, sometimes with extensive notes.

I refer back to these frequently to see how I did something or look at code samples.

But, as time goes on this has become a bit of maze to wade through. I spend time trying to remember what project it was etc. etc. Grep helps a bit :). It would be better to organize this somehow. Not sure I'm interested in a full blown diary though. DRY.

pasbesoin 1 day ago 0 replies      
It can also be useful to keep a diary of your work experience. Not the proprietary information, but the assignments, personal interactions, politics.

Something that is yours and walks out the door with you, every day.

When the system or someone starts to screw you, such a record can be useful and actually viewed with some validity. Better yet, can be meeting minutes and internal communications that document the situation.

There's a reason Comey is known for writing memos about problematic situations.

SFJulie 1 day ago 2 replies      
I keep a diary:with following infoday : arriving : departure : time of lunch // travel time.

Why ?

I noticed after 43h in a moving window of 5 days my focus, irritability is up to the roof and I make way too much mistakes that can lead to a dramatic mistake.

My work contract is 37.5 so everytime I reach too much overhead I talk to my manager ask him if he will need me one day to make extra efforts in case of emergency?

He says yes, I say I will abide but if we are working under normal load, than he needs me to rest and give me my time back.

He then picks on me, saying it is my responsibility to not stay to long at work, I make him notice it is because of the company management I have to stay late and the deadline.

He grumbles says it is not the right time.

I go to see the CEO say the same thing

They give me my family time back. I stay quite rested (add 2h30m / day (when the rail company has exceptionally no problem) of commuting with the worsts train lanes of Europa (1M commuters/days)) so it actually feels like commuting is working. Teleworking is denied for lack of control.

Oh! and lunch time is not counted as worked hours except for the other managers. (so I stay away from my family 10hours per day, I see my wife 5 hours a day).

That is the only diary I am keeping.

If I get overworked/burntout, it costs nothing to the company, but I will certainly get fired sooner or later and have a hard time finding a job with a sort of depression running.

lelandbatey 1 day ago 0 replies      
I do, though I guess I arrived at the idea more informally. I use it chiefly as a checklist, where at the top of each "page" I list the things I want to grapple with that day. Then the rest of the document is where I commit my thoughts and questions about the subject.
Ask HN: Which websites do you visit?
80 points by jmstfv  2 days ago   60 comments top 47
aesthetics1 2 days ago 2 replies      
I used to have a dozen or so sites that I visited on a regular basis, but I really grew tired of comment sections devolving into "who can post a meme the fastest" competitions. One reason why I keep coming to HN is because of the targeted discussion, and the lack of these types of cheap humor comments or karma grabs.

I find myself looking for more "adult" communities nowadays, and it has been a struggle to find them.

EDIT: Typo

johnnydoe9 1 day ago 0 replies      
It's mostly Youtube, Reddit, HN, ARSTechnica for tech/news.

For random comics and stuff it's Loading Artist.

Been listening to Jordan Peterson's lectures on youtube, watching video essays on films, the science/information related channels has already been mentioned here. I'd recommend "Blank On Blank" [1] it's wonderful.


nawgszy 2 days ago 1 reply      
Hacker News.

The rest of my time spent on the internet is either habitual, i.e. Reddit/FB/YouTube for my "entertainment needs", or purpose-driven, i.e. googling relevant information for whatever projects I'm working and so accordingly is largely random.

I want to go to more places like this, and I tried slashdot, but I didn't understand their comment section and am incredibly passive. So here I am.

r3bl 2 days ago 0 replies      
Wait But Why, Kurzgesagt, Second Thought, SciShow Space, Geography Now, Tom Scott, Hacker News (obviously), /r/coolgithubprojects, /r/unixporn, /r/netsec, Crypto-Gram newsletter... I could go on and on.
hello_newman 1 day ago 0 replies      
For news/current events, Hacker News. I quit reddit a while ago, and most of the good stuff on Reddit appears elsewhere after a couple days.

For newsletters, I really enjoy Ruby Weekly and Javascript Weekly by Peter Cooper. There is always something new to read in Ruby Weekly. I also really like the MIT Technology Review. It's a daily email that is really well written with a bunch of insightful links.

Youtube channels is a hodgepodge of whatever I am currently into. In a similar vein, I am a big fan of GoRails.

For strict information gathering, I recently got an Audible subscription and love it. I listen to music while working, but Audible I save for while I'm commuting.

Looking at ones i frequent, I have noticed a pattern to pay for services I use. I am also a privacy badger/uBlock user, but I still prefer to pay for services if it means no ads or a better experience.

pizza 1 day ago 0 replies      
Youtube - Zero Books' zero squared podcast, David Parsons' Nostalgia Trap podcast, a lot of random Noam Chomsky or Slavoj iek lectures, even more miscellaneous hr-long lectures on any topic etc

Patreon - Chapo Trap House podcast

Other podcasts: In the News by Doug Henwood, the Kraken podcast, the Katie Halper show


reddit - r/machinelearning, r/keto, r/sorceryofthespectacle, r/chapotraphouse

blogs - high-fat-nutrition.blogspot.com, itsthewooo.blogspot.com, gwern.net

Occasionally I just browse through arxiv.org, and tbh I have a massive backlog of unread saved webpages in my Pocket account

PMYA 1 day ago 0 replies      
After the whole Reddit blackout thing I started using Voat.co as my main aggregator, but it went a bit downhill and some people I know ended up making Phuks.co, I spend a lot of time there. Otherwise, Lainchan.org for mostly tech related stuff, Slashdot, ARSTechnica, occasionally SingularityHub.

I have RSS feeds for a number of different news sites including BBC, Reuters, Guardian, RT, Telegraph.

I have a number of different sites I don't visit daily, but visit regularly out of necessity, like stack overflow.

avenoir 1 day ago 0 replies      
It's mostly YouTube. I've been listening to Joe Rogan's podcasts while working for some time now. I also subscribe to Joe Robinet for some bushcraft and camping stuff that I typically watch in the after-hours. DI.FM for music. Google News/Finance for news and stock updates. And HN, of course.
mooseburger 1 day ago 0 replies      
Slate Star Codex

Hacker News

4chan (/v/, /tv/, /pol/)

Youtube (Mainly for music)

mindcrime 1 day ago 0 replies      
HN (duh)

Youtube - as bad as certain aspects of YT are (eg, comments), there is a TON of great educational content on there, as well as music videos.

Reddit: Yes, the default subs are horrible, but there are a lot of great specialized subs as well.

Coursera: taking a couple of classes now


Facebook - not happy to admit this, but it's force of habit. :-(

news.google.com - news

arxiv.org/corr/home - CS papers

wral.com/weather - local weather

amazon.com - I'm on there either ordering books, adding stuff to my wishlist, or just looking up a book I might want to buy "one day", or checking on the status of an order, pretty much every day.

dilbert.com - lulz

phins.com/phins-urls.html - Dolphins news

digg.com/reader - feedz

noir_lord 1 day ago 0 replies      
YouTube - Programming talks, tech talks, documentaries and music (I have unlimited bandwidth so I mostly just leave it on OST playlists all day while I'm working).


Twitter (I have a rule of following exactly 50 accounts on a one in/one out basis because otherwise it's too unfocused to be useful the way I want to use it (which is as a quick/lazy RSS replacement)).

BBC News/The Guardian/The Daily Mail (reasonable cross section).

That's about it outside work related stuff/general programming stuff.

Listen to a fair amount of podcasts but I just go to their sites for that.

matt4077 1 day ago 1 reply      
I'm involved in politics and somewhat obsessed with it. So these aren't spectacularly secret gems, but spending a few minutes with high quality news every day is actually something surprisingly few people do:




galfarragem 1 day ago 0 replies      
HN, youtube, windguru (weather), feedly (few niche blogs and podcasts) and pb.pl (to practice Polish). Quitted facebook.

Newsletters: javascript, ruby and python weekly

satsuma 1 day ago 0 replies      
Purely for information/news?

HN, Ars Technica, TechCrunch, and the local paper's website. WaPo if I feel like making myself mad at politics.

oblib 1 day ago 0 replies      
I have a Safari bookmarks folder that I open in tabs every morning with these sites:

NOAA weather and Radar, AP News, Reuters News, Hacker News, Science Bulletin, Alltop Raspberry Pi, Facebook, and Willy n Ethel.

Sometimes I'll also take a look at Google News if I have time.

I have a pretty small and awesome group of friends on FB that share a lot of great stuff from a wide variety of sources.

fauria 1 day ago 2 replies      
Mostly HN, but have also bookmarked:

 Datatau Techcrunch Techradar Medium Product Hunt Popular Mechanics MIT Technology Review Hardvard Business Review Engadget Hackaday OReilly Radar The Verge Atlas Obscura Coding Horror Joel on Software

sjm 1 day ago 0 replies      
HN, Resident Advisor, Bleep, Discogs, NYT/WashPo/Twitter, Facebook (less frequently, but I'm away from home so it's kind of a necessity), some of the VICE sites/YouTube channels.
mc42 2 days ago 0 replies      
Reddit, YouTube, Twitch for media.

Chief Delphi for Robotics-related content (FIRST Robotics Alum, so it's an interesting thought pattern to watch as an outsider.)

HN, Hackaday and on occasion Slashdot for Tech-related content.

sceew 1 day ago 0 replies      
Here's what's in my daily website 'checklist' folder:







Fortune's Termsheet (usually just read dan primarks pro rata)

Naked Capitalism

Hacker News


Financial Samurai


That's really all, also read Barstool Sports for fun.

Who reads Reddit these days? With the exception of some niche subreddits, it is bottom-feeder trash.

SAI_Peregrinus 1 day ago 0 replies      
News-wise:HN, The Register, Ars Technica, Reuters, AP, Fark, Physorg.Entertainment:Reddit, Youtube, a bunch of webcomics, some forums.

I use Feedly to organize pretty much all of it.

huangc10 1 day ago 0 replies      
Get to work, open folder:

Feedly (more of a web app than website), Reddit, Hacker News and Slickdeals

Now that I think of it, most of the sites I visit are content aggregators and not individual sites.

xtiansimon 1 day ago 0 replies      
Does Stackoverflow count or is that a Google-like given?
echan00 1 day ago 0 replies      
Surprised no one said http://www.theawesomer.com
eager_noob 1 day ago 0 replies      
HN, f1technical.net, r/formula1, f1fanatic.co.uk, lwn.net, r/physics, dedoimedo.com
JoeDaDude 1 day ago 0 replies      
HN and Slashdot for industry news

NY times for regular news (worth paying for IMHO)

Board Game Geek for a hobby

Crunchy Roll for entertainment

NO so called "social" media sites

(edited for formatting)

ngneer 1 day ago 0 replies      
ACM Queue, at http://queue.acm.org
ivthreadp110 1 day ago 0 replies      
HN, reddit/worldnews, rt, livescience, youtube, sciencemag, google news searches, the economist
xemdetia 1 day ago 0 replies      
news.google.com, HN, reddit, arxiv (just pick a random category and see if there is something I can read), springer (to see if there are fun books coming out that I can google hard and lift papers from .edu websites/elsewhere), digikey/mouser.
scholia 1 day ago 0 replies      
I scan RSS feeds of the obvious sites: NYT, WaPo, ZDNet, Ars, Verge etc

Otherwise I go to Twitter, HN and The Guardian every day, plus Reddit, Amazon and Facebook every few days (often it's to wish someone a happy birthday).

I also like The Wirecutter for reviews, Authority Nutrition https://authoritynutrition.com/ for food info, Dilbert and xkcd for cartoons, and YouAre Not So Smart https://youarenotsosmart.com/ for essays.

omg_ketchup 2 days ago 0 replies      
Hacker news.
raintrees 1 day ago 0 replies      
It depends on how much time I allocate to catching up on information before beginning another project or providing support/conducting research for clients.

goldprice.org to find out what is happening to this baseline.

yahoo.com for s&p, russell 2000 - market review

accuweather.com to get a prediction for upcoming weather.

bbc.com.uk for world service 5 minute bulletin

npr.org for 3 minute summary from one political perspective

drudgereport.com for another political perspective

dvorak.org for humor

here (hn) for IT-related info, trends/news - lower in this list due to possible time sync hazard

qz.com for their summary

rt.com for another summary

fee.org for economic/political discussion/inspiration

thefederalist.com for economic/political discussion/inspiration

mises.org for economic/political discussion/inspiration

dave.sobr.org for Dave's round up

zerohedge to see where conspiracy theory is heading (also outliers of factual trends)

antiwar.org for world political climate reporting

noagendanewsnetwork.com for conspiracy theory and factual trend outliers

a handful of comic websites for amusement including xkcd, questionablecontent, ScaryGoRound/Bad Machinery, DresdenKodak, GirlGenius, etc.

fudged71 2 days ago 0 replies      
Reddit, ProductHunt, HackerNews, TheVerge
joewrong 1 day ago 0 replies      
chauhankiran 1 day ago 0 replies      
1. HN

2. Getpocket.com - articles which i have saved inside of it from HN or from other places

3. https://lobste.rs

neuigkeiten 2 days ago 1 reply      
http://www.gnoosic.com to find new music

http://www.ventusky.com to check the weather worldwide

http://www.xkcd.com for a quick procrastination break

kilroy123 1 day ago 0 replies      





economist.com (kindle only)

aScii 1 day ago 0 replies      
JFL on Youtube
akie 1 day ago 0 replies      


The Guardian


The Economist (via Facebook to circumvent their 3 articles limit)


1337biz 1 day ago 0 replies      



my industry's subreddit

4chan /b/ /pol/ /biz/


a local blogger

each site probably 4-5 times a day

anigbrowl 1 day ago 0 replies      
I use the internet for that. (Seriously, 'to acquire information' is just waaaay too broad for meaningful response.)
donohoe 2 days ago 0 replies      





bobosha 2 days ago 1 reply      
all of them, any of them
ienjoythebeach 1 day ago 0 replies      
Nice try, Twitter
Ask HN: How do I write good job requirements?
6 points by avadhoot  1 day ago   3 comments top 3
rl3 1 day ago 0 replies      
For software development positions:

Never require a specific length of professional experience unless absolutely necessary. Instead require experience with certain areas of expertise.

The more specific an item is, the more likely it isn't a requirement and probably belongs in the "Bonus skills" column.

Avoid being that company which lists three different positions (e.g.junior dev, dev, senior dev) with the only delineating factor between them being X to Y years of Rails experience. I see that all the time, and it's a really good indicator that the company probably sucks to work for since they can't even figure out how to hire correctly.

Moreover, good engineers are typically stack-agnostic. You'll miss out on these people if you have narrow requirements.

srinathrajaram 1 day ago 0 replies      
Job requirements are hard because we try to write a single req for three types of audience.

1. A recruiter: Do I have a CV in my DB with these keywords?2. A referrer: Will my friend fit this?3. Candidate: What should I know? What should I do? How much do they pay? Is this the right move for me?

In some forums you just cannot split them up (LinkedIn). In some other, you can (emails). Try splitting them up. It will be a lot easier.

whatnotests 1 day ago 0 replies      
Don't: write what the person should do every day/week/quarter.

Do: think what they must not do (b/c there would be problems if they did) and write what they should do instead.

Ask HN: Does native compilation still matter?
22 points by mobiletelephone  2 days ago   15 comments top 6
gizmo 2 days ago 1 reply      
Of course it still matters. Almost all the software that runs whichever device you're reading this post on has been compiled to machine code. In operating systems everything from the filesystem to device drivers to the window manager to the web browser are written in some low level language. For hard real-time systems you need to be close to the metal. Same for most embedded applications.

Sure, there are many situations where sacrificing performance in exchange for a VM is totally appropriate. If you think this covers 99% percent of applications (or even 50%!) then you may only be thinking of a very small subset of software development.

Also, inefficient code produces excess heat. Meaning reduced battery life and noisy fans. So all software that gets used a lot should be optimized for performance just to conserve energy.

psyc 2 days ago 0 replies      
I don't generally want to give up performance. As a game developer, I usually actually need all the performance I can get. My default choice is always a language with nice, low-cost abstractions, that compiles to native code. I don't see that changing, probably ever. I always want to get the most out of the machine.
bjourne 2 days ago 0 replies      
Yes we have. The majority of all commercial programmers work with web sites or web applications in which VM:s reign supreme.

But for hobbyist work, it is different. Free software developers are seeking universality more than anything else. They want as many people as possible to be able to use their code, be able to read it and contribute to it.

VM:s hinder universality. For example, if you write an image processing library in C then everyone can theoretically use it (assuming bindings are non-trivial to write). But if the same library is written in a VM language, then it is only usable to developers who are using that platform.

It's like a curse.

otempomores 6 hours ago 0 replies      
As long as the man hours invested cost less then a more potent cpu in all devices sold
soulbadguy 2 days ago 0 replies      
Interesting question, but ultimately it's still hard to say .

The story on power consumption of managed/VM language is still not clear. Most of the computation in the world are now happening in mobile/IoT devices and cloud/data centers; Both environment put a strong constraint on power consumption and therefore on efficiency. There is already a huge amount (and growing ) of native code running in the cloud. As our computational requirement increase (and unless we have a break through in computation efficiency) people might want to revisit the lost implied by managed environment.

The other side of the coin is that managed env. are popular because they usually bring safety, ease of programming and productivity. Modern C++,rust and D are showing that a lot of those attributes can be had with native languages too.

seanwilson 2 days ago 0 replies      
With many dynamic languages having ahead-of-time and just-in-time compilation it's a murky question now.
Ask HN: How did open source work before GitHub?
42 points by pvsukale3  1 day ago   68 comments top 24
user5994461 1 day ago 6 replies      
It's very simple: "Just use sourceforge". https://sourceforge.net/

GitHub didn't invent anything. They only made a better UI.

SourceForge was more oriented toward software users. It handles the distribution of binaries. Imagine a time when 90% of software sites would redirect you to sourceforge to download them. Distribution was first. The repo and the issue tracker were in a secondary tab.

GitHub is oriented toward developers. It shows you the repo as the main page. You can't distribute binary releases (well, it was added recently).

GitHub took over by attracting developers right at the start of the project. They need a repo, here it is. UI is nice, site works. The new projects eventually become well known and carry the reputation.

SourceForge went downhill slowly with their shady practices. Ads, confusing pages and software repackaged with adware.

pjc50 1 day ago 4 replies      
Kids these days :)

Richard M Stallman will tell you of the days when people mailed tapes back and forth, but that was in the 70s.

A key development was Larry Wall writing "patch" in the early 80s, which he posted to USENET. That made it much easier to start mailing changesets to the maintainers of programs. This workflow continued basically until Linux wrote "git" in the late 2000s. The idea of the pull request formalises the process of emailing Linus.

In the late 90s and early 2000s, most projects had their own CVS server and mailing list. Mozilla decided they would write Bugzilla to keep track of bugs. Sourceforge grew up as an ad-supported hosting and distribution server for CVS (and later SVN) repositories.

db48x 1 day ago 0 replies      
The only thing that Github's pull request system adds that wasn't being done before is single-click merging. Everything else was there. You would email a patch to the author, or to the mailing list, and discuss the merits of the patch there. Then someone with access to the repository would commit it (I use the term generically; version control was less common back then).

The diff program we all use today has it's origins in the 70s, although the unified diff format that we almost always use was created in the 80s.

Email was invented in the 60s, UUCP in the 70s, and Usenet in 1980.

Version control was invented in the 70s with SCCS.

Web-based bug trackers such as Bugzilla originated in the 90s, as did continuous integration software like Tinderbox.

Of all of these, Git represents the biggest improvement over it's predecessors, while email is pretty much still just email. The diff program hasn't changed since the 80s. Bug trackers and other such tools haven't changed dramatically either, although a lot more attention is paid to UX and polish these days.

I think the largest change is the wide availability of these tools today. Everyone knows about them, and it's seen as aberrant to not use version control or bug tracking.

kem 1 day ago 0 replies      
God this more than anything before has made me feel old.

Is GitHub that strongly associated with open source that alternate models for open source development are a mystery? Somehow that's really troubling to me in terms of the open source paradigm, even though I generally see GitHub as a very positive thing. I don't mean that as a criticism of the poster, just saying that it feels like maybe there's some room for more diversity and competition.

I think others have given pretty good descriptions of pre-GitHub models, so I'll leave that to them.

blacksqr 1 day ago 1 reply      
Before the web there was usenet. People would assemble and curate lists of links and post them to newsgroups dedicated to particular languages or fields of interest. People would assemble CDs stuffed with code, you'd send them a few bucks and they'd send you a copy by mail. In the 1980s you'd buy computer magazines and check the classifieds. For a few bucks you'd get a floppy disk mailed to you.

Netscape did a lot to move project management to the web. Bugzilla was written in the mid-1990s. Before that all bug reporting and issue tracking was done via email. If you were good you'd email a patch to the author to fix a bug or add a feature, just as people still do with Linus. He wrote git initially as an improved tool to merge patches received by email.

catwell 1 day ago 0 replies      
I started being involved with Open Source in the early 00s.

For source code, people typically used CVS or (later) SVN. The repos were hosted by platforms like SourceForge, berliOS or Savannah, or on the projects' own servers.

Releases were tarballs hosted on servers. End users sometimes got software by downloading and compiling those, but there were already package managers and repositories. Before most people had Internet at home, at least in France, you could buy CDs with Linux packages at the press store.

Communication between developers typically happened on IRC for casual chat and through mailing lists (hosted with mailman) for serious stuff. Sometimes there were web forums to communicate with users. And conferences, of course. A lot of projects were developed by people who were physically close, for instance people who met at the same Linux Users Group.

Some projects used bugtrackers actively, some did not. It was mostly Bugzilla or Trac. That did not really change too much with GitHub.

The main difference in my mind is that forking was usually regarded as something bad. You would not fork a project and then send pull requests to fix issues.

For a simple fix, you would generate a patch and send it to the project's mailing list, where it would be discussed and eventually checked in by one of the owners. If you wanted to really engage with the project, you would become active in the community and eventually get commit rights.

I think what led to that change of model is: cheap branching in Git, GitHub as a platform with users account, and maybe Continuous Integration making it easier to validate patches.

holydude 1 day ago 1 reply      
Many people commenting here say that github did not bring anything new to the game. While that is partially correct we know that bringing only new things does not matter. What matters is slick,seamless polishing of existing ideas and execution. There are many examples of just reinventing the wheel and making it more beatiful and usable.

To your original question: sourceforge was huge, google code, cvs, bazillion of local "downloads.com" etc

geraldcombs 1 day ago 0 replies      
Self-hosting. SourceForge was certainly popular at one time, but it didn't own the market, certainly not to the extent that GitHub currently does. Many projects were simply run on whatever hardware and connectivity the project could scrounge up. For a project I founded I initially bought a used SPARCstation on EBay and installed CVS, Apache, Mailman, Bugzilla, etc. I traded consulting time with various local ISPs in exchange for bandwidth.
hprotagonist 1 day ago 1 reply      
It's worth noting that kernel development is still git + emailing patches around. It's too big for github/gitlab.
coreyp_1 1 day ago 0 replies      
Just sort by year:https://en.wikipedia.org/wiki/Comparison_of_source_code_host...

Before then, code was often on people's private websites, or FTP servers, with communication over BBS, email, and IRC.

ing33k 1 day ago 0 replies      
Others have pointed at sourceforge , google code .There was also Freshmeat ( renamed to Freecode )


falcolas 1 day ago 1 reply      
Mailing lists and Newsgroups (usenet) were both quite popular. Before the internet, it was over dialup BBS systems and CDs/floppy disks.

Just remember that Git was designed around the workflow of the Linux kernel originally. That's why there are commands like "git format-patch" and "git am" which have help messages like "Prepare patches for e-mail submission" and "Apply a series of patches from a mailbox".

It was also not that uncommon to see code patches printed in magazines or snail-mail letters.

roadbeats 1 day ago 0 replies      
See suckless.org for a good example.

Personally, I used to put them under my personal website, seperating each to a subdomain. If you'd like to see source code, you'd download it.

whatnotests 1 day ago 2 replies      
Before GitHub you had Google Code.

Before that was SourceForge.

yladiz 1 day ago 0 replies      
As other commenters mentioned, you used Google Code, Sourceforge, and before that you'd email a patch to an email list, specific bug tracker for the project, or to the maintainer. Probably the biggest changes that Github added was the social aspect, and much improved UI compared to most previous tools. It made it much easier to search, browse code in the browser, and add requests to merge features or bug fixes.
tzs 1 day ago 0 replies      
In addition to the repository hosts already mentioned, there were also some specialized services for open source for a particular type or class of use.

A good example was CurseForge.com. They provided free SVN, Git, and Mercurial hosting for add-ons for several popular games, along with per add-on issue tracking and discussion.

Add-on authors could host at other, general purpose, hosting sites, but there was an advantage to using CurseForge. Curse.com had an application called the Curse Client for end users. The Curse Client was an add-on manager. It integrated with CurseForge, allowing you to handle searching for, downloading, installing, and updating add-ons from CurseForge right in the Curse Client GUI.

Curse and CurseForge are still around, and support a variety of games. I'm not sure what the deal is with repository hosting there now. I saw some documentation that suggested you are supposed to use an external repository and provide a link to it as part of your CurseForge project settings, but I also see a lot of projects whose repository is on curseforge.com.

brianmurphy 1 day ago 0 replies      
Some projects would use older version control systems like cvs.

Others would manage development through email lists. Everyone was good at using the diff & patch commands. Mail clients like mutt were great at searching and sorting email. Releases would go up to FTP servers.

In larger projects, there might have been multiple trees maintained. For example, get your patch into Andrew or Alan's tree before Linus would take it.

herval 1 day ago 0 replies      
SourceForge. Before that, webpages in a "ring". Before that, Usenet/BBS forums.

SourceForge, specifically, is basically the same as GitHub

protomyth 1 day ago 0 replies      
OpenBSD with anoncvs started in the 90's with showing a live cvs to the world. That was a nice change from release dumps.
NoCanDo 1 day ago 0 replies      
Sourceforge or SVNs. Github didn't revolutionize the open source landscape. They just gave everybody an easier-to-use GUI.
jedisct1 1 day ago 0 replies      

And new releases were announced on Freshmeat.

chrisgoman 1 day ago 0 replies      
Self-hosted Trac (without the "k"). It was usually trac.domain.com
payne92 1 day ago 0 replies      
zipped source tarballs w/ anonymous FTP downloads.

Then you emailed diff patches to maintainers and prayed.

mdekkers 1 day ago 0 replies      
Ask HN: Must haves' when building Landing Page from scratch
24 points by fluroblue  3 days ago   9 comments top 7
brudgers 3 days ago 0 replies      
Random advice from the internet.

1. One of my goto articles: https://blog.ycombinator.com/minimum-viable-product-process/

2. Don't build a landing page with mailchimp and A/B testing and unbounce. Do something easy. By "easy" I mean easy for you to do right now. Your landing page is not your product. A landing page is, in agile terms, a chore with no points assigned and does not contribute to velocity.

3. Focus on something people can use. Mostly an email list is not that.

Good luck.

RickS 3 days ago 1 reply      
Trust trust trust trust trust!!

This is the single biggest piece of feedback I see for landing pages in user tests. Customers need to feel like it's safe to proceed, whatever that means for your product (signup, buy, etc).

Lots of things that laymen trust feel cheesy to dev types. Things like BBB badges, excessive checkmarks and lock icons, the norton badge, etc. SLATHER em on there. Go crazy.

Don't think of the landing page as a stack of services. It could be a wix site if you really wanted it to be. The goal is to get the people you're targeting to feel like they know enough about the situation to go forward, and that you're a good candidate to go forward with.

imron 7 hours ago 0 replies      
Must haves?

Say what your product does in clear and simple language.

Say what problem it solves.

Tell me the price, or have a clear link tithe pricing page. Don't make me hunt for it.

paulcole 2 days ago 0 replies      
Here's how I do it:

1. Make a list of the things your service offers customers.2. Make a list of the thing(s) you want from customers.

In your page, tell the story of your service, using the items from list #1 to get the desired result(s), list #2.

Also focus on showing instead of telling. This is a pretty common concept that most people without a writing background aren't familiar with. Imagine the difference between saying, "My service uses trusted web technologies to ensure security." and showing a collection of AWS, etc., icons.

sharemywin 2 days ago 0 replies      
Try putting your face on there and offering to do a good job. Also, why not add something like drift for chatting with potential users.
AznHisoka 2 days ago 0 replies      
Focus on how to market that landing page before creating it. its a waste of time ab testing 100 visitors
tomatohs 3 days ago 0 replies      
Screen Recording software can help you understand how your first visitors are using your landing page. Check out my own product for this, http://screensquid.com, and send me a PM if you have any questions.
Ask HN: How do you share contact information?
6 points by stepri  1 day ago   2 comments top 2
subsidd 1 day ago 0 replies      
Assuming p2p, if the person is not in my contact list, then say it out to him/her. If s/he is, then whatsapp him/her the (further) details s/he needs. If I am in a professional setting, I just give my card.

I find this to be much much 'user-friendly" than any existing or possible app/software solution and call me a oldie but handing out a card makes me proud of sorts.

Edit : I apologize if this doesn't answer your question.

ParameterOne 17 hours ago 0 replies      
I made a button that I give to people in an email or text. It goes right in their phone. They never actually get my contact info but they can contact me anyways, with the button.
Ask HN: What about the Kotlin hype?
10 points by datalist  1 day ago   16 comments top 5
a-saleh 1 day ago 1 reply      
I think the main reason is, that Groovy seems to be abandoned, while Kotlin is in development, with JetBrains backing it.

But as far as language features support goes ... Kotlin, Ceylon, Groovy, new versions of C#, most of the times the language features are never that far apart (and they definitely do steal all features among each other) and you choose based on library and tooling support, familiarity and popularity.

Kotlin will come out among the top w.r.t. tooling support, because JetBrains will support it in its ide and library support because of its java compatibility. The android announcement pushes its tooling story even further.

crispytx 1 day ago 1 reply      
Apple came out with Swift to make iOS development easier. I think Google is trying to do the same thing by adding official support for Kotlin in Android.
kristoft 1 day ago 1 reply      
I think, one of the main features that makes Kotlin a bit better than other JVM languages is full compatibility with Java. And by full I mean 100% with no exceptions.

And Kotlin became good choice for android developers a long ago before io2017) Official support means a better tooling, nothing more

pacala 1 day ago 0 replies      
Tooling matters. IDEs matter. Kotlin has Intellij backing.
moondev 1 day ago 0 replies      
Kotlin compiles to the jvm so it has always "supported" Android. The difference now is that Android supports kotlin. It's now a first class citizen in the ecosystem in regards to docs, libs etc
Ask HN: How Much Alcohol/Coffee Do You Drink?
10 points by Madawar  2 days ago   29 comments top 29
twobyfour 1 day ago 0 replies      
No coffee. 2 cups of tea per day. No more caffeine than that, and none after lunch, or I won't be able sleep easily or soundly. Caffeine crashes and the exhaustion from caffeine-related sleep deprivation are both so much worse than just not consuming caffeine at all. It's not worth it.

Alcohol: up to two beers at a date, happy hour, or other event. Three if it lasts more than 4 hours. A glass of wine if eating dinner with someone else. Probably averages 2-3 nights per week with any alcohol consumption. No negative effect on social life (though I do enjoy social events more when self-medicating for social anxiety with those beers). More than one drink does affect my sleep that night and energy levels for a couple days, but I haven't been hung over in a decade except for after that one wedding...

asidiali 17 hours ago 0 replies      
I just had to quit drinking coffee cold turkey due to stomach issues.

I was drinking around 2-6 lattes on any given day for maybe the past 2 years. Never had a problem. About 1 month ago I started having horrible acid reflux and general stomach pains, would wake up vomiting, etc. I went to the ER, discussed my habits, did some scans - and they told me to stop drinking coffee.

First week was hard. Second week I had no cravings and was feeling great. By week 3 (last week) I had lost weight (this was my only dietary change), I was feeling sharper mentally and I was no longer still half-asleep in the morning before that first cup. In short - felt a worlds difference.

I'm not against coffee now, but cutting it out of my life, even if it's temporary, definitely was the right decision for me.

(As for alcohol, I don't drink.)

lsiunsuex 2 days ago 0 replies      
5-6 years ago, I was drinking about a pot of coffee a day between buying it from the coffee shop down the street or just making it at the office. Now I'm down to 2 cups during a work day and maybe 1 at night if I'm feeling tired. Usually just 1 on a weekend day. I can go without it and not get a headache which is nice.

Alcohol wise; I try not to drink during the week unless it's at dinner for business or a special event (birthday, anniversary, etc...) - on the weekend, either a glass of wine or a couple whiskeys on the rocks casually with the wife while watching a series or movie.

The only thing it's ever effected was money. Buying coffee at Starbucks or Tim Hortons on a regular basis is a waste IMO. Same with alcohol - cheaper to buy a bottle at home and drink it slowly then at a restaurant. Conversely, as you get older, it becomes (or has become for us) more important what you drink then the quantity - good stuff is expensive so you don't really want to blow through it quickly.

partisan 2 days ago 0 replies      
1 - 3 cups of tea per day. About to make my second one now. I worry about potential health effects, but I am striking a happy balance here in contrast to when I was drinking twice as much tea.

In terms of drinking, we usually have a bottle of wine or prosecco 1 - 2 times a week. I get one or two drinks whenever we go out for dinner so that is once a week. I don't think I see an impact, but I don't ever get drunk. I just get sleepy and I usually give in to the call.

mswen 1 day ago 0 replies      
5 to 7 cups of black coffee a day sometimes with a shot of espresso. Research on health and coffee is mixed though I think the overall current conclusion is that the benefits outweigh the risks. However, I admit to being biased because I really enjoy coffee.

Almost no alcohol - 1 every few weeks or months depending on circumstances. Party/reception or business dinner at high-end restaurant. And, then it is just one drink.

I am not against alcohol but very cautious around it. I have lost a friend to a drunk driver and had family members lose custody of their kids because abuse of alcohol ruined their ability to drive, work and function as responsible adults.

On the other hand I know plenty of people who drink alcohol much more regularly than I without any notable effect.

soloadventurer 1 day ago 0 replies      
2 double shot espressos, one early morning, and one late morning. No coffee after noon.

1 glass of watered red wine with dinner (my only meal each day). When going out, I will have 2-3 glasses of wine, but only once every two weeks or so. The rest of the time I'll drink Perrier or soda water.

3-4 glasses of water a day. More on workout days, but I find on a ketogenic diet my water requirements are less. I don't add salt to my food, and I cook all my meals. I don't use condiments either.

I don't drink tea, energy drinks, juice, smoothies, or pop. What I enumerated above is what I drink.

Arcsech 1 day ago 0 replies      
Almost no coffee, but a fair bit of caffeine - maybe 3 or 4 cups of tea with an occasional soda mixed in. I'm working on night classes for a graduate degree as well, so towards the end of the semester mix in some energy drinks too - definitely not healthy but the only way I can make it through.

Very little alcohol, 1-2 drinks once every other week or so, often with stretches of a month or more with none at all. I just don't seem to enjoy it as much as many people do, although it is nice sometimes.

xtiansimon 2 days ago 0 replies      
Large bowl-o-latte in the morning. 10 oz of strong French Press coffee when I get to work, and another 10 oz after lunch ~3pm. Then one 12-16 oz beer/ale/porter at home to bring my plane in for a landing.

How does this effect others? Heck with them, this is the minimum functioning me.

tjalfi 20 hours ago 0 replies      
I drink 2 or 3 cups of coffee per day. I stopped drinking alcohol about 12 years ago. I'm sure it has affected my social life but it's only one of many factors.

Edited to change the wording of the third sentence.

Slaul 1 day ago 0 replies      
Anywhere from 3-8+ coffees a day depending on how I'm feeling that day and what my workload looks like.

I always have a coffee first thing in the morning, another in my travel mug on my drive to work, and usually make another when I get to the office.

Some mornings/extremely busy days I'll sub in a caffeine pill for that extra boost.

I usually cycle down my caffeine use a few times a year, going from my usual 3-8 down to about 2 coffees a day. I find this helps me from building too much of a tolerance and needing to constantly increase the dosage.

I really only drink alcohol on the weekends and even then not very much.

gubsz 2 days ago 0 replies      
I generally don't drink coffee, it makes me jittery and anxious.

Alcohol...once a month but in large quantity. Usually go on a bender while barhopping/at a party with friends. Definitely need to shake that habit.

bigzen 1 day ago 0 replies      
3 - 5 cups of coffee per day. And an average of 3 beers per night.

Once or twice per year I tend to take 1 - 4 weeks off from alcohol and taper down on caffeine significantly. .. sometimes down to no caffeine. It's rough going for a few days but afterwards I feel that I can't tell the difference between not consuming and consuming

michaelflux 1 day ago 0 replies      
2-3 double shot flat whites. Typically before 2pm - most of the time with MCT or Brain Octane oil and a bit of unsalted butter mixed into the milk while steaming it.

Another 2-3 cups of black tea. No alcohol.

orange_county 1 day ago 0 replies      
I used to drink coffee occasionally but if I take a break or drink too much I get really jittery and sick. So I'm not longer drinking it. Though I might have a half cup before the gym as a boost.

As for alcohol, it's always present at work and it's hard to not drink. I can't say no to free beers ;)

csnewb 2 days ago 0 replies      
2 cups of coffee a day. One after breakfast, but the coffee making process is a morning ritual. I buy specialty coffee (Verve, Four Barrel, etc), grind the beans myself, and brew them using a pour over method on the Chemex device. I'll have whatever coffee we have at work in the afternoon for another energy boost.
spoonie 1 day ago 0 replies      
I try to limit my coffee to around 3 cups per day, or else it starts to affect my sleep.

I drink, on average, 6 standard drinks per week (all beer). Usually after work and, in the last 3 three years, no more than 2 at once.

duren 1 day ago 0 replies      
French press (~35g of beans) or 2 consecutive double espresso shots in the morning. Another double espresso shot in after lunch.

I drink a fair bit of alcohol; probably 3-10 servings during the week and 10-20 servings most weekends. Not drinking would affect my social life.

amjaeger 1 day ago 0 replies      
0-3 cups of coffee per day (with 3 being rare)3-16 drinks/2 weeks. I just graduated so that number was even higher cause of celebrations, but it was usually pretty low.

I wish there were more comments here, would be a cool survey for HN

throwaway12a123 2 days ago 0 replies      
2-3 Cups of coffee per day and 3-5 pints of beer (5-7% alcohol) per week.

This is considered low for myself and times in my life I have had about 2x this amount of alcohol/coffee. I am not saying my current consumption is healthy, that is just what it is.

bobbba 1 day ago 0 replies      
coffee free for the last 30 days (used to drink about 2 cups per day) and alcohol free for the past year (used to drink about 3 glasses of wine every evening and more on the weekend) Feel great - work/family and social life definitely massively improved.
samblr 2 days ago 0 replies      
One coffee a day after breakfast. Have gone alcohol free for a good 5 years now! Feels better.
fooYou 1 day ago 0 replies      
1-2 cups of coffee. No alcohol. Trying to stay youthful into old age.
soneca 1 day ago 0 replies      
No alcohol. 1 or 2 drip coffees each day I make myself at home.
milquetoastaf 2 days ago 0 replies      
Shot of espresso in the morning. Probably like 10-12 beers a night?
wayn3 2 days ago 0 replies      
None, except for the very occasional glass of wine.
asdf33323 1 day ago 0 replies      
No alcohol. 1-2 coffee a day.
bbcbasic 1 day ago 0 replies      
I go decaf for coffee and avoid caffeine. I think I feel better for it. Typically 4 or so beers a week, more if there is a night out but that's rare nowadays
MichaelBurge 1 day ago 0 replies      
Usually 24 cups if I'm drinking coffee that day. But it's sporadic: I'll keep that rate for a month or two, and then nothing for 2-3 months.

I'll have a beer or wine or something once every 6 months or so.

crispytx 2 days ago 0 replies      
Ask HN: Powerful laptop and external screen/keyboard or powerful desktop and netbook?
5 points by poiuz  2 days ago   8 comments top 3
RUG3Y 2 days ago 1 reply      
I prefer a powerful laptop + monitor + keyboard for work. Sometimes I like to take my laptop somewhere else and work, like when there's a meeting in a conference room or I want to work from a coffee shop for a little while, etc.

It's a pain to keep to computers in sync with one another, set up exactly how you want, etc.

akulbe 2 days ago 1 reply      
I go with the powerful laptop with externals. I want the power with me, on the go, so this is the best of all possible worlds.

I have two laptops, as well.

2016 MBP w/Touch Bar (full specs)

Dell XPS 9560 (full specs), runs Windows 10

At home I have a Dell UP3216Q (32" 4K display)

and a pair of external keyboards and mice (a separate pair for each laptop)

lazylizard 2 days ago 1 reply      
dont even have a netbook. dont work on the move. dont work at home. work only when you're...at work... haha
Review of Amazon Connect
2 points by contactpilot  1 day ago   1 comment top
       cached 21 May 2017 20:05:01 GMT