hacker news with inline top comments    .. more ..    27 Jun 2017 Ask
home   ask   best   2 years ago   
Ask HN: How do you stay creative?
5 points by skidding  2 hours ago   1 comment top
_qwerty_ 1 hour ago 0 replies      
Sorry, based on personal experience, I don't agree at all.

1. I believe that there is a link between ego/confidence and being creative/innovative. To consider or suggest doing something different --whatever the domain-- takes self-belief - the confidence that your ideas are better than the prevailing status quo that the rest of the world is satisfied with.

2. Mostly, in addition to #1, I see being creative/innovative as just a mental habit. Some people examine the world around them critically, and want to improve some aspect or other, while others don't. Practise this sufficiently often, and you'll improve, as with most pursuits.

(1 & 2 would become a virtuous cycle - you believe that you can improve things; you more regularly look for opportunities to do so; you [get better at] find[ing] them; you [or others] provide positive reinforcement.)

3. Personal belief: there may also be correlations with certain personality types. For example, people with certain traits may be more prone to noting imperfections in their experience of the world, leading directly to the thought processes which result in ideas for possible improvements.

4. I think you're conflating being creative with actively pursuing generated ideas or opportunities. The difference may just be circumstantial: that someone lacks the financial wherewithal to pursue an idea, or for personal reasons (e.g. conflicting responsibilities) can't dedicate the time or energy to pursuing that idea. Action creativity. In fact, the opposite may often be true: it's well noted that creative people need to be teamed with people that can/do execute their ideas fully (e.g. 'implementers' and 'completer-finishers' in Belbin's team-roles).

Ask HN: Reminders for long-running shell jobs?
5 points by polm23  9 hours ago   8 comments top 8
simon_acca 4 minutes ago 0 replies      
I use this little CLI utility that I wrote to send messages on Telegram via a Bot. https://github.com/simonacca/TellTg

All you have to do is `$ my_long_running_job; telltg "Done"` and you get a notification on all your devices. Very handy also for remote jobs.

The best use case so far has been piping the udev log into it when my laptop is locked in a public place and I'm away. I get a notification on my phone when someone open/closes the lid, unplugs the charger, sticks a USB drive in and so on.

pigpigs 1 hour ago 0 replies      
I personally curl a slack webhook that sends me a message.

If the task is already running, ctrl + z and run bg. Then i run `wait <pid> && slack 'job done' `

richardknop 1 hour ago 0 replies      
I would probably wrap the shell command in a file and at the end of the file either fire off an email to yourself, or send a text message, or call a notification API - whichever works best for you.
weitzj 5 hours ago 0 replies      
I put the job in a separate tmux window. When something/a character changes in the window, its color changes and I know I can look what happened.
meta_AU 4 hours ago 0 replies      
I use zsh, it has a variable called REPORTTIME that will print a report after long running commands. I have a custom report that includes the bell special character.

This way any long running process will bell when it is done and also show the runtime and cpu time of the process.

12s12m 4 hours ago 0 replies      
This is an interesting problem :)For my local commands I have a small script called `b` which runs a command and shows a notification when it is done using notify-send.
Davidbrcz 5 hours ago 0 replies      
Have a look at liquid prompt https://github.com/nojhan/liquidprompt
jerrylives 7 hours ago 0 replies      
just add something like `&& echo "Subject: task completed" | sendmail -your@email.com`

if you are running it via ssh you can do 'ssh zerocool@htp.org bash -s' < local_script.sh` and then do whatever you want to do afterwards

running things locally like make or tests i like to put `&& say done` at the end so i don't lose track of it.

Ask HN: What's your process for learning?
187 points by mysterpaul  19 hours ago   88 comments top 49
danielvf 17 hours ago 2 replies      
The biggest test of what I've learned about learning was the day I had to learn embedded programming in twenty four hours.

A customer called me at 5 pm. They had a possible six figure hardware sale, but a key aspect of their hardware was too slow, their only embedded software/hardware guy was no longer working there, and they had to have the new code in 24 hours for a demo.

The software component to be sped up was three cores running handwritten assembly, and had been optimized by several people over four years.

The total of my embedded software experience was fooling around with an Arduino. I'd never written assembler before and never see this processor or its family before.

This was going to be good.

I wrote down the problem, and did the math to find out what the solution would have to look like.

It's hugely important to define the problem, and constrain the solution as much as possible. Nailing these down is probably the single most important "trick" problem solving.

With the problem defined, and the solution constrained, I printed the entire processor manual, and read/scanned it through in one sitting. I then went back over the memory and instruction timing sections, since that was going to be the hardest part.

I at least, learn much better by first scanning through a paper book on a subject. This lets you get the big picture all in your head at once, and see how things connect. Unlike just reading an overview, you also get to see the hard details that make up the way the system works. Then go back through later for the sections that matter for the problem you are working on.

I hooked up the customers hardware to the computer, flashed code the existing code to it, then changed the code to turn a status LED off. This was just to verify that I had the code to hardware toolchain working.

I've learned to bite off a small piece at a time, and then build up, rather than trying to solve everything at one go. The first code I ran on the processor just changed a status LED. This let me focus on as small of a chunk as possible, and deal with getting the new IDE configured, etc, without having to worry about the whole class of problems that would come from running my new algo.

I know I need X amount of sleep to solve problems. Even with a crazy deadline, knew I'd do still come out ahead. I went to bed at my usual time.

When I woke up, I knew how to solve the problem. The solution was similar to drawing a diagonal line on a computer screen - which is a really easy problem.

I've found that you can think in your sleep. Maybe this is just me again, but I've learned that as long as I clearly layout a problem, solution, and tools before I sleep, I wake up with the answer. I don't even wonder anymore if it's going to happen. Perhaps this is just the result of a lot of experience, but it never fails. If I'm stuck on something during the day, I just take a shower or a nap and know the answer afterwords.

Because the algorithm was going to be the most important part of this, I coded a JavaScript/HTML 5 canvas visualizer that gave me a live slider for the input variable and showed me a single view the output over many thousands of time steps. The JavaScript version of the algo worked great.

In optimization, the algorithm usually matters far more than anything else. It wasn't that I was the king of assembly language programmers, it was just that I was doing an entirely different thing than the previous programmers had been optimizing. I started with "what would the ideal solution to this problem be", and they started with "let's translate a hardware concept to software".

The second biggest trick to working with a new problem is visualization. I've learned that I can hugely increase my speed of understanding by building tools to visualize the problem and what my code is doing to solve it. For example in the recent, awesome, Halite programming competition, I built a tool that would let me output annotated html5 game maps and documents from within my code. Here's an example visualization output, straight from source code http://braino.org/thoughts/halite_the_simple_way.html OODA loops really do matter, and really are constrained by how much you can see how fast.

After breakfast, I worked out the assembly instructions I'd need, tracking the timing and register values on graph paper. I read up carefully in the docs on each instruction I'd need.

By lunch time I had a paper version that should work, and by 3pm I had it running in the product and had learned how to use an oscilloscope. The customer picked up the hardware and got the sale. The new version used one core instead of three and was measurably, literally ten thousand times improved.

I was now a carded member of the Real Programmers Society.

adamnemecek 19 hours ago 4 replies      
For books, you have to generally read them like 5 times. The first pass might take me like an hour, it's mostly to establish a general mental framework for what's in the book (actually try to read the table of content, and like familiarize yourself with the words you might not know). On the second pass, you will actually try to read the book and retain like 20% of what you read. On the next one try the next 30%.

This approach has the advantage that it lets you decide what's important. I also like to believe that it establishes better connections between the single ideas.

I would say that goals are counterproductive until you are somewhat comfortable but not when starting out. Like yeah sure, you should make some progress but you are in an uncharted territory, the best thing you can do is to walk around a bit and make sure you stay engaged.

If you move to a new city, you probably walk around the neighborhood for a bit, then to the neighborhood next to yours etc etc.

Joeri 17 hours ago 3 replies      
I almost always only learn things that I can immediately apply afterwards, because otherwise I find I don't retain enough useful knowledge that I have to go through the same learning resources again by the time I need the knowledge.

I have two learning modes. When I first come across a new topic, e.g. hadoop, I will go broad and skim as many learning materials as I can to get an idea of the lay of the land. Once I feel confident I have a handle on the major parts and technologies involved, I'll switch to the second learning mode and work through the subjects / technologies one by one by searching online for "best way to learn X", figuring out what the common denominator is, and then working my way through that while taking notes in onenote.

The note-taking is crucial for retention as well as keeping track of salient points (it's all in a onenote notebook, so I can find something relevant again even if I don't recall the particular book it was in).

What I wish existed was a sort of wikipedia for learning, keeping track of every subject / technology and giving a reference to the best learning materials in a crowd-sourced way. Right now learning sites focus on their own content, but it's not always the best, and it is not crowd-sourced. The best hits for learning resources are usually stackoverflow or quora links, but neither are the right format for such a thing.

mikegerwitz 18 hours ago 1 reply      
My learning falls into a couple main categories: formal study for the sciences (be it math, programming, crypto, etc); and broad research for advocacy and activism. Both of these involve keeping up with current events, the latter moreso than the former; the former can be especially time-sensitive.

I don't have the time to put these in any coherent order, so I'll just list some:

- Bookmarks. I find much of my information online. I make aggressive use of tags, and I found that organizing them into folders is too difficult and a waste of time (unless grouping them for a project/talk temporarily); the tree structure doesn't lend itself well to a graph of concepts. I have ~10k bookmarks. I keep them; you never know when they'll come in handy, even if only for trivia. Figuring out what tags are appropriate forces me to extract key material.

- Maintain a reading list/backlog. I have short, medium, and long-term lists. Go through them on occasion and re-order them by interest/importance. Remove ones you know you won't have time for.

- Learn to speed read. I find it difficult on a screen, but easy on paper.

- Hands-on experience: if you're programming, go hack on your favorite project, look at bug reports, or write your own. Struggle through problems before you give up and look online.

- My time is split between many things. I use Org mode to organize my thoughts and agenda. Sometimes I can do the entire project in Org mode (e.g. https://mikegerwitz.com/projects/sapsf/tree/slides.org, but I left my time tracking private). It also integrates with my mail client (Gnus), where I live a good chunk of my life outside of work.

- While I read many articles and blogs and stuff online, for any in-depth material, I buy the book or print the paper and read offline. I have a system with 5 different color pens that I use to aggressively mark up and underline (blue general concepts, red a problem, green a solution, purple a technical detail, black misc.). I have a Bamboo tablet, but I still prefer paper.

- As I mentioned in another one of my comments (and as adamnemecek mentioned), read a book multiple times (http://pne.people.si.umich.edu/PDF/howtoread.pdf). It not only helps with absorbing the information and selecting what is important to you for further study (which is important given limited time), but also helps if you can't often finish books; after a few iterations, you'll have a good idea on all of the concepts and know _what information exists_ and _where to find it later_ when you actually need it. Discovery is the most important (thus my bookmarks)---material is always there to reference.

- I don't have time to watch videos---I prefer transcripts, which I can also search through. If I do need to watch a video (either because it explains a concept better or because there is no alternative), I watch it at 2--2.5x and slow down when I get to something I'm having trouble keeping up with. Some people talk slowly even at 2x. :x

- Get rid of distractions. One of the best things I did was create an agenda in Org mode, because once I complete a daily task (e.g. reading news sites; checking mail; checking GNU Social), I _stop_ and move onto another task. No peering at my e-mail or news sites 20 times while I'm doing another task.

- Similar to the previous: I only work on personal things at night. I have a family, and I want to spend time with them---I feel guilty if I work during the day when the kids want to play, and all the noise is a distraction; it breaks flow constantly. Wait until a calm point.

- Iterate over your system. Everything I do has evolved over the course of many years. The learning curve for some tools will slow you down, but can be very rewarding. The iterative process can slow you down. But that's not always the point: a good system can have returns in the long run, but it also _reduces stress_; you want to enjoy learning, enjoy the tasks you're doing, and not have to worry about other things. This might involve writing scripts, too.

I have more things, but that'll have to do for now.

dizzystar 19 hours ago 0 replies      
I think the question is a tad ambiguous. Are you talking about learning from scratch or building on what you already know?

The common thread in both is mastering the foundations. I know this is controversial, but I believe in book learning before playing whack-a-mole around the internet, simply because you aren't at the point where you can differentiate the signal from the noise.

After the foundations, I learn on a need-to-know basis, which is generally more applicative: if you are trying something that's never been done before, then the perspective is top-down instead of bottom-up.

I don't use notes, todos, online tracking, or whatever goal-oriented resources people are using. I don't see learning as a goal-oriented exercise so much as an accidental accumulation of knowledge. Knowledge gained best from a genuine interest in the subject at hand, which often leads into a genuine struggle to learn some topic, either because it is genuinely difficult or it something you find boring but necessary to learn to continue.

I'm an autodidact, and really, the best advice I can give is learn yourself first. Be absolutely honest with yourself about your interests, your limitations, and the answers, via a long journey of trial and error, will eventually come to you. The fact is, we aren't all able to fit into a mold, and no matter how much advice you read... advice reading is pretty much worthless without a grounding on failure.

cher14 17 hours ago 1 reply      
I made a tool to help making notes while studying.Aim was to make something which allows you to:

Add text and images quickly, so you can type along with a lecture, or by copying and pasting text, html or pdf from documents you are reading. At the same time it must be easy to add and scale images.

Tidy up and restructure your note. Just typing your notes is not enough. You also need to think about it, and restructuring or tidying up your notes is a great way to do that. The tool you use should not make you redo or rewrite the notes completely. It should just be click and dragging without messing up the formatting.

Show structure in multiple ways (colors, sizes, shapes, connections etc). Making notes in a text editor is limited. You need something that does not just scroll up and down, but also left and right. Something that looks more like a diagram or a mindmap, to which you can also add connections, labels, arrows, and colors. Having notes that look more like infographics helps me alot to remember or retrieve what is in them.

Have overview and detail in the same map without to much clutter. I myself like having notes on a topic in one document, but it must still be easy to show the structure and the details.

I am pretty pleased about how all this works in Breakdown Notes (my project). If you would like to check it out I suggest you take a look at an example map about english grammar:https://www.breakdown-notes.com/makemap/load/grammar

jvanloov 19 hours ago 1 reply      

I pick a project that interests me at some point; currently "I'd like to have an internet music player that sits on my cupboard and doesn't require my tablet".


 * decide on platform (CC3200, because it has wifi, enough processing power, and I happened to have one) * build something that decodes an MP3 stream (investigate, pick Helix as the decoder, make it run on the CC) * think about hardware (DAC, amplifier) * think about enclosure (wood, how to do front panel)
I knew next to nothing about many of these things when I started, and I'm making lots of mistakes along the way, and I won't become an expert in any of these things, but the overall goal/"target" provides a guide to decide what to learn next. A search engine then helps me find the resources I need.

For tracking my progress, I've started to use Emacs org mode.

jasode 18 hours ago 1 reply      
>Do you focus on one topic/book/course/project/article at a time, or split your time between multiple things?

For me, I deliberately split across multiple topics/books because my brain has different thresholds of concentration depending on time of day. The early mornings are best for more challenging subjects (e.g. math, deep learning algorithms, etc). At night, it's easier to read softer topics like history and politics. I think it's important to pay attention to your brain's energy levels and when/how it gets distracted. With that knowledge, you optimize your learning schedule around that.

>- Do you use any tools to track your resources, todos, notes, or goals?

Since learning time is finite, I think it's a important to put together a little curriculum of all the topics you want to learn. Prioritize them.

>Are there any pain points you have while learning

Another piece of advice that nobody ever seems to emphasize (but I wish I had known early in life) is that there are topics that will be a waste of time to learn. In my case, I regret I spent hours on PowerBuilder, IBM DB2, and DOS batch scripting with VBScript. It doesn't mean those skills are bad for others but a little research would have made me realize there were other more important skills to spend precious hours on. (Time spent learning X is time not spent on learning Y.) The tldr is that people will often evangelize things for you to learn that you really don't need to learn. They have good intentions with their advice but they don't know the complete picture of your life's goals.

goshx 18 hours ago 1 reply      
I usually focus on one goal at a time and dedicate all the time I have available to it.

The key is that I must have something I want to accomplish as a reason to learn something new. For instance, if I just decide to learn a new programming language, I will lose interest very quickly. But if I decide I wan't to create a new app, I can then use that same programming language for the job and I will consume every information I can in order to make it happen. Usually using google and youtube to find the resources. I start from the basic I need to start and go on from there.

I've used that method to learn new programming languages, surf fishing, technical analysis/investments in the stock market, grow plants, electronics, cooking, etc.

TLDR; focusing on a project makes it easier to learn as you need the information in order to make it happen

ellius 19 hours ago 0 replies      
I read whatever interests me until it doesn't interest me any more, and I quit reading things that don't interest me. I don't say that to be flipit's actually what I do, and it has allowed me to consume an enormous amount of material over the years. The only trick to this method is not to confuse difficulty with boredom. There are times when I learn to code, for example, or when I read about obscure financial wizardry or mathematics, where my mind drifts and it feels like boredom. But the reality is just that it's hard. Sometimes when things are hard you do have to change your track until you've developed prerequisite knowledge to come back to it. Just make sure in those instances not to decide the thing was boring because you couldn't handle it on the first go.
sghiassy 17 hours ago 0 replies      
I'm surprised nobody has mentioned Anki cards. It's a scientifically proven method to learn any topic through spaced repetition.

Any time you find some thing you want to learn - add a card to Anki. Anki will make sure you never forget and truly understand the topic.

I highly recommend AnkiApp: https://www.ankiapp.com

Or: https://apps.ankiweb.net

edanm 15 hours ago 1 reply      
Depends on what I'm trying to learn, but for things like Math and other technical topics, I'll try to find textbooks/video lectures, go through them, while adding them to Anki.

If you don't use Anki - you really, really should. I'd be lost without it - it's one of the greatest life-hacks I have. Without it, I don't really feel like I've learned something "for life", only just for a moment.

Also, reading multiple textbooks on the same topic is in general much better than just reading one, preferably in slightly increasing complexity.

hypertexthero 17 hours ago 0 replies      
Work on projects that you are passionate about. Work together with peers, get help when you are stuck and help when they are stuck. Be playful, do not be afraid of making mistakes and do not focus on perfection.

I warmly recommend Pragmatic Thinking and Learning by Andy Hunt and Alex Martellis lecture Good Enough is Good Enough! from EuroPython 2013: https://www.youtube.com/watch?v=gHG9FRSlPxw

More notes on learning: https://www.simongriffee.com/what/learning/

danielbigham 17 hours ago 0 replies      
I work in the field of natural language understanding and in the last few years I've figured out how to use that very advantageously wrt learning.

Here's the approach I use:

- Every time you come across a new term or concept, you create a new "notebook"/document. That's right, one notebook per concept. The title of the notebook is the name of the concept.

- You create a summary for the concept using bullet points. What you're trying to maximize with this set of bullet points is the speed at which, in the future, you can re-read them and achieve a similar brain state to what you had when you originally learned the concept.

- You can then obviously have extended notes below that where you go into more detail.

- Then, crucially, you create something akin to a regex that will allow you to quickly and unambiguously look the concept up in the future. If you just learned what a rectified linear unit is, your pattern might simply be:

rlu | (rectified linear unit)

- You then have a hotkey on your computer -- I use Ctrl-Q, that brings up a text box where you can type the name of the concept you want to bring up (ex. "rlu"). When you press ENTER, it doesn't give you search results if there's an exact match, but instead directly opens the document and makes it instantly viewable / editable.

- As your concept graph starts to grow, you have links within your notebooks to related concepts as they're referenced.

- Each time you read an article that is important to your understanding of a concept, you quickly open up that notebook and add that article, and perhaps one or two bullet points that contain the key things you learned that expanded your sense of that concept.

- This same system can be used for more than learning text book information. You can use it if your a project manager to keep tabs on the millions of things you have to juggle, you can have notebooks for people, for lists, and you can have "regexes" for "programs"/scripts, for web pages, for files/directories, etc, etc.

- More general than "regexes" are context free grammars. In this context what that means is the ability to have named "subroutines" for your regexes. For example, if you end up using RLU as a sub-part of a lot of other notebook regexes, then you might define $rlu to be a short form for (rlu | (rectified linear unit)).

themodelplumber 18 hours ago 0 replies      
> focus

For casual learning, I split my time across various subjects and do whatever feels interesting. For serious learning like a certification, I set goals based on e.g. time spent studying.

> Tools

I use plain text files, either a single file or a folder full of them. I try to develop a sort of learning system for the subject in question.

> Pain points

I was too reliant on outside sources before and did not spend enough time creating "my own" knowledge through hypothesis, testing, measuring, etc. Nowadays I realize I have very little need for most of my books; it's more fun to see what I can come up with on my own.

I also wrote up a "learning ladder" that ranks various forms of study; for example before opening a book or a browser tab on a topic I will check to see if there's a short YouTube video available. After that I might look for an ELI5 on Reddit. Then eventually you get to books.

While that may seem obvious, it represents my taking responsibility for my own learning and I am a more motivated person because I created the ladder by myself and continually work on it. I have hundreds of these systems in areas from learning to fitness to work operations to finances, etc. When I go on vacation it's the #1 "book" I enjoy reading and pondering (I save all the .md files to Dropbox for reading on my phone).

hyfgfh 13 hours ago 1 reply      

[ ] Define a subject, and a goal

[ ] Get resources

[ ] Create a topic list

[ ] Filter the resources and assign resources to the topic list

[ ] Think about possible projects

Study- For each topic

[ ] Collect data in a reference note

[ ] Create flashcards

[ ] Search and create questions / exercises

[ ] Explain the subject in a piece of paper (Feynman's technique)

[ ] Apply the knowledge in quizzes and practical projects

[ ] With notes, explanation, quizzes and flashcards create a KL


- Do you focus on one topic/book/course/project/article at a time, or split your time between multiple things?

> I focus on topics, not resources. But I split my time into multiple disciplines.

- Do you use any tools to track your resources, todos, notes, or goals?

> Yes. Evernote(Premium)

- Are there any pain points you have while learning, or are there any tools you wish existed?

> Yes, a good markdown 'platform' compatible with Linux/Windows/Android

nikivi 19 hours ago 1 reply      
I actually started using a search engine I built for choosing what and how to learn things.


As for learning I usually mind map concepts I thought were interesting and then review the mind maps and create flash cards. It depends on the content however.

If it is something actionable like learning a programming language, I try to use the knowledge straightaway and build things. :)

neovive 18 hours ago 0 replies      
It depends a lot on the topic. For coding/tech, I find working through an "organized collection" of video tutorials by rewriting the code locally and taking notes along the way, works very well. It's time-consuming, but I tend to retain more concepts after watching, listening and practicing, since it engages more senses (vision, sound and touch).

Prior to learning a new topic, I try to make mind/concept map of the material based on my initial understanding from reading articles or browsing books, docs and examples. It also helps to have an end goal or project in mind to connect concepts to actual outcomes. You can also try explaining what you just learned to a non-technical person; forcing you to "make sense" of a concept while converting to non-technical jargon.

Overall, it just takes time. After years as an autodidact, I haven't found many short cuts around hard work. There are many great techniques out there--some will work for you and others won't--but consistent practice is usually the underlying theme.

jgamman 12 hours ago 0 replies      
Two classes of problems: something related to what I'm already well versed in is different to something that I'm a noob.

For noob stuff, I make and quiz myself with physical cue cards. The act of writing the card and the answer seems to be 75% of the memorisation i need but i forget quickly... related to that, i write myself 'guides' that I wish i had read weeks/months before when i didn't know anything. something about writing the subject down as if i'm teaching it let's me anchor the beginning at a level that i can treat as a given and then baby steps all the way to the end. it's a bit Feynman-ish in that it really does force you to acknowledge when you're skipping over something and just rote-memorising.

Also, treat black boxes as a known unknown that you can always go back to. You often have to link up a dozen black boxes to get anywhere and if you go down each rabbit hole, you'll never get to the end. Better to play with them, get a feel for how they are behaving and dive in if/when they aren't doing as expected.

Quiz yourself. After a while it gets quite relaxing to glide over problems that stumped you when you first thought your should write them down. helps remind you that you _are_ learning.

Lot's of books/articles etc covering the same topic and re-reading them. You're different each time and you never know when you are _ready_ to learn that particular thing.

lojack 17 hours ago 0 replies      
Usually, when learning something, I have a project to work on to apply my knowledge to. I find that I'll start by searching for some good resources. This is typically books, blogs, subreddits, screencasts, awesome-X, etc. Then I'll spend an hour or two a day learning from whatever resource I'm using, and spend the rest of my time working on the project, applying what I've learned.

Sometimes I don't have a project to work on, but I'm interested in something. For these things I'll push to use on new projects at my company, and will read a book or two about them prior to convincing people its a good idea. This isn't always ideal because the knowledge doesn't really stick without applying it to projects, but it scratches my itch to a certain extent.

munificent 19 hours ago 0 replies      
1. Read a little until I'm itching to try to apply what I know.

2. Try it.

3. Reflect on what went wrong.

4. Go to 1.

closed 15 hours ago 0 replies      
Other people have covered in detail different approaches to learning, so I figured I'd mention a weird thing that's been helpful for me, in case it's useful.

While learning, I try to split off a little piece of myself into a sort of adversary, whose job it is to get me to do basic problems / tasks, in order to demonstrate that I don't remember as much as I think I do.

This might happen in the form of spending an hour one morning leafing through older material, and setting aside things for me to solve / re-prove. It's pretty simple, and I take some kind of perverse joy in finding areas where I thought I would remember much better.

matthewvincent 17 hours ago 0 replies      
My favorite way to learn a new topic (which consistently works well for me) is to read several books about the same topic back to back.

I find that if I read three books by different authors on let's say React for example, which are all meant to cover the basics, I learn much more than by reading one book three times. The difference in the authors voices and inevitable variability of emphasis and style throughout, really helps me stay engaged and pick up the things I might have missed in the last book.

I'll usually do this first, then move on to tutorials and deep dive type books which are mostly a breeze by the time I get to them because of the very solid fundamental foundation provided by the initial book set.

WheelsAtLarge 13 hours ago 0 replies      
Here's a quick clip on learning and knowledge from Richard Feynman one of the greats in physics. I suggest you watch the whole video, it's good but at the last minute or so he summarises learning and knowledge in his view. It's GOLDEN!!

Here it is:


agitator 17 hours ago 0 replies      
I take the most practical approach possible, because it allows me to get to my goals as fast as possible.

Usually, I want to learn something because I want to do something with that knowledge. So as an example, if I wanted to develop an app on a platform or in a language I have never used before, I would start by reading some general knowledge about the language or platform, to get my mind going. Maybe grabbing a book or finding some good online basic tutorials. I usually never finish the books, because I often get to a point where I understand enough to start asking specific questions that I need answered in order to make progress on my project. So I stop with the general knowledge, as I have enough understanding to actually start implementing things, and I start researching the specific questions I have for making progress on my app. And I just start executing and working on it, and researching answers as I go. This way, I learn as I go, and I keep myself motivated by actually having deliverables at the end of each "lesson" I set for myself.

beat 19 hours ago 0 replies      
Try to get learning working in multiple aspects of your brain at once. One of the best "learn about learning" lessons I ever had was studying jazz theory. My teacher used a four-way method of learning chords - say the name of the chord, visualize it on the keyboard, feel the shape your hands make to play the chord, and listen to the sound of the chord. I've applied this sort of approach to all sorts of skills since then.
megamindbrian 15 hours ago 0 replies      
I use the app I made studysauce.herokuapp.com for memorization. Google calendar for tracking progress and lots of personal analytics. I spend about a day on little set up projects such as connecting to Watson, or adding up calendar events using Google API, or learning the basic of some new framework. I'll do one of these little projects 1 to 4 times per month. Reading other people's research is a good starting point for me. I wish API's weren't so expensive. That is cost prohibitive of my turning a little app I write in a weekend in to a product. No one wants to pay 30 dollars on top of my 20 dollar monthly expense. If my use case ends up costing more than about $5 per month, I try it out and then shut it down. Usually there is no output from my adventures except self-improvement, which is pretty disappointing, I'll admit.
garysieling 16 hours ago 0 replies      
I built a tool to hep me find good talks, https://www.findlectures.com. I've been curating some of the best of these and sending them out in an email (http://www.findlectures.com/emails), which has forced me to push a lot further exploring available topics.

I split my time between multiple topics, generally aiming for variety over depth, and collect recommendations for books / speakers from various places (friends, Hacker News, the evening news, etc).

I've found that having multiple simultanous books or project s is helpful, because they can interact in interesting ways E.g. one author has accidental insight into the topic of a second book, for instance, or a footnote to a problem in one project solves a major problem for the other project.

amorphid 18 hours ago 0 replies      
I learn best by doing. I imagine how something might work (I am usually wrong!), and try building it. When I discover that I need to learn something, I try to communicate what I'm trying to build, why I am trying to build it, and where I got stuck. Then I ask around a bit (StackOverflow, Quora, Reddit, coworkers) to see if someone has insight how I might succeed. The depth and quality of answers I receive hint at the quality of my question, or the familiarity others have with the problem I am solving.

If I get no answers, I usually grind away at the problem until I lose interest, can ask a better question, or make enough progress that I can answer my own question.

Useful answers include offering:

- a suggestion to use alternative solution with acceptable trade-offs

- a different approach to how I solve my problem

- a specific answer to the question I asked

- to collaborate with me in finding a solution

- a supportive comment (the cutting edge can be lonely!)

- understanding about a trade-off or consequence of how I am approaching the problem

- a suggestion on improving the quality of the question

- a referral to someone who knows the answer

startupdiscuss 19 hours ago 0 replies      
Here is the key insight (from, in my mind, Gilbert Ryle originally):

There is a difference between knowing that, and knowing how.

When you want to learn that something is the case, read.*

When you want to learn how something is done, do.

If you want to learn how to do something, and you are not doing the thing, then you might find yourself not learning.

* You can take notes, summarize, and repeat.

aalhour 15 hours ago 0 replies      
I have different processes and strategies depending on what I am learning and how familiar I am with a topic. For example, if I would like to explore a brand new topic that I have no clue about then this is how my thought process looks like:

1) Look for verticals/lists of resources. These exist in all fields, awesome-lists are just an engineering example, universities keep lists of open courses, list of book recommendations or lists of open-sourced books.

2) Look for key figures in that field. PhD Researchers, Conference Presenters, TEDx Talkers, Professors, Founders of Companies in that field. Follow their pages/blogs/twitter accounts and ask them what resources do they recommend for beginners. Compile your own vertical of resources based on cross matching the resources here with the ones you found in other verticals.

3) Look for courses, new ones are usually offered on MOOC Platforms, archived ones can be found on university websites. Check the reviews of such courses and pick the most beginner friendly one. Depending on the field, if it's not technical then you will have to look for courses elsewhere, for example: The Great Courses.

By now you should know, roughly, the best resources (Books, Articles and Courses) and how to find more (verticals and people in that field).

4) Learn the terminology. One way to learn the terminology of a field is to pick the book you decided is best to start with using the previous 3 steps, open it and go to the index section, read the index and start googling terms as you come across them, for example: If I am exploring Data Engineering and I come across the word or term "stream processing" then I will start googling that term. Familiarise yourself with as much terms as possible.

5) Commit to reading at least 1 book, going through 1 course and trying to apply as much of what you learned as possible. Technical subjects are the easiest to apply this step to, since you can start a side-project at anytime.

P.S. you can always ask for guidance in this, you don't have to repeat all the steps for all fields, for example, you can submit an "Ask HN" post asking for resources about X topic or a question on a related Subreddit such as: /r/PostgreSQL.

Best of luck!

EDIT: typo

ssivark 19 hours ago 0 replies      
In my experience, understanding theoretical concepts is challenging because the process of learning is often not legible [0].

What has worked for me is having multiple periods of immersion into a concept or topic, while referring to multiple sources, with notes [1] summarizing small bits as I learn them. I keep refactoring those notes as my understanding grows, to include coherent maps of larger and larger chunks. On short time scales, my learning is not measurable, but experience indicates that my understanding grows over time. Looking back, my periods of immersion range from a few hours/days, while I tend to revisit topics every few weeks/months. I guess this falls under the umbrella of spaced repetition methods.

Since my interests and pursuits are very diverse, and I'm seldom "finished" with something, I don't like the psychological weight of todo lists [2]. I maintain lists of interesting stuff [3], and several hundred browser tabs [4] but they're mostly not things to be checked off, and languish peacefully for long periods. That said, I'm on the lookout for better knowledge/idea management workflows and software. What I currently use is organically grown, and very messy.

That was for theoretical understanding. Practice helps, for things one "does".


[0]: Venkatesh Rao: A Big Little Idea Called Legibility -- https://www.ribbonfarm.com/2010/07/26/a-big-little-idea-call...

[1]: Markdown files, or scribbles/diagrams on scratch paper

[2]: Scott Hanselman: It's not what you read, it's what you ignore -- https://www.hanselman.com/blog/ItsNotWhatYouReadItsWhatYouIg...

[3]: Zim Wiki notebook -- http://zim-wiki.org/manual/Help/Notebooks.html

[4]: I <3 Firefox and the TabGroups extension

JeSnuster 8 hours ago 0 replies      
Head. Wall. Repeat.

Persistent effort. Work it out yourself. Don't just read it, think it, play with the concept until you can generate examples and explain them to others.

Dowwie 15 hours ago 0 replies      
I'd like a desktop app that, when engaged, would monitor browser usage and lightbox my screen after 3 minute of browser use with a simple question "Are you solving a problem or taking a break?". If I choose "taking a break", I'd like a 1 minute countdown timer engaged with a suggestion to focus on breathing instead.

Please? Pretty please? :)

VoodooJuJu 15 hours ago 1 reply      
Several comments mentioned that the best way to learn is by doing - applying the knowledge. How would you go about learning-by-doing something like particle physics or advanced chemistry without access to labs? Are you reduced to creating homemade soap and rote memorization of theory? Could you ever make a meaningful contribution or get a job as an autodidact in either field?
clarry 19 hours ago 0 replies      
Learning what? Welding? Practice, practice, practice.

I focus on the thing that I'm most interested in at the moment. That is rarely an entire book, though I've done that too.

If I feel like I need to take notes to keep track of what's going on, I will do so. I might also leave a note about things I've skipped or glossed over and should want to (re)visit again later.

The biggest pain point is usually scattered information, or information that assumes some background you don't have and doesn't give you enough clues to fill in.

dyarosla 19 hours ago 0 replies      
I think this question can be best answered by first looking at what research tells us about learning (otherwise your question attracts only anecdotal responses which will be less universally applicable). Here's what research says, followed by how it applies to your questions in particular.

1) Mastery based learning is generally the most effective process (learning each axiom of a topic to 100% before moving onto the harder topic)

2) Spiral based learning is an effective add-on to mastery based to keep you remembering the things you've learned (coming back to a topic just at the point of forgetting keeps you retaining knowledge)

3) The content you learn off of (video, text, etc) has different attributes which may correlate to better transferring of knowledge: Shorter videos, hand-written visuals, enthusiastic voice, have all been shown to correlate with better learning outcomes.

4) The motivation you have for the topic you're learning and how much closer it exists to intrinsic/extrinsic motivation dictates how well you'll absorb a topic. The closer to intrinsic, the more effective learning will be. Project-based learning generally falls into this category: projects that interest you motivate you to learn more.

Now with all of that in mind, to answer your questions:

> Do you focus on one topic/book/course/project/article at a time, or split your time between multiple things?

(1) would suggest that you should not split your time, at least at first, unless you are trying to find a better explanation (3)

> Do you use any tools to track your resources, todos, notes, or goals?

Most of the suggestions sound like meta work. I wouldn't suggest tracking todos so much as perhaps writing down the things you've learned to prove to yourself of (1) mastery or to come back to later for (2) spiraling.

> Are there any pain points you have while learning, or are there any tools you wish existed?

Sounds like you are trying to make a tool to help people learn/track learning at a high, abstract level. Because there is no one right solution to everything because of (3) and (4), whatever tool you create may not actually help anyone unless it's more domain-specific and less abstract.

ivm 12 hours ago 0 replies      
No videos, taking notes in Scapple, searching for the most simple explanation in multiple articles at the same time, implementing what I need as soon as possible.

Focusing if the topic I learn is focused itself or not focusing if it's very broad.

mindcrime 12 hours ago 0 replies      
I use a mixture of approaches, but w/r/t development I'd say one of the main approaches I use is to just start building something that requires me to learn something new, and then learn as I go. The actual learning is a mix of trial-and-error (in the case of programming), reading books, watching videos, taking classes, reading papers, etc.

For non-development topics (say, math) it's again a mixture of reading books, watching videos, working exercises, etc. And I try to attack problems from multiple angles, by using different books and resources. Just to illustrate with an example:

Last night I started working through How To Prove It by Daniel J. Velleman. I got to the Chapter 1 exercises, and hit a point where I needed to know if a given number was prime or not in order to verify my answer. It was a number larger than the list of primes I have memorized, and I didn't feel like testing all the possible factors by hand, so I just fired up R on my laptop, loaded the matlab library and used the isprime() function.

Later in those same exercises I got to a point where I had an answer, but wasn't sure if it was correct or not, so I just googled until I found a guy's blog where he posted his answers to the same problems. My answer matched his, so I felt fairly confident that it was right (of course, we might have both made the same mistake).

Had I not found that guy's blog, my plan was to post a question to math.stackexchange.com or one of the reddit.com math forums, asking if somebody could verify my answer.

So I started with a book, and eventually used a number of other resources as part of my overall learning experience (a scientific calculator was mixed in there somewhere as well, before I pulled out R).

This might lead one to ask "well, how did you learn R?" First of all, I wouldn't yet rank my R skills very high, but to the extent that I know some R, it was from (again) a mix of sources:

1. A bunch of Coursera classes, including several of the ones in the Johns Hopkins Data Science track, and the Duke "Probability and Statistics with R" track.

2. Working through parts of several R books, including R In Action, Learning R, Using R For Statistics, etc.

3. Trial and error, playing around, using the built-in docs, etc.

That's kinda it. I take notes using pencil and paper, sometimes a plain text file, occasional an OpenOffice Writer document, and sometimes a wiki (I keep a MediaWiki instance running locally).

pgbovine 19 hours ago 0 replies      
If you're doing needfinding for a project idea to enhance learning, my suggestion is to focus on a single DOMAIN of learning first rather than trying to make something to help learning in general, since it's such a vague and broad problem. e.g., "how do you learn to do your taxes?" or "how do you learn basic home maintenance?"
navyad 6 hours ago 0 replies      
- pick a topic.

- find reliable resource/book to read from.

- read and make notes.

- refer notes to make things stick.

cgag 16 hours ago 0 replies      
Multiple books, rotating between them relatively quickly (interleaving), usually 20 minutes.

Make anki cards for key points.

If I'm actually dedicating time to studying that's how I do it, haven't had that session in a while though.

sevensor 17 hours ago 0 replies      
For self-study, I like to dip my toe in the water a few times over a long stretch of time (I've got lots of other things on my plate), and if I decide I'm interested in going further I'll dig into a real project.
elchief 17 hours ago 0 replies      
I read books backwards (by chapter) as the end is where the interesting stuff is. I generally read only the section titles and first sentence or two of paragraphs

I find it helpful to type examples as I read too (for programming stuff)

viiralvx 17 hours ago 0 replies      
For programming languages.

1) Read the documentation2) Sometimes, do a tutorial.3) Build a small project and ask questions via Twitter/IRC/Slack along the way.

pavlakoos 19 hours ago 0 replies      
I need to write things down myself, then read them over and over. It doesn't work if I read over and over what somebody else wrote.
killjoywashere 18 hours ago 1 reply      

 def learn(thing, max_time=0, max_attempts=1): while run_time < max_time: while attempts < max_attempts: attempts =+ 1 if do(thing) = 0 break else learn(thing)
Always set a time limit or a maximum number of attempts. Default to at least try (you may already know it).

Edit: I don't write code very much, and certainly don't claim to earn my living on it.

learngr8now 15 hours ago 0 replies      
i use a text (word file) template i made - if you want to see, visit


Ask HN: Why are credit card chip readers so slow?
266 points by dv35z  1 day ago   316 comments top 51
redbluff 23 hours ago 3 replies      
Some of the answers are close, but no cigar. The main reason for the time delay is the offline authentication of the chip, combined with generation of the ARQC cryptogram. Additionally the EMV protocol is very chatty if there are multiple applications on the chip card, although the latency involved in the customer interaction far outweighs the protocol timings.

As mentioned in many comments online transactions will be an order of magnitude slower, as they need to be sent to the issuer, have their cryptogram verified and the challenge response returned if the card does host authentication - which most do these days.

The entry mode generally does not determine how a transaction is authorised - chip, PayPass (NFC) and stripe can either be off or online. In fact stripe transactions are invariably online unless you want your business to be overrun with fraudsters. One of the prime reasons in the early days of EMV was to have it so safe that offline transactions were fraud proof - or close to. Naturally this noble goal was shot full of holes the moment real fraudsters got to it. However, the card is personalised with various limits and counters and with the possibility of using an offline PIN, which combined with the static authentication does give reasonable protection for low value offline transactions. Fun fact - in the initial spec this offline PIN was communicated between the terminal and the card in the clear. What could possibly go wrong :-). These days it is encrypted.

Anyhow enough blather - hopefully this has given a bit of insight.

nstj 1 day ago 3 replies      
You might want to qualify this with in the US as chip+pin cards are pretty fast in other countries by comparison.

Also there was a great episode of the podcast Planet Money a while back which goes into detail on your question [0]:

> Today on the show, we bring you a brief history of what's in your pocket. It's a story of convenience vs. fraudand it also includes a hippie inventor, the origin of the last great upgrade on your card, the magnetic stripe, and why it takes so long to "dip the chip."

[0]: http://www.npr.org/sections/money/2016/04/13/474135422/episo...

cocoa19 22 hours ago 2 replies      
This is partly perception.

With a magnetic card, after you slide your card, you can put your card immediately in your wallet, while the Point-Of-Sale solution authorizes with the electronic payment host in the background.

With a chip card (EMV card), the EMV spec required the Point-Of-Sale solution to write an authorization number to the chip card. This means you need to leave your card inserted in the PIN pad until the payment host authorizes. Authorization usually takes 2-3 seconds.

To improve this perception, the industry came up with Quick Chip, which Point-Of-Sale software companies started to work on recently. With Quick Chip, the POS software doesn't need to write the payment host authorization number to your card chip anymore. You insert your card, account number is read, you take your card from the PIN pad immediately without waiting for payment host authorization.

-Software engineer working at a Point-Of-Sale software company.

db48x 22 hours ago 2 replies      
Interesting fact: the best card terminals, if they are connected to a phone line rather than the merchant's broadband internet connection, use a 1200-baud modem. You would think that this would be slower, but the amount of data to transfer is relatively small. This means that the transaction time is dominated by time it takes to dial the modem and establish a connection rather than the time it takes to send the data. A 1200 baud modem takes much less time to negotiate a connection than a 56k modem, because it doesn't have to check the quality of the line as thoroughly. Reliability is better on noisy phone lines as well, and I'm sure they're cheaper. It's a win all around, but it's not something they mention on the spec sheet because it looks terrible.

Of course that has nothing to do with the chip-based authentication.

ca12et 1 day ago 7 replies      
Additional question: why is it faster in other countries? The first time I used a chip card in the US I was astounded by how long it took. I had been using chip (and pin) cards in Canada for years and it was never as slow as it is in the states.
richardknop 1 day ago 2 replies      
In Europe processing cards with chip & PIN at POS is quite fast. It usually takes 2-3 seconds for me before "Approved" appears on the reader screen. This might have something to do with US retailers still running legacy POS terminals / tech.
sofaofthedamned 1 day ago 2 replies      
I was a user in the Mondex card trial in 1995. This was like modern chip cards, but a stored wallet instead of online auth to an account:


The banks outfitted buses, bars, pretty much everywhere with readers but even after inducements to use it such as half price beer(!) it still failed. Why? Because it was soooo slow. Waiting for ~45 seconds at the bar for a payment to go through got old really fast. It barely lasted a year.

I'd have thought the friction of the payment would have been a lesson learned, but here we are 22 years later and it's still a pain.

asciimo 1 day ago 2 replies      
There's an express Target in the San Francisco Financial District that gets around this by assigning cashiers to two registers. They start the chip payment transaction on one register, and the slide over to the second register to start another customer's checkout. Then they slide back to hand the receipt to the first customer, etc. Absurd but effective.
vasusen 1 day ago 1 reply      
Here's a good blog post from a WePay engineer that explains some of the slowness - https://wecode.wepay.com/posts/supporting-chip-cards-at-wepa...
phlo 1 day ago 1 reply      
As has already been pointed out, EMV transaction flows go through many steps. From what I understand, the protocol was designed with a focus on flexibility, and little attention was paid to low latency.

Until some years ago, most terminals would mirror that. Most prominently, they used to have separate "enter pin" and "verify transaction amount" steps, and included longer delays for displayed status codes. Recent devices have started combining these steps ("Amount: xy. Enter PIN to confirm") and status messages.

Newer use-cases like the contactless qVDSC application have been tuned for better performance, limiting the amount of communication between reader and card.

For more details, have a look at this guide from VISA: https://www.visa.com/chip/merchants/grow-your-business/payme...

Tepix 1 day ago 4 replies      
Here is Germany it usually takes a few seconds (less than 5 I'd say) - I noticed however that paying at Aldi Nord is very fast. They really do tweak the cash register speeds at Aldi...
Taylor_OD 20 hours ago 3 replies      
My question is why chip readers flash like 6 or 7 screens that all say DO NOT REMOVE CARD in one way or another before giving you a noise that could be described as, "transaction failed" before finally being successful. I wouldn't mind waiting the extra couple seconds if the process was a little more customer friendly.
bericjones 1 day ago 5 replies      
Because with the swipe readers there is only one call to the payment processor.

However, with chip transactions there are multiple calls for different payment processing flows. For example, a transaction could require 5 round trip request responses from the chip to the payment process meaning 5x the time required.

arethuza 1 day ago 2 replies      
Here in the UK I'm generally amazed at how fast they are - slowest part is typing my PIN in if that is required (some places still require it or if the transaction size is over the limit for contact-less).
exabrial 1 day ago 6 replies      
And why on earth do you have to SIGN still? Seriously. I draw a picture of Shammoo most of the time, to the delight of many cashiers
exelius 18 hours ago 1 reply      
In many cases (RiteAid pharmacy terminals are the absolute worst about this, but far from the only offender) it's just crappy UX design.

I have an American Express card and a RiteAid rewards card. Here's my checkout flow at the pharmacy:

1. Punch in phone number for rewards card

2. Get prompted to use my "Plenti" points; which require PIN entry

3. Swipe/insert card (most RiteAid terminals used to work with Apple Pay, but had it disabled)

4. Get prompted to use my American Express points. Say no.

5. Enter relevant pharmacy details (DOB, verify pharmacist reviewed prescriptions for you)

6. Remove chip card

7. Sign paper receipt

This UX flow is simply too complicated for a checkout process. It's got way too much friction, and they disable contactless payments to ensure you can't circumvent that.

Making these payments process more quickly is great; but Apple basically already solved that problem with Apple Pay. But it's not effective because it seems that some retailers want more friction in this process.

welanes 1 day ago 1 reply      
This guide from N26 bank is informative:


Each time you use your card for a payment (which is almost instant), you receive a realtime notification within 0.5 seconds.

_wmd 1 day ago 1 reply      
Note this isn't true in all countries. My UK cards within the UK all follow some apparently online process in any UK merchant, however during a stint in Finland a few years back, I didn't find a single example of a merchant where their reader didn't instantly approve my transaction as soon as I correctly entered my pin.

Never received a (note: I know, we can all make guesses) conclusive answer explaining the difference.

userbinator 1 day ago 1 reply      
Smart cards (ISO 7816), used for credit cards and SIMs, among other things, communicate through a relatively low-speed serial protocol. The secure microcontroller they contain is also quite slow, especially if you consider the cryptographic operations they're required to perform. I suspect part of it is due to power constraints, and also somewhat tamper resistance.
Humphrey 1 day ago 1 reply      
This post explains why I was so frustrated using my card in the USA the other month. I figured it was super-slow because I had an international card, and it was confused.

Back here in Australia, almost every retailer (including those on 3g eftpos machines) takes < 4s from when i tap my card, to when I can start walking away. So much quicker than cash :-)

leejo 1 day ago 1 reply      
I suspect it's because a lot of merchants are using terminals that are connecting over PSTN, or they don't hold a connection open between transactions so they have to do the connection dance for every transaction. Or they have connections that are just plain slow.

From my time writing backend banking integrations for a PSP, going on 5 years ago now, the time to authorise a card transaction (that's IP to BT gateway to X.25 network to acquiring bank to issuing bank and back again) would take anything between 0.2 and 1.0 seconds. So I don't believe it's actually down to any complexity in the authorisation steps if the transactions are done online.

the_mitsuhiko 1 day ago 1 reply      
I can't talk about the US but over here (Austria) the slow chip readers typically are GRPS based and connect for every single transaction. There is one nearby in a lunch place where I really consider telling them how to hook it up with their wifi :)
rawland 1 day ago 0 replies      
It depends on the card you use. The transaction suffers under several communication latencies and most importantly fraud checking takes up a significant amount of time. A lot is implemented utilizing legacy technologies (I implemented a system once), as the initial systems were setup in these and the banking/payment sector moves quite slowly. Anybody remembers the Y2K problem [0] ? ;-).

[0]: https://en.wikipedia.org/wiki/Year_2000_problem

cdibona 1 day ago 0 replies      
Do you mean the actual chip back and fourth? The inherent problem is that the 7816-d standard is a mess. It requires extremely small data exchanges on the order of seconds to get a cert out of the card.

This has been a mess since the mid 90s, when I first worked on these things.

Here a cruddy not at all usefule link to the standard:


YeGoblynQueenne 1 day ago 3 replies      
Edit: this is not entirely correct; transactions may go online or stay offline, depending on amount and connection speed. See comments below.

It might depend on where you are. Where I am, in the UK, chip card transactions are quite fast. Fast enough to use contactless (tap and go a.k.a. "pay by bonk") where you literally just tap your card on the pinpad and go on your merry way [1].

The difference is that in the UK, transactions are not immediately sent online. I repeat: they're not immediately sent online. So you don't have to wait for the merchant to contact the acquirer, for the acquirer to respond and so on and so forth.

Instead what happens is that you dip, or swipe, or tap your card; the pinpad and the card figure it out between themselves whether you are the rightful owner of the card; the pinpad makes a record of the transaction; and you're told the transaction is "approved", then pick up your goods and go home. Later in the day, the merchant (i.e. an automated process at the store) sends an overnight "batch" of transactions to the acquirer, (i.e. the bank or credit network etc) and the acquirer either transfers the funds directly to the merchant, or blocks out the funds so you can't use them again and they can be transferred to the merchant later.

That's the EMV standard in a nutshell and entirely from memory, with a distance of a good few years from the time I worked for an EMV vendor (we sold a bit of EMV software that went on the Point-Of-Sale machine and handled all of the above). I might be misremembering a few things but I believe the above is mostly accurate.

tl;dr: having to go online for each and every transaction takes forever.


[1] Or of course sometimes do a double take, realise the transaction hasn't gone through, tap again, eyball the pinpad, then possibly insert or swipe etc. Sometimes it doesn't work.

jaclaz 1 day ago 0 replies      
It depends not only on the POS itself (old models vs. new ones) but on the kind of connection.

Here in Italy, besides "portable" POS that have a SIM card and go through GSM/GPRS (and are "good speed, but not that much fast") now also 3g/4g, the "corded version" can be:

1) Dial in (analogic)

2) Dial in (ISDN)

3) IP connected

The difference between #2 and #1 is like 4/5 times faster ISDN vs. analogic, and the IP (provided that there are no network issues) is instantaneous.

I would say:

1) 5-20 seconds

2) 1-5 seconds (and GPRS is roughly the same, 3g/4g is on the lower side)

3) 0-1 seconds (really, the sheer moment you press the green button, the receipt starts being printed)

toast42 1 day ago 0 replies      
Planet Money did a story on this last year.


astrostl 13 hours ago 0 replies      
My hot take on them:

- my wait is annoying, population person-hour waits are breathtaking to consider

- all of my breaches are internet-based anyway, so I don't see how it helps much

If all my CC transactions had an optional, on-the-spot second factor, now we're talking.

zeep 17 hours ago 0 replies      
I don't know why but there is a convenience store around here that is faster than everybody else... I need to ask them what their trick is. I think that it is as fast as magnetic strip readers (not as fast as McDonald's strip reader, but as fast as most).
twothamendment 19 hours ago 0 replies      
Just two days ago I wondered how Costco was so blazing fast. I have the same hardware on my desk for development, but whatever they are doing is very different than what our partner is doing. I was only guessing - but they only have one bank to deal with?
FrostAlot 19 hours ago 0 replies      
Came across this article which talks about what goes on in the background: https://tech.affirm.com/deep-dive-payments-60f5d17f6c71
IgorPartola 19 hours ago 0 replies      
And how come Apple Pay is so much faster than the chips + signature or chip + pin method?
andy_ppp 1 day ago 0 replies      
I mean worldwide Monzo (UK challenger bank) get's a buzz in my pocket from their app in < 5 seconds to say accepted/declined.
sundvor 1 day ago 0 replies      
Using Samsung Pay which uses NFC on my S8 / Gear S3 here in Australia and it's pretty much instant. And I get a digital receipt on my device straight away, which is awesome. Protected by fingerprint, or code, so feels more secure than the Mastercard plastic with embedded NFC pay wave.

Tap based pay has become ubiquitous in Australia, and I love it.

Beltiras 1 day ago 1 reply      
It seems to differ between implementation. In Iceland the readers have usually been superfast. We just had a Costco open and the readers there are superslow. Goes through multiple handshakes and notifies you of the process. They might be hooked up to a different payment processor than the local ones, hence higher latency.
callumjones 1 day ago 0 replies      
I believe Index was working on speeding up EMV transactions: http://www.index.com/payments-and-security/emv/

I thought it now depends on the firmware in the card readers, which it seems companies like Index control.

pbreit 1 day ago 1 reply      
Previously the mag-stripe conducted your card number to the merchant and they could charge essentially whatever they wanted (but there were various reasons they would likely charge the amount you owed). With chip, they have to compute the final amount while your card is inserted and cannot deviate.
jimjimjim 1 day ago 0 replies      
The workflow can be quite quite complicated.

card<->reader<->pc/terminal<->transport (ip/phone line/gprs)<->financial switch<->financial institution.

Add to that emv, tripledes etc and it all adds up.

randomfool 1 day ago 2 replies      
FWIW, Square's chip reader seems to be much faster than many others.
cozzyd 1 day ago 0 replies      
All I can say is it was very slow at the McMurdo gift shop
tomerbd 1 day ago 1 reply      
could it be on purpose? to have it more secure? like, wait before you can retry?
jimjimjim 1 day ago 1 reply      
also,other countries have completely switched over to chip/pin for security reasons with little or no problems but due to not wanting to confuse US tourists the terminal software must allow pin-bypass so they can still sign instead of using a pin.


cmurf 18 hours ago 0 replies      
The time varies widely. The remove card notice comes as fast as 3 seconds, I find 6 seconds more typical, and up to 15 seconds for the local grocery, and nearly 30 seconds for small pizza, sandwich, liquor stores.

There is no possible way it was taking this long for swipe authorizations; or even NFC authorizations which seemed faster than swipe but were probably the same, but more secure.

I still think the U.S. did this exactly wrong. 1. we were late to the game; 2. had started adopting better NFC technology; 3. instead of building on that, regressed to an old slow contact chip-based system; 4. instead of moving directly to PIN entry, retained signing, hence chip & sign, rather than chip & PIN. It's idiotic.

And that's just the customer size idiocy. The merchant idiocy is even worse. They paid for this transition. Not the banks, the processors, or EMV who ensure they make money hand over fist no matter what. If a customer has a chip card, and your POS does not support chip reading, the liability for fraudulent transactions is shifted to the merchant.

dbg31415 1 day ago 0 replies      
So you think they are bad in the US? Live somewhere else for a while... you try the system in Australia and you'll REALLY think they are bad in the US. Ha. But yeah, compared to other places the US is lagging. By a fair bit.
Confusion 1 day ago 1 reply      
I have no idea what you consider slow, but the latest improvement here is contactless payments for anything under 25 EUR, which only requires holding the card close to the terminal for about a second. After which the payment is confirmed after another second.

Payments for which a PIN is needed are confirmed in the same amount of time and entering the PIN is the slowest part.

m3kw9 21 hours ago 0 replies      
Network latency
sds111 1 day ago 1 reply      
ronpeled 1 day ago 1 reply      
just another reason we'll move faster into blockchain and decentralized crypto currencies...
Figs 1 day ago 0 replies      
I don't know what the reason actually is, but I assumed it was slow by design to make it harder to compromise, similar to bcrypt.
Mandatum 1 day ago 1 reply      
Bad internet speeds, WiFi or business skimping on internet. It's never usually the terminal, it's the connection to their payment provider, or their payment provider reseller's connection to THEIR payment provider.

It's very common for bars and restaurants to have a dedicated line for the terminal, but usually they'll skimp on tech (have seen dial-up over POTS or in a fibre-capable premises). Also very common to use 3G or 2.5G.

It'd take a tech all of 5 minutes to diagnose and suggest a fix for 98% of these slow terminals. It's strange seeing businesses not look to fix these issues. If I was a payment provider I'd probably run diagnostics against my customers terminals every day and force poor performing customers to have someone come in and fix it.

Ask HN: How can I get better at bash?
259 points by cocolos  1 day ago   169 comments top 74
SEJeff 19 hours ago 6 replies      
As silly as it sounds, when I was a new Unix SysAdmin, I read the entirety of "man 1 bash", which includes all bash builtins. I found that it improved by bash-foo 100x simply by knowing about so many of the utilities. I also took some cliff notes for things that seemed generally useful.

I did it for an hour or so a night for a week or so.

That being said, a few of my personal favorites to memorize:

* Parameter expansion: https://www.gnu.org/software/bash/manual/html_node/Shell-Par...

* All of test(1) as you can use them in any if statement (/usr/bin/[ is a real command!): https://linux.die.net/man/1/test

* Knowing most of the bash internal variables: http://tldp.org/LDP/abs/html/internalvariables.html

* Keyboard shortcuts and how they are useful. A few example: CTRL-l (no need to ever use /usr/bin/clear), CTRL-k, CTRL-u, CTRL-e, CTRL-a, CTRL-w, CTRL-arrow left, CTRL-arrow right, CTRL-r (history reverse search with find as you type autocomplete)

The best way you can learn the shell is by using Linux as your primary desktop for at least a few months. You'll get very proficient very quickly by doing that.

seorphates 20 hours ago 3 replies      
Most of the responses here so far that do not include some sort of a guide are not the responses you're looking for (imho).

Mind your pipes and quotes. Guard your variables with braces. Do not export everything, test for and (try to) handle return codes and conditions and keep it simple (emphasis simple) but most of all just write it.

BASH (or Bourne) is ubiquitous when dealing with systems (vs programs). You don't need to be on the fashionable lang of the day by any measure. BASH, for most cases, will always be there, always ready and, in most cases, is the default human interface for deployed systems. As scripting languages go you don't need "better", you need dependability, zero dependencies with no requirement for modules or any other whizbangwoohoo plug-in. Language Fashionistas and personal preferences aside at least some level of fluency with BASH should be mandatory for anyone interfacing with a system.

koala_man 18 hours ago 2 replies      
If you're not already familiar with it, I would suggest learning about the basic Unix process model -- fork, execve, wait, open, pipe, dup2 and friends.

Bash is essentially a DSL for these. A lot of the weirdness you see in the language is due to these abstractions leaking through. For example:

* Quoting is building execve's argv parameter. It's hard to quote correctly if you don't know what exactly you're working towards.

* Redirections are opening and copying file descriptors. It explains their scope, order and nesting behavior.

* Variables are modifying and passing the environment, and their weird scope is due to forks imposed by the process model.

Once you know how you can do whatever you want in C through the basic syscalls, Bash is an extremely efficient and far less surprising shortcut to do it.

soheilpro 19 hours ago 1 reply      
I have written a simple tool called mann (https://github.com/soheilpro/mann) to help me remember little things that I learn when working in Bash/Zsh.

Basically, every time I learn something useful about a command, I add it to its mann page and then whenever I need it in the future, I simply run 'mann <command>' to find it.

Here's the current output of my 'mann sed', for example:

 # Add char to beginning of each line sed 's/^/#/' # Replace with newline sed 's/<oldvalue>/\'$'\n''/g' # Replace newline sed -e ':a' -e 'N' -e '$!ba' -e 's/\n/<newvalue>/g' # Plus sign sed -E 's/foo+/bar' # Digit sed -E 's/[[:digit:]]/bar' # Inplace sed -i'.bak' -e <pattern> <file>

aMayn 22 hours ago 1 reply      
Read Greg's wiki - BashGuide:http://mywiki.wooledge.org/BashGuide
nunull 1 day ago 2 replies      
Not the first thing to look for, but I've found ShellCheck[1] to be pretty helpful when it comes to correcting typical mistakes.

[1]: https://github.com/koalaman/shellcheck

bhaak 1 day ago 8 replies      
How about you don't? Bash as scripting language is rather mediocre.

Anything that is not simple in bash gets hard to read and debug and probably is wrong on some subtle levels.

I have a rule of thumb that any shell script that grows beyond a screenful of lines gets redone in a proper scripting language.

agentgt 18 hours ago 0 replies      
Besides the obvious answers of just reading the manual, looking up howtos, and stackoverflow I can recommend some habits that might increase your uptake of bash.

1. If you are not running a unix as your default OS switch to one (ie Linux or Mac).

2. Create a bin (~/bin) directory in your home directory of all your shells scripts and source control it. Any script you ever write put in that directory. Even if its not bash (ie python, perl). I find that it is critical to look at how you did things previously to help you learn as well as it saves time.

3. Any command that is complicated one liner that you create or see on the internet... create script and put in the bin directory mentioned above.

4. Optimize your personal bin directory and review frequently.

5. If you run Linux build your system from scratch (ie read Linux from scratch).

6. Bonus to the above: Automate the creation of your personal system through Packer and Bash!

7. Find where things are not automated.

8. Bash is more than just the shell. A knowledge of GNU coreutils as well as tmux/screen is worthwhile and highly recommended.

9. Learn the readline shortcuts. Particularly "ctrl-r".

fergie 22 hours ago 2 replies      
Train yourself to take the 20 minutes required to learn to "do it the right way" every time you need to. Its so easy not to bother because you are busy but in the long run you will save time.
felixschl 22 hours ago 1 reply      
Read the manual front to back and install shellcheck. Doing both things has paid off for me a thousand times over. The rest is practice. Complete the bash exercises on Hackerrank. Bash is fantastic in it's domain but it does require serious study in my experience
rajeshmr 1 day ago 1 reply      
Figure out a problem and try solving it in bash - bash for beginners guide on tldp site can get you started. You get better as you use it.


EDIT : Additional links -

Advanced - http://tldp.org/LDP/abs/html/

Bash programming - http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html

soveran 1 day ago 0 replies      
For scripting, I recommend the rc shell from plan9, which is the one I use for my shell scripts. It is only when I want to share a script with other people that I consider using /bin/sh, and even then more often than not I've gone for rc.

I invite you to read about it: http://doc.cat-v.org/plan_9/4th_edition/papers/rc.

I find the control structures simpler and more elegant, and overall its design feels more consistent.For example, consider an if statement in bash:

 if [ condition ]; then ... else ... fi
And now in rc:

 if (condition) { ... } else { ... }
Or a case statement in bash:

 case $1 in "bar") ... ;; "baz") ... ;; esac
And expressed in rc:

 switch ($1) { case "bar" ... case "baz" ... }
In the past, I've used it as my shell too, but now I use it only for scripting. I think you can install it in most platforms.

benjamincburns 1 day ago 0 replies      
I recommend starting w/ Gary Bernhardt's excellent "Tar Pipe" blog post.


From there, move on to using the shell as your IDE. How? First, understand the Unix philosophy. I think Ted Dzubia describes this pretty well in his Taco Bell Programming blog posting:


Great, so now you understand that there are a bunch of useful tools out there and you can string them together to do great things. Now you need to discover the tools themselves.

If you're a "read the dictionary" kind of person, go ahead and start off w/ the Gnu Coreutils documentation. https://www.gnu.org/doc/doc.html

However, if you're like me you'll learn fastest by watching other people work. In this case, I have to point back to Gary Bernhardt again. Specifically, his "Composing a Unix Command Line" screencast will open your eyes wide and very quickly introduce you to a range of incredibly useful coreutils programs in the context of solving a very specific problem. This content is $29/mo, but I'd argue it's money well spent. https://www.destroyallsoftware.com/screencasts/catalog/compo...

matttproud 52 minutes ago 0 replies      
$ help fc

Using ${EDITOR} to build command lines is awesome. 'nuf said.

brianon99 1 day ago 1 reply      
Flame war between bash/fish/zsh/powershell is almost meaningless to beginners, because the basic skills are common to all shells. (That said, you will love zsh once you use it)

I learned to use shell, about 7 years ago, by reading O'Reilly "Classic Shell Scripting". It is well written, and teach you something that you can hardly learn from google. But don't try to remember everything, especially those advanced string manipulation syntax, because one would usually use a scripting language such as ruby for advanced job.

wingerlang 1 day ago 1 reply      
Helping you how? If you actually have a problem you are trying to solve, then do just that. My experience with command line came from solving problems I had. Today I do a lot in the command line and I am learning new things all the time. However if I just wanted to get "better" at it, then I don't even know where to start because there is no clear goal.
fiatjaf 1 day ago 0 replies      
I wanted to get better at bash too, but instead I ended up getting everything[1] done at fish, which is cool, much better as a language, but no environment has fish pre-installed nowadays.

[1]: https://github.com/fiatjaf/react-site

antirez 1 day ago 0 replies      
The Tcl programming language is what shell scripting should be, basically. It is not just a language with all the features you need, it has explicit Unix shell alike scripting capabilities and strong DSL abilities. An example two-liner:

 set files [glob /etc/*.conf] foreach f $files {file lstat $f file_info; puts "$f: $file_info(size)"} /etc/asl.conf: 1051 /etc/autofs.conf: 1935 /etc/dnsextd.conf: 2378 ... and so forth ...
Also there is an `exec` command that supports pipes, redirections, and so forth:

 set result [exec cat /etc/passwd | grep Directory]
The pipe has no special meaning in Tcl, but because of its DSL capabilities you can do things like that. Exec is a DSL basically.

brad0 21 hours ago 2 replies      
Don't listen to the guys who are saying not to learn bash. In the right circumstance bash is much better than any verbose python script.

I'd say learn the following topics:

pipe grep sed awk find

Once you feel comfortable using and combining these tools you should be able to find out the rest by yourself.

moondev 1 day ago 1 reply      
I used to lean on python for much of my scripting needs, mainly because the more advanced bash syntax was pretty daunting. Getting better at bash has a trickle-down effect, especially in this container age. ENV var scoping + loops and various var expansion methods really made it click for me. Shelling out to various tasks (and grabbing the results) is effortless via bash scripts. With bash on windows now it's pretty much ubiquitous. My advice is to consider why the task at hand can't be done in bash, because often times it can, with much more portability.
3pt14159 1 day ago 1 reply      
I'm ok at bash, but I do not default to complicated bash scripts for my needs. I make little reusable tools. For example I have a tool aliased that makes it easy to apply quick ruby code. For example

echo "345.44

544.50" | rg "#{l}: #{(l.to_f * 3).to_i}"

Produces the following output:

345.44: 1036

544.50: 1633

Based on this code:


I find it's much faster to be productive like this than it is to try to do the same with ruby -e because I really only want to manipulate single incoming lines. I don't want to have to write the looping code or the code that sets variables or what have you.

Also, sometimes it gets confusing what tools are just bash functions or alias and which are scripts, so if you ever forget what a tools definition is just type:

type toolname

As for actually answering your question, look at your friend's dotfiles on their github account to learn which tools and tricks they use and when you don't know how something works ask them questions. People will usually point you in the right direction.

alexpetralia 17 hours ago 0 replies      
I learned bash primarily for practical reasons (ie. navigating in Linux, parsing files, searching for text) and nothing more. Definitely not from a DevOps or SysAdmin point of view as I'm sure fits the background of many commenters in this thread.

If your use case is pragmatic in nature, I would recommend my post on the topic: http://alexpetralia.com/posts/2017/6/26/learning-linux-bash-...

rogeruiz 14 hours ago 0 replies      
If you're interested in getting better at the terminal, I recommend you learn how to customize it. it'll really help you learn by doing and figuring out what it is you want to learn how to do first.

It's what worked for me, though. There are also some workflow ideas that have really helped a lot. Autocompletion and being about to look through your history for commands is super helpful too.

```cat $HOME/.bash_history | grep -E 'command|argument'```


I just finished a guid on my site about my terminal setup. I hope to read yours once you've customized the pixels out of it.

Aside from things to get your interested in the internals of your shell via bash scripting, you should also consider writing more shell scripts specifically around your workflows. I keep mine in a .files repo on GitHub. Take a look at the install script. It took me over a year to get really fluent in bash scripting enough to make it possible to get better and better at it.

Good luck on your journey!

jaymzcampbell 1 day ago 0 replies      
One thing I would say is first check that you are running the latest version! There has been a lot of development to bash over the years. If you feel like customizing things a lot I'd check out zsh and http://ohmyz.sh/. It has a lot compatible with bash with (IMO) some saner scripting support.

Aliases are something I use a lot - it's very basic but just having "big long command with options" aliases to something easy to remember makes it much more likely I will not make mistakes, can repeat it easily in loops.

Another thing that complements using bash effectively are using other applications config files. As soon as I have a new host to interact with I add it to my ssh.config file - then any scripting I need to do I don't need to deal with any special files. Other files like ~/.netrc or ~/.pgpass make my shell sessions that much more productive. For some reason many people don't bother ever updating these and rely on the shell history to do anything more than once.

CommandlineFu (http://www.commandlinefu.com/commands/browse) has some nice one liners and there's often some gems on ServerFault (https://serverfault.com/questions/tagged/bash) - just browsing those for topics matching your workflow can be very fruitful.

I've found the more I do anything at the shell of any complexity I end up writing a small python command line client to do any heavy lifting. Argparse (https://docs.python.org/3/library/argparse.html) makes this trivially easy and then I can use regular shell "glue" to combine a few commands together.

andai 21 hours ago 0 replies      
I was about to post:

> Add, "#! /usr/bin/python" to the top of your scripts, it will make your life easier.

However, after reading the rest of the thread, it seems Python and similar langs are not actually great for the kind of things people use Bash for, and Perl is the way to go!

Great, another language to learn...

edit, re: python:

fiatjaf suggested xon.sh:

"shell language and command prompt [..] based on Python, with additional syntax added that makes calling subprocess commands, manipulating the environment, and dealing with the file system easy.


majewsky 1 day ago 2 replies      
In addition to what others said, I can recommend just reading through the manpage once (probably in multiple sittings). Even if you don't remember the exact syntax, you will have an idea what bash can do, and know enough of the jargon to find it again in the manpage when you need it. For example, when I need to replace a substring, I used to do

 FOO="Hello World" ... BAR="$(echo "$FOO" | sed "s/World/Hacker News/")"
until I remembered that bash can do string replacement by itself. A quick search for "pattern" and "substitute" in the manpage turned up the right syntax,

 BAR="${FOO/World/Hacker News}"

vram22 12 hours ago 0 replies      
This script can be useful to save man pages (not just the bash man page, any man page) as text - removing all the control characters which are used for printing with formatting (bold, etc.):

m, a Unix shell utility to save cleaned-up man pages as text:


I've been using it from earlier Unix versions, where these formatted man pages (nroff/troff-formatted) were more of an issue. Also works if you want to open the text form of the man page in vi or vim, for reading, searching, etc.

yamaneko 21 hours ago 0 replies      
Take a look at this tutorial [1]. It will teach you some shortcuts, a bit of shell expansion, and help you set sane defaults in bash. One that I'm particular fond is to set

 "\e[A": history-search-backward "\e[B": history-search-forward 
in your ~/.inputrc. So, if you are typing a command which begins with "git", it will only search in history for commands that start with git (instead of returning all commands that may include the string 'git' like Ctrl+r). Having trouble trying to remember that option you passed to `git log`? Just type in `git log` and press the up arrow to find your last usages.

I think it is also helpful to learn Emacs or vim keybindings. I use Emacs keybindings in bash a lot (enabled by default). I have summarized the ones that I used more often in a previous comment [2].

[1]: https://www.ukuug.org/events/linux2003/papers/bash_tips/

[2]: https://news.ycombinator.com/item?id=13404262

lcrisci 18 hours ago 1 reply      
Bookmark the following url and come back to it as often as you need:


Also this one to learn some cool tricks:


madhadron 20 hours ago 2 replies      
First, if your bash script grows beyond about ten lines, it's time to consider rewriting it in a cleaner language. Python's a common one. I used to use Haskell for that kind of scripting as well, which was astonishingly good at it.

Here's my study suggestion:

0. Learn to use variable interpolation and backticks.

1. if blocks and the [ built-in function. Go read about the grammar and look at the flags that [ takes. Memorize the most common couple (file exists, is a directory), and know how to look up the others when needed. Find examples of variable interpolation tricks needed to make this function.

2. for and while blocks. Learn the grammer. for is mostly useful with `seq ...` or a file glob.

3. Learn some of the options to make bash fail early and loudly like pipefail.

4. Most of the power of bash is in the programs you call, and they aren't always the same ones you use interactively. Other folks have mentioned some of these. find, xargs, wait...

chingjun 1 day ago 0 replies      
Just like how you learn any other programming language: use it to solve your problems.

Anyway, here's a few steps that I would recommend:

1. Go through http://tldp.org/LDP/abs/html/ and http://www.tldp.org/LDP/Bash-Beginners-Guide/html/ , or at least go through the table of contents so that you have a feeling of what bash is capable of. A few important things are: if, while, for, switch, functions, string manipulation, pipe, subshell, command substitution

2. Understand the execution model. Variables in subshell cannot be accessed from the parent shell, this is a common mistake

3. Learn to avoid common pitfalls. I always recommend my colleagues to always quote the variables in double quote, always use "$@" instead of "$*", always use double square bracket instead of single square bracket for testing, use echo to pass return value from functions instead of assigning to global variable

4. Learn awk, sed, grep. Bash can be quite limiting when it comes to data processing and these tools can be quite powerful. You can use bash to glue different filters together at a higher level.

Bash is a fantastic language and there are quite a lot of things that can be much more quickly in bash than in other "proper" languages. A lot of people says that it's too difficult to maintain a shell script beyond a "critical mass" but I believe that if you follow good practices and write modular codes, shell scripts can be very manageable.

sethrin 17 hours ago 0 replies      
I wrote a thing for this! People should read it! Focus is on usage, not scripting.

What Kai Thinks Every Developer Should Know About the Shell


kazinator 16 hours ago 0 replies      
Forget the Bash man page (just temporarily, that is) and read this:


The POSIX specification of the Shell Command Language.

Also, don't overlook that there is a GNU Info manual for Bash, not just the manual page:


tehwalrus 21 hours ago 1 reply      
Set your default shell to bash, and every time something annoys you, look up how to fix it (stack overflow is basically complete at this point, if you know what to search for) and put it in your dotfiles.

I used to rely on fish, but after a couple of bugs (either in fish or my fingers, not sure) I switched back to bash at my job (on a Linux desktop).

After a few months I had built up a good set of aliases and functions (my most used function is rgrep, see below) and was confidently ^R reverse searching and so on. These things are great because as you jump systems (e.g. to macOS) they continue to work.

TLDR: Practise practise practise!

 # the rgrep function # recursive text file search from the current directory. function rgrep { if [ -z "$1" ]; then echo "please supply a search string." return 1 fi grep -rn $1 . }

base698 21 hours ago 0 replies      
Learn to move around efficiently: End of Line, Beginning of Line, Move by word so you aren't just abusing your keyboard.

Knowing how to reverse search (Ctrl-R) and run last command !vim or !curl to rerun last instance of vim or curl command with args so you don't have to search every time.

gexla 1 day ago 0 replies      
As an alternative, you could also look into PowerShell. it's open source and cross platform. I use it because it's really powerful on Windows.

In any programming language, you learn by practice. Given that your shell does so much, that's the easiest place to find tasks to practice on. I have been leaning on my shell scripts to do a lot of automation. The list is long and I just pick something from that list to work on for most days.

If you don't have system automation that you want to work on, then you probably have a lot of personal data that you can work with. I have scripts setup to manipulate data exports from the various services I consume and then remix that data in my own database. My shell scripts can get the data, operate on it and then shove it into a DB. Then I'll use something else to display that data.

tinus_hn 19 hours ago 0 replies      
In my opinion the most important thing to know about shell scripting is when not to use it. The shell is very powerful but also clumsy for tasks that exceed the basics.
TheGrassyKnoll 16 hours ago 0 replies      
Its considered kind of a security risk, but I like to save ALL of my commands: (put this in .bashrc)

 export PROMPT_COMMAND='echo "$(history 1)" >> $HOME/.basheternalhistory' 
Now you can search it later for arcane commands you've forgotten how to use.

raboukhalil 20 hours ago 0 replies      
A while back, I wrote a quick Bash guide called "Adventures in Data Science with Bash" (https://gumroad.com/l/datascience).

It covers basic Bash commands (head, less, grep, cut, sort, uniq, curl, awk, join), but also pipes, for loops, variables, arrays, and command substitution.

chasil 18 hours ago 0 replies      
GNU BASH is a branch of the Bourne-shell family.

Korn shell is a much more complete and capable variant of Bourne. BASH partially implemented many Korn features, but not everything.

The standard reference is the Korn and Bolsky book (2nd edition). I'm not aware of any free/online resources that are profoundly good.

Korn is the very best for scripting.

onion2k 1 day ago 0 replies      
Depending on your level, there's https://terminal.training/ (by the same chap who runs jsbin).
marypublic 18 hours ago 0 replies      
I found this useful for getting deeper with using bash: "Pro Bash Programming : Scripting the GNU/Linux Shell, Second Edition." It is kind of a brain dump type of book but it called out a bunch of little things I had missed in looking at other information sources.
delinka 19 hours ago 0 replies      
I recommend also learning a different shell's quirks and syntax. I started using fish a couple years ago, but I still have to write any 'production' scripts in bash. Learning fish cleared up lots of misunderstandings I had with bash and has made my bash much improved.
elchief 17 hours ago 0 replies      
If you like learning by doing, play along with this:


(text analysis in bash)

runjake 13 hours ago 0 replies      
Pick up a copy of UNIX Shell Programming by Stephen Kochan. Very approachable and lots of good practical examples. Augment it with 'man bash' and Googling.
tejasmanohar 17 hours ago 0 replies      
1) Force yourself to do as much as possible from command-line2) When you Google for help and find a solution, keep Googling until you understand what you're doing

That worked for me. You could also read the man pages, but step #1 is crucial regardless.

snarkyturtle 17 hours ago 0 replies      
Check out ShellJS if you want to build scripts. For me at least it made things a lot less archaic: https://github.com/shelljs/shelljs
lottin 1 day ago 0 replies      
The shell language itself is pretty simple and featureless. It relies on the system utilities for most things so once you know the basics of how the shell works you should probably focus on learning those rather than bash. Also I find that when it comes to interactive use having good key bindings and some nice aliases makes a lot of difference.
INTPenis 1 day ago 0 replies      
Use it daily. Use it instead of your graphical file explorer options.

Everything will take longer but imho it's the only way to get better.

shmerl 19 hours ago 0 replies      
Bash has tons of quirks, but as others said, reading man bash helps quite a bit.

There is also this great resource: http://wiki.bash-hackers.org

itomato 18 hours ago 0 replies      
Understand and utilize functions in your scripts.

If there is one thing I wish I had understood sooner, that would be it.

Top to bottom programmatic flow is one thing. Conditional execution and branching are on another level.

nikivi 1 day ago 0 replies      
I made a search engine to show the best learning paths for learning any topics.

Here is the path for learning bash : https://learn-anything.xyz/operating-systems/unix/shells/bas...

jdorfman 22 hours ago 0 replies      
Anytime I'm stuck with a script I usually end up on https://bash.cyberciti.biz

Vivek (founder) has been writing these tutorials for 17+ years, he knows his stuff.

olalonde 19 hours ago 0 replies      
I really enjoyed http://guide.bash.academy/ but it's not completed unfortunately.
joobus 22 hours ago 0 replies      
One of my most common uses for shell scripts is writing completion functions for my aliases and custom commands. Hitting tab for a list of all options for a command is a huge timesaver.
ilaksh 16 hours ago 0 replies      
If its really about helping you with the command line then use fish.

If you need to automate something use your favorite programming language.

robschia 1 day ago 0 replies      
This covers 90% of bash:Learn Enough Command Line to Be Dangeroushttps://www.learnenough.com/command-line-tutorial
taylodl 1 day ago 0 replies      
I have a couple of resources for you:



gumby 10 hours ago 0 replies      
among other things make sure you know how to use ! and ^ -- they will save you tons of time compared to searching or editing
molsson 1 day ago 0 replies      
Help develop and test this:https://github.com/exercism/bash
psychometry 20 hours ago 0 replies      
Give up? Seriously.

I used to force myself to do all of my ad-hoc scripting in bash, but I got sick of the clunky way of parsing arguments, dealing with arrays, looping over data objects, etc.

I got pretty good at it, but at some point I decided just to stick to a language I knew well (R) to string together various pipelines and construct commands. Any high-level language would work, though. I'm much more productive now.

ben_jones 21 hours ago 0 replies      
Write and distribute tutorials targeting a wide audience with varied amounts of experience.
burnbabyburn 1 day ago 0 replies      
learn about how return from functions and echo behaves, this often bites many.

learn from this wiki that has many tutorials and good examples http://wiki.bash-hackers.org/bash4

znpy 19 hours ago 0 replies      
Can't wait to see this thread commented on n-gate.
bouh 1 day ago 0 replies      
hackerrank has various challenges in bash : https://www.hackerrank.com/domains/shell/bash
saurik 1 day ago 0 replies      
Have you read the manual?
peterwwillis 20 hours ago 1 reply      
From a 14+ year Linux/Unix admin:

Get a very brief reference book of every common UNIX command. Read all the commands, what they do, what options they take. Start using them.

Shells are most useful when they are used to tie together other programs. In order to do this, you have to know what all the command-line tools you have at your disposal are. Learn the tools, then start writing examples using them. Keep the examples and the docs somewhere to reference them later.

For quick reference, the command 'whatis' will give a blurb from the top of the command's man page. `whatis ls' "ls (1) - list directory contents". View many at once with "(cd /usr/bin; whatis * | grep -v noth)". Many often-used commands come in "util-linux" and "coreutils" packages. Read man pages completely when convenient.

It may also help to have a VM or desktop which has no GUI, where you will be forced to use the command-line. When I was starting out I used a desktop with no X server for months. You can get a lot more done than you think (and 'links -g' provides a graphical browser if you need images)

To learn more about Bash itself, you can look for server installation software packages made with Bash, or in the "init" tools distributed with big distros like RedHat, SuSE, etc before they used systemd. But it's better to get used to more shell-agnostic scripting using UNIX commands than it is to use Shell-specific language/syntax.

jlebrech 21 hours ago 0 replies      
ctrl-r is my favourite.
Ologn 15 hours ago 0 replies      
As you're focused on the command line, I won't mention things I generally use in shell scripts like compound commands (if, for, while) or shell parameters. I will also skip things I don't often use.

First, there is moving around in bash - the arrow keys, or backspace/delete to remove a character, or ^A to go to line start, or ^R to search command history, or tab to complete a command. ^L clears the screen, although from habit I still type clear.

I use shell/bash builtins cd, and pwd often enough. Sometimes export, umask, exit, ulimit -a, echo.

I use shell variables like PS1, HOME, and PATH. I set them in $HOME/.bashrc, which sometimes references files like $HOME/.bash_aliases. I often set a larger than default history file size. I use ~ tilde expansion as an abbreviation for $HOME. For long commands I type regularly, I put an alias in the run control (or run control delegated) file.

I use job control commands like bg, fg, jobs and kill. You should know how bash job control complements and diverges from the system process commands. & starts a process as a background process, and preceding it from nohup tells it to ignore hangup signals.

You should know how single quotes work, and escape characters for them if they are needed.

Then there are pipes (| - "pipelines"), and redirecting of stdin, stdout, and stderr. I use this a lot. Also redirecting or appending output to a file (>, >>). I don't use tee often but sometimes do.

Then there are commands used with the shell a lot. Such as parallel, or xargs.

Also nice which modifies process scheduling.

Script, or typescript, keeps a log of your shell session.

Screen allows for multiple shell sessions. Useful on remote hosts especially (tmux is an alternative).

Then there are the standard file and directory commands I often use like pwd, cd, ls, mv, cp, df, chmod, du, file, find, locate, mkdir, touch, rm, which, and wc.

I manipulate these with commands like awk, sed, tr, grep, egrep, cat, head, tail, diff, and less.

I edit with vim or emacs -nw.

Command like htop, ps, w, uptime and kill let me deal with system processes.

Then there are just handy commands like bc or cal if I need to do some simple addition or see which day of the week the first of the month is.

Man shows you manual pages for various commands. "man command" will show the manual page. For a command like kill, the default will show the command kill - "man kill" which specifically is "man 1 kill". But "man 2 kill" would show the kill system call. You can see what these different manual sections are with "man man" - 1 is executable programs, 2 is system calls etc.

All of it is a process. I mentioned awk. It is one of the commands handy to use with the shell. I have seen entire programs written in awk. Some parts of awk I can use from memory, some I use occasionally and have to look up the flags to refresh my memory, some parts I have never used at all. As time goes on you pick up more and more as you need it.

yellowapple 19 hours ago 0 replies      
The best I can really recommend is practice. A lot of "bash" skill comes not from bash itself, but rather from the tools around it.

If you're not already comfortable with input/output redirection (including pipes, as well as reading from / writing to files via <file / >file, respectively), then that's where I'd start.

kingmanaz 20 hours ago 0 replies      
Some suggestions:

Direct your focus to plain Bourne sh as much as possible, moving on only after you understand what enhancements over vanilla sh Korn or Bourne-Again actually offer.

Pick up Manis, Schaffer, and Jorgensen's "UNIX Relational Database Management" and work through the examples to get a feel for the philosophy behind large, complex applications written in shell.

Join a Unix community (sdf.org) and try to do useful things with shell (e.g. cron-schedule stock quote e-mail notifications via shell scripts, etc).

boona 20 hours ago 0 replies      
I'm not sure if this answers your question since I'm not sure what the implications of your workflow are, but I got a huge jump in productivity with Oh My Zsh. It has a bunch of features like tab completing past commands, it includes various shortcuts, etc. It's also compatible with bash.
dredmorbius 1 day ago 0 replies      
1. Use it.

2. Conceive of use-cases you can't already solve, and see if you can find a way to do them using Bash.

3. Consider that perhaps Bash isn't the best tool for every job. (It most certainly isn't, though you can abuse it frightfully.)

4. Books. Jerry Peek's guides are getting rather dated, but they're still a good introduction.

5. Read the manpage. Frequently. Find some part of it that doesn't make sense, or that you haven't played with before, and play with it. Shell substitutions, readline editing, parameter substitution, shell functions, math, list expansions, loops, tests, are all high-payoff areas.

6. Take a hard look at zsh, which does a great deal Bash doesn't.

syngrog66 14 hours ago 0 replies      
man bash. read, digest, apply, repeat. you can also look at existing scripts, figure out what they do, why, make copy, alter, see the changes in behavior. there are also books on bash.

larger point: how do you learn more about X? or get better at doing X? figure that general pattern out and you can re-apply it for anything, not just bash.

Ask HN: What do you look for in a static web host?
4 points by 12s12m  2 hours ago   2 comments top
stevekemp 1 hour ago 1 reply      
Name-recognition: I'm sure there are a bunch of quality web-hosts, but if I've never heard of you, or you're new, I'm not going to use you. Hosting companies, especially small ones, routinely go out of business.

For hosting reliability and availability are the main requirements. If you're a company I've heard of I'll have an idea of how good you are. Most of the time people focus on price, via sites like "low-end-box" and the companies listed there are often just circling the drain before they go out of business.

In short: be sustainable, and demonstrate availability & reliability.

After all your competitors are things like Amazon's S3 (cheap, reliable), GitHub pages (free), and similar.

Ask HN: Do I need a bug bounty program? Feeling a bit threatened by HackerOne
11 points by scared_of_hacks  21 hours ago   10 comments top 5
martenmickos 19 hours ago 1 reply      
Thanks for raising this issue.

HackerOne will NEVER threaten you or do anything to reduce your security. You can safely ignore our sales emails if that's what you want to do. We are just trying to be helpful.

But we do have the absolutely best set of programs for companies of all stripes. To start with, you can open a vulnerability disclosure program that costs you nothing. It will allow hackers to submit vulnerability reports to you. We run numerous programs of this type for startups and other companies.

Our mission is to empower the world to build a safer internet. That's it.

MartenHackerOne CEO

ovi256 20 hours ago 1 reply      
If this isn't guerilla PR for HackerOne, I don't know what it is.

It's set up just the perfect way to make us answer "oh but that's just normal salesmanship and reasonable".

Well played if true.

Rannath 20 hours ago 0 replies      
How much does a bug fix save you? How much is that worth? Are you popular enough that people are constantly trying to break your security? Bounties are cost saving measures.
throwaway52123 20 hours ago 0 replies      
It's all marketing. I would ignore it and move on with your life.

Allowing and encouraging responsible disclosure is never a bad idea. That said, if you're a young startup, I would focus on practicing and promoting good security hygiene within your company. Secure coding best practices, locking down infrastructure, that kind of thing. I wouldn't overcomplicate it or stress too much unless your product needs special security attention (i.e. you are a bank or likely to be hacked by a nation state or something). If you're the only technical person and you're already doing this, it does not sound like you have much (anything?) to worry about outside of the norm.

I hope that can help you sleep better at night :-D

gt565k 21 hours ago 1 reply      
Jeez sending cold emails is mafia like?

Sounds like paranoia.

Ignore the emails and move on with your life.

Ask HN: How to quit a job
7 points by throwfounder  15 hours ago   10 comments top 5
owebmaster 12 hours ago 1 reply      
1. How should I quit my current job where they don't feel used?

You just quit. We live in a capitalist system, not a communist one. You are allowed to "desert" from your position anytime you want.

2. Should I jump into a startup so soon after my bad consulting company experience?


marcell 14 hours ago 1 reply      
Just tell them you are quitting and give two weeks notice. It is at will employment on both sides, this is perfectly normal.
gnicholas 9 hours ago 0 replies      
Have you considered consulting on the side while launching the startup? I know folks who have successfully done this.

The key is to set a very high rate, to ensure that (1) your time is not fully occupied with consulting, and (2) the time that you do spend consulting is very financially rewarding. And depending on the elasticity of demand for your services, you may find that you can make 70% of your full-time consulting wage, but work only 30% of the hours.

mattbgates 14 hours ago 0 replies      
Just be straightforward and let them know you have another opportunity elsewhere. They might offer you more or let you go. I had an experience, where I had feared letting the tyrant boss know I was putting in my 2 weeks, but I went ahead and just got through with it. Best decision of my life. You can read all about it here if you want: http://www.confessionsoftheprofessions.com/the-opportunity/
JSeymourATL 14 hours ago 1 reply      
> since I had a family to support...

Assuming you still need the income, keep hustling at both gigs Vaynerchuk style. Spend the next 12 months proving your model and building up cash reserves.

Ask HN: What are some good practices on remote work?
17 points by in9  22 hours ago   10 comments top 6
deepaksurti 4 hours ago 0 replies      
Hardware suggestion: actually true even if you work onsite as well.

Let each team member have a bootable backup drive, preferably it is backed up multiple times a day. You do not want a situation where someone is spending time configuring another machine when his actual machine crashed.

To use the bootable drive, though one needs another machine and giving a backup machine to each team member can get expensive quickly, but the backup machines can have enough configuration to keep moving. But I think it is worth the expense of a basic machine. Eg: I use MBA as a backup machine to my mac mini when working remote and Carbon Copy Cloner to create bootable drive. Become more risk averse and have a bootable drive in the cloud as well. YMMV.

12s12m 17 hours ago 0 replies      
One thing that has been extremely helpful for me is to work in Pomodoro sessions. I use a pomodoro session of 55 minute work + 5 minute breaks. And, I have a rule of not checking email, reddit, HN while I am in the middle of a pomodoro session. I also use a neat python package called pymodoro (https://github.com/dattanchu/pymodoro) to show me the current duration. This has single handedly removed distractions from my work.
tylermac1 19 hours ago 0 replies      
I've worked with both a partially remote team and now currently with an entirely remote company (~50 employees).

I find it best to assume that everyone is remote at all times. My experience with the partially remote team was that people in-office would talk face-to-face more often and then would not relay effectively to the rest of the team.

There's still the problem of phone calls having the same effect but we use Slack and Google Docs often enough that most of our conversations are there for everyone to see/search.

Be sure to ask the team what is working for them and if they have any preferences. I find it best for everyone to be up front about these kinds of initiatives. Something that's a minor annoyance can grow into a real problem down the road. Best to lay everything out early and discuss as a unit.

Best of luck! Working remotely is extremely liberating.

rwol 22 hours ago 2 replies      
I'd recommend Slack, JIRA, and daily stand-up calls. Slack is good for general news and messaging people on your team. Daily stand-ups and JIRA are nice for issue tracking, planning, and making sure everyone is on track.
venture_lol 18 hours ago 0 replies      
Staff your team with people who are articulate and resourceful. Then, relax :)
SirLJ 18 hours ago 1 reply      
I have been leading a remote team for past few years and the best tool for me is a long 2 hour call Wendsday afternoon, we start with status and project updates and after that we just chat about everything else including venting against the company, books, sporting events, the weather and I find this to be the best bonding tool for the team... good luck!
Ask HN: What does your Router Security Checklist look like?
23 points by jmbake  1 day ago   10 comments top 5
zxcmx 1 day ago 0 replies      
It's a good list. I just hate those things now.

I worked as a wireless router firmware developer for a while and as a result... I don't use them anymore. The whole industry is just producing unfixable tire-fires.

Different level of caring, but if security is important to you, put cable/dsl/fiber ntu in bridge mode.

Get a pcengines apu (or your favourite sbc), install your favourite os (ubuntu or debian for me). Don't bother with ui, just use a few nftables rules.

It actually worked out cheaper for me than the netgear thing shaped like a stealth fighter.

The other thing which really annoyed me was my ISP periodically updating settings on their stock router. Yeah, they can do that remotely if you use their unit and there's usually no good way to turn it off.

wmf 1 day ago 2 replies      
Don't change the password. Find a router that uses pairing instead of passwords.

Don't check for updates. Find a router that updates itself automatically.

It's a marathon, not a sprint. Find a company that writes their own firmware and uses the same firmware for multiple generations. This shows that they are willing and able to invest in security.

Or just check if the brand is Google or Apple.

Canada 1 day ago 0 replies      
Nothing. Why even bother? My devices connect to untrustworthy networks all the time anyway.

I just don't trust the local network in the first place.

LinuxBender 1 day ago 2 replies      

 - SELinux Enabled - Sysctl tuning applied - Inbound/Outbound/Forward iptables rules enabled - ipset iptables rules enabled - iptables intercept rules to route all ntp/dns over VPN to VPS nodes. - Unbound DNS overriding many spammy domains - tinc vpn enabled to multiple VPS nodes. -- Each VPS node load balancing to multiple datacenter open resolvers that are NOT OpenDNS or Google. - ip route blackhole about 20k bad networks from firehol on github - syslog to internal host - Surricata IDS logging to syslog - tc cbq traffic shaping enabled - haproxy L4 vips for sending select traffic to select squid proxies. - power conditionor / ups enabled, one for router, one for cable modem.
Those are the basic things. My router is always Linux running on commodity hardware with dual gig interfaces for clear physical demarcation.

zamalek 1 day ago 0 replies      
Checking that I can flash custom firmware comes before anything else.
Ask HN: Why does academia still publish in for-profit journals?
33 points by AlphaWeaver  1 day ago   19 comments top 13
detaro 1 day ago 1 reply      
Academics generally are rated by the prestige and number of their publications when it comes to who gets their contract extended or who gets tenure. Prestigious publications happen in prestigious journals (or often conferences in CS, but same principle), the prestigious journals almost all are for-profit (and of course that causes the ugly feedback loop that the best papers only are submitted to those journals, further establishing them as good journals).

In most fields, submitting to a "lower-quality" venue when you could get into a better one means unnecessarily risking damage to your career (or, in case of established, tenured professors, who don't have to care so much about their own ranking, damage to their co-authors'). Also, most universities have access to all important journals, so they don't feel the pain of closed access so much.

While they might like the idea of alternative venues, the universities incentivize them to optimize for "impact factor".

impendia 1 day ago 0 replies      
Signalling effects.

Imagine that you are one of five hundred postdocs applying for your dream professorship. Your papers are so highly technical that the hiring committee won't be able to judge them directly (certainly not before you make the short list).

The most important component of your job application is your recommendation letters. But also very important is your CV, and hiring departments will want to see where you have published. Journals like Inventiones Mathematicae, Journal for die reine und angewandte Mathematik, Publications mathmatiques de l'IHS, and so on have developed a reputation for publishing only outstanding papers, and so your CV will stand out if you have published them. Less so if you have published only in, say, Indagationes Mathematicae.

Same when you are applying for tenure, promotion, grants, etc. Basically any time you need to demonstrate to anyone outside your immediate specialty that you are doing top-notch work.

This could be done in other ways; indeed I would have better use for my brain cells than to keep track of a Byzantine hierarchy of journal quality -- but for now the system is quite entrenched.

tnecniv 1 day ago 0 replies      
The flip side of all the prestige incentives that everyone mentioned is that there's little downside. Either your institution will foot the bill for the cost of publication or it's built into grants. On the other end, the institutions researchers are affiliated with pay for access to many of the top journals and, even if you don't have direct access to the journal version of a paper, you can normally find it somewhere else, like the author's website.
jldugger 1 day ago 1 reply      
For better or worse, tenure evaluations are a crazy important part of academic life in the US. You have roughly five years to produce enough research of a high enough quality to earn the right to keep doing said research.

The three common metrics for evaluating are:

1. citations -- highly cited papers are evidence of contributing to academic society

2. impact factor -- papers published in highly selective journals that peer reviews submissions are considered better

3. money -- AFAIK nobody says this out loud, but if your department can't bring in revenue to support you and your researchers, your tenure case is on thin ice.

paulsutter 1 day ago 0 replies      
AI publishing is virtually all on Arxiv. Conferences replace the role of journals (for example getting a paper accepted at NIPS, ICLR, ICML, etc). And I find out about important papers on Arxiv Sanity or even Twitter.
nnn1234 1 day ago 1 reply      
Great point by detaro.Issue is convincing the ivy league or some league of universities to adopt open public standards. Better yet make a taxes being used unfairly argument to make a law that every instituion that takes public money has to open access their work.
JeSnuster 10 hours ago 0 replies      
They don't have the strength to revolt. These are the people who give away their creative output for pennies, suckered by the fake dream of recognition, when they could be capturing so much more of the value they create, if they weren't willing slaves to publishers, governments and nasty corporations that exploit their idealism to suck them dry, and instead acted entrepreneurially. Academia is the exploited worker class of the knowledge economy, and I'm a capitalist.
Amir6 21 hours ago 0 replies      
Probably one of the biggest scams of all time!

- You do a lot of work and put a lot of effort doing state of art and novel research (by mostly using tax payers money through research grants coming from government)

- You pay for publishing while giving up all your rights (including copyright) and violating tax payers rights by punting the results of their money behind a paid wall!

-Someone will sell that research results to another researcher (maybe the colleague next door!) and make profit

3 wastes of money and 2 absolutely pointless profits made using this ill phased circle.

kronos29296 21 hours ago 1 reply      
Prestige, Resume and Career. We have system in place for this. You don't get hired without credentials. In academia it is publications and only big publishers like Elsevier, Springer, Wiley etc are acknowledged. Kinda like Microsoft, Google, Apple in software.
ben_jones 19 hours ago 0 replies      
"It is difficult to get a man to understand something, when his salary depends upon his not understanding it"
deepnotderp 1 day ago 1 reply      
AI publishes in arXiv. There's still hope ;)
codesnik 1 day ago 1 reply      
what if legally compel to publish public funded research results only in open access journals?
joeclark77 20 hours ago 0 replies      
There is a lively debate in the Western world about just how free the free market should be, but very few even on the political left think that "for-profit" == "evil". If the publishing business model works for the researchers, the universities, and the publishers, what's wrong with it? No need to fix what isn't broken.
Ask HN: What are you going to do for health insurance if ACA is repealed?
9 points by citizen_concern  16 hours ago   4 comments top 4
anon_aca 16 hours ago 0 replies      
From a practical sense, I'm not sure exactly how the change will impact me. I'm self employed, and have been for about 15 years. I currently purchase insurance for my family through the exchange, but my income is above the level where I'd receive any tax advantage from doing-so. The off-exchange plans costs were comparable to the on-exchange plans, but there was a minor benefit to purchasing a plan on the exchange versus a similar plan from the same provider off-exchange based on the paperwork I reviewed, unless the paperwork was just wrong. I never got a clear answer. So we went with the exchange plan. I used to purchase insurance on the open market before exchange plans existed, so presumably that's where I'd go again.

But the costs are extreme.

I pay close to $20k annually for a generally-healthy family of four. That rose ~17.8% from last year, and presumably it'll rise again this year. If the increase rate is similar, that'd put it at around $24k in 2018, which coincidentally is comparable to the federal poverty rate for a family of four.

I'm fortunate that I'm employed. I have no problem paying into a system where the healthy subsidize the care of the less healthy. That's the whole idea behind any insurance. But the rate of increase I've seen in my health insurance costs over the past few years has been unlike any increase I've experienced for other costs of living, and if the trend continues, I'm not sure what I'll do for coverage. It'd like push me to re-evaluate whether to remain self-employed.

Mz 14 hours ago 0 replies      
gt565k 13 hours ago 0 replies      
Go outside the US to South/Central America or Eastern Europe. Airfare included, it's cheaper than paying out of pocket even with ACA.
waterphone 16 hours ago 0 replies      
Same as I do now: no insurance.
Ask HN: Can you truly lead engineers without being an engineer?
26 points by uptownfunk  2 days ago   23 comments top 19
akg_67 2 days ago 1 reply      
Most of my best bosses were non-engineers or people with no technical expertise in my domain. In my experience bosses who were recently engineers or technical experience in what I was hired to do to be generally micromanagers.

It sort of became a qualifying criteria. During interviews if an interviewer asked me technical questions and s/he was going to be my reporting manager, I knew we will not be a good fit.

Edit: When I was young and inexperienced, I preferred bosses with technical chops and mentoring mindset. Later in my career, I preferred non-technical bosses and senior technical team members with mentoring mindset.

kasey_junk 17 hours ago 0 replies      
Too many people think that leadership is a) bestowed upon you and b) single faceted.

In the context of an engineering organization, leadership on technical tasks is actually inverted. The person most capable of leading in decisions about that task, is the person most recently deep into it. That means on some tasks the new intern is the leader when it comes to leadership in the sense of "expert on the topic".

Engineering mentorship largely must be done by senior engineers. That said, there is no reason those senior engineers are necessarily your project manager, your product manager or your people manager.

At the end of the day, I much prefer working in organizations that understand that people management can and should be done by people managers and technical leadership can and should be done by technical leaders and those 2 things needn't reside in the same office.

usgroup 2 days ago 0 replies      
Taking a serious engineering team as example (ie one doing something innovative rather than cutting variants of the same code all the time) the leader has to be an engineer.

Not necessarily the best in the team but they have to get the mechanics and prognosis of technical decisions in order to manage risk, know where or who the problems are, make trade offs, etc.

I've often seen the non technical leader adopt a technical right hand who defacto does the leading whilst the alleged leader reports up, administrates and generally takes credit.

Further like someone else said, leading and managing are like chalk and cheese (superfluously similar). A project manager may happily be non technical because there job is mostly triage, comms and tracking.

zer00eyz 2 days ago 2 replies      
Yes you can.

At the point that your in "leadership" it isn't about doing it is about providing the tools for others to DO. Good leaders remove distractions, focus on the heath of the group (and the individuals within) act as a contact point and a buffer from outsiders.

Can being technical help. It depends. Stable products, well established domains (with experienced people) don't need deep technical knowledge to deal with the day to day. However, if you systems can be described as a disaster, if you having major issues all the time, a leader with technical chops is going to be of benefit. You want an empathetic manager when the shit hits the fan not a sympathetic one.

iancmceachern 20 hours ago 0 replies      
The key word here is "Lead". I believe (metaphorically) that, in matters of sight, the blind cannot truly lead the sighted. Yes, someone may be able to "lead" a camping trip for scouts to the local campground without event, but that is a far different skill set than leading an expedition to climb Mt. Everest.

I believe that the analogy holds true. Yes, a non-technical "leader" can manage a group of technical folks to deliver something that is pre-existing, something that has a clear path to completion which if you follow, you will be successful. Civil projects are a great example of this. Repaving a road for example.

Now onto what I've worked on my entire career - highly complex engineering driven technical projects - "cutting edge". I have worked for both types of leader in this environment. I have never seen the non-technical leader be successful, nor the project being directed by the non-technical leader be successful. To make the right decisions the leader needs to be able to intimately understand all the trade offs (technical included) involved to be able to lead the project to success. If this person doesn't personally have the knowledge, understanding, wisdom or ability to seek such out to understand these fundamental trade offs they are required to rely on the information they are given, to rely on trusting the folks telling you things. This is difficult because on the most challenging projects there are always different opinions and the leader must find the thread of truth between them.

This is why Mr. Musk has been so successful with Tesla and SpaceX - he intimately understands what he is making at the most technical level - and is passionate about it.

fuzzfactor 1 day ago 0 replies      
Depends on whether you want to be like Microsoft under Gates or Ballmer.

Of course Ballmer could never had grown Microsoft well enough to begin with to even give Ballmer himself the size of opportunity we would be so aware of at this point anyway.

Not that Gates actually graduated from an engineering school, but he had the technical chops to out-engineer most of those who did in the ways that count.

This allowed Microsoft to overcome hurdles that could not have been passed any other way, even as Gates participated to a much lesser degree in the actual engineering details of the products over his years.

Cats are best herded by other cats.

At least Ballmer had been with the company almost as long as his technically qualified predecessor, and that was since almost the beginning.

When HP failed on these points too it was even less pretty.

Seems like from large engineering company scale down to single engineering project scale, one trend for success might be when the leader is actually inherently capable of virtually all of the engineering needed for a successful product. Just when the project, product, or company is too big for this technical leader to accomplish all or even any of the engineering single-handedly, is when the judicious delegation of the technical fragments becomes the valued talent that non-technical operators also have an extreme disadvantage with.

It's more financially sound if the leader when needed can solve technical problems that his team alone can not overcome when they arise.

Even if the company is started because of a businessman's vision of a market he makes come true, if it is largely an engineering company, the technical leader needs controlling interest or the shareholders will be shortchanged.

This usually works the other way around, which is why we hear about far fewer of them becoming sizable regardless of how amazing the engineering seems sometimes.

There simply needs to be a way for the non-technical but gifted business talents to earn enough to be more rewarding than what they would experience having more control of a lesser pure sales company without the engineering talent.

So the engineering does need to be outstanding, exactly what some of us are here for.

mattbgates 1 day ago 0 replies      
My supervisor is considered a senior in the company, having worked there for 16 years. He had absolutely no experience in knowing what we do, what web design was, etc. In fact, he "transferred" over to my department and became the supervisor and I was the one who ended up training him.

While his skillset is that of a perfectionist, in which he is probably great at catching mistakes and being a micro-manager, he lacks some other skills that I would've thought necessary to "supervise" us. In the beginning, he was taking his "old skills" that he knew from his entire time at the company and trying to apply it to his department and it was like he was miserable... because you cannot apply the same rules for our department as others. Almost all other departments work on a "errors made" platform, so if you make an error, it is caught and counted towards you.. we have a high turnover rate in all other departments.

Our department, however, has no platform like that where "errors" can be caught by a computer, and are caught manually. So trying to convince him to throw out over 15 years of everything he's ever knew.. aside from his perfectionist mindset was extremely hard for him. It took 2 years just to get him to a point where he started to realize: We are a whole different department that cannot be classed in with all others.

Fortunately, he's definitely improved.

Sometimes I think its a good thing and sometimes bad... he's always spying on our work before it is done and quickly makes assumptions and goes kind of crazy every so often because he thinks that's what it's going to look like, but as you're developing something... most things never "stay looking" like they would in development phase. So convincing him: "Can you let me finish the product before you start peaking at it?" is something I have to do every so often.

He can't be doing too bad, after all, there are two main offices that my company has, and only one person has ever been promoted in the other office, while we've had about 5 people who received "promotions" ... which basically just means a little extra money and a new title called "senior", but it must say something about how he is doing for his team.

He's proof that all you really have to do is know people in the company, acquire that status of a perfectionist (and manager), apply for the job, and you can fake it till you make it.

bsvalley 2 days ago 0 replies      
To "lead" engineers you need to be an engineer because you have to make technical decisions.

To "manage" people (including engineers), it's totally fine to be a non-tech person. It's actually even better if you're not tied to any project as a manager. Because you can focus on career growth and conflicts, which is what I'd expect from a manager.

gaius 1 day ago 1 reply      
No. We see this play out time and time again - successful tech company, the technical founder retires or is replaced by some other means and an MBA takes over, then the wheels come off.
paulcole 2 days ago 0 replies      
Of course! Successful leaders in many fields don't have direct experience in that field-- although it may not be the norm.

If engineers believe they can't be led by a non-engineer it says more to me about the engineers than anything else.

eeZah7Ux 2 days ago 0 replies      
Define "lead engineers". Is that leading a project and taking technical decision or managing people?
kochthesecond 2 days ago 0 replies      
I am inclined to say yes, you absolutely can. I'd even prefer it if said engineering manager tends to micromanage.
matttheatheist 1 day ago 0 replies      
As the owner of a startup, I won't hire you to manage a group of engineers if you don't have at least the same level of technical experience.I will always test you. You can never hide from me. You are exposed.
ParameterOne 1 day ago 0 replies      
I don't think you have to be an engineer to lead but I do think the leader needs to see the vision/goal to properly communicate it to the engineers who make it happen.
Bahamut 2 days ago 0 replies      
I hesitate to say no, but I haven't seen this work out too well many times.
crispytx 1 day ago 0 replies      
shortoncash 1 day ago 0 replies      
It's doable but it's not recommended.
mars4rp 2 days ago 0 replies      
It depends on how much engineering decisions you have to make!!!
miguelrochefort 2 days ago 0 replies      
Define engineer.
Ask HN: How do you network on the road/in a new city?
23 points by vinnyglennon  2 days ago   5 comments top 5
hluska 2 days ago 0 replies      
When I was growing up, I moved around a ton because of my Dad's career. Between a bad stutter and the stigma of always being the new kid, making friends was never easy. But, I learned some amazing things about networking. Odd, isn't it, how some of the worst things that happen to us as kids turn out to be some of our greatest gifts as adults??

Here are some of the best things that I learned.

1.) Don't approach people who are standing alone; approach groups of two. Whenever you approach a group of two, there is a very good chance that at least one of the two want out of the conversation.

2.) Learn to smile whenever you see someone.

3.) If you smile at the same person twice, it is time to introduce yourself.

4.) You don't matter. Ask lots of questions and put the focus on the person who you are talking to.

5.) Proximity is very important. If you want to make friends in a hurry, learn to situate yourself in a place with a steady stream of people. Standing at a buffet table is a cliche because it works.

skylark 15 hours ago 0 replies      
I'd avoid going out entirely with the goal to network - it puts you into the wrong mindset, and people will pick up on it. The majority of people don't enjoy networking for the sake of networking.

Go somewhere people gather. Bars, clubs, meetups, work functions, really anything is fine. Be social. Expect nothing. Followup with the people you have a genuine connection with and they'll introduce you to their friends when the time is right. If you don't make a genuine connection, move on.

If you consistently do this, you'll build out a useful, large group of friends who actually care about you. Hopefully you care about them too.

sebg 2 days ago 0 replies      
Meetups are a great way to find people interested in the same things you are interested in. And since you can target by distance to where you'll be as well as dates, you can have a schedule ahead of time.
eriknstr 2 days ago 0 replies      
When I was in Berlin a couple of years ago I had checked out what hackerspaces existed there ahead of time and I'd chatted briefly with some of the people at one of the places through IRC. I was only staying in Berlin for a few days so I wasn't looking to build any long-lasting relationships with anyone (though there is nothing wrong in networking even if you're not going to stay some place) but I met a lot of friendly people and a couple of them were so welcoming that if I wanted to I think I could have built some pretty good relationships with them.
EGreg 1 day ago 0 replies      
Use an app like the one we are releasing. It's specifically designed to solve this problem. People post what they want to do and others join. For now use meetup.com
Ask HN: What is the biggest obstacle with surfing the web without JavaScript?
8 points by zulln  1 day ago   13 comments top 13
paulryanrogers 1 day ago 0 replies      
My experience was partially or completely broken sites which I had to interact with. Such breakage wasn't always obvious which led to a sense of doubt whenever trying something new.

Even as an experienced Noscript user and web developer the unscripted experience was annoying to manage

borplk 11 hours ago 0 replies      
Javascript is increasingly becoming just as important as HTML and CSS for a web experience.

If you "disable HTML" the web will be broken, expect the same for Javascript.

Trying to build every single thing in a way that gracefully falls back in the absence of Javascript is often extremely difficult (if no impossible) and always very expensive.

I think last time I checked less than 5% of global internet users had javascript disabled. Kind of like supporting IE6, the cost is just not worth it.

mabub24 1 day ago 0 replies      
One thing to improve the situation: use an extension or hotkey setup to switch JavaScript on and off very quickly. I use Toggle JavaScript in Chrome. It helps.


The biggest obstacle is, as others have said, some websites simply do not work.

The biggest benefit to turning it off, though, is that sites finish loading much much quicker. Take Stereogum. Without JavaScript, you save yourself from a sluggish mess of a website that, really, is just text and images.

gcb0 1 day ago 0 replies      
disable it selectively.

check the uMatrix extension. Living with it perfectly for months now. absolute no exceptions on any site. only allow what I trust and need.

richardknop 1 day ago 0 replies      
There is nothing you can do. Some websites are built to work without JavaScript. These are usually sites built old school way - dynamic HTML generated on the server. Still a majority of internet websites I assume.

The new trend is single page web apps and websites with heavy use of JavaScript and they don't really work if you disable JS.

So it depends on which websites you usually visit. Depending on that you might or might not require JS.

benologist 20 hours ago 0 replies      
Making it easier to activate/disable JS in Safari would improve the situation. Currently I use the developer menu to toggle it, usually for a substantial increase in speed and privacy.
limeblack 18 hours ago 0 replies      
Drag and drop, grabbing copy and paste, many CSS transitions rely in some on JavaScript. Also all chats to my knowledge require JavaScript.
dfansteel 20 hours ago 0 replies      
The pages load too quickly. Thereby ruining me for all the other pages out there.
tgragnato 1 day ago 0 replies      
Challenges are mainly based on js and/or captchas these days, and are required on countless sites.

In such a situation your access is prevented and the usefulness of a noscript tag is limited.

newusertoday 1 day ago 0 replies      
browse in incognito mode in chromium with javascript disabled. For sites which you don't visit frequently you can enable it only for that time and once you close chrome all permissions are gone. For frequently visited sites you can allow js in normal mode to retain the permissions.
open-source-ux 1 day ago 0 replies      
The biggest obstacle is simply that many sites fail to load without JavaScript enabled. These sites are not web apps, they are just displaying text. But they are probably written as web apps to display their content, even when they could render fine as just HTML and CSS.

What can be done to improve the situation? Nothing. Most developers simply don't care.

PhantomGremlin 1 day ago 0 replies      
Do you really need JavaScript?

My default is to browse with NoScript actively disabling most JS. I'm happy with at least 90% of my website interactions.

Here's the full extent of my permanently whitelisted websites:

 apple.com cdn-apple.com edmunds-media.com edmunds.com newegg.com wikimedia.org wikipedia.org yahoo.com ycombinator.com yimg.com
In addition, selectively doing View->Page Style->No Style often displays content that would otherwise require JS.

For most of the rest I just say Fuck It and move on to something else. There are plenty of other sites out there, and life is too short.

miguelrochefort 21 hours ago 0 replies      
Why not enable Javascript?
Ask HN: Is there a Market for low-spec laptops with long battery life?
15 points by bananicorn  1 day ago   14 comments top 5
zulln 1 day ago 1 reply      
You can install Linux on many Chromebooks, something to keep in mind. I was looking for an extra computer a while back and it actually seemed to be the best option.
The_DaveG 1 day ago 1 reply      
So I'll kick this off by saying yes. I have a gaming desktop I built, a 2016 MBP spec'ed out I use for work (video editing), and down the line tablets/phone. My wife needs something for work processing, Skype, and the internet. I got her a $400-$500 Dell Inspiron laptop a few years ago (I think it's Pentium 4 lol) You can swap batteries, they're solid machines. Basically just a little more than a Chromebook and a little less than a 2in1, which will be her next one as she loves the touch screen.

Love to hear what everyone else is using/thinking as well.

kreeWall 1 day ago 1 reply      
I know that this is something that would be very useful to college students and most people's parents. My mother has a chromebook because she just needed something light with a good battery life for word processing and surfing the internet (read: facebook). The chromebook comes with its own series of issues which she has to work around, so it would be nice if it was not a chromebook, but just a normal laptop.
zabana 1 day ago 0 replies      
I have a question of my own: Given the options posted below. What would you recommend as the best low spec laptop to install linux on and why ? Cheers
DanBC 1 day ago 1 reply      
There are plenty of machines like the Asus X205ta.

Small, low specs, 10 hour battery life.

Some of them use weird chipsets or have low ram or 64 bit processers and 32 bit uefi, so installing linux isn't always as simple as it normally is.

Ask HN: Is there a site like unsplash but for fantasy/science fiction art?
19 points by redxblood  22 hours ago   4 comments top 4
kowdermeister 21 hours ago 0 replies      
I don't know about dedicated ones, but I would explore here:

Flickr: https://www.flickr.com/search/advanced/ (turn on CC image search)




yodon 15 hours ago 0 replies      
There are tons of sites that let you download tons of 3D models for free. The problem is that the majority of those models were ripped off out of commercial games and projects and there is no hint of a valid Creative Commons or any other kind of license to use those items.
emilsedgh 21 hours ago 0 replies      
pjc50 21 hours ago 0 replies      
#payyourartists !

There's artstation, you could look around and commission/buy rights to images from there.

Ask HN: What has happened to YC's residential development research project?
96 points by baybal2  5 days ago   21 comments top 6
RubenSandwich 4 days ago 2 replies      
They are still their slowly plugging away at projects: https://harc.ycr.org/.

Edit: You haven't heard from them because they are aiming very high so it will take years before any of their work hits the general public.

Edit 2: From my understanding, they are still working on their Universal Basic Income Research as well and have chosen Oakland as the testbed: http://basicincome.org/news/2017/04/httpswww-youtube-comwatc....

Entangled 4 days ago 7 replies      
Ok, here is a cheap shot of a dream. Future cities like mega malls with a thousand shops facing inside and a thousand homes facing outside, one to one. Roads would be marbled floors and cars would be electric scooters with a basket enough to buy groceries around.

For those who like the outdoors, just get your off road vehicle and face the indomitable and untouched nature. No paved roads, no concrete, nothing outside these habitable malls interconnected by hyperloops. Of course there will be supply roads for trucks but they will be just like highways interconnecting mega farms to mega malls.

Nah, scratch that, there is nothing like a house in the suburbs with a huge yard and a barbecue.

simonebrunozzi 4 days ago 1 reply      
Sam Altman spoke about it recently: https://medium.com/the-naked-founder/sam-altman-on-yc-univer...

AFAIK, Ben Huh is still in charge of the project.

raphman 4 days ago 0 replies      
Two weeks ago, Jonathan Edwards [1] announced on Twitter that he left/leaves HARC [2] but didn't elaborate on the reasons.

[1] http://www.subtext-lang.org/AboutMe.htm[2] https://twitter.com/jonathoda/status/871784998113882118

Kinnard 4 days ago 0 replies      
Did you mean the New Cities Project?
erikj 4 days ago 1 reply      
What do you expect from it?
Ask HN: What tech companies do you invest in?
43 points by bvod  1 day ago   49 comments top 18
hamstercat 1 day ago 3 replies      
My boring answer: none directly, though an index fund I invest in has a small share of Apple, Microsoft, Google, Amazon and Facebook. I already work in tech, both at my main and side jobs, so not being too invested in tech seems wise even if I don't see it blowing up again.
pcprincipal 1 day ago 1 reply      
Biggest tech holdings:

- TSLA - same reasons mentioned below- NVDA - GPUs could eventually replace CPUs, machine learning / autonomous vehicles, data storage, great core business (gaming)- AMD - similar reasons to NVDA, Epyc is making waves and taking market share from INTC- AMZN - $1 of every $2 on the internet is spent here, AWS alone is probably a $100 BN+ business, they have their hands in every imaginable cookie jar- GOOGL - diversified play on ML, internet of things and more, search business is cash cow

Surprised at the index fund answers here. If you had invested in FAANG (Facebook, Apple, Amazon, Netflix, Google) stocks last 5 years, would have made a killing, and for people who regularly post on HN, all of these companies are regularly mentioned / cited as examples of superior engineering.

kbos87 1 day ago 0 replies      
I previously had a modest amount of stock in a handful of midsized and larger tech companies, but I'm in the process of selling it off.

Something that was an eye opening experience for me was watching my own employer go public. All of the sudden the rest of the world is trying to understand and make sense of your business.

From the individual investors talking about our business on twitter or seeking alpha to the analyst reports from the massive investment houses, other people's conjecture about our market and our strategy is often just way, way off base.

This experience made it painfully clear that most investors, even "professionals", are operating in an extreme vacuum of information. They know almost nothing about our future prospects relative to what the employees living in the space every day know.

It's half because they are spreading themselves too thin, and half because they aren't living in our space, talking to our customers every day.

Long story short, I'm realistic that as an individual investor who isn't an insider, I'm at a huge disadvantage. So I hold a lot of employee stock, and I'm moving more and more toward boring old index funds.

gwintrob 1 day ago 1 reply      
Amazon. E-commerce is still < 10% of retail in the US, so the core business has tons of potential. Then start thinking about opportunities like AWS, etc...
pg_bot 1 day ago 1 reply      
AAPL, they earn all of the profits for the most important device of the 21st century. I will own them until that is no longer the case.
geori 1 day ago 0 replies      
I used to not pick tech stocks because of the diversification argument. However, I stopped that and now invest a good bit. Why? People in tech are going to be better at predicting the future than the equity research analysts at investment banks. Have confidence in yourself and make some picks.
harigov 1 day ago 0 replies      
Tesla. It is clear that world is going towards renewables. It is also clear that electric vehicle is here to stay. Even if there is an alternative out there that meets the renewable energy needs, it will take more than a decade for it to fully commercialize so Tesla has its place. I think that the giga factories and solar city can be huge businesses. Tesla's truck with its auto-pilot (even if it is good enough to drive on freeways) can be a huge cost saver for transportation companies.
scurvy 1 day ago 0 replies      
Datacenter REITs have been a great moneymaker for me: EQIX, DLR, DFT (being acquired by DLR), and a few others like COR, INXN, and CONE.

Buy it, hold it, wait for it to double, sell half, then let the rest ride for free and reinvest the original stake. Great way to never worry about timing when to take gains in high flying stocks.

REITs also throw off a lot of income and dividends which makes them nice to hold long term.

haney 1 day ago 0 replies      
FB, They have access to great consumer information that will continue to make them a valuable advertising company for a long time AND they've continued to expand into other markets (VR) while making smart defensive acquisitions to protect their core.
deepnotderp 1 day ago 1 reply      
AMD, lots of juicy server market share available.
grondilu 1 day ago 0 replies      
Those are tech companies I have more than one share of: NVIDIA, AMD, IBM, Intel.

And those are companies I just have one share of (because why not?): Tesla, Google (Alphabet A & C), Amazon, Texas Instruments

I wish I had bought more of Amazon :(

nodesocket 1 day ago 0 replies      
Well publically in the market... Apple, AMD, Google, index fund. I like me some tech. Yes I am well aware I not diversified, but I am somewhat young, and looking for growth.
thebiglebrewski 1 day ago 2 replies      
Tesla, of course! But it might be too late now...
rrrx3 1 day ago 0 replies      
FAANG -> needs no explanation

NVDA -> same

RHT -> solid financials, great growth q over q and y over y

MSFT -> Nadella has made some massive improvements that reap great benefits

MU -> great value for money and great returns

adventured 1 day ago 2 replies      
Editas (EDIT), Crispr Therapeautics (CRSP), occasionally Intellia (NTLA). I liked Shopify (SHOP) when they were cheaper and owned them from their IPO, now it's very expensive.

Most of the public traditional tech companies are extremely boring and not doing anything interesting. Whether Netflix, Facebook or Salesforce.com, it's 15-20 year old technology, that has been pushed & evolved to hyper scale (which is impressive of course). The only thing interesting about most public tech companies of consequence now, is the scaling that they do. Apple & the iPhone? A 10 year old leap, pushed to hyper scale to go with regular improvement - about as exciting as the desktop computer circa 2003.

Want to get at blockchain? AI? Robotics? Quantum computing? There aren't very many good, pure-play public companies for that. (I'm not buying Google at $670 billion to get at their quantum tech, which won't dent that market cap in the next decade).

Amazon is one of the few tech companies making bold moves. I'm not paying 200x earnings for 20% sales growth, so that one day 15-20 years out they'll finally justify their present valuation. nVidia is another that is interesting and very expensive accordingly (at a 600%+ valuation increase in two years on the back of ~170% earnings growth, dangerous is an ideal word for their stock).

sketchthat 1 day ago 0 replies      
Indirectly through my super all the main players like Apple, Google, FB.

Directly, Amazon & Tesla + a bunch of cryptos (Do they count?)

reilly3000 1 day ago 1 reply      
I am short on investment money, but if I was buying equities I would go long on ARM. I think they are Qualcomm of 2006 with IoT and massive parallelism driving big growth.
Temasik 1 day ago 0 replies      
www.iota.org as it is trying to solve internet of things problem using mesh network
Ask HN: Side business how to get started?
42 points by yokutown  3 days ago   19 comments top 10
kjksf 3 days ago 3 replies      
I've collected 35 stories of solo-preneurs at https://blog.kowalczyk.info/article/wjRD/collected-stories-o...

This might be of some inspiration.

That being said, the one thing you cannot skip is building the product.

If your product is a website, then you either have to learn how to do it, both front-end and back-end, or hire someone to do it.

If you don't know where to start learning, you can start at https://www.udacity.com/. They have free and paid (but still cheap) web dev courses.

There's really never been easier to learn web programming, with so many free resources.

If you're overwhelmed with choices, learn React + HTML/CSS (frameworks like React are about easy way to create HTML; you still need to know what HTML/CSS to create).

nfriedly 3 days ago 0 replies      
I think there's two questions here:

1) How to start a side business?

Make something people want, charge money for it, and figure out how to market it. Not necessarily in that order.

2) Where to start with front-end tech?

Use as little of it as possible. Plain old HTML, and forms that submit to a server are all you really need. No fancy JavaScript. CSS is nice, and probably a bit more important but also not strictly required.

I say this as someone who makes a living writing JS/Node and charges well over $50/hr. After your project is bringing in money, then you can look into learning front-end fancyness. Or just hire me ;)

helen842000 1 day ago 0 replies      
It sounds like you are worrying about skills & tech before having a problem to solve or a product to build.

Investigate some ideas, find a need and a solution you want to build. Keep things simple and see if there is demand.

You can decide then what skills are important and either learn as you go or hire. You will be much more motivated to learn if you have something specific to build & customers waiting.

richardknop 2 days ago 0 replies      
Well you can either learn how to build frontend yourself or pay somebody to do it. And as always you get what you pay for so somebody good will charge a lot. That should help motivate you to learn.

You don't need to learn JavaScript or Node initially. It's perfectly fine to start with old school front end built with Rails or Django.

Dynamic HTML generated on the server. Which could be Node but doesn't need to be. PHP, Perl, Python, Ruby will do just fine.

You need to learn HTML and how submitting forms works at the very least. And probably some CSS. You can start with that.

And by the way, $50 per hour is not even that high. There are some too frontend experts charging double that or more.

So unless you got big budget for this side business I'd recommend to learn very basics yourself and start with simple UIs that you can write on your own. Later if the side business takes off you can hire front end experts to take it from there.

12s12m 3 days ago 1 reply      
I have built a few startups in the past, and am currently building 12 startups in 12 months at http://blog.12startupsin12months.in/ . Like the @nfriedly mentioned. You really have 2 questions. I always ask people to get their product validated with at least 20 customers. For this you probably just need a simple landing page asking for an email. Make sure you are building something that provides value.

The next part is actually building the app. I am a developer so my advice may be a bit biased. But, I would ask you to learn a front end framework. If you don't know an JS frameworks yet, I'd ask you to take a look at Elm. Once you have the first version out, and grows beyond your capabilities you can hire folks to work on it.

mindcrime 3 days ago 0 replies      
I don't feel motivated enough to learn Javascript/Node etc.

Well, there are two basic paths.

1. Pay somebody to do that stuff.

2. Learn it and do it yourself.

You've already eliminated option 2, so the equation doesn't seem very complicated to me. Maybe you can find some offshore talent, or still-in-school (or just-out-of-school) folks who would be willing to work for a relatively inexpensive rate? Or you could "pay" in equity and have a co-founder.

I guess you could argue that there is also a hidden "option 3" - invent an artificial general intelligence and make it do the work for you.

SirLJ 2 days ago 1 reply      
Maybe check the algorithmic stock market trading, looks like you have the background, just get some data and start testing different trading strategies, the upfront cost if minimal and if you find something that is working for you you can start trading with real money and then do it for friends and family, etc...
rpeden 3 days ago 0 replies      
Maybe partner up with someone who does have full stack web development skills?

I think there are plenty of good side businesses where data analytics combined with a great interactive web front end to visualize the data could be profitable.

Such a partnership need not cost much money at all to get started. You could launch a product on an inexpensive Digital Ocean VPS.

nanospeck 1 day ago 0 replies      
You can hire me for 20$ per hour. I'll help you build the mvp if you have an idea. PM me if you're interested.
lalwanivikas 2 days ago 0 replies      
Do you have good ideas? And can they become viable side businesses?

I do frontend mainly and know a bit of backend as well. But don't have good ideas to work on :(

Ask HN: How was your experience with AWS Lambda in production?
212 points by chetanmelkani  6 days ago   154 comments top 62
callumlocke 6 days ago 6 replies      
I made an image hosting tool on Lambda and S3, for internal corporate use. Staff can upload images to S3 via an SPA. The front end contacts the Lambda service to request a pre-signed S3 upload URL, so the browser can upload directly to S3. It works really well. Observations:

1. Took too long to get something working. The common use case of hooking up a Lambda function to an HTTP endpoint is surprisingly fiddly and manual.

2. Very painful logging/monitoring.

3. The Node.js version of Lambda has a weird and ugly API that feels like it was designed by a comittee with little knowledge of Node.js idioms.

4. The Serverless framework produces a huge bundle unless you spend a lot of effort optimising it. It's also very slow to deploy incremental changes edit: this is not only due to the large bundle size but also due to having to re-up the whole generated CloudFormation stack for most updates.

5. It was worth it in the end for making a useful little service that will exist forever with ultra-low running costs, but the developer experience could have been miles better, and I wouldn't want to have to work on that codebase again.


Edit: here's the code: https://github.com/Financial-Times/ig-images-backend

To address point 3 above, I wrote a wrapper function (in src/index.js) so I could write each HTTP Lambda endpoint as a straight async function that simply receives a single argument (the request event) and asynchronously returns the complete HTTP response. This wouldn't be good if you were returning a large response though; you'd probably be better streaming it.

scrollaway 6 days ago 2 replies      
We use AWS Lambda to process Hearthstone replay files.

My #1 concern with it went away a while back when Amazon finally added support for Python 3 (3.6).

It behaved as advertised: Allowed us to scale without worrying about scaling. After a year of using it however I'm really not a big fan of the technology.

It's opaque. Pulling logs, crashes and metrics out of it is like pulling teeth. There's a lot of bells and whistles which are just missing. And the weirdest thing to me is how people keep using it to create "serverless websites" when that is really not its strength -- its strength is in distributed processing; in other words, long-running CPU-bound apps.

The dev experience is poor. We had to build our own system to deploy our builds to Lambda. Build our own canary/rollback system, etc. With Zappa it's better nowadays although for the longest time it didn't really support non-website-like Lambda apps.

It's expensive. You pay for invocations, you pay for running speed, and all of this is super hard to read on the bill (which function costs me the most and when? Gotta do your own advanced bill graphing for that). And if you want more CPU, you have to also increase memory; so right now our apps are paying for hundreds of MBs of memory we're not using just because it makes sense to pay for the extra CPU. (2x your CPU to 2x your speed is a net-neutral cost, if you're CPU-bound).

But the kicker in all this is that the entire system is proprietary and it's really hard to reproduce a test environment for it. The LambCI people have done it, but even so, it's a hell of a system to mock and has a pretty strong lock-in.

We're currently moving some S3-bound queue stuff into SQS and dropping Lambda at the same time could make sense.

I certainly recommend trying Lambda as a tech project, but I would not recommend going out of your way to use it just so you can be "serverless". Consider your use case carefully.

munns 5 days ago 1 reply      
Hey all, My name is Chris Munns and I am currently the lead Developer Advocate for Serverless at AWS (I am part of the Lambda PM team). We really appreciate this feedback and are always looking for ways to hear about these pain points. Can email me directly: munns@amazon.com if you ever get stuck.

Thanks,- Chris

chickenbane 5 days ago 1 reply      
I worked on a project where the architect wanted to use Lambdas for the entire solution. This was a bad choice.

Lambdas have a lot of benefits - for occasional tasks they are essentially free, the simple programming model makes them easy to understand in teams, you get Amazon's scaling and there's decent integration with caching and logging.

However, especially since I had to use them for whole solution, I ran into a ton of limitations. Since they are so simple, you have to pull in a lot of dependencies which negate a lot of the ease of understanding I mentioned before. The dependencies are things like Amazon's API Gateway, AWS Step Functions, and AWS CLI itself, which is pretty low-level. So now, the application logic is pretty easy, but now you are dealing with a lot of integration devops. There's API Gateway is pretty clunky and surprisingly slow. Lambdas shut themselves down, and restarting is slow. The Step Functions have a relatively small payload limit that needs to be worked around. Etc. So use them sparingly!

lanestp 6 days ago 0 replies      
We use Lambda for 100% of our APIs some of which get over 100,000 calls per day. The system is fantastic for micro services and web apps. One caveat, you must use a framework like Serverless or Zappa. Simply setting up API Gateway right is a hideous task and giving your function the right access level isnt any fun either. Since the frameworks do all that for you it really makes life easier.

One thing to note. API Gateway is super picky about your response. When you first get started you may have a Lambda that runs your test just fine but fails on deployment. Make sure you troubleshoot your response rather than diving into your code.

I saw some people complaining about using an archaic version of Node. This is no longer true. Lambdas support Node V6 which, while not bang up to date, is an excellent version.

Anyway, I can attest it is production ready and at least in our usage an order of magnitude cheaper.

CSDude 6 days ago 1 reply      
- Monitoring & debugging is little hard

- CPU power also scales with Memory, you might need to increase it to get better responses

- Ability to attach many streams (Kinesis, Dynamo) is very helpful, and it scales easily without explicitly managing servers

- There can be a overhead, your function gets paused (if no data incoming) or can be killed undeterministically (even if it works all the time or per hour) and causes cold start, and cold start is very bad for Java

- You need to make your JARs smaller (50MB), you cannot just embed anything you like without careful consideration

thom_nic 5 days ago 1 reply      
I deployed a couple AWS lambda endpoints for very low-volume tasks using claudia.js - Claudia greatly reduces the setup overhead for sane REST endpoints. It creates the correct IAM permissions, gateway API and mappings.

Claudia.js also has an API layer that makes it look very similar to express.js versus the weird API that Amazon provides. I would not use lambda + JS without claudia.

For usage scenarios, one endpoint is used for a "contact us" form on a static website, another we use to transform requests to fetch and store artifacts on S3. I can't speak toward latency or high volume but since I've set them up I've been able to pretty much forget about them and they work as intended.

dblooman 6 days ago 0 replies      
We have a number of different use cases at FundApps, some obvious like automated tasks, automatic DNS, cleanup AMI's etc, to the more focused importing and parsing of data from data sources. This is generally a several times a day operation, so lambda was the right choice for us. We also use API gateway with lambdas, its a small API, about 2 requests per second on average, but very peaky during business hours, its response and uptime has been excellent.

Development can be tricky, there are a lot of of all in one solutions like the serverless framework, we use Apex CLI tool for deploying and Terraform for infra. These tools offer a nice workflow for most developers.

Logging is annoying, its all cloudwatch, but we use a lambda to send all our cloudwatch logs to sumologic. We use cloudwatch for metrics, however we have a grafana dashboard for actually looking at those metrics. For exceptions we use Sentry.

Resources have bitten us the most, not enough memory suddenly because the payload from a download. I wish lambda allowed for scaling on a second attempt so that you could bump its resources, this is something to consider carefully.

Encryption of environment variables is still not a solved issue, if everyone has access to the AWS console, everyone can view your env vars, so if you want to store a DB password somewhere, it will have to be KMS, which is not a bad thing, this is usually pretty quick, but does add overhead to the execution time.

petarb 6 days ago 0 replies      
It gets the job done but the developer experience around it is awful.

Terrible deploy process, especially if your package is over 50mb (then you need to get S3 involved). Debugging and local testing is a nightmare. Cloudwatch Logs aren't that bad (you can easily search for terms).

We have been using Lambdas in production for about a year and a half now, to do 5 or so tasks. Ranging from indexing items in Elasticseaech, to small CRON clean up jobs.

One big gripe around Lambads and integration with API Gateway is they totally changed the way it works. It use to be really simple to hook up a lambda to a public facing URL so you could trigger it with a REST call. Now you have to do this extra dance with configuring API Gateway per HTTP resource, therefore complicating the Lambda code side of things. Sure with more customization you have more complexity associated with it, but the barrier to entry was significantly increased.

beefsack 6 days ago 1 reply      
I'm running Rust on Lambda at the moment for a PBE board gaming service I run. I can't say it runs at huge scale though, but using Lambda has provided me with some really good architectural benefits:

* Games are developed as command line tools which use JSON for input and output. They're pure so the game state is passed in as part of the request. An example is my implementation of Lost Cities[1]

* Games are automatically bundled up with a NodeJS runner[2] and deployed to Lambda using Travis CI[3]

* I use API Gateway to point to the Lambda function, one endpoint per game, and I version the endpoints if the game data structures ever change.

* I have a central API server[4] which I run on Elastic Beanstalk and RDS. Games are registered inside the database and whenever players make plays, Lambda functions are called to process the play.

I'm also planning to run bots as Lambda functions similar to how games are implemented, but am yet to get it fully operational.

Apart from stumbling a lot setting it up, I'm really happy with how it's all working together. If I ever get more traction I'll be interesting to see how it scales up.

[1]: https://github.com/brdgme/lost-cities

[2]: https://github.com/brdgme/lost-cities/blob/master/.travis.ym...

[3]: https://github.com/brdgme/lambda/blob/master/index.js

[4]: https://github.com/brdgme/api

cameronmaske 6 days ago 2 replies      
I've been using AWS Lambda on a side project (octodocs.com) that is powered by Django and uses Zappa to manage deployments.

I was initially attracted to it as a low-cost tool to run a database (RDS) powered service side project.

Some thoughts:

- Zappa is a great tool. They added async task support [1] which replaced the need for celery or rq. Setting up https with let's encrypt takes less than 15 minutes. They added Python 3 support quickly after it was announced. Setting up a test environment is pretty trivial. I set up a separate staging site which helps to debug a bunch of the orchestration settings. I also built a small CLI [2] to help set environment variables (heroku-esque) via S3 which works well. Overall, the tooling feels solid. I can't imagine using raw Lambda without a tool like Zappa.

- While Lambda itself is not too expensive, AWS can sneak in some additional costs. For example, allowing Lambda to reach out to other services in the VPC (RDS) or to the Internet, requires a bunch of route tables, subnets and a nat gateway. For this side project, this currently costs way more running and invoking Lambda.

- Debugging can be a pain. Things like Sentry [3] make it better for runtime issues, but orchestration issues are still very trail and error.

- There can be overhead if your function goes "cold" (i.e. infrequent usage). Zappa lets you keep sites warm (additional cost), but a cold start adds a couple of seconds to the first-page load for that user. This applies more to low volume traffic sites.

Overall: It's definitely overkilled for a side project like this, but I could see the economics of scale kicking in for multiple or high volume apps.

[1]: https://blog.zappa.io/posts/zappa-introduces-seamless-asynch...

[2]: https://github.com/cameronmaske/s3env

[3]: https://getsentry.com/

kehers 6 days ago 4 replies      
I've been using it for heavy background job for http://thefeed.press and overall, I think it's pretty ok (I use NodeJs). That said here are few things:

- No straight way to prevent retries. (Retries can crazily increase your bill if something goes wrong)

- API gateway to Lambda can be better. (For one, Multipart form-data support for API gateway is a mess)

- (For NodeJs) I don't see why the node_modules folder should be uploaded. (Google cloud functions downloads the modules from the package.json)

alexcasalboni 6 days ago 0 replies      
I'd recommend using a framework such as the Serverless Framework[1], Chalice[2], Dawson[3], or Zappa[4]. As any other (web) development project, using a framework will alleviate a big part of the pain involved with a new technology.

Anyways, I'd recommend starting from learning the tools without using a framework first. You can find two coding sessions I published on Youtube[5][6].

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

[2]: https://github.com/awslabs/chalice

[3]: https://dawson.sh/

[4]: https://github.com/Miserlou/Zappa

[5]: https://www.youtube.com/watch?v=NhGEik26324

[6]: https://www.youtube.com/watch?v=NlZjTn9SaWg

tracker1 6 days ago 1 reply      
Best to keep your workloads as small as possible, cold starts can be very bad, depending on the type of project. Been using mostly node myself, and it's worked out well.

One thing to be careful of, if you're targeting input into dynamodb table(s), then it's really easy to flood your writes. Same goes for SQS writes. You might be better off with a data pipeline, and slower progress. It really just depends on your use case and needs. You may also want to look at Running tasks on ECS, and depending on your needs that may go better.

For some jobs the 5minute limit is a bottleneck, others it's the 1.5gb memory. Just depends on exactly what you're trying to do. If your jobs fit in Lambda constraints, and your cold start time isn't too bad for your needs, go for it.

Techbrunch 6 days ago 0 replies      
You might want to have a look at Serverless, a framework to build web, mobile and IoT applications with serverless architectures using AWS Lambda and even Azure Functions, Google CloudFunctions & more. Debugging, maintaining & deploying multiple functions gets easier.

Serverless: https://github.com/serverless/serverless

dcosson 5 days ago 1 reply      

- works as advertised, we haven't had any reliability issues with it

- responding to Cloudwatch Events including cron-like schedules and other resource lifecycle hooks in your AWS account (and also DynamoDB/Kinesis streams, though I haven't used these) is awesome.


- 5 minute timeout. There have been a couple times when I thought this would be fine, but then I hit it and it was a huge pain. If the task is interruptible you can have the lambda function re-trigger itself, which I've done and actually works pretty once you set up the right IAM policy, but it's extra complexity you really don't want to have to worry about in every script.

- The logging permissions are annoying, it's easy for it to silently fail logging to to Cloudwatch Logs if you haven't set up the IAM permissions right. I like that it follows the usual IAM framework but AWS should really expose these errors somewhere.

- haven't found a good development/release flow for it. There's no built-in way to re-use helper scripts or anything. There are a bunch of serverless app frameworks, but they don't feel like they quite fit because I don't have an "app" in Lambda I just have a bunch of miscellaneous triggers and glue tasks that mostly don't have any relation to each other. It's very possible I should be using one of them anyway and it would change how I feel about this point.

We use Terraform for most AWS resources, but it's particularly bad for Lambda because there's a compile step of creating a zip archive that terraform doesn't have a great way to do in-band.

Overall Lambda is great as a super-simple shim if you only need to do one simple, predictable thing in response to an event. For example, the kind of things that AWS really could add as a small feature but hasn't like send an SNS notification to a slack channel, or tag an EC2 instance with certain parameters when it launches into an autoscaling group.

For many kinds of background processing tasks in your app, or moderately complex glue scripts, it will be the wrong tool for the job.

mgkimsal 5 days ago 2 replies      
I'm reading here a lot of people jumping through some massive amounts of hoops to deal with a system that lock you down to a single vendor, and makes it hard to read logs or even read your own bill.

a few years back, the mantra was "hardware is cheap, developer time isn't". when did this prevailing wisdom change? Why would people spend hours/days/weeks wrestling with a system to save money which may take weeks, months or even years to see an ROI?

falcolas 5 days ago 1 reply      
Most of my experience mirrors that found in other comments, so here's a few unique quirks I've personally had to work around:

- You can't trigger Lambda off SQS. The best you can do is set up a scheduled lambda and check the queue when kicked off.

- Only one Lambda invocation can occur per Kinesis shard. This makes efficiency and performance of that lambda function very important.

- The triggering of Lambda off Kinesis can sometimes lag behind the actual kinesis pipeline. This is just something that happens, and the best you can do is contact Amazon.

- Python - if you use a package that is namespaced, you'll need to do some magic with the 'site' module to get that package imported.

- Short execution timeouts means you have to go to some ridiculous ends to process long running tasks. Step functions are a hack, not a feature IMO.

- It's already been said, but the API Gateway is shit. Worth repeating.

Long story short, my own personal preference is to simply set up a number of processes running in a group of containers (ECS tasks/services, as one example). You get more control and visibility, at the cost of managing your own VMs and the setup complexity associated with that.

cjhanks 3 days ago 0 replies      
Developing Lambda is an absolutely terrible experience. Tightening the integration between CloudFormation, API-Gateway, and Lambda would really improve the situation. For example, a built-in way to map requests/responses between API-Gateway and Lambda which didn't involve a janky parsing DSL would be pretty nice.

The strategy Lambda seems to suggest you implement for testing/development is pretty laborious. There's no real clear way for you to mock operations on your local system and that's a real bummer.

A lot of things you run into in Python lambda functions are also fairly unclear. Python often will compile C-extensions... I could never figure out if there was really a stable ABI or what I could do to pre-compile things for Lambda.

All of those complaints aside - once you deploy your app, it will probably keep running until the day you die. So that's a huge upside. Once you rake through the muck of terrible developer experience (which I admit, could be unique to me), the service simply works.

So, if you have a relatively trivial application which does not need to be upgraded often and needs very good up-time.. it's a very nice service.

cntlzw 6 days ago 0 replies      
Pretty good actually. We started using AWS Lambda as a tool for a cron job.

Then we implemented a RESTful API with API Gateway and Lambda. The Lamdbas are straightforward to implement. API Gateway unfortunately has not a great user experience. It feels very clunky to use and some things are hard to find and understand. (Hint: Request body passthrough and transformations).

Some pitfalls we encountered:

With Java you need to consider the warmup time and memory needed for the JVM. Don't allocate less than 512MB.

Latency can be hard to predict. A cold start can take seconds, but if you call your Lambda often enough (often looks like minutes) things run smooth.

Failure handling is not convenient. For example if your Lamdba is triggered from a Scheduled Event and the lamdba fails for some reason. The Lamdba does get triggered again and again. Up to three times.

So at the moment we have around 30 Lambdas doing their job. Would say it is an 8/10 experience.

xer 6 days ago 0 replies      
At Annsec we are all out on serverless infrastructure and use Lambdas and Step functions in two development teams on a single backlog. Extensibility of a well written lambda is fenomenal. For instance we have higher abstraction lambdas for moving data. We make them handle several input events and to the greatest extent as pure as possible. Composing these lambdas later in Step functions is true developer joy. We unit test them locally and for E2E-tests we have a full clone of our environment. In total we build and manage around 40 lambdas and 10 step functions. Monitoring for failure is conducted using Cloudwatch alarms, Ops Genie and Slack bots. Never been an issue. In our setup we are aiming for an infrastructure that is immutable and cryptological verifiable. It turned out to be bit of a challenge. :)
Jdam 6 days ago 3 replies      
For running Java in Lambda, I had to optimize it for Lambda. To decrease processing time (and in the end the bill), I got rid of all reflection for example and though twice when to initialize what and what to make static. Also, Java Cold Start is an issue. I fixed this with creating a Cloudwatch Trigger that executes the Lambda function every minute to keep it hot. Otherwise, after some minutes of no-one calling the function, it takes 10+ seconds to respond. But if you use Python for example, you don't run into this issue.I built complete backends on top of Lambda/API Gateway/Dynamo and having "NoOps" that also runs very cheap is a killer argument for me.
eknkc 6 days ago 1 reply      
We use Node.JS lambda functions for real time image thumbnail generation and scraping needs. As well as mirroring our S3 buckets to another blob storage provider and a couple of periodic background jobs. It works beautifully. It's a little hard to debug at first but when it's set up, both pricing and reliability is really good for our use cases.

I think a lot of people try to use the "serverless" stuff for unsuitable workloads and get frustrated. We are running a kubernetes cluster for the main stuff but have been looking for areas suitable for lambda and try to move those.

mfrye0 5 days ago 0 replies      
I started off doing manual build / deploy for a project and it was a total pain in the ass. From packaging the code, to versioning, rollbacks, deploy. Then that doesn't even include setting up API Gateway if you want an endpoint for the function.

Since then I've been using Serverless for all my projects and it's the best thing I've tried thus far. It's not perfect, but now I'm able to abstract everything away as you configure pretty much everything from a .yml file.

With that said, there are still some rough spots with Lambda:

1) Working with env vars. Default is to store them in plain text in the Lambda config. Fine for basic stuff, but I didn't want that for DB creds. You can store them encrypted, but then you have to setup logic to decrypt in the function. Kind of a pain.

2) Working within a subnet to access private resources incurs an extra delay. There is already a cold start time for Lambda functions, but to access the subnet adds more time... Apparently AWS is aware and is exploring a fix.

3) Monitoring could be better. Cloudwatch is not the most user friendly tool for trying to find something specific.

With that said, as a whole Lambda is pretty awesome. We don't have to worry about setting up ec2 instances, load balancing, auto scaling, etc for a new api. We can just focus on the logic and we're able to roll out new stuff so much faster. Then our costs are pretty much nothing.

davidvanleeuwen 6 days ago 1 reply      
After multiple side projects with Lambda (e.g. image processing services), we finally implemented it on larger scale. Initially we started out without any framework or tool to help, because there we pretty much non-existent at that time. We created our own tool, and used Swagger a lot for working with API gateway (because it is really bad to work with). Over time everything smoothened out and really worked nicely (except for API Gateway though). Nowadays we have everything in Terraform and Serverless templates, which really makes your life easier if you're going to build your complete infrastructure on top of AWS Lambda and other AWS APIs. There are still a bunch of quarks you have to work with, but at the end of the line: it works and you don't have to worry much about scaling.

I'm not allowed to give you any numbers; here's an old blogpost about Sketch Cloud: https://awkward.co/blog/building-sketch-cloud-without-server... (however, this isn't accurate anymore). For this use-case, concurrent executions for image uploads is a big deal (a regular Sketch document can easily exist out of 100 images). But basically the complete API runs on Lambda.

Running other languages on Lambda can be easily done and can be pretty fast, because you simply use node to spawn a process (Serverless has lots of examples of that).

Let me know if you have any specific questions :-)

Hope this helps.

viw 5 days ago 0 replies      
Can talk only about the node.js runtime with native add-ons. Using it for various automation tasks less then 100 invocations a day where it is the most convenient solution out there for peanuts. We also use it for parsing Swagger/API Blueprint files, here we talk 200k+ invocations a day and works great once we figured out logging/monitoring/error handling and limited output (6MB). We do not use any framework because they mostly are not flexible enough but apex (http://apex.run/) and serves us well. We've hit couple of times some limits but as it is invocation per request only some calls failed and the whole service was unaffected. I see the isolation as a big benefit you get. One thing which sucks is that if it fails (and it is not your code) often you have no idea why and if anything can be done. We use it together with AWS API Gateway and the Gateway part is sub par. The gateway does not support correct HTTP like 204 always returns a body and god forbid if you want something else than application/json. To sum it up lambda is great with some minor warts and the API gateway is OK but can easily imagine it much better.
rowell 4 days ago 0 replies      
I've used it in production and we're building our platform entirely in Serverless/AWS Lambda.

Here are my recommendations:

1) Use Serverless Framework to manage Functions, API-Gateway config, and other AWS Resources

2) CloudWatch Logs are terrible. Auto-stream CloudWatch Logs to Elastic Search Service and Use Kibana for Log Management

3) If using Java or other JVM languages, cold starts can be an issue. Implement a health check that is triggered on schedule to keep functions used in real-time APIs warm

Here's a sample build project I use: https://github.com/bytekast/serverless-demo

For more information, tips & tricks: https://www.rowellbelen.com/microservices-with-aws-lambda-an...

lovehashbrowns 5 days ago 0 replies      
I've only been using it for one project right now. I made an API that I can use to push security-related events to a location that a hacker couldn't access, even if they get root on a local system. I use it in conjunction with sec (Simple Event Correlator). If sec detects something, e.g. a user login, or a package install, it'll send the event to the API in AWS Gateway + Lambda. The event then gets stored in a DynamoDB table, and I use a dashing.io dashboard to display the information. It works super well. I still need to convert my awful NodeJS code to Python, but that shouldn't take long.

I do remember logging being a confusing mess when I was trying to get this started. I feel better about the trouble I had now that I see it wasn't just me. But for a side project that's very simple to use, Lambdas have been a blessing. I get this functionality without having to manage any servers or create my own API with something like Python+Flask. Having IAM and authentication built in for me made the pain from the initial set-up so worth it.

gaius 4 days ago 0 replies      
I've only played with it as opposed to deploying Prod but guve Azure Functions a try too https://azure.microsoft.com/en-us/services/functions/
marcfowler 6 days ago 1 reply      
We use it with node for a bunch of things like PDF generation, asynchronous calls to various HTTP services etc. I think it's excellent.

The worst part about it by far is CloudWatch, which is truly useless.

Check out https://github.com/motdotla/node-lambda for running it locally for testing btw - saved us hours!

meekins 5 days ago 0 replies      
We're doing both stream processing and small query APIs using Lambda.

A few pointers (from relatively short experience):

- The best UC for Lambda seems to be stream processing where latency due to start up times is not an issue

- For user/application-facing logic the major issue seems to be start-up-times (esp. JVM startup times when doing Java or your API gets called very rarely) and API Gateway configuration management using infrastructure as code tools (I'd be interested in good hints about this, especially concerning interface changes)

- The programming model is very simple and nice but it seems to make most sense to split each API over multiple lambdas to keep them as small as possible or use some serverless framework to make managing the whole app more easy

- This goes without saying, but be sure to use CI and do not deploy local builds (native binary deps)

zurn 5 days ago 1 reply      
For a serverless system that uses Lambda together with eg CloudFormation, Dynamo, and S3, Cognito etc - it's pretty low level and you spend a lot of time understanding, refining & debugging basic things. The end-to-end logging and instrumentation throughout the services used by your app weren't great.

Doesn't like big app binaries/JARs and Amazon's API client libs are bloated - Clojure + Amazonica goes easily over the limit if you don't manually exclude some Amazon's API JDKs from the package.

On the plus side, you can test all the APIs from your dev box using the cli or boto3 before doing it from the lambda.

Would probably look into third party things like Serverless next time.

ransom1538 5 days ago 0 replies      
I used it for converting images to BPG format and do resizing. I really enjoyed it. Basically with Docker/lambda these days I feel like the future will be 'having code' and then 'running it' (no more ssh, puppet, kuberdummies, bash, vpc, drama). Once lambda runs a docker file it might take over middle earth. These were my issues with lambda:

1. Installing your own linux modifications isn't trivial (we had to install the bpg encoder). They use a strange version of the linux ami.

2. Lambda can listen to events from S3 (creation,deletion,..) but can't seem to listen to SQS events WTF? It seems like amazon could fix this really easily.

3. Deployment is wonky. To add a new lambda zip file you need to delete the current one. This can take up to 40 seconds (which you would have total downtime).

shakna 6 days ago 0 replies      
- Cheap, especially for low usage.

- Runs fast, unless your function was frozen for not enough usage or the like

- Easy to deploy and/or "misuse"

- Debugging doesn't really work

All in all, probably the least painful thing I've used on AWS. But that doesn't necessarily mean much.

maephisto 5 days ago 1 reply      
A couple of months ago, I've started using AWS Lambda for a side project. The actual functions were pretty easy to code using `nodejs` and deploying them with `serverless` but the boilerplate to opening them via an http API was the real bummer. IAMs, routing and all kind of other little things standing in the way of actual productive work.Some time after that I tried to setup GCloud Functions and to my surprise that boilerplate was minimal! Write your function and have accessible with just a couple of commands. IMHO GCloud Functions is way more developer friendly and AWS Lambda.
alexbilbie 6 days ago 0 replies      
If you need to store environment variables easily and securely take a look at EC2 Parameter Store - you can fetch the relevant parameters on startup and they are automatically encrypted and decrypted using KMS for you
rlv-dan 6 days ago 0 replies      
A session I remember that might be of interest:

Building reactive systems with AWS Lambda: https://vimeo.com/189519556

aeikenberry 5 days ago 1 reply      
We run many microservices on Lambda and it has been a pleasant experience for us. We use Terraform for creating, managing environment variables, and permissions/log groups/etc. We use CodeShip for testing, and validating and applying Terraform across multiple accounts and environments.

For logging, we pipe all of our logs out of CloudWatch to LogEntries with a custom Lambda, although looking at CloudWatch logs works fine most of the time.

ajeet_dhaliwal 5 days ago 0 replies      
It's been great for using as 'glue' to do small tasks like clean ups in our case or other short lived minor tasks. I haven't used it for anything major though, only for minor tasks that are easier or more convenient to do with Lambda rather than a different way. The real value comes from the integration with other AWS services, for example, for developers using DynamoDb Lambdas make a lot of maintenance of records far easier with streams events.
djhworld 6 days ago 0 replies      
Have used it in production for > 2 years, mainly for ETL/Data processing type jobs which seems to work well.

We also use it to perform scheduled tasks (e.g. every hour) which is good as it means you don't have to have an EC2 instance just to run cron like jobs.

The main downside is Cloudwatch Logs, if you have a Lambda that runs very frequently (i.e. 100,000+ invocations a day) the logs become painful to search through, you have to end up exporting them to S3 or ElasticSearch.

eloycoto 6 days ago 0 replies      
I'm using it for a year in a half, and I'm more than happy, The cost increments when you have much load, but I am a happy user to use it for these small applications that need to be always up.

Need to say, that you should use gordon<https://github.com/jorgebastida/gordon> to manage it, Gordon makes the process easier.


jakozaur 6 days ago 0 replies      
So far used only for toy/infrequent use cases and it works there well. E.g. Slack command, integration with different systems, cron style job.
rmccue 6 days ago 0 replies      
Pretty great, we're using it for resizing and serving images for our clients (large media companies, banks, etc): https://hmn.md/2017/04/27/scaling-wordpress-images-tachyon/

API Gateway is a little rougher, but slowly getting there.

StreamBright 5 days ago 0 replies      
We have moved our database maintenance cron jobs to Lambda as well as the image resize functionality. General experience is very positive after we figured out hot to use Lambda from Clojure and Java. People worried about JVM startup times: Lambda will keep your JVM up and running for ~7 minutes after the initial request and you can achieve low latency easily.
Dawny33 6 days ago 1 reply      
- We use Lambda along with Ansible to execute huge, distributed ML workloads which are (completely)serverless. Saves a lot of bucks, as ML needs huge boxes.

- For serverless APIs for querying the S3 which is a result of the above workload

Difficulties faced with Lambda(till now):

1. No way to do CD for Lambda functions. [Not yet using SAM]

2. Lambda launches in its own VPC. Is there a way to make AWS launch my lambda in my own VPC? [Not sure.]

dlanger 5 days ago 1 reply      
Hey everyone, I'm Daniel Langer and I help build lambda monitoring products over at Datadog. I see lots of you are unhappy with the current monitoring solutions available to you. If anyone has thoughts on what they'd like in a Lambda monitoring service feel free to email me at daniel.langer@datadoghq.com
jonathanbull 5 days ago 0 replies      
We use Lambda extensively at https://emailoctopus.com. The develop-debug cycle takes a while, but once you're up and running, the stability is hard to beat. Just wish they'd raise that 5 minute execution limit so we can migrate a few more scripts.
adrianpike 5 days ago 0 replies      
It's good. We're using it for a ton of automation of various developer tasks that normally would get run once in a while (think acceptance environment spinup, staging database load, etc.).

It fails once in a while and the experience is bad, but that's mostly due to our tooling around failure states instead of the platform itself.

tommy5dollar 6 days ago 0 replies      
Been using it for about 6 months with Serverless for Node API endpoints and it's great so far!

The only negatives are:- cold start is slow, especially from within a VPC- debugging/logging can be a pain- giving a function more memory (~1GB) always seems to be better (I'm guessing because of the extra CPU)

ahmednasir91 6 days ago 0 replies      
- When using with API Gateway the API response time is more than 2-3 seconds for a NodeJS lambda, for Java it will be more.- Good for use cases for example -- cron - can be triggered using Cloudwatch events.-- Slack command bot (API Gateway + Lambda) the only problem is timeout.
erikcw 5 days ago 1 reply      
Lots of great comments here. I'd like to add that being limited to 512mb of working disk space at /tmp has been a stumbling block for us.

Would be really great to have this configurable along with CPU/memory.

Additionally being able to mount and EFS volume would be very useful!

betimd 6 days ago 0 replies      
I'm having around 4 mln lambda executions per month, mostly on data processing and I'm happy in overall with performance and easy of deployment. Debugging is hard, frameworks are still very mature. I use AWS SDK and C# and I'm having quite good experience.
akhatri_aus 6 days ago 3 replies      
- There is a surprisingly high amount of API gateway latency

- The CPU power available seems to be really weak. Simple loops running in NodeJS run way way slower on Lambda compared to a 1.1 GHz Macbook by a significant magnitude. This is despite scaling the memory up to near 512mb.

- Certain elements, such as DNS lookups, take a very long time.

- The CloudWatch logging is a bit frustrating. If you have a cron job it will lump some time periods as a single log file, other times they're separate. If you run a lot of them its hard to manage.

- Its impossible to terminate a running script.

- The 5 minute timeout is 'hard', if you process cron jobs or so, there isn't flexibility for say 6 minutes. It feels like 5 minutes is arbitrarily short. For comparison Google Cloud Functions let you work 9 minutes which is more flexible.

- The environment variable encryption/decryption is a bit clunky, they don't manage it for you, you have to actually decrypt it yourself.

- There is a 'cold' start where once in a while your Lambda functions will take a significant amount of time to start up, about 2 seconds or so, which ends up being passed to a user.

- Versions of the environment are updated very slowly. Only last month (May) did AWS add support for Node v6.10, after having a very buggy version of Node v4 (a lot of TLS bugs were in the implementation)

- There is a version of Node that can run on AWS Cloudfront as a CDN tool. I have been waiting quite literally 3 weeks for AWS to get back to me on enabling it for my account. They have kept up to date with me and passed it on to the relevant team in further contact and so forth. It just seems an overly long time to get access to something advertised as working.

- If you don't pass an error result in the callback callback, the function will run multiple times. It wont just display the error in the logs. But there is no clarity on how many times or when it will re-run.

- There aren't ways to run Lambda functions in a way where its easy to manage parallel tasks, i.e to see if two Lambda functions are doing the same thing if they are executed at the exact same time.

- You can create cron jobs using an AWS Cloudwatch rule, which is a bit of an odd implementation, CloudWatch can create timing triggers to run Lambda functions despite Cloudwatch being a logging tool. Overall there are many ways to trigger a lambda function, which is quite appealing.

The big issue is speed & latency. Basically it feels like Amazon is falling right into what they're incentivised to do - make it slower (since its charged per 100ms).

PS: If anyone has a good model/providers for 'Serverless SQL databases' kindly let me know. The RDS design is quite pricey, to have constantly running DBs (at least in terms of the way to pay for them)

forgottenacc57 5 days ago 0 replies      
In the end it's only the web server that is serverless, you still need other servers depending on your use case, and hey, web servers aren't that hard to run anyway.
unkoman 6 days ago 1 reply      
- Decouple lambdas with queues and events, SQS, SNS and S3 events are your friends here

- Use environment variables

- Use step functions to create to create state machines

- Deploy using cloudformation templates and serverless framework

synthc 5 days ago 0 replies      
We had a bad experience: we accidentally made an error in one function that got called a lot, which blocked other functions from runnning. Yay for isolation!
obrit 6 days ago 0 replies      
I'd like to use Lambda@Edge to add headers to my CloudFront responses. Does anybody have any idea when this might be released from preview?
lunch 5 days ago 2 replies      
Can anyone speak to continuous deployments with Lambda, where downtime is not an option? Is it possible to run blue green deployments?
david90 6 days ago 1 reply      
I tried using Lambda, but need to set up the API gateway before using as well. Painful logging and parameter forwarding.
forgottenacc57 5 days ago 0 replies      
Lots of people saying the API gate away is hard.

You don't need to use the API gateway.

Just talk direct to Lambda.

caseymarquis 6 days ago 0 replies      
Any comparisons to GCE and Azure's offerings for those who have used both?
goldenkey 6 days ago 1 reply      
Works terribly. It's basically a thin wrapper around a shoddy jar framework. All the languages supported are basically shit-farmed from the original Java one. The Java one is the only one that works half decently.
Ask HN: Who's running a profitable newsletter?
185 points by cronjobma  4 days ago   92 comments top 30
duck 4 days ago 6 replies      
Hacker Newsletter (http://hackernewsletter.com) makes a few thousand a month from sponsors. It could easily make more if I were more of a salesperson, but I'm happy with it as is. Just to be clear though, it took some time to get to that. I'm actually about to hit the seven year mark and issue #357. Speaking of... I'm working on tomorrow's issue as I type this!
DanLivesHere 4 days ago 3 replies      
I am, at http://nowiknow.com

It's a general trivia email. Every day I send a fun fact of the true story behind it.

Been writing for seven years. Not going to disclose how much I make a month, but I describe it as not quite full time job money but a lot more than beer money.

decryption 4 days ago 3 replies      
I run The Sizzle (https://thesizzle.com.au), which is a daily roundup of tech news with an Aussie slant. Any Australians who enjoy HN should check it out!

I've got 445 subscribers that pay $5/m or $50/yr for it. No ads, no tracking, but I do insert affiliate links - primarily eBay.

Costs me about ~$1000/yr to run (Mailchimp, web hosting for a Wordpress blog & Discourse forum and Zapier costs mainly).

This financial year (July 1st 2016 to June 30th 2017), revenue sits at about AUD$18,000. I expect around ~$30,000 next year if there's 0% paid subscriber growth and affiliate link revenue stays the same.

shortformblog 4 days ago 2 replies      
I run Tedium (http://tedium.co), a twice-weekly newsletter that covers obscure topicshalf the time tech, half the time not. I've been doing it two and a half years.

I make money from a variety of sources on it, including affiliate links, sponsorships (I recently had some success with http://upstart.me on this front), donations from readers (both Patreon and PayPal, because folks want options), banner ads, and fees for syndicating the content to outlets like Vice's Motherboard.

The pieces are written more like stories than link roundups, giving them an evergreen appeal. This week I wrote about the history of the 911 system; last week I wrote about CGA graphics and Windex. It actually has a smaller profile than my last project, ShortFormBlog, but it's more sustainable from a financial and work-life balance perspective.

Last month, I did a T-shirt sale with the help of a vendor (Vacord Screen Printing, http://vacord.com) and made a few hundred dollars through that.

All of this together is not enough to stop me from working a day job, but the mixture of sources and the fact that I syndicate content helps build exposure and ensures that if one source is weaker than another on a different month, the whole machine doesn't fall apart.

If you want to run a profitable newsletter, be willing to rely on more than one revenue stream.

refrigerator 4 days ago 1 reply      
I don't run these but here's a couple that I know of:

- Stratechery (Ben Thompson) - $100k/month (conservative estimate) via subscriptions (https://www.stratechery.com)

- WTF Just Happened Today (Matt Kiser) - $8k/month via Patreon (https://www.patreon.com/wtfjht)

tittietime 4 days ago 1 reply      

(though the landing page is SFW, the newsletter is not)

I use the newsletter to market tshirts. I sell through about 100 of each design over the course of 2 months. It pays for hosting and funds the next shirt.

List growth has been slow and steady and im looking to increase my shirt order on the next design.

stanislavb 4 days ago 0 replies      
I'm running and moderating all the newsletters of the LibHunt Network - https://www.libhunt.com . There are 18 "Awesome" Newsletters with around 5,000 subscribers altogether. The newsletters are making some money and there is interest in them definitely. The sales part is the most difficult one though.

My most popular newsletters are about Python (https://python.libhunt.com/newsletter/58), Go (https://go.libhunt.com/newsletter/58) & Ruby (https://ruby.libhunt.com/newsletter/58)

P.S. it took me around 13 months to reach the 5k subs...

asanwal 4 days ago 2 replies      
CB Insights (www.cbinsights.com/newsletter)

We have 289,000 on the newsletter which represents a large group of VC, tech M&A, corporate strategy and startup folks interested in data-driven discussion of technology trends. It's the primary way we sell subscriptions to our SaaS platform.

We messed around with ads in the newsletter but they don't monetize nearly as well as the "house ads" to our data/product or to our events.

It's our company's golden goose.

jkmcf 4 days ago 2 replies      
I don't know if they are profitable, but Peter Cooper has a whole bunch of good ones at https://cooperpress.com/
sampl 4 days ago 2 replies      
According to Indie Hackers, Scotts Cheap Flights (discount airfare newsletter) does $320k/mo

Interview here: https://www.indiehackers.com/businesses/scotts-cheap-flights

davidverhasselt 4 days ago 1 reply      
HNDigest (https://hndigest.com) is profitable some months, others not so much. Turns out it's quite expensive to send a ton of emails if you don't have sponsors.

I should probably spend more time finding sponsorship.

stevesearer 4 days ago 2 replies      
My site https://officesnapshots.com has a weekly newsletter which is basically an email update of the previous week's new content. It is profitable, though just an extension of the advertising options on the rest of the site.

I have a sign up form at the bottom of my site and use double opt-in to make sure people really want to subscribe. I also periodically trim the list down by removing people who don't open or click anything. I figure 1000 subscribers and a 50% open rate is better than 5000 and a 10% open rate as the list is more highly engaged. Plus on MailChimp you're wasting $$ sending to people who don't engage.

Mojah 4 days ago 1 reply      
Hi there!

I write cron.weekly [1], a weekly newsletter on Linux & open source. When I started around 2y ago there wasn't much competition.

I'm at 6k subscribers now and making roughly 1k (eur) a month via sponsorships. Members don't pay, it's entirely sponsor driven.

It took a little over a year of hard work for free before the first sponsor landed, right now it's pretty good value for the time I put in. As the subscribers grow, that ratio should only get better.

[1] https://www.cronweekly.com

DanBC 4 days ago 0 replies      
Off topic, but I'd pay (a small amount) for something like Need to Know.


NtK pioneered some things that got taken up elsewhere: dohgifs highlighted terrible algorithmic placement of online ads next to news stories. Private Eye now does this as Malgorithms.

A newsletter like this would fare better now we have things like Patreon.

ilamont 4 days ago 0 replies      
Timmerman Report (biotech) is doing well, judging by some comments I've seen posted by its founder, a former Xconomy journalist who started the newsletter full time about two years ago. Not sure if it's profitable, though.

In the indie book publishing world, I subscribe to a paid newsletter called The Hot Sheet (http://hotsheetpub.com/). I pay $60/year or thereabouts, which I think is reasonable considering the insights, analysis, and tips I get every 2 weeks. I doubt it's a full-time income for the two writers, but on the other hand I don't think it's a full-time writing gig, either.

It's worth noting that in many of these niches there is very little in the way of established trade pubs as print magazines covering the industry have folded or become shadows of their former selves when they moved online. It doesn't surprise me that some of the more talented or insightful writers have decided to launch their own brands and build their own audiences.

justinavery 4 days ago 0 replies      
RWD Weekly (http://responsivedesignweekly.com) has two advertising spots in each newsletter. The primary spot runs for $450-500 and promoted link runs at $130 a week.

The newsletter fills probably 3/4 of the placements and then I use the other placements to promote conferences that I love. This is usually in exchange for a ticket (which I give away if I can't attend) and media sponsorship which gives the newsletter some extra exposure.

I only introduced advertising after the subscribers reached over 5000 and the Mailchimp costs became a little too much, now it's sitting just over 29k subscribers. It's a great side project that I'd love to invest more time towards but at the moment it makes enough to cover mailchimp, servers, cloudflare, speedcurve and allows me to patron a couple of other newsletters that I love.

lathiat 4 days ago 0 replies      
Presumably not profitable at this stage, but inside.com founded by (I believe...) Jason Calacanis to try out lots of different e-mail newsletters currently he's funding it, they have some advertisers and I think they are experimenting with user pays?

Another one I know of that is successfully getting a good following is www.thesizzle.com.au

davepoon 4 days ago 0 replies      
http://uxcurator.com (UX newsletter)Posted my site on Hacker News and Reddit for the first launch, and it got a few hundred subscribers, and it has been gradually growing since last 2 years. And it roughly makes ($AUD)1k a month via sponsorships.
guptabot 3 days ago 0 replies      
Run a small weekly newsletter that covers the Indian startup ecosystem. Will be putting out Issue. 34 tomorrow. Gets me 10-12 beers a month. No initial cost to it. Archived via github pages and send via the free mailchimp tier. (https://www.tinyletter.com/harshalbot)Archives: (http://www.harshalgupta.me/categories/#newsletter)
milesaus 4 days ago 0 replies      
I run growth.email (http://growth.email) which is a weekly growth marketing email, listing 10 articles in each issue. I started it at the beginning of this year, have around 1,700 subscribers and make $40 a week from one single ad in each issue.

At this stage, my pitiful MRR covers costs, etc but not all the time I put in. Soon as I get to 10k+, at $25/cpm it starts adding up to $1k a month, which is a little less painful to look at. :)

sippndipp 4 days ago 0 replies      
We're running http://androidweekly.net and http://swiftweekly.com?

It was roundabout 5 years just editing and making no money. Now it's making money - but just a side income.

1. Content is king!2. Start to build a community (if you link someone in your newsletter just ping him on twitter).3. Go to community events.

Doing ads on Facebook and Twitter actually didn't work that well.

fowkswe 4 days ago 0 replies      
The listings project is not mine, but I've always admired Stefanie and her list:


It lists artist studios, coworking and apartment sublets, mostly in NYC and probably does about $500k in revenue year.

Weekly newsletters have been averaging about 300-325 listings @ $30 per week. There are also sponsored emails that I'm sure are in the thousands of dollars per email.

leandot 3 days ago 0 replies      
Hacker News Books http://hackernewsbooks.com is profitable from Amazon referrals, $200-300/month. I am planning to look for some sponsorship but have not had the time. ~1500 tech-savvy readers in the newsletter + several thousand on the web.
eli 4 days ago 1 reply      
Newsletter ads are very effective (and therefore can be extremely profitable) if you have an audience that people who control marketing budgets want to reach.

That said, email is just another medium. There's no one way to make money just like there's no one way to make money with an app.

I'm guessing it's not the kind of newsletter you meant, but we make millions selling ads in B2B email newsletters.

nnn1234 4 days ago 0 replies      
Stratechery? Ben's monetisation is the newsletter
eibrahim 3 days ago 0 replies      
I run http://frontendweekly.co/ but haven't monetized it yet. It has ~2k subscribers (plus ~3500 on medium at medium.com/front-end-hacking)
blairanderson 4 days ago 0 replies      
FYI I don't know if the offer is still out but I remember seeing this a little while back https://twitter.com/peterc/status/717393310080507904
khuknows 4 days ago 0 replies      
https://uimovement.com - ~16k subs, $500-1000+ a month from sponsors. I hardly ever do sales and spend ~1 hour a week on this - I'm sure it could be more profitable with more effort.
GoatOfAplomb 4 days ago 0 replies      
I worked at SmartBrief (smartbrief.com), a company that creates newsletters on behalf of trade associations. The advertising would often yield impressive rates because of valuable niche audience, e.g. heavy equipment financing executives.
foundersgrid 4 days ago 0 replies      
I run https://FoundersGrid.com and we sell our weekly sponsorships ($500 each) most weeks. I'm currently editing edition #358 right now :)
Will Silicon Valley remain the best hub of tech in the next 10 years?
34 points by FahadUddin92  1 day ago   29 comments top 14
matchagaucho 1 day ago 3 replies      
(Disclosure: I live in SF Bay area with a bias towards it's long-term success)

It's difficult to predict anything 10 years out.

But when projecting industry trends within a geography I look to Financial Services (FS) as a comparable.

Both Tech and FS sell "virtual goods and services" with a distribution model that does not necessarily lock them down to a location.

But even after the great depression of 1929 and repeated stock market collapses, New York is still a major FS hub.

So, it's really the people and local supporting infrastructure in a region that keep an industry going; not the distribution model.

I assume Silicon Valley will remain a leading tech hub in both consumer and enterprise tech in 10 years. The supporting infra is taken for granted.

Same thing can similarly be said about L.A. and the movie making business. Nothing prevents other locations from making movies, but it's hard to beat a century of built-up supporting infrastructure.

andrewmb 12 hours ago 0 replies      
To provide more of a direct answer, I think that Shenzhen has really great long-term prospects as a tech/innovation hub. Very large number of investors, existing and large tech/innovation/industry cluster (consumer electronics), and long-term government incentives. You can already start to see the momentum building. I've seen major changes since first doing business there (Feb 2012) and even over the past ~2years that I've lived there.

However, the prospects of moving there are not significantly better than the US. China is opening up new classes of visas and making certain business licenses more accessible, but my general impression from being in the ecosystem and talking with locals and foreigners is that it's difficult to get a sustainable business off the ground. The immigration situation (if that is a goal) is bleak.

MrQuincle 1 day ago 0 replies      
What will be the underlying factors?

+ The move towards more embodied intelligent machines, be it home automation systems, internet of things, autonomous cars, or robots, makes it likely that location is still gonna be important and we will still see hubs indeed. Remote work for software is one thing, for hardware or hybridware it's more difficult.

+ Ten years might not be long from a technical point of view, but this is about people migrating to other places. Population dynamics might not as fast-paced as tech.

+ One thing is inevitable: a financial downtime between now and then. How the Valley will react, depends... It means fewer venture-backed new vultures on the market, a less crazy search for personnel, etc.

+ Economies of scale will always apply. High densities of companies, people, universities, homes, and other entities, will lead to higher and higher productivity. If you really want to compete with the Valley you'll have to work on these metrics as a region. Check https://www.citylab.com/life/2012/12/why-denser-cities-are-s....

Jabanga 1 day ago 0 replies      
I think without a doubt it will remain the best tech hub in the world.

The change that may occur is that Silicon Valley, while remaining in the lead, will see its centrality diminished by the emergence of decentralized funding using ERC20 tokens, aka the token sale model, which is quickly approaching traditional venture capital volumes [1].

I don't believe this would hurt SV's economy, as the decline in funding friction, while having very geographically distributed direct benefits, will have the second order effect of expanding the tech sector, and with it, tech companies operating in sectors not currently amenable to these new nontraditional enterprise structures and funding models.

[1] https://en.wikipedia.org/wiki/List_of_highest_funded_crowdfu...

refurb 1 day ago 1 reply      
A great analogy might be the biotech industry. The Bay Area was dominant for most of the first 30 years. Much of the original research was done at UCSF and Genentech was the first biotech company.

SF is still doing well, but it's no longer #1 when it comes to biotech VC dollars. That title goes to Boston now. And I can say that working in the industry, Boston has much more buzz when it comes to biotech than SF at this point.

infiniteparamtr 1 day ago 0 replies      
The boom in Silicon Valley is largely because of the internet. This has resulted in much of the world connecting and becoming capable of equal economic input/output - therefore the next "place like Silicon Valley" could ironically be anywhere and everywhere, since information is now far less exclusive.
jy1 1 day ago 0 replies      
10 years is not too long. You should think about what you think are game changers in the next 10 years. I think self-driving cars, on-demand everything, VR, crypto-currencies, video will be the future. Thus, Silicon Valley is unlikely to be dethroned.
cykosyc 3 hours ago 1 reply      
i live in Phoenix, AZ and tech start ups and companies are relocating here and somewhere I hear that Phoenix will be the next Silicon Valley and tech hub
crispytx 1 day ago 0 replies      
It seems like the local governments are intentionally inflating housing prices which I think will end up driving companies out of town. I know I sure as hell don't want to move there.
SirLJ 16 hours ago 0 replies      
The VCs are the driving force I would say...
shmerl 1 day ago 0 replies      
These things should spread.
Temasik 1 day ago 1 reply      
Singapore? Really? LoLThe culture there is cheap the only good thing here is the tax
Huhty 1 day ago 1 reply      
Hard to predict based on Trump alone.
touchofevil 1 day ago 2 replies      
You could consider Silicon Beach (Los Angeles) instead. Rents are cheaper and google and snapchat are located there.
Ask HN: Business that should not scale
7 points by paulryanrogers  1 day ago   5 comments top 4
byoung2 1 day ago 1 reply      
Anything in the "lifestyle business" category by definition doesn't scale past a certain point. Also, anything that requires a licensed individual (e.g. plumber, electrician). There could be an interesting business opportunity in Uber-izing networks of these small businesses. For example, I need a dog sitter last minute but I don't want to scour craigslist or have to remember which of my neighbors dog sits.
taprun 1 day ago 0 replies      
Yes. Anything that does not benefit from either network effects or economies of scale should not scale.

Network effects - If I created the first telephone network, the first phone is basically a paperweight, but the more customers I convince to buy, the more useful each phone is to my other customers.

Economies of scale - Similarly, if I have a car company, the more I scale, the more efficient I can become (I can invest more in engineering and machinery).

nnn1234 1 day ago 0 replies      
Think of trust proxies or an external dependant factor like geographiesAn exampleA paid Meetup group or a dating app for within a city. These work better at smaller scale than large.

The opportunity is where someone or something causes a change in the underlying restriction such that an infrastructure can be built at scale.So the answer to your question depends on time and tech

cm2012 1 day ago 0 replies      
Off topic, but rover.com is awesome for their network of part time sitters.
Ask HN: Declining the job offer after accepting
27 points by gandutraveler  3 days ago   36 comments top 17
ChuckMcM 3 days ago 2 replies      
Is there a right way? Not really. When you decline post acceptance the company will create a record of this in their applicant tracking system (its a data base) and they will never offer you a job again (because they aren't sure you're going to take it even if they did). The recruiter(s) you worked with at that company are probably contractors. They will move around to other companies in their careers, if you are the in the unlikely situation where you are interviewing at a company and suddenly they decide not to proceed. That could be why. Generally recruiters work with thousands of people, but only a small number of them actually accept an offer and then later just back out. If you are fortunate and don't have a very unique name then it might be a problem but, if there are very few engineers with the same name it can be a bigger problem.

If you are exceptionally unlucky and you decide to not work at this major tech company and then your friend who pitched the startup can't come through. You are doubly in trouble (can't go back and don't have a job) not to mention a partially transferred visa.

The smart thing to do is to take the job at the Major Tech corp, spend a couple of years saving some money and learning what you can, and then joining your friend with the startup if they still look like a viable offer. That strategy maximizes your future value. You have additional work experience, your friend knows that you will stick with your word even when you might not want to, and you will have a bit more knowledge of how well your friend can put together a startup or not.

elmerfud 3 days ago 2 replies      
Don't worry about it. You won't be the first nor the last person who changes their mind on a job change, and I promise they have had it happen before. To retract your acceptance you should just need to terse but professional. The general format would be:

- A sentence indicating you're withdrawing your acceptance of the offer.

- One or two sentences explaining you have an unforeseen unique opportunity. No need for great detail.

- One or two sentences thanking them for their consideration, and hope for future opportunities together.

That's really all there is to it. A professional company that values it's people will understand that these things happen in life and will not hold any thing against you.

sokoloff 3 days ago 0 replies      
I was working on a startup and we were out of money. I applied for and found another job and let the founder know. On the Sunday before I was to start at the new place, we secured another round of funding, so the first thing I did on Monday was report to my new job and the second thing I did was resign from that job.

New boss was pissed, but it was the right call for me (and I couldn't have done it any earlier).

In your case, I'd give careful thought to the visa issue; I wouldn't sweat it on behalf of the major tech company at all. They've no doubt had worse behavior from candidates and they'll survive the loss. You probably won't be blackballed at that company, but do expect a question about it if you do decide to apply later.

pkaye 3 days ago 1 reply      
As a hiring manager I never take it personally if they decline the offer before the start date. There are a few that never mention it till the starting date and at that point feel they were just hanging on for a better offer and wasted my time so personally would never hire them again in the future.
wallflower 3 days ago 0 replies      
I don't know you, but I strongly feel that you are making the wrong decision.

Let's go over the points...

Your friend pitched a startup idea. Based on your wording, it sounds like it is more an idea than an actual company. Either way, unless your friend's startup has the legal resources to sponsor a H1B visa and the financial capability to pay you a prevailing wage, you run the risk of not being able to transfer your visa. The government agency can reject your visa transfer, as well.

By declining the offer, you are putting yourself in jeopardy of losing your ability to work in the country.

I assume you are not married, but for the sake of this response, let's assume you are. What would your wife think about this? Don't be so selfish, imagine that others would be affected.

You are assuming that you will be able to work at the startup legally (H1B transfer). I don't believe you can assume this. Does your friend even know what is involved in sponsoring a H1B? Major tech companies have dedicated departments for managing the H1B process for their employees.

Good luck!

smt88 3 days ago 1 reply      
Do it ASAP. Details are mostly unimportant, but be honest.

The more time and money they spend on you before you tell them, the angrier they'll be. They may already have grounds to sue you, although I've never heard of a company doing that in such a situation.

bsvalley 3 days ago 1 reply      
How can you join a startup (idea stage) on an H1B? Cause make sure you can actually work legally for that startup before doing anything. Technically, you can't unless the startup is already established.
pm24601 3 days ago 0 replies      
If you have visa issues... how is your friend's cool startup going to help?

Visa issues even pre-trump were hard.

Does your friend have funding?

Does your friend have market validation?

What will happen to you personally if the startup fails - like so many do?

dudul 3 days ago 0 replies      
If you need a visa to work it's probably safer to go with the bigger company. Does your friend realoze they'll have to apply for your visa?
atsaloli 2 days ago 0 replies      
I did that once. I had asked for a raise and didn't get one. I let my boss know I'd be looking elsewhere. Still didn't get one. Found another job and accepted it and quit the old job which promptly resulted in an offer of a large raise on the old job - larger than the salary at the new place. The old job was right next door to me and the new one across town.

I went to the new place with a huge gift basket and apologized and explained that I wouldn't be starting after all because I got a counter offer I couldn't turn down. They looked stunned. I left. I worked at the old place another several years and ended up rising to Director of Operations before leaving to work on my own company. I still feel bad about it but it was the right decision overall.

CodeWriter23 3 days ago 0 replies      
No judgement here. I suggest you check yourself out to make sure this isn't about fear, cold feet, etc.
mahesh_gkumar 23 hours ago 0 replies      
If you really want to go with the startup, I recommend offering to pay back the money the tech company is spending on doing your visa transfer. This might keep a thin bridge alive between the two of you. Also, make sure the startup knows what is involved in doing a visa transfer, GC after that etc. Good luck!
anon543210 3 days ago 0 replies      
I would suggest you keep the job and work on the startup in off hours. Until you have a good idea of how viable the startup will be, just stick at the big company
late2part 3 days ago 0 replies      
Renege as you see fit. The employment offer was at-will, right? I accepted and then turned down employee #5 at a multi-billion dollar company and never regretted it and it has never been an issue.
cvaidya1986 3 days ago 0 replies      
I would do the big co whilst moonlighting and only after funding comes in jump ship esp. considering the visa.
probinso 3 days ago 0 replies      
Do it quickly. rip off the Band-Aid
fancyfredbot 3 days ago 2 replies      
Have you signed a contract?
Ask HN: Best Self-Hosted, Server-Side Image Optimization Tools?
61 points by DivineTraube  4 days ago   33 comments top 21
wsxiaoys 4 days ago 1 reply      
I believe the most complete solution is a full unix environment with shell piping the image stream. so i make https://bash.rocks, which is a web frontend backed by a unix environment.


1. Resizing with imagemagick: https://bash.rocks/Gxlg31/3

2. Resizing and convert to webp: https://bash.rocks/7J1jgB/1

After creating the snippet, you could either use GET https://bash.rocks/0Be95B (query parameters become environment variable) or POST https://bash.rocks/jJggWJ (request body become stdin).

It's not hard to roll your backend like this for private usage (simply exec from node). I'm also working on an open source release.

matrix 4 days ago 0 replies      
For Java (or other JVM languages such as Kotlin), TwelveMonkeys is powerful and does not have external dependencies:


Theodores 4 days ago 0 replies      
Google Pagespeed for Nginx and Apache is another way to go. The benefit of this approach is that you don't have to bulk out your code.

As for metadata, today I decided to add it back in.


For ecommerce it will eventally help to have product data, e.g. brand, product name etc embedded in the image.

My other tip if you go the Imagemagick/PAGESPEED route then you can use 4:2:2 colour space and ditch half the bits used for chroma.

tobltobs 4 days ago 2 replies      
In my experience not the optimization is the hard part. But the eventually necessary scaling down you have to do first.Doing this with Imagemagick, Pillow or whatever will result in possible OOMs or gigabyte sized, not so temporary files filling your /tmp dir for large source images.

The only tool I ever found which does this job reliable even for huge images is http://www.vips.ecs.soton.ac.uk .

cbr 4 days ago 0 replies      
I used to work on mod_pagespeed / ngx_pagespeed, and I'm very proud of our image optimization: https://modpagespeed.com/doc/filter-image-optimize

It compresses and optimizes png, gif, and jpeg, creates webp for browsers that support it, inlines small images into your html, longcaches images, and even creates srcsets.

ikennachifo 3 days ago 0 replies      
With this recent addition(https://webspeedtest.cloudinary.com) to tools you can use, Cloudinary(http://cloudinary.com) is hands down the best for me, In all the time I've been using it, It usually has a way of meeting all my needs. I'm obsessed with page speeds and Optimization, like I have sleepless nights optimizing, but since using Cloudinary, I can sleep well on some nights now. And No! I don't work there, but bless the people that work there.
fweespeech 4 days ago 0 replies      
> What is the most complete solution you are aware of that compresses & optimizes png, jpeg, and webp and can be operated on a server? It should not only be able to optimize as part of the build process but also in response to user-generated content.

Tbh the UGC side is just triggering the "build process side" as the upload occurs.

As far as best,


I'd suggest you look there for some decent examples of how to go about it. They may be defunct but I use a similar approach (slightly different knob tweaks with the same binaries) and it works fine. May not be 100% optimal but its good enough imo.

vladdanilov 4 days ago 0 replies      
I'm working on Optimage [1] for both lossless and visually lossless (lossy) optimizations. Right now it's available for Mac only. But I have a Linux version working internally as part of the upcoming Server plan.

[1] http://getoptimage.com

eeeps 4 days ago 1 reply      
Disclaimer: I work for Cloudinary. But: all of the services that you mention have an awful lot to offer, over roll-your-own solutions. Reliability and scalability, sure but also, right now, just flat-out-better performance and output. From big flashy features like automatic optimization using perceptual metrics and on-the-fly responsive resizing with Client Hints ... all the way down to nitty gritty stuff that doesnt get press releases like, say, dialed-in custom resizing algorithms... in 2017, hosted, paid services can do a lot more a lot better than anything you can set up yourself using free tools.

Images are complicated and important enough that I don't see that changing any time soon.

rawrmaan 4 days ago 1 reply      
Sharp for node.js has proven to be powerful, flexible and fast for my needs: https://github.com/lovell/sharp/
NicoJuicy 4 days ago 0 replies      
I use ImageResizer 4.3.2 for Asp.Net MVC ( it's free), new versions are less free though... Best thing is, if you want to resize, you can just do it through the url. Eg. /Assets/img/logo.png?Width=200
logicuce 4 days ago 0 replies      
I think Thumbor fits the bill very well. In fact, using something like APSL's thumbor docker image [1], you get the complete setup including the optimizers, object detection, etc. ready to go.

It works really well for UGC as an ondemand optimizer but you can easily make some URL calls to include it in the build time as well.

[1] https://github.com/APSL/docker-thumbor

r1ch 4 days ago 0 replies      
I use a combination of jpegoptim, optipng, advpng and zopflipng.

Be especially careful with these utilities when running them on UGC. PNG / JPEG bombs can easily cause OOM or CPU DoS conditions etc.

v3ss0n 4 days ago 1 reply      
pilbox is very powerful : https://pypi.python.org/pypi/pilbox
nielsole 4 days ago 0 replies      
Haven't tried it out, but looked quite promising: https://github.com/thephpleague/glide/Does everything basic, that I would look for in an image API
Mojah 4 days ago 0 replies      
I automated my workflow server side with OptiPNG. https://ma.ttias.be/optimize-size-png-images-automatically-w...
iamonuwa 3 days ago 0 replies      
pilbox is very powerful : https://pypi.python.org/pypi/pilbox

However with the recent addition by cloudinary (https://webspeedtest.cloudinary.com), the tool is awesome for me.

tyingq 3 days ago 0 replies      
https://pngquant.org lossy optimization of png images.
silasb 4 days ago 0 replies      
https://github.com/h2non/imaginary appears to support quality/compression settings.
anilshanbhag 4 days ago 0 replies      
optipng and jpegoptim are pretty good. Have a feeling most of these tools use these utilities inside them.
Ask HN: Which AR SDK to use?
5 points by ice109  1 day ago   1 comment top
askafriend 1 day ago 0 replies      
The right question to ask here is: "What platform should I use that will get me in front of the most consumers/customers as possible and allow me to create a polished mobile experience?"

The answer to that right now is iOS and ARKit. The reason this is true is because there are hundreds of millions of iOS devices out in the wild right now that have the hardware capabilities to use ARKit and sufficiently power AR experiences.

There is no other comparable platform out there that even comes close to that kind of consumer scale in AR or VR.

This is one of the ways Apple's integrated walled-garden approach has inherent value. They can release something like ARKit and be ensured that hundreds of millions of devices can leverage it on day 1.

Ask HN: What was it like to quit your job and focus on your successful startup?
161 points by mattbgates  6 days ago   112 comments top 33
welanes 5 days ago 4 replies      
> What was it like to quit your job and focus on your successful startup?

1. Time became my most valuable asset. Everything was filtered through the lens of "does this save me time?" and so I optimized everything: The gym (worked out at home), shopping (got delivered), dating (used fleshl...joking! :).

In the words of Joel Spolsky, "Every day that we spent not improving our products was a wasted day".

2. I worked harder than ever before. My job was tough but output ebbed and flowed with meetings, management, plus the usual office time wasters. The startup workday is more straightforward: wake up, coffee, write code, listen to users, coffee, learn how to add value to the market, coffee.

3. Every two months or so I look back and shake my head at how lame the product was, how little I knew, and how inefficient my workflow was. Which is to say, I continue to learn at an incredible clip yet realize I still don't know a thing. I expect this trend to continue - if it doesn't, I'm not growing.

So, yeah, overall it's been An Incredible Journey. My only regret is that I didn't start sooner.

It's actually a gift how easy it is to go from idea to product to business. To paraphrase Murakami, 'If you're young and talented (or can code), it's like you have wings'.

We're living in the best of times.

antigirl 6 days ago 4 replies      
This might be slightly offtopic butI've been thinking of working on my own ideas for a decade now. I tried working on projects in the evening and weekends but there isnt enough time. Not only does it effect your social life but also effects your motivation and drive in general. After looking at code on a screen for 7 hours, last thing you want to do is go home and look at more code [I guess this depends on your age, i'm 32 now - not an night owl no more]

Anyway i started contracting last year for this exact reason, at around 300-400 day rate and now i've saved enough to quit and follow my 'dream', my last day is JULY 7th. I have enough savings to last me 2 years, sustaining my current social life. no frugalness.

jasonkester 6 days ago 1 reply      
The biggest change was how much more free time I had.

When you're building a Nights and Weekends side project, you get used to stealing whatever free hours you can to work on the product. But you also necessarily build things so that they don't take up much of your time every day. If they did, it would interfere with your day job and that just wouldn't work.

So when you remove the day job, you find that suddenly you have this successful business that runs itself in the background and you can do pretty much whatever you want with your day.

Most people in this situation will immediately fill that time up with work on the product, and I did to some extent. But I also made sure to take a bunch of that time just to enjoy with my family. I eventually settled on 2-3 days a week where I was "at work", with the rest devoted to other pursuits. Both me and my wife are rock climbers, which is an "other pursuit" that will happily expand to fill the time available. We're also parents, so ditto there.

I also make a point of downing tools for a while from time to time. Again, because I can.

I took the kids out of school and dragged them off backpacking around SouthEast Asia for a few months the first year. We did a couple more medium sized trips this year, and I took the entire Fall and Spring off because those are the best times for Bouldering in the forest here. Again, work is happy to ramp up or down to accommodate because I never shifted it out of that ability to run on nights and weekends.

So now, I burst for a few weeks at a time on work stuff (with possibly a more relaxed definition of Full Time than most would use), then slow down and relax for a bit.

It's actually not so bad.

Grustaf 6 days ago 1 reply      
For me, and probably for most, it's not a matter of quitting your job in order to work on your "successful" startup - if it were already successful then there'd be no issue at all. Rather it's about quitting while the startup is just beginning to look reasonably good, _in order_ to make it a success.

Since I've been working as a mobile developer, and also management consultant (my other career), it's always been extremely easy for me to find a new job whenever I needed, so there has been very little risk involved.

Still, it did require some savings, since our startup is very research intensive and will take several years before we see any revenue. We secured some basic funding now though, and things are looking good for the next stage too so I will only have needed 6 months or so of buffer.

In summary, my view is that if you're a reasonably skilled engineer or have some other attractive occupation, there is nothing to fear. The worst that can happen is really that your startup doesn't work, you'll go back to what you did before with a few months of missed income but with plenty of useful experience.

I don't think there are many situations or cultures where a failed technology startup attempt on your rsum would count against you in any way, in most places quite the opposite.

pedrohidalgo 6 days ago 2 replies      
I did it twice. Both times I failed but I don't regret it. I felt very good when doing it. I lost savings but it was a good live experience.

On the second time I created this plugin: http://plugins.netbeans.org/plugin/61050/pleasure-play-frame... I tried to make a living of this, I only sold 5 licenses of 25 dollars per year and to develop this plugin took me 2 and a half months of hard work.

Didn't have a problem getting a new job both times.

jaequery 6 days ago 2 replies      
Well I ran a solo startup so my experience might be different from others but for me, it was like living a dream. While working full-time somewhere, I started this SaaS business and soon after, the monthly income kept doubling to the point I was able to quit my job knowing my living expenses are cared for. When I quit, it was like wow, the feeling of liberation just hits you so hard. I worked for 7 years prior to doing that and now I was free. The feeling of being able to go outside anywhere at any time of the day, go shopping, or go eat at a nice restaurant, just relax at the beach, stuffs you just couldn't do when you are working full-time somewhere. It's like getting out of jail for the first time. That's what it was like for me to quit my job and focus on my startup.
williamstein 6 days ago 0 replies      
I gave the following talk exactly one year ago right when I decided to quit my academic job to focus on my "startup dream" (now https://cocalc.com): http://wstein.org/talks/2016-06-sage-bp/. It's a year later, and the quick summary is that I feel basically really, really happy to be working on this company. It's exciting to be successfully hiring and building a team of people who work very well together and can focus 100% on a specific problem, unlike how things worked for me in my part of academia (pure math research). Though stressful at times, doing what I'm doing now is much less painful than trying to build a company while doing another fulltime job (namely teaching at the University fulltime) -- that really sucked. I'm extremely glad that customers are paying us and investors funded us enough that I can do this.

Having the luxury to focus on one thing, rather than juggling several, is much like having an office that is neat, tidy, and uncluttered. It feels good in the same way. At least by quitting a job and focusing on a startup, you have the option to focus 100% on it. Actually focusing 100% on one thing is a difficult skill in itself, even with the right circumstances; however, it's completely impossible (at least for me) with two fulltime jobs at once, especially jobs like teaching (which involve lots of public speaking at scheduled times) or running a website with paying customers (which demands, e.g., responding to DDOS attacks).

foxhop 6 days ago 2 replies      
Only asking for opinions from people who were successful is literally asking for survivor bias perspectives.

I dream of working for myself but I've never taken the plunge. My income from side projects is about 1/3 of the way to my minimum number to quit and go full time.

I do a lot of thinking about this, my number is the same as my financial independence / early retirement number.

One of the biggest things that holds me back is medical insurance for a family of 5. Having an employer offsets this cost a LOT.

dwviel 5 days ago 0 replies      
I agree with some of the other's comments that time is the most valuable asset. Be productive! Also:1) Most of the advice that you find online is not really applicable. I like the stuff that Sam Altman (yes, ycombinator) puts out because it most mirrors what I've experienced.2) You need to do it yourself. Whatever it is. Just do it.3) Funding is a game. Here on the east coast investors pretty much only fund the growth stage of a company after you have real traction and are virtually guaranteed some kind of success. You will need to fund your startup out of your own pocket until then! This is what they call "friends and family" because you will be hitting them up for money, favors, meals, places to stay, etc.4) The tech is the easy part, as that is what you know. Marketing and selling is the hard part, as that is what you likely don't know. It is the part you should try to get help with if you can, but finding someone that knows what their doing is tough, so you can be sidetracked quite a bit.5) The "do things that don't scale" is completely true. Reaching out one-on-one has been the most successful way to engage potential customers, even though it is very time and labor intensive.
markatkinson 6 days ago 1 reply      
I left my permanent position and was lucky enough to continue working on a contract basis to continue covering some of my bills.

I reached a point after about 4 months where I realised the journey to make the business profitable would most likely be a five year slog, and while the opportunity was there it wasn't a cause I felt I could devote 5 years of my life to.

So gave the software for free to the people that were helping with beta testing and went back to my job. I found the most positive thing was how it helped propel my career at my current employer as I got a better role, they seem to have more respect for me afterwards and I operate more independently now.

So I suppose if you can build some sort of safety net before quitting that helps.

jonathanbull 6 days ago 1 reply      
Last year I quit a great full time role to focus on my side project, EmailOctopus (https://emailoctopus.com). Haven't looked back since!

I didn't take the plunge until quite late on, waiting until it was making enough money to comfortably cover my personal expenses. No regrets there - growth was slow in the early days and if I hadn't had the luxury of a monthly pay packet, I probably would have given up before I got the chance to properly validate the business.

Transitioning to full time brought more stress than I expected, but the experience is priceless. In the past few months alone I've learnt more than I did in 3 years of employment.

Realistically, what's the worst case scenario? I'm a reasonably skilled dev in a strong market so there's not much to lose. If it all goes wrong I'll get another job with a load of experience (and stories!) under my belt.

Disruptive_Dave 6 days ago 0 replies      
I can tell you what it was like to quit my job and focus on a very-early-holy-shit-what-are-we-doing-startup. Was at a marketing agency for 10 years when I left to pursue my first co-founded startup. Made the decision after we got a little organic press and signed up 5k+ users in 24 hours. I had been looking for an excuse to leave and do something new anyway.

It was scary as hell (no revenue coming from the startup), fun as hell, challenging as hell. Had my savings all planned out to help support the adventure, but still had that daily stress of knowing every dollar I spent was not coming back anytime soon. That part wasn't fun. But I didn't have kids or a mortgage and knew this was my chance to do something of the sort.

10/10 would do again in a similar situation, though knowing what I know now, I might have launched a business instead of chased a cool idea.

jondubois 6 days ago 0 replies      
I never returned to my old job... Why would you go back? I did return to working as a contractor for a while. A lot of failed startup engineers become contractors.

I'm back working for a startup again now so I guess I'm just going back and forth.

I've worked for a few startups and none of them has had an exit yet but one of those I have shares in is doing relatively well.

Doing contracting work is a smarter decision in general. You can actually plan to make a sizeable amount of money and then watch it happen without taking any risks - It's all within your control. With startups, you might often feel that it's outside of your control, especially if you're not a co-founder.

RHSman2 6 days ago 0 replies      
Am 3-4 months in with concept. Have anchor client and consultancy partnership. The biggest and wildest thing is moving from someone with an idea to a visionary leader in a space. It's fundamentally awesome to take said idea, turn it into a offering and go out on the line with it. I have had nothing but wonderful experiences with others helping me out. I am 40, have 2 kids, a dog and a wife and a pretty good network which I have had to really 'work' (authentically) but the assistance from others, trust and good feelings are something that have made me believe in the human race a bit more! In corporate it's all protectionism and petty arguments AND a visionary thinker is not what they want!I am lucky to have found an excellent co-founder who is a great counter part.Definitely taking/balancing risks, going fast and working really hard (doesn't feel like work building your own thing though) however the finances have to be calculated and I have taken the consulting/product route which seems to be good but converting a service driven model to a recurring revenue model is the goal AND the challenge.
zghst 6 days ago 1 reply      
I am 2 months into doing this, it feels a lot like when I moved to SF, lot of things up in the air but very promising. I had a 6 month financial plan but it was hard to adapt to the lack of income and seeing my savings decrease month by month, so I'm doing contracting and TaskRabbit. I'm not really a ramen noodles person, so I make due with what I can get at the grocer.

I have a previous coworker who'd love to help me, but I don't want to babysit his work and I feel he's not valuable enough to the business. I would like another cofounder, but it doesn't bother me that I'm doing it all on my own, I have spent the last 10 years getting ready for this, so I'm more than ready. I am doing more than okay on my business alone, but I wish I had some expertise for a second opinion. I am really really thinking about going into an accelerator program or seeking angel investment, but I'm apprehensive about taking cash at this (or any stage). My biggest fear is actually having to get a real job again, I will do anything to prevent that from happening since that means my startup is dead.

erikrothoff 6 days ago 2 replies      
I'm on my last day at my current job before taking the plunge to focus on my half successful startup! I'm going down in pay to about half, we're still losing money every month for me being employed. Our runway is ~6 months before our savings are out. Basically we have to double the monthly revenue that took 5 slow years to grow up to. Exciting and scary times!!!
cjr 5 days ago 0 replies      
I started my screenshot Saas product, Urlbox (https://urlbox.io) as a side project back in 2013. There were times I did think about shutting it down as the amount of time spent on it initially compared to the revenue growth was just too depressing! A whole 3.5 years later it had grown just enough that I could begin to take it more seriously and actually support myself full-time working on it.

As with everything there are pros and cons. The pros are obviously that you get to spend your time doing something you enjoy (hopefully), and can work whenever and wherever you feel like (this can also be a con!). The cons are that you will always be worrying about stuff like churn, whether servers will go down whilst you're away on holiday, how you're going to grow enough to support a family etc etc.

The long, slow Saas ramp of death really is a thing, and there are no silver bullets in terms of growth/marketing - just many small things that all contribute. I also always used to think 'if only I could just get to $x MRR then everything would be so much better and I'd be much more comfortable and relaxed', but when you do eventually break through that barrier you realise you're just more worried about how you are going to achieve the next one, so it's kinda never ending!

I also agree with other posts here that if you're already a decent developer in a good market, then what is the worst that can happen really? Try doing some fearsetting. I'm sure you could always find another job if your thing doesn't work out, but you do need to give these things time. I also failed a bunch of times with other startup ideas, one of which was also YC backed.

gwbas1c 6 days ago 0 replies      
Quitting my job was great!

Let's just say that my mistake was that I was too afraid to hurt my co-founder's feelings. If we parted ways when we should have, I might have actually gotten somewhere. (Then again, I might have gotten nowhere either!)

greglindahl 6 days ago 1 reply      
I had my financial ducks in a row before I did my first startup -- I knew how much "fun money" I could expend getting the startup to work. Most of the horror stories I hear revolve around people who didn't do this.
daliwali 6 days ago 2 replies      
I started doing this recently by quitting my job, and I currently have no income.

There is this assumption that one must build a minimum viable product that has to be released as quickly as possible, so much that it's become startup mantra. It's no surprise that a lot of these products seem to be technically shallow, everyone is reaching for low hanging fruit.

I feel rather alone trying to do something that I think hasn't been done before, or if it had, wasn't executed well. I don't think I could possibly commit to it without having strong motivation, which I struggled with while having a full-time job.

The biggest technical/social challenge I have is to make something that a non-technical user could easily get right away and make something with it. I think the automation of web dev is an inevitability, and frameworks were just a historical blip on this path. The same thing is happening to web design. http://hypereum.com

fergie 5 days ago 4 replies      
I quit my job to start my own company last January. Its been fairly successful so far.

For somebody like me, and probably a lot of HN readers, its _actually_ a fairly low risk proposition because qualified, experienced software engineers are so sought after. Whatever you are doing, you will always be able to pick up a $1000-$1500 a day gig when you need to bootstrap your actual project.

My old boss has contacted me a few times to see if I want to come back- definitely do not want to.

You talk about "fear", and you talk about a "successful" startup. Here's the thing: You never know if a startup will be successful, and you just have to give it a go for the love of it, rather than any expectation of success. Don't be afraid- there are plenty of worse things in this world than a failed company.

Have learned a lot about bookkeeping.

wonderwonder 5 days ago 0 replies      
I landed a contract to develop a saas system before I really knew how to program for the web, I had some prior systems programming experience but had not coded for about 5 years. I quit my job to develop it and delivered but was never able to land another customer.

I still have the original client 3 years later and the company grosses about $3,500 per month and I net $1,250. It pretty much runs itself, requires maybe 2 hours of work every 2 - 3 months. I spent a little over a year trying to grow it from the initial customer with no luck.

Landed a job as a full stack engineer afterwards and I really like it. I am actively looking to start a new project but I will keep my main job while doing it. I had the benefit of a wife who makes a good salary to support me during that prior adventure (Still do :) )

andrewchambers 6 days ago 1 reply      
Just a reminder that life is pretty short, and worst case, you can probably just get another job and only be 6 months to 1 year behind your friends in terms of savings.
12s12m 6 days ago 0 replies      
I actually have a different take on this. I was building a side project 2 times in my past, to a point where there was some buzz around these side projects. And, I didn't have a job when I was working on these. However, as the products were nearing completion for V1. I got very good offers for contract work. I also had debts, so I took up the jobs. However, this led to the products failing to get any traction.

So, if you are planning to leave a job and have a good product which is getting you even half of the money you need. Leaving your job will only increase the chances of success. However, hanging on to the job while working on a product is going to be much harder.

wolfer 5 days ago 0 replies      
TLDR - Sort out your finances first, startups are extremely stress inducing and even now with our startup at the point of break even, 1m ARR and 100% growth predicted for next financial year, I still currently earn less than I need to live but with the promise of a strong exit in the next 3-4 years if we hit our targets.

Previously I contracted as a full stack developer bringing in other developers on projects as and when the project timescales wouldn't have been achievable with just me. Running a software consultancy alone, dealing with all of the usual rigmarole of a business and performing proper client outreach was stressful, but financially and personally very rewarding (especially when you close a big deal completely on your own).

In order to get involved in my current startup, which at the outset was comprised of a designer, biz dev (CEO) and myself as CTO I had to cut off ties with my previous clients and dedicate all of my available time to the new startup. I had leveraged myself quite a bit running the previous consultancy as billings were growing year on year, so my VAT/Corporation tax accounts were generally paid out of job fees towards the end of the year rather than set aside throughout the year, leaving me in a negative cash flow position when stopping work for existing clients. Luckily there were some ongoing payments that didn't require development resource, so the small admin time required to invoice and chase up was all that was required, and enabled me to setup payment arrangements with HMRC to settle these liabilities over a period of time, out of this cashflow. Setting up these arrangements was very stressful, and I would strongly advise anyone coming into a startup to fully evaluate their financial situation before committing even if the opportunity seems huge.

Initial salaries in the new start-up were minimal (1000 p/m approx), and it took a solid three years, extremely long working days, almost unmanageable personal stress and around 0.5m of funding before we're now up to an above average average salary, 1m ARR, a team of 15 and strong growth projected for the coming year.

Success is a subjective term and occasionally I have to refocus to see the light at the end of the tunnel, but with enough grit, luck and determination, its possible to tip the balance to a point where success is now more likely than not.

hesdeadjim 5 days ago 0 replies      
I've had two very different experiences starting a company.

The first time I was two years out of school with $12k in the bank, had a partner with a ton of experience, and a decent idea. We crunched for six months, launched, failed, and then tried to pivot. I ran out of cash a few months before the iPhone launched and had I had a longer runway we could have ported our app to the iPhone and potentially seen success.

A year ago and nine years later than that attempt, I've started a small video game company with another friend (justintimegame.com). Despite my life situation being more complicated and expensive to maintain, the prior nine years success combined with my wife's income basically lets me try and fail until I get sick of it instead of when the money would run out. Obviously I'm aiming for success, but the massively reduced stress from barely worrying about money let's me be much more open to experimentation while also being resilient to failure.

I don't regret starting and failing my first company however. It set me up for having a higher risk threshold and an interest in startups that ended up working out quite well for me.

geekme 6 days ago 0 replies      
I started up twice. First was a e-commerce market place and the second one was into mobile app development. Both failed. I was running them for around 4 years. Now I am back to a full time Job. I never regretted my failures since I learnt a lot from them and now I am working on my 3rd side project hoping to succeed.
verelo 5 days ago 0 replies      
So for me I left a job and worked on my startup that ended up unsuccessful. Fortunately during that time I met my current business partners and we have since made and sold a company that by most people's definitions has been a very good run.

Expecting to get it right is the failure we all make at some point (even when we say out lout "this might not work out" we still somehow expect it to work). Expecting failure to lead to something positive is the long game I'd urge you to wait for, it's hard to remain in a good mental state at times while you're working hard and feeling under appreciated, but that is sadly just what it's like.

mezod 6 days ago 0 replies      
The way I did it was to start freelancing so that I could pay the expenses with less hours and then use the rest of the time for sideprojects. Finally, one of my sideprojects (https://everydaycheck.com) shows interest and traction, so it's easy for me to just do less freelance hours and put more time into it, hopefully I can get to a point where I can work 100% on it.

I guess the "quit your job" problem only exists if you have major responsibilities, like a family, or paying debt back. Otherwise, it makes no real sense to consider it, the opportunity is too big.

cylinder 6 days ago 0 replies      
Self employment is incredible when the money's rolling in, and terrible when it's not. I can't speak for a full fledged startup with funding though because then you just work for investors.
smdz 6 days ago 0 replies      
1. One day you are excited with the possible opportunities, then you are overwhelmed and then you are depressed. If you leave without a plan, it takes a few months to just get the mind straight. If you do have a plan - it falls apart and you still end up spending a few months that feel unproductive.I am not discouraging on having a plan - you must. But also note that you made a plan with an "employee mindset".

2. 6 month financial backup is usually not enough. I have heard many stories where people try going independent for 6 months, run out of money and start looking for a job. What happens is - entrepreneurship gets into you in that time and if one goes back to a job, I can bet they feel even more frustrated. You need 1.5 years of backup or 2-3 years of "frugal living backup". I struck positive cashflows in just about 5 months, but it wasn't good enough. I distinctly remember thinking "Maybe, I should have done this part time". Then I struck a mini-gold-mine at 8 months. Having a good backup will help you persist longer. I did not have a growth strategy that worked. But I focused on working and doing the right thing. Keep it rolling.

3. The biggest worry I had when starting was about providing "enough" for my family and any emergencies for next 1.5-3 years at any point in time. Unlike many stories, I promised myself not to wait until I go bankrupt or in a lot of debt - Nearing that is a huge red flag, where I would typically exit and take a regular job. However, taking a job is the last thing I want to do. That thing kept me money-oriented for a while and made me work on stuff that generated positive cashflow.

4. Would it have been possible to return to your old job? - Maybe, but I would not want to. I waited too long to jump ship. Infact, my experience on multiple "good" jobs is what is keeping me away from them. Once you taste entrepreneurship, its hard to go back

5. I do not consider myself successful. May be semi-successful, some people see it as success. But I have come a long way from fearing failures. Success may or may not last long. I enjoy the process and the tremendous personal growth it results into. I ensure my financial backup now gives me 5-6 years minimum to start afresh - if I have to. Do not undervalue the role of money - it definitely makes things easier.

6. This is my favorite quote about Karma. I heard it many years back (and thought it was impractical). Especially useful when I feel I did everything right but nothing works:"Karm karo, fal ki chinta mat karo" (Do your duty without thinking about results)

P.S.: I don't know about others, but I have restricted myself into writing lesser HN comments because it takes quite a bit of time/energy. This one is an act of impulse. How do other entrepreneurs feel about this?

apatters 6 days ago 0 replies      
If you're single, childless, and have a few thousand dollars in savings, quitting your job to focus on a side project or startup is very easy. You can achieve your dream in the next 24 hours. Here's the roadmap.

1. Give your employer your 2 weeks/1 month notice (depending on locale). Taking this step immediately is critical because the urgency and shock of the change will force you into being fast and practical about all the subsequent steps.

2. Create a monthly budget for yourself which assumes no income that you are not 100% sure about. So if you have interest from investments or a freelance contract that's a absolute guarantee you can include it. For most people the income side of this budget is going to be low or nothing. Your goal with this budget is to stretch your funds out for 6-12 months. The good news is that in 2017, the principle of geoarbitrage allows you to live on virtually any budget. If you live in the Bay Area your next step is going to be to move somewhere cheaper. On the cheapest end of the spectrum, I'll use Thailand as an example because I live here, you can get a basic apartment in the suburbs of Chiang Mai or Bangkok for $100-$500/mo, your initial arrival can be visa-free, and you'll live on delicious Thai food from a restaurant down the road for a few dollars a day. Network heavily with people in your intended destination before you even arrive because it'll make everything 100 times easier.

3. Now create a business plan for your new entity. The business plan should include a description of the product or service which you're going to market, how you're going to market it, what you're going to charge (start high), and any and all costs of development and operation including your own time. It should include monthly profit/loss projections (you're not allowed to use these projections in your budget, they are goals, not guarantees). The most important thing about your business isn't what product or service you initially offer. Once you have assets and control you can try anything you want. Until then the goal of your business is to make enough income that your assets are growing, no matter what that entails.

If you're leaving the country as a part of this process I would advise forming an LLC and opening a bank account before you go, as these things can be difficult from overseas. You'll be very busy trying to make money and living your dream so you don't want to have to deal with paperwork.

Prepare yourself mentally to work very hard for at least the next 6 months and do whatever you need to do to make enough cash. You will become practical and decisive, and you'll learn many realities about business, such as cash flow is king, very quickly. I got my start being nickel-and-dimed by agencies in India over Elance. It sucked and it was hard and it was 100% worth it.

There are many objections to this strategy which typically stem from risk aversion, or a desire to not worry about money. I would submit that if one objects to the risk, this plan is a personal growth opportunity: it will teach them how to handle stress, plan for contingencies, and so on. If the objection is that they don't want to worry about money, I would point out that money is just a way for people to quantify your value to them, and since no man is an island, there are great personal and financial rewards to be reaped from confronting this objection and discovering what other people truly value about you.

Doing step 1 first and now is the key. If your path brings you through Bangkok let me know and we'll grab a beer! I've seen many people succeed at this and a few fail. Your odds are better than you think.

jhylau 6 days ago 0 replies      
one word: liberating
       cached 27 June 2017 12:05:01 GMT