hacker news with inline top comments    .. more ..    15 Jul 2015 Ask
home   ask   best   4 years ago   
Ask HN: Just curious, how prevalent is the use of nootropics among HN members?
18 points by markhall  1 hour ago   7 comments top 6
occam65 4 minutes ago 0 replies      
I tried Modafinil a while back, maybe a few years ago. It kept me awake, but that was it. No improved concentration, no boost in energy. YMMV
jen729w 28 minutes ago 1 reply      
Tumbleweeds seems to indicate "not very".

My view, FWIW: silly fad. Non-scientific. Just sleep more and get a moderate amount of exercise and you'll probably be right.

baristaGeek 11 minutes ago 0 replies      
I'm taking lots of Modafinil lately. I particularly appreciate its effects on concentration and long-term memmory.
kleer001 20 minutes ago 0 replies      
You mean like coffee? Almost everyone, I bet you. Why? #1 drug in the world.
deathtrader666 21 minutes ago 0 replies      
I do have my fair share of Modafinil. Works on me as it should [1]. Though I do experience mouth sores by the 8th or 9th day onwards if I take them continually.

[1] - http://www.gwern.net/Modafinil

yebyen 18 minutes ago 0 replies      
I have never tried Modafinil, but I have heard of it. He said they were very good.
Ask HN: How, bottom to top, does a modern web application work?
10 points by dnotrael  1 hour ago   6 comments top 4
arh68 1 hour ago 1 reply      
You can run 1 web server or 2. You need at least one listening on :80; it can either pass the request off to a module (like mod_php, mod_perl, CGI) or it can pass the request off to another web server. The 12factor site is espousing this second approach, separating the front-end server (perhaps nginx on :80) from the application server (perhaps apache on :8080/3000, running mod_whatever, or in their case, a standalone app server like Jetty/Tornado). Almost any web server can run as a reverse proxy, but mod_php/mod_perl usually require a specific server like Apache.

If you've got a dollar, and an hour, maybe run through setting it all up [1], then run lsof -i at the end to understand what's listening on what ports.

[1] https://www.digitalocean.com/community/tutorials/how-to-conf...

hoodoof 1 hour ago 1 reply      
Your path to enlightenment begins by learning at a detailed level what a web server does, and what a web browser says to that server.

Do these tutorials:




And when you are doing web development, use this command to understand exactly what is being passed between client and server (replace port number with the port number that your server is running on).

sudo ngrep -W byline -d lo port 8001

You have progressed to the next rank in your journey when you understand in detail what a request (typically from a browser) looks like and how it is structured, and what a response (from a web server) looks like and how it is structured.

rockerBOO 58 minutes ago 0 replies      
Apache is a web server that add parsers as modules (php).NGINX is a reverse proxy/web server that can proxy to other processes listening on other ports. (PHP-FastCGI running on port 3000).

BROWSER -> NGINX (80) -> PHP-FastCGI (3000) -> NGINX -> BROWSER

NGINX can also proxy on sockets

BROWSER -> NGINX (80) -> PHP-FastCGI (/usr/socks/php.socks) -> NGINX -> BROWSER

CGI just defines the interface, and the language would be implementing the interface.

nostrademons 55 minutes ago 0 replies      
This makes a great interview question. :-)

The short answer is that it depends on how you set up your webserver. Different languages have different defaults, and of course you can override the defaults and set them up entirely differently.

A typical PHP installation runs as an Apache module. In this setup, the Apache server listens for HTTP requests and looks at their request path and virtual host. When it finds one that matches a PHP rule (defined in your Apache configuration), it starts the PHP interpreter, setting variables like $_GET and $_POST from the request data. On very old PHP installations, it then uses the path to locate the PHP script, parses it, and executes it. In newer (post-~2005) installations, the server caches the compiled PHP script in memory and executes it again on subsequent requests, without having to hit disk to read the file contents.

A Rails or Django deployment circa 2007 would use Nginx or Lighttpd as the webserver, and then communicate with a separate application server over FastCGI or SCGI. The latter are simple binary protocols that are designed solely to communicate between webserver and appserver; they basically include the information in the HTTP request, but in a parsed, compact format that's fast to decode. The application server would then decode the request and pass it to a web framework to execute, returning an HTML response that is forwarded on by the webserver.

Why split the webserver from the appserver? Because running your application's code is typically slow and memory-intensive; it's usually CPU-constrained. Serving static files and parsing HTTP, meanwhile, is typically fast, cheap, and bandwidth constrained. If you connect the app server directly to the Internet, your memory-hogging application will sit idle much of the time while pushing bytes out to a browser on dialup or a cell network. Splitting the servers lets you scale them independently; typically, you need just a few frontend load balancers to serve many app servers. It also gives you fault tolerance, since if an app server crashes, the load balancer can retry the request with a different one.

WSGI and Rack are HTTP interface specifications for Python and Ruby, respectively. Basically, all your Python/Ruby code needs to run inside a server somewhere, which talks some network protocol. A number of different web frameworks have cropped up to make programming webapps easier - things like Django, Pylons, and Flask for Python and Rails or Merb in Ruby - and these frameworks typically optimize for ease of programming. Similarly, a number of different appservers have cropped up - gunicorn and uwsgi for Python, unicorn and Mongrel and Thin for Ruby, Phusion Passenger for both - and these typically optimize for speed. A common gateway interface lets you mix and match between them. The reason why you need a different one for each language is that the app server and the webapp framework are typically hosted in the same process, communicating in-memory, and different languages have different memory representations. You don't always, however - uWSGI, for example, is written in C and can be used with Python, Perl, or Ruby.

Around 2010, people realized that HTTP was a perfectly valid transport protocol, and started to use it in place of FastCGI and SCGI. Now virtually all deployments use nginx talking http to one or more appservers that run the actual webapp code.

So to a first approximation, when your HTTP request hits a server, it makes a TCP connection to port 80 on an nginx instance somewhere. nginx parses the request (which looks something like "GET /myapp/index.php HTTP/1.1\n\n...headers..." - HTTP is just a text protocol), looks in its configuration file, and matches /myapp/*.php against the rule for some app (pretend it's actually a Python/Django app running on the same physical server for illustration). It then makes an HTTP request to localhost:3000 on the server to talk to the app server. On port 3000, you have uWSGI running, which again parses the request, populates a Python dictionary, and invokes the callable given in the uwsgi config file. That callable will typically be Django's entry point, where Django consults its root urlconf and routes the request to your application code.

Ask HN: Who's been hired through whoishiring threads?
16 points by thaumaturgy  5 hours ago   7 comments top 5
arsenide 3 hours ago 1 reply      
This is not quite what you're asking, but seeing there are no replies yet regarding the whoishiring thread I will include my anecdote detailing my not getting hired (or even an interview). I haven't since applied for any jobs through the monthly whoishiring threads.

I am a fresh college graduate. The job posting seemed appropriate for someone like me in my current situation (and was the only one in any whoishiring thread I felt was a great fit and not merely a good fit). I did a six-month internship in the same domain, using many of the same technologies as requested for the job. A perfect fit and the obvious next step, I thought. I would be doing what I had already measurably succeeded at, while also being able to use some of my public speaking experience I gained in school to present the modeled data I would be working on. I submit the application, noting all of this. I hear nothing back. A week later, I follow up with the email listed in the post. Still nothing back. I simply assumed they filled the position, however...

I see them post again the subsequent month in the whoishiring thread, still hiring. I do not get it.

panorama 2 hours ago 0 replies      
I initially didn't expect Who Wants To Be Hired to be useful. It seemed like a big spammy list, but I put up a quick summary of myself and got contacted by more than a handful of good companies (many of which I'd heard of before, so not obscure companies either). I decided to only pursue an interview with one of them (I received an offer, but ultimately decided on another company I'd been introduced to by a friend).
ZeroFries 3 hours ago 0 replies      
I got a job through "who wants to be hired":https://news.ycombinator.com/item?id=9127238

An employee from the company saw my post and reached out. Really enjoying the job so far.

kvcrawford 29 minutes ago 0 replies      
"who is hiring" actually had some of the best quality job posts I encountered in my job search.

I didn't try posting in "who wants to be hired."

pbiggar 2 hours ago 0 replies      
We (CircleCI) have hired a lot from the whoishiring threads, where we have posted on-and-off for the few years they've been running. We found our first engineer there, and made somewhere in the range of 5-10 hires from it total.
Ask HN: My Lead Is Stupid. What Should I Do?
3 points by artundtechnik  1 hour ago   3 comments top
facorreia 1 hour ago 1 reply      
1. Make friends with developers in other teams.2. Try to get transferred to their team.
Ask HN: Which interesting ML algorithms have not yet been implemented in C?
12 points by ds2010  10 hours ago   5 comments top 3
weishigoname 2 hours ago 0 replies      
I am a C developer, too, but I don't think it is suitable for ML practicing, which need quick validate what we thought of. for C, designing algorithm and validate will take time longer, I recommend python and R.
vicpara 7 hours ago 1 reply      
All algorithms are interesting depending on the problem you are trying to solve.

I'd really love to have a C implementation of distributed SVD computation for large matrices.

cache_money 2 hours ago 0 replies      
Have you thought about the Support Vector Machine?
Ask HN: What are you using for system architecture diagraming?
3 points by dpeck  3 hours ago   3 comments top 3
dwwoelfel 1 hour ago 0 replies      
I'm building a generic collaborative prototyping tool that I think works well for infrastructure diagrams, especially if you want something a bit more free-form. I wrote up a short tutorial here: https://precursorapp.com/blog/diagramming-with-precursor
nostrademons 3 hours ago 0 replies      
Don't underestimate the effectiveness of 3x5 cards & string, or of whiteboards. Particularly if you want to change your design in addition to just documenting it. It won't be persistent (unless you take a photo of it), but you can really quickly iterate and find opportunities for simplification.
mattkrea 3 hours ago 0 replies      
My personal favorite (on Mac) is Monodraw (http://monodraw.helftone.com/)
Ask HN: What do you do to drive downloads to your iOS/Android app?
6 points by nahcub  8 hours ago   discuss
Ask HN: Do you use different passwords on different sites?
5 points by Namrog84  4 hours ago   7 comments top 7
paulhauggis 0 minutes ago 0 replies      
I use a password manager and generate 64 random number/character combinations for each account. When applicable, I also enable 2FA.

With accounts that are a 1-off and I don't really care about, I don't go through the trouble and just use a short password I can remember.

Something interesting I have found is that some sites will allow me to use a 64 character password when I create the account, but error out and won't allow me to login. If I shorten the password, it works fine.

dsacco 1 hour ago 0 replies      
Yes. I use a 22 character password composed of mixed-case alphanumerics and symbols. I generate a new password for every single website I have an account with, no matter how onerous the process or insignificant the account.

Later this year I am considering transitioning every single account to its own email address on my domain as well. But I recognize that's a tad paranoid. Perhaps only the most valuable accounts.

I recommend 1Password. I don't think there has ever been a major security breach with 1Password, and when I reported a minor cryptographic flaw they were very quick to respond to me and plan a fix for it, despite the threat model being relatively small.

brobinson 3 hours ago 0 replies      
I use mSecure with a different, randomly-generated password for each site/service I use.
bosdev 3 hours ago 0 replies      
I use a password manager (1Password) to generate a strong, unique, password for every site.
pw 4 hours ago 0 replies      
slater 4 hours ago 0 replies      
hailander009 3 hours ago 0 replies      
Don't track me :)
Ask HN: Get started with software consulting business on side?
5 points by a_lifters_life  7 hours ago   5 comments top 3
icedchai 6 hours ago 0 replies      
Referrals... I had a friend at another company who needed help with databases and web servers, back in the late '90s. That got me started. I them got introduced to some other smaller web / advertising agencies that refer me backend work. I also cold emailed some people, got some work that way.
brudgers 4 hours ago 0 replies      
There is no magic formula. Find clients who will write you checks. That is often more work than the work because consultants are a last resort for most businesses [and for those that seem eager, it is sometimes because they don't plan on paying]. That said, existing consultants are often a good place to start because subcontracting out work balances fluctuations in workloads without a hire/fire cycle.

God luck.

gamechangr 7 hours ago 1 reply      
I would seriously talk with a lawyer and make sure you know your legal exposure completely. I know friends who really regretted consulting part time while working full time.

I'm sure there are many who have done it with no problems, but be assured that the legal complications COULD BE real.

Ask HN: Do you get impatient when learning new things?
93 points by csbro  17 hours ago   78 comments top 47
OrangeTux 17 hours ago 4 replies      
TL;DR: Just start.

I've this too. When I learn something new like a language I often want to do it right, like be "pythonic" when learning Python. It can take long for me to write some simple piece of code because I'm constantly doubting if my code is pythonic. And when it takes to long I lose focus and I stop.

The same thing applies when I started a little Go web app, Go was rather new for me. I decided to use Docker and wanted to have a perfect solution with 3 containers(Nginx as reverse proxy , web app and API), auto rebuild and autoreload in developement mode etc. Than I started with writing in Go and everyone had to be tested perfectly, so I was looking for how to test things and how to run tests automatically after saving a file.

These things slowed me down to a point I where stopped. What did I want? I wanted to learn Go. What did I achieve? I learned how to create have production setup for a web app and api in Docker, I learned something about test suites in Go and I was frustrated because another learning project failed.

My advice, just start your project. You can't do it perfect because you want to learn it!

onion2k 17 hours ago 0 replies      
Stop thinking of learning as something you do before you can do what you want to be able to do. Think of it as a range of things you practise over and over again in order to develop a skill. For some skills that learning process is something you might do forever (in my opinion coding is firmly in that category).

For example, if the skill you want to learn is mountain climbing it's useful to read a few books before you climb a mountain - but what you get from a book is information to think about, not the skill to actually go out and do it. You learn mountain climbing by practising climbing mountains over and over again (preferably with a mentor). Every skill is like that - if you want to be good at it, keep doing it.

One more thing: If you really enjoy something you'll enjoy the process of getting better more than the end result, so if you don't enjoy it while you're rubbish at it you won't enjoy it when you're good at it either. Don't struggle with learning something hoping that you'll love it later. You probably won't.

robotnoises 14 hours ago 1 reply      
All the time. I deal with almost constant anxiety over how my time is spent, even to the point where I can't always enjoy leisure activities. I don't know what drives this. I am not an overly competitive person and already have a decent job where people respect me and my abilities as a programmer, yet I rarely spend a waking moment not thinking about all the things I could be grokking.

I guess what it boils down to is that a lot of my self esteem is derived from being knowledgable and resourceful. It really embarrasses me when I don't even have a shallow depth of knowledge about a subject matter that could be potentially useful.

I don't really have much advice for you because I haven't really solved this one for myself, but one thing I try to do is concentrate on very short term goals. For example, when I was learning Angular a few years ago, I knew going into it that I wouldn't "get it" right away. After a few frustrating days I decided to break-up my learning into small goals, e.g. "what are promises and how do they work?" "What is the syntax?" "When should they be used?" I tried to avoid unrelated documentation and stack overflow posts because I knew that it would lead me into rabbit-hole after rabbit-hole. I wasn't 100% successful, but it did help me block out some of the cognitive dissonance.

The only other thing I'd say is that even though this is frustrating, I like to think that your anxiety is actually a good thing if you learn to channel it constructively. It's a good thing to want to know about a lot of stuff!

yankoff 14 hours ago 2 replies      
The trick that helps me is to do a iterative deepening learning. For example when you are reading a long book on a complicated topic, don't try to study every chapter perfectly before you move on to the next chapter. Things will fall off your head pretty quickly anyway. Instead, I would quickly skim through the book, get familiar with the main ideas and concepts (but not too deep into the details). Then on the next iteration I'd go deeper. You'll find that some chapters will require more iterations and some not. Also try to identify the important parts of knowledge that you need to learn and focus on that.
drivers99 15 hours ago 0 replies      
Progress is made by consistently working at a thing every day. If I were you, I would choose one topic (for example, a specific programming book) and keep track of what that one thing is that you make progress on every day. Have a good reason for choosing that book so that you can be motivated; remember why you started that book or whatever it is. If you try to learn other things besides that the rest of the day, and those things change with your mood, that's fine. Just have that one topic you're learning be something that you don't change, or at least change consciously when it's the right time (finished book, or your reason for starting it is no longer true). Spend at least 1 minute every day on that. (I mention only 1 minute because it builds the habit, and you'll usually end up doing more. But if you don't do at least 1 minute, you could go years without doing it, or not do it at all.) You might want to make that 1 thing something you do first thing in the morning, if you're a morning person. There is less chance that something will disrupt your routine that way.

I should start following this advice myself.

nicky0 17 hours ago 4 replies      
Find a little project you want to do using the technology. For example if you are learning Python, come up with a little program/website idea you want to make, and do it in Python. It's always easier to learn "as you go" rather than just reading a book in isolation.
imron 15 hours ago 0 replies      
I get impatient with learning materials in video rather than text form.

I can read considerably faster than you can speak. Please just give me written materials.

ajuc 16 hours ago 0 replies      
I have sth similar. Only noticed after I've seen how my wife learns. She does it depth-first (won't move to another subject till she knows every little detail from the first subject), I learn breadth-first (a little of everything, skimming the books, then I try to do sth and look up the details as needed).

I think for IT breadth-first is better at the beggining, but you can stay half-competent for too long if you never bother to look up the detais that weren't needed so far (my main problem).

erja7050 16 hours ago 0 replies      
I have the same problem. What I do when learning new techniques by studing a book I progress a project in the same pace as I read the book. For example right now i'm learning about the MEAN-stack, so I picked up a book that seemed good and read the first chapter about setting up and creating a dynamic site with express and node and I didn't continue reading before I was done with my own site for my project. This forces you to really studie each chapter and it's more fun then just reading the book!

When studying more general subjects it's not always easy to come up with a fun project and the books are usually not structured in a way that this techniques works. In those cases I try to find a good course online with a lot of reading material or a recommended course book because just watching videos and doing exercises is usually not enough to really learn the subject for me.

serverholic 13 hours ago 0 replies      
Maybe try a more iterative approach to your learning? Try to skim a chapter and then start on the practice problems. When you get stuck go back to the chapter and find the relevant passage.

It might not be as efficient as reading the chapter all at once but I think you'll feel like you're making continual progress by tackling the practice problems sooner.

As someone who has an extremely low attention span I've found that continual progress is the key to sticking with something. This is also why I try to only learn one thing at a time since you progress much faster than trying to learn multiple things at once.

paulrpotts 14 hours ago 1 reply      
I have this trouble with mathematical topics in isolation. It bit me in school as I was very good in most of my classes, but when I had to learn (for example) trig identities, and various rules in calculus in order to slog through problem sets, free of visualizations or some kind of real-world problem, my eyes would tend to glaze over. It has hit me in Haskell because I have tried very hard to understand some of the mathematical formalisms associated with monads, etc. but learning those in the abstract, from a page, without actually writing code to solve a specific problem, was very difficult for me. It's frustrating because I'd _like_ to be the kind of guy who can and does work through a pure math textbook on category theory or linear algebra or whatever, just for fun. But apparently I'm not. I learn best by actively beating my head against a real programming problem. If this is a programming thing you're trying to learn, my suggestion is to keep it tied to a real program.

If it is really severe, consider being evaluated for adult ADD. I probably have this in mild form and also what might be considered the opposite, obsessive compulsive personality disorder, which results in me veering between wanting to understand _everything_ and working obsessively on _one_ thing trying to get it textbook-perfect and understand it completely. This combination often intersects well with the requirements for my work but sometimes... not so much, as I either insist on solving a problem better that is already working well enough, or considering a whole range of possible approaches when I really just need to complete one, and quickly.

eddd 14 hours ago 0 replies      
I had the same problem. How did I solve it?First of all, I don't learn new stuff just for sake of learning new things - I am always trying to solve a problem, even the simplest one. Create simple requirements and keep trying to achieve your goal as soon as possible. Once your tests (even ugly ones) pass, you can start refactoring and make your code idiomatic for a given technology/language.At least it's my way of doing things.
gdubs 14 hours ago 0 replies      
Have you heard of mindfulness, or Zen meditation? It's the practice of sitting, quietly, without thought, focused on your breathing. The general idea is to quiet the mind and to be focused on the moment we're in.

I've found that when I meditate for even just a few minutes a day, I'm much more focused and less distracted -- more focused on what I'm presently doing, right now.

fsloth 17 hours ago 0 replies      
Sounds familiar. Nowadays when I really want to learn something I write everything down to a notebook, sometimes copying paragraphs verbatim. Seems to work for me.
herghost 13 hours ago 0 replies      
I used to be exactly like that. As a consequence I never really picked up any in-depth knowledge through school because hitting the basics was usually enough to "get the grade" and there was precious little "reward" (of whatever form) for pushing it further.

When I was 18 a tutor - who I didn't really know well - said to me in passing, and seemingly pretty randomly, "Your problem is that you want to run before you can walk with everything."

I had an epiphany over that and slowed down my "gets" for small, insignificant objectives and spent the time trying to really understand things.

From that point on I actually learned how to program properly rather than just doing enough to get by, for example.

As I've gotten older I've learned that my chasing the "gets" was a self-imposed restriction because there was always a small but sufficient reward for the accumulating of praise, etc. I've taught myself to very stringently prioritise (recent book suggestion: Procrastinate on Purpose) and categorise the things I "have to" do and instead of doing a hundred things that don't really matter (but they were easy and I get a "thanks") I work out which things I "have to" do will actually add value and make a difference, even if achieving them will take much more effort.

As my career has developed I've moved into being a specialist and now find myself coming back out into being a generalist but the "real" grounding in my skills sets me apart from "career generalists" and "credential whores" that my industry is plagued with nowadays.

EDIT: thinking about it, this "get" behaviour started when I was in junior school. I used to read encyclopaedias for facts and tell people. My parents used to praise me for what I knew, and my friends jokingly called me an "information magnet". I liked my cursory knowledge of "everything" and I guess I became addicted to it.

clayh 13 hours ago 0 replies      
Here's what I do... I have a relatively-simple pet project that I understand thoroughly. When I decide to learn a new language, I do so by reimplementing the project in the new language. That way, I have a structure to the learning based on the project I fully understand. I then read/skip-through/hop-around books and other learning resources as I need to understand various components of the language to implement the features on the project. Here's one example implementation of it, which I need to write anew to learn Swift: https://itunes.apple.com/us/app/pyramids/id589550650?mt=12
batou 15 hours ago 0 replies      
Sounds like you're broken. I was once too. Couldn't focus on anything. This is a good cure from experience:


nexus9 13 hours ago 0 replies      
My strategy is more or less to start by figuring out the structure of a text. This may be in the table of contents, introduction, index, chapter sections, or subsections. I generally scan the text as fast as possible to find all the essential points of interest, marking them down for future reference. What I do after this point is likely different than most. As every text I read is digitally formatted, I don't actually try to remember or deeply understand much at all on my second pass through the material. Instead, I will open a text editor and copy and paste the passages that strike me as most essential, retaining as much context as necessary to retain the original meaning. On my third pass, I will restructure the extracted content, cutting out the redundant parts, re-mixing, or re-expressing them until each chunk I want to remember is accessible and concise. This completes what I'd call the conceptual phase of my reading, which takes a fraction of the time it would take if I were attempting to understand the work using a more linear or comprehensive approach.

There is still much I don't understand at this point. This is natural since I haven't had an opportunity to apply the information to a personally meaningful context. This is the point at which I begin the practical phase. As most of what I need to know is documented in my notes, I will keep it on hand as a memory queue as I engage with specific questions or problems that interest me. And so when an issue comes up that I can't settle, I refer to the notes and also search around online to find out how I should apply the content in that particular problem situation. It's over the course of this process that I internalize the most vital details. That's where the learning happens, at least for me.

Another advantage to this approach is that you will have a type of mnemonic device to reboot your knowledge. As most people forget practically everything shortly after moving on to new subjects, it's critical to have a way to index the information you don't want to forget in the future. Something along the lines of a "memex" (or external memory system) is a good metaphor for what I'm talking about.

tokenadult 14 hours ago 0 replies      
I am surprised that no one has mentioned ADD/ADHD yet in this thread, but maybe that takes patience. If all the ADD/ADHD self-rating scales were boiled down to just one question, that question would be "Are you easily distracted?" If you are easily distracted, focus your attention long enough to see if a medical appointment might be helpful for you.

How I come to give this advice here is that years ago, a participant here on HN described how his programming career struggled until he got medical treatment for adult ADD. Now he can learn more effectively on the job, and he makes a lot more money with a much more stable employment history. You owe it yourself and to anyone else who has helped you develop as much as you have so far to check your attention regulation so that you can be as healthy and happy as possible.

Davetron 16 hours ago 1 reply      
I did a great course earlier this year on Coursera called "Learning How To Learn"

It's pretty short but covers some good strategies for learning that are backed up by current Neurobiology research.


utefan001 15 hours ago 0 replies      
It really helps me when I am learning something that is a ton of fun to learn. The OSCP cert may not be exactly your area of interest, but I guarantee you will have fun and gain a ton of confidence in your technical skills. OSCP teaches you how to do security pen testing. It has been so much fun and so addicting that I often struggle to pull myself away from the computer until 3AM. Many of the tools I use are written in python and ruby. It will also teach you to take the responsibility to write secure code very seriously.


angdis 16 hours ago 0 replies      
Why are you thinking of "a million other things" you need to learn?

That's the core obstacle these days to picking up new skills and knowledge.

Mastery of any subject-matter ALWAYS takes practice and repetition. Simple, but those things require sustained repeated investments of your time and attention.

arc_of_descent 15 hours ago 0 replies      
I'm currently learning Clojure by reading the Clojure Programming book. Its really been a struggle. You're right about the impatience part. I think everyone goes through it at one point or another.

Especially with learning a Lisp language, you can be really frustrated by having to read so much before you can actually create something.

But slowly and surely I'm learning. I just re-read the chapter(s) I don't understand over and over again.

So my advice is don't try to skim over a whole book. Try reading as slow as possible, and if you don't understand something, take a break and then get back to that same shit once more. And of course, write some code as soon as possible.

ninjakeyboard 15 hours ago 0 replies      
my 2c - I'm a very passionate learner - a softtop engineer (eg no education) who got where I am through the blood sweat and tears of personal drive and learning on the go. I'm a decent engineer now, and have really figured out what works for me so this is my current perspective on approaching learning.

The practice is important. I plow through books too but you need a project to become proficient. I bought a laptop and started working on some small scala projects on my laptop and reading books. That was enough to let me submit some janky scala for an interview and land a job as a scala engineer.

Some material is harder to learn, some of it is easy. I think it's better to defer reading books for a bit and get some familiarity with the basics so you have a point of reference while reading. The other day I was assigned a pretty big feature with a piece of the domain I wasn't too familiar with. I spent a few days writing a parser to get closer to the spec before starting to work on design docs etc. Having the familiarity then allows me to make sense of the research and existing design documentation so I think having a point of reference is a really important part of the reading/learning. If it's too far away from my current experience, I can't draw new pathways so it just falls out of my head. If I have that basic seed, I can grow some new pathways and expand my position with reading etc.

Ultimately, I think the best way to learn is to actually present the information again to other people. This is the culmination of practice and research together. To write a detailed article on a topic, you'll have to both write the code and also do a lot of reading. Any gaps in your knowledge you'll identify while you're writing and then it's a simple bit of google-fu to get a really solid level of understanding on a topic as you fill out your article.

Re-implementing things is also a terrific way to expand your knowledge. If you read a pattern book, you'll have some high level understanding of how the patterns fit together. Once you apply the pattern once, though, you'll never forget it and you'll see how it works at a very different level. So couple that with writing an article, etc, and it's a super effective approach to learning.

amelius 17 hours ago 0 replies      
Just pretend that you are back in school and have exams at the end of the semester.
happyhippo 17 hours ago 0 replies      
Same problem here. I want to read so many things that i come to learn nothing :(
__m 16 hours ago 0 replies      
I would try to reduce the pressure. Are you genuinely interested in the things you need to learn? Doing the exercises will significantly increase the things you'll be able to recall.Maybe Mindfulness meditation can help you https://www.youtube.com/watch?v=3nwwKbM_vJc


ssantic 15 hours ago 1 reply      
I have a problem with doing the exercises, either in a textbook, or for an online course. I always expect to have the right answer straight away (whether a quiz or a coding problem), and get really frustrated if I don't. I guess 16 years of school conditions you to think like that. I also get a lot of anxiety when learning new stuff, wondering "what if I just can't understand this subject matter, period".
ThrustVectoring 13 hours ago 0 replies      
Break the thing you want to learn into the smallest possible pieces, and set mini-goals of mastering each one.

The fastest way to learn, say, Python, isn't to read a Python book as fast as possible. It's a lot of little steps in the form of "be able to write an if statement without referencing the documentation."

h_o 17 hours ago 0 replies      
Yeah I get that daily too. I find reading is just a difficult task for me, so I try and watch lectures when I can (e.g. on my lunch break in work).

At home, I just try to work on my own projects as much as possible, but I don't have much time every day. It is hard. I exercise (gym) religiously as I find it helps to keep my mind somewhat in check.

Time is my biggest problem really, so this leads to the frustration you have described.

I also like to play challenging games (LoL) - and that is a HUGE time warp... :(

lourinaldi 17 hours ago 1 reply      
Maybe book learning isn't for you? Try an online resource such as Code Academy or Coursera. You might enjoy the immediate feedback from each lesson as you make progress.
drwl 11 hours ago 0 replies      
First off I just wanted to say that there's a lot of great advice from lots of people. My own story is that I've tried, failed and given up, and tried again many times on many things. Learning to first code, finishing a project, etc.
hguillermo 14 hours ago 0 replies      
Take some challenges. Maybe 2 hours to write some specific piece of code and try hard. Fix your errors. Learn another part. Repeat.
drcross 16 hours ago 0 replies      
I'm studying for the CCIE exam at the moment. A solution I have found is- if you are in flow state keep working until you burn out. That can be at 2 at night or 7 in the morning. Also try to take on information from different media types- video, books, notes, practice questions, reading blogs. I think the various approaches to problems is what forms the cross networks in your head.
prakharmohan 15 hours ago 0 replies      
Just calm down, sit your butt down and read (pertinent to a book). I can understand a million other ideas bouncing up and down constantly but then to make other million ideas happen, you've got to do this.


Well, logically, if you've started learning something I'm guessing its because you want to do something with it? So have some patience.

intrasight 14 hours ago 0 replies      
I get impatient reading about people who get impatient learning new things :)But honestly, if you suffer such impatience, try learning something more tactile like playing the guitar. You'll learn patience as well as learning the guitar.
zhte415 13 hours ago 0 replies      
Turn what you're doing into an applied project. Lines in a book are that, in a book. Run a mini-project using the skills you want to learn, and discover much deeper knowledge and understanding.
adamc 15 hours ago 0 replies      
I don't necessarily do the practice exercises, but I'm not impatient. For me, the only good way to learn something is to start playing with it, using it. I learn from struggling.
falcolas 15 hours ago 0 replies      
If this is a common pattern in your life, a doctor or counselor might be able to help provide a plan of action tailored to your more precise needs.

Somewhat expensive, but worth it, I've found.

2color 15 hours ago 0 replies      
It has a lot to do with the wide choice you have.A lot of research has covered this topic. Look up "The Paradox of Choice".
damcedami 17 hours ago 0 replies      
I guess you need to watch Scott Hanselman talk "It's not what you read, it's what you ignore" very good description about your situation.
logicallee 15 hours ago 2 replies      
I get incredibly frustrated with 1) people who "design" (and I use the term very, very loosely) the actual tools you're learning, and 2) then even more so for the people who teach the tools, as though it's the only thing that existed - even though any member of the target audience has to know a thousand very closely related things, so that honestly you could just point out the 5 tricky things.

For point 1 - things should be like Python, not like resolving dependency hell in the 90's. Installation should be a double-click. Errors should not be easy to make, it should be obvious what things do, and error messages should be obvious. The people who design tools don't care about any of this stuff.

For point 2 - honestly, 99% of people - as in, 99 out of 100 people, who pick up a Rust tutorial have programmed literally 4 other languages - they have written working lines of code in 4 other languages. Look at this shit: https://doc.rust-lang.org/book/ open the menu at top-left) - Guessing Game! The Dining Philosophers! "Lets set up a new project. Go to your projects directory. Remember how we had to create our directory structure and a Cargo.toml for hello_world?" in just as many words that your poor audience has to read through you could have said: "semicolons terminate statements; blocks in curly braces; module import is use module::submodule::symbol; comment with // or /* */ which can nest." Look very very closely at my two strings in this paragraph: they contain literally just as many characters.

You could start by summarizing go in a sentence and get people going, not trace it back to the ENIAC. I hate this GOBS and GOBS of time people assume we have.

And back to point 1, tool writers assume we have like infinite time to follow 27-point directions that could be 100% automated. And tutorial writers assume we have infinite time to read all about the history of the world. I have to watch YouTube videos at 2x speed so that they're sounding like they're rapping, just so I can get to all the stuff I don't need.

Get to the point, people. Not everyone has a picnic following directions that shouldn't even exist.

danielweber 14 hours ago 0 replies      
If I have a deadline I get impatient.

If I'm just cruising through things at my own pace, it's all good.

pw 4 hours ago 0 replies      
maqbool 17 hours ago 0 replies      
i have the same problems rather than reading i start thinking i will finished first 5 chapter than next days another x chapters and i end up reading and learning nothing.
smegel 16 hours ago 0 replies      
Do, or do not - there is no "learn".
netcan 14 hours ago 0 replies      
This is a pretty big question. Learning has many flavours of frustrations that go with it. Here's one:

Learning itself is pleasant. I think we're wire to enjoy it. If you had a judo lesson now and learned a simple trip, you would have fun. Give most people their first programming lesson and they'll enjoy jumbling up letters or whatever you do.

Not knowing is unpleasant. In your first lesson you have no expectation. In the second, you double your knowledge. On the 20th, you are dealing with forgetting and you've accumulated bits you find difficult. You are still a beginner, but now you have expectations.

You can trip or throw a cooperative opponent but you keep repeating mistakes, frustration. There is still a gulf between where you are and scoring on an uncooperative opponent. You can jumble words, add numbers or record form data in your db. But, the gulf between doing that and writing your spaced learning iWatch app is big. Basically, you suck and you are judging your performance by the standards of a programmer, judo player or whatnot. Sucking.. sucks.

I'm about 5 weeks into learning a language and I'm in this spot right now. week one was really fun. Every lesson meaningfully improved my vocal, grammar, etc. I know about 1200 words and a decent amount of the basic grammar. You need about 2500 words before you can understand a simple paragraph or video snippet. I'm nearly useless outside of the context f a lesson translating single sentences. I can't think in the language (I translate) which means (A) it's difficult and frustrating and (B) I might understand your first sentence as you wrap up your thirdeven if I know all the words. None of the gammer is natural to me. etc. etc.

Basically, there's a massive gap between where I am and where it felt like I would now after the first lesson. Massive. Even if I conjure up discipline I didn't need in week 1 and push hard this week, I'll still suck. My vocal might go up to 1500, but I'll regress on something. It's whack-a-mole time where revision is 75% of the work and 50 new words is a drop in the ocean.

Thinking of it, I realize I might have taken the wrong side of the debate. Learnings sucks. I hate it.

But, for the sake of it I'll keep arguing this point. This expectation/reality gap is as irrational as it is inevitable. You know it how long it will to learn things in advance. I know I can't get fluent in a language in 25 hours of practice, but it does create frustration.

Since I'm not going with the "learning sucks, I hate it" conclusion, lets wrap up with stoicism. Good as any, ne? Do thy duty though the the skies fall down upon thee. Seek not vain pleasures of the moment. Rather, take comfort each day knowing that thou hath done thy work. Focusing on your goals to much can make learning emotionally hard (frustrating, etc.), unless your goal can be achieved very quick. If your goal requires 100 hours over 2 months, when you are 46 hours deep, you feel like you aren't making any progress. You are probably wrong, but it doesn't feel like it. Don't focus on the end goal, just do your 2 hours and pat yourself on the head. Good stoic. Nice stoic. Here's a Senecan biscuit. Well done.

Ask HN: How do you handle test data and retroactively testing with Django?
5 points by tallerholler  6 hours ago   discuss
A dataset of every Reddit comment
290 points by avinassh  3 days ago   88 comments top 24
minimaxir 3 days ago 3 replies      
As linked below, I've played around a bit with this dataset: https://www.reddit.com/r/dataisbeautiful/comments/3cjyvb/rel...

BigQuery is the best interface for it. Can resolve queries on the entire dataset in less than a few seconds (however, you only get 1TB processing free per month. Since the full dataset is ~285GB, you only get 4 queries per month. Plan ahead on the May 2015 dataset, which is only 8GB.)

I can answer any other questions that people have.

danso 3 days ago 1 reply      
Not trying to throw cold water on this...but are the Reddit execs OK with this? I mean, Twitter and Facebook would most likely issue takedowns for similar kinds of data dumps...but is there something in the Reddit API TOS that says this is OK?...I wouldn't be surprised if there a fairly liberal license, as that would be aligned with the early spirit of the site. And an onerous TOS would have likely curbed the active user-run bot ecosystem that helps manage and monitor Reddit's discussions.
alexggordon 3 days ago 1 reply      
I used this[0] query to find the top ten[1] most downvoted comments of all time on Reddit.

The most downvoted comment[2] is ironically in iAMA, by a mod of iAMA (ironic because of the recent drama).

I'd find the top ten most upvoted, but I ran out of free bandwidth on BigQuery :(.

[0] https://gist.github.com/alexggordon/7b56353dcf8044a7a5f9

[1] https://drive.google.com/file/d/0Bzxo-UKxFmN-eWticy1BR2tCRDQ...

[2] https://www.reddit.com/r/IAmA/comments/s5guk/iam_bad_luck_br...

avinassh 3 days ago 0 replies      
Some insights:

Relationship between Reddit Comment Score and Comment Length for 1.66 Billion Comments [0] and the Github repo [1]. Reddit cliques N2 - deeper into the subs [2]

[0] - https://www.reddit.com/r/dataisbeautiful/comments/3cjyvb/rel...

[1] - https://github.com/minimaxir/reddit-comment-length

[2] - https://www.reddit.com/r/dataisbeautiful/comments/3cofju/red...

jesrui 3 days ago 1 reply      
There was also someone that created a dump of all HN data a while ago: https://github.com/sytelus/HackerNewsData
ers35 2 days ago 1 reply      
I wanted the data in a form I could easily query, so I wrote a program to convert the JSON to an SQLite database: https://gist.github.com/ers35/3b615a75fa0ed5e6d5cc

I have the program running on Amazon EC2 right now converting the whole dataset. I plan to upload the database to the Internet Archive when it completes.

nathan_f77 3 days ago 2 replies      
I think it's fascinating that if anyone uses this dataset to train an AI, some tiny piece of my personality might make a contribution.
whoopdedo 3 days ago 0 replies      
Could this be used to model the lifecycle of a Reddit post? What makes one thread get more votes and be replied to more often versus another similar thread posted at the same time. Is there a time when a comment is more likely to be voted for, based on wall clock or relative to the start of the thread. What topics are more likely to receive votes than others. Is there a minimum time between when reposts can be posted and still get upvotes. What are the most reposted things on Reddit. Why do people keep voting for reposts.
mbell 3 days ago 1 reply      
Wow, that is much, much, smaller than I thought it would be.

Anyone have a recent link on Reddit's infrastructure? Given the small size I would think it easily fits in memory so I'm a bit curious how they handle it.

akhilcacharya 3 days ago 0 replies      
This should be pretty great for research - the Reddit API is actually fairly limited in my experience, I wasn't even able to get my full comment history last time I tried.
tspike 3 days ago 3 replies      
This could be amazing as input to a question answering engine.
visarga 2 days ago 0 replies      
I grep-ed my own comments in it and only shows 39 out of thousands. Is it really complete?
linkmotif 3 days ago 1 reply      
Does anyone know if this includes the spam? This dataset is obviously very interesting in its own right without spam, but far more useful for me would be all of it, including the spam.

EDIT: regardless, does anyone know if similar datasets with spam?

TTPrograms 3 days ago 1 reply      
This would be a really amazing way to make factually backed statements about the nature of Reddit for news sources given the recent publicity.

I.e. the frequency of comments of a certain nature, typical karma scores for those comments, breakdown by subreddit etc.

curiousjorge 3 days ago 1 reply      
how to access the BigQuery data?

I get this screen

Welcome to BigQuery!What is BigQuery?

but it doesn't show the data.

Houshalter 3 days ago 2 replies      
I really want to get my full commenting history from this, but the download is enormous. Anyone know how I could go about this with cloud services?
iaw 3 days ago 0 replies      
This is an awesome dump, what types of analysis could we use this for?

tspike mentioned a QA engine which would be awesome, what else can people think of?

joelthelion 2 days ago 0 replies      
Does someone have the equivalent for reddit links (with associated title)?
roflchoppa 3 days ago 1 reply      
If anyone is working with the data, we should see how many users actually hivemind comment on things vs OC
colordrops 3 days ago 0 replies      
Does this data include private subreddits?
fit2rule 3 days ago 2 replies      
Anyone know how big it is yet?
thomasfromcdnjs 3 days ago 2 replies      
Someone should try make a sentient twitter bot that learns from the Reddit data
justwannasing 2 days ago 1 reply      
Since 80% of all Reddit comments are vitriol, nonsense by 15-year old kids, why would anyone do this?
Ask HN: How do I know what to charge?
5 points by thumbtackthief  10 hours ago   1 comment top
dsacco 4 hours ago 0 replies      
Oh goodie, I love these questions.

I'm going to assume the following is true about you:

1. You can translate someone's desires for a product into a software spec.

2. You can translate a spec into a real, working piece of software by programming it using your favorite languages and tech stack.

3. You can do the above in a reasonable amount of time, reliably and consistently, and follow a project deadline with milestones without too much supervision.

4. Your friend is asking for this because he wants to market it as part of a product or service.

Great! If you want to be fair to him and give him "mate's rates" then charge him $2000 per week.

Why $2000 per week? Here is the logical progression:

1. You have the aforementioned, assumed skills (which I am deducing from you being a developer of 3 - 4 years) that make you very valuable.

2. Your floor for making an iOS app for a client would be $5000 per week. Why? Because it's mostly arbitrary and it's what the market would pay, and I assure you the market would bear someone of your skills being paid this much money.

3. $2000 per week is a vastly discounted rate from the $5000 figure quoted above, which is appropriate for friends. Note that this is appropriate for friends working together as business partners, not for something so insignificant that a friend is doing it pro bono. That you want to be paid at all indicates this situation is not the latter.

When I do technical consulting I always bill weekly. I fundamentally disagree with billing hourly for a variety of reasons, so I think you're right that you should not be billing hourly.

If you don't want to bill weekly you can set an entire project fee. In that case, I would take the above amount and multiply it by the number of weeks you anticipate working.

What I would emphasize to you is that pricing is basically arbitrary. You simply charge the highest amount the market will bear. If this project is worth doing and "serious" enough to warrant you being paid, you might as well be paid generously, even if it is very discounted for a friend.

Ask HN: How do I become a Software Developer?
21 points by _zero  1 day ago   21 comments top 11
bwldrbst 1 hour ago 0 replies      
I was interested in coding from a young age but was a terrible student. I barely scraped through high school and never completed any tertiary education. By 22 I was unhappily working as a pizza store assistant manager.

I then took a pay cut to get a job as a tech support guy at a tiny local internet provider. Over the next couple of years the company merged with a bunch of other small ISPs and I found myself given more responsibility. Not liking all the paperwork this involved I wrote some web based tools in perl to make my life easier. This was noticed, as was the fact that I was cheaper than a "real" programmer, and when they wanted to expand the dev team I was given the job. Now, after more than a dozen years and quite a few different organizations I'm a team lead on a pretty large and successful system.

I guess the point of the story is to build stuff, especially stuff useful to you right now, and don't be afraid to take risks.

trcollinson 1 day ago 1 reply      
To be frank with you, start working, hard. This is going to be your largest huddle. When you read this message, what were you doing? On Facebook (or some other social media)? On some game? Watching your giant Netflix queue? I don't know what it was but it probably wasn't coding. And if it was, then good! You're already on your way.

I honestly don't mean any of that to be mocking. I am just saying, a lot of people fail because of distractions from their primary goal. So now you have to ask yourself, what are you willing to give up? Are you willing to block out all of those distractions so you can start to learn a new skill? Only you can decide that and only you can make yourself fail if you don't.

Next, start building something. Honestly, you don't need to understand math at some high level to build great software applications. Go pick something and build it. Look at Jennifer Dewalt (http://blog.jenniferdewalt.com/). She set out to make one website per day for 180 days and blog about it. Imagine the amount of dedication to complete such a task. And look at how much she learned in that time! Just pick things are build them. Learn. Grow. Start right now.

ruraljuror 1 day ago 1 reply      
It is great that you have a goal and a direction, but you are pinning your hopes on something that you do not know very much about and you may not even like. It is easy to read about coding on the internet and think it is the answer: that you are going to lock yourself in a room for 6 months and when you come out your career and life will be sorted. This is a delusion, a common delusion many of us have to one degree or another. I switched careers to become a software developer and I'm already trying to figure out how to get to the next step. There was another post earlier today about a career switch and the poster seemed to be blaming it on the company. Becoming a software developer per se is not the answer. You need to focus on becoming a well-rounded person, part of which may involve becoming a software developer.

Being a dev involves a lot more than just coding; communication, organization, teamwork, etc. all go into development. These are skills that are harder to pick up from the internet than coding. It is for these reasons that I would recommend that you consider going to school as a good way to start your career. School is a clear cut path in a situation like yours where you are going from basically no experience to starting a career.

School is not the only way, but I personally would bet on it as the better outcome. Do not let math be a deterrent. You can learn it. Check out Barbara Oakley's book A Mind for Numbers and read Lockhart's Lament. It does not have to be an impediment. Finally, as you mentioned there are a lot of resources online. MIT Open courseware has a lot of awesome resources, especially the intro to programming with Python. Coursera is also obviously awesome. But if this career were as easy as spend 6 months or a year studying and come out making $100K then everyone would be doing it. You need a more realistic plan.

So you have a general direction: software development. Now make some short-term and long-term plans about how to lead a good life and do what you're interested in along the way.

happycry 1 day ago 0 replies      
Let's start with stating a positive. You're enthusiastic about developing software. You have no idea how many software engineers dread writing code (and thus delivering bad software).

Luckily, there are tons of great resources out there to learn to make whatever you want. Don't be overwhelmed by what's out there. Although HN is a fantastic place to keep up with what's going on, it's very easy to get caught up in the noise.

Learning to write software is like learning to do anything else. All it requires is practice. I was fortunate that I went through a university and it opened my eyes to a lot of theoretical things, but I am where I am today because I spent a lot of time outside of university learning things that were more practical.

I can point you to a few resources to get started (there are plenty more that people here can recommend!)

Generic Programming: https://www.codecademy.com/en/tracks/pythonhttp://openbookproject.net/thinkcs/python/english3e/

Web: Ruby on Rails - https://www.railstutorial.org/bookRailscasts - http://railscasts.com

At the end of the day it depends on what you're interested in and what you want to make. I find that when I want to learn something new I try to remake what someone else has already made. That way I'm thinking less about the idea and more about how that software should be constructed.

burritofanatic 23 hours ago 0 replies      
I left law, ended up in QA, and am now a full time software developer. I think being in QA helped a lot when it came to teaching myself - would be employers would be glad you had work experience in a professional software development environment. This will be to your advantage, though trying to go dev from a QA role at the same company may be more difficult for political/business reasons.

I think the thing that got me where I am now within a reasonably time period is picking a type of technology (in my case, it was learning iOS and Git well enough) I wanted to work with, then stick to that until you become employed while attending every hackathon and relevant meetup, time permitting. You'll need projects that demonstrate your aptitude and ability.

If you or anyone else is interested, my story is actually on Codecademy: https://www.codecademy.com/stories/155-from-lawyer-to-ios-de..., and I've even written a book about the transition: http://quitlawandcode.com/

You're going to do fine. I know it seems like such a binary and insurmountable transition, but the more hours and practice you have, the more OOP and other concepts will just click for you. Also, you're not too late! I started at learning at 30.

FYI: I'm terrible at math, though I love learning, and would like to re-visit it when I have some more time (probably when I have high school aged kids).

morepyplease 1 day ago 2 replies      
Similarly I'd like to ask how to jump industries. I have 12 years in enterprise IT as a network and systems admin and the last 5 years I've been living and breathing powershell at work, developed several python/flask side projects (one full site with cc processing, coupon code checking with JS, email notifications, user registration, etc.). Learned to use git, developed my first published windows store app, and now continuing to learn c# for fun.

I find myself enjoying coding more and more each day and IT support less and less. But I "know" IT territory very well. From IT managers, to day in day out, to projects one cam expect. I live and breathe it. I feel out of my depths even applying or building a resume for a development job and have a family to support. What's the safest and best way to get my bearings and jump into a dev job?

Work is supportive of my advancement in coding, but its leveraged as a cheap way to automate processes.

coryl 10 hours ago 0 replies      
I started when I was 24, that was 3 years ago. Since then I've shipped 3 million total downloads on the iOS app store as an indie developer. I've learned enough programming to make almost anything I can think of. I haven't actually ever looked for a job because I like my freedom so much, and I make enough to survive.

Figure out what you want to learn/build, and just start. When you hit seemingly insurmountable roadblocks, just take 20mins away from the computer and come back. Stick with it, have a long run view rather than a short run view.

csorrell 1 day ago 1 reply      
Well, I was 25 when I started learning how to code. The big motivator for me was the birth of my first child, and I was sick of minimum wage labor jobs. Transitioning into software was a long process for me. I spent about two years working at it in the evening hours before I was able to land my first real job. There's a steep learning curve upfront and it takes a lot of effort. I would recommend signing up for classes at your local community college if you can. See if you like it first, then re-evaluate your decision after a semester or two. If you're like me, being enrolled in some kind of program is going to help keep you focused and on track.

Best of luck. You can do it!

doobiaus 1 day ago 1 reply      
If you're not in an environment where you have mentors, or if you find yourself easily distracted, sign up to a course at a school with proper in person training and testing or you're just going to keep procrastinating.
meric 1 day ago 0 replies      
To become a software developer, all you have to do is develop some software and keep doing it. I started when I was 13 and now 12 years later I think I'm doing OK. I started doing Freelancing jobs since I was 19 or 20.
nikhilkalegregg 1 day ago 0 replies      
You are young. Becoming a coder is very doable at that age. I started self-teaching myself how to code a little less than a year ago just before I was 24 with no prior experience besides believing myself to be raw at math just like yourself. If you understand math, it should not be too difficult. Everything is abstractions, and you get to create the abstractions. If you think about coding in terms of just organizing tables, it makes it really easy. Some of the fancier stuff might take some time (or some copying and pasting), but most of the syntax that is probably going to intimidate you is not necessarily useful in practice. Think of it as writing an argument in a philosophy class. What are the systems conditionalitys? What is the end goal of the program? Sound, clean and uncluttered logic with a distinct argument and point is what you are going for. Personally, I found that I learned very fast using PHP, MySQL, HTML5, jQuery, JavaScript, and the LAMP stack. It gave me the foundation to do AJAX (asynchronous calling) and learn a lot of the intimidatingly sounding frameworks which are not altogether that useful, necessarily (I only know as far as my opinion). But I would recommend checking out that stack. They work together nicely and are not syntactically challenging. Another thing I'd recommend is replacing your recreational gaming like crossword puzzles, sudoku, etc with Project Euler. Its an enjoyable way to learn while using competitive fuel/energy rather than draining any oil of finishing a task for a tasks sake.However, for me, 100%, the single most important thing was setting myself projects, and committing myself to them despite my subconscious knowing they had no chance at success. The project I chose was a music new-era napster/iTunes in the cloud website. I would recommend something similar because it is relatively enjoyable to learn/code and there are a million different ways you can improve any base product you have, (offline playing, sharing at the blink of an eye, efficient uploading, and you can get rid of Spotify, Pandora, etc. You can also make it illegal as shit and feel like a cowboy and just see how great you can make it. Chances are, it will be really illegal but better than anything else you can currently get right now. Use that as motivation, enjoy the fruits of your labor, save money, and inspire yourself to keep going.

Once you've exhausted the features you can add to a music app, you can execute any idea that you come up with that utilizes the Internet, sharing, etc. You won't necessarily become a master of 4D printing, but any theory you have about anything you can test and create a physical representation of on the Internet.Don't rush building it for the sake of finishing. Learn and understand what you are doing and your next project will have the potential of promis. I spent 3-4 months working on a website that I knew had no chance of becoming anything. However, I just kept smashing my head against the wall and making it better while slowly but surely improving my skillset to the point where new things now come easily, because I understand the philosophy.Now that I have moved on from that initial music website I can now pursue much more innovative and intellecutually stimulating projects (which I wouldn't have been able to do had I not spent so much time on a project that I knew had no chance of success). Give yourself a throw away project, commit yourself to it, and use it as training for the next one. If you truly commit yourself, you should be able to build pretty much anything you see on the Internet 1 year from now. That is not a guarantee! But you have plenty of time and there no reason not to believe that you cannot.

Ask HN: How do you stay sharp?
113 points by taigeair  1 day ago   80 comments top 42
LoSboccacc 1 day ago 1 reply      
I kept learning til 30. Now i'm still learning at 33 but it feels different. Once you learn enough is more about the ability of connecting dots.

I.e. I know a load of libraries and built a fair deal myself, including a orm and a crud framework from ground up, and I know many of the pitfalls (I fell for many of them but I was young and foolish) however I also learned the why stuff grlets built a certain way and now it's ten time easier to pick up new things (yeah ember does this and that because it solves the problem x in a way I already saw done here and there, which is better than this other way under these conditions)

Another example I've been around to see the latency/bandwidth problem arise so many times it's not even funny anymore. and each generation solve it's time solution (initially it was the terminal because bandwith was the problem, then the thick client because latency, then it was again dumb data screen within browser, then ajax become viable so code moved back to the browser, last framework are so bloated latency is an issue again and they are moving templates back server side once more)

Learn enough new thing about solving the problem yourself, and basically you'll know every class of library that tries to solve that specific domain. Then you are free to learn higher level stuff. If you start too much high then it's easy to be lost in a flurty as technology shift without understanding the whys.

Hoff 1 day ago 3 replies      
Careers and jobs and employers and technologies all come and go.

Figure out what interests you yourself, whether you want to go somewhere or do something, and how you might get there. What's important to you.

If your current job can or does line up with that, great. If not, then start working toward your target and toward a different role at your employer, a different employer, or self-employment.

Have enough cash and/or short-term assets available to operate for at least six months without a job. Maybe longer, depending on what the job market looks like in your area.

As for yourself: diet, exercise, regular sleep and regular meals, and working sane hours. Work on your own mental, social, and physical health. Your finances and your cash flow and your sleep and your meal schedules are all part of this health, too.

Schedule time for yourself. Outside of your job. Both to learn and grow, and for socializing. Seek out folks that will challenge you either at work, at university, at a Maker's event, or outside. Seek out and talk with folks of different backgrounds and interest areas and any of the different genders and of different personal histories and experiences. Learn a new language.

Once you have pondered on these and have your plans underway, then you can start working on the technologies and the tools and the online courses and classes and the rest. If they're applicable, and how you best learn.

While your employer will certainly like the focus on your career, life is more about yourself.

karamazov 1 day ago 1 reply      
I try to work through hard technical material. Personally, I enjoy both technical books and MIT OCW lectures. There were a number of courses in school that I was interested in and didn't have time for, so I've been looking at the online equivalents.

"Working through" means doing exercises and projects. Reading or watching material without applying it doesn't help.

I aim to spend an hour a day on this. It doesn't always happen, but it's a reasonable enough goal that I can find time for it most days. Occasionally, I'll take a full day to study on the weekend.

Some specific recommendations:

 books: SICP (https://mitpress.mit.edu/sicp/) K&R The Art of Computer Programming (if you have lots of time) On Lisp (http://www.paulgraham.com/onlisp.html) Learn you a Haskell Types and Programming Languages CLRS The Dragon Book (Compilers, http://www.amazon.com/Compilers-Principles-Techniques-Tools-2nd/dp/0321486811) OCW Courses: 6.172 (High performance engineering) 6.046 (Algorithms)
This is just what I've been interested in and is by no means comprehensive. Outside of CS, math is great to learn if you haven't studied it formally.

I've found it's best to pick a topic you know enough about to be motivated to study it, but haven't done serious work in.

Htsthbjig 1 day ago 1 reply      
Learning new programs like Sketch, or taking classes on Udemy and Coursera makes no sense to me if you don't apply it.

You don't really know unless you apply it. I grew up disassembling and competing cracking programs, then I learned c because assembler was too slow for creating things like compilers that I wanted to create.

Then I had to learn c++ in order to create graphic interfaces for my programs.

Then I needed python in order to develop faster... java, objective c, c sharp, they provided me with things that I needed.

Then after years of programming I created a company and felt behind. We were so f*ching slow. We needed something else: we discovered metaprogramming in Lisp. Much better then, things improved.

We modified the CLang compiler in order to do much better than anybody else what we did. We were pretty successful.

But it is not enough. We want to change the world. We want people of the world understanding each other using their own languages. We want to understand DNA and end cancer and aging. We want robots that drive and cook. We want to understand nuclear fusion. We want to improve battery technologies, to remove the salt from sea water cheaply. We want to make inexpensive LED plant growing so we can travel to Mars or Venus.

And all the technology that we have is not enough for solving those problems. When you face those problems you became humble and you met the best people you could ever imagine.

Surrounding yourself with really smart people you will learn in a year what you will in your entire life if you only face trivial problems.

compostor42 1 day ago 2 replies      
>I read. I work on side projects. I learn new programs like Sketch, take classes on Udemy and Coursera

Sounds like you are already doing more to improve than most!

>I'm not learning that much on the job anymore, just adding value to the company.

Do you feel like you are often the smartest person in the room where you currently work? If so, time to move some place where that isn't the case. I find working with people more skilled than myself is the fastest way to improve. Sure, your ego will take a hit, but it is worth it for the self-improvement benefits.

However, short of places like Google, I'm not sure how to go about finding a place with more skilled people. Can't know for sure until you are actually working there.

zinxq 1 day ago 2 replies      
Battlefield 4. Laugh if you will, but playing this game (or games like it) against other humans is an incredible mental exercise. There is little downtime and twitch does win the day. Interestingly, I usually only play when I'm too tired to code productively anymore - and playing brings me wide awake.

It's amazing to me when watching others play how they miss cues I can now see. Or how my mind has subconsciously optimized where to aim in a heated firefight depending on the gun I'm using (sometimes sternum, sometimes head - I more notice I'm doing it as opposed to actually doing it).

Plenty of good advice here, but high-speed mind activities should be included in any advice of "staying sharp" (i.e. Battlefield, RTS computer games, iphone brain games I suppose)

(relevant: Starcraft performance factored by age: http://journals.plos.org/plosone/article?id=10.1371/journal....)

brokentone 1 day ago 1 reply      
Surround yourself with people far smarter than you are. Bring up interesting topics that you want to learn about but can also contribute to, let them fill in the gaps. Ask them what they are most interested in at this moment. Ideally do prior steps while buying them drinks.
agnokapathetic 1 day ago 1 reply      
- Write prose. I find my verbal fluency (and my inner monologue) become far more dull when I haven't written anything in a while

- Keep alcohol consumption to a minimum, even a single glass of wine impacts memory formation and recall.

- Get lots of sleep

heardtheword 1 day ago 1 reply      
Try teaching other people. It's amazing what you find you don't know by explaining things to others. If there aren't people who want to learn what you know then post on a blog or forum and get feedback from those who are interested.
hluska 1 day ago 0 replies      
Since I left University, I have gone through a few periods where I felt that I had plateaued and stopped climbing, both in my career and in terms of learning. To snap out of this, I found the following helpful:

a) I changed my perspective. In University, learning was broken up into easy to digest semester long chunks. In four months, I would write papers, write exams and receive marks which sort of indicated what I had learned. Since University, I have had to change my expectations, both in terms of chunks of time and in terms of feedback. I try to remind myself that I am learning, but sometimes I just learn in chunks that are almost too small to notice.

b) I keep a journal about what I am learning and what I am working on. This journal tends to be long on opinion. Every few months, I go back and read how far I have come. For me, there is no better way of seeing how far I have come than to read how wrong I used to be. Hacker News helps with this, since there is no shortage of extremely smart people who are willing to tell me that I am wrong.

c) I added hobbies. When I was in University, learning was my job and all of my hobbies and social interactions were built around this. Since University, I have picked up some hobbies. For me, lifting weights and jogging started off as a way to solve a serious health/stress problem and evolved into a bonafide hobby. I may not be learning as much as I was in University, but I can bench press my weight now and run 10km at will. Progress (of any sort) is addictive for me and it forces me to keep finding ways to progress.

d) I got into public speaking. In University, I belonged to a Toastmasters chapter, but after University, I not only joined another chapter, but I started seeking out speaking opportunities. Not only did my public speaking improve, but I have learned an immense amount through speaking in public. The old adage that you never really know something until you can explain it to someone who knows nothing is 100% true.

Right now, my biggest challenge is to incorporate meditation into my day to day routine. I love meditating and I know that it makes me a better, more mindful person, but it is hard for me to incorporate it. My hope is that a little more mindfulness will keep me from obsessing about the big picture (where change is so slow) and keep me in the moment.

Good luck, my friend and if you need anyone to talk to, my email is in my profile.

vowelless 1 day ago 0 replies      
I don't particularly enjoy online courses. The density of technical information is very low. I prefer reading papers and then doing a nose dive on related papers to fill in the knowledge gaps. Papers are like nodes of knowledge with edges to relevant information (references). For things usually not covered in universities, papers are pretty much crucial. For example, I found it a lot more useful to read the original or early b-tree and octree papers as opposed to looking them up in text books. And these directly affected my code. The DynamoDB paper was another one that affected my work thinking, even though we don't do a lot of distributed systems.

There are many famous papers out there (search on HN, the topic gets posted frequently). I highly recommend you choose a topic, and just look up the important papers in that topic (google scholar is a great tool for checking citation numbers).

danwakefield 1 day ago 0 replies      
Apprenticeship Patterns[1] was linked in a thread a while ago and its got some good ideas.

I think that learning a lot can hurt the overall effort, Focus on one or two things at a time and use them to do stuff. Try and get to the 'know what you don't know' stage for each thing, even if you cant do something at the moment knowing what steps you should take to get there is a good feeling.

[1]: http://chimera.labs.oreilly.com/books/1234000001813/index.ht...

evo_9 1 day ago 1 reply      
Workout, eat smart and get more than 7 hours of sleep a night most nights. It's absolutely amazing how much these three things affect everything in your life.
clamprecht 1 day ago 0 replies      
Work at a smaller company. Like 10 people. The smaller the company, the more roles each person does.
allendoerfer 1 day ago 0 replies      
I think the reason for this is not only the obvious "young brains learn faster" but also different hormone levels, ego and so on. When you are younger, you overestimate your skills and take on things that are actually above your level. Once you get older you start thinking more realistic about your skill-set and realize that other people are smart, too. You become better at estimating how much time a given task might take and you realize that you have other things to do.

The problem is, you cannot grow if you do not push yourself to the next level.

Practising something you already kind of know how to do will mainly optimize speed and avoiding mistakes and will let you plateau slightly above your current level. To really advance at something you have to take on tasks that are out of your comfort zone. You can then reapply the learned skills and concepts back to other areas.

I think you have to actively massage your brain to prevent it from stagnating and freezing the algorithms it applies the most. It think we are blessed to work in a field that is conceptually challenging enough that we can actually observe this. In another area you would just wake up one day saying stuff old people say :D

jhawk28 1 day ago 0 replies      
Find a bigger pond. Big fish in small pond is a good way for short term benefits, but it limits the growth.
rifung 1 day ago 0 replies      
Have you considered the idea that you are still learning but just not things that you care about/appreciate?

When I left school and started working I also felt like I wasn't learning, but when I sat down to think about it, I actually was learning a great deal. I just didn't feel like I was learning because I didn't care for anything I was learning.

You will almost certainly learn new things on the job but those things are likely things aligned to your employer's interests and not your own. I think you might want to see what interests/excites you and try to dive into that material instead of learning things that other people think are useful or suggest.

Even in the comments here you can see people recommending learning new frameworks and others recommending classical texts like SICP or even learning functional languages. Clearly each of these groups of people thinks what they are learning is useful or important. On the other hand, they might not think what the other group is learning is very useful. I certainly don't feel very happy learning a new language or framework, but other people don't like learning theory unless they can use it to build something.

phodo 1 day ago 0 replies      
From the above description, it seems like you might be trapped at a local maxima. Try expanding your horizons in other areas. You will gain perspective including ways to get "unstuck". You will find other maximas, and realize that you have a long way to go. For example, try reading about medicine or art - that can give you a perspective on "how" to think and "why" and connect the dots, rather than the "what" of the latest framework. To give you a more concrete and prescriptive example you can apply, let's say you are learning Sketch and teaching yourself UI/UX. How about exploring color - the science and art behind it? Pick up a color palette program, and look at famous works of art and good UIs - what palettes do they use and why? Can you come up with your own palettes? Why did you choose what you chose? Can you use a palette from some apps like Slack or Monument Valley and build your own UI? Basically try to go in an adjacent or even orthogonal direction. You are on the right path... you seem intellectually curious and a lifelong learner. Just shake things up a bit and that can pay dividends. HTH.
andresmanz 1 day ago 0 replies      
I wasn't interested in studying at a university, so I have plenty of things to learn. I usually work from home and I learn a ton every day. That's primarily because I always have a book or two around and read about new stuff on HN. Luckily, the world of programming is huge, so there's always something to learn. In my opinion, at least reading a book on general programming is beneficial to everyone, especially managers.
hellofunk 1 day ago 1 reply      
I find that having a voracious appetite to explore as many associated fields and topics to your area of work or interest is not only interesting and enjoyable but gives your mind some pause on the close-at-hand stuff while you gain the very important pieces that inform a big picture view of what you are doing. Plus, you can often get new outside-the-box ideas this way.
jfoutz 1 day ago 0 replies      
Part if the plateau might be not knowing the new stuff cold. There are times when it's hard to progress if your base understanding is kind of shaky. as you actually use the new stuff it'll gel, and open up new avenues for inquiry.

I'd also suggest Haskell. compare this: http://www.joelonsoftware.com/articles/LeakyAbstractions.htm... to abstractions from math. mathematicians ensure the abstractions never leak. they make the rules, there is no way out of the game. this kinda points in that direction: http://conal.net/blog/posts/denotational-design-with-type-cl...

I think the most important thing is just keep trying.

someear 1 day ago 1 reply      
Start your own company: you'll learn a ton, and be forced to stay sharp, since your survival depends on it.
agentultra 1 day ago 0 replies      
Sounds like you're doing all of the right things. Try reading material from outside your primary interests: biology, pure maths, civil engineering, electronics, chemistry, etc. Ideas are not born in a vacuum and over-specialization can sometimes give you the illusion of progress. I find digging into a new subject exciting and it often gives me new connections or angles to programming and maths that I wouldn't have otherwise encountered before.

As for commercial applications... well software for business is usually dry and boring grunt work. Interesting, innovative, and challenging are, paradoxically, antithetical to commercial software. You want reliable, boring, and simple. Perhaps you need to look for a research position or take a risk and start a venture based on one of your ideas.

Xorlev 1 day ago 1 reply      
Go outside your comfort zone, learn a functional language and give a talk on it. Learn higher-level maths. (IMO) There's satisfaction and clarity to be found there if your current path isn't challenging you. You might find that it takes you into new roles too.
hellbanner 1 day ago 1 reply      
What are your side projects? IMO learning is only useful is it lets you build something.
davnicwil 1 day ago 0 replies      
> I work on side projects.

I'm intrigued this is here, because when I read the title this was my immediate suggestion.

In my experience there's no better way to learn than working on side projects that explore technologies that you don't already know. Is this what you do?

Writing an app on the same framework/languages as you use at work is also definitely valuable, it'll give you more depth of knowledge that's then directly applicable at work (in fact when starting a new job I recommend doing exactly this) but it won't stretch you much intellectually. To do that you kind of have to force yourself to use completely new stuff.

nkassis 1 day ago 0 replies      
Could it be that you've exhausted the easy things to learn? I feel that at some point it gets hard to keep the same learning velocity as the knowledge you are acquiring gets more complex and difficult to grasp. Also major breakthroughs are much rarer. While learning things similar to previous subjects seem trivial. Learning new programming languages for example. Once you've accumulated enough of then pattern start to repeat and learning the next one becomes more and more trivial to the point where it doesn't feel like learning the same amount of stuff as previously.
sosuke 1 day ago 0 replies      
Take on more responsibility at work, either do it on your own or ask for more from your boss, say you want to do more, you feel you can do more.

Or start contributing to meetups, be out there, and get another job that is a step up.

Or try and make a product on your own, even if it is a silly idea, until you launch it. Do it again.

1-1.5 years isn't a plateau don't stress too much, that you want to do more is nearly all you need to climb, there are countless people that don't want anything more

pw 4 hours ago 0 replies      
Meth, mainly.
joshuapants 1 day ago 0 replies      
> I learn new programs like Sketch, take classes on Udemy and Coursera, but do not feel like I'm learning as much as I'd like

Maybe you're not challenging yourself sufficiently. Try to find something that will be very difficult for you and start to attack it.

realrocker 1 day ago 0 replies      
I want to say this to my Product Manager, and if aren't doing this already try investing 10-20% of your time on doing hands on work. Details matter.
elara003 1 day ago 0 replies      
I find my time limited but I have a 35 minute commute to work and a 35 minute commute back home. So I download podcasts and listen to them.
ruffrey 1 day ago 0 replies      
Are you enjoying your work? Is it challenging you? It might help if your "day job" was the primary driver of your learning, vs fringe efforts
daedlanth 1 day ago 0 replies      
Concentrate on things that you suck at or avoid; technology or not, building a good stone wall is as enjoyable as an elegant RAILS deployment.
daedlanth 1 day ago 0 replies      
Concentrate on things that you suck at or avoid; technology or not, building a good stone wall is as enjoyable as an elegant RAILs deployment.
daenz 1 day ago 0 replies      
If you're challenged, you're learning more and staying sharp. Stay challenged.
talles 1 day ago 0 replies      
Open-source projects, specially the ones out of my comfort zone.
viach 1 day ago 2 replies      
I thought training doesn't increase intelligence. Does it?
dummy7953 1 day ago 0 replies      
I think it's possible that people who tend to over-intellectualize, possibly are missing some tenderness in their lives.
awoland 1 day ago 0 replies      
No rebate ...
anon3_ 1 day ago 0 replies      
Open source projects are a free and self-reinforcing way to be on top of the latest tech, build a resume and give back.

You can do so pretty easily via GitHub. Sign up to a few mailing lists, not every important project is on GH.

Consider a daemon you use really often. Familiarize yourself with the code until you master it.

spectrum1234 1 day ago 0 replies      
Start a startup
Ask HN: What do you do when you are lethargic?
47 points by wemysh  13 hours ago   53 comments top 29
revx 12 hours ago 1 reply      
So, a few things here that I've discovered in my own fight against this kind of lethargy & depression.

1. Eat food. Eat good, healthy food on a regular schedule. The willpower center of your brain takes a LOT of calories to run, and if you don't fuel it, you'll find yourself paralyzed by laziness. Make sure the calories you ingest are solid ones - protien, fat, sugar. Not HFCS or other forms of fructose, since it messes with your insulin and makes you feel full even when you aren't.

2) If you are male, check your orgasm and pron consumption. For myself, if I've orgasmed in the last three days, I get a kind of empty, grey fuzz feeling that feels a lot like depression. As someone who's fought mild depression, one of the best ways for me has been to regulate my sexuality and orgasm only when I know I don't need to do anything the next day. Track your energy and your sex drive, and see if there's a correlation - I bet the results will speak for themselves.

3) Sleep on a schedule. Caffeine doesn't count. It's painful and it takes willpower and it sucks but that's life. I solved this one by getting married to a woman who keeps a very strict sleep schedule (ymmv :P )

4) Organize your time. Follow pomodoro or a one hour on-one hour off time. If you find yourself "half-working" (sitting at your computer pretending to work but really browsing HN and Reddit). Get up. Go outside. Walking and standing are good for your health and your creativity.

5) Find a friend or partner who energizes you. Someone who you can hang out with and have crazy ideas and good conversation. If you don't have someone like this, start by making acquaintances at a local club or meetup.

6) Rest. Understand that recuperating your strength for a day isn't going to wreck your chances at becoming the next great startup CEO. It's okay to give yourself a break, before you break.

Hope this helps :)

josscrowcroft 12 hours ago 1 reply      
I clean my living space, clear out old baggage and remnants of old identities, to make space for the new. Lethargy seems to come when I am ready to let go even more and allow life to show me my next steps, but I need to listen to the message.

In the depression/anxiety/lethargy space I find it's not time for any major life breakthroughs.

The biggest breakthrough for me is finding the initial half ounce of mojo to begin the space-clearing and space-claiming process... whether washing a single dish, throwing an old piece of clothing, deleting an email I'll never get around to replying to.

Then, doing it again, and again, one damn t-shirt at a time.

Soon the momentum picks up and the clearing happens by itself.

Also, for me generally the only way out is through - I find it starts with acceptance of this moment as it is, so I'm careful to not add my judgments ("This should not be happening", "I fucked up", etc.) to the situation, but instead hold the lethargic/anxious/depressed parts of me in kindness. Not trying to change anything about them.

From that starting place of self-kindness I can take a breath, dust myself off, and begin taking one simple, tiny action not to make anything happen but only to make space for the new and invite it in.

I ask myself often: Which old junk am I ready to let go of to make space for the new? I don't need to know what the new is, just trust life and start throwing away the shitty t-shirts.

hellofunk 13 hours ago 3 replies      
I think sustained cardiovascular activity is the best thing. Not weight lifting, but running, swimming, or fast walking, biking, any of those things. Seriously, it works. Also, getting the blood moving in that way tends to inspire many great ideas; many influential people throughout history associated active body movement with good ideas.
scrollaway 13 hours ago 3 replies      
It's ok to be lethargic sometimes. If it's very regular it could be a symptom of something else (maybe psychological; depression, general lack of motivation), so maybe you can talk to a therapist about it.

Go for a run? If you don't have the energy to run, go for a walk. If you're not going to do anything during the day, might as well enjoy the sun and visit new places.

cdvonstinkpot 13 hours ago 0 replies      
I just accept & go with it, understanding that it won't last. I wait for motivation to come & eventually it does- then I take care of my to-do list.

Living with depression, which causes much of these types of feelings, I've learned not to force anything- as it usually doesn't work. So I just wait for the cycle to move on & am grateful to have energy when I do.

ylg 12 hours ago 0 replies      
1. Food, as already said, but so very important it bears repeating. I've found there's nothing like a lack of available chemical energy (or water to facilitate the reactions) to drag down my kinetic expenditure. Just being aware of this is helpful, e.g., "I don't feel like doing anything Wait, I haven't eaten right today OK, time to fight through that now that I know the cause isn't some cosmic force outside my control!"

2. I've found I've a strong connection to musical context, i.e., when my ass is dragging, playing tunes I have listened to while doing things I find fun (in my case, careening down mountains on bikes with earbuds in) can give me a good jolt out of a lethargic moment.

3. Redirect the slack. Few time-wasters out there compare with surfing the web. So, if I'm falling down that rabbit-hole, I surf to find things I find motivating and energizing, e.g., reading about the training regimes of athletes I admire, or find youtube clips of them demonstrating significant badassery, or finding training clips I can follow (I've been enjoying Ryan Leech's 30 Day Wheelie Challenge lately.)

4. Take a nap. In the sun if possible.

5. Listen to Car Talk (while eating some proper food, but be careful with liquids that can come back through the nose.)

6. Smile. If you can't do #5, just plaster a big, fake grin on your face. I find it rare my brain doesn't say "hey, we're smiling here, crap we must be happy and energized and I just missed the memo, time to get on that!"

ggordan 13 hours ago 1 reply      
I often find that just getting out of the house (going through that process of showering, getting dress etc..) helps a lot. If 'walk around' implies just walking around your house, I'd suggest trying that.
ogreveins 12 hours ago 0 replies      
You may want to try sunshine or bright lights.http://lesswrong.com/user/chaosmage/overview/

Other than that I can only think that you're not properly motivated. I don't know much about clinical depression so this may be obtuse but let's assume you were being tortured; burned, whipped, fingernail removal, whatever. Would you do everything in your power to get out of that situation? Well right now you're comfortable. There are no pressing matters and you have pretty much whatever you need from day to day. That emotional inertia that was there when you began working on your startup isn't there. There are also no new stimuli to spur you back into motion. So the only thing you can do is rest until your comfort level with your progress drops enough for you to get back into gear. I don't know, there's a very good chance I'm projecting from my own past experiences.

The only solution I've found which works for me every day is to get angry. Angry about what other people have done that I haven't done. Angry about what other people have that I don't have. Angry about not using my talents to the fullest - not seeing what I'm capable of doing. Angry about being told no, I can't. My progress is fueled by rage and my heart will probably pop by age 50 but I will get my work done. I will never allow myself to be comfortable.

Good luck, whatever you do.

lepunk 11 hours ago 0 replies      
For years I was only living for work. No girlfriend, no hobbies, virtually no sleep, nothing. Gradually I became burnt out, depressed and pretty fat for that matter. My productivity and the quality of my output declined as well

After a while I realized that this is not sustainable and I have to do something. I started to focus on weight loss since the results are easily measurable and I felt if I succeed that will give me positive encouragement to improve other parts of my life. Started off with simple changes. Started walking home from work (about 6km) instead of taking the bus every day. During my walks I listened to my favorite tracks or just walked in silence and thought about stuff that I wouldn't normally spend time thinking about. The change in my day to day mood was measurable even after the first week.

After a while I started doing yoga at home following YouTube videos and started meditating regularly. Yoga, besides having positive health effects (flexibility, weight loss) teaches you about being aware of your body and it's needs. I noticed that after a couple of weeks I started eating way healthier and drinking way more water (these days I do at least 3 liters / day) and way less alcohol.

In six months I lost over 26 kilos, which is obviously really nice but what is even better that I feel happier in general and more confident in myself. My life is not revolving around my work anymore. This new found self awareness also had positive effect on my professional life. I'm thinking more clearly, my code quality is better and I solve problems faster than ever.

super_mario 13 hours ago 0 replies      
Vigorous aerobic exercise does wonders for your mood and it doesn't have to be that long. Half an hour will do the trick. Make sure you raise your HR to above 80% of your HRmax. This does wonders for your brain, it makes it produce BDNF, which helps you learn and retain memories better too, and improves your mood.

I know it can be really hard to make yourself do it, esp. when you feel down, but after you are done, you will be asking yourself what were you objecting to in the first place.

If you want to learn more about the link between exercise and brain health read "Brain Rules" by Dr. John Medina or watch his Google talk by the same name:


He also has "Baby Brain Rules" on parenting techniques to help your new baby get a good start (some of the stuff you need to do way before you even get pregnant/decide to have a child).

rrss1122 12 hours ago 0 replies      
Have a little coffee for a quick pick-me-up. I just drink little by little till I don't need to any more. I try to keep the coffee to an absolute minimum, and save it till I'm really feeling lethargic.
Thriptic 12 hours ago 0 replies      
Are these feelings correlated with anything? Do you feel this way after a particularly tough time at work? Do you feel underlying anxiety about your startup?

I generally ascribe to the "show up and do something" philosophy on days like the one you're describing. I tell myself that I can have the rest of the day off guilt free if I just do one task that I've been meaning to get done. For me the biggest challenge to working is starting, so generally once I start working on that one task, I find new energy and will continue working once I finish it.

azernik 12 hours ago 0 replies      
Take a break! Sleep, go out to a park and lie down in the sun, whatever makes you feel like you're not struggling to motivate yourself. Don't do leisure activities like computer games if they make you feel bored and unfulfilled - that'll just make you lethargic and depressed, in my experience.

If this is a regular problem for you, the time to address it is when you're feeling "up" - get exercise, get enough sleep (even if that involves midday naps, and I'm sure many other things that people can suggest).

DanBC 13 hours ago 1 reply      
Rule out thyroid problems (simple bloodtest) amd sleep problems.

Then focus on diet and exercise.

shreyas056 12 hours ago 0 replies      
I suggest you get tested for psychiatric diseases like Bipolar or depression. I used to have similar mood swings and a year ago I went into major depression. I consulted a psychiatrist and got diagnosed with Bipolar disorder and depression. The mood swings were due to Bipolar. Now after one year of treatment and still going, I am having less mood swings. Depression has pretty much gone away too. But general lack of motivation still persists.
halotrope 13 hours ago 0 replies      
I have similar dynamics where phases total lethargy are often followed by episodes of surprising energy. I can second that exercise and the lack thereof can seriously affect your mental wellbeing. Watching sleep hygiene, excise and diet are important. Also check if you might be suffering from depression. Apart from that I have to say that I personally like this alternation and resting. If it does not feel awful for you maybe just accept this as your nature :
wozmirek 12 hours ago 0 replies      
Put on your fav music and dance when nobody sees you. I do it really often. I hate running, though I really enjoy cycling and dancing - managed to dance for like 6 hours to happy hardcore at a rave once, while I detest the 10-min running warmup before a lifting session (love lifting!). And yeah, go outside every single day if you're WFH.
louithethrid 12 hours ago 0 replies      
Go for a walk. When not enough energy for that, draw something, create something, that takes no huge mental effort, just a wandering mind.

Usually when i get lethargic it means something is wrong with my enviroment, nothing new, everything run of the mill and other people have allready down it. In that case- try to automatize it or find out how one could do that .

maxlamb81 12 hours ago 0 replies      
Sometimes it can mean you are dehydrated or suffer from sleep Apnea. I would try drinking a quart of cold water, take a cold shower, eat a meal with complex carbs, veggies and lean protein. Get at least 8 hours of sleep.
stephengillie 13 hours ago 0 replies      
Just do the first step. Just one step at a time. Get the notebook open. Open the program. Stare at it for a while. Think and meditate. Remember why you like to do this. Get yourself caught up into it.
abramN 9 hours ago 0 replies      
coconut oil and a b vitamin - works wonders for energy. But sometimes your brain needs a break - give it one. There are times when I don't want to do a darn thing, and I have to fight the feelings of guilt that come with that. But, why feel guilty? Are we meant to be productive 24/7?
marcosdumay 12 hours ago 0 replies      
Aren't you just tired?

If you are, stopping feeling guilty because the time is not productive will help a lot.

asantash 13 hours ago 0 replies      
often, it's discipline over motivation. having a routine helps to actually get you up and doing activities during the day. then the small accomplishments accumulate to motivation returning. break things into small tasks, and socialize.
justin_d 13 hours ago 0 replies      
contingencies 13 hours ago 0 replies      
Sometimes it's natural to take a break, don't beat yourself up about it! Try to stay positive instead of stressing yourself about output. If you can't manage your psychology around it, try searching for 'psychology of rest' or 'creativity and rest' or something else likely to turn up positive results about random breaks, then convince yourself you're taking the most pragmatic approach!
98Windows 13 hours ago 0 replies      
Try noFap and meditation.
jalayir 12 hours ago 0 replies      
fit2rule 13 hours ago 0 replies      
I put some music on. This always snaps me out of it. Of course, it depends what sort of music. Loud, obnoxious, and appealing. Something I haven't heard in a while.
Bostonian 13 hours ago 0 replies      
Can you do necessary things that don't need inspiration, such as respond to email, pay bills, or clean your office?
Ask HN: Does anyone have space in NYC and want to create the next big thing?
6 points by weshouldtalk  8 hours ago   3 comments top 3
icpmacdo 7 hours ago 0 replies      
Sketchiest ask HN I have ever seen. Might want to provide some more information weshouldtalk.
redsable 5 hours ago 0 replies      
If you have the technical skills and connections to do most anything I am curious why you would need open space in NYC.
closavia 7 hours ago 0 replies      
What kind of things do you have in mind? I sent you an email.
Strike for physics funding
5 points by daxfohl  8 hours ago   2 comments top 2
lonefermion 2 hours ago 0 replies      
Physics major here building login validation as you do. I have to say I miss Phys but there is no way for me to going back. Once your living standard is high. You can't afford to lose it for a phD student allowance. My dream now is just to make a lot of money in this tech bubble and educate my kids to be incredible scientists without worrying about money. As for me, I will just try to forget about it.

Don't say there is nothing to be discovered in physics, please you are just making yourself less academic intelligent as you might have sound.

T-A 7 hours ago 0 replies      
This strikes me as rather uninformed. Physics is far from a completely undiscovered realm. The standard model of particle physics (completed by the mid-70s) + general relativity (ca 1915) fits every experiment ever performed. Unexplained astronomical observations can be accommodated by additions which, while phenomenologically important, add nothing conceptually new. The remaining Holy Grail, quantum gravity, suffers no lack of proposed solutions; what it really does suffer from is a lack of ways to test any of them.

The sad reality of "fundamental" physics is, and has been for decades, that there is really very little that is both doable and worth doing. If somebody were to dump a Genius grant on me today, with the only condition being "work on whatever you want in physics for the next 5 years"... I would feel compelled to give it back. Because I really don't see anything sufficiently promising or interesting in physics that I would be willing to dedicate the next 5 years to it. (All those people you see screaming for more physics funding? What they are really screaming for is their "right" to keep comfortable upper middle class lifestyles, funded by the tax payers, in exchange for nothing of any value.)

Now compare that to what is going on in software. If "new login scripts" is the most interesting thing you can think of, you really need to broaden your horizons. Just look at the last few years of very rapid progress in deep learning. There is nothing comparable going on in physics. Things like thought vectors are giving me vertigo - my old skepticism about the feasibility of general AI has been seriously dented lately. Problems which once looked completely intractable suddenly look easy, and you start wondering how many more surprises are just around the corner, and how many - or rather few - years it might really take to get there.

And the potential? Suppose you managed to write down the ultimate, complete, fully quantized, elegantly unified, simple, concise, true Theory of Everything. There it is, an exquisite formula on a sheet of paper. It summarizes everything we know about physics. Everything around us follows from it. Wonderful. But... what do you do with it? Sure, stare at it, marvel at its ingenuity and the centuries of concerted effort needed to get there... but then what? How long can you stare at a sheet of paper and marvel at the history and elegance of an equation before it gets a little... old?

Now compare what AI, even just the narrow kinds emerging right now, can do, and the potential of true general AI. Now that would - will - obviously change the world.

Implausible and overfunded CPAP machine on Indiegogo
61 points by alkimie2  15 hours ago   66 comments top 24
gooseyard 1 hour ago 0 replies      
I believe the Airing thing is expected to use these things:


I was also skeptical of the Airing claim, although after reading about the Murata piezo blower things, they're amazing, whether Airing is able to make a CPAP out of them or not.

Frankly, as an old, fat, CPAP using guy, I'd rather eat mouldy cheese than use a nasal pillow CPAP device. Plus, the Airing thing would have to be strapped to my face anyway; at my Rx pressure it'd blow out of my nose within an hour. The hose on my traditional BiPap turbine machine doesn't bother me at all.

I'd be delighted to have a smaller BiPap machine made out of these Murata things, if it meant a less bulky power supply and a smaller base unit.

amluto 11 hours ago 1 reply      
Let's try the math for real.

The site claims that the device can provide 20 cm HO (which is ~1961 Pa). Apparently some hypothetical normal man breathes at a rate of 6 liters (i.e. 0.006 cubic meters) per minute at rest [1]. If you pump a volume V of fluid across a pressure difference of P, you've done work VP, which is 11.76 Joules per minute or 0.1961 Watts. Keep in mind that this is the work done, not the power consumed, but let's be generous and assume a 100% efficient blower. We'll also assume that no power is harvested during exhalation.

In eight hours, that's 1.56 Watt hours.

Duracell's zinc-air chemistry claims up to 442 Watt hours / kg [2]. That's about 3.5 grams of zinc-air goo per night, ignoring packaging, blower loss, etc.

This seems entirely plausible to me.

[1] http://www.normalbreathing.com

[2] http://media.ww2.duracell.com/media/en-US/pdf/gtcl/Technical...

Edit: In the interest of precision, I should add that the analysis is accurate for an incompressible flow. Air is definitely compressible, so, if you pump air, more volume is going into the pump than is coming out, and you're heating up the air (adiabatically if your pump is any good). So, with a compressible fluid, you have to consider not on the work done moving the fluid across a pressure difference but also the energy you've stored in the fluid by pressurizing it. The pressure difference for CAP is tiny here, though, so this would be a miniscule correction to the math above.

amykhar 12 hours ago 1 reply      
I work in the sleep industry, and noted that the company making this device did not attend Sleep 2015 in Seattle. The fact that they were not present at the largest gathering of sleep professionals in the country this year made me really doubt their credibility.
jerf 13 hours ago 2 replies      
"People breath about 5 liters of air per minute at a low activity level. Thats 2400 liters in an-8 hour period. Air weighs about 1.2 gm/l = 2.88 KG moved in an an 8 hour period."

I'm not sure if this device is plausible, but I know this calculation is not useful. You're calculating the mass of air moved, which, first of all, does not itself say much about the energy required to do so; for instance, horizontal motion doesn't require any net energy (though any real device doing so will of course need to do something to accelerate and decelerate, there's nothing to say it can't be very, very cheap). Second you appear to be discussing it as if there isn't a pair of lungs right there providing motive power. I do that much moving of the air every day (plus a bit, probably, I'm a tall guy) with no batteries at all.

This thing is not responsible for "moving all that air"... it's responsible for a pressure increase of the air, which is at least somewhat equivalent to saying it's responsible for "moving air" but only a fraction of the value you computed. They say it is supposed to do from 1 to 20 "centimeters of water". According to the Great and Mighty Internet, 20 cmH20 is 0.02 atmospheres, just to give some perspective. I do not have the math to calculate the energy requirement that represents when the air is in motion itself; my physics would only be sufficient to calculate the energy implied in pressurizing a closed container from 1 to 1.02 atmospheres, which is useless in this case. Perhaps someone else can pop up for that.

(Bear in mind I took a full standard College physics-for-non-majors course set, using full calculus, and what I know from that is that what I know is inadequate... if that also describes your experience, your education is inadequate too. We're going to need to hear from someone with more specialized education.)

My suspicion is that yes, this device is plausible, but the final version is going to be larger than the versions shown. Whether it crosses over the invisible line where people become unwilling to wear it is anybody's guess, but... sleep apnea sucks and those masks do suck too, so there's some room for these guys to work in. I'd classify this as a "considered risk" rather than "two orders of magnitude impossible". I reserve the right to change this assessment as more data comes in, especially a (good!) physics analysis of the real energy required to do this.

twistedpair 12 hours ago 0 replies      
Is the Airing device FDA approved? No, not yet. However, we do believe the process of getting FDA clearance may be abbreviated.

Ha. I work at a company that makes medical devices. It's just so damn easy, you know! Seems like a pretty blunt case of handwaving away this critical step. This is an electric device that controls if you can breath. This thing has a non-trivial risk of hurting someone through electrocution (it's plugged into your conductive mucus) or asphyxiation (though hopefully you'll wake).

So yeah, they'll clearly just POST to the FDA certification API and get a response within a minute.

alvarop 12 hours ago 0 replies      
Everything seems to be worded just right in case they don't deliver. From the FAQ:"As a contributor to this Indiegogo crowdfunding campaign, you are supporting Airings intent to develop the world's first micro-CPAP device."

Also, all physical perks have the disclaimer: "Subject to FDA clearance and doctors prescription in the US and local regulation abroad."

From a financial perspective, I can't imagine getting the device certified in multiple countries is going to be cheap. Would they also be expected to check doctors prescriptions in various languages somehow before delivering?

smitec 13 hours ago 0 replies      
When you look at the math (as you have) it seems almost certain to be a scam. ResMed has a Technical note [0] on powering one of their devices form a battery, while product efficiencies can vary they are recommending ~30 Amp hour batteries for the 20 cmH20 this device is claiming to provide. It amazes me that indigogo doesn't do something to stop this sort of thing when it gets to be such a well funded project (I'm sure other platforms are guilty of it too).

[0] http://www.rpc.com.au/pdf/battery-powering-products-usa.pdf

ChuckMcM 12 hours ago 0 replies      

 > what should we do as engineers?
Well you can warn people off, but you can't make people disbelieve what they want to believe. In similar situations I've suggested that folks wait until they can be ordered and the crowd funded units have shipped. Then they will have a good idea of what they are getting. If the crowd funding fails or they are poor quality, they will have saved themselves aggravation and money, if it works then they will be available as a product.

Smushman 7 hours ago 0 replies      
Background on Airing, LLC, located in Burlington, MA.

I looked up Stephen A. Marsh (see http://www.fundairing.com/ under 'inventor').

Interesting guy - a strange history. He also is CEO of Encite LLC (also located in Burlington, MA). He does have many patents in fuel cells, etc.

Previous to Encite LLC he was CEO of a now-defunct technology startup Integrated Fuel Cell Technologies, Inc. (IFCTI)

Encite LLC was formed from IFCTI, through some obtuse legal machinations.


I am no expert in law, but it sounds like he basically ran IFCTI into the ground as CEO, then bought it and its resources back at a large discount via Encite LLC. The previous board members tried to sue him but lost due to some ambiguities in the laws.

Maybe someone else has more?

BTW having used a CPAP I know it is not possible to generate the volume and pressure (particularly the pressure) needed by something this size without a quantum leap in current technology.

I can't devise a method to prove and explain my conclusion. Perhaps someone more versed in the area can.

anonu 12 hours ago 1 reply      
If anything, this underscores the importance of this field. Sleep is an under-studied phenomenon. Sleep apnea is even more so... Consider the current field of options, none of which may be any better than the one proposed on Indiegogo. All you need to do is flip on some infomercials or flip through a SkyMall magazine to see that there are dozen of gizmos and gadgets that don't work: chin straps, sprays, OTC mandibular advancement, etc.. etc.. The surgical options are not pleasant either. Look up "UPPP".

One promising technology is a small pace-maker-like device that is implanted in the chest and stimulates the hypoglossal nerve while you sleep: http://www.medscape.com/viewarticle/834474

chrisBob 14 hours ago 4 replies      
It looks like the found a good gullible market with lots of money, and it will be years before anyone complains. They have an earliest delivery date of 2017 depending on how things go with the FDA.

When I see something like that my first question is if the doctors involved are real or not.

Mz 10 hours ago 0 replies      
I don't think there is an ethical obligation to do anything. I hope people contributing can afford to lose whatever funds they are pledging. They will have to seek FDA approval. If they don't get it, no one is going to be buying some overhyped piece of plastic that doesn't actually work.

One of the challenges we have currently is that the medical field is over regulated and there are excessive barriers to entry. Perhaps you can make your peace with the fact that it isn't your money and if people want to hope against hope for something better and pledge a few dollars, that is their choice. Then the developers might get their shot at developing something new. Maybe it won't meet every criteria they listed. Maybe it somehow will. Maybe it will be a complete flop. (Shrug)

Innovation only happens when there is some leeway for some of it to fail. $100k is a drop in the bucket for medical research. Why do you feel such a strong need to not even let them try? I suggest you let it go.

zamalek 13 hours ago 1 reply      
I'm no engineer and my knowledge of CPAP extends to the amount of Googling I did since I saw this post.

Their constraints do seem very tight but I can conceive at least one way in that you could shrink the device down. There would be multiple actions in such a device:

1. During the inhale increase pressure. As noted by the image[1] this is achieved in the device with "blowers."

2. During the exhale present a restriction to airflow, but don't cut it off entirely. You could use something similar to an aperture to restrict airflow here.

3. Between the exhale and inhale maintain pressure. If you use an aperture-like-device you can simply close the aperture completely.

This means that the device becomes partially passive, reducing power requirements. I'm no expert but let's assume that you are only inhaling 50% of the time - this cuts down the amount of time the "blowers" need to run by 50% (or can double their power consumption or something in-between). My uneducated opinion is therefore: remotely plausible.


OopsCriticality 11 hours ago 1 reply      
> The question Im asking here is what should we do as engineers? Ethically, I mean. I really hate to see people taken in by such an obvious scam.

Skepticism is certainly warranted based solely on the timeline presented and my experience in medical devices.

As to the rest, you're operating on incomplete information. According to the NSPE, "Engineers may express publicly technical opinions that are founded upon knowledge of the facts and competence in the subject matter." You say, "what should we do as engineers", so I'll make the implicit assumption that you're an unlicensed "software engineer" like many on HN. If so, consider that you may be operating outside your area of expertise without complete knowledge of the device. I would make careful public statements: I, for example, wouldn't say "I performed a first-principles analysis and, as an engineer, I find the device claims are impossible."

userbinator 13 hours ago 1 reply      
The question Im asking here is what should we do as engineers?

Talk about it and spread the word to others that this is impossible to do.

There's also some interesting discussion here, mostly to the tune of "it won't work":


brock_r 13 hours ago 2 replies      
You are forgetting that it is your lungs that must move the 2.88KG in an 8 hour period.

The machine just has to maintain a positive pressure during certain portions of the breathing cycle.

What I see here is a possibly overly-ambitious design, but no obvious scam.

BTW, here is a video of Airing's Chairman: https://vimeo.com/130685879

skilesare 12 hours ago 1 reply      
There is breathing going on here so is there any chance that the breathing out could help recharge the battery in a similar way that a hybrid car charges your battery when you brake?

I also don't think it is 'disposable'. I think it is recyclable and from what I've seen the $3 is dependent on recycling them.

Rooster61 13 hours ago 0 replies      
I'm fairly skeptical myself, but if they do put their money where their mouth is, this will be a fantastic product. I use a cpap, and I can tell you flying international lugging a machine around is a regular pain in the ass.

That said, my dollars are staying snugly in my pocket for this campaign. It's pretty farfetched, and I don't like the metric they used to illustrate the actual pushing power. It doesn't add up.

feld 13 hours ago 1 reply      
Maybe the doctors are being scammed as well? Gilmartin specializes in sleep medicine


nugga 11 hours ago 0 replies      
You really don't need to read the page further after seeing 'flexible funding' with a target of 100k. Sadly indiegogo is a scamsta's paradise for allowing flexible funding for non-charity drives.
mcphage 13 hours ago 2 replies      
The fact that their anticipated price is $3/day is absurd. I can't see insurance companies rushing to cover this.
moron4hire 13 hours ago 2 replies      
I don't know enough about this particular hardware to know. I know when I was tested for sleep apnea, the CPAP machine they suggested for me was set on a very low flow rate. A number of factors contribute to the airway obstruction in sleep apnea. One is muscle tone in the airway: too flimsy of muscle will collapse more easily. One is body fat: too much and it squeezes everything closer. One is airflow itself: if the airway is constricted just enough to create a thin slit, the airflow through it will reduce the air pressure and close it the rest of the way. Snoring is thus essentially the same phenomenon as how reed instruments produce sound. So, the idea with a CPAP machine is not to force air into your longs, it's to create enough positive pressure inside the airway to open it again and let your own lungs do the bulk of the work thereafter.

But they are extremely intrusive to sleep, especially if you have a partner. A better CPAP machine is needed. But I won't give them pre-order money, more because I've seen way too many bad crowd-sourcing projects than out of specific concerns towards this project.

For $3 I'll buy it on a whim and try it out. I'd try a larger one that was significantly smaller than a standard CPAP for $20, maybe even $50.

But whether or not the project is legit is kind of beside the point to me right now. Having done a lot of prototyping of my own, in both software and hardware, it bothers me to see people jump directly to crowdfunding before they've even built a hot-glue-and-wires version of a prototype. Prove the concept. It's not that freaking hard.

All they say they've done is built the shell of the noseplug. They haven't any idea how to get the electronics on the inside. Their FAQ page makes it sound like their understanding of cutting edge electronics comes from Popular Mechanics, or Boing Boing.

People act like hardware is so extra-special hard. It's not. It's no more or less difficult than hacking on software in your free time. The actual, core functionality of your project, whether it's hardware or software, should be possible to validate in less than a month. The rest of what it takes to turn any project into a real product will far eclipse the proof-of-concept work in the level of effort necessary. There's no such thing as "if you build it, they will come".

Okay, no, Elon Musk's Hyperloop can't be validated in a month. A brand-new, hyper-secure, microkernel operating system written in Rust wouldn't be, either. I'm not saying all ideas are possible in a month, I'm just saying the stuff people typically do in the given spaces as garage inventors are on the short-scale for validation.

It just takes up a little to a lot more space. But if you're dedicated, most people can find the space. I'm sure a few adults like supposedly involved in this project can rent out a small warehouse on their pocket cash together. I don't even work full-time, I live in one of the worst areas of the country for real estate prices right now, and even I could scrap together the money for a small warehouse, if I had to.

It's going to be hard if you don't have any experience in hardware. Yeah, but even making a simple CRUD app is going to be hard if you don't have any experience in software. We live in a golden age of hardware development. Nearly everyone and their neighbor in the US has a garage full of tools that could bootstrap a small industrial renaissance in a 3rd world country.

Or you don't even have to buy anything, design a flat-pack vector layout in Inkscape, email it to any of the thousands of laser-cutting services in the country, tell them you're fine buying scrap material, wait a couple of days, and you can make anything the size of a breadbox for about $50.

Need more complexity? Make a 3D model in blender, send it off to any of the dozens of (and growing) 3D printing services, wait a couple of days, and you can make anything the size of an old Walkman for about $50. Seriously, don't buy your own 3D printer unless you want to get into the business of maintaining 3D printers. Outsource that malarky.

But come on, if you don't believe in your project enough to put your own time and money into it, how do you expect us to believe in it? (though, I know that isn't really stopping anyone).

awinter-py 11 hours ago 0 replies      
You guys are awesome for doing this, but are enabling a dangerous kind of startup:1. post bullshit to indiegogo2. hackernews designs it for you3. profit
rebootthesystem 11 hours ago 0 replies      
Buy the right to post comments by pledging the smallest amount possible? Contact indigogo with the concern? Write a blog post and get help having it widely linked? Alert the authorities?

On the other hand, it might br hard to convince a lot of people that this isn't real. After all, most of humanity believes some version of supernatural nonsense which includes such things as people flying, resurrecting, partin seas, singing bushes, talking snakes, 6,000 year old earth, rapture, being chosen, paradise, etc. in other words, there's plenty of empirical evidence to show science and reason don't stand a chance. Yet.

Ask HN: Great blogs and sites for a hardware developer to follow?
2 points by craig  8 hours ago   discuss
Ask HN: I'm going to have to lay people off, and want your advice
139 points by sadthrowaway  2 days ago   135 comments top 46
steven2012 2 days ago 10 replies      
I've been through the dotcom bust, where my company went through 6 layoffs in a single year. We went from 1400 to about 600. I survived them, but it was a terrible experience, and after a while, people stopped working and just gossiped about the next layoff.

First off, if you're going to do layoffs, make sure it's one and done. This means, probably cutting more than you have to so that you don't have to keep making layoffs in 6 months, etc. The quicker you can get back to hiring, the better it will be for morale.

Layoff your lowest performers first. If you don't, then your top performers will leave you, and you will get crippled within less than a year. Don't do something like ask everyone to take a paycut, because it means that your top performers suffer just as much as your low performers. You should get rid of your low performers quickly.

Try to give as generous a severance package that you can. And meet with each of them face-to-face if possible, but with several dozen it's probably impossible.

Make it quick and let them leave with dignity. That means let them say bye to their friends, and making sure that every single question they may have answered. COBRA, unvested options, Unemployment benefits, etc. Personally I wouldn't escort them out or lock their accounts unless you think that they are going to cause problems. Hopefully they won't.

Do all the layoffs before lunch. Have a meeting with the rest of the company after the layoffs, after lunch and explain why you had to do it, and explain your plan to ensure that it doesn't happen again.

Never tell the employees how YOU feel. No one cares.

mindvirus 2 days ago 1 reply      
One thing that I would add as a worker is to be cognizant of people on work visas. In America, H1Bs have very oppressive terms for being out of work, in that one is technically immediately out of status if laid off. This means that they would have to quickly find a new job willing to transfer their visa (within a couple of weeks) or take their family and leave the country. I don't know what your options are to help lessen the blow here (is it possible to keep someone on payroll for a couple months in lieu of severance?), but keep it in mind.
sskates 2 days ago 1 reply      
I've found what Ben Horowitz has written about management to be incredibly helpful. I am lucky to never have had to lay people off, however, if I did, I'd go to this first: http://www.bhorowitz.com/the_right_way_to_lay_people_off
JacobAldridge 2 days ago 0 replies      
I've had to let people go directly, and helped others through this process. It sucks, and it's an immensely valuable lesson as an entrepreneur - when you've done this once, you will work harder to prevent it ever happening again, while at the same time being prepared to do it faster in situations where that is warranted.

A common mistake when winding back a company is only pulling it back to break-even. Eg, 'Our revenue forecasts show we can cover 50 salaries, so let's cut back to 50 people.' There are two problems with this - first, if your forecasts are too optimistic, you will be forced to do another round of cuts and the team / clients will start fearing a death spiral. Second, cutting a business back to break even leaves you with no spare cash flow to invest in future growth - you risk stagnating. Better to add an extra 10% to the layoffs now than risk the remainder of the business.

From there, the decision about who to let go is sometimes obvious (you might be dropping a product line, have an underperforming team, or some stand-out low performers). Do what you can to re-deploy your top performers elsewhere within the company - you'll want them, and their advocacy, moving forward. Where it's not obvious, and you can't get guidance from team leaders etc, accept that it's going to be partly a crapshoot where nobody wins.

How you communicate the decision and the reason why is critical. steven2012 has covered this well elsewhere in the thread. Be honest, take responsibility, and be positive for the future you plan to create. Good luck.

antjanus 2 days ago 1 reply      
My first week at a new job, half the company got let go. And a few months later, it got slashed even further. I don't have the specific numbers but at the end of the year, we went from over 200 to about 80ish. (I hope I got the numbers right)

Anyways... Half the company met in one place (and they got let go) and half the company stayed.

Do a single cut. The second cut prompted people to lose faith in the company. It didn't matter what the CEO said, most people simply believed that "this was it". Many started to look for other jobs. I believe the first one we called the "bloody Tuesday" and the second one was a "bloody Friday". It became a permanent joke/non-joke that whenever a big meeting was called, people were going to be let go. Or whenever someone talked about "strategy", it meant cutting departments. Not a good thing AT ALL.

Don't be a dick about it. From what I know, the people that got let go got a good severance and references. Both good things.

Make sure the morale stays up. Many of us had issues dealing with it. Productivity dropped, faith in the company, etc. Actually, the worst part was watching higher up people stay and not be affected, and slack off on top of it.

Nothing worse than seeing someone who makes 6 figures play Mario Kart in the break room for the whole day a few weeks after all this happened.

What DID help was that us lower folk started playing video games over lunch. It fostered new friendships, and helped us get productive again. But that got cut as well after people complained (to this day, I don't get it).

blazespin 2 days ago 2 replies      
Severance severance severance. Everything else is just words. If you can't afford it, than give everyone vesting / option rights for ten years.

If you can't do that, honestly, it's all just empty words and bullsht in my opinion. Someone screwed a lot of people by over hiring and mismanagement. Hope whoever was responsible for that is first to go.

mathattack 1 day ago 0 replies      
I've been on both sides of this within the past year. (Have been let go, and had to let go 40% of a company) Ben Horowitz writes about this, and it's required reading. [0]

Some thoughts:

1 - When you have the announcement, be clear about the reasons for it. ("The market moved", "We didn't hit our revenue plan." or "Mgmt f*cked up.")

2 - Highlight the severity of the situation. ("If we don't do this, we have 3 months of runway left, which isn't enough time. If we do this, we have 9 months to get our act in gear.")

3 - Given the constraints of #2, be as generous as possible with severance.

4 - Never ever badmouth anyone who was let go as a result of this.

5 - Be a proactive reference for those let go. Don't just wait for calls - make placement calls for your people.

(Note - 3 through 5 is in part to be humane to those leaving, and in part to rally those left behind.)

6 - If at all possible, only cut once. Cut deeper if you need to just to avoid doing it twice.

7 - Be firm in the meetings. "This isn't about performance, it's about saving the company." It's not a negotiation. Have at least 1 witness in the meeting, ideally an HR person.

Note - all of these things still won't make it any better, just less worse. It's a tough thing to cut off your foot to save your leg. That's what you're doing.

[0] http://www.bhorowitz.com/the_right_way_to_lay_people_off

kls 2 days ago 3 replies      
Don't do it on a Friday, mid week is best. Friday is the worst, that being said get it over ASAP and give them as much warning as possible to give them time to land on their feet. I agree with Steven cut more than you have to, a second round of layoffs means you loose everybody you would want to keep. I have never seen a company survive if it has went to that well twice.

Chances are they already know it is coming, if work is slow and not coming in or the burn rate is high and you have run long on funds then they will be expecting it. Have a very clear plan to explain to those that stay, as to why the ship is righted now and how you plan to survive. Plan to loose at least a few of your best guys, if you loose one, use his/her salary to give the others a raise or you will lose them too.

Also cut the pessimist over the pragmatist or the optimist. In a layoff environment the pessimist will kill your company moral. If you got a guy that is say 15% better than another guy but he is a pessimist and the other guy is an optimist, keep the optimist. That being said, trim dead weight if they are just not skilled let them go not matter their outlook. As others have said, look to trim, trim more than you need.

MalcolmDiggs 2 days ago 2 replies      
As a founder who has laid people off in the past, I think the kindest thing you can do (for everyone involved) is give them as much notice as you possibly can. No matter what pay-rate the employees are at, assume they're living paycheck to paycheck, and that a sudden loss of their income will be much worse than a loss 2-3 months from now.

My second suggestion is to go out of your way to be the best reference these people have ever had. Write letters of rec, tell them to list you personally as a reference (with your cell #), etc. And if you can, use your network to help them find new opportunities.

For those who remain, just try to be as honest as you can. If their jobs are possibly insecure, let them know as well.

Best of luck, I know this is hard.

declan 1 day ago 1 reply      
I've worked at companies during layoffs, and have been a manager at these companies as well (though fortunately never had to lay someone off personally). My advice:

- Managers should tell their direct reports personally, rather than delegating to someone else like HR. I still remember, unfondly, when one manager didn't want the burden of delivering the bad news and found someone else to do it.

- Give the people who will be laid off as much time as possible to send work emails, talk to colleagues, get taken to lunch, etc. As <steven2012> said, let them leave with dignity. Your employment agreement already prohibits misuse of corporate resources and criminal law prohibits theft of company property; as a general rule there's no need to have a security guard hovering over a desk.

- Write a letter of recommendation if your corporate policy allows and your employee's performance merits it. Give it to them in printed form and PDF. Don't merely offer to do it if they ask.

- As many others have said, do only one round of layoffs. Company morale can survive a single round. It may not survive repeated rounds, with nobody knowing when (and where) the next axe is going to fall.

- Communicate honestly with your remaining employees to the extent policy allows. The best managers will admit it if they don't know something.

physcab 2 days ago 1 reply      
I was laid off once, and although it was a horrible experience, I do not think I would feel as bad if it happened again. The reason is that the first time you get laid off, you think to yourself you are absolutely fucked and there is no way out of the tunnel, especially with bills looming. But in hindsight, it was never as bad as it seemed. I was able to hook up with a recruiter and I was back in another job within 20-30 days. So here I am telling you I survived and everything turned out ok!

Having said that, if I were about to get laid off there are some things that would ease the transition and make it more bearable. First worry is income. If you could guarantee a months severance, that would go a long way. Second is health insurance. If you could have all those resources prefigured out by the time I left, I'd be much happier. Third is promise of future income. If you could have recruiters on standby so that if I could make the choice to begin the job search, it would be great. Lastly, this is sorta extra credit, but experiencing job loss is quite tramatic. You can make counselors / work therapists available to be there in the time of need.

Basically what I'm trying to say, if you are going to let people go, make the only thing they have to worry about is getting over the shock of getting let go. That is unavoidable. But if they know they are being taken care of and empathized with, they'll get over it quickly.

kethinov 1 day ago 1 reply      
A lot of people who get laid off want to know why them and not a peer. Was their peer a better performer at the same pay grade? Or was their peer doing the same job for less money? Is the company looking to eliminate senior roles? Junior roles? Or was the selection completely random?

Some transparency into why the decision was made can be make it easier to move on. Generic reassurances that "it's not performance related" are not always helpful, particularly because that's so often bullshit.

It certainly was performance related to the extent that if the person being laid off was doing twice as much good work for half as much money then it's unlikely they'd have been let go. It's a hard thing to talk about, I know, but that's what people want to know when they ask why.

That way the person let go knows whether and how to adjust their performance going forward at their next job so they're more likely to survive that company's inevitable layoffs.

throwaway781110 1 day ago 0 replies      
Here's how not to do it...

Experience 1:

- Start deactivating their accounts a week before giving the news.

- Give 3 days severance pay and act like it's not just them not wanting to figure out how to cut 3 days out of a paycheck.

- Have the manager escort the employee to HR without a word, and then leave and let HR deal with the hard part.

Experience 2:

- Tell the employee over email while they're on vacation, and then never bother to have any follow-up in any form.

EnderMB 1 day ago 0 replies      
I've been made redundant once before, but luckily landed on my feet right away as my contract (and the companies clients) were taken over by another company.

The best advice I can give as someone on the other side is to:

1. Do it quickly. Tell them right away that they have been made redundant, and that it is non-negotiable. Let them know that it is not of any fault of their own, and that they will be allowed to interview whenever they please. Being made redundant sucks, not just because you're out of a job, but because you often feel that if you were better at your job the company wouldn't have had to make cutbacks.

2. If you make someone redundant during work hours, make sure they leave the office at the end of the day. I've worked in companies where employees were made redundant at around 2-3pm and then asked to return to their desk to carry on work. This was a huge problem for everyone in the office, as that person was still working to a deadline, and was asked by the manager to (paraphrasing) "stop moping, and get on with your work".

3. If you know anyone looking to hire in roles you are making redundant, let that person know that you know someone who would be great at the role, and let that person know that you'll write them a glowing recommendation.

CCs 2 days ago 1 reply      
Here is more information than you would expect :)


I like Manager-Tools because it is step-by-step and actionable. Does not say "think out of the box" (how?), it gives you exact words that have worked for 1000s of companies.

BTW, performance based layoff list might be a legal issue in some case, for example when the reason is workforce reduction. Without a good lawyer don't go there...

abraham_s 1 day ago 0 replies      
Talking from the perspective of someone on H1-B. Please keep any employee on H1-B on your payroll, in lieu of a severance pay. This will help them to minimize the issues that crop up with the immigration when you are out of a job for a extended period.
HenryTheHorse 1 day ago 0 replies      
Did this only once to a dozen people and it was BRUTAL - both for them and for me. So let's not pretend it is simple or painless. Here's what worked for me:

* Put paperwork in place - termination, contracts, final settlement, dues etc etc - get those facts together in writing.

* Have a schedule for each affected employee's "exit" interview. No "send so-and-so in". That can be very stressful for the employee. Instead, set up a calendar invite and talk.

* If any employees are remote, have a video-conference so they can SEE your face.

* Go through the process as quickly as possible - ideally, all announcements within the same day.

* Have a "script" for the interview. This should include the announcement, the reason and the next steps (HR, benefits, payroll, equipment). Don't be needlessly cryptic/dishonest about the reasons behind the firings. Layoffs occur for ONE reason only: finance. So tell your employees the basic facts, but you are not obligated to share ALL the gory details. Simply saying "Our financials are the reason why we are doing this and I am sorry this will impact you and many others" is good enough.

* Be patient during the interviews. Don't rush it. Every laid-off employee thinks this has to do with them personally, when it's not. So take your time to explain, sympathize, offer help and guidance.

* Don't forget to reach out to the non-affected employees after the process. They too are running scared and deserve compassion.

I also personally reached out to all affected employees a few weeks after the layoffs to see how they were doing. Nearly ALL of them had jobs, which was awesome. This may or may not work in every scenario, so YMMV.

balls187 1 day ago 0 replies      
I've had to let people go, and have been a survivor through multiple rounds of layoffs, if you are VC Backed, first check if it's possible to land the better performers at another company that backed by the same investors.

The first start up I worked at, had a pretty tough rounds of layoffs. One of the engineers found a home at a startup that was backed by the same VC. Eventually as the first startup went under, he laid the ground work for some of us to transition over to his dev team.

davidglauber 1 day ago 0 replies      
First of all, get an upvote for taking the effort to try and make it better for those whom you lay off.

I've never been laid off from a real job, just from a temp one where the owner was a jerk. Few things I can think of:1) Try, with you best efforts, to help the folks you lay off to get other jobs. Recommend & refer them to those you see relevant. Make sure they get advice from their direct boss about what the should/better/could do next, and try to get your company waling their hand thro.

2) Clarify the situation quickly. People hate to get these news but rumors running around are much worse.

3) Some managers afraid try to detach their compassion to cut this awful mission fast. This is not the time to pull the authoritative boss too much. You're already sending them, try to show warmth.

4) Keep in touch with the best employees you have to let go. Try to hire some of the in the future if you can. If will be a great closure.

5) Can you send them away with something?A course to develop their skills towards the next job? a gift? few meetings with career coach for each laid off employee? (you can but that at bulk)

Best of luck!

vskarine 2 days ago 0 replies      
What if you tap into your connections and try to find them a job? Think of it as if the other company acquihires part of your company. Chances are you are probably firing teams and there are many reasons why any company would love to get working teams as a package. In this situation everyone wins. Of course it is harder to pull off than it sounds.
evanwolf 2 days ago 0 replies      
Within the HR profession, there's a discipline about performing layoffs that minimize litigation risk, unemployment insurance costs, reputation risk, etc. Firms like Lee Hecht Harrison walk employers through a complete menu of services that prep the layoff meeting, instructions for HR, IT, and security, and services for your layed-off people that get them into job search quickly. LHH claims, for example, that their service "gets employees back to work 50% faster". You'll trade off the benefits of a graceful exit vs. the cash you need to keep.

- http://www.lhh.com/career-transition/career-transition.aspx- http://www.risesmart.com/outplacement

SeoxyS 2 days ago 1 reply      
Related question: Are there any well-known & admirable companies that have gone through layoffs early in their lives?
utuxia 1 day ago 0 replies      
I went through mass layoffs during the dotcom bust.Most people were expecting it...that made it easier. I was still a little shocked but when you're ushered into a room with 74 other people and they start handing out packets...you're pretty sure what is about to happen.

We all went out for beers afterwards and discussed it.

I suggest you get the CEO to mention there will likely be cutbacks, that way its not out of left field.

Otherwise, just be honest. Bring them all into a room, be short and don't beat around the bush. The last thing people want is a bunch of bullshit. Watch "Up In The Air" -- its pretty sad how this effects people.

Give them the rest of the day to collect their things....a few days to clean up their laptops before turning them in.

What size company is this?

gnoway 2 days ago 1 reply      
I've personally been instructed to fire two people who reported to me, who had been coworkers before organizational changes and who were both nominally friends. There is no easy way to do it even if it's justified. The worst part is honestly what happens after - the person may have a hard time finding another job, and even if the separation is justified it's still kind of 'on you' for letting them go; a lot of people would assert that it's on you anyway for not making them better.

I've been through a 'silent layoff' at a startup, wherein most of the staff just stopped getting paid. We were funded by PE; the leadup to the separation was several weeks of accusations back and forth re: lying about available funds vs. mismanagement of granted funds. The company offered no severance and fought my unemployment claim. I was kind of relieved when it was over, but I would not recommend handling it this way unless you just don't care; it's been years but I still basically hate everyone involved.

I've since survived 3-4 rounds of layoffs where I'm working now. We've had it most of the ways you can have it: mass meeting, one on one w/ HR rep, nominated out-of-dept managers shepherding individuals out of the building, rent-a-cops in the office, etc. In all but one case, the departing employees were given a couple of paychecks severance + placement assistance and IIRC in at least one case remaining employees were offered grief counseling.

I don't think I could ever enjoy being laid off, but IMO the right way in a multi-person separation is to have one meeting with everyone, be honest about what's going on, and give them whatever you can to soften the blow. Unless there's a good chance your funding situation is about to improve, this means you should do it a little earlier than you think you need to so that last x days/weeks of salary can be severance instead; IMO people are not going to be significantly happier about being laid off if it happens 2 weeks later. If you've got contacts at other places and you can give references or help place, do that. You probably don't need police to escort people out, but you should get the departing employees out of the building w/ relevant credentials and badges revoked asap. Don't let people mill around, it exposes you and gives them more opportunity to vent in ways both of you will regret; I've seen where people were let go, then went and deleted things from file servers or otherwise destroyed property prior to leaving the building.

jen729w 2 days ago 1 reply      
Just be honest. Don't try and hide stuff, or sugar-coat things: tell people how it is, why it is, and even if it's horrible initially I believe they'll thank you for it in the long run.

Do it as soon as you can. If you know now, tell them now. Every day you don't tell them is a day they're potentially missing out on another job.

For yourself, try and keep some perspective. Things happen. Life moves on. People recover.

Source: I had to tell 22 people that the company we were running had just gone in to administration and today was the last day. We only found out ourselves the day before when our "accountant" (grrr... anger still remains towards that one) revealed herself to be less than competent. It was horrible, but me and my colleagues just sat them down and laid it out straight and said we'd do whatever we could to help, and that was that.

endymi0n 1 day ago 0 replies      
If you're the CEO, show presence. Our former CEO went home on the afternoon and let middle management do the talking. Don't be that guy. People will be angry at you and it will feel shitty. Do it anyway and absorb the blame. It's only one day.

Either be visibly available or take part in the layoffs.

In the layoffa, be fair, transparent and clear - but follow the protocol. Don't beat around the bush, your (and your managers') first sentence should be "We're very sorry, but we will let you go." Instilling hope or doubt where there is none is unfair, don't do it by accident.

Reiterated because it's so important: nobody cares about your feelings that day. You can't make it better. Don't make it worse and be a real grown-up.

artmageddon 2 days ago 1 reply      
I just went through a layoff, but was thankfully hired at another place within a few weeks, and I consider myself very fortunate, given that I was having performance issues. For me, here's what helped me get through it:

-Getting a month's severance pay. Personally I wish I had gotten more, but it greater than zero so I couldn't complain all that much(sorta, I wouldn't have been happy if it was just a few hundred or so).

-Getting a month's worth of health coverage. My internal doomsday clock started ticking for getting a new job, and having that health insurance gave me some comfort knowing I wasn't going to be completely screwed if I were to be slammed by a hauling truck the moment I left the parking lot.

-Being reassured it wasn't for performance reasons, especially since I had just gotten a poor review several months prior(the severance contract specifically stated this, and said I was eligible for re-hire). I wanted to leave, and I'd never reapply anyway, but it was nice to do so on good terms.

-Getting an offer for a reference during the transition. My sorta-boss said I could use him as a reference before I even asked, I didn't need it but I really appreciated it.

-Getting some time to talk with now-former-coworkers, rather than being whisked out of the building. I was annoyed that my PC access was immediately disabled and my keycard disabled(let me take my stuff to the car, I need multiple trips, wtf), but getting closure with people(along with emails) more than made up for it.

The one thing they did that pissed me off was that they did it on a Monday morning at 10AM after I had spent the whole weekend pulling overtime for them to finish up a major project deadline that was due 5PM that day. It felt like a huge slap in the face to put on your A-game for the day, only to be dropped after sacrificing personal time for the company. Despite all the rosy things I said, I'm still bitter about that.

It sucks to be in this position and I wish you, and those who'll be laid off, the best of luck.

ddp 1 day ago 0 replies      
Just do it in person. I've seen co-workers laid off via email, SMS, and voicemail, and that all sucks much worse than in person. If you absolutely must, a live phone call is acceptable, but only when there are serious impediments to meeting in person. My favorite story is of a person who was dispatched to a remote facility to lay off a group and on his way there, was himself laid off in a voicemail. Don't be that company.
danieltillett 2 days ago 0 replies      
Cut more than you have to so you only have to do it once. Don't worry if you cut more than you could have if things pick up, it is critical that it is one and done.

I would advise telling everyone remaining you are "over cutting" so they know that another cut is not coming in the next couple of months if things don't turn out the way you hoped. Other than don't be an asshole and provide as much support for those cut as possible and don't use weasel words like "right sized" or "let go".

keithpeter 1 day ago 0 replies      
What percentage (roughly) of employees does this affect? A 10% reduction is different to a 50% reduction.

Is the need for lay-off simply related to revenue or are you eliminating a whole category of work (e.g. outsourcing)?

Being told that 'we just don't do that work any more' is perhaps less disruptive to other parts of the organisation.

A cut for revenue reasons will obviously raise issues about the competence of management and so your high-fliers will be arranging to leave.

DrScump 1 day ago 0 replies      
this relevant item was posted today:https://42floors.com/blog/startups/after-the-layoffs
chrisbennet 1 day ago 0 replies      
The last time I was laid off, I had 2 months notice. I still drop by every once in a while to have lunch. I feel lucky I got to work with those guys.
reilly3000 1 day ago 0 replies      
I had to lay off a bunch of people. Same day: good. Taking it very personally as a failure: very bad. Companies over-hire, funding fails to come through, key clients leave. If you were good to them when they worked for you, you did your best. Now your company needs your best, most focused self. I instead wallowed for 6 months and the company has lost a bit of its stride. Don't do that.
EliRivers 1 day ago 0 replies      
You're going to want to keep your best employees. They're going to be thinking about leaving.

By virtue of being the best, these are the employees who would most easily be able to find work elsewhere, and they're the smartest employees who will not just shrug and carry on as before when they see their fellows being made redundant around them. They will think about what it means for the company (and thus their future). They will see what's happened and think about moving on. Maybe not right away, but they'll be thinking about it, and your best employees are (by definition) the ones who other companies most want.

You asked us to note where we speak from personal experience. I've seen it happen, and I've done it myself. I watched a round of redundancies come through, and I was told not to worry; I was essential and a good employee. I found another job with a company that was doing better. The company I left found that the people it most wanted to keep drifted away over the following year.

You need a plan to keep these employees.

Also, check the local laws for laying people off for whatever reason you're doing it. You'd hate to have someone come back with a legal claim in a year. I've seen that happen too.

chmaynard 1 day ago 0 replies      
Off topic, but the term "layoff" seems like a euphemism for "fired". I always thought that a true layoff meant the employer intended to re-hire the workers after the company's financial position improved. I wonder if labor law makes this distinction?
gesman 2 days ago 0 replies      
Kudos to you for asking this question.

Just make clear to people who are being laid off the reason.

Essentially people will feel a bit happier knowing that it wasn't them who screwed up.

andersthue 1 day ago 0 replies      
The best hand on experience I have ever read about firing people due to lack of funding is Steli Efti from Close.io in this blog post : http://blog.close.io/i-fired-half-my-team

I have fired people recently and wished I had read that blog post first!

bitJericho 1 day ago 0 replies      
There's nothing worse than getting cut loose on a friday evening on a payday. Can't do anything about your circumstances for 2 days such talking to unemployment, talking to other employers, etc. Let that last paycheck roll in a week or two later, it will ease their mind even though in reality it would make no difference.
jmadsen 1 day ago 1 reply      
If you are the CEO/near the top, don't make the foolish mistake of telling people "but now we're all set & we won't need to do this again"

You just might, and you'll lose all credibility with your employees.

joshu 1 day ago 0 replies      
I remember the time that Yahoo announced layoffs in time for earnings, but the specific people to be laid off we're not find out for six more weeks. This was not very good for morale.
legopelle 1 day ago 0 replies      
The best thing you could do is letting them know in advance.

Let them know at least a month in advance, leaving them much needed time to adapt to their new financial situation.

cookiecaper 2 days ago 0 replies      
I've been on both ends, being fired/laid off and doing the firing/laying.

My advice is first, realize you're not going to be popular. Treat people with dignity but don't worry too much about how they will take it. They're going to take it poorly. They're going to be upset. If some of your employees aren't, then that's a bonus. With this in mind, don't let your process or productivity become unnecessarily disrupted and be very careful in making concessions.

With this many people, do it all at once. Don't make people wait in agony for hours or days waiting to see if they'll get called in next. The specifics on how to do that will depend on the structure and size of your company, but do not allow for suspense.

Like others said, treat the employees with dignity and offer a reasonable severance as far as is possible. This isn't about preserving your relationship with them, it's about being a decent human being and making accommodation to ease a large transition like that.

Good luck. Like I said above, don't overthink it or worry about preserving your employees' opinions -- just behave in a manner that seems both reasonable and decent to you and be satisfied with that. Making it fast, moving forward with resolve, and appearing like you know what you're doing will help comfort the remaining employees to whatever extent is possible.

CookieCutter2 1 day ago 0 replies      
I've laid off several people several times.

To me it was much harder than firing people - hard by itself - because mass layed off people ask "why me" where I had no good answer.

Keep handkerchiefs around.

geuis 2 days ago 0 replies      
Be honest with the employees. Don't just spring it on everyone. Don't do it on Monday when people are expecting to come in fresh and start their week. It's ok to let people know changes are coming, even if you can't tell them the details right away.
MichaelCrawford 1 day ago 0 replies      
Give them this link: http://www.warplife.com/jobs/computer/

email me at mdcrawford@gmail.com and I will post what listings I already have for your area, and will find some more. (Presently I have the Portland Oregon area, Seattle and six or eight others actually posted but I have at least a few listings each for hundreds of cities in dozens of countries.)

Ask your local government's employment office for help with outplacement.

Say nice things in their linkedin profiles.

Give them all hardcopy letters if recommendation.

rebootthesystem 1 day ago 0 replies      
Be kind, just, considerate, etc. Many have covered these ideas, no need for me to repeat them.

What I will say is, you should consult with an attorney. It is all well and fine to go through life assuming that all people are good, honorable, ethical and even altruistic. Yet, it is even better to believe those things while taking steps towards protecting yourself and your company should you come across someone who deviates from such notions.

Why do I say this? Because I've been burned on more than one occasion by people who see a layoff as an opportunity to enrich themselves. If you don't know how to manage a layoff it is very likely that you will do and say things that will expose you and your company to liability. This is the part that sucks. You have to lawyer-up in order not to create a problem for yourself or your business. There are Federal and State laws you have to be aware of.

Spend a few hundred dollars to sit down with an attorney well versed in matters surrounding labor law and have him/her advise you on how to conduct the layoffs.

Has all this magical technology actually made our life experience better?
12 points by hellofunk  18 hours ago   6 comments top 4
npzimmerman 12 hours ago 1 reply      
This is a topic already covered at some length: https://www.marxists.org/archive/marx/works/1848/communist-m...

I'm not joking, the predictions and discussion of technical progress are very much relevant. It should be required reading. The nearest I can tell, anti-intellectualism and the red scare have robbed multiple generations of a valuable source of vocabulary and context for understanding our current stage of human development.

As for how, exactly, we get past alienation - I don't know.

nikhilkalegregg 9 hours ago 0 replies      
I think the answer to that question depends on your perspective, when you ask, who you ask, and the specific context upon which you are asking. If you asked a horny bisexual caveman 7000 years ago, he might prefer spending time with you in person and in the moment to being on Facetime with you. If you ask someone now, theyd probably prefer Facetiming a horny bisexual caveman rather than spending time with him in person. I think its mostly relative, but personally I think the taste of the magic we consume makes us require more magic to attain general satisfaction, and in that sense it is addictive and reduces joy in things like being present in the moment, since we have the means to solve our problems with more magic in any given moment.
cylinder 7 hours ago 0 replies      
Humanity and culture are fluid and dynamic. It will always be changing. I'm sure there were many who panicked about how social interactions were ruined by the introduction of the light bulb to the living room, and then the radio, then tv, etc.
FroshKiller 16 hours ago 1 reply      
Ugh, "modern panic" is so tiresome. "New generations will never understand the...impact of being present in the moment with...others, the true 'social experience"? Why not? Are new generations going to be physically unable to gather, and is smartphone neck going to be an evolutionary advantage? It's just the same old KIDS TODAY and THINGS AREN'T WHAT THEY WERE rubbish that Neolithic Man was sick of hearing from his grandparents. Get over yourself.
Now that we have IPv6 do we need TCP/UDP port numbers anymore?
12 points by coroutines  20 hours ago   7 comments top 5
tptacek 10 hours ago 0 replies      
I take as your premise "in IPv6, addresses are essentially free, and every end-system gets an unbounded number of them, so why not use them for service mapping?"

It's a fun question, but I think it has a straightforward answer.

1. The IPv6 header is already twice as big as the IPv4 header, so the win in shrinking the TCP or UDP headers is extremely marginal.

2. No, the kernel IP handling code would get more complicated; since BSD Unix, the PCB code in the kernel has assumed sessions were organized by port numbers. Meanwhile: the underlying concept of a numeric mapping between applications and instances of protocols on the wire wouldn't go away; you'd just be overloading IP addresses to accomplish it.

3. I agree that the opportunity to encode funny service names in hexadecimal trailing address space is an upside to eliminating ports.

4. Removing ports strictly simplifies network reconnaissance. IPv6 already makes scanning painful, whether or not you have TCP/UDP ports. With IPv6 and TCP ports, you have to do both: identify the live hosts, and then identify the listening ports on that host.

Some architectural downsides:

1. It is often (not always) helpful to distinguish between an entity providing a service and the services they provide. That distinction is lost when everything is an address.

2. Port numbers prevent us from accidentally trying to speak, say, RTP to a line-printer protocol server. Badly coded servers will often crash given random crap, and while that's not dispositive (the priority should be "eliminate badly coded servers), it's a helpful feature of having ports.

3. The network is required to be aware of which end-systems own which addresses. They are not required to be aware of which applications are running on which end-systems. The end-to-end argument says: put the minimum amount of state in the network, leave as much up to the end system as possible.

tveita 11 hours ago 0 replies      
The port numbers are used to identify connection. If you make two connections to a web server from the same machine, the packets for each stream are separated by the source port of the client.

If you got rid of the port numbers, you wouldn't just need an IP address for each service, you would need one for every outbound connection you make, and this address would need to be announced and stored in routing tables, checked for collisions, etc. Allocating ports is a lot cheaper, since only the endpoints (and stateful NATs/firewalls) need to know about them.

zamalek 18 hours ago 0 replies      
> I'd like to know other reasons why we need port numbers

Because SRV records aren't in widespread use (by specification and only consequently implementation). First you would need to stop using the A (or AAAA) record, on all existing protocols. This is a good thing because, comparatively, the A record is pretty stupid. However, it's never going to happen for the same reason that you probably can't set up an SRV record with whoever is hosting your DNS.

Also, ports are a portion of an address that routers can ignore - making them better at what they do. With multiple addresses per host you are going to annihilate routing tables/caches and make the internet slower.

coroutines 20 hours ago 0 replies      
I originally asked about this in the wrong place.


I hope this is the right place >.>

dozzie 20 hours ago 1 reply      
> Getting rid of TCP/UDP ports - the positives?:


> Some negatives:

The first and the foremost: we would need two totally new protocols in placeof two already well-known, well-functioning and well-tooled ones. Benefits youmentioned are negligible.

Ask HN: The company where I work for doesn't care about giving back to FOSS
10 points by grover_hartmann  1 day ago   7 comments top 4
Mz 11 hours ago 0 replies      
This is a personal issue. If it bothers you this much, change jobs. Or start your own company and have it comply with whatever ideals you ascribe to. Though, frankly, it sounds like your real beef is your shitty salary and this is just an excuse to tar them as evil in every way for not paying you enough. If the truth is you wouldn't actually care about this issue if they just paid you more, then you aren't the idealist you are trying to paint yourself as.
caseysoftware 1 day ago 0 replies      

If you want to contribute, you can do it on your own time (review your contract first) and/or make the business case to your team and get signoff from the relevant people.

The business case normally isn't too hard: show how your team benefits from the contributions. "Reputation" is hard to manage but recruiting is easy. From a technical perspective, it just takes showing that some of the bugs/features you've handled in the system are easier maintained as part of the core system instead of an internal fork. I've done the same while working for software companies, non-tech companies that used software, and even the US federal government.

Finally, if you're working in software development and getting a "shitty salary" do something else. There are probably a dozen other companies hiring within a mile of where you work right now. Stop blaming others and go after what you want.

informatimago 1 day ago 0 replies      
I've never seen any company where I worked caring about back contribution. At most, you could send an email to the lawyers and wait and wait and wait any answer.

That's why all my code is released only under the AGPL3, so that companies do not dare use my work without paying for it.

paulhauggis 1 day ago 1 reply      
"This is sad and in my opinion companies like this are bad users of FOSS."

It might be 'sad' to you, but it's the only reason FOSS has gotten so popular in the last 10 years. When a company gets large enough and depends on it enough, they will hire developers to actually fix and contribute to FOSS. With almost all major projects, this is the case.

"It's really depressing to hear things like this and I feel I'm doing a disservice to the FOSS community for working at shitty companies like this even though I depend on the job to pay my bills."

How is it 'shitty'? FOSS is free. Which means the freedom to use it and not contribute back. It's pretty shitty to put the blame on them for not giving back to the community.

Also, they are paying you to work there.

Ask HN: Hacker News style site for programming tutorials
28 points by gurisingh  1 day ago   25 comments top 16
duiker101 1 day ago 1 reply      
I think it would be a wrong approach because with a style like HN, articles disappear from the main page and are hard to retrieve very soon. While in the case of a tutorial it might remain relevant for a long time and the order in which they are submitted is not important. While with news, how fresh a news is, is important.
random42 1 day ago 3 replies      
Hackr.io is pretty close to what you are thinking about.
golergka 1 day ago 0 replies      
Although this site has "news" in it's name, people post articles, tutorials and other stuff here all the time, which is welcomed by the community. I don't think there's a need for a separate HN clone for a specific topic.
SanderMak 1 day ago 0 replies      
Something like http://pineapple.io ?
petercooper 1 day ago 0 replies      
It's not mine but a guy emailed me a week ago about something like this called http://www.tutzpro.com/ that he launched. I think there are a lot of similar sites though.

The major flaw with most of these sites (and especially the "curated X Y Z" versions) are they go out of date or just don't build up a community and wither and die with out of date information. That's the real trick.. not just delivering the information.

brudgers 1 day ago 0 replies      
One of the features of HN is story churn. On the other hand, to be useful, tutorials typically require extended commitment on the part of the user. Even a very trivial tutorial is going to take ten minutes to digest and require a context switch from browsing the internet to programming. At the very least, I will be hitting F12 in the browser.

A good tutorial might take hours, days or weeks of my time. In that time, I am not engaged with your site.

Good luck.

unixhero 1 day ago 1 reply      
Why not just do it. You could set up a Telescope instance, in an instant!
tmaly 1 day ago 0 replies      
I have wanted to do a more general learning concept for my kid with my site http://nextlesson.com its just been a little busy. My idea was to build curated list of videos/tutorials by category/ topic / users age populated by social likes sort of like how ranker does it with for movies etc.
hluska 1 day ago 1 reply      
I love the idea. I wonder if 'Teach HN:' (or similar) might be an easy way to solve the problem within this community.
galfarragem 1 day ago 0 replies      
I think a site like HN will be always a good direction to follow but beware of some 'issues':

- HN hasn't annoying ads. (How will you monetise it? Because you must monetise it somehow in the near future and we have already a lot of 'code schools' where people pay a fee to access).

- HN is his community. No community and your site will die. Many clones of HN have already died.

Anyway good luck!

gauravgupta 22 hours ago 0 replies      
@gurisingh - I'm the founder of Hackr.io and we need plenty of help in running this site :) How about working on it together?
krapp 1 day ago 0 replies      
I think you might have difficulty getting regular content with a site that focused only on tutorials. You might want to broaden the scope to programming projects or programming in general.
arikrak 1 day ago 0 replies      
One could post such tutorials to here and Reddit. I think it might be worth offering more organization, curation and features though.
wingerlang 1 day ago 1 reply      
Not really, seems too dis-organised.
marknadal 1 day ago 0 replies      
I like the idea.

Or we could just post some of our tutorials here! This is an introductory one I wrote covering the basics of HTML, jQuery, and making a ToDo app with my database http://gun.js.org/web/think.html .

noer 1 day ago 0 replies      
Not so much programming tutorials, but there's www.growthhackers.com for marketing article sharing. It's divided into categories (Paid, SEO, Content, etc.) though the content of the posted links usually isn't too great.I'm not sure what potential users would be looking for? Quick tutorials for the "Gee, I've always wanted to try that and have an hour" crowd or something more in depth that someone would come specifically looking for. If it's the latter, a directory supported by a voting system might be a little better. Just my $.02
Are other software engineering jobs more fun?
16 points by thedevil  1 day ago   17 comments top 7
kohanz 1 day ago 1 reply      
Consider taking the initiative to try and improve the processes and/or tools that are causing you frustration. I realize that in some organizations this will be prevented by too much bureaucracy, but in many (even big orgs) your actions will improve your life and those of your co-workers and you'll find such work rewarding (even if it's not necessarily coding). Remember, nobody set out to create procedures just to slow people down or to sap the fun out of your work. Unfortunately, many end up doing that or being perceived that way, but they were created for a very valid reason. See if you can streamline rather than avoid or be frustrated by them.

The other comment I have, unrelated to the above, is that your repeated reference to "talent" is somewhat of a red flag to me. There is nothing wrong with being confident in your skills, but often the idea of "talent" can be conflated with ideas of "if only I didn't have all these procedures, I could write code SO FAST", the consequences of which are generally the reason those procedures exist today. Personally, there is a very small percentage of developers that I have met over my career that I would call "talented" (< 5%) and they would certainly never say it about themselves (and I don't consider myself among them). Talent was in how they thought about solving problems (that maximized quality and minimized work) rather than their ability to "bang out" a solution really fast. The ones that openly refer to themselves as "talented" are often personalities that need to be managed.

icedchai 1 day ago 2 replies      
Sounds normal. You probably spend 40% of your time browsing the web right? I've worked at a half dozen different companies, from small startups to large mega corps. The only thing that makes it tolerable is changing jobs every 2-3 years to keep things fresh.
lujim 1 day ago 2 replies      
I switched careers into software development almost a decade ago. I have found that

a) Yes. Much of the software development you will do in the plain vanilla business world is not very analytical, interesting, or exciting. Many companies are very slow moving and your ability to influence that is going to be nil if you're just writing their software.

b) I have much less talent and passion than I thought I did when I started. :)

Don't let that deter you. Software development as a job is still better (compensation, hours, opportunity to solve problems on a daily basis, ability to find jobs) than virtually anything else out there.

theaccordance 1 day ago 1 reply      
I bounced around 4 different companies after changing careers into software development before I found my ideal match; don't be afraid to get back out there and find something more satisfying.
a15971 1 day ago 1 reply      
I regret to inform you that this is a normal situation. In economy, you have to do what's useful for other people and not neccessarily what's fun.

Of course there are jobs at the intersection of those sets, but also there is much competition for them. It's harder to find them and you might have to accept lower pay for them.

You also mention "corporate world": larger teams impose their tax on participants. "The Mythical Man-Month" book (by Frederick Brooks) says that for a team of size n you have n(n1)/2 possible communication paths between participants, which means that the communication and coordination overhead rises much faster than the team size. This accounts for half of your time being taken by "process".

So small companies migth be more interesting, but also riskier (because small companies are tipically start-ups which haven't yet confirmed the validity of their business model). Of course there are exceptions, but on average this also means you get paid less.

One case study for fun job is id Software at the beginning - the guys who developed Doom, the first significant 1st person shooter game. In early 1990ties it was the most installed software on computers by one Microsoft study (googling for details left as an exercise for the reader). The game was technological breaktrough, something new, it had massive impact and was financially successful. And you bet they had a lot of fun doing it.

Edit: corrected the group intercommunication formula

onlyrealcuzzo 1 day ago 1 reply      
Never take a salary cut to work at a startup. Are you an angel investor? No.

There probably are better jobs. But unless you live in a major city, it will probably be hard to find one. And even still, it's not exactly easy to get a job at a good place to work. Everyone wants that job!

chrisbennet 1 day ago 0 replies      
If you want to work on interesting, challenging stuff, work for a small company* that depends on software for their success. The last company I worked for had 3 employees - all engineers.

* Not necessarily a startup, just a small company.

Ask HN: Have you ever thought about learning to fly an airplane?
5 points by dkatz790  1 day ago   9 comments top 3
JHof 5 hours ago 1 reply      
Is flying popular among the tech professionals who can afford it? Where do they do their flight training? Typical flight schools seem sort of old school for a place like the Valley.
cdvonstinkpot 17 hours ago 1 reply      
I was enrolled in lessons when I was 18, just before the first Gulf war. As soon as the war started, gas prices went through the roof, & my family could no longer afford to pay for my lessons since the gas factor increased the cost so much. I've since lost the desire to learn, and am happy on the ground. I'd rather spend that money on something else.
dmfdmf 1 day ago 2 replies      
Its all about money. Planes are woefully expensive and the 60+ crowd has money or they aren't flying.

As I used to tell a buddy of mine who was a pilot; planes are for rich people, motorcycles are the poor man's airplane but we only get 2D's of freedom not 3D like a pilot. Similar arguments apply to boats, which is left as an exercise for the reader.

Finding that perfect match
9 points by nikhilkalegregg  22 hours ago   2 comments top
crazypyro 11 hours ago 1 reply      
Why does any NYC VC care about a drug charge (unless it was a felony... in which case, your story doesn't really add up)? You seem to have a lot of excuses for why things haven't worked out and none of them include yourself as a cause... Just something to think about.
How are you handling depression?
36 points by panjaro  2 days ago   17 comments top 14
malibublues 2 days ago 1 reply      
Sorry, non-English speaker's comment below:

I was depressed for almost 10 years. It started in my sophomore year of college. Initially I would finish 3 hour programming assignments in 10-15 minutes and was the student representative of the CS department. I had a lot of friends, and was quite 'normal' I suppose. Then things started literally falling apart. I lost interest in my old hobbies, stopped talking to friends, kept failing classes, found no pleasure in anything. I asked my roommates to find another place and started living alone, and then decided to commit suicide by cutting my wrists in the bathtub with a knife but pussied out when the blade touched my skin... Fuck, what a nightmare.

However, I somehow dragged my feet through this misery and managed to graduate (two years late and at the bottom of my class) and luckily bumped into an old friend who remembered how good I was with computers back in highschool. He was running his own company and offered me a (non-programming, IT) job. It was great at first but once again the depression started rearing its ugly head and I started slacking off at work, being late for appointments and isolating myself again.

I tried doing the things people seem to suggest online like exercising regularly (never could for more than a month), yoga, mindful meditation, but I would always relapse.

It took me 6-months to finally get the courage and see a psychiatrist. He diagnosed me with depression and anxiety and put me on lexapro. I could never imagine how much 10mg of something could change your life.

Within a few days I started seeing major changes in myself. It rekindled my interests in my hobbies (programming, gaming, reading etc.) my memory improved tremendously, I felt compassion towards my friends and family, much more social and became super efficient at work. Fast forward a year and I'm now CEO of my friends company and I've dealt with some personal tragedies on the way without relapsing. Things are holding up pretty well.

If you think you're depressed don't hesitate to seek help. If you notice someone falling apart for no reason and might be depressed, offer to accompany them to a psychiatrist and that you'll keep it confidential. (I wish I had gone sooner)

picardo 2 days ago 1 reply      
Like many on this thread, I've struggled with depression for a long time. What marked the turning point for me was discovering cognitive therapy[0]. It showed me that the way I talked to myself about what happened was the root cause of my depression. I'm a born pessimist. It took several years of intense effort to implement this technique in my own life, but thankfully it's allowed me to achieve serenity.

One addition I made to the CT techniques was visualizing my emotions as having distinct personalities Anger, Sadness, etc. I got this idea after watching the recent Pixar movie. It's silly but it really helps to picture your emotions as people who have their own agendas and are trying to manipulate you into carrying them out because then your depression becomes a people management problem. Consider the difference: 1) how can I manage Anger, Sadness or Fear so they don't drive me nuts? 2) how can I cure my depression? The first one is actionable, and the second one is not.

Despite having good results with CT, I'm convinced there is no magic cure to depression. You only manage it all your life. But that's a good thing because it means depression management is a skill you can cultivate, and that gives me hope.


[0] http://www.webmd.com/depression/features/cognitive-therapy

dgudkov 2 days ago 0 replies      
I used to have severe depressions in younger age that lasted for years killing my relationships and career. I tried various treatments but they didn't help. It went away when I learned a few things: first, how to not be enemy of myself - not force myself into doing what I don't want to do, being where I don't want to be. Second, learn how to let important things go out of my control and give life a chance to make me happy. Third, I started figuring out what I really like, and what I really want. It all took a lot of self-analysis, writing and being ultimately honest with myself. It didn't come in 1 day and it wasn't easy, but falling back into depression was a much worse scenario. So there was no silver bullet in my case, just lead bullets. But it worked.
srose3100 1 day ago 0 replies      
Sometimes depression is situation based and sometimes it isn't. As a general rule there are 3 aspects/areas of your life:

1. Home life: How our your living conditions, bills, people you live with. Are you comfortable?

2. Work life(e.g. Work/Study/Job hunting): Do you enjoy what you do and is it a good working environment?

3.Relationships: How are you getting on with Friends, Family, boyfriend/girlfriend e.t.c?

If one of these area's is off then it's ok and you can usually cope if two or more are off then you definitely need to try and change something.Alwyas talk to someone about these feelings/situations as it's very hard to think clearly or logically during these times you definatley need a second opinion.And somethign to be aware of that a lot of people don't seem to know is imposter syndrome which most people deal with at sometime or other. When you have the idea that although you can do something your actually just fakeing it and eventually wil be found out: http://www.theguardian.com/lifeandstyle/2013/nov/09/impostor...

a3n 2 days ago 0 replies      
Anecdote of one: My particular depression has responded very well to Citalopram, an SSRI (Selective Serotonin Reuptake Inhibitor). There are other SSRIs, other classes of drugs, and other treatments including therapy.


Everyone who is depressed, or knows someone who is depressed, should keep in mind that everyone is an individual, and there are many causes of depression.

If you are depressed, your first stop should be a doctor or other professional, as soon as possible. Today is Sunday, so call and make an appointment tomorrow, Monday.

Do not try to tough it out or ignore it. Your life does not have to be miserable.

teekaay 1 day ago 0 replies      
I am dealing with a bipolar disorder since I was 16. After an episode of total motivation and some kind of reckless/risky behavior (cutting off friends because they "do not fit" anymore, excessive exercising whatever interest you in this moment and so on) a depressive episode is following, taking you and your motivation down. Dealing with depression is hard and it gets even harder when your social life and work performance is suffering because that takes you down even more. Also, eventually reduce your amount of work and consider taking a day off for a a consecutive amount of weeks. When you trust your boss, talk to him. Executives are also humans!

Some people mentioned doing sports and in my opinion, this is one of the most helpful things one can do. Running a mile maybe one or two times a week can clear your mind from lots of negative thoughts and make you feel happier. In addition to that, some people like Yoga/Pilates to calm down and rearrange themselves. After all, the very most important step is getting professional help! Depression can influence your whole life and it is always good to have someone who is listening.

Summarized:- Get professional help- Do sports - Write down what you feel- Reduce stress

hga 2 days ago 0 replies      
Mine's inherited and atypical, but the sorts of things being suggested here have helped, e.g. a SSRI. I strongly recommend getting a copy of this book: http://www.amazon.com/Feeling-Good-New-Mood-Therapy/dp/03808... or any other good guide to cognitive therapy, which has an added behavioral aspect nowadays. Therapists ought to be versed in CBT, and if things are bad enough they're worth a try.
replete 2 days ago 0 replies      
I've put up with depression for around 15 years. I wish I'd taken myself more seriously earlier and seen a doctor. It's an illness, there is not always a clear cause.

Atypical depression is characterised by mood reactivity and is the most common form of depression (40%).

See a doctor, get some therapy for the bad thoughts that you've internalised when you were depressed, and get a prescription.

Life can be great.

mangeletti 1 day ago 0 replies      
Exercising for 30 min per weekday at the gym has worked 100% for me, and I'm much more healthy as a result. Don't think about it; just do it. Seriously.
random567 1 day ago 0 replies      
Are you exercising? I can't emphasize enough what a difference exercise makes. Try going for a run or at least work up a sweat somehow - I've found it's been an incredible support to my emotional well being.
nsuQAEsax 1 day ago 0 replies      
I am not handling depression, depression is handling me.
headwall 1 day ago 0 replies      
Thank you!After I read this all, I will go to a doctor. Thanks alot!
docmars 2 days ago 0 replies      
I've dealt with depression for quite a while now, for a number of reasons ranging from feeling cynical about a few things, girl problems, rejection, all the way to not feeling like I belong in the place I work from not feeling satisfaction in what I'm making, and feeling really limited in the solutions I can bring to my team. Depression has proven to be huge soup of confusion and feelings that are really difficult to sift through and understand.

Hyperbole and a Half couldn't have explained it better:http://hyperboleandahalf.blogspot.com/2011/10/adventures-in-...

How have I addressed all this junk? I've been seeing an EMDR therapist for about 7-8 months now and simply talking through these issues, asking hard questions, and confronting my feelings with an honest-as-possible lens. Much of it has been tackling shame head-on, walking past it, and acknowledging how much I've grown into a person I'm starting to love more. Part of it is also finding nuggets of a person I once loved being and reclaiming them, challenging myself to love others without restraint, have empathy, and place others before me.

EMDR therapy in particular has been really interesting. While I don't think it's an end-all solution, it has been well researched, and takes talk therapy to a new level. It forces you to process memories as you would while sleeping (specifically, REM sleep), with a hope to reprogram your feelings towards those memories, or scenarios you've created that lead you to believing you're much less of a person than you really are. It plays into the idea that we are our own worst enemy, and say the worst things to ourselves which form our identities, which in turn affects how we work (program), and where we stand with others. "Surely I'm the least [important / impactful / compassionate / loving] person in this room."

With all that said, I highly recommend seeking therapy if it's affordable, and most of all, be as truthful and honest with yourself as possible. Confronting your doubts and fears head-on, and replacing them with positive truths about who you are goes a long way, even if it takes some time. It really helps to have a therapist with you to affirm these truths. Remember, they may not know you as well as the people in your life, but that's good, because this person you're seeing is an unbiased support figure, fighting for the potential you have in you. This may not be _the_ solution, but it certainly will push you in the right direction to a life filled with hope.

But you know, there's something therapeutic about coding, where solving the many problems we solve give us some sense of a victory. And that's something, isn't it?

Ask HN: What is the actual purpose of Docker?
311 points by someguy1233  7 days ago   154 comments top 36
tinco 7 days ago 1 reply      
> What's the difference between Docker and normal virtualization technology (OpenVZ/KVM)? Are there any good examples of when and where to use Docker over something like OpenVZ?

Docker is exactly like OpenVZ. It became popular because they really emphasize their OpenVZ Application Templates feature, and made it much more user friendly.

So users of Docker, instead of following this guide: https://openvz.org/Application_Templates

They write a Dockerfile, which in a simple case might be:

 FROM nginx COPY index.html /usr/share/nginx/html
So no fuzzing with finding a VE somewhere, downloading it customizing it, and then installing stuff manually, stopping the container and tarring it, Docker does that all for you when you run `docker build`.

Then you can push your nice website container to the public registry, ssh to your machine and pull it from the registry. Of course you can have your own private registry (we do) so you can have proprietary docker containers that run your apps/sites.

From my perspective, the answer to your question would be: Always prefer Docker over OpenVZ, they are the same technology but Docker is easier to use.

But I've never really invested in OpenVZ so maybe there's some feature that Docker doesn't have.

hueving 7 days ago 1 reply      
It serves as an amazing excuse to re-invent the wheel at your own workplace. It's a hot technology, and if you're not using it, it's because you're inept. Rip all of the stable things out that everyone knew how to use and slap containers in there! If it's not working, it's because your not using enough containers.

No security patching story at your workplace? No problem, containers don't have one either! If someone has shipped a container that embedded a vulnerable library, you better hope you can get a hold of them for a rebuild or you have to pull apart the image yourself. It's the static linking of the 21st century!

KaiserPro 7 days ago 3 replies      
docker and openVZ aim to do the same thing.

docker is a glorified chroot and cgroup wrapper.

There is also a library of prebuilt docker images (think of it as a tar of a chroot) and a library of automated build instructions.

The library is the most compelling part of docker. everything else is basically a question of preference.

You will hear a lot about build once, deploy anywhere. whilst true in theory, your mileage will vary.

what docker is currently good for:

o micro-services that talk on a messaging queue

o supporting a dev environment

o build system hosts

However if you wish to assign ip addresses to each service, docker is not really mature enough for that. Yes its possible, but not very nice. You're better off looking at KVM or vmware.

There is also no easy hot migration. So there is no real solution for HA clustering of non-HA images. (once again possible, but not without lots of lifting, Vmware provides it with a couple of clicks.)

Basically docker is an attempt at creating a traditional unix mainframe system (not that this was the intention) A large lump of processors and storage that is controlled by a singular CPU scheduler.

However, true HA clustering isn't easy. Fleet et al force the application to deal with hardware failures, whereas Vmware and KVm handle it in the hypervisor.

grhmc 7 days ago 8 replies      
For me, it is the ultimate in the idea in Continuous Delivery of "build once." I can be very confident that the docker image I build in the first stage of my pipeline will operate correctly in production. This is because that identical image was used for unit tests, to integration and functional testing, to the staging environment and finally production. There is no difference than configuration.

This is the core that Docker solves, and in such a way that developers can do most of the dependency wrangling for me. I don't even mind Java anymore because the CLASSPATHs can be figured out once, documented in the Dockerfile in a repeatable programatic fashion, and then ignored.

In my opinion the rest of it is gravy. Nice tasty gravy, but I don't care so much about the rest at the moment.

Edit: As danesparz points out, nobody has mentioned immutable architecture. This is what we do at Clarify.io. See also: https://news.ycombinator.com/item?id=9845255

shawnee_ 7 days ago 4 replies      
Docker is a cute little tool that gives people who aren't that great at Linux the illusion that they know what they're doing. Throw in the use of some "Container" semantics and people become convinced it's that easy (and secure) to abstract away the containers from the kernel.

But it's not, at least in my experience; not to mention that as of now, anything running Docker in production (probably a bad idea) is wide open to the OpenSSL security flaw in versions of 1.0.1 and 1.0.2, despite the knowledge of this issue being out there for at least a few days.

Docker's currently "open" issue on github: https://github.com/docker/compose/issues/1601

Other references: https://mta.openssl.org/pipermail/openssl-announce/2015-July...http://blog.valbonne-consulting.com/2015/04/14/as-a-goat-im-...

alextgordon 7 days ago 1 reply      
1. Stateless servers. Put your code and configuration in git repos, then mount them as volumes in your docker container. The absolute star feature of docker is being able to mount a file from the host to the container.

You can tear down the host server, then recreate it with not much more than a `git clone` and `docker run`.

2. Precise test environment. I can mirror my entire production environment onto my laptop. No internet connection required! You can be on a train, on a plane, on the beach, in a log cabin in the woods, and have a complete testing environment available.

Docker is not a security technology. You still need to run each service on a separate host kernel, if you want them to be properly isolated.

danesparza 7 days ago 6 replies      
I'm stunned that nobody has brought up the idea of 'immutable architecture' -- the idea that you create an image and deploy it, and then there is no change of state after it's deployed. If you want a change to that environment, you create a new image and deploy that instead.

Docker gives you the ability to version your architecture and 'roll back' to a previous version of a container.

zwischenzug 7 days ago 3 replies      
Some key points:

- Docker is nothing new - it's a packaging of pre-existing technologies (cgroups, namespaces, AUFS) into a single place

- Docker has traction, ecosystem, community and support from big vendors

- Docker is _very_ fast and lightweight compared to VMs in terms of provisioning, memory usage, cpu usage and disk space

- Docker abstracts applications, not machines, which is good enough for many purposes

Some of these make a big difference in some contexts. I went to a talk where someone argued that Docker was 'just a packaging tool'. A sound argument, but packaging is a big deal!

Another common saw is "I can do this with a VM". Well, yes you can, but try spinning up 100 vms in a minute and see how your MacBook Air performs.

akshaykarle 7 days ago 0 replies      
Docker is mainly an app packaging mechanism of sorts. Just like you would build a jars, wars or rpms, etc. you create docker images for your applications. The advantage you get is that you can package all your dependencies in the container thereby making your application independent and using the tools provided by docker in combination with swarm, compose, etc. it makes deployment of your apps and scaling easier.

OpenVZ, LXC, solaris zones and bsd jails on the other hand or mainly run complete OS and the focus is quite different from packaging your applications and deployments.

You can also have a look at this blog which explains the differences more in detail: http://blog.risingstack.com/operating-system-containers-vs-a...

sudioStudio64 7 days ago 0 replies      
I think the main thing is to provide an abstraction for applications so that they aren't tightly coupled to the operating system of the server that's hosting them. That's a big deal.

Some people have mentioned security...patching in particular. Containers won't help if you don't have patching down. At the very least it lets you patch in the lab and easily promote the entire application into production.

I think that the security arguments are a canard. By making it easier and faster to deploy you should be able to patch app dependencies as well. I, for one, would automate the download and install of the latest version of all libs in a container as part of the app build process. Hell, build them all from source.

IT departments need to be able to easily move applications around instead of the crazy build docs that have been thrown over the wall for years.

jtwebman 7 days ago 0 replies      
It's a tool to make over engineering every project even easier! All joking aside it is a good tool for some teams to make sure the same exact code is running in production that was tested. I don't think it is for everyone and can make things much more complicated than they need to be. I also don't think everything needs to be in a docker.
hmans 7 days ago 1 reply      
Docker is the industry-accepted standard to run web applications as root.
csardi 7 days ago 0 replies      
I like this presentation, as it shows what Docker really is, and also how to use Docker without Docker: https://chimeracoder.github.io/docker-without-docker/#1
mariocesar 7 days ago 0 replies      
The most common pro is "Build once deploy everywhere" even is possible, I always feel pushing a 500 MB tar image to the production servers is more an annoyance than being helpful; Yes, You can setup your own registry but maintaining the service, securing, adding user permissions and maybe use a proper backend like S3 is an extra annoying layer and another component that could fail.

If the docker tool will have something like `docker serve` and start his own local registry will be more than great.

For this case when I switch to Go was a great solution, building the binary is everything you need.

About docker being helpful for development, definitively yes, I switch to postgres, elasticsearch and redis containers instead of installing them on my computer, is easy to flush and restart and having different versions of services is also more manageable

spaceisballer 7 days ago 0 replies      
I know you have some other questions that I am not qualified to answer, but I recalled seeing a similar question asked not that long ago.


Kiro 7 days ago 1 reply      
For me I don't understand the purpose at all. I have a few node.js and PHP services. Why do I need isolation and have them in containers? If I want an identical environment when developing I can use Vagrant.
dschiptsov 7 days ago 0 replies      
To create a buzzword to attract investors money. It is professional brand management at work.
tobbyb 7 days ago 1 reply      
OpenVZ or LXC give you OS containers like KVM or VMWare gives your Virtual machines. Unlike OpenVZ, LXC does not need a custom kernel, and is supported in the mainline Linux kernel paving the way for widespread adoption.

Docker took the LXC OS container template as a base, modified the container OS init to run a single app, builds the OS file system with layers of aufs, overlayfs, and disables storage persistence. And this is the app container.

This is an opinionated use case of containers that adds significant complexity, more a way to deploy app instances in a PAAS centric scenario.

A lot of confusion around containers is because of the absence of informed discussion on the merits or demerits of this approach and the understanding that you have easy to use OS containers like LXC that are perfectly usable by end users like VMs are, and then app containers that are doing a few more things on top of this.

You don't need to adopt Docker to get the benefits of containers, you adopt Docker to get the benefits of docker and often this distinction is not made.

A lot of users whose first introduction to containers is Docker tend to conflate Docker to containers, and thanks to some 'inaccurate' messaging from the Docker ecosystem think LXC is 'low level' or 'difficult' to use, Why would anyone try LXC if they think it's low level or difficult to use? But those who do will be pleasantly surprised how simple and straightforward it is.

For those who want to understand containers, without too much fuss, we have tried to provide a short overview in a single page in the link below.


Disclosure - I run flockport.com that provides an app store based on LXC containers and tons of tutorials and guides on containers, that can hopefully promote more informed discussion.

pjc50 7 days ago 0 replies      
The description on HN the other day of Docker as a souped-up static linking system is the most interesting one.
theknarf 7 days ago 0 replies      
Docker is a way to create immutable infrastructure, which is a key component to a) have software working the same in test and prod. (hint DevOps.) and b) creating servers which can scale both vertically and horizontally.

I think thats the best way I can summarise what Docker _is_.

mbrock 7 days ago 0 replies      
I don't know much about virtualization technology, but Docker is nice for me because it's an accessible, well-known, and rather easy way to make applications easy and straightforward to run.

Where I've worked in the past, setting up a new development or production environment has been difficult and relied on half-documented steps, semi-maintained shell scripts, and so on. With a simple setup of a Dockerfile and a Makefile, projects can be booted by installing one program (Docker) and running "make".

You could do that with other tools as well, but Docker, and even moreso the emerging "standards" for container specification, seems like an excellent starting point.

bfirsh 7 days ago 0 replies      
This explains the difference between Docker and normal virtualization technology: https://www.docker.com/whatisdocker
corradio 7 days ago 0 replies      
johnminter 7 days ago 0 replies      
I think one useful purpose was described by Prof. Mine Cetinkaya-Rundel of Duke at the recent UseR conference. She teaches an introductory statistics class for non-majors. Docker lets her spin up individual virtual machines for each student with all the packages they need for the class without all the sys-admin headaches of getting all the software on everybody's systems. You can see her slides and evaluation of the alternatives here:


tfn 5 days ago 0 replies      
I went ahead and blogged an answer here: http://blog.tfnico.com/2015/07/the-sweet-spot-of-docker.html

TL;DR: It's better for deploying applications and running them than using home-made scripts.

somberi 7 days ago 0 replies      
A meta critique after reading 139 comments:I too had the same question as the parent and from the ensuing conversations, I assume that either Docker is so thin-layered (not in a bad way) that it is open to so many interpretations or it is so thin-layered (in a trivial way), that one does not need to get all worked up adopting it if one is comfortable in using other VM options out there (like OpenVZ for example).
theneb 7 days ago 0 replies      
I find docker is quite good for integration tests where you need to test against a third party bit of software. Lots of images exist in the hub for this.
justincormack 7 days ago 1 reply      
OpenVZ is not upstream in the kernel; the container stuff that got merged is what Docker uses. Docker has much wider adoption than OpenVZ does now.
xaduha 7 days ago 0 replies      
Someone (Darren Shepherd?) compared Docker to Ajax. It's not a technological breakthrough, it's another kind of breakthrough.

I think it was here [1], but deleted now.

[1] http://ibuildthecloud.tumblr.com/post/63895248725/docker-is-...

lgunsch 7 days ago 0 replies      
Simply put, Docker is operating system virtualization:


Edit: formatting.

jacques_chester 7 days ago 1 reply      
Docker uses the same kernel primitives as other container systems. But it tied together cgroups, namespaces and stackable filesystems into a simple cohesive model.

Add in image registries and a decent CLI and the developer ergonomics are outstanding.

Technologies only attract buzz when they're accessible to mainstream developers on a mainstream platform. The web didn't matter until it was on Windows. Virtualization was irrelevant until it reached x86, containerization was irrelevant until it reached Linux.

Disclaimer: I work for a company, Pivotal, which has a more-than-passing interest in containers. I did a presentation on the history which you might find interesting: http://livestre.am/54NLn

hosh 7 days ago 2 replies      
You're coming at this from the wrong direction, namely virtualization.

What differentiates Docker is not virtualization, so much as package management. Docker is a package management tool that happens to allow you to execute the content of the package with some sort of isolation.

Further, when you look at it from that angle, you start seeing the flaws with it, as well as it's potential. It's no accident that Rocket and the Open Container Project are arising to standardize the container format. Other, less-well-known efforts include being able to distribute the container format themselves in a p2p distribution system, such as IPFS.

kolyshkin 5 days ago 0 replies      
[Disclaimer: I am the guy who was running OpenVZ since the very beginning, and if you hate OpenVZ name/logo, I am the one to blame. Also, take everything I say with a grain of salt -- although I know, use, like and develop for Docker, my expertise is mostly within OpenVZ domain, and my point of view is skewed towards OpenVZ]

Technologically, both OpenVZ and Docker are similar, i.e. they are containers -- isolated userspace instances, relying on Linux Kernel features such as namespaces. [Shameless plug: most of namespaces functionality is there because of OpenVZ engineers work on upstreaming]. Both Docker and OpenVZ has tools to set up and run containers. This is there the similarities end.

The differences are:

1 system containers vs application containers

OpenVZ containers are very much like VMs, except for the fact they are not VMs but containers, i.e. all containers on a host are running on top of one single kernel. Each OpenVZ container has everything (init, sshd, syslogd etc.) except the kernel (which is shared).

Docker containers are application containers, meaning Docker only runs a single app inside (i.e. a web server, a SQL server etc).

2 Custom kernel vs vanilla kernel

OpenVZ currently comes with its own kernel. 10 years ago there were very few container features in the upstream kernel, so OpenVZ has to provide their own kernel, patched for containers support. That support includes namespaces, resource management mechanisms (CPU scheduler, I/O scheduler, User Beancounters, two-level disk quota etc), virtualization of /proc and /sys, and live migration. Over ten years of work of OpenVZ kernel devs and other interesting parties (such as Google and IBM) a lot of this functionality is now available in the upstream Linux kernel. That opened a way for other container orchestration tools to exist -- including Docker, LXC, LXD, CoreOS etc. While there are many small things missing, the last big thing -- checkpointing and live migration -- was also recently implemented in upstream, see CRIU project (a subproject of OpenVZ, so another shameless plug -- it is OpenVZ who brought live migration to Docker). Still, OpenVZ comes with its own custom kernel, partly due to retain backward compatibility, partly due to some features still missing from the upstream kernel. Nowadays that kernel is optional but still highly recommended.

Docker, on the other side, runs on top of a recent upstream kernel, i.e. it does not need a custom kernel.

3 Scope

Docker has a broader scope than that of OpenVZ. OpenVZ just provides you with a way to run secure, isolated containers, manage those, tinker with resources, live migrate, snapshot, etc. But most of OpenVZ stuff is in the kernel.

Docker has some other things in store, such as Docker Hub -- a global repository of Docker images, Docker Swarm -- a clustering mechanism to work with a pool of Docker servers, etc.

4 Commercial stuff

OpenVZ is a base for commercial solution called Virtuozzo, which is not available for free but adds some more features, such as cluster filesystem for containers, rebootless kernel upgrades, more/better tools, better containers density etc. With Docker there's no such thing. I am not saying it's good or bad, just stating the difference.

This is probably it. Now, it's not that OpenVZ and Docker are opposed to each other, in fact we work together on a few things:

1. OpenVZ developers are authors of CRIU, P.Haul, and CRIU integration code in Docker's libcontainer. This is the software that enables checkpoint/restore support for Docker.

2. Docker containers can run inside OpenVZ containers (https://openvz.org/Docker_inside_CT)

3. OpenVZ devs are authors of libct, a C library to manage containers, a proposed replacement or addition to Docker's libcontainer. When using libct, you can use enhanced OpenVZ kernel for Docker containers.

There's more to come, stay tuned.

droidztix 6 days ago 0 replies      
reading while eating popcorn ( )
programminggeek 7 days ago 0 replies      
It exists to create jobs in devops.
       cached 15 July 2015 04:05:03 GMT