hacker news with inline top comments    .. more ..    6 Jun 2017 Ask
home   ask   best   3 weeks ago   
visited
1
Ask HN: What software/app does your company(HR) use for performance management?
3 points by flyankur  2 hours ago   1 comment top
1
karmelapple 1 hour ago 0 replies      
We don't currently use one, but for people who do use one, could you post roughly how many people you're managing in it? Curious if anyone uses these kinds of tools with small teams.
2
How to segfault bash: a() { a; }; a
2 points by JelteF  2 hours ago   1 comment top
1
dozzie 1 hour ago 0 replies      
It's not a surprising result. You just run out of stack with your infiniterecursion, and shells usually don't perform tail call optimization.
3
Ask HN: What language-agnostic programming books should I read?
841 points by robschia  1 day ago   322 comments top 75
1
DoofusOfDeath 1 day ago 5 replies      
Some of the most interesting books I've read in support of my software-development work are:

* "Compilers: Principles, Techniques, & Tools" by Aho et al. (i.e., "the dragon book")

* "Data Flow Analysis: Theory and Practice" by Khedker et al.

* "Understanding MySQL Internals" by Sasha Pachev.

* "Transaction Processing: Concepts and Techniques" by Gray and Reuter.

* "Fundamentals of Wireless Communication" by Tse and Viswanath.

* "Genetic Programming: An Intrduction" by Banzhaf et al.

* "Applied Crytography" by Schneier.

EDIT: A few additional comments:

(1) Although these books are problem-domain specific, some of them had benefits outside of their problem domains:

* The Dataflow book has some great coverage of fixpoint algorithms. It's really helpful to recognize when some problems are best solved by fixpoint analysis.

* The "dragon book" takes a lot of the mystery out of compilers. That's somewhat helpful when writing code that needs to be fast. It's super helpful if you want to work with compiler-related technologies such as LLVM.

* Understanding the fundamental challenges of transaction processing helps you avoid massive misadventures when dealing with databases or concurrent / multithreaded systems.

(2) YMMV, but I've found it hard to soldier through these books unless I had a need to for my job or for school.

2
mikekchar 1 day ago 1 reply      
Working Effectively with Legacy Code by Michael Feathers. It's a bit hard to wrap your brain around the Java and C++ examples unless you have experience with them, but the techniques are timeless. You may need to practice them extensively before you understand how important they are, though. In a recent book club we did at work, a common complaint was, "This just looks like common sense". Indeed it does... though the common sense is uncommonly hard to find when you are staring at the actual situations this book helps you with.
3
otodic 1 day ago 1 reply      
4
d0m 1 day ago 5 replies      
Structure and Interpretation of Computer Program (it's written in scheme but it's mostly for convenience and its lack of syntax).

Definitely the best book I've read on programming.

5
petercooper 1 day ago 2 replies      
Programming Pearls by Joe Bentley. And its followup. It's old but it does get you thinking about things.

I'd also recommend The Linux Programming Interface by Michael Kerrisk as it teaches so much about what makes modern Unix what it is but.. it's arguably quite oriented around C by necessity. It's not a "C book" by any means though.

6
henrik_w 1 day ago 6 replies      
I really like:

- Code Complete by Steve McConnell

- The Effective Engineer by Edmond Lau

- The Pragmatic Programmer by Andrew Hunt and David Thomas

7
kris-s 1 day ago 8 replies      
Code: The Hidden Language of Computer Hardware and Software by Charles Petzold. I love this book.
8
eriknstr 1 day ago 1 reply      
"The Design of Design: Essays from a Computer Scientist" by Frederick P. Brooks [1] is language-agnostic and worth reading.

It's about software engineering but also about hardware and some different kinds of design outside of IT.

From an interview about the book [2]:

> Eoin: Your new book does talk about software design in places, but its really about design generally, and the case studies span buildings, organizations, hardware and software. Who is the book aimed at? Are you still writing primarily for people who design software or are you writing for a broader audience?

> Fred: Definitely for a broader audience. I have been surprised that The Mythical Man-Month, aimed at software engineers, seems to have resonated with a broader audience. Even doctors and lawyers find it speaks to some of their team problems. So I aimed this one more broadly.

Brooks is also the author of The Mythical Man-Month which is often mentioned on HN.

[1]: http://www.informit.com/store/design-of-design-essays-from-a...

[2]: http://www.informit.com/articles/article.aspx?p=1600886

9
pjmorris 1 day ago 0 replies      
'Implementation Patterns', Kent Beck. A semi-language-agnostic extension of his 'Smalltalk Patterns'for how to clearly and consistently express what you're saying when you code.

'Facts and Fallacies of Software Engineering', Robert Glass. Glass presents a list of things everybody knows, or ought to know, and gives both academic and opinionated support and/or critique for why they are and aren't so.

'Making Software', Oram and Wilson. An edited collection of papers on evidence-based software engineering.

'The Deadline', Tom DeMarco. A thinly disguised commercial for his advice on how to organize software development teams and organizations, packaged as light, light novel.

10
brightball 1 day ago 2 replies      
SQL Performance Explained - Markus Winand

- Excellent book that gets into the internals of what developers need to know about SQL and covers each part as it relates to the 4 major SQL databases (Oracle, SQL Server, Postgres, MySQL)

- Also has an online version: http://use-the-index-luke.com/sql/table-of-contents

The Code Book - Simon Singh

- It's just a good read that covers cryptography and message hiding throughout history. Probably a solid book for somebody around high school age.

11
gtrubetskoy 1 day ago 4 replies      
One that hasn't been mentioned yet: "Coders at Work". A very enlightening book about how some of the best programmers in the world approach the craft in their own words.
12
alfiedotwtf 1 day ago 3 replies      
Books I'll treasure forever:

 - Advanced Programming in the Unix Environment by Stevens - Operating Systems: Design and Implementation by Tanenbaum - The Art of Unix Programming by ESR - Parsing Techniques by Grune and Jacobs - Applied Cryptography by Schneier

13
solatic 1 day ago 0 replies      
Nobody recommended The Phoenix Project yet by Gene Kim?

Unless you have some understanding of your system's architecture, how it's run in production, and why a production environment is Really Different and a Big Freaking Deal, and how operations is supposed to look like, you'll never be an effective programmer, no matter whether you run your own operations in a small start-up or work for a large enterprise with dedicated operations teams.

14
fazkan 1 day ago 3 replies      
Its odd that no one mentioned it but head first into design patterns is a great/light book on design patterns....
15
deepaksurti 1 day ago 1 reply      
- The Elements of Computing Systems: Build the virtual hardware and software from scratch. Software includes writing a compiler in a language of your choice, so agnostic in that sense.- The Art of Metaobject Protocol: Extremely insightful treatment of OOP! Alan Kay called it as the 'best book in ten years' at OOPSLA 97.
16
qpre 1 day ago 0 replies      
Not a book per say, but "Out of The Tar Pit" by Moseley and Marks is definitely a must-read.

Abstract:

```Complexity is the single major difficulty in the successful developmentof large-scale software systems. Following Brooks we distinguishaccidental from essential difficulty, but disagree with his premise thatmost complexity remaining in contemporary systems is essential. Weidentify common causes of complexity and discuss general approacheswhich can be taken to eliminate them where they are accidental innature. To make things more concrete we then give an outline fora potential complexity-minimizing approach based on functional programmingand Codds relational model of data.```

Link: http://shaffner.us/cs/papers/tarpit.pdf

17
0xbadf00d 1 day ago 1 reply      
I would recommend "Sorting and Searching" Volume 3 from Donald Knuth's "The Art of Computer Programming". Fantastic, in-depth read.
18
i_feel_great 1 day ago 1 reply      
Structure and Interpretation of Computer Programs.

I have attempted some of the problems in Lua, Python, Erlang and Ada. It is very doable. So not just for Scheme.

19
mtreis86 1 day ago 1 reply      
Gdel, Escher, Bach: An Eternal Golden Braid by Douglas Hofstadter is about the intersection of music, math, and computers.
20
smcgraw 1 day ago 1 reply      
"Thinking Recursively" by Eric Roberts. Completely changed the way I think about recursive programming and easy to pick up.

https://cs.stanford.edu/people/eroberts/books/ThinkingRecurs...

21
binarymax 1 day ago 2 replies      
Programming Pearls.

Great short book to get you thinking creatively and how to dissect algorithmic problems, language agnostic with pseudocode examples.

Non-programming but still highly relevant for a professional programmer: Mythical Man Month, and Peopleware.

22
fatjonny 1 day ago 1 reply      
I've been thoroughly enjoying "Designing Data-Intensive Applications" by Martin Kleppmann. It primarily deals with the current state of storing data (databases, etc) starting with storing data on one machine and expanding to distributed architectures...but most importantly it goes over the trade-offs between the various approaches. It is at a high level because of the amount of ground it covers, but it contains a ton of references to dig in deeper if you want to know more about a specific topic.
23
MikeTaylor 1 day ago 2 replies      
Definitely, definitely, Kernighan and Plauger's 1976 book _Software Tools_. The code is in RATFOR (a structured dialect of FORTRAN) but all the ideas are language-independent. It remains, four decades on, the best book I have ever read on how to solve the real problems of real program development. Very practical, and covers a vast amount of ground. (As it happens, I am re-reading it right now.)
24
__bearMountain 1 day ago 0 replies      
Agile Software Development, Principles, Patterns, and Practices - by Uncle Bob Martin

One of the most influential programming books I've ever read. The code is in Java, but it's east to follow even for a non-Java developer, and the truths are universal. Learn the most fundamental design and encapsulation patterns. Uncle Bob Martin is a legend. This book has probably made me tens of thousands of dollars.

https://www.amazon.com/Software-Development-Principles-Patte...

25
sgt 1 day ago 2 replies      
Thinking Forth

http://thinking-forth.sourceforge.net/

Teaches you to think simple and elegant.

26
zimmund 1 day ago 1 reply      
Introduction to algorithms[1] is a great book to improve how you think about code and the way you implement your solutions. Even if you are a seasoned programmer you'll find it useful.

[1]: https://mitpress.mit.edu/books/introduction-algorithms

27
bphogan 1 day ago 0 replies      
Can I plug my book, Exercises for Programmers? https://pragprog.com/book/bhwb/exercises-for-programmers

It's a collection of programming exercises I used when I taught introduction to programming. They start out incredibly trivial, ("prompt for a name, print "hello [name]" back to the screen. But the trivial part is, in my opinion, the fun part when you work with a new language.

That program is a two line program in Ruby. But it might be much more complicated if you implemented that as your first GUI app in Swift for iOS.

I wrote the book to teach beginners, but I and others use those exercises to learn new languages. The book has no answers, just the problem statements.

28
dustingetz 1 day ago 0 replies      
Joy of Clojure & SICP. To a lesser extent, Learn You a Haskell. 7 Languages in 7 Weeks is an excellent good baby step book if these are too daunting. 7in7 was my first intro to many new ideas.

Any language worth learning has this property of influencing the way you think forever. TDD, Code Complete &co are all very integrated into mainstream industry and are no longer novel. If you find yourself needing to recommend your colleagues to read Code Complete you might consider working on the skills to get a better job.

29
lcuff 1 day ago 2 replies      
An Introduction to General Systems Thinking. Gerald Weinberg. This book, now over 40 years old, addresses the 'core within the core' of the reality of systems. Unbelievably good, with a very light-hearted tone.
30
ctrlp 1 day ago 1 reply      
If you consider C to be language-agnostic, here are some gems. These are personal favorites as much for their excellent writing as for their content.

The Unix Programming Environment was published in 1984. I read it over 20 years later and was astonished at how well it had aged. For a technical book from the 80's, it is amazingly lucid and well-written. It pre-dates modern unix, so things have changed but much that goes unstated in newer books (for brevity) is explicit in UPE. (Plus, the history itself is illuminating.) It gave me a much deeper understanding of how programs actually run over computer hardware. Examples in C are old-school and take a bit of close reading but oh so rewarding. https://www.amazon.com/Unix-Programming-Environment-Prentice...

Mastering Algorithms in C. Another fantastically well-written book that shows (with practical examples) how to implement common algorithms. This is just such a great book!https://www.amazon.com/Mastering-Algorithms-Techniques-Sorti...

Also:

Code (Petzold). This one is truly language-agnostic. Others have mentioned it already. Can't recommend enough if you're iffy on the internals of computers and programming.https://www.amazon.com/Code-Language-Computer-Hardware-Softw...

Write Great Code (Volumes I and II). Randall Hyde's books are fantastic explications of the underlying computer operations. Examples are in assembly or pseudo-code but easy to understand.https://www.amazon.com/Write-Great-Code-Understanding-Machin...

31
Rannath 1 day ago 3 replies      
Not really programming books, but these have helped me with programming jobs.

-How to make friends and influence people. Anyone who works collaboratively with people needs to be able to communicate effectively.

-The Elements of style. Writing understandable code is similar to any other type of writing.

32
happy-go-lucky 1 day ago 1 reply      
No one has mentioned The Little Schemer.

Edit: Written in a question-answer style, its geared toward luring you into recursion and functional programming.

33
sateesh 1 day ago 1 reply      
The Cuckoo's Egg by Clifford Stoll. This book taught me how important it is to keep a log of events. These logs come in very handy when the problem one trying to debug spawns multiple complex systems.
34
agentultra 1 day ago 0 replies      
Programming in the 1990s by Edward Cohen. A rather practical introduction to the calculation of programs from their specifications. Plenty of introductions to computer programming involve guessing your program into existence. This is one of those rare books that give a solid, pragmatic approach (with examples) of developing software from solid, mathematically sound specifications and avoiding errors by design.

Even if you don't adopt formal methods in your day-to-day work (often we're not building sky-scrapers) it's a useful book to give you insight into the kinds of questions one should be asking and thinking about when designing software systems.

35
bandrami 1 day ago 1 reply      
Let Over Lambda. Not entirely agnostic, but delves into Forth, Smalltalk, C, Scheme, and Perl while overall being about Lisp. Fascinating book; really a look at metaprogramming (macros) and closures (that's what "let over lambda" is).
36
sAbakumoff 5 hours ago 0 replies      
"Practices of an Agile Developer: Working in the Real World" - this book was like the Bible for me when I started my career in IT 10 years ago. I re-read it multiple times and I still stick to the practices described in this book. They are language agnostic, they are pretty clear and easy to follow and they can really improve your skills.
37
Insanity 1 day ago 1 reply      
In addition to those already mentioned here, I enjoyed the book 'Algorithms' by Robert Sedgewick & Kevin Wayne.

The algorithms are explained, and demonstrated (in java). But with the knowledge of how the algorithm works you should be able to use them in another language.

(And even though henrik_w already mentioned it, Code Complete2 is a really good book to read!)

38
demircancelebi 1 day ago 0 replies      
I have been reading Game Programming Patterns lately. It explains the design patterns with examples from games, and it is really well written by an engineer at Google (Bob Nystrom): http://gameprogrammingpatterns.com/

After I complete this book, I think I'll read his other book: Crafting Interpreters. This one teaches about implementing a programming language from scratch, once in Java and a second time in C.

39
RossBencina 1 day ago 0 replies      
I see you read Kent Beck's TDD book. A good follow-up might be Roy Osherove's "The Art of Unit Testing." I found it to have a lot of pragmatic, practical advice. It's not the final word, but it is a good next step after Kent Beck's book. It has some C#-specific material, but that stuff is interesting to read about even if you're working in other languages.

Lot's good suggestions in this thread, here's one I didn't see:

"Software Runaways - lessons learned from massive software project failures," by Robert L. Glass.

40
petra 1 day ago 0 replies      
Sanzy Metz is a great teacher of object-oriented design. Read her ruby book.

"Introduction to algorithms : a creative approach" by Udi Manber. ". Great book to learn algorithm design.

41
masterzachary 1 day ago 0 replies      
* "Clean Code" Robert C. Martin (978-0132350884)

* "Refactoring: Improving the Design of Existing Code" Martin Fowler (978-0201485677)

* "Computer Systems: A Programmers Perspective" Randal E. Bryant (978-0134092669)

42
euske 1 day ago 2 replies      
The Psychology of Computer Programming by Gerald M. Weinberg

It's an old book but the most eye-opening one to me.

43
paublyrne 1 day ago 1 reply      
Practical Object-oriented Design in Ruby is a great read with a lot of advice on approaching design problems, approaching refactoring and thinking about how to model. It's in Ruby but I feel a lot of its advice is general.
44
jacquesm 1 day ago 4 replies      
Any good book on statistics would be a huge asset, as well as a book about debugging strategies.
45
vitomd 1 day ago 2 replies      
If you liked Clean Code, read Clean Coder. A quick summary:

Robert C. Martin introduces the disciplines, techniques, tools, and practices of true software craftsmanship. This book is packed with practical adviceabout everything from estimating and coding to refactoring and testing. It covers much more than technique: It is about attitude.

46
BFatts 1 day ago 0 replies      
'The Pragmatic Programmer' is a fantastic language-agnostic manual that still applies heavily today.
47
csneeky 1 day ago 2 replies      
"Types and Programming Languages" (aka "tapl")
48
IndrekR 1 day ago 3 replies      
"The Elements of Style" by Strunk & White. Not exactly a standard programming book. Not really language-agnostic either -- quite English-centric.

I here assume your source code will be read by others; or by yourself after more than three months has passed.

49
unfocused 1 day ago 0 replies      
"How to Solve It" by George Plya
50
OJFord 19 hours ago 0 replies      
Sipser's Theory of Computation. It covers automata and languages, computability, and complexity - and is brilliantly written, the proof style in particular: clear 'proof idea's followed by the details that can be easily skipped if you're not interested, or it is clear from the 'idea'.
51
maksa 11 hours ago 0 replies      
- Pragmatic Programmer, From Journeyman To Master

- Code Complete 2nd Ed.

- Quality Software Management Vol 1-4, by Gerald M. Weinberg

I'd also throw in: Code Reading - The Open Source Perspective

52
g051051 1 day ago 0 replies      
"Peopleware: Productive Projects and Teams" by DeMarco and Lister.
53
OliverJones 1 day ago 1 reply      
An old standard: The Mythical Man Month by Fred Brooks.
54
fastbeef 1 day ago 0 replies      
Not a programming book per se, but seeing that you had "The Healthy Programmer" in your list I'll throw it out there:

"The underachievers manifesto" - a short book that does wonders for your mental health in a world that values productivity and superficial, short-sighted goals over everything else.

https://www.amazon.com/Underachievers-Manifesto-Accomplishin...

55
jordigh 1 day ago 0 replies      
It's not language-agnostic, but it's still a great book: The D Programming Language. The reason I recommend it is because Alexandrescu is a great writer who knows a lot about programming languages and the kinds of tradeoffs that a low-level, practical, and safe programming language like D must do.

Even if you never intend to program in D, I encourage you to read this book to get a different view on metaprogramming, memory safety, and concurrency.

56
stcredzero 1 day ago 0 replies      
Martin Fowler's Refactoring
57
dyarosla 1 day ago 0 replies      
I've really enjoyed "Dependency Injection in .NET"- despite the name, the book itself is really 95% about Dependency Injection and relatively language agnostic. It exhibits a bottom-up approach to using inversion of control in a way that makes sense and is scalable.

https://www.manning.com/books/dependency-injection-in-dot-ne...

58
fd5773 13 hours ago 0 replies      
If you can find a copy, get the 1st Edition of Bertrand Meyer's "Object Oriented Software Construction". (1st ed. is a classic; 2nd ed. is much larger and worse for it, IMO.)

If you can, forget about the title and just read it; most of the good stuff in this book is less about objects and much more a fantastic seminar on programming in general.

59
cakeface 1 day ago 0 replies      
I really liked "Building Microservices" by Sam Newman. It's a good review on current software architecture and software development process in addition to going over microservices. Honestly microservices are a topic in the book but it could just be called "Software Architecture in 2016".
60
timclark 1 day ago 0 replies      
Domain Driven Design by Eric Evans

Implementing Domain Driven Design by Vaughn Vernon

Clean Code by Robert Martin

I think you will find some code in all of the books but the ideas are applicable almost everywhere.

61
pjmlp 1 day ago 0 replies      
A few ones:

"Algorithms and Data Structures" from Niklaus Wirth.

"Introduction to Algorithms, 3rd Edition" from Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein.

"The Garbage Collection Handbook: The Art of Automatic Memory Management" from Richard Jones and Antony Hosking

"Code Complete" from Steve McConnell

"From Mathematics to Generic Programming" from Alexander Stepanov and Daniel Rose

62
Jeaye 1 day ago 1 reply      
The Reasoned Schemer: https://mitpress.mit.edu/books/reasoned-schemer

Learning more and more about imperative programming, OOP, design patterns, etc is good, but branching out into declarative programming and the functional and logic paradigms will stretch your mind for the better.

The great thing, I think, about The Reasoned Schemer is that it tackles a complex topic with almost no prose. The whole book is basically one code example after another, in a Q/A style. "What does this do?" <allow you to think about it> "Here is what it does, and here's why." Rinse and repeat. I think more technical books should try this.

63
mytec 1 day ago 0 replies      
Smalltalk Best Practices by Kent Beck. I feel the advice and experience this book provides goes well beyond Smalltalk.
64
neves 1 day ago 0 replies      
Any computer themed book of Gerald M. Weinberg is a must read:https://leanpub.com/u/jerryweinberg

If at first sight my may think that they are outdated and superficial, but you can't be more wrong.

65
ranko 1 day ago 0 replies      
Growing Object-Oriented Software Guided by Tests, by Steve Freeman and Nat Pryce. The examples are, IIRC, in Java, but the ideas about TDD are applicable to any OO language. It'll make you think more about how you write testable code and the test themselves.
66
mathnode 1 day ago 1 reply      
- The Pragmatic Programmer

- The Practice of Programming

- The Mythical Man Month

- The Cathedral and the Bazaar

- The Art of Motorcycle Maintenance

- Introduction to Algorithms

- Hackers and Painters

Some of these do contain mixed language code examples, but they are expressed in a way to be agnostic. A problem is a problem; in any language.

67
l0stkn0wledge 1 day ago 0 replies      
If you are writing code, you are doing yourself (and anyone using your code) a disservice if you do not read something on secure coding. There are not a ton of code agnostic resouces, but you may want to start with "Software Security: Building Security In"

I would then look for language specific options as well, because programming for security can vary a lot amongst languages. Writing securely for native applications running on a system is much different than writing secure web apps.

68
tmaly 1 day ago 0 replies      
Understanding the Four Rules of Simple Design by Cory Haines

I like the 4 simple rules, I think he originally got these from Kent Beck. It is easier to keep this system in your mind if it is just a few basic principles.

Working Effectively with Legacy Code by Michael Feathers

As others also mentioned this. I think this is becoming more important as people transition to new jobs where they have to take on existing software. Having a process to deal with code that lacks documentation and tests is really important.

69
svec 1 day ago 0 replies      
"Programmers at Work: Interviews With 19 Programmers Who Shaped the Computer Industry" by Susan Lammers.

https://www.amazon.com/Programmers-Work-Interviews-Computer-...

This book is from 1989, but it's a timeless and fascinating look at the minds of Bill Gates, Andy Hertzfeld (apple/mac), Dan Bricklin (visicalc), and 16 others.

70
rajadigopula 1 day ago 0 replies      
A short book (25 pages), but I find it worth mentioning here - 6 Things About Programming That Every Computer Programmer Should Know -https://www.amazon.co.uk/Things-Programming-Computer-Program...

A really well written short glimpse of things every programmer must know.

71
ishmaelahmed 1 day ago 0 replies      
"The Pragmatic Programmer" by Andy Hunt and Dave Thomas
72
aHernandezI 1 day ago 0 replies      
I loved cracking the coding interview, even if you want to practice for an interview or not, with this book you can get a friendly reminder of data structures and algorithms, time complexity and related topics (and you can improve your problem-solving skills too). For me at least it was useful for feeling again a great interest in these topics and to love even more my job.
73
m-j-fox 1 day ago 0 replies      
Not exactly language-agnostic, nor about programming per se, nor a book, but [Google Style Guides](https://github.com/google/styleguide) offer a lot of specific, opinionated, practical advice that you can apply immediately. It's like an MLA manual for programmers.
74
aaronmu 1 day ago 0 replies      
A couple fun ones that weren't mentioned yet:

JavaScript Allong, the "Six" Edition by Reginald Braithwaite

Are Your Lights On? by Gerald M. Weinberg

75
heeton 1 day ago 0 replies      
If I can suggest a talk rather than a book, "Hammock Driven Development" by Rich Hickey (creator of Clojure) is one of my favourites.
4
Ask HN: Women in tech, how do you find non-toxic work environments?
430 points by z_shell  1 day ago   448 comments top 48
1
watwut 1 day ago 10 replies      
Disclaimer: I am women, but never stepped the foot in CA. Geography matters.

I see ping pong tables and free beer as a red flag of sorts and seek workplace that is more formal. The idea is that the less it attempts to be personal/cool/cultural the less personal things (e.g. gender or peoples attitudes/biases or who-likes-who) matters and the more actual work matters. I have no stats to support this, just my guess and some experience.

I also try to find what exactly am I going to do, whether there are clear responsibilities etc. It is easier to prove what you can do if responsibilities are clear and if you can work autonomously so your work is clearly your work. (I don't like true agile partly because then too much depends on impressions and politics and assumptions.) Moreover, clear responsibilities mean people have harder time to act on "women are not technical" assumption. Plus, fluid team structure pretty much guarantees a random collegue will try to micromanage me (like when they have ambition to be leader they tend to think I am good place to start) - then I had to fight for having normal work. Although I am usually able to get rid of that collegue, it is way more pleasant when I dont have to go through it.

On interviews: if it is technically and business oriented, then it is good flag. If they are too cool or personal or seem to be reacting to my gender (includes also being more friendly then I would expect on interview) then it is bad flag.

2
cbanek 1 day ago 4 replies      
Woman in high pressure tech here.

First, the most important person is your direct manager. Ask recruiters specifically "did I meet with the person I'd be reporting to? If not I would like to meet them." This is the most key person, and if they are not your ally, no matter what the rest of the company thinks, you are sunk.

Ask about other women at the company, or if the team has had women but they've left. If they think that question is stupid, that is one of the biggest red flags.

Of course, try to get a good vibe from everyone you talk to, and if they like you as a candidate, they are likely to be willing to spend extra social time after extending an offer, such as a lunch with the team or something like that.

In the end, I'm sad to report that because good people leave faster, that most likely if you have a great manager that respects you, it's likely if you stay more than a couple years that they might be replaced. You may or may not have a say in that, and they may not be supportive. Always be on the watch.

3
seaknoll 23 hours ago 6 replies      
Woman at a ~100 person startup here -

Wanted to comment because there are a lot of posts on here that seem to promote some idea that the company has to really push for women-friendly policies/activities to be a great place for women to work, which I happen to completely disagree with (save for policies that could be classified as human-friendly such as leave and flexible hours).

I work at a mediocre startup (first engineering job, don't judge!) and therefore we have some trouble hiring people. We've got the ping pong and kegs, which I couldn't care less about, and plenty of brogrammers and other bromployees, but day to day those really are irrelevant if you're getting interesting work and have a good manager.

We absolutely have a diversity issue - I'm the only female engineer on a team of about 20, the company as a whole has maybe 1/3 women, it took the company about 6 years before they had their first woman go on maternity leave (many men are fathers, though their paternity leaves were short), and I don't work with anyone who would be considered underrepresented in tech.

Because we have trouble hiring, we've tended to get people who are super green but excellent coworkers, or who are great programmers with mediocre-to-awful people skills. Of the latter, 2 had very clear misogynist tendencies, and both were fired after complaints made by men. One of the two made my life really uncomfortable when I surpassed his skill level, but only for about a week and then he was fired. I didn't even have to complain - my manager saw it and acted immediately.

We don't have a very active diversity group, though we tried to at one point and it fizzled out. But honestly, my boyfriend works at a company with a diversity group and they do the most ridiculous, cringe-worthy activities that really do not make women look very sensible, unfortunately (arts and crafts, etc).

Basically, my company looks like the exact type of place you might want to avoid if you want a female-friendly workplace, but it's been a wonderful place for me to grow as an engineer. It has some major problems, but is really trying to take concrete steps to improve. I'd love to have some female role models and a more diverse group of coworkers, so please don't discount companies like mine for looking like the stereotype!

4
thex10 1 day ago 4 replies      
I am a woman of color and to be honest I totally lucked into it.

From the perspective that I work for a large, old company:

* Get a sense of how the company embraces (or doesn't embrace) flexible work arrangements. Can an employee leave early to run errands or pick up kids and make up the hours that night or on a different day without having to jump through hoops and/or get looked at like they have two heads?

My theory is that, in having a mindset that can accommodate different working arrangements, this can extend to accommodating different kinds of people. I'm suggesting that an employee might be less likely to be ostracized as 'other' at a place like that.

* Do they have the resources to encourage your growth by supporting you taking classes, going to conferences, buying you books, etc?

My theory here is that this supports a belief that people are capable of growing and improving, which is at conflict with the belief of anyone not being "technical" enough or somesuch.

If you want to be around fewer ego-inflated tech bros I recommend a place where the leadership is not comprised of ego-inflated tech bros. This combined with what I mention above probably eliminates most startups right off the bat... anyway thank you for listening to my theories

5
thisone 23 hours ago 2 replies      
how do you know the 'great culture' is for assumedly white dudes (what does that mean even, white dude is not some singular set of human traits)?

I'm female, I've been the first and the only woman on teams. I don't give a crap about it. I do my job and expect my colleagues to do the same.

Any place with crap culture is crap culture for almost everyone, no matter gender-identity or race.

I look for places where the employees are passionate and care about what they're doing. Somewhere where code reviews are neither combative nor do they roll over and let things through. Basically somewhere I'll be working to be better for both me and for my colleagues.

Maybe that's something you could ask about. How are code reviews handled, how are implementation disagreements handled. Ask for stories about the last time something fell over. How do they handle call outs, all those stressful situations that people often like to brag about. How someone brags can tell you if you want to work with them or not.

6
Jemmeh 21 hours ago 0 replies      
Minority woman here.

1.) If it's really a huge concern to you, the best thing to do is probably go to a women's coding group in your local area (try looking on Meetup.com) and talking to the women there. You can ask them pretty candidly how it is at their companies. Only downside is you might miss out on a totally fine company that doesn't have any females yet.

To those saying check if there's a woman on the team already as a metric---eh, if there is that's nice but if there isn't that's not necessarily bad. There are far more men in our field than women. I wouldn't write a company off for just that provided it's a smallish team. I was the first woman and minority on our team. It's fine.

2.) Google the company and maybe also your close team mates. Glassdoor is a good place to check. A bad review or two isn't the end of the world, but if you see a lot stay away. Again downside, a lot of smaller companies don't have many reviews.

3.) You're gonna know if they're lowballing your salary right off the bat when you discuss it during interviews. Make sure you get offers from multiple companies.

4.) You generally can tell a lot from the interview and sometimes you'll have lunch with the team too. Seriously if it's that bad they'll probably show their true colors pretty early on with snide remarks, talking down to you, flirting, etc. I know on a day-to-day basis we women have to brush this off a lot because the world has a lot of creeps. This is not the time to brush it off. Go somewhere else.

5.) No matter how much you try to research ahead of time, sometimes the work environment is just bad. Just as most jobs will have you under a probationary period, you need to do the same to them. Be prepared to leave if it just isn't right. I've seen some people (men and women) just get really wrapped up in the "ideal" of a certain job. Don't fall into that trap.

7
keyboardhitter 22 hours ago 0 replies      
I am a woman working in operations. Here is my opinion. It's just an opinion, but it's something.

I don't think work environments are singular entities that should be read as a whole. They consist of stories, experiences, individuals and the like. I apologize if this comes across as condescending. But I think you are feeding a personal bias or fear, and that you may limit yourself by thinking too broadly about the topic.

Think of your goal from the contrary. Even if during an interview, someone you are getting along with -- or someone you get "good vibes" from -- says exactly what you want to hear and you leave feeling awesome and respected, that cannot guarantee an absence of toxicity in the future.

So why even have a formal vetting process, I wonder? What more depth can you possibly get from a process like this? People come and go. People change. People make mistakes. People project their own insecurities. People have differing opinions and cultures. Unfortunately, that includes differing treatment of minorities in some cases.

I'm not trying to be a sympathizer to anyone who is bigoted, but human nature is unavoidable. Instead of trying to protect myself indefinitely (impossible, imo) I empower myself by reminding myself that I have a choice too.

If I'm uncomfortable or if I feel something is toxic to the extent that my personal life is going into shambles, I don't need to defend myself. I just make changes that are good for me. I'll turn down the job offer where I got 'bad vibes' or, if I'm already employed and going through discrimination that can't be solved by civil conversation or HR, I'll seek employment elsewhere -- I don't mean to imply jumping from job-to-job is easy, though. But if I'm really that miserable, it's probably worth it. Then -- I'll try to be wary of the things that made me miserable, and be mindful of them in future interviews/jobs, with the full expectation that things may change for better or worse.

It all comes down to compromise; and everyone has their limits.

I could use my own experiences to try and tell you how to read people or vet them but... it simply wouldn't be relevant to you as an individual. Ultimately, there are far too many subjective variables at play. If I rattle on and on about "red flags I learned from being sexually harassed", I'd be worried I'd give you irrelevant things to be biased about.

It sounds like you know which things you want to avoid. So I'd suggest to be candid, and initiate conversations such as "How does your team deal with discrimination? Have you ever had to deal with toxicity against a certain minority?" You have every right to want to discuss these things, but only YOU can determine what a 'non BS' answer is.

tl;dr ... YMMV. Be wary of personal biases. Try to be pragmatic, and maybe determine a list of "deal-breakers" for your workplace's social life / experience.

> I feel like I keep getting the same canned PR response of how great the culture is (for assumedly white dudes)

I am not sure what being white has to do with anything -- I find it a bit worrying that you're concerned about discrimination but are placing blame on one race and sex so easily. Don't play the same game you are expressing distaste for. That is not fair to yourself or anyone else.

Hopefully my perspective helps. Again sorry if this comes off as condescending, I mean the best, I'm just not super great with compassion in text. Good luck out there.

8
sevilo 16 hours ago 0 replies      
I am a woman of color. Unfortunately I do think location does matter quite a bit as I've heard of all these horror stories from tech scene in the U.S. but so far I have encountered nothing but respectful working environments, and some really good ones where I feel highly valued and have a lot of room for growth.

I think some things good to look out for during the interview are:- when you ask about their culture, what's their response? Beer and ping pong are not culture, they're at best fun stuff that young, hip bros like to do. If beer and ping pong is all they give you as an answer there might be a redflag there, it's possible that they'd discriminate against people who are not like them (people who don't drink etc.) Good answers to hear are how they want their people to succeed, what's their plan on taking their product and company up a level, what do they value and how do they carry out those values on a day to day basis? Do they provide any opportunities for employees to learn? - look at your to-be direct manager, from talking to him do you feel a sense of huge ego? do they think they know everything and is better than you at everything? or do they show a sign of humility and genuinely want to learn about your background and what you can bring to the table? - everybody else that interview you, are they behaving appropriately throughout the interview? ask them what they like and dislike about their job, that usually tells a lot. Again, if answer is "I love the free beer and pizza" something's wrong. They should be telling you what kind of opportunities they're getting at this company. Ask about work-life balance, during one of my interviews someone actually told me "the work life balance here is pretty good, some people have young children, it's not really fair to ask them to stay late everyday", and that's how I got a feel that the employer does encourage life outside of work.- I'd also watch out for companies that hire women for the sake of filling the quota, they're hiring you based on your gender, not your skills. Can you really expect that they'd value your skills enough to be supportive in your career development when you actually work there? Someone that hired you based on gender, would they really want you to get promotions in the future?

I wish I could explain better, but I think if someone is ego inflated it's fairly easy to tell just from some simple conversations, and I tend to avoid those people (I think even if I were not a woman, I'd still avoid those people).

9
apervez82 1 hour ago 1 reply      
Great question. Ask about age diversity. What is the average age of employees. You can ask for a range to give you a better idea. Also ask about maternity and paternity leave - this will tell you how much thought has been put into the care and personal lives of the people that are working for the company.

Ask about their core values, but ask for examples of how employees embody those values in their daily interactions and their work. How are those values reflected in a manager's leadership style? Ask if they have a public harassment policy. Ask if staff has gone through bias and/or harassment training, or has there been any company-wide discussion around such things. Also ask if you'd be able to speak to other women at the company (someone who is not interviewing you) about their experience working at the company. Equally as important, ask to meet other members of the team you will be working with and see how they are with you (especially male colleagues) to get a sense of if they speak to you or treat with you respect. Have a technical conversation with them (outside interview so the power dynamic is equalized). Remember, you are interviewing them just as much as they are interviewing you. A good recruiter will treat this like a two way sell, because that's what it is.

10
GuB-42 9 hours ago 0 replies      
I think you are looking at the problem from the wrong angle.

You are a minority and assume your environment will be hostile for that reason. And due to confirmation bias, it will probably appear to look like it. The problem is that you might not be able to see the forest for the trees.

Toxic environments are usually toxic for everyone. And the cause is usually dishonesty, poor management, unrealistic demands, etc... High turnover, poor treatment of customers, etc... is a big red flag. Forget about your status as a minority for now and look at the big picture. Poor treatment of minorities usually go with it.

11
judy_I 1 day ago 1 reply      
I am a woman and work in Boston as an engineer currently programming web apps for a consulting company. I had plenty of good experiences but also had a couple of bad ones. I could always catch something during the interview and or when you walk in. I would first evaluate the employer before I evaluate the team. You will need to find an employer that think highly of women. The founder of my company relies heavily on another female leader. Half of his staff are women Another CTO that I work with only has one full time staff female support person and he relies heavily on her. On the other hand I went for an interview where there are no female engineers and the vp of engineer was suffering from unconscious bias. I later heard that other male employees actually disagreed with him for not hiring me. There was another guy that changed his mind half way through during the interview. You will catch it but if there are no strong female leaders/female staff that are heavily relied on then you probably shouldn't work there.
12
DanielleMolloy 1 day ago 1 reply      
You need a filter that removes the toxic people, and moves you closer to potential jobs at the same time. I agree with some commenters here that this is a problem for all sorts of people, i.e. including white dudes; given that many are entering the field that are mostly driven by money and coolness.

One suggestion: Search for events and meet-ups where people gather that are driven by a higher-goal idealism depending on your interests this could e.g. be privacy and hacker's events, the sciences, NGOs, environment, political movements. Talk to the men and women there and find out where they are working. It is far more likely to meet people there that are intelligent and work in interesting jobs, and their idealism and progressiveness usually affects other areas of life, too (i.e. they are less likely to be racist or misogynist). Of course I am talking about probabilities here, not guarantees.

13
jansho 22 hours ago 1 reply      
I've given up finding that great company culture. Bro cultures, and yes even female jealousy, but the dealbreaker for me is work inflexibility. I get utterly exhausted working in open office environments, and I swing from absolutely crap in small talk to excitable gushing about last night's TV (that nobody watches.) People apparently don't like randomised personalities! I figured that the life of a salaryperson may just be wrong for me...

Now I split my time 30:30:30 on contracting, developing my edtech baby and reading/ art/ learning. The 10% is allocated for family and the blue days.

At the risk of misleading others, please remember that every person has a unique pattern. It seems a lot like retiring but believe me it's not haha. I have to work extra hard in finding and maintaining my contracts, just so I can support my edtech project with enough cash and time.

And, although flexibility is what I was looking for, it's very easy to become idle. In the first few months, I struggled - but this I suppose is a much needed exercise in taming my short attention span (!) It's still too early to tell - it's been ten months now - but as an individual, learner and founder, I think I'm happier and made far more progress than before. And at last my baby is growing! ;)

Hmm. So I ran away rather than deal with toxic/ mediocre environments ... but perhaps this is the best!

14
seawitch 1 day ago 0 replies      
15
jmcgough 1 day ago 2 replies      
Non-binary queer woman here. I can usually get a vibe at interviews about the company culture, from the people I talk to (my questions and their general personalities).

The only team I've ever felt "normal" at was one where one of the interviewers was gay. My boss there had hired a bunch of really talented queer developers from his network, so half the team was queer. I guess I really liked the personalities of the people I interviewed with (it was a full-day pairing interview, which is a lot better for getting a feel for a company than just whiteboarding), so I figured it'd be a good group of people to work with.

The challenge is that if you're interviewing for a larger company, you might not know which team you'll end up in if you accept an offer. Try to avoid this situation, and get a feel for the people you'd be working closely with.

I think if I were to interview for a new company now, I'd reach through my network and try to work with a friend (or former co-worker). I still have never had another woman on my team (after about 5 years in tech), so in the future I'd probably look for a company that has female engineers and high-ranking women within the company.

I've also found that companies that use pair programming tend to value empathy and teamwork, because when you're working that closely with your coworkers every day, no one wants to work with a jerk.

There are some bad companies here in the sf bay area, but there are also some really great places to work. Glassdoor has saved me a few times early in the interview process.

16
usmeteora 8 hours ago 1 reply      
The biggest issue is when guys use new incoming female employees as dating prospects because they don't meet females elsewhere. They may be nice and friendly but I don't want to have to shake off and turn down 6 guys who are fighting to get at me first everywhere I work, its really not ok. It happens at every place I've ever worked and watch the same guys do it to new girls.

They are here for a job, not to supply you with intimacy. It's even more sad to think about how much these women are not viewed as great additions to the team, but how likely you are to get a date with them. It's very frustrating.

17
unitorn 1 day ago 0 replies      
Hello! I am a woman in the bay area. Here's what I do:

There are multiple online resources, like women's only whispernetworks. I don't feel safe posting details of these groups on a wesbite like this, but a google search/asking around will probably do. If I'm interviewing at a new place, I usually post on said whisper networks to ask if anyone has heard anything (positive or negative). InHerSight.com <--- glass door for womenhttp://goodforpocin.tech/ <--- I have heard mixed reviews, but the fact that something like this exists is great. The best way to find out about good companies is of course by word of mouth, talking to people who have worked there and getting input on pros and cons

Questions I ask:"What percentage of women, PoC, etc is on the dev team? <---I never expect high numbers, I'm more asking this to see how they respond and if they even know the answer"Are there women in leadership?"*One of my mentors refuses to move forward in the interview process if there were no women on her interviewing panel, which she says is a red flag that they are pretty clueless of how important inclusivity in tech is to her.

18
stevenwoo 19 hours ago 0 replies      
If you are open to other locations, I used to work for a NASA contractor near Houston and at that time (when the shuttle was actively used) some of the best programming minds/organization (at least measured by quality/process/number of errors) were the group at Lockheed Martin that made the Shuttle software and I remember it was roughly 50% female from top to bottom. I wonder what became of that group, someone here probably knows the story better than I do. I thought it was SAIC but this article says it was LM.

https://www.fastcompany.com/28121/they-write-right-stuff

When I was there in the early 90's, all the NASA contractors were pretty progressive compared to the stories you read about Silicon Valley today (where I am currently living.)

19
crucini 17 hours ago 0 replies      
I've read many of the proposed questions in this thread - does the CEO have daughters, does the company send everyone to conferences. I personally would avoid asking "what's in it for me" questions unless the company has shown strong interest.

I remember one candidate who received an offer, then insisted on meeting with the CEO a second time and asking him a few more questions. She never got that meeting; the offer was rescinded. The CEO saw her demand as a bad sign.

Any weird question you ask during this sensitive phase will get analyzed and raise concerns. In other words, you have to gather your info via other means.

20
drewrv 1 day ago 0 replies      
I don't have much experience here as I'm a white dude, but my wife asks "What percentage of your team is female?". I think this is a good question, it's straightforward and quantitative. If they are above the industry average that's probably a good sign. If they're below, but they pay lip service to the fact that they'd like to improve that's ok. And if they're below the industry standard and don't care that's bad.

Recently on a phone screen she asked the manager this and his response was "that's something you need to bring up with HR". That's a giant red flag and she saved everyone's time by not pursing the job further.

21
maerF0x0 1 day ago 4 replies      
If you feel you're underpaid, I encourage you to negotiate aggressively for what you feel you're worth. Amazon is full of resources to help you with that.

As for culture, I'd say just ask. Ask what the team does for fun. That will more or less tell you if you will fit in or not.

22
WalterBright 22 hours ago 1 reply      
There was a ping pong table in my college dormitory common room, and I grew to loath it.

You couldn't do anything within earshot of it. Nobody could just tap the ball back and forth. Noooo. It's serve, back, SLAM! always followed by groans and whoops as loud as possible.

I wouldn't join any company with a prominent ping pong table.

23
bethly 22 hours ago 5 replies      
I look for existing diversity, and of underrepresented minorities not just gender diversity (IME this is often a better signal.) Especially in upper levels: the % of Software Engineer 1s matters a lot less than the % of architects and tech leads.

Second (and I kind of hate to give this one away), I ask "what do you sacrifice when recruiting to ensure diversity?" The answer should be either "it takes us longer to recruit, because we ensure a balanced pool" or "we have changed our process to allow many types of candidates to shine". If the answer is just "we spend lots of money on sending people to Grace Hopper!" it means they aren't willing to inconvenience or piss off overrepresented engineers. You can't fix culture problems by spending money, and when "diversity" is seen as separate from "recruiting" in general it's a clear sign of a problem.

I also use the Internet: I look on LinkedIn for people who have left the company, see how long women stayed and reach out to find out why they left if they did. Backchannel mailing lists are great ways to find a vouch. I check the social media profiles of their prominent engineers and search with keywords like "feminism", "women" and "she". See how they talk about women in the field, whether they follow women on Twitter, whether they posted angry anti-Hillary memes. I've found that a lot more effective than relying on direct questioning, because there are companies out there that will say whatever they think will let them add you as a shield against the accusations of sexism they are facing. Especially my boss: if my boss is going to be a white dude, he had better have publicly condemned sexism in a way that feels constructive and genuine to me.

One other internet trick is to look at where the women you respect are working and apply there. At the very least, you would get to work with technical mentors you admire and can learn from.

You can find good spots here. Seriously, though, trust your instincts, don't be afraid to walk away and don't be afraid to take an "unsexy" job at an old-school company with an HR department.

24
ramy_d 1 day ago 1 reply      
I am on the other side of that table, in a different industry ,and in a different country with a different cultural context, but my 2: Can you identify any women, non-binary, people of color, etc who are in a position of power within the company, like a (co-)founder? I find that to be a big factor. Not that straight white guys are inherently creating toxic work environments but it's surprising how easy it is to not consider other perspectives on every day decisions.
25
cjonas 12 hours ago 0 replies      
Just reading through these comments makes me wonder if its really the "Bro Culture" or just the reality of trying to force 100 people to work in the same place. It seems inevitable that the majority of "like" people are going to have the strongest social presence.

If you can't stand the environment this creates then it seems like trying to find a remote job would be ideal. That way, aside from the occasional off-topic meeting, work is work.

26
leppr 23 hours ago 0 replies      
I would (without asking for it directly) gauge the already present diversity in the IT teams, by arranging to visit the offices during working hours.

Emphasis on in the IT teams, because from my personal limited experience, gender diversity in non-technical roles doesn't correlate in any way with environment toxicity/rigidity, while IMO it totally does correlate in tech roles.

Ping-pong tables aren't a red flag at all for me, the company I'm in has them, beer dispensers, nerf guns and all, and the culture is very friendly and welcoming to any kind of people. Our tech team ticks literally every diversity checkbox and everybody can integrate well, yet without being forced to, and despite a few "toxic" elements that don't ruin it for everyone (without being oppressed themselves). The key was that from the start, the first few engineers were already "diverse".

Disclaimer: I'm a while male and I'm leaving for an all-white-dudes startup in one month, so no agenda here.

27
diefunction 1 hour ago 0 replies      
come to Curbside https://curbside.com/jobs/, half of the engineers, half of the employees are female. Half of the employees are non-white. ALL YOU NEED TO BE IS SMART.
28
notalaser 1 day ago 2 replies      
Full disclosure: white dude, not a minority of any kind in my country.

Five years ago, I would have said that the percentage of women in an office isn't necessarily a good indicator of anything. Nowadays, this would be my first advice: ask how many women work there.

With maybe one exception, all the places I've worked in that had very few women were terrible places to work in. Most of them were unpleasant to work in even for men who think "bro" is not a word to be uttered after you turn 19.

Teams that have a strong bias against women act on it almost universally: they drive candidates away with shitty and/or unenthusiastic interviews and they make life hard for those candidates who do get through. They don't end up with all-male teams just because reputation preceeds them and no woman wants to work there -- they end up with all-male teams because prejudice and insecurity tend to tip the balance of their hiring decisions, too.

It's not a universal predictor, but I definitely consider it a red flag. Frankly, it's one that I look at, too. I'm not the SJW type, but when I got into this whole programming thing, hacker communities used to be inclusive and diverse, and I kind of like to keep that going.

29
alansmitheebk 1 day ago 0 replies      
I'm not a woman but I have a few ideas that might help:

* Check glassdoor.com to see what current and former employees have said about the company and how they rate it. While the feedback may not be specific to gender / diversity concerns, you can probably get a good feel for whether or not it's a happy place or a disgruntled place.

* Ask how many women work there in developer roles.

* Try to find a publicly traded company to work at verses a startup. A publicly traded company has a real HR department and potentially a lot to lose if they get sued. In a startup, there typically is no HR department. There might be one person who is in charge of some HR-related things like benefit administration, but that person is not equipped to deal with things like handling sexual harassment allegations. That person is also likely be friends with the founders.

30
BlackjackCF 8 hours ago 0 replies      
Asian female SRE here. I've never worked out in the Bay Area so I can't speak to it there, but I've found many places in LA are wonderful, encouraging, and not shitty to minorities in the startup scene. Maybe I've just lucked out, but everywhere I've gone I've been either the only female or one of a few female engineers, but everywhere I've had coworkers who encouraged and mentored me and didn't treat me differently because I'm queer or female.
31
jdavis703 1 day ago 0 replies      
I've had a couple interviews where there was an extended conversation about diversity in tech (both initiated by the interviewer). One of these was from a well-known SV tech firm that's had a lot of controversy around inclusion issues, and I could tell from the conversation that the other person just didn't get it. At another smaller tech company, the co-founders seemed deeply committed to creating an inclusive organization. So a lot of it is just having these conversations with people and making your own personal judgments (a lot of people say the right things, but the reality might be different).

(for the record I'm coming from the perspective of cisgender black male in case it matters)

32
nostrademons 23 hours ago 6 replies      
Disclaimer: not a woman, but this exact question just recently came up among several of my female friends in another forum I follow. I'm not sure I like or agree with their conclusions, but I'll pass them on in the hopes they'll be useful.

They came up with two big questions that have surprising predictive power:

1.) Do you have daughters?

2.) Does your wife work outside the home? (Probably couched in more neutral language like "Oh, what does your wife do for a living?")

[The women in question were director/VP level, and so were directing this toward CEOs and C-level execs. Presumably they'd be asked of your direct boss. Both questions can be easily worked into basic rapport-building smalltalk, i.e. you don't directly ask them this in the interview, you just casually inquire about their family. Also, this assumes a male boss; the conversation mostly ignored the question of female bosses, other than to note that women who had to fight hard to get where they are during the 70s and 80s can be surprisingly tyrannical towards younger women coming up.]

The daughter effect has been pretty well-documented in the media [1][2]; it appears that even the most sexist men want their daughters to succeed, and that rubs off in how they treat women in the workplace. (See eg. Ivanna vs. Ivanka Trump.) The reason for asking about whether the wife works outside the home is that in two-career couples, the husband necessarily needs to take on a larger share of the housework & childcare, which makes them more sympathetic to the constraints & sacrifices that a working mother has to make.

[1] http://www.telegraph.co.uk/men/relationships/fatherhood/1093...

[2] https://www.fastcompany.com/3032432/why-men-with-daughters-m...

33
spinlock 20 hours ago 0 replies      
Binary dude here. My example of an awesome culture starts with founders who actually give a shit about people. I was hired and then the company was preemted on a series B. Rather than letting me start and telling me my options were going to be priced higher, the founders reached out with a checklist form the lawyers so they could give me work and get my start date _before_ the deal closed.

Another anecdote would be bring your kids to work day. Everyone went out of the way to make sure the few of us with kids brought them in and that we had a nice event. It's funny, I told the founders my wife was pregnant with twins while I was interviewing. I had kept this a secret from the job I was leaving because I didn't want them to have leverage over me.

We also have women on the leadership team, etc... but I don't really think that's the key (after all, 3 dudes founded the company and they hired women for key positions). I think it all boils down to not being jerks and really caring about the people you work with and the people your product helps (yeah, we've got an actual mission and not the usual silicon valley bs about trying to change the world).

And, our sales team has already hit their numbers ... for the year so we're hiring engineers to try to keep up with the growth. PM me if you're interested in learning more about the team :)

34
romanows 1 day ago 0 replies      
Could you ask this question directly in an interview? If you have to assume the response is actually talking about "white males" or that the respondent is confusing bias with ping-pong tables, perhaps you are not being direct enough or are speaking to HR instead of a manager?

Maybe it'd work best asked in an abstract, impersonal way: "I've had friends whose contributions have been dismissed because of their gender; what kinds of strategies can combat bias and create a positive environment for all employees?" Ideally this would lead into a nice 5 minute discussion where you could get a feel for their thinking.

35
bsvalley 3 hours ago 0 replies      
California is huge, where in CA are you looking to move? If you go to Northern CA then it's mostly white. If you go to San Francisco Bay Area, it's half Asian (Chinese or Indian descent) half white. If you go to LA, it's even more diverse, more ethnicities in tech, a little like NYC.

In terms of women vs "bros" - I'm a bro by the way, your average Joe - I'd google about companies that promote internal communities like "women in tech", "women XYZ", etc. You'd most likely end up in a women friendly environment.

In terms of salaries, same thing. There are a few tech companies that promote equal pay. Just google it.

Also, using the term "harassment" is pretty strong. You make it sound like it's part of the everyday life for women in tech. By that you mean being surrounded by boys who act like boys? There's nothing much you can do here because there are still more males than females in this field, which is unfortunate. Time will help! I hope. Good luck in your search.

36
b0rsuk 3 hours ago 0 replies      
Try to find a workplace where at least 1 other woman works in the same department. Guys will fell a lot less comfortable harassing you if it's not just "her" but "them". They can no longer expect that all other coworkers will have the same male point of view.
37
webwright 15 hours ago 2 replies      
I'd go to LinkedIn (or their About page if they are small enough) and just look at the people. The more diversity you see, the more they are walking the walk. You can also look thru past employees via LinkedIn (might require premium account) and reach out to diverse folks who've left the companies you're considering.

Funny thing about the beer-- we got draft cold brew coffee at work and went out of our way to design and laser-cut a tap handle that says "Coffee" so candidates wouldn't think it was a beer keg.

Other ideas: run their job post through Textio (https://textio.com/ ).

Disclaimer: I am a white dude, but my company of 65 (in Seattle) is about half women on the engineering side of things. It was a lot of work.

38
hannele 20 hours ago 0 replies      
If you have an interview at their office (and you should), keep an eye on the decor and the body language of the people working there. Ask to see any common areas, the places where people hang out at lunch time. What kinds of posters do you see, what kinds of memes? Although to each their own, you can get a good sense of what's considered appropriate by how people decorate their space, and how comfortable they appear.
39
hkmurakami 1 day ago 1 reply      
If the C level including the CEO have (young) children, imo the workplace is saner.
40
fyrepuffs 1 day ago 0 replies      
You need to interview the company just as they interview you. Ask some questions like what kind of development processes they follow, how they organize themselves and what kind of offsite activities they have. You can tell a lot from the answers about the culture in general. For example do they respect employee's time and do they show good team collaboration and cohesion or are they a 'hero/special snowflake culture'.

If you don't like the answers, then it might not be a good fit for you.

41
primeblue 12 hours ago 1 reply      
It's hard to find an academic-type culture without big egos and ignorance.

Look for teams that have a broad range of ages and experiences. These people foster learning and accept they individually don't know everything.

Stay away from mono cultures.

Managers that are involved parents having ongoing experience raising children are great. People without children haven't been forced to learn patience and compassion...day in day out being a responsible parent is like a good manager.

42
brink 22 hours ago 3 replies      
Straight white software engineering male here - I've never worked in an environment where I thought it to be sexist. Is the environment out there worse than what I'm seeing or seem to believe?
43
steveb 6 hours ago 0 replies      
Before you leave, I'd love to talk to you. I'm in STL and looking for engineers to work in a professional, supportive, and inclusive environment. steve@aster.is
44
tehlike 14 hours ago 0 replies      
Hi,

Google SWE here.

I think part of what you are looking for is unfortunately luck. I have a female coworker who had changed teams and she mentioned some of the problems she faced in her previous team, and she then mentioned she was much happier and valued in the new team.

What you can probably do is to try to find a female engineer within the team you'd be joining if possible.

As for Google, I am a male, so what i say wouldn't mean much probably, but my female coworkers and their work is valued - my management chain is pretty great in ensuring that.

45
z3t4 1 day ago 0 replies      
Make sure you will be a valuable and highly respected member of the team, and not "quoted in" (men/women quota).
46
imhoguy 22 hours ago 2 replies      
TL;DR build your trusted network, ask friends, consider freelancing

There is no place or social group free of toxicity. There is always a chance you meet some bad guy or gal in the hierarchy, especially with some overwhelming majority. Unfortunately mostly you will find one by experiencing that yourself. What may save you from these issues may be peers selection and workplace flexibility.

Regarding the employment, the interviews I had most of the time were some kind of PR farse. No way the interviewer is going share to candidate the team's dirty secrets and company taboos, especially abuse issues. So far for me the good source of information with very low B/S levels are my trusted friends and their friends. Before joining a new place I usually do private research with them.

Therefore what I would suggest is to build your professional network, participate in local interest groups, meetups etc with people who share or accept your POV. Just e.g. in my nearby city (smaller than STL) there are several dev groups built by women who work for variety of companies. Activity in such groups may open you to new ideas, friendly opportunities, referrals. I believe even some successful start-ups were born from such gigs.

Also, have you considered freelancing? Being your own employer may make you professionally independent and significantly shield you from people who trespass into your private life. Similarly to the interest groups you can keep portfolio of clients who accept you as you are.

47
VLM 22 hours ago 4 replies      
In the military we work with all sorts of people, at least with respect to gender, race, religion, and to a lesser extent sexuality. At the same time, admittedly most were Republican and none of us did drugs.

If you're willing work with Republicans and/or non-drug users (most tech people are super far left and absolutely will not) then working for an ex-mil manager or with ex-mil coworkers will likely be an extremely pleasant experience as they're very comfortable around people of color and women. On the other hand, if weed smoking on duty and membership in Antifa is also required (why?), the ex-mil department might not be as good of a fit.

On a larger scale piece of advice, even if you don't apply this specific match, it is useful to consider that its highly unlikely that your definition of the progressive stack perfectly and precisely matches everyone else on the planets individual definition of the progressive stack, so hopefully inspired by this post, you'll pay close attention to variations in progressive stack composition, assuming you pick your next job solely on political compatibility.

48
AnimalMuppet 1 day ago 4 replies      
Disclaimer/warning: Straight white male responding.

But it seems to me that an environment that is toxic for women is also an environment that I would find at least somewhat toxic - not because the crap is hitting me, but because there's a bunch of crap. So what I look for might be useful to you.

I'm older - 55 - and some of what I have is just "hey, this feels like that place that I worked, and it was pretty crummy". But I think there are some specific things you can try to look for.

Look for ego in the interviewing process. If the interviewer (even one of them) is trying to show how smart he/she is, that's a red flag. If one of them can't handle it if you disagree, that's a red flag.

Look for what they say about their culture. Or maybe, look for how they say it. It's fine if they have a ping pong table. At least, it's fine if that's an "oh, by the way". If it's a big part of what they have to say about themselves, that's more of a red flag.

Beer is a bigger red flag. The more their description of their culture sounds like a recruiting pitch for a frat house, the more it's probably toxic to someone who doesn't want to live in a frat house. ("We like to party together after work" is also a red flag.)

I don't know your age. I don't know how much of this is just "Get off my lawn!" But you might find some of it useful.

5
Ask HN: What code samples should programmers read?
292 points by _Microft  1 day ago   142 comments top 40
1
daliwali 1 day ago 9 replies      
Here's an overlooked one: your dependencies.

Every programmer should read the (presumably open source) code they depend on, but almost nobody does it. Some look at documentation, but not everyone even does that. What you may find is that some of the code you depend on is garbage, and may even motivate improvements.

This may be less feasible for giant messes such as most front-end tooling and frameworks that exist today.

2
mafribe 1 day ago 3 replies      
For those who understand networking: the Mirage TCP/IP networking stack [1] in pure OCaml is a must. It's an object of extreme beauty, and possibly the most eloquent argument for types, types inference and algebraic data types I can think of. The TCP state machine is mostly specified at type level [2], preventing numerous potential bugs in one fell swoop.

Reading this code is probably most enlightening if you have already written networking protocols.

NB: this has nothing to do with OCaml, other comparable languages with ADTs (Scala, Rust, Haskell, F#) would be similarly suitable.

[1] https://github.com/mirage/mirage-tcpip

[2] https://github.com/mirage/mirage-tcpip/blob/master/lib/tcp/s...

3
elorm 1 day ago 2 replies      
Check out 500 Lines or less https://github.com/aosabook/500lines

I just can't recommend it enough. All the projects are open source, so you can review the source code and still be walked through the code by book. You'd learn why the programmers made certain trade offs and how the applications became better of for it

4
petercooper 1 day ago 1 reply      
This doesn't entirely match the criteria in your question but I think dipping into the standard library for your language (if it has one) is a good idea. It's not only useful to see what you're using but it can also show you how language experts use the language (which can be useful stylistically) and be an archaelogical exercise in the history of the language and its priorities (particularly true with Ruby's stdlib, I found).
5
fenomas 1 day ago 5 replies      
I'm not a C person, but I've often heard that the Quake source code is good, practical-not-necessarily-elegant code that's worth emulating.

https://github.com/id-Software/Quake

6
jonsen 1 day ago 1 reply      
7
mtreis86 1 day ago 0 replies      
I am learning lisp and was recommended to read "Paradigms of AI Programming" as the examples are all given in lisp.

The later book is "Artificial Intelligence A Modern Approach" which is written with pseudocode examples. The site includes other languages than lisp; python, java, js, scala, and c#.

PAIP lisp code: http://www.norvig.com/paip/README.html

AIAMA code: https://github.com/aimacode

8
shezi 1 day ago 1 reply      
Following Handmade Hero is always a good idea.

http://handmadehero.org/

9
Walkman 1 day ago 0 replies      
The Architecture of Open Source applications: http://aosabook.org/en/index.html

These are very detailed, very well written articles from well-acknowledged developers about their OSS project.

10
nxc18 1 day ago 2 replies      
Really, no one has said Linux yet? This is very surprising, given how often it is put on a pedestal for its excellent design...

Realistically this is because it is in fact a big messy pile of 'at least it works'.

Still, it is worth studying as an example of a work that was architected to support open source contribution from thousands of developers.

11
franzwong 1 day ago 0 replies      
You should read the code of a open source project that you often use. You might not have the "ah ha" moment when reading something unfamiliar.
12
Animats 1 day ago 0 replies      
Fang.[1]

Fang is a utility program for UNIVAC 1108 computers, written in 1972. UNIVAC's EXEC 8 had threads and async I/O for user programs, decades before UNIX. The machines were shared-memory multiprocessors. FANG uses those capabilities to parallelize copying jobs. The UNIVAC mainframes had plenty of I/O parallelism and many I/O devices, so this was a significant performance win.

See especially "schprocs". Those are the classic primitives from Dijkstra: P, V, and bounded buffers. That technology predates Go by 40 years. Here's Dijkstra's P function:

 . . . DIJKSTRA P FUNCTION . . . LA,U A0,<QUEUE> . LMJ X11,P . <RETURN> X5 DESTROYED . P* TS QHEAD,A0 LOCK THE QUEUE LX X5,QN,A0 LOAD QUEUE COUNT (note: load) ANX,U X5,1 BACK UP THE COUNT (note: Add Negative, i.e. subtract) SX X5,QN,A0 REPLACE THE COUNT IN THE QUEUE (note: store) TN X5 DO WE NEED TO DEACTIVATE HIM ? (note: Test Negative) J PDONE NO. SKIP DEACTIVATION (note: Jump, i.e. branch) ON TSQ=0 (note: this is an assembly-time ifdef) LX X5,QHL,A0 LOAD BACK LINK OF QUEUE SX X5,QHL,X4 PUT INTO BACK LINK OF ACTIVITY SX X4,QFL,X5 CHAIN ACTIVITY TO LAST ACTIVITY SA A0,QFL,X4 CHAIN HEAD TO NEW ACTIVITY SX X4,QHL,A0 MAKE THE NEW ACTIVITY LAST ON QUEUE CTS QHEAD,A0 RELEASE PROTECTION ON QUEUE HEAD SCHDACT* DACT$ . DEACTIVATE PROCESS (note: system call) OFF ON TSQ (note: for later version of OS with alt wait fn) C$TSQ QHEAD,A0 WAIT FOR C$TSA (note: system call) OFF J 0,X11 RETURN AFTER ACTIVATION . PDONE CTS QHEAD,A0 UNLOCK THE QUEUE (note: not a system call, just a macro. Stores 0.) J 0,X11 RETURN
(Notes:

Instruction format is

 OPERATOR REG,OFFSET,INDEXREG
The "TS" instruction is "Test and Set". That's atomic. If the flag is already set, an interrupt occurs and the OS does athread switch. CTS just clears the flag. Later versions of theOS support C$TSQ and C$TSA, where the OS queues waiting testand set operations.

X4 is the "switch list", the local data for the thread.)

[1] https://www.fourmilab.ch/documents/univac/fang/

13
mpfundstein 1 day ago 1 reply      
ffmpeg source code :-) its beautiful C code and you will learn how to build a maintainable, modular system with just the tools that C gives you.
14
simon_acca 1 day ago 0 replies      
All of the norvig Jupyter notebooks: http://norvig.com/ipython/README.html
15
sigjuice 1 day ago 0 replies      
As a Linux user, I find it very useful to set up the source and debug symbol repositories for the distribution that I am running. This way I have a large body of code easily accessible which matches what I am actually running. I usually grep for error/log messages, or examine core dumps or hung/misbehaving programs using gdb.
16
pjc50 1 day ago 0 replies      
I don't think there's an "every", because not every programmer can read every language and there isn't even a common union of languages that you can universally expect.

In that regard Donald Knuth's work in the fictional assembler MIX for TAOCP is worth reading - it's at one remove from any real system. Knuth's TeX source is also quite unique.

17
db48x 1 day ago 1 reply      
A metacircular interpreter for Scheme. You can even watch a lecture where this is presented (https://ocw.mit.edu/courses/electrical-engineering-and-compu... see also part 2).
18
jacquesm 1 day ago 1 reply      
Hashlife and anything else implemented by Norvig, he's one of the best programmers that I've had the pleasure of reading code from.

Plenty of tricks to be learned there, as well as fantastic structure.

19
emodendroket 1 day ago 3 replies      
I don't think there is such a thing. Learning about common algorithms is a good idea but programs aren't novels. People pay a lot of lip service to reading code but practically nobody does it.

http://www.gigamonkeys.com/code-reading/

20
Clubber 1 day ago 3 replies      
A half joking response (only half), I would say your own code you wrote a year ago.
21
kowdermeister 1 day ago 0 replies      
Read something that matters to you, some library or snippet that you use a lot or you depend on it. Context matters a lot in getting motivated to comprehend things. Otherwise you will just browse some random code with little to no connection and lack of understanding how the authors got there.

One source code I look into from time to time is Three.js: https://github.com/mrdoob/three.js/ to discover more details over the documentation.

22
zachwill 1 day ago 0 replies      
One of the pieces of code I read through that helped me the most: Beautiful Soup. If you're a Python developer, I wholeheartedly recommend you read through it -- although I do think Leonard has removed some of his more disdainful comments from BS2. When I originally read it, I loved how you could really feel how much he hated all the XML/HTML parsing gotchas. I think it's the only time I've laughed out loud reading through code because of humorous comments and TODO notes to self.
23
hendry 1 day ago 2 replies      
24
donatj 1 day ago 0 replies      
Golang itself. It's soooo readable and contains so much wisdom.
25
EternalData 1 day ago 0 replies      
Thanks for bringing this thread of thought to light! Sometimes I look through Stack Overflow not only for solutions to particular problems, but particularly elegant solutions in a proactive manner. I often just browse through profiles of people with tons of karma.
26
QuotesDante 1 day ago 0 replies      
The D3 source code. Since this is made of around 30 modules, one might start with [d3-quadtree](https://github.com/d3/d3-quadtree).
27
evanwolf 1 day ago 0 replies      
I love this. Writers ask the same question. Teaching literature and composition starts with reading the works of greats who game before, learning what made them great, and incorporating their skills into your own tool box.
28
EliRivers 1 day ago 0 replies      
Fast inverse square root as seen in Quake (as mentioned in other comments)

https://en.wikipedia.org/wiki/Fast_inverse_square_root#Overv...

29
kybernetikos 1 day ago 0 replies      
The book Beautiful Code has some examples along these lines with interesting commentary too.
31
taw55 1 day ago 1 reply      
Lugaru Gametick. A succesful indie game written by a highschool student.

https://hg.icculus.org/icculus/lugaru/file/97b303e79826/Sour...

33
golergka 1 day ago 0 replies      
Fabien Sanglard wrote great reviews of various codebases, including git, Doom 3 and others.

http://fabiensanglard.net/

34
kenoyer130 1 day ago 0 replies      
https://www.amazon.com/Framework-Standard-Annotated-Referenc...

Even if you hate c#/java an amazing book on how to write solid clean code.

35
oddthink 1 day ago 0 replies      
Whenever I look at the Tcl source code, I'm impressed by how clean it is: https://github.com/tcltk/tcl
36
likelynew 1 day ago 0 replies      
smallpt: Global Illumination in 99 lines of C++: http://www.kevinbeason.com/smallpt/
37
pyroinferno 1 day ago 0 replies      
I am surprised no one said Linus Torvald's double pointer problem
38
rijoja 1 day ago 0 replies      
sox is kinda nice. Read a lot of it ages ago but I would like to revisit it know with my marginally improved math skills.
39
notburnt 1 day ago 1 reply      
I remember having a few aha moments when reading through the Redis code.
40
kruhft 1 day ago 0 replies      
Read the source code to Emacs. It has everything a growing programmer needs: portability, compilers and interpreters, user interface(s), language design, build systems...

http://www.gnu.org/software/emacs

6
Ask HN: Where should a UK-based company move to if encryption is outlawed?
27 points by throwawayblwBz  1 day ago   43 comments top 15
1
throwawaymanbot 6 hours ago 0 replies      
You should go to Ireland. Completely Different jurisdiction. Still in the EU. Close enough so you can go back and forth between The UK and Ireland.

If you contact idaireland @ ida .ie, they may have some relocation help available to avail off.

PS, there is an update at the bottom of that register article about backdoors. The EU is NOT requiring them.

"A spokesperson from the EC got in touch to say that Jourov's words had been misinterpreted and there is no plan to introduce legislation covering encryption. The proposed laws will instead cover faster access to material held in the cloud in different jurisdictions. Material that, presumably, they expect to be unencrypted"

2
ignasl 1 day ago 2 replies      
Probably Berlin. Vilnius or Tallinn could be interesting choices because of friendly business climate, lower taxes, competent and cheap talent, not far away, good tech culture and basically 0% chance that someone would try to outlaw your business (Germany probably has a bit higher chance but I guess it's also not that high). I think US do have some restrictions about exporting encryption to some (all?) foreign countries so you better look closer into that before making a decision.P.S. Stockholm also could be a good place. It's just quite expensive.
3
gpresot 13 hours ago 0 replies      
Consider Switzerland. Proton Mail which basically has a business model founded on privacy and encryption , uses this location as a competitive advantage. Switzerland has some of the strictest privacy and confidentiality laws (all those private banks and secret bank accounts needed them :) ). Zurich has a good tech scene apparently (Google has an engineering center there) and ETH and EPFL provide excellent talent. Downside is cost. Cost of living is extremely high and salaries have to match that (I think salaries for developers are substantially higher than in London). Some companies set up HQ here and then keep bulk of people in Berlin or other location (e.g. Getyourguide.com )
4
kevinbowman 1 day ago 1 reply      
Amsterdam? It's got quite a tech culture, and is only 30-60 mins' flight from most of the UK. I don't know what the political stance is on tech-sensitive issues, though.
5
jrs95 1 day ago 1 reply      
I'm not sure on how difficult it would be to move to the U.S., but there's a lot of underemployed tech talent in Columbus, Ohio, and we have a pretty low cost of living too. I'm pretty confident we won't have any encryption bans any time soon, we have too many giant corporations that would be vehemently opposed to it.
6
cpncrunch 21 hours ago 2 replies      
Canada. It's English speaking, close to the USA, generally very liberal, tolerant and safe (certainly compared to the USA and UK), good economy, amazing lifestyle.

So far there are no encryption laws in Canada, and nothing on the horizon, although you never know what could happen in future (if we get another idiot like Stephen Harper in power).

https://www.theglobeandmail.com/technology/why-canada-isnt-h...

7
iSloth 22 hours ago 1 reply      
Isle of Man? Not subject to UK law, 0% Corporation Tax, still physically very close.
8
ciaran23 20 hours ago 1 reply      
Dublin, ireland. Huge tech culture, lots of highly skilled employees
9
mhkool 21 hours ago 1 reply      
The whole issue also depends on your customers. If your customers are in countries where the governments are speculating about backdoors the business may fail since it does not help when the business is in a safe area but the customers not.

Why don't you start a new political party ?

10
confounded 23 hours ago 1 reply      
If you wanted a swing in the opposite direction, Iceland has the best privacy and data laws. I get the impression their economy will increasingly reflect this.

However, it also has plenty of challenges, from population/talent size, costs, weather, etc. From a cursory look, immigration looks relatively easy if you have a job.

11
everytimewe 23 hours ago 2 replies      
If you want to stay close to the UK and outside of EU, I guess Switzerland or Iceland make most sense for this type of business.Otherwise you could move to Americas, South Africa or Asia.
12
garrettheaver 22 hours ago 1 reply      
Ireland
13
toomuchtodo 1 day ago 1 reply      
Dublin or Barcelona.
14
unixhero 1 day ago 1 reply      
Iceland
15
kiqi 21 hours ago 2 replies      
the moon or outer space?
7
Ask HN: Investor wants access to Google Analytics/MailChimp/Quickbooks etc data?
16 points by basicfounder  21 hours ago   7 comments top 5
1
paulsutter 16 hours ago 1 reply      
Easy answer: if you don't already have this material in your pitch deck, you're probably a bad investment.

Comment below disturbing, you want to be transparent before during and after the investment:

> it might put the deal off since some of our detailed metrics are not good enough.

2
propter_hoc 21 hours ago 1 reply      
These are legitimate requests if you are in latter stage due diligence. If you are at this stage, you should be at a point where you are pretty positive that the firm and its people will be accretive if they do decide to participate in your company.

It's a bit dicey if you've gone through preliminary chats and into DD while not being 100% about the people at the firm yet. Definitely don't just jump off the DD train since it can be hard to get that rolling again. However, do get a beer or lunch with them ASAP and really try to get a hold of whether you trust them and want them as partners.

3
savethefuture 21 hours ago 0 replies      
Of course they want to see all of it, they are potentially investing into your company, they have to make sure they will get a return on their money. If your company is not worthy of their investment, then its not worthy. You cant lie to your investors...
4
julesie 9 hours ago 0 replies      
I would only ever share that level of data if we had already signed a term sheet and were in the latter stages of DD.

The sad fact is that there are unscrupulous VC firms out there that are just looking to mine you for data. Either for the benefit of a company already in their portfolio or as a comparison point for another deal they are considering.

Trust your gut.

5
e9 21 hours ago 0 replies      
If they are doing this much due diligence then they are good investors and if they invest then it's a good signal that you are doing something right. If they don't invest then it's a great opportunity to learn from them as much as possible as to why they think you are on a wrong path and how to fix it.
8
Ask HN: How are top-grossing apps calculated?
53 points by bvod  1 day ago   22 comments top 6
1
mdonahoe 1 day ago 2 replies      
Fun fact: if your app has a reasonable conversion rate, you can basically buy your spot on that list temporarily by spending hundreds of thousands of dollars on advertising.

It usually isn't sustainable, but can be helpful during launch of a new game to make sure it gets attention. I think it was easier than cracking the Top Free list, since fewer apps have IAP.

The ad team at my previous game company would do this and not tell the rest of the rank-and-file employees. We'd be psyched to see our app in the top grossing list... meanwhile the ad team would be spending more money than we were earning.

2
Zakiazigazi 1 day ago 1 reply      
They don't account for revenue from outside the stores. Apple technically doesn't allow purchases to happen outside its stores, in practice that has always been a bit of a grey area, but in any case that revenue is not disclosed to Apple and therefore cannot affect the rankings in any way.

As for the calculations, Apple updates roughly every six hours and I think (the algorithms not being public for a good reason, I have no real proof), they take into account the total sum revenue during the last period, but also use the relative delta revenue as a factor, so even with slightly lower revenue a suddenly popular app can appear higher in the rankings.

They also seem to change the algorithms every once in a while, we've seen pretty drastic changes overnight a few times, eventually though the top apps always normalize around the usual suspects, so it's possible that they just do some sort of reset of historical data that also affect rankings.

3
adamcanady 1 day ago 4 replies      
I also wonder why Apple allows some apps to accept payments via credit card yet others need to use the built in payment solutions?

EDIT: some research later indicates that it's possible allowing a user to sign up outside the app (and outside a webview initiated by the app) skirts around the policy [1], since the user can return to the app and log in, then use their account for payments.

[1] https://www.designernews.co/stories/9695-how-do-apps-like-ly...

4
mdonahoe 1 day ago 0 replies      
How do you know a large fraction of subscription signups don't happen through the App Store?https://9to5mac.com/2015/09/24/netflix-in-app-purchase/
5
soulchild37 1 day ago 0 replies      
I think Apple only take in account for direct app purchase, in-app purchase and subscription plus this ranking is calculated weekly.
6
richardwhiuk 1 day ago 0 replies      
I believe top grossing apps only includes payments made via the App Store for Apple.

It includes both in app purchases and cost to buy.

9
Ask HN: Books you wish you had read earlier?
585 points by jmstfv  3 days ago   260 comments top 106
1
smaddox 2 days ago 2 replies      
Non-Fiction:

"How to Win Friends and Influence People" by Dale Carnegie, because it changed my understanding of people for the better.

"Surely You're Joking, Mr. Feynman!" by Richard Feynman, because it gave me a model for how to enjoy life.

"Models" by Mark Manson, because it helped shape my understanding of heterosexual relationships.

"An Introduction to General Systems Thinking" by Gerald Weinberg, because it illuminates the general laws underlying all systems.

Fiction:

"Stranger in a Strange Land" by Robert A Heinlein, because it showed me a philosophy and "spirituality", for lack of a better word, that I could agree with.

"The Fountainhead" and "Atlas Shrugged" by Ayn Rand, because they showed me how human systems break, and they provided human models for how to see and live in, through, and past those broken systems.

"Harry Potter and the Methods of Rationality" by Eliezer Yudkowsky, because it set the bar (high) for all future fiction, especially when it comes to the insightful portrayal of the struggle between good and evil.

2
Houshalter 2 days ago 3 replies      
Rationality: from AI to Zombies really changed my way of thinking in many ways. It's very hard to describe it or sell it in a few sentences. Partly because it covers so many different things. And partly because I read it so long ago and have already absorbed many of the good ideas in it. They no longer seem exciting and new, and just feel obvious. But they certainly weren't when I first read it.

I constantly see places where an idea from the book is relevant and I want to make people read a chapter of it. Examples include insights into evolution, artificial intelligence, morality, and philosophy. There's a short section on how people tend to argue about the definitions of words and how unproductive this is, that I always find relevant. There's a lot of discussion on various human biases and how they affect our thinking. My favorite is hindsight bias, where people overestimate how obvious events were after they know the outcome. Or the planning fallacy, which explains why so many big projects fail or go over budget.

The author's writing style is somewhat polarizing. Some people love it and some people hate it, with fewer in between. He definitely has a lot of controversial ideas. Although in the 10 years since he started writing, a lot of his controversial opinions on AI have gone mainstream and become a lot more accepted than they were back then.

3
nindalf 2 days ago 2 replies      
Sapiens by Yuval Noah Harari. It gave me a good understanding of where we, as a species, came from. What did we do, why did we spread across the planet, how did we replace other hominids? What I really appreciated was his ability to explain some of the underpinnings of society like religion, nation states and currency with a relatively simple idea. Afterwards I felt like "damn that's so simple, I should have thought of that!" When you think that, you know you're on to something good.

On Writing by Stephen King. This a biography masquerading as a book on writing advice... Or its the other way around. Whichever it is, I think it's a great book for any aspiring writer to read. King explains the basics on how to get started, how to persevere and through his experiences, how not to handle success. Full of honesty and simple, effective advice.

Chasing the Scream by Johann Hari. Most people agree that the War on Drugs is lost and has been lost for decades now. But why did we fight it in the first place? Why do some continue to believe it's the correct approach? How has it distorted outcomes in society and how can we recognise and prevent such grotesque policies in the future? This book offers some of those answers.

Only if you're Indian - India After Gandhi by Ramachandra Guha. Sadly almost every Indian I've met isn't well informed about anything that happened in India after 1947, the year India became independent. History stops there because that's the final page of high school history textbooks. An uninformed electorate leads to uninformed policy, like "encouraging" the use of a single language throughout the country. If I were dictator, I'd require every Indian to read this book.

4
cocktailpeanuts 3 days ago 2 replies      
The Master Switch : This really puts a lot of things into context, especially if you're in tech industry. It's basically a history of the entire Information Technology, and it's fascinating how same things happen over and over again, pendulums swing back and forth over and over again, and people keep making same mistakes over and over again. Also you can see the larger picture of why some large tech companies make the decisions they make, and how to successfully compete if you are into that.

You will become a pessimist for a while after reading this, just because it feels like there's no meaning in all this since everything repeats itself and nothing is forever, but when you recover from it you'll find yourself much more insightful about the industry and can make better decisions.

5
kristiandupont 2 days ago 0 replies      
<meta>

I love all the answers in here but please, please answer with more than just a title! I want to know why I should care about a book -- sell it to me, don't just throw it out there and ask me to do the work.

</meta>

6
gmunu 2 days ago 1 reply      
The Happiness Hypothesis by Jonathan Haidt.

You hear 'ancient wisdom' on how to lead the good life all the time. These ancient aphorisms came from a time before the scientific method and the idea of testing your hypotheses. Tradition has acted a sort of pre-conscious filter on the advice we get, so we can expect it to hold some value. But now, we can do better.

Haidt is a psychologist who read a large collection of the ancient texts of Western and Eastern religion and philosophy, highlighting all the 'psychological' statements. He organized a list of 'happiness hypotheses' from the ancients and then looked at the modern scientific literature to see if they hold water.

What he finds is they were often partially right, but that we know more. By the end of the book, you have some concrete suggestions on how to lead a happier life and you'll know to the studies that will convince you they work.

Haidt writes with that pop science long windedness that these books always have. Within that structure, he's an entertaining writer so I didn't mind.

7
gkya 2 days ago 5 replies      
The bible, cover to cover: if reading western literature or philosophy produced in whatever year A.D., the bible is required reading for comprehending many the references and various rhetorical modes. I'm irreligious from a muslim background myself but I'm reading it now. Same goes for the qoran, my family is not a practicing muslim family and thus I never read it, but it's a part of the canon, must be read. I'm not sure if I would like to have read these earlier tho, as now I have the consciousness to not be fooled by the stuff in these books.

Karen Armstrong's A Short History of Myth is a very nice guide into mythology and what that and religion are. It's like a vaccine for any sort of fundamentalism or bigotry, if read with some accompanying knowledge of mythological traditions.

8
vizvamitra 2 days ago 2 replies      
"The Design of Everyday Things" by Donald Norman.

Technically this book is about how humans interact with things, but actually it covers a lot more topics that one can think: how humans act, err, how they make descisions, how memory works, what are the responsibilities of conscious/subconscious. Also you'll start to dislike doors, kitchen stoves and their disigners)

9
tudorw 2 days ago 1 reply      
Man's Search for Meaning (published under a different title in 1959: From Death-Camp to Existentialism) by Viktor Frankl who survived the concentration camps to go on to develop logotherapy and existential analysis (considered the third Viennese School of Psychotherapy). "lack of meaning is the paramount existential stress. To him, existential neurosis is synonymous with a crisis of meaninglessness", an interesting read, it does not focus on the horrors of the event, instead recognising the human capacity to overcome and rise above.
10
SirLJ 2 days ago 3 replies      
I wish as a kid I had access to the following:

"More Money Than God: Hedge Funds and the Making of a New Elite" https://www.amazon.com/More-Money-Than-God-Relations/dp/0143...

Market Wizards, Updated: Interviews With Top Traders https://www.amazon.com/Market-Wizards-Updated-Interviews-Tra...

The New Market Wizards: Conversations with America's Top Traders https://www.amazon.com/New-Market-Wizards-Conversations-Amer...

Hedge Fund Market Wizards: How Winning Traders Win https://www.amazon.com/Hedge-Fund-Market-Wizards-Winning/dp/...

11
abalashov 2 days ago 1 reply      
I wish I had read Real World Divorce, much of which can be found on realworlddivorce.com. It's notable for the fact that Philip Greenspun is a major contributor to it, which I found most surprising and intriguing.

I don't want to duplicate a lot of text, so I'll link to my Amazon review of it:

https://www.amazon.com/gp/customer-reviews/R2UKHDY7L4NPSV/re...

TL;DR it's the only bit of literature I've found that's got the real talk, and in data-and-comparison driven ways hackers will appreciate.

Yeah, obviously I'm going through a divorce, but I really think this book should be required reading for anyone before they get married in the US. I don't say that lightly or confer that kind of veneration unto books at the drop of a hat.

12
bor0 2 days ago 1 reply      
"How to Prove It" by D. Velleman. Introduces logical reasoning, set theory, functions, relations, and proofs. It is the base for understanding any mathematical subject.
13
beagle3 2 days ago 2 replies      
Philosophy/Psychology:

The origin of consciousness in the breakdown of the bicameral mind, / Julian Jaynes. Hard to tell if crazy or genius, but well worth a read. Read at 38, wish I had read this at 20 or so. Most of us take our inner voice for granted, but should we really? And what if there was evidence supporting the idea that there's another inner voice, but our modern upbringing suppresses it (but it does reappear with some illnesses, under duress, etc)?

Fiction:

Different Seasons / Stephen King. A collection of four stories, NOT your usuall King horror genre; one of which became the movie "Stand By Me". another became "The Shawshank Redemption", the third became "An Apt Pupil", and the fourth will likely never become a movie. All are excellent. I actually read it at 16, which was the right time, but I'll list it here anyway; if you've seen the movies and liked them, it's worth reading - the stories are (a) much more detailed than the movies, in a good way, and (b) related in small ways that make them into a bigger whole than the individual stories.

Management (software/hardware oriented):

Peopleware / Demarco & Lister - read after I was already managing dozens of people. Wish I had read it long before. This book is basically a list of observations (with some supporting evidence and conclusion) about what works and what doesn't when running a software team. Well written, and insightful.

The mythical man month / Fred Brooks - wish I had read this before first working in a team larger than 2 people. Written ages ago, just as true today; A tour-de-force of the idea that "man month" is a unit of cost, not a unit of productivity.

14
faragon 2 days ago 1 reply      
Eye-opening/shocking books:

"Science et Mthode" (Henri Poincar, 1908)

"The Conquest of Happiness" (Bertrand Russell, 1930)

"The Revolt of the Masses" (Jos Ortega y Gasset, 1930)

"Brave New World" (Aldous Huxley, 1932)

"Reason" (Isaac Asimov, 1941, short story)

"Animal Farm" (George Orwell, 1945)

"Nineteen Eighty-Four" (George Orwell, 1949)

"Starship Troopers" (Robert A. Heinlein, 1959)

"The Gods Themselves" (Isaac Asimov, 1972)

"Time Enough for Love" (Robert A. Heinlein, 1973)

15
chegra 2 days ago 2 replies      
Mini Habits - It gave me a new perspective of how to go about making changes in my life, that aren't so burdensome.

I have developed several habits:

a. Writing a Gratitude Journal

b. Going to Gym in the morning

c. Programming in the morning

d. Reading in the morning

I copied some of my highlights here:

http://www.chestergrant.com/26-highlights-from-mini-habits-b...

16
chadcmulligan 2 days ago 0 replies      
The Life-Changing Magic of Tidying Up: The Japanese Art of Decluttering and Organizing https://smile.amazon.com/gp/product/B00KK0PICK/ref=kinw_myk_...

It's about tidying up, but also about making your living space harmonious without clutter. It's not one of those get a box and put your pencils in it and then label it.

17
CamperBob2 2 days ago 0 replies      
Borges: Collected Fictions (https://www.amazon.com/Collected-Fictions-Jorge-Luis-Borges/...)

IMO you won't really understand the nature and limitations of fiction until you've read JLB. His work won't change your life, as such, but it will divide it into two parts: the part that took place before you read him, and the part that comes after. You'll always be conscious of that division.

18
mindcrime 2 days ago 0 replies      
The Four Steps To The Epiphany by Steve Blank. I've learned more about "what goes into building a startup" from reading this book than any other book I've read.

The Fountainhead by Ayn Rand. One of the most inspirational stories I've ever read. A strong reminder to remain true to yourself in the face of all sorts of challenges and adversity.

Mastering The Complex Sale by Jeff Thull. I don't claim to be a great, or even good, salesman. But if I ever become any good at selling, I expect I'll credit this book for a lot of that. I really like Thull's approach with is "always be leaving" mantra and focus on diagnosis as opposed to "get the sale at any cost".

The Challenger Sale by Brent Adamson and Matthew Dixon. Like Thull, these guys deviate from a lot of the standard sales wisdom of the past few decades and promote a different approach. And like Thull, a core element is realizing that your customer aren't necessarily fully equipped to diagnose their own problems and / or aren't necessarily aware of the range of possible solutions. These guys challenge you to, well, challenge, your customers pre-existing mindsets in the name of helping them create more value.

The Discipline of Market Leaders by Fred Wiersema and Michael Treacy. A good explanation of how there are other vectors for competition besides just price, or product attributes. Understanding the ideas in this book will (probably) lead you to understand why there may be room for your company even in what appears to be an already crowded market - you just have to choose a different market segment and compete on a different vector.

How to Measure Anything by Douglas Hubbard. It's pretty much what the title says. This is powerful stuff. Explains how to measure "things" that - at first blush - seem impossible (or really hard) to measure. Take something seemingly abstract like "morale". Hubbard shows how to use nth order effects, calibrated probability estimates, and monte carlo simulations, to construct rigorous models around the impact of tweaking such "immeasurable" metrics. The money quote "If it matters, it affects something. If it affects something, the something can be measured" (slightly paraphrased from memory).

I wish I'd read each of these much earlier. Each has influenced me, but I'd love to have been working of some of these ideas even longer.

19
lowpro 2 days ago 1 reply      
Mans Search for Meaning by Victor Frankl, especially good if you're feeling down or disallusioned.
20
huac 2 days ago 3 replies      
A non-tech, non-business recommendation: "The Unbearable Lightness of Being" by Milan Kundera. A beautiful story, told with equal parts philosophy, psychology, and humor, and honestly heartbreakingly beautiful.
21
williamstein 2 days ago 0 replies      
"Crossing the Chasm: Marketing and Selling High-Tech Products to Mainstream Customers" by Geoffrey A. Moore and also his recent "Zone to win". His books explain some of the "deeper structure" to tech business, and is one of the few business-related books I've read that has any depth. By "depth", I mean in the sense that I'm used to from research mathematics (I'm a number theorist by training), where you learn something about a problem that lets you think about problems in a more detailed way.
22
nscalf 2 days ago 1 reply      
The Art of Learning by Joshua Waitzkin. I was definitely in the right place to take in the topic, but it was, more or less, a book on how you can be "good" without much effort, but to be great or the best, it takes a lot of hard work and time. This book helped me learn that lesson.

On top of that, some of Tim Ferriss' stuff on accelerated learning. Learn how to learn first, then learn everything else.

23
zem 2 days ago 2 replies      
i discovered 'the phantom tollbooth' in grad school (for some reason, it was pretty much unknown in india when i was growing up). i'm pretty sure kid me would have loved it even more than adult me did.
24
WillPostForFood 2 days ago 0 replies      
Getting Real - got me out of the corporate grindSICP - got me out of the OO grind

Each one had a significant positive impact on my life. And both a free online!

https://gettingreal.37signals.com/

http://sarabander.github.io/sicp/

25
paraschopra 2 days ago 0 replies      
_The Beginning of Infinity_ changed my worldview from thinking progress is slowing down or problems in the world are overpowering to a more hopeful one where problems always be there for humans to solve, and that through human activity we can keep making progress. It also gave hope that one day in future, we might be able to clearly see that good, bad, evil, love, beauty might be fundamental aspects of universe, just like gravity, atoms, and radioactivity is. It also walks through philosophy of science (v/s pseduo-science). All in all, I wish I had read it earlier.

_Feeling Good_ because of the tools it contains to battle self-defeating feelings that lead bouts of sadness or depression. I wish everyone would read that book so that they can build mental immunity against circular, depressing thoughts.

26
satwikhebbar 2 days ago 0 replies      
"The Self-aware Universe" by Amit Goswami. Opened my eyes to a new way of looking at the world around us, and finding new ways to react to events that affect us. Wish I'd read this when I was much younger - before I had decided with a high level of confidence that I am completely in control of everything I do, all that happens to me and how I react to events. Seeing yourself as a minuscule part of a whole you perhaps will never fathom, allows you to simply focus on doing your best when you can and not get overly possessed with results. One of the many mystic-physics books that were very much in fashion for a while, but the one that stuck to my consciousness the most.
27
tjalfi 2 days ago 2 replies      
Autobiography/Memoirs:

 Surely You're Joking, Mr. Feynman! - Richard Feynman What Do You Care What Other People Think? - Richard Feynman Crime and Guilt: Stories - Ferdinand von Schirach
Fiction:

 The Master and Margarita - Mikhail Bulgakov
Technical:

 Bulldog: A Compiler for VLIW Architectures - John Ellis

28
kabdib 2 days ago 0 replies      
_The Art of Electronics_. As a software guy who sometimes is involved in embedded systems, having a good understanding of what's going on at the resistor/capacitor/transistor level would have helped a lot. I did a bunch of hobby electronics as a teenager, but never had circuit theory. I knew a lot about digital design, but not the analog stuff that the whole world ultimately rests on.

So now, when I hear a switching power supply whine in protest, I will think of it as the squeals of pain of the engineers whose life I turned into a living hell because of my lack of appreciation for P = IV. Im truly sorry. I wasnt thinking. (And this is just the first chapter of that book).

29
queeerkopf 2 days ago 0 replies      
To Have or To Be? by Erich Fromm.

I did read it fairly early and it had an quite an impact on my life and thinking. It put into words a lot of my discomfort with a life focused on materialistic success. And it was inspiring seeing an intelectual combining so many of the thoughts and topics he developed during his lifetime into one coherent and approachable book.

30
Joeri 2 days ago 1 reply      
The left hand of darkness, by Ursula Le Guin.

I found it by working my way through the list of joint nebula and hugo award winners (which is a really fun project, because all of them are amazing books). It is my favorite sci-fi book. It changes the way you look at gender, especially if you haven't questioned the concept much before.

31
JSeymourATL 1 day ago 0 replies      
How to Fail at Almost Everything and Still Win Big by Scott Adams.

Turns out the creator of Dilbert was at one time a mid-senior level manager in Corporate America, who attempted several failed entrepreneurial ventures over the years. He's also a brilliant writer. Totally hooked by Chapter 3: Passion is Bullshit > http://www.goodreads.com/book/show/17859574-how-to-fail-at-a...

32
dinosaurs 2 days ago 0 replies      
On the Road by Jack Kerouac.

I read it at 18 and I wish I had read it way earlier. It taught me to be mad, to live life, to get out and see the world. But looking back at it, it also taught me how to be responsible and how to not to be a jerk.

It, above all, showed me what beautiful writing is.

33
tmaly 2 days ago 1 reply      
4 Hour Work Week, it gave me some perspective on the 9-5 job I wish I had given more thought to earlier in my life when I had more time.

80/20 principle, while mentioned in the 4 hour work week, it really has a lot more to offer in the book. How you should go about leveraging your time. There was a real gem in there about how books are really the best way to acquire knowledge and a great way to approach reading in the university.

There was a speed readying and studying book I came across from a friend that owns a book store that really helped me. I wish I had that book before I entered high school. I can never recall the name, but I will try to find it.

34
henrik_w 2 days ago 0 replies      
How To Win Friends And Influence People by Dale Carnegie - a timeless classic for people skills, useful in almost all circumstances.
35
alexilliamson 2 days ago 2 replies      
"The Silk Roads: A New History of the World" By Peter Frankopan. This book tackles essentially all of human history, tying together the world's major cultural shifts with the socioeconomic forces that brought them to pass. For readers who have implicitly come to believe that the center of the world has always been Western Europe (I had), this book will greatly shift your perspective (Eastward). I've never learned so much from a book, and damn is it entertainingly written.

"Getting Things Done" by David Allen. I'm sure everyone here is familiar with bits and pieces of GTD methodology, but I encourage you to check out the full text. There are a lot of great ideas in there there that I didn't find reading online about GTD. I have been a serious GTD user for more than a year now, and I feel amazingly more in control of my life. Everything I've done in that time - from planning my wedding, to projects at work, to completely organizing my house - has gone smoother than I can remember projects going ever before.

36
adekok 2 days ago 0 replies      
The Gift of Fear (Gavin Debecker) - how to deal with bad people

The War against Women (Marilyn French) - the underlying premise is wrong, but reading it is a good way to learn how to deal with semi-rational, but insane theses. And yes, I can defend this position with quotes / paraphrases from the book, with rational explanations as to why it's insane

How the Police generate false confessions (James Trainum) - former cop explains why harsh interrogation techniques are counter-productive, and how to defend yourself

Get the Truth (Philip Houston et all) - how to tell when people are lying, via simple techniques you can remember

37
Schwolop 1 day ago 0 replies      
How to Become CEO: The Rules for Rising to the Top of Any Organization by Jeffrey J Fox

I found this book in a library's junk pile, evidently unread. It has one of those bad 80s covers that suggest it'll be terrible, but to my great surprise, it's great! It's 80 or so one page missives/dictums/edicts that'll take barely half an hour to read through - I re-read it every time I have a job interview coming up or a some kind of major life choice. The author's tone is abrasively direct; this is how it is, not how it should be. And the advice isn't just for wannabe CEOs, it's accessible and attainable for everyone.

38
rwieruch 2 days ago 1 reply      
39
nihonde 2 days ago 0 replies      
Eric Hoffer, The True Believer. You will see applications for the principles in this book in all aspects of society and politics. Easy to read and unassailable insight into what makes people join a common cause.
40
widowlark 2 days ago 1 reply      
Metamagical Themas by Douglas Hofstadter. This book has taught me more about thinking differently than any other.
41
lorenzorhoades 1 day ago 0 replies      
I always found this question pretty impossible to answer. There are so many books that i find myself wanting to recommend, and the list soon becomes unmanageable. So, instead i'm going to provide a different resource - Patrick collisons whole library. He color coats the books he thinks are great, and lists hundreds of books. https://patrickcollison.com/bookshelf
43
ebcode 1 day ago 0 replies      
"Out of the Crisis" by W. Edwards Deming. The author was one of a handful of people who helped the Japanese apply methods of statistical control to their manufacturing processes, which in turn helped them to become an economic superpower after their country's occupation by the Allies. In the book the author takes a deep look at the problems of management in the United States, and provides a list of reforms that would lead businesses "out of the crisis". I only recently learned of W. Edwards Deming, and I wish that I had known about him much earlier.
44
ssohi 2 days ago 1 reply      
Fooled By Randomness & The Black Swan by Taleb
45
tedmiston 2 days ago 1 reply      
A popular recommendation here, but Getting Things Done by David Allen.
46
davidgh 2 days ago 0 replies      
How We Got to Now, Steven Johnson. Walks you through a half dozen foundational inventions and the process through which they came to be. Fascinating to see what the inventors were trying to solve vs. how the world ended up applying their technology.

Unbroken, Laura Hillenbrand. If you haven't read the book don't judge it by the (awful) movie.

The Liberators: My Life in the Soviet Army. Really opens your eyes to the problems and realities of communism. I love the author's dry sense of humor as he witnesses the absurdity of many of the things he encountered.

Sniper on the Eastern Front, Albrecht Wacker. A view of WWII through the eyes of a German sniper.

Auschwitz: A Doctor's Eyewitness Account, Miklos Nyiszli. A view of the holocaust through the eyes of a Jewish doctor in the Auschwitz concentration camp.

47
edpichler 2 days ago 0 replies      
On the shortness of life, by Seneca.
48
galfarragem 2 days ago 1 reply      
The book that I should have read (and re-read) earlier:

No more Mr. Nice Guy -- Robert Glover

49
ozovehe 2 days ago 0 replies      
Animal farm by George Orwell: a revelation of the beginning and end of revolution and 'change'.Jewish wisdom for business success.Call of the wild by Jack London: it shows how possible it is to adapt in order to benefit maximally from change -- using a dog's (Buck) life.
50
habosa 1 day ago 0 replies      
Don Quixote. Specifically the translation by Edith Grossman.

In high school I was assigned this book but I didn't read it all, it seemed like a waste of time to read 1000+ pages about a silly knight.

A few years ago I got into reading a lot of fiction translated from Spanish and Don Quixote got back on my radar so I decided to give it another try. I was blown away. It's astounding that a book from 500 years ago is still so funny and engaging today. Grossman's translation makes the book accessible and very enjoyable. If you didn't know the history you'd believe it had been published in the last few decades.

I recommend this because it's the best example of how literature can be time travel. When I smile at one of the adventures in the book I know that I'm sharing an experience with readers across centuries. There's almost no other way to get that feeling.

51
miqkt 2 days ago 0 replies      
Rollo Tomassi The Rational Male

If my younger self had read this, I think my course of life would be very much different than it is right now. Just a caution that it might come off as misogynistic ramblings for some readers.

52
gingerjoos 1 day ago 0 replies      
The Human Zoo - Desmond Morris ( https://www.goodreads.com/book/show/333063.The_Human_Zoo )

Morris uses his background as a zoologist to examine human beings as a regular animal; many books have come out of this approach. In this one he draws parallels between the city-dwelling human and the caged animal. This sort of perspective gives you self-awareness about your own tribalism and how we as a species deal with the opposing forces of individuality and longing to belong to a group. Also some ideas on the urban-rural divide that has consequences that leave people on either side puzzled (Brexit, Trump etc.)

53
perfmode 3 days ago 1 reply      
A People's History of the United States
54
Razengan 2 days ago 0 replies      
Below The Root [0], by Zilpha Keatley Snyder.

A highly imaginative, original, and underrated, world setting.

Also had the distinction of having a sequel in the form of a video game, with the game's story written by the book author herself. [1]

The game (for the PC, Apple II and Commodore 64) was way ahead of its time in 1984: [2] and I only just heard of it and the books last month! It definitely needs more recognition.

[0] https://en.m.wikipedia.org/wiki/Green_Sky_Trilogy

[1] http://blog.stahlmandesign.com/below-the-root-a-story-a-comp...

[2] https://www.youtube.com/watch?v=xdUBefQ1cT4

55
pombrand 1 day ago 0 replies      
"Peak: Secrets from the New Science of Expertise" because I've been learning ineffectively my whole life not knowing that I was. Should be required reading for every 15 year old. The best, most science based book I've ever read about learning effectively.
56
jxub 3 days ago 0 replies      
Think and Grow Rich. Amazing, though maybe simplistic, insights.
57
arjmandi 1 day ago 0 replies      
the hard thing about hard things(Ben Horowitz): This book is mostly recommended for managers but I found it very useful to adjust my estimations about life. Also, you will learn about silicon valley history and it's dynamics.

The fifth discipline (Peter Senge): This book is one of the systems thinking references and it helped me to learn more about hidden dynamics in the world around me. I truly wish I've read this when I was junior in college.

58
xparadigm 2 days ago 0 replies      
A Short History of Nearly Everything -- Bill Bryson
59
real-hacker 2 days ago 1 reply      
Books that are mentioned multiple times in this thread:The master switch; Sapiens/Homo Deus; How to Win Friends and Influence People; The animal farm; The lean startup; The Bible.

Ctrl+F these names in this page for rationale.

Is there an "awesome books" repo on Github? I wonder.

60
xaedes 2 days ago 0 replies      
"The Hero with a Thousand Faces" from Joseph Campbell.

It opened my mind to understand metaphors and analogies in literature. It allowed me to peek under the surface of text. Seriously, every written piece I read after that was different for me than before.

It also gave me more insight in the human mind and psyche.

Being able to read and understand more literature also gave me more perspectives and deeper understanding of the world and place of mankind in it.

Some other nice reads:

"The Way of Zen" - Alan Watts

"The Book" (On the Taboo Against Knowing Who You Are) - Alan Watts

"Demian" - Hermann Hesse; but I wouldn't want to read it earlier. I think I read at the exact best time for me (in my late 20s).

61
joeclark77 3 hours ago 0 replies      
"Shop Class as Soulcraft", by Matthew Crawford

It discusses the intrinsic characteristics of work that lead to satisfaction, growth, mastery, and ultimately happiness. The author is a PhD, worked at a think tank, and quit the white-collar life to go work on motorcycles. He discusses how white-collar work has been hollowed out, transforming "professionals" into "clerks", why so many of us "knowledge workers" feel unsatisfied with our work. The book has helped me figure out how to change my work to be more intrinsically rewarding, and as an IT developer whose technology affects other people's work, it also helps me think more about how to make the end user's life better.

Another great book along these lines is Joanne Ciulla's (2000) "The Working Life", which is a bit more academic and has less motorcycles but is nevertheless very readable.

62
d0mine 1 day ago 0 replies      
"A Mind For Numbers: How to Excel at Math and Science" by Oakley http://barbaraoakley.com/books/a-mind-for-numbers/

Despite the title it is useful for learning how to learn in general (not just math). Simple techniques supported by the research. I wish I didn't had to reinvent them in high school, college.

63
deepnet 2 days ago 0 replies      
"From Bacteria to Bach the evolution of minds" by Daniel Dennet.

Should be called How Minds Evolve as Heirarchies of Darwinian Turing Machines ( analagously to Deep Neural Nets (Dennet cites Geoff Hinton and Edinburgh's Andy Clarke).

"working computer models have been developed that can do a good job identifying handwrittenscribbled, reallydigits, involving a cascade of layers in which the higher layers make Bayesian predictions about what the next layer down in the system will see next; when the predictions prove false, they then generate error signals in response that lead to Bayesian revisions, which are then fed back down toward the input again and again, until the system settles on an identification (Hinton 2007). Practice makes perfect, and over time these systems get better and better at the job, the same way we doonly better" p.178 [1]

"Hierarchical, Bayesian predictive coding is a method for generating affordances galore: we expect solid objects to have backs that will come into view as we walk around them; we expect doors to open, stairs to afford climbing, and cups to hold liquid. These and all manner of other anticipations fall out of a network that doesnt sit passively waiting to be informed but constantly makes probabilistic guesses about what it is about to receive in the way of input from the level below it, based on what it has just received, and then treating feedback about the errors in its guesses as the chief source of new information, as a way to adjust its prior expectations for the next round of guessing."

Which echoes Richard Gregory's concept of vision (or perception) as a hypothesis continually tested against input.

This is Paradigm shifting; weltanschauung shattering stuff. Dennet very clearly lays out a methodology for how all aspects of minds can evolve using heirarchical compositions of wetware robots or :

"Si, abbiamo un anima. Ma fatta di tanti piccoli robot!(Yes, we have a soul, but its made of lots of tiny robots!)" p.24 [1]

[1] https://www.penguin.co.uk/books/253900/from-bacteria-to-bach...

64
balladeer 2 days ago 0 replies      
Anna Karenina, A Suitable Boy, and the like. Excellent books but after college it's been difficult to start and keep at them in a acceptable period of time given the time (or lack of it) is an issue now. I also wanted to read Ulysses. I am stuck around the ~20% of Dostoyevsky's Idiot since a long time. Off late I've had better success with shortner ones.

For me the reason is simple - it's just the daunting number of pages and it is a shame that I have not read/finished these books.

65
CodyReichert 2 days ago 0 replies      
1) Superintelligence. This is a really great read about the implications of AI, or general intelligence. It's really intriguing and brings up so many scenarios I've never thought about. Anyone interested in AI should definitely read this.

Similarly, On Intelligence is an absolutely brilliant book on what 'intelligence' is, how it works, and how to define it.

2) Hooked. Although it's very formulaic, Hooked provides a lot of good ideas and approaches on building a product.

3) REWORK. If you're a fan of 37 Signals and/or DHH, this is a succinct and enjoyable read about their principles on building and running a business.

Currently I'm reading SmartCuts and The Everything Store - both of which are great so far.

66
feignix 2 days ago 0 replies      
Fiction:

1. Flowers for Algernon - Daniel Keyesbecause it's so beautifully written and made me experience a flood of emotions.

2. The Little Prince - Antoine de Saint-ExupryAgain, a very touching, charming book about a little kid's world(universe?) view, told through his adventures.

Non-fiction:

1. The subtle art of not giving a F*ck - Mark MansonOpened my eyes to what I was possibly doing wrong with my life.

2. Radical Acceptance - Tara BrachStill currently reading it, but I wish I'd found it earlier.

67
Lordarminius 2 days ago 0 replies      
A History of Western Philosophy by Bertrand Russell
68
rachkovsky 2 days ago 0 replies      
No Excuses!: The Power of Self-Discipline by Brian Tracy. It's so good. I keep rereading it. Does wonders to my motivation and productivity.
69
vecter 2 days ago 0 replies      
How To Be A 3% Man by Corey Wayne [0]

I'm 30 now. I wish I had read this when I was 20. It would've made dating in my 20s so much easier. I came across it last year and it's probably the single most important book I'll ever read in my entire life, for the sole reason that understanding women will allow me to have a successful marriage one day. I cannot recommend this enough.

[0] Free online: https://www.scribd.com/doc/33421576/How-To-Be-A-3-Man

70
Amogha_IO 2 days ago 3 replies      
There are some books I keep coming back to when I am "feeling lost and/or hopeless", when my "back is up against the wall and/or feel cornered", when I feel like I have "hit rock bottom" or I just need to "escape reality"... This list contains books I have read/listened to more than a couple times:

!For inspiration:! 1. Loosing my virginity (Richard Branson)- Richard Branson's Autobiography. From student magazine to Virgin to crazy ballooning adventures and space! I keep coming back to this when I feel like I need a morale boost. There isn't an audible version for this book, but there is a summary-type version on Audible "Screw it, Let's do it"- does a good job curating the exciting parts.

 2. The Everything Store (Brad Stone) 
-AMAZON and the man leading the massive team behind it. Jeff Bezos is quite easily one of the most important and influential people in the world. His relentless pursuit to build Amazon (& it's various products) amid constant setbacks, losses and naysayers... I personally use Amazon and their products every day. It's a really interesting view of how things are run backstage.

 3. Steve Jobs (Walter Isaacson) 
- One of the most popular books in the Valley. Almost all startup founders I have met has read this. They usually have a very polarized view of Jobs after reading this. Take the good stuff and leave out the bad/crazy. Jobs was a very polarizing person and so is his biography...This is a very long book. "The second Coming of Steve Jobs" by Alan Deutschman is another really good book and a much shorter read and not super-polarizing (leaves out some of the crazy stuff from early life). Other notable Steve Jobs books I have read & highly recommend: Becoming Steve Jobs & The Steve Jobs Way.

 4. Elon Musk (Ashlee Vance) 
-Another polarizing book. I am a Spacex & Tesla Fan-boy. I picked this up in 2015 the day it was launched! I have read this at least half a dozen times by now. Hard-work, perseverance and creativity to the max. A must read for every entrepreneur.

 5. iWoz (Steve Wozniak) 
-If you are a technical-founder, this is a must read! Gives a very interesting view of- behind the scenes at Apple during its inception and early years. I was really moved by how humble Woz was/is and I am inspired by his problem solving approach.

 6. How Google Works (Eric Schmidt, Alan Eagle & Jonathan Rosenberg) 
- A very good book to read after/before this: "In the Plex" by Steven Levy. Hands down the two most important / influential books while you are starting something new. I read these while I was contemplating conceiving my startup and giving up the "safety" (illusion of safety) of a "normal-job". A must read for anyone planing to start a company and want to take it to the stratosphere (or higher)!

 7. Dreams from My Father (Barack Obama) 
- Another polarizing personality. A short but powerful memoir by Obama. This gives a unique insight into Obama's thought processes. Most people can relate to this and every "Leader" must read this. It really helps clear some of the fog on- what makes an effective leader.

!Business & Management:!

 1. The Upstarts (Brad Stone) 
-An amazing story about AirBnB and Uber. Culture is key and culture is defined by the Founders and the first few hires. The two companies are extremely similar in many ways (timing, shared economy, disruptive) but radically different in the way they are run. This came out earlier this year and is probably one of the best "startup-books" of 2017!

 2. Zero to One (Peter Thiel)
-A very short book, a must read for every entrepreneur. Dives into "first principal" thinking & execution. A very good read after/before "Elon Musk" the biography by Ashlee Vance.

 3. The power of Habit (Charles Duhigg)
-I have always wondered how successful people get so much done. They have the same amount of time as everyone else, but they are able to get so much more done...how? This book answered that question. Ever since, I have been using "Habits" as my ultimate personal tool. Day & night difference when you figure out how habits are formed how they are broken and how you can influence the process. A good companion book (from the same author) "Smarter Faster Better".

 4. How to win friends & Influence people (Dale Carnegi)
- I bought this book freshman year in college. I tried reading it then and gave up / got bored after the first few pages. I really wish I had actually made an effort to read the whole thing. It sat on my shelf collecting dust. Luckily I picked up the book again and gave it another shot. I read this during a particularly "rough-patch" at our startup- really helped me cope with the "situation". What was once a boring book is now scribbled with notes, bookmarks and highlights. A very useful life-guide.

 5. How to win at the Sport of Business (Mark Cuban)
- A very entertaining yet eye-opening book. It is very short, finished it in a couple hours. A must read for every entrepreneur. I keep coming back to this when I feel like things are going dreadfully slow and I need a boost. If you follow Mark Cuban's blog, skip this. It is mostly a summary of his blog posts.

 6. Finding the next Steve Jobs (Nolan Bushnell)
- Finding good talent and retaining it is probably the single most important thing you will do as startup founders (especially if you are the CEO). Many things in this book seem obvious (if you are familiar with the Silicon-valley culture). A good read before you set out to hire your dream team of "rockstars". A good companion book: "Outliers" By Malcom Gladwell.

 7. The hard thing about hard things (Ben Horowitz)
-Are you in a startup? If the answer is YES, then read this NOW. Ties well with "Finding the next Steve Jobs". I wish I had read this before I started my company. I have lost track of how many times I have listened to this audio-book.

 8. Start with the Why (Simon Sinek) 
- Mid-late 2013 I came across Simon Sinek's ted talks on the golden-circle and my mind was blown. I bought the book the very next day and I keep coming back to my notes whenever we are starting a new project. Get the "Why?" right and the product will define itself. This is true for building companies as it is for building great products. A must read for every entrepreneur.

 9. Art of the Start (Guy Kawasaki)
-Getting ready to pitch? read this! Also watch Guy's many presentations/talks on YouTube. A good companion book- "Pitch Anything" By Oren Klaff

!Escaping Reality! 1. Hatching Twitter (Nick Bilton)-Sooooo much drama! Definitely learnt what not to do! Very interesting read.

 2. The accidental Billionaires (Ben Mezrcih) 
-I have heard that not everything in this book is "completely-true" (more distorted than others...) but still a great read!

 3. The Martian (Andy Weir)
- Hands down the best science fiction book I have read. I have lost count how many times I have listened to the audio-book (probably >15). I want to go to MARS!

 4. Harry Potter Series. 
-My go-to "background noise". I read the books as a kid. I use the audio-books to tune out the world when working on stuff that does not require my full attention (Listening Goblet of Fire as I type this)...

 5. Jurassic Park || The Lost world (Michael Crichton)
- Read the books as a kid. I usually listen to it while I am traveling. Still gets me as excited as it did when I first read the book. (The movies are nothing compared to the book...)

 6. Ender's Game (Orson Scott Card) 
- I am looking forward to reading the entire series. Read it once, listened to it many times (lost count). I love Space!

 7. Ready Player One (Ernest Cline)
-I picked this book up while I was working on a VR project back in 2014. An excellent book for re-reads and a nice place to get some inspiration.

!Other honorable mentions:! Actionable Gamification (Yu-Kai Chou) I invented the Modern Age (Richard Snow) Inside the tornado (Geoffrey Moore) Jony Ive (Leander Kahney) Sprint (Jake Knapp) The lean startup (Eric Ries) The selfish Gene (Richard Dawkins) Titan (Ron Chernow) The inevitable (Kevin Kelly) The Innovators (Walter Isaacson) Scrum (Jeff Sutherland)

!Most if not all have an audio-book version!

If you are in a startup or plan to start one soon, reading/listening to books should become a routine. I try to get through at least one book a week, sometimes two.

Good luck!

71
novalis78 2 days ago 0 replies      
"How to get what you want", by Raymond Hull. Everything else follows, like a bootstrapping process. Wish I had found it 10 years earlier. Changed my life forever. I could recommend dozens other books, my walls are lined with shelves of books, but you and me are different and all you'd need is this one book to find everything else you'd need to read or do.
72
Anand_S 1 day ago 0 replies      
1. The One Thing. ~ Gary Keller2. Mini Habits. ~ Stephen Guise3. Learned Optimism. ~ Martin Seligman4. Spark. ~ John Ratey5. Miracle of Mindfulness. ~ Thich nhat hanh
73
ankitank 2 days ago 1 reply      
A wild sheep chase by Haruki Murakami
74
ThomPete 1 day ago 0 replies      
"The Origin of Consciousness in the Breakdown of the Bicameral Mind" by Julian Jaynes

It was the first time I read someone who was thinking about the mind like I am and was able to put into words some of my own more vague thoughts.

It's definitely going to leave you thinking.

75
peternicky 2 days ago 0 replies      
In no particular order:

- So Good They Can't Ignore You- Deep Work- Hackers by Steven Levy (perhaps my favorite book)- Learning How To Learn- The Person and the Situation- The Art of Money Getting- Make It Stick- The Algorithm Design Manual- Moonwalking With Einstein- Extreme Ownership

76
wowsig 2 days ago 0 replies      
Discovered a lot of fresh books and reasons for reading them.

I've collated the ones with interesting reasons for reading them here --> http://shelfjoy.com/sia_steel/books-hn-wished-they-had-read-...

77
shivrajrath 2 days ago 0 replies      
The Last Hours of Ancient Sunlight: The Fate of the World and What We Can Do Before It's Too Late

This book is a detailed research on what's wrong with the world and what can be still done. The chapter II brings inputs from various culture on approaches that could improve from ground up. Must read book for us and future generations.

Can someone suggest something similar to this book?

78
mattbettinson 1 day ago 0 replies      
The power of now changed my life. Hard to describe without sounding hokey
79
BJanecke 1 day ago 0 replies      
Software

The Mythical Man Month && Design Of Design by Fred Brooks

Everything else

Hitchhikers Guide (Existentialism does not have to be edgy)The Foundation Series (Bureaucracy and Institutionalization will never undermine Ingenuity)Dune Series (Plans within plans)

80
pedrodelfino 2 days ago 0 replies      
Hackers and Painters from Paul Graham. I wish I had read that when I was 14 years old.
81
pmoriarty 2 days ago 1 reply      
I wish I'd read some good books on fitness and nutrition when I was younger. It could have saved me a whole host of health issues.
82
mbrodersen 1 day ago 0 replies      
"How Not To Die" by Dr Michael Greger, Gene Stone. It really changed my mind about how to achieve long term mental and physical health.
83
imsodrunklol 1 day ago 0 replies      
A little late to the game but this book changed my perception of reality.

Saving the Appearances: A study in Idoltary by Owen Barfields

You won't regret it.

84
palerdot 1 day ago 0 replies      
The slight edge

This is a very interesting book that emphasises how small persistent things matter in life. Changed my worldview for good.

85
Entangled 2 days ago 0 replies      
"Anatomy of the State" by Murray Rothbard.

We live in a world of thieves masqueraded as leaders.

86
CamTin 2 days ago 0 replies      
/Cannery Row/ by Steinbeck. It's a short read, but it packs in a lot of insight about the human condition. I re-read it every year or so, and still learn new things.
87
razzaj 2 days ago 0 replies      
The upside of irrationality. Ariely

Germs guns and steel. Jared Diamond

Influence, the psychology of persuasion. Cialdini

Justice: what's the right thing to do. Sandel

QED. Fyenman

All of Feynman lectures on physics

The hard thing about hard things. Horowitz

Al muqqadimah. Ibn khaldun

88
wdr1 2 days ago 0 replies      
A Random Walk Down Wall Street. Helped me understand investing.
89
egonschiele 2 days ago 0 replies      
Evicted. Showed me how racism is still alive today, how bad it actually is to live in poverty even in a wealthy country in the USA. Tore down a lot of assumptions I had made.
90
du_bing 2 days ago 0 replies      
The Art of Computer Programming series, by Donald Knuth.They are so well written and full of humor, I can not think of any technical book(or any kind?) written as good as these.
91
makeset 2 days ago 1 reply      
Code Complete by Steve McConnell https://www.amazon.com/dp/0735619670
92
febin 2 days ago 2 replies      
The Holy Bible

Start With Why

The Subtle Art of Not Giving a F*ck

Think Like a Freak

SmartCuts

93
zabana 2 days ago 0 replies      
Pretty much everything ever written by William Gibson should do.
94
gtirloni 2 days ago 0 replies      
The Denial of Death (Ernest Becker)
95
cmmn_nighthawk 3 days ago 0 replies      
Metaprogramming Ruby by Paolo Perrotta
96
jinxedID 2 days ago 0 replies      
The Effective Executive.My company did not prepare me very well for being a team lead.
97
ctdavies 2 days ago 0 replies      
Das Kapital. You know why.
98
johnsmith21006 1 day ago 0 replies      
The Goal and then the Phoenix project.
99
akulbe 2 days ago 1 reply      
The Personal MBA.

Deep Work.

How to Win Friends and Influence People.

Think and Grow Rich.

The E-Myth Revisited.

The Science of Selling.

(stuff about stoicism)

100
BevanR 2 days ago 1 reply      
The lean startup. How to win friends and influence people.
101
booleandilemma 2 days ago 0 replies      
"Atlas Shrugged" by Ayn Rand.
102
bonhasgone 2 days ago 0 replies      
The compound effect - Darren Hardy.
103
zedshaw 2 days ago 1 reply      
How to See Color and Paint It -- It taught me how to see color and paint it. Also how to use a palette knife which makes my paintings very different and fun.

Remembrance of Things Past -- I'm still reading this, as it's a massive stream of consciousness book, but I wish I'd started it when I was younger so that I'd be done with it by now. It's just so weird to read it and experience the writing that I enjoy it for simply being different. As you read it just remember that every ; is really a . and every . is really \n\n.

Van Gogh: The Life -- I absolutely hate the authors. They're great at research, but I feel they had a vendetta against Van Gogh of some kind. Throughout the book, at times when Van Gogh should be praised for an invention, they make him seem like a clueless dork. Ironically, their attempt to portray him as a dork who deserves his treatment ends up demonstrating more concretely how terrible his life was because he was different. I think if this book were around when I was younger I might have become an artist instead of a programmer.

A Confederacy of Dunces -- Absolutely brilliant book, and probably one of the greatest examples of comedic writing there is. It's also nearly impossible to explain to people except to say it's the greatest example of "and then hilarity ensues".

Mickey Baker's Complete Course in Jazz Guitar -- After a terrible guitar teacher damaged my left thumb I thought I'd never play guitar again. I found this book and was able to use it to learn to retrain how my left hand works and finally get back to playing. Mickey Baker's album also brought me to the Bass VI, which got me thinking I could build one, and then I did and now I've built 6 guitars. I play really weird because of this book and I love it. This book also inspired how I wrote my own books teaching programming and without it I'd still be a cube drone writing Python code for assholes. If I'd found this book when I was younger it most likely would have changed my life then too.

Reflections on A Pond -- It's just a book of this guy painting the same scene 365 times, one for each "day of the year" even though it took him many years to do it. All tiny little 6x8 impressions of the same scene. I learned so much about how little paint you need to do so much, and it's also impressive he was able to do it. I can't really think about anything I've done repetitively for every day of a year. I've attempted the same idea with self-portraits but the best I could do was about 3 month's worth before I went insane and started hating my own face.

Alla Prima: Everything I Know About Painting -- Instructionally this book isn't as good as How To See Color, but as a reference guide it is about the most thorough book on painting there is. It's so huge it's almost impossible to absorb all of it in one reading, so I've read it maybe 5 times over the years.

104
1S9C8G4 2 days ago 0 replies      
metaphors we live by
105
K0SM0S 1 day ago 0 replies      
Meditations by Marcus Aurelius.

Stoicism is by far the best philosophy I've ever encountered. Some people call it "the best operating system for the mind", and I very much agree with that statement.

It changed my life more than any other corpus of ideas. I can't overstate how much better I feel now that my brain is running on a 'Stoic OS', especially on an emotional level --which was the hardest to deal with as I'm rather hyper-sensitive; now my emotions have truly become an almost entirely positive force in my experience of life, regardless of their nature, good or bad, of said emotions; in fact I no longer even qualify emotions on this scale; and the same goes true for an overwhelming majority of my thinking.

This book is the personal journal of one of the greatest roman emperors, leader of the (western) world at the time. A rare enough occurrence in the history of leaders, he was deemed 'worthy of his position' on a human and philosophical level by most people who knew him.

A couple remarks: "philosophy" as seen by ancient authors and thinkers is not a strictly intellectual or abstract endeavor, not a scholarly matter, at least not at its core. Philosophy is the closest equivalent they had to what we'd call "self-development" today. It's very down to earth, 'life recipes' of sorts, simply to educate and help people deal with this elusive brain of ours. Seneca's and Epictetus writings are also excellent food for thought, food for one's mind. Imho, philosophy, litterally the "love of wisdom", is something we should deeply reappropriate, both as individuals and whole societies.

Relatingly, Stoicism used to be taught from childhood throughout most of human history in the western world (and it could be argued that Asia has its own equivalent philosophies). For some reason, we ceased teaching philosophy to children around the turn of of the 20th century, which leaves most people with a lack of means to deal with their emotional circumstances. I'm one of those who consider this to be a dire pity, especially in our day and age. I think it sorely shows in public discourse and interpersonal relationships, and the end result is too much suffering that is entirely preventable.

Meditations is easy enough to read, but if you want something more modern, I found The Obstacle is the Way by Ryan Holiday to be a very good introduction to Stoicism.

____

As A Man Thinketh by James Allen. It's as short as it is good for the mind, the building/making of one's persona. Well worth a read at least once in your life, there are many 20th and 21st century self-development books (e.g. How to Win Friends and Influence People) that I believe drew some of their teachings from this 1903 classic.

____

The Power of Now by Eckhart Tolle. Regardless of where you find the information contained in this book (there are many works on the topic, both modern and throughout history), this book helps understanding that living in the present moment is critically important, and a key to happiness. Notwithstanding the 'wu-wu' aspects of Tolle's particular take, it just works. If you find yourself constantly dwelling on the past, or being a 'nostalgic of the future' (as I both used to do), knowing the value of living 'in the now' may be the difference between chronic depression and a fulfilling experience of life. It certainly is for me.

106
rom16384 2 days ago 1 reply      
The bible
10
Ask HN: Can you explain how a database index works in an interview?
30 points by mountaineer  2 hours ago   46 comments top 27
1
brlewis 1 hour ago 0 replies      
I think you might get better results with a slight change in wording: "What can you tell me about how an index works?"

With the wording you used, some interviewees' minds will race to the limits of what they know and then panic as they think about all the things beyond that.

A "what can you tell me" question is more likely to prompt them to start with the basics and then expand more comfortably to the limits of their knowledge.

2
smyatkin_maxim 1 hour ago 1 reply      
Well...

- On the 2nd year of education I knew that "index is something in database, which helps to locate data faster. Like an index at the end of a book, it helps to find the right page w/o whole scan of a book".

- Later, probably at 4th or 5th year I got the idea how these are implemented using B+-trees.

- And even later have seen some alternative implementations.

But anyways, IMO even for a senior web developer it's enough to know that index is SOME fast data structure on disc, which trades duplication and (usually) slower writes for faster lookup. And optimizer sometimes will chose index scan, sometimes won't. And to know some basic optimization techniques (like throwing ORDER BY away when data is already sorted by index).

3
skookum 1 hour ago 0 replies      
Are you asking this from a DBMS internals or an application perspective? Are you posing it as a "one true answer" type question about a specific DBMS?

I'd expect any software engineer or CS grad to be able to make a reasonable guess at how a secondary index might work internally.

I'd expect any experienced software engineer who has worked with databases to be able to explain the application side aspects of "how an index works". e.g.: What access patterns a given index would help with and which it would not help with, what the downsides of having an index are, etc. Though even an inexperienced engineer should be able to derive answers to these questions once they've made a reasonable guess at the internals.

I think a lot of people are responding to this negatively due to viewing it as a trivia question whereas it can actually be a "reason through what has to happen to make something work" class of question.

4
codegeek 2 hours ago 5 replies      
I am not a database expert but as a developer, I of course work with databases and SQL as needed. My answer would be:

"Index helps you locate information quicker than usual in a database. If database is similar to a Book, then think of index as a Table Of Contents with page numbers for specific topics. Imaging if I gave you a book with 1000 pages and ask you to find a specific topic but there is no table of contents. You will have to look through many pages before you find it. If it had a table of contents, you could flip to that page much faster.

Will this answer be good enough for you ?

But then, I have no technical knowledge of how index is implemented within various databases and that is where I will say "Sorry I can't tell you the technical details".

EDIT: I will also add that it is difficult to list EVERY possible topic in a book in the table of contents. It will then defeat the purpose of the TOC. So you have to pick and choose the topics that you want to show with page numbers. Same for database index. You cannot index everything.

5
jballanc 2 hours ago 1 reply      
Items from a sorted list can be retrieved by a binary search in O(log(n)) time, so a database index is merely a list, sorted by the column being indexed, that points back at the original record for each entry. Simple, right?

So simple, in fact, that if someone tells you they don't know how a DB index works, you could easily walk them through it and, in doing so, get a much better evaluation of how they think than merely how well they can recite a bit of memorized text-book knowledge.

In fact, the only time I ever ask "Can you explain how X works?" type questions in interviews is so that I can specifically exclude asking an interviewee how to walk through the derivation of a concept with which they are already familiar. By that metric, I think your "how a DB index works" question is a great interview question!

Your mistake is stopping when they say "no".

6
skewart 1 hour ago 0 replies      
I think it's a perfectly reasonable question. I wouldn't expect a candidate to know all the implementation details for any particular database, even one they've worked with a lot. But I would expect them to have a general idea about how an index typically works (e.g. "some form of binary search tree"), or at least be able to reason from first principals given the problem it's intended to solve. From a different angle, I think it would be perfectly reasonable to ask someone what kind of data structures they would turn to if they needed fast lookups in an unordered list.

No one question should ever disqualify a candidate, but I'd be a little concerned that someone who can't even begin to reason through how an index might work would treat them as magical black boxes that just make everything faster. And that's certainly not true. For some kinds of data they don't speed up lookup time at all. In some situations they speed up reads, but slow down writes considerably. I'd expect someone to have enough foundational knowledge so that when they're on the job they could do a bit of quick research and decide if adding an index on any given column was a good idea or not.

7
chollida1 2 hours ago 0 replies      
If you come from the perspective that an interview question is a chance to learn how the candidate thinks then this is undoubtedly a bad question.

Secondly it doesn't really give any signal positive or negative wrt to full stack developers.

I mean if someone does't know how an index works it doesn't mean they can't use them effectively.

And if they can answer it, it also doesn't mean they can use them effectively.

Maybe turn the question on its head and ask....What possible info do you expect to get out of a candidate when asking this question?

8
WindyCityBrew 2 hours ago 0 replies      
I live mostly in the front end world, but if I was asked this (without looking it up) I'd say a DB builds a tree (balanced tree, binary tree maybe?) using the columns requested. This allows for very fast lookups when the table is queried for its indexed column(s), and blows away the worst case scenario of a non-indexed query time wise, where the DB has to do a full table scan to find out that a record doesn't exist. The trade-off is that the index must be rebuilt on inserts (probably deletes and maybe updates too?) and the resulting data structure stored, which is why you don't just index all the things.
9
kbenson 1 hour ago 0 replies      
My "out-of-my-ass" answer would be:

My layman's understanding is that indexes are separated data structures with generally fixed size copies of one or more specific fields from the main record sorted to allow efficient searching, that contain offsets into the main record store. That is, it allows you to use that field to find records and index into the main set of data. That said, this is how I have inferred it works, and how I would initially attempt to create a database, given little or no knowledge of the field and not allowed to research.

10
YZF 2 hours ago 0 replies      
For one thing there is no single canonical way. Cassandra indexes (sstable indexes + bloom filters) are quite different than e.g. SQL server indexes (probably some variant of B-trees).

If I wasn't prepared I could probably say something about these schemes but database indexes are kind of specialized knowledge since they combine some attributed of in-memory data structures with the performance characteristics and limitations of storage.

Let's turn the tables here, explain in detail how a B+ tree works and what's the difference between that and a "standard" B-tree? What do you know about sstables? LSMs?

11
andreyk 2 hours ago 0 replies      
I am a sort of generalist software dev (I've been working back end for the last few years), and think I could give it a try. As far as I understand, an index is pretty much a sorted copy of entries of a column, which enables fast lookup for that column (but slows down insertion and takes up extra space). I would guess an index could also be something other than just a sorted list, the important bit is that is an extra efficient lookup structure. Beyond that though, I don't know anything. I think a back end dev, who ever interacts with SQL, should know at least that much (assuming it's not totally wrong).
12
ddebernardy 2 hours ago 0 replies      
I can't imagine most web developers understand or care about or even need to know the intricacies of how a B-Tree or the various types of inverted indexes - or other indexes - work.

Much more interesting, IMO, and only for the certain type of dev that actually hits the database, is whether they understand that there are different index types, which to use when, and how this know-how translates to them being able to anticipate what the query plan for this or that query will look like based on the available indexes and some pointers on how the data is distributed in disk pages.

If anything you want the candidate that, given a set of assumptions, will tell you "a new index is needed here" or "a new index isn't useful for this query" because reasons and is able to explain why in sensible terms.

If you're trying to test SQL skill level, take a cursory look at the Postgres tag in StackOverflow and scan for performance-related questions. You'll find plenty of concrete "exercise" types of interview questions that, for the most part, will be straightforward for anyone with the relevant know-how to answer.

13
rocqua 1 hour ago 0 replies      
B-tree (balanced however you like), or a sorted list of elements, or a skip list of sorted elements. You could also do a hash table of elements if there aren't too many unique elements i.e. O(sqrt(totalElems)

Those are the traditional things I can come up with. I couldn't tell you how to balance a B-tree, just that red-black trees are apparently great for it. I couldn't tell you which database uses what, and I wouldn't dare claim my list is complete.

I'd say the question is so open as to be unclear.

14
MichaelGG 1 hour ago 0 replies      
It seems that a lot of developers simply don't know very simple basics that could be learned in a couple weeks of reading an intro algorithms book. Even without having studied databases, it should be within reason to think up that a database is a collection of records, and you need to find those records fast. Just like if you needed to find an object in an in-memory array quickly.

Maybe it's being asked in a weird way? Or they have an expectation that you want them to describe exact DB internals? Any decent candidate should be able to have a conversation about this.

15
pixeloution 1 hour ago 0 replies      
I'm not sure I could give an in-depth answer, especially under pressure in an interview. What I could do is explain the important bits at a high level:

 * how a B-Tree index is structured (and how that affects range queries, and wildcard queries) * how a query uses a single index per table, or can create a merge index * how a covering index increases performance * how composite indexes affect queries, why you don't need an index on both (col-a) and (col-a, col-b)
I don't think its unreasonable to expect a senior developer to know this stuff. It affects your ability to write performant queries against larger (1M - 1B rows) datasets.

16
mnm1 2 hours ago 0 replies      
An index is a copy (or copies) of some or all of the searchable data in a table to a data structure that's easy to search (binary tree, etc.). As long as the interviewee knows it's a copy of the data used to speed up searching, I don't see what more you're looking for (if you are looking for more). If you want to get into more detail, you'll be looking at various tree structures and search algorithms on those structures. Unless you're writing a DB, language, or something else low-level, you won't have experience with those and they are largely irrelevant for typical web development.
17
user5994461 2 hours ago 0 replies      
Do you know the difference between a list and a hash table? Hopefully yes.

When there is no index, the database is stored in a list. You look for something, you have to go through every item.

When there is an index, the databases uses a hash table to reference the locations of items. You look for something, you get the location instantly.

It's really simple.

There are more types of structures: trees, hash tables, bimap, arrays, etc... with different performance characteristics.

18
vim_user 1 hour ago 0 replies      
I was asked that question in my recent interview, and I told them that beyond the basics of the intent for using the index and some basic commonalities, it's hard to explain the details of how it works due to the fact:

1) All RDBMS vendors work differently.2) It's an abstraction that's best handled by the RDBMS implementation, and is bound to change over time as versions change.

19
defined 2 hours ago 0 replies      
I think this is a very interesting point.

How important is it to be something of a generalist, who could answer questions like this at least in broad terms, as opposed to being purely a specialist who has little knowledge outside of their domain of expertise?

Would it be significantly helpful to understand more about the things that happen under the hood, as it were, of technologies that we use?

Would a developer who could at least kind of answer this question show an aptitude for broader thought and a deeper interest in technology, and be a potentially more valuable hire as a consequence?

EDIT: To attempt to answer your question, any collection of structured data, whether objects in a memory-based data structure, delimited text fields, or a DBMS file, could be considered a database.

In many data structures, such as hash tables or primitive key/value stores, there is only one key. If you want to find data based on a field that is not the key, you either have to search sequentially through all the records, finding matches on that field, or create an index on that field.

If the number of records is small and the storage medium is fast, a sequential search may be adequate. If not, an index is needed.

Creating an index generally involves scanning all the records in the database and extracting the field required for searching, together with the location of the record within the database. The location would preferably be a direct record number to avoid unnecessary indirection, but it could also be the primary key of the database.

The list of key values and locations is put into a suitable lookup data structure. This could be something as simple as a sorted list in memory, a hash table, or a disk-based structure like a B-tree, B+-tree, or one of many others.

In the most simplistic case, looking up a record using the index means searchng the index for the matching record locator, then using that to retrieve the actual record in a separate step.

Obviously this is a bit more complex for non-unique keys, but that's the general idea.

Finally, the choice of index structure has tradeoffs, because once the index is added, it must be maintained when records are added, deleted, or modified in a way that affects the index. If the db has 100 million records, having to add a new one to a simple sorted index and re-sort it could be a performance disaster.

20
positr0n 2 hours ago 1 reply      
I could give a general explanation about reducing the number of disk seeks by using B-trees to store index values with pointers to the database row.

That being said I mostly agree with the other commenters that while a senior developer should know the answer, it isn't disqualifying if they don't. And if that's the case what is the point in asking it?

21
systems 1 hour ago 0 replies      
what answer are you expecting?

if you give us the answer you are expecting, it will help us evaluate the fairness of the question

22
platz 1 hour ago 0 replies      
Feels like OP spent a significant amount of time investigating implementation details and wants to validate/justify/perform that knowledge/time investment.
23
cbanek 1 hour ago 0 replies      
Seems like a reasonable question. Here's my answer:

Let's say you have a database table with two columns. One is an ID, and the other is a random integer. You want to be able to go through and find a particular integer by value, such as SELECT id,randomint from t WHERE randomint=4 (4 gotten by xkcd random dice roll, of course).

Now, if you had just a list of these integers, and they weren't sorted you'd have to scan through them all one at a time. This is called a table scan, and it can be slow.

Imagine if you had another list, that had the same values from the table, but they were sorted in the order of the values, rather than table order. Now you'd be able to do all the sorted array tricks, such as binary search, starting from the beginning, starting from the end, etc. This means you can find it faster. The index can also be smaller than the table, because you only have to store the parts you are indexing. But of course, there are performance tradeoffs, because you are increasing the size on disk, and it takes time to modify the index when modifying the table. (This is why some DB upgrades drop indexes then add them back after doing a lot of activity)

24
petraeus 2 hours ago 0 replies      
as far as i understand it it sorts the data at the disk level like windows defrag and puts the data 1st together and secondly ordered so the indexed data can be quickly and easily found.would this be an acceptable answer?
25
dudul 2 hours ago 2 replies      
What are you trying to prove by asking this question to candidates? Does it matter? Does not understanding what is happening under the hood prevent them from using them correctly?
26
Jemaclus 1 hour ago 0 replies      
As a full-stack developer, I really dislike these kinds of questions for the reasons outlined by others, just like I hate having to sort lists. In real-life, I do some version of sort(foo) or foo.sort() and call it a day. I don't need to know whether it's using Quicksort or Heapsort or whatever. The built-in sorting algorithm for our chosen language is generally not going to be the bottleneck of anything, and if it does wind up being a bottleneck, you look up alternatives and implement them. Same thing goes for binary trees or inverted indexes or graph searching or something. The real-world solution for those things in the real world is almost always going to be to use some out-of-the-box solution, like the built-in sort or Elasticsearch or Redis or something. Sometimes it's useful to see if they understand how the underlying thing works, but most of the time it doesn't.

I very much prefer application-level problems that have a hundred different possible solutions. For example, for a US developer, I might ask the following question: "Given the address 123 Main St, Boston, MA 00215, write an algorithm that will break it apart into its components of number, street, city, state, and ZIP." The reason I like this is that A) everyone who lives in the US can identify those parts on sight, requiring no special domain knowledge, and B) there are a hundred ways to do it.

I often get solutions like "I'll write a regex" (Okay, write one!) or "I'd use some sort of machine learning" (Okay, write something!). Most people will start off and say "Ok, I'll split on commas and wind up with [123, 'Main St', 'Boston', 'MA 00215'], and then..." and work there way from there.

So then I can throw in any number of wrinkles.

* What if there are no commas? (this breaks the regex solution)

* What if it's "San Francisco" instead of "Boston"? How might you decide you've gotten the whole city name and not just part of it? What about "Palm Beach" vs "West Palm Beach"?

* What if we have "123 St Francis Street"? Or "12A Main St"?

* What if it's "123 Main St West Palm Beach FL"? Is it "Main St West" or is it "West Palm Beach"? How might you tell?

And so on. The possible ways to write an address are endless, and there are no correct answers right out of the box to parse the address. This gives me a glimpse into the developer's mindset: how do they initially scope the problem? do they existing solutions or do they reinvent the wheel all the problem? Do they know how to write a regex? Are they bluster or not? Can they adapt when you throw curveballs at them? Do they start thinking ahead of you and say "ok, if Boston could be San Francisco, then this problem could also happen in the street name..."? And so on.

This becomes much more of a dialogue and a discussion of the problem and possible solutions than sitting there watching someone write code under pressure and tut-tutting when they do something wrong.

(This is an actual issue I ran into on the job, so it's not just a hypothetical one.)

My two cents. Good luck.

27
hobonumber1 2 hours ago 3 replies      
I'm a full-stack web developer. I don't know how an index works, nor do I really care. I know when to use it, and how it affects lookups.

If I was a database administrator, then it's a fair question. But if I was asked this for a full-stack web engineering role, I'd consider it a little unfair.

11
Ask HN: Company is offering me a move from NYC to Nevada. Should I take it?
6 points by homosaphien1  16 hours ago   16 comments top 11
1
hluska 16 hours ago 1 reply      
You said that your only goal is financial independence. I've never lived in either NYC or Sparks, so I can't give you numbers. However, assuming you make $120k a year forever, how many years are you away from financial independence in NYC? How about in Sparks?

The cost of living in Sparks is likely significantly lower, so if all else stays equal, you'd get closer to your goal faster if you were there.

That said, all else is not equal. How would you and your girlfriend deal with the climate in Sparks? What about art and culture? What if you have trouble making friends in Sparks?

Personally, I would rather be broke and happy than rich and miserable. But there's another side. If you're unhappy and have $$$$$ in the bank, the temptation will be to travel all the time. Heck, spending every second weekend in San Francisco will quickly eat up the cost of living difference between NYC and Sparks.

If you go, rent first. I've moved around quite a bit and am a firm believer that it's a bad idea to buy until you've been somewhere for a year. The alternative is to end up in a horrible neighbourhood...

2
csa 1 hour ago 0 replies      
I would personally consider it career suicide to move to Reno since you will have few or no options to move on to something bigger or better.

It will be far easier imho to increase your income in NYC such that you can save the as much or more than you can save in Reno. The potential upside in NYC is insane. There is no upside in Reno other than perhaps being close enough to the Bay Area to cultivate professional contacts there.

Said another way, you will leave this startup eventually. Where do you want to be when you leave?

3
cweagans 5 hours ago 0 replies      
Idaho resident here. I do everything that I can to ensure that I don't even have to drive through Nevada for any significant length of time. I certainly wouldn't want to live there.

That said, if you're going to move:

If your current company goes away, you could always find a remote gig. You could also plan for the worst and put away some money to facilitate a move back to NYC if that's what you're worried about.

4
Gibbon1 15 hours ago 0 replies      
Sparks is basically Reno for what it's worth. Meaning you can rent a house or apartment in Reno and not be far from your job in Sparks. If I were you I'd rent until you have a better feel for the place.

$120k/yr will go a long way in Reno. Would not be hard to save $30-40k a year without feeling like a poor church mouse. And I would not say there are no tech jobs in Reno.

Note Reno is 30-45 minutes from Tahoe and Carson city. There is a fair amount of other places within a 1-2 hour drive.

5
chris_7 3 hours ago 0 replies      
With 7 years experience you might be able to double or more than double that income at a larger company in New York, FWIW.
6
byoung2 16 hours ago 1 reply      
It all depends on your situation and appetite for risk. Young, single and no kids, I'd do it and save as much as possible. $120k would go a long way in Nevada, maybe you could save/invest half of your salary. Maybe rent at first and see how it goes before buying (I assume you are renting now in New York). If it doesn't work out with the company short term you can always go back to New York with your savings.
7
JSeymourATL 6 hours ago 0 replies      
> Software Engineer with 7 year experience.

Relative to the job itself-- you didn't mention anything about the role, technology stack, or space. Something to consider, assuming you stay with them 2-3 years -- how might you leverage this experience into the next thing?

8
nandemo 16 hours ago 1 reply      
Moving will result in saving more money, and that will further your goal of financial independence.

If the company goes down you can always move back to NYC.

> If I do, should I buy a house there or rent? My company is a startup.

Uh, why is that even a question? Just rent. If you do have money for a down payment then save it for when you're really getting settled.

9
pinewurst 16 hours ago 0 replies      
No state income tax either in Nevada!
10
paulcole 4 hours ago 0 replies      
>My only goal currently is financial independence.

If this is true you'd have already made the decision. You wouldn't "get settled into a house" because you wouldn't buy.

A house in the desert is starting to look like one of the worst investments ever. You'd rent a room or get the smallest apartment possible and bank as much as possible.

11
nv-dev 16 hours ago 1 reply      
I'm a Reno native, and I'd be happy to chat. Shoot me a message at nv.throwaway.acct@gmail.com.
12
Ask HN: Why does visual programming suck?
211 points by dvdhsu  2 days ago   304 comments top 69
1
devcriollo 1 day ago 2 replies      
"Text is the most socially useful communication technology. It works well in 1:1, 1:N, and M:N modes. It can be indexed and searched efficiently, even by hand. It can be translated. It can be produced and consumed at variable speeds. It is asynchronous. It can be compared, diffed, clustered, corrected, summarized and filtered algorithmically. It permits multiparty editing. It permits branching conversations, lurking, annotation, quoting, reviewing, summarizing, structured responses, exegesis, even fan fic. The breadth, scale and depth of ways people use text is unmatched by anything. There is no equivalent in any other communication technology for the social, communicative, cognitive and reflective complexity of a library full of books or an internet full of postings. Nothing else comes close." http://graydon2.dreamwidth.org/193447.html
2
mvindahl 1 day ago 5 replies      
I think visual programming is one of those ideas that intuitively seems like a good idea but never is. Thus, it never really dies, it just gets picked up as a kind of rite-of-passage by new generations of developers. Managers also tend to like the concept as it would allow them to bypass the pesky code monkeys and just feed their drawings to the computer.

For my master's thesis, some 15 years ago, I programmed a system for visually composing and executing Java programs. The UI looked a bit like UML, and it worked nicely for anything resembling "Hello world" complexity (anything more complex literally became hairy to look at). Since then I've twice found myself on projects where we had to work with visual programming tools (caused by skilled salesmen and inept managers). In both cases the only sensible action was to pound the "eject" button until we were catapulted away from the monster. All in all I consider myself vaccinated at this point.

As for my reply to the question of the OP, I'm not sure that it differs much from everyone else. The main reason that it will never catch on, IMHO, is that the text editor is far better for managing complexity. It's easy to search for stuff, and it's easy to move or copy it. Also, every serious text based programming languages offers plenty of ways to hide complexity away, allowing you to focus your thinking at the desired level of abstraction. Visual programming tools -- or at least those that I have met -- instead force you to deal with stuff that doesn't matter (such as aligning boxes and arrows), and views very quickly become cluttered when you start connecting things.

That being said, I think visual tools can be a good fit for tasks whose output is UI. There are applications and frameworks that allow you to drag'n'drop to compose the UI, but the code is still written in a text editor. This can work reasonably well.

3
Changu 1 day ago 9 replies      
I think the reason is that text is already a highly optimized visual way to represent information. It started with cave paintings and evolved to what it is now.

"Please go to the supermarket and get two bottles of beer. If you see Joe, tell him we are having a party in my house at 6 tomorrow."

It took me a few seconds to write that. Imagine I had to paint it.

4
threefour 1 day ago 3 replies      
Imagine a world where people only bought bespoke suits. You go to a tailor and are measured and pick out your fabric and wait a few weeks. Then you pick up your suit. It's perfect. You pay $5000 and take it home.

Most of us don't do that. Most of us make due with off the rack suits with some tailoring for 1/10th the price.

With programming we have an expectation of bespoke design, so anything less, even if it's much easier, seems lame.

A potentially useful reframing of the question is, "What are all the common use cases that could be solved sufficiently with significantly less effort using visual programming?"

5
skadamat 1 day ago 2 replies      
The way people have implemented visual programming has turned out to be a bit of an oxymoron. Visual and symbolic are entirely different channels of representation & understanding (for the most part). Representing a program using lines of code and throwing some "visual magic" to spread out lines of code across a screen doesn't take advantage of what EITHER visual or symbolic manipulation has to offer.

Visual programming efforts have tried to visualize code and operate at the wrong abstraction. Programming is just the act of creating programs. In a visual programming environment, the author / programmer should use visual interactions to "write the program". This means a few things needs to be considered:

- the representation - how is a computer program represented? how is state represented?- direct manipulation - imagine using a tool like Photoshop having to compile / build to see your changes between every edit. - input devices - mouse / keyboard works for writing lines of code. Touchscreen is a better input device / interface for visual programming but still lacking (no tactile response).

In my opinion, not enough is reinvented when visual programming efforts are tried. I think the entire stack (human input --> program state) needs to be reinvented and reconsidered. Bret Victor has a great section on visual program in his FAQ for one of his talks - http://worrydream.com/DrawingDynamicVisualizationsTalkAddend...

6
hacker_9 1 day ago 1 reply      
There is a couple of reasons. First, VP is essentially just putting code snippets into nicely coloured boxes, which adds no value apart from making you have to scroll/zoom more. Additionally the structure of the visual becomes important, opposed to text which can be infinitely appended to, and so once you add enough complexity the whole thing becomes complete spaghetti.

VP also hides away a lot of implementation details from you, and assumes the computer will be able to figure out something better than the programmer. For example, when would the dropdown run the SQL query? on page load? on drop down open? As you scale the app bigger, you may want to run a single SQL query and then chop up the results and hand them out to several dropdowns. If your VP interface doesn't support this then your done for, but with code there is always a way.

There is always Clojure of course, which lets you edit your GUI while the app is running, and upload code changes without having to rebuild, allowing you to tweak stuff as you go. REPL driven development is great as it gives you both the flexibility of written code, as well having close to the interactivity that VP offers.

7
radva42 1 day ago 7 replies      
I've been working on a project that does exactly what you described for the last few years. IMHO vue.js/react really changed the game here, especially for CRUD apps.

For example what I did was to code a server part in golang and use vue.js on the frontend and for the app builder. Using the web-based app builder (also 100% vue) the user can design forms. The forms are stored as serialized JSON in the database and the server renders dynamically vue.js components. It's super fast. And there's a complete freedom to design any form with a 16-column responsive grids and a lot of widgets and styling options. Forms are also nestable (thanks vue!) and completely extendable with custom JS code so it's possible to create a custom widget and then simply import it in other parts of the app.

As I said I think the shadow DOM and frameworks like vue really made the difference. I started without using such frameworks and it was not only tedious, but the resulting app wasn't very interactive and felt like a customized Excel spreadsheet attached on top of a PostgreSQL database. Now it's a completely different story - it's easy to build fully reactive apps that feel like a "normal" cloud app and are actually pleasant to use. Of course instead of spending few months designing and building it, it was created in a few hours.

So yeah... I think that drag-n-drop builders are definitely coming and will probably eliminate the need to write such apps in coming years.

8
phantom_package 1 day ago 0 replies      
I really enjoy Unreal's Blueprints. I program in a text-based language for work, so it's fun for me to go home and be able to hack on a game without having to spend more hours staring at text on a screen.

A big difference that I've noticed is that in a visual scripting language, the "nodes" in the graph can change their shape/color/layout/etc based on what type of node they are. I love this. With blueprints, if I'm putting together a material and I put in a color node, a color picker shows up. If I put in a TextureSample node, a little picture of the texture shows up. In a text-based language, every variable is just a string of characters - if you want to be able to tell at a glance what type of object a variable contains, you need to adopt some kind of a naming convention (or use an IDE that highlights them).

Debugging in unreal is also really cool. The "code paths" light up when activated, so it's really easy to see exactly which branches of code are and aren't being run - and that's without actually using a debugger. Side note - it would be awesome if the lines of text in my IDE lit up as they were run. Also, debugging games is just incredibly fun and sometimes leads to new mechanics.

I initially thought that organization would be a problem, but it turns out that you can make functions just like any other programming language, and encapsulate blueprints inside of them.

There are also some things that I don't like about Blueprints. Typecasting usually involves an extra node which feels verbose. If/thens are handled with a "Branch" node, which again feels verbose.

9
jstewartmobile 1 day ago 1 reply      
I guess it depends on what one considers to be programming. For certain DSLs (audio, control systems, UIs), it seems to be doing OK. For general-purpose work, I think they will always be less desirable than text. Even after thousands of years, words are still our most powerful tool for recording and sharing new ideas.

Alan Kay's mistake is that a lot of his original work was with Papert on educating children. For early learning, having a visual/physical analog adds value. For professional work, when you already have the concepts down, it just gets in the way.

10
edejong 1 day ago 0 replies      
Things that are difficult in visual languages:

- Humans are centered around linear communication. Spoken language is essentially linear, with good use of a stack of concepts. This story-telling mode maps better on a linear, textual representation than on a graphical representation. When provided with a graph, it is difficult to find the start and end. Humans think in graphs, but communicate linearly.

- Graphs are rather hard to manipulate. You invariably need a mouse, which is a rather slow instrument. Using keyboard combo's is certainly possible, but is difficult to make intuitive.

- A textual representation can be left in a syntactical incoherent position while editing. For example, I can have non-matching braces. This proves very helpful in quickly editing code. Visual programming paradigms generally require a coherent structure, in order to keep them editable.

- UI builders are extremely valuable, but this is technically not visual programming. UI builders have problems as well. Complex UIs are often parameterised (the fields themselves are variable). By offering a visual context and a textual context, the coding experience can become incoherent and more difficult to learn.

- Programming is very context dependant. A programmer focusses on a specific part, mentally forming a high-dimensional representation of the algorithm at hand and the larger context. Using a visual representation possibly competes with the mental map. Also, it forces upon the reader a scoping.

11
vendiddy 1 day ago 1 reply      
One size does not fit all.

UI creation is best handled by a WYSIWYG editor, animations are nice to visualize on a timeline, and math formulas are clearest when written as is.

Picking the wrong model creates a mess. Try to express a sorting algorithm as a flowchart. It would be too difficult to follow. Yet a business process is great to model as a flowchart. A picture is only sometimes worth a thousand words.

Take a look at the papers published from VPRI, the research org founded by Alan Kay. They have built languages for graphics, parsing, stream processing--each optimized for its particular domain. They could have used a general purpose language but it would have resulted in much more code than necessary.

So the question everyone should be asking is: why hasn't a multi-paradigm programming environment taken off?

12
mschaef 1 day ago 0 replies      
For me at least, graphical programming tended to crank code style issues up to 11. If you think linear text code formatting is bad, laying out a flow graph on the screen is worse. If you think naming a function is bad, try drawing an icon to represent that function. (Or each function in a library of ten or twenty related functions... )

Graphical programming also walks away from a huge body of work dedicated to managing, searching, and manipulating text. As good as the graphical tools can be, there's nothing like all the work that's gone into text editors, diff tools, query languages, etc. These are all things that are central parts of my programming workflow, and they are all missing or considerably weaker in a graphical language. (This is not to mention the fact that graphical programming gives up two hands and ten fingers as input devices in favor of one hand pointing and clicking with a mouse.)

I think as appealing as the idea is, whatever benefits there are don't outweigh the considerable costs.

13
throwaway_c 1 day ago 0 replies      
VB6 and (especially) Delphi continue to have many fans. Sadly, there is little effort seemingly being expended in simplifying programming for normal people, so a lot of modern visual environments just haven't taken off, which further reduces incentives for investment in the field, and leads to them being (correctly) perceived as crippled and unsound.

Also high-mean IQ dev outfits are likely to produce tools for people like themselves. "Cognitive empathy" is not going to be a strong point for the framework creators at Google or Facebook. Microsoft seems to have quietly abandoned Lightswitch, which was their last high-profile attempt in this space.

Finally market forces mean that working developers have no incentive to adopt simpler technologies, so there is no pressure on vendors to simplify things either.

14
cageface 1 day ago 2 replies      
It doesn't suck if your code involves complex flows of relatively simple data. Programs like Reaktor and Max MSP have been hugely successful for this kind of coding in the music world.

If your data structures are more complex and require more convoluted logic, which is more often the case than not, then the benefits of visual programming diminish and the downsides are much more apparent.

15
david927 1 day ago 2 replies      
I disagree with several here: The problem is that we still program in text, and that's deeply sub-optimal.* Once we move to programming in data, visual programming becomes both natural and intuitive, much like data visualization.

In other words, VP itself is a red herring. The leap that needs to first to be made is that from text to data.

*https://www.emaze.com/@AWOCZQLL/Text-is-for-Novels

16
jerf 1 day ago 0 replies      
Programming languages (and a lot of other things) have essential and accidental complexity: https://en.wikipedia.org/wiki/No_Silver_Bullet?wprov=sfla1

Progress in programming is in removing the accidental complexity to get to the essential.

In the vast majority of domains, visual programming injects huge amounts of accidental complexity utterly irrelevant to the domain. So it isn't really surprising that despite it's superficially appealing elevator pitch and uniquely pretty demos, it doesn't appeal over the long term.

The domains where it works are those where the complexity is limited, or where the usually-accidental complexity is actually fundamental... for instance, in circuit layout the usually-accidental issues involved with layout actually correspond to something.

Visual programming is firmly established in some nights, and I expect it to stay in them indefinitely.

17
wruza 1 day ago 1 reply      
What really annoys me in text programming is that I have to write constructs again and again, referring to manual for method names constantly. Completions may be smart typewise, but IDEs never assume what I am writing. Let's take a function:

 static string defaultFamily = "Sans"; bool foo(string s, Alignment a, int height) { Par_
Okay, it began. What can be done with all the available values? Seems that I'm going to create a paragraph and fill it with some arguments. One of autocompletion suggestions:

 bool foo(string s, Alignment a, int height) { Font f(defaultFamily, height); if (!f.isValid()) return false; Paragraph p; p.setAlignment(a); p.setText(s); p.setFont(f); <#rest#>_ return true; }
How is it obvious? Because Paragraph told the completion system that it needs at least font and text values set. Height goes to font, other arguments go to paragraph. Names are selected from the style around. Since we return a boolean and few objects can be invalid after initialization, it assumes that it is a status. p is local, so there is something to be done with it, and another <?> block is created.

Even better, you could just throw items together and get the result:

 // this->points is double[20]; { frame inset 0.5 red stroke; add points black stroke; --- { Rect r = this.frame(); r.inset(0.5, 0.5); Painter p; p.setColor(Color::red()); p.addPath(rect); p.stroke(); p.clearPath(); for (point in points) { p.addPoint(point); } p.setColor(Color::black()); p.stroke();
But the completion style that we have everywhere just sucks:

 int foo(string s, Alignment a, int height) { ParadoxDatabaseProvider_ ParadoxDatabase... ... Paragraph ParamsManager
I can't point to good visual programming tool, but our "powerful" text IDEs are simply prehistorik typewriters.

18
Edmond 1 day ago 1 reply      
I don't think it is the paradigm that sucks but the existing implementations...it is a hard design problem to solve. No one has quite figured out the right approach....often the existing implementations make you click and fill out enough fields to make the entire exercise much worse than just coding something up in a text editor.

I believe the solution lies in coming up with a way to compose pre-built components into complete applications...I think the existing efforts involving Angular,React,VueJS,Vaadin..etc are all pointing in the right direction....I have been working on Solvent (www.crudzilla.com) for sometime now and solving the UI building (drag-drop) is something that I am still actively thinking about...one of these days someone will crack the problem :)

19
antaviana 1 day ago 0 replies      
I think that Delphi nailed Visual Programming. It has a mix of speed and convenience that I do not find in other Visual environments. The fact that Pascal compiles so fast also helps with the instant gratification when prototyping an application.

The downside is perhaps that this very same instant gratification makes you very prone to add business logic in the UI, and it the application sticks around, you eventually want to refactor the whole thing.

20
nickbauman 1 day ago 1 reply      
The old "Gold Standard" for WYSIWYG programming has been Apple's Interface Builder. But every iOS dev I know has moved entirely away from IB in favor of programatic construction of the UI (in Swift or Objective-C text). Why? Because they want to have automated tests over everything they can.

The simpler way to say this is: "Complex ideas can only really precisely be expressed in text. To the degree you can express them visually is to the degree that there are expressed as complex text underneath."

21
22
petra 2 days ago 1 reply      
One modern incarnation of visual programming is called "low code", and it seems pretty successful.

This is a good introduction and discussion about whether this is a fad or it's here to stay: https://medium.com/softwareimprovementgroup/low-code-wave-of...

23
lithos 1 day ago 1 reply      
It doesn't. The electrical world has been using contactor diagrams for complex logic for decades, and with the inclusion of more advanced computer components ladder logic (still the same concepts, symbols and logic)

https://www.allaboutcircuits.com/worksheets/ac-motor-control... is the link I quickly found.

It's typical to see a handful of symbols handle what would take a hundred of lines of code for the level of user interface usability, validation, and core functionality.

24
analog31 1 day ago 0 replies      
I wonder how many people have physical issues with computer screens. My own anecdote is that I get severe eyestrain headaches and neck / wrist fatigue, when I have to do fine manipulation on a computer screen.

I spent a few months using LabVIEW, more than 20 years ago, and it was physically debilitating. I also have a hard time doing CAD. When I'm typing code, I'm not really focused on the screen unless I need to be. Sometimes I close my eyes and type, or look away from the screen.

Another thought about text based languages is that they make it much easier to create and explore new languages, because you don't need to program a full blown graphical editor every time, make it work on every platform, etc. Especially for languages that are supported by volunteers, maintaining graphical tools might not be the best allocation of effort.

25
adpoe 1 day ago 0 replies      
Personally, I think that written language is a more natural way to describe and reason about complex systems and symbols.

It's the same difference between writing mathematical proofs as systems of equations vs. proof by drawing a diagram, or making a visualization.

Proofs can be written using both methods, but if you have a strong command of the written/symbolic vocabulary, it is faster and more succinct.

Put another way: I can describe the landscape of a lush, green Tuscan Countryside--with rolling hills, morning dew, and and crisp feeling of the first rays of sun cutting through the mist--in just a few lines. You get a picture in your head, and it is likely very similar to what was in mine.

Imagine now, that we can't use words. We have to draw pictures. It will take much longer to get the same point across. Language--for certain purposes--is more efficient, and more information dense.

That's my hypothesis/feeling.

26
overgard 1 day ago 1 reply      
I think this is a minority perspective, but I generally think coding has a lot more in common with writing than it does with engineering. (I guess Literate Programming would sort of support this idea). Can you imagine trying to write an essay as a flowchart? I think it would just obscure the point, rather than simplify it.
27
smilesnd 1 day ago 1 reply      
Unreal has a VPL and it is a pain to use. A simple piece of code takes up so much desktop real estate that you either have to slowly move around to see it all or have to add more monitors to your setup to see it all. You think spaghetti code is bad imagine actually having a visual representation of it you have to work with. Organization doesn't exist you can go left, up, right, or down. If you ever try to enforce coding standards think about adding x and y coordinations and other location standards. Finally I could only imagine the black magic that goes along with such a thing. Visual studio black magic is already horrible to deal with one little hiccup and you are lucky if all you have to do is create a new project and migrate your files/folders over to it.
28
richard_shelton 1 day ago 4 replies      
I think the truth is somewhere in the middle. Look at complex CAD systems and editors. They focused on the visual side and still provide some kind of command line for scripting the things. Even in pure visual programming systems like PD you can type algebraic expressions in textual form. And in text-based systems you may have lots of 2d tables (Smalltalk), graphs of modules, semantic colors (colorForth) etc.

Imagine GUI editor where the user can type the code on the left side and also can move and edit widgets with cursor on the right side. And editing of both sides is working in live mode. My point is that we need to have the best of both worlds to be really productive.

29
mabynogy 2 days ago 2 replies      
Because of the Deutsh limit: https://en.wikipedia.org/wiki/Deutsch_limit
30
pishpash 1 day ago 1 reply      
For event-driven programming like what you describe, Visual Basic worked fine. Too bad that kind of very efficient UI building got thrown out irrationally with the hate for Visual Basic the language.
31
flohofwoe 1 day ago 1 reply      
Programming through typing text has already become 'visual programming', just from an unexpected direction: syntax highlighting, compile error checking while you type, code completion, fuzzy searching, argument type popups and so on. The only thing that's missing is better debugging integration (essentially show how the program state changes while you type).
32
dgudkov 1 day ago 1 reply      
I believe general purpose visual programming hasn't become widely popular because currently it's not really needed for general programming. General programming used to be pretty low-level (e.g. i++) and linear (because it's single-threaded in vast majority of cases). Things slowly change though. Now popular functional programming tends to be more high-level and the shift to multi-core CPUs even on mobile devices encourages more and more developers write multi-threaded code.

At the same time there are very successful niche cases for visual programming with Excel as the most prominent. Yes, there are no data flows in Excel (although it can display dependencies with arrows), but you typically can easily identify visual blocks (chains) of calculations on a sheet. I've designed a visual programming tool for data transformation (http://easymorph.com) which can be viewed as a visual programming language[1] because typically the task of data transformation is high-level and non-linear, and visual programming works very well in this case.

[1] http://bi-review.blogspot.ca/2015/06/easymorph-as-visual-fun...

33
xaduha 1 day ago 1 reply      
I can tell you where in my opinion visual programming works (or can work if anyone actually bothered), but you probably not gonna like it.

First step is to think about IDE assisted programming as a proto visual programming. Second step is to have a real DSL, not just some general purpose programming language with some extra words sprinkled that sort of look like a DSL, but you can easily escape. Visual programming tools that aims to do the job of general purpose programming language is kinda doomed from the start in my opinion.

Here's a snag - how many DSL languages do you know that have intelligent IDE support? Designing a good DSL language is kinda hard in the first place. I know of many, but they are called XML languages, deal-breaker for many. XProc can work as an underlying language for such a visual programming tool, with a good XML schema enabled IDE or editor such as OxygenXML you won't even work with XML as most see it, it's not really text anymore. Dropdown menus in a representation of a tree, that's what it becomes.

There were at least two attempts to create an actual visual programming tool on the base of XProc, most advanced was this one https://community.emc.com/docs/DOC-4382

34
mafribe 1 day ago 1 reply      
Graydon Hoare (Rust creator) has an interesting post on a related matter "always bet on text"http://graydon.livejournal.com/196162.html
35
lisper 1 day ago 1 reply      
> The type of visual programming I'm thinking about here is a WYSIWYG drag and drop interface for building UIs.

The main challenge in this particular domain is describing what is supposed to happen to the layout when the size of the window changes, or if there are dependencies among visual elements (e.g. some element only appears when a check box is checked). When laying things out visually you can only ever design one particular instance of a layout. If all your elements are static, this works just fine. But if the layout is in any way dynamic (with window resizing being the most common case) you now have to either describe what you want to have happen when things change, or have the system guess. And there are a lot of options: scaling, cropping, letterboxing, overflowing, "smart" reflow... The possibilities are endless, so describing all of that complexity in general requires a full programming language. This is one the reasons that even CSS can be very frustrating, and people often resort to Javascript to get their UI to do the Right Thing.

36
thenanyu 1 day ago 0 replies      
My pet theory: Code is N-dimensional - every set of braces, every nested function call, increases the execution by a dimension and humans are really only good at visualizing in 2 or 3 dimensions. Specific domains that are constrained to 2-3 dimensions are suitable for visual programming, but it's hard to generalize.
37
nacc 1 day ago 0 replies      
I think it really depends on the task. We are just hijacking the brain machinery to do jobs it is not evolved to deal with. If we can find some highly evolved / optimized brain function which reflects the structure of the new job, the brain can process it much more efficiently.

Text might be good for programming because, most of the programming are sequential, text is sequential, and text processing is highly optimized in the brain because language. But in fact, we also use a bit of visual programming (indentation, paragraphs) in text to reflect part of the program structure that are not sequential.

If the program is completely non-sequential, visual tools which reflects the structure of the program are going to be much better than text. For example, if you are designing a electronic circuit, you draw a circuit diagram. Describing a electronic circuit purely in text is not going to be very helpful.

38
dennisgorelik 1 day ago 0 replies      
Visual languages never found a good solution to most of software development tasks.

For example:

1) How do I view diff between old and new version?

2) How do I search for an element in my visual code?

3) How do I email example of visual code to my colleague?

4) How do I message an example of visual code?

5) How do I blog about visual code?

39
jensgk 1 day ago 1 reply      
40
amatheus 1 day ago 0 replies      
Visual programming is used in Maya or Houdini for example (I think Houdini is more oriented towards it). While these are 3D software, I don't think there's anything 3D specific about how it works. I've seen a video of a guy showing how to create assets for game and building something that works pretty much as a function out of interconnected nodes (I can't remember the exact webinar I watched but found this other https://vimeo.com/202120820).Now they don't call it programming but as I see it, that's programming and the basic idea could be made to work in other contexts.
41
pshc 1 day ago 1 reply      
I'd like to share some thoughts:

- Visual programming tools usually only work at one abstraction level (your first point)

- Often centered around a gimmick and cannot encode "normal" detail-oriented imperative code efficiently

- Only a fraction of a given program is amenable to flow charts, Visual Basic-style forms, etc. Unfortunately, most visual programming environments are all-encompassing.

- So VPs tend to become blunt, awkward tools that lack power of expression, ergonomic editors, scalability to real usecases, etc.

FWIW, I do believe that a better code editor is possible through non-plaintext programming. (Serialize token trees and ASTs, instead of plaintext.) But such an editor would likely be used in text-editor-mode >50% of the time, just due to the high information content and sheer readability of text.

42
jmts 1 day ago 0 replies      
I did some work with webMethods Flow in a previous job. I hated it. Aside from the fact that it was slow from a point-and-click point of view, the interface was generally slow, and navigation and search were generally tiresome. To my memory it was not possible to have related flows side-by-side for reference, and much of it was abstracted to a high enough level simply due to language features that it was difficult to identify patterns and idioms within a set of logic at a glance. This also meant that any opportunities for refactoring or code reuse were few not only because it was difficult to do, but also because they were difficult to see.

Much of this can probably be improved in the IDE, and it is possible that there were issues simply because we may have been abusing it (there other platforms/languages that were being used beyond their original design).

What little I've seen of LabVIEW at my current job suggests that it has a more usable interface, however having written DLLs to be used by LabVIEW, it still appears to be quite restrictive at a language design level which I expect would still limit its usefulness (I hear regular talk of the use of singletons, users appear to be required to translate a C API to LabVIEW manually, useful C language features like structs and function pointers don't appear to have any support, the ability to maintain a reference to a context pointer gives rise to groaning developers).

https://en.wikipedia.org/wiki/WebMethods_Flow

43
calebh 1 day ago 0 replies      
Nobody here has mentioned language workbench tools, the best of which is probably Jetbrains MPS: https://www.jetbrains.com/mps/

These language workbench tools make it easy to switch between graphical and textual representations. Also you get intelligent IDE support and typechecking for free.

The primary alternatives to MPS are Xtext and Microsoft's language workbench (formerly known as Intentional Software, Microsoft just bought them).

44
iEchoic 1 day ago 0 replies      
I think it's because some visual mediums are better at representing certain forms of information than others, and visual programming tools attempt to represent a form of information (programming logic) using a visual medium (images) that isn't optimal for that form of information. Analogies can be made for things like calendars (which are the preferred visual medium for visualizing schedules), sheet music (which is the preferred visual medium for visualizing music - though guitar tabs present an interesting alternative to think about), and movie scripts (for which text is the preferred medium).

In the same way that a movie script is best represented by text, my belief is that text is superior to images for representing programming logic, and images are superior to text for representing UI elements. I think most people at least feel the same about representing UI elements, which is why visual programming tools are appealing.

This leads to the conclusion that the best tools for building UIs would represent programming logic in text, and represent UI elements using images. In my experience, this is true; tools like Unity and Flash are, in my opinion, better for UI development than HTML/CSS (text). This also leads to the conclusion that unless someone invents a better way of representing programming logic than using text - like the equivalent of inventing a calendar to display a schedule, if we had never invented a calendar before - visual-only programming is inherently limited.

Tools that keep UI in visual-land and programming logic in text-land - and don't try to mix the two - work great.

45
badsectoracula 1 day ago 0 replies      
One thing that nobody seems to notice is that big thing in front of you with the tons of buttons: the keyboard. The main input device we use to enter stuff in our computers are based on typewriters, so everything more advanced than clicking widgets with the mouse revolves around typing stuff. Most visual languages feel like you are fighting with their code editors because the editors are not following the typewriter model that the main input device of our computers use.

Perhaps this will change in the future with other input devices, touch devices like tables could provide for a different environment - currently programming with a tablet feels slugggish but this is because everything about programming revolves around typing. Touch is different. But it needs to be designed from the ground up for the interface you work with.

Whatever that is, i don't think text is the only way to go. I believe our keyboards have shaped the way we think about programming - and interacting with computers in general - and if we are to explore other ways to program, we need to also explore other ways to communicate with the computer.

46
eikenberry 1 day ago 0 replies      
Part of the problem might just be that you are ultimately comparing it to using text for programming and that text just works extremely well for the vast majority of programming.
47
lloydfischer 1 day ago 0 replies      
Way back in a previous life I made a living building a visual programming tool and language to specify simulations. After many years of work it became clear that visual programming works very well in industries that already have a well established visual paradigm. We had great success with simulating hydraulic systems by letting folks specify them with standard piping and instrumentation diagrams. The cooling system simulation for the space station simulator ended up being built that way with our system, as were many simulations of nuclear power plant cooling systems. However, after you do P&i diagrams and electronic schematics you very quickly run out of well established visual paradigms. Uml is just not useful in the way that a piping diagram is.

As to text, a colleague once described the best feature of a text specification of code was "visual rhyme". You know, when you can look at a block of code and feel how it ebbs and flows. That's from the old days, I don't know if functional code rhymes like Fortean did.

48
dragandj 1 day ago 0 replies      
Think ancient Egyptian hieroglyphs or Chineese pictograms. They seem like a good idea until you need to describe specific nuances. There is a reason alphabet won.
49
mcphage 1 day ago 1 reply      
That's how Interface Builder on macOS/iOS works, especially in concert with Key Value Coding and Key Value Binding. It's cool stuff, check it out.
50
afpx 1 day ago 0 replies      
But, isn't text just abstract signs and symbols? Why can't we, programmers, make new or better symbols? Why can't the language be augmented to incorporate concepts of computing?

I never desired visual programming until recently. I never had the need for it. Plus, I always found the existing visual languages and tools to be clunky.

But, lately, I often find myself with just my tablet and stylist. And, during these times, I want to 'sketch' out programs. I have some ideas on how this would work in practice. There would have to be detection of gestures, and instant feedback that provides visualization of the changes.

51
groundshop 1 day ago 0 replies      
SQL Server Integration Services (SSIS) does a good job of this I think. SSIS is made for manipulating data flows. The flow of data happens to be very well represented in many cases by visual network flow diagrams. Most of the common patterns of data flow are implemented as drag and drop widgets.

That said, as necessary, you can do pretty much anything in that environment as code if you want. The best thing about the language, though, is that /if/ you go down the path of coding something out instead of using a common pattern, it forces you to ask "Why am I doing something out of the norm here?" Sometimes you have a valid reason. Sometimes you don't and that question course corrects you back into a maintainable architecture. It's a very niche language (even mostly vendor locked down), but I think it's a great example of a visual programming environment that's mostly great to work in.

52
simplify 1 day ago 0 replies      
Check out node-red[1], a visual language for creating node apps. It's a good demonstration of the potential of visual-based languages (but it's also far from that potential).

[1] https://www.youtube.com/watch?v=f5o4tIz2Zzc

53
mseebach 1 day ago 0 replies      
Programming is inherently difficult. We can do a lot in tooling and increasingly higher level languages to help make a lot of the details a lot easier, but a the core, it remains abstract symbolic manipulation.

It seems to me (and I have by no means done an extensive survey of the field, so YMMV) that efforts in visual programming suffers from mis-diagnosing that the difficult part of programming is the act of writing the code (indeed, the empty editor is intimidating and code in any language looks impenetrable to outsiders), rather than understanding what code to write in the first place.

54
wruza 1 day ago 0 replies      
>Then you interact with their API: this table pulls in data from this SQL statement; this button executes this HTTP query; this dropdown publishes this value, which this SQL statement uses via string interpolation. These "widgets" publish their data, which can be used by other widgets (w1.value), and inside SQL queries. The tables can pull in data from SQL queries. You can use string interpolation inside SQL queries, so dropdowns can influence the query being run. So selecting a drop down value would cause the query to change, which would automatically propagate changes to the table.

This is very similar to Xcode Cocoa/CoreData bindings, but these are too restricted to create anything nontrivial. IME I always had to fallback to delegate and data source methods in source code.

55
anotheryou 1 day ago 0 replies      
WYSIWYG fails for two reasons:

- Programming errors most of the time break everything. You probably know how bitchy Word can be. Errors will be frequent und finding them when you don't really know what happens under the hood will be very difficult.

- WYSIWYG does not abstract very well. The big power of programming however is, that you can build your own tools from a minimal set of building blocks. Visual representation for self-build tools and routines will not be pretty out of the box.

---

Those visual languages that do have a big userbase do the following:

- no WYSIWYG, just "nodes". The visual parts of the nodes:

- - inputs and outputs are often connected with "wires"

- - simple control UI like a knob or a button can be shown directly

- they allow wrapping a bunch of wired mess in to a box with simple in- and outputs again

- some allow to jump back in to code where necessary

- in general nice for small art-projects

- difficult or at least in-flexible for complex stuff

- often a lot more copy+pasting

---

56
ux-app 1 day ago 0 replies      
> Why does visual programming suck?

It doesn't? Shameless plug, I build a visual programming tool for UI design (https://www.ux-app.com/static/learn-actions-and-events.html).

It's great for a huge subset of people for whom coding is tangential to their job. Product managers, designers etc.

It's not ideal for a programmer because it's not as dense as the textual representation and once you've developed that muscle memory, typing your code is a lot quicker, but increasingly, there are a lot more people coding now who are not career programmers. For these people visual programming is great since it's less intimidating and reduces the possibility of syntax errors.

57
unabst 1 day ago 0 replies      
Imagine trying to do math without numbers. That's why visual mathematics sucks. Numbers are needed to count. We do it with our fingers when we're little, and we're limited to 10. Then we take off our socks to get to 20, but that's it.

Imagine trying to reason without words. That's why visual programming sucks. Words are the smallest units of abstraction that we can reason with. So when a visual programming language provides us with glyphs, we are already limited in our vocabulary and in what we can reason with. It becomes excruciating.

What we need is not a visual programming language, but more tools to visualize the programs that we have. Ultimately, all visuals need to fall back to literal code a parser can reason with, so there is no escaping code. In fact, there are already layers going down from the higher level languages that we use now. A practical graphical language would be one built on a higher level that adds a layer to the stack, and one which we can use or skip based on our problem at hand.

Also it is because graphics too easily limit abstractions that most graphical languages are best being domain specific. A WYSIWYG editor is for the web, the form designer in Delphi was for application layouts, and Scratch is for games.

58
sweetPete 1 day ago 0 replies      
The type of visual programming you're suggesting seems to exist in an extreme form as the apps we use to read and write data, like Facebook, Trello, etc. On the other end of the spectrum we have the very technical savvy that want more direct control of what's going on. There's a lot of middle ground that's been covered, from both ends of the stack. I don't think the idea of visualizing things to be more material is flawed, but surely you could overdo it or apply the wrong model at the wrong level of abstraction.

All of our programming is visual.

We rely on a set of visual units of some manageable size (an alphabet of characters), and then we compose them sequentially into strings (visual units of a more general alphabet)

Stringing units together makes sense based on the way we experience a limited bandwidth of signal over time.

While listening, signal is presented one unit of the sequence at a time. When reading, we are presented with a whole page of characters at a time. The surrounding area is displayed, and we can move the focus around at will.

This leads to the development of the visualization models/techniques that we progress from simple features like spaces between words; parentheses/curly braces to group words; indentation of blocks to group/subordinate them, forming trees.

The idea of the unit/object/thing, composed of unit/object/things is thematic.

Files are units of text that are read/written one at a time. Eventually you stop directly typing, and you enter a different level of abstraction, where the units are displayed and manipulated with a different set of controls.

I think this is the point where the flowchart (directed graph) model fits in with the text focused model.

In Sublime, I like having the directory outline view and the zoomed-out scrollbar view with whatever single page of text I'm viewing. I think it'd be cool if these three were integrated, so that I open and close the files in a flowchart in the plane, where edges/arrows represent organization and dependencies. I'd like to import a module by dragging an arrow from one node to another

59
m0ther 1 day ago 0 replies      
Your code, as text, serializes structures that change in all sorts of beautiful ways over time. It's hard to represent that in two dimensions. We can write about it though, in a language the computer can interpret/deserialize.

Building a good visual programming environment I'd imagine would require either having a way to visualize and move around in higher dimensions, or dumbing down and limiting what can be done to fit neatly in two dimensions.

I like Reaktor Blocks a lot, by native instruments. They took the second tactic, and the result is beautiful (but limited). For what you use it for, it works great.

60
awinter-py 1 day ago 0 replies      
tooling tends to suck, input ends up being slower once you know how to do it. (Argument to be made that visual is faster on a tablet with no keyboard. Okay).

You still have to type to name things.

Density of stuff on the screen is lower.

Not sure about readability (you can find readability advantages for any format if you ask the right person). I would bet math expressions with many terms are clearer in a visual format like tex.

Visual elides the connection between functions and files/modules, potentially making it hard to scale projects.

61
gwbas1c 1 day ago 1 reply      
This was an active area of study in the 80s, with many journal publications. The goal was to make programming intuitive.

Then one day someone published an article explaining that we need words to represent variables, doing it visually runs out of abstractions too quickly to do anything useful.

There were no journal publications after.

It's been about 14 years since I last looked at these publications and my memory is foggy. The point is that any useful program is too complicated to represent with pictures.

62
antender 1 day ago 0 replies      
VP isn't a bad idea by itself, but its implementations usually have the same problems:

1. It's hard to make a scheme in editor without spaghettifying it. (Partially mitigated by blocks incapsulating parts of scheme in themself, some discipline is required)

2. Usually VP makes it hard to work with complex data structures. The only solution is to basically write the same code as text losing all VP in the process.

http://hiasm.com/ : Very usable constructor for small programs, the only problem with it is that website is in russian.

63
dirtyaura 1 day ago 0 replies      
Because language and abstraction goes hand in hand. The great leap 50,000 to 100,000 years ago did something to our brains that brought both our use of language and capability of our mind to another level.
64
rubyfan 1 day ago 0 replies      
I don't know much about how other people think but I'm fairly certain that I favor auditory mode. When I write code I generally am in auditory mode and then expressing logic becomes fairly easy with text. Further, I believe abstractions like classes and objects, etc. tend to favor text/auditory expression.

Visual programming to me becomes very scattered and fragmented. Bits and pieces of logic seem to end up all over the place and become hard to keep a cohesive functionality together.

65
jokoon 22 hours ago 0 replies      
Look at this https://scratch.mit.edu/

The idea is similar...

I'm really curious if one could compile this directly into some form of AST...

66
ThomPete 1 day ago 0 replies      
Because it's not optimal for programming. It's however great for scripting.

If you are a good enough programmer you want the power of ex regular expressions and you can solve almost any problem out there.

If you aren't you aren't much better off as you still need to learn how to program.

As a scripting language however it can be great because you can be much more opinionated about what should be prioritized.

What would be much more interesting and useful IMO was if normal languages created a visual environment akin to the visual programming languages we see sometimes.

67
tyingq 1 day ago 0 replies      
Google's app maker talks a good game. Haven't been able to try it yet. Supposedly, you are able to script pretty freely on both the front and back end for situations where the canned functionality isn't suitable.https://developers.google.com/appmaker/
68
tiago_simoes 1 day ago 0 replies      
Here's an article summarizing the major problems (real and perceived) of visual languages https://hackernoon.com/visual-programming-is-unbelievable-he...
69
empath75 1 day ago 0 replies      
We call visual programming that doesn't suck a 'graphical user interface'.

Look at a daw like Logic or Ableton for example -- it's essentially visual programming.

13
Ask HN: Good place to get help on / learn WebAssembly? (beginner level)
14 points by blaze33  1 day ago   4 comments top 3
2
mabynogy 1 day ago 1 reply      
3
blaze33 1 day ago 0 replies      
14
Ask HN: Is it possible to sign up for a Google account without Gmail and phone?
14 points by throw_throw  1 day ago   13 comments top 4
1
smt88 1 day ago 1 reply      
Your phone number is anonymous. In the US, you can go to a store, buy a $40 prepaid phone with cash, and use Google anonymously.
2
whyagaindavid 1 day ago 0 replies      
Why are u so worried?1. Sim card location?Google can get an approximate location from your IP, WiFi like Starbucks.2. If u are so paranoid you need a different service!

Buy a sim card activate; enable 2FA with authenticator. Destroy sim. I am not sure google can ASK operator for name and SSN.

3
bsvalley 1 day ago 1 reply      
:) Leave the phone number field empty and click "Next Step". It's an optional field, they just trick people to collect phone numbers.
4
grawlinson 1 day ago 1 reply      
Ironically, google have stopped enabling me to create gmail accounts because my phone number has been used too many times for activation.

Doesn't matter anymore, I self-host as much as I can anyway.

15
Ask HN: Favorite frameworks for web development?
8 points by king_kerr  20 hours ago   18 comments top 9
1
rwieruch 12 hours ago 0 replies      
Since I am developing on a daily basis with React, it is obviously my favorite choice. It is not a framework, but a view layer library. However, by only using the view layer you can already build frontend applications.

The ecosystem around React is huge. But you don't have to use anything to build an application with React. [0] For instance, most people try too early to use a state management library. But you don't have to use it from the start [1], because React comes with its own internal state management. It makes sense to learn the React fundamentals first and build your own application with it [2] before you dive deeper into the ecosystem [3].

- [0] https://www.robinwieruch.de/reasons-why-i-moved-from-angular...

- [1] https://medium.com/@dan_abramov/you-might-not-need-redux-be4...

- [2] https://www.robinwieruch.de/the-road-to-learn-react/

- [3] https://github.com/markerikson/react-redux-links

2
carlmungz 6 hours ago 1 reply      
Mithril (https://mithril.js.org) is my choice. It's React-like but very simple (10 minutes to learn about components, routing and XHR) and has a smaller footprint.
3
haidrali 11 hours ago 0 replies      
I think Rails is complete web framework, you don't need front end framework if you are using turbolink also with introduction of action cable you don't need 3rd party libraries for streaming features i.e. notifications, chats, etc. For me the biggest plus of working in rails is its community huge and powerful.

I have worked in Django (6 months) as well but not as much as I have worked in rails (3 years)

Thanks

4
dirktheman 10 hours ago 0 replies      
I like working with Laravel. It takes a more Rails-like approach to PHP and I think it's a good step forward in advancing the proper use of PHP. An added bonus is that it's much easier finding people who know PHP than it is finding Ruby-people, at least here in The Netherlands.
5
trcollinson 19 hours ago 2 replies      
I personally still love Rails. Especially with Rails 5.1 I find it has what I need. I haven't had any of the scaling and performance issues some people mention in other threads. It's a fantastic environment for a developer.
6
EnderMB 6 hours ago 0 replies      
It's an unpopular one in most circles, but I'm still a huge fan of ASP.NET MVC. C# is a fantastic language, and the .NET framework allows me to do nearly everything I wish to do.

I also quite like Django, but I am tempted to pick up Flask at some point and use it in anger, as I've only toyed with it in the past.

7
odonnellryan 8 hours ago 0 replies      
I work with Flask and Django mostly, and help with a bunch of PHP frameworks. I like Flask for most projects.

Django has cool libraries like django-rest-framework but, after reading the source, I just get a better feeling from Flask.

I haven't hit many bugs in either, so from an in-practice perspective both should be fine.

8
Slaul 17 hours ago 2 replies      
I'm working through a vue.js course on udemy and I'm really enjoying it so far. I've worked with Django, flask, and spring boot in the past. I can't say for sure yet if Vue is my favorite, but I have good feelings about it.
9
sharmi 14 hours ago 1 reply      
Django, because it does the job very well, has plenty of libraries/plugins to do what I would need, I could reuse all the scaffolding knowledge from using django in previous projects and focus on what's important. It is fast enough for my usecases.

For others, it could be rails, phoenix, flask etc. In case of a shippable product, time to market is very important, both to validate your product and boost your own morale and confidence.

16
Ask HN: OS X (local) Time Tracker
8 points by urdnfast  1 day ago   8 comments top 5
1
ianox 8 hours ago 0 replies      
Ultimate Time Tracker is pretty good: https://github.com/larose/utt

I like the way you add a task after you've finished working on it. It then works out how long you spent on it based on the time you finished the previous task / start of your day.

2
hboon 1 day ago 0 replies      
I keep a text file open in my text editor and set up a macro to expand `tt` to the current time, so I end up with entries like:

 02:52 AM - 03:24 AM Plan 03:25 AM - 03:37 AM ProjectX 04:16 AM - 05:17 AM ProjectX P
At the start of a day, I rename the file to the day's date, eg. 20170605.md and archive it. I can write scripts to figure out things like how much time I have spent on a project over the month, years, etc. Also things like how much time was productive (the trailing P).

3
mozillas 1 day ago 0 replies      
Billings 3 has a time tracking feature, but I don't believe it's supported anymore and they don't sell new licences.

A million years ago I used this https://github.com/rburgst/time-tracker-mac. But it hasn't really been updated in long time https://code.google.com/archive/p/time-tracker-mac/downloads.

I haven't tried this one, but Tyme looks promising http://tyme-app.com/mac-2/. It seems it's a standalone app and has a 15 day trial, so you can test it out for a while. It's also only $18, so it's quite affordable.

4
ivm 18 hours ago 1 reply      
Try ours maybe: https://qotoqot.com/qbserve/

It works completely offline and tracks project time automatically.

5
bartvk 1 day ago 1 reply      
Couldn't you just use Excel or Open Office?
17
Ask HN: Django vs Flask
13 points by rochak  1 day ago   8 comments top 5
1
sharmi 2 hours ago 0 replies      
Also, if you are interested in implementing a simplr webserver by yourself, check aosa book chapter http://aosabook.org/en/500L/a-simple-web-server.html
2
sharmi 23 hours ago 2 replies      
I agree with what git-pull has commented.

In addition to that, addressing your question:

* There is value in reusing the tool that you have already used, whether django or flask, because you have accumulated knowledge for doing the common stuff that you can carry from one project to the other trivially, and spend the bulk of your time and what really matters for that project.

* IMO, Flask is most suitable for educating oneself on how a web app is structured and what it's crucial features are. With Django, I can only focus on the aspects of the project that matter, and all other bases like security, scalability etc are covered by the django codebase, atleast as long as one follows the best practices.

Also, only override existing django parts, if you need to, not because you can. The obligatory anecdote: For one of my projects, I decided Jinja2 was much better than django Templates and switched to Jinja2. And true, the Jinja2's syntax was more versatile than Django Template's. Unfortunately, it took me sometime to realize that by doing the switch, I also lost the ability to use hundreds of plugins for django-template because either they do not interact with Jinja2, or they do so poorly. For a later project, I stuck to django-templates and with a little diligence, I could make it do all that Jinja2 could do too (atleast those features that I found desirable in Jinja2). Never, never, never add unnecessary complication to a project that needs to be shipped.

3
bjourne 1 day ago 0 replies      
I've used both extensively. In my opinion Flask is more suitable if you want everything to be exactly how you want it to be. A Django project won't ever be as clean and minimal as a Flask project. However, if your focus is on getting shit done and delivering stuff then Django is much better. Especially django-admin is a very practical tool.

Caveat emptor: It was about three years since I used the frameworks last and much can have changed in that time.

4
borplk 1 day ago 0 replies      
It's just a micro-framework so it's useful if you often use Django but end up replacing all sorts of bits and pieces of it anyway. In a case like that you can be better off just using Flask.
5
git-pull 1 day ago 1 reply      
I gave a pretty detailed response here: https://news.ycombinator.com/item?id=14026051

- Django may be "batteries included", but definitely not monolithic. It's your choice how you want to implement views. Nothing's tying you down to using a DetailView, but by conforming to them, you make your code more readable and consistent.

You can also pick your own template system, like Jinja2, but django templates are still fast, intuitive, and powerful. You don't have to pull in every contrib module and CBV. You don't have to use django.forms, but they save a lot of time with form validation. You don't have to use ModelForm (ORM-backed forms), but it gives you the ability to get database-backed form behavior with little work. They're also designed to be customizable for specialized scenarios.

Django is designed from the ground up to let you override and expand. django.forms build upon the "field" API (https://docs.djangoproject.com/en/1.11/ref/forms/fields/), which represents the data sent back and forth. And widgets, the HTML representation (https://docs.djangoproject.com/en/1.11/ref/forms/widgets/). You can use django, and build your own fields and widgets to use with forms.

You don't have to load every template tag and filter library. It's configurable on a per-template (per-file) basis. You don't have to use the auth system, but if you do, you can still use a custom User model and backend (https://docs.djangoproject.com/en/1.11/topics/auth/customizi...).

But you're going to have to conform to some sensible conventions (such as a settings modules, urls.py, request contexts). In most situations, you'll pull in stuff from django.contrib, like django.contrib.auth, and occasionally you'll write your own custom replacements.

And you'll end up using the ORM.

- While it's not SQLAlchemy, Django's ORM is capable. It may not have as many bells and whistles, but Django ORM is not "weaker" in any sense. It's been used in production for 10+ years and works across SQL dialects. In a pinch, one-off custom queries have.raw(), and I could still run those safely thanks to params (https://docs.djangoproject.com/en/1.11/topics/db/sql/#passin...). Also, the migration system is nice.

- While development settings can be slow when you're using asset managers (like django-compressor), Django can scale. Of course if you're rebuilding SASS every refresh and not using cache, you're going to have 500ms to 1 second page loads that can be cringey if you're hauling in bootstrap. But in practice, you're going to be compressing those files in production and using caching settings.

- Testing can be fast. My favorite tool is RequestFactory (https://docs.djangoproject.com/en/1.11/topics/testing/advanc...). I could run about 100+ tests in about 300ms. So every time I saved, I checked the permissions/integrity of all my views, including ones which used the ORM.

18
Ask HN: Why shouldn't I leave Google?
87 points by afraid  2 days ago   119 comments top 57
1
throwaway-1209 2 days ago 1 reply      
From someone who's been there done that: former Googler, now running engineering at a startup. It doesn't get any easier to come up with a startup idea once you leave mothership. I know it seems counterintuitive, since once you leave you have nothing else to do but come up with ideas, but you could find that after 6-9 months you still don't have anything you really believe in. That's what happened to me circa 2008. In the end I just joined Google back then. So your mentor seems to be right, even though what he's suggesting is not 100% ethical: if you read your contract you'll see that all of your software related ideas are property of Google. But they can't read your mind (yet) so there's no way for them to enforce this, unless you tell them about it or do something stupid, like using company laptop (or Borg, or Google3 code) to work on it.
2
FreeKill 2 days ago 0 replies      
I always like to think of these things from the worst likely scenario. What's the worst likely scenario that could happen from quitting to pursue your own ideas and travel? You take the 2 years, try out several startup ideas, none of which ultimately pan out, and you blow through your savings, forcing you to come back and look for a job that may be worse than your current one. Meanwhile, during those 2 years you got to travel, meet new people, experiment with new technologies you otherwise wouldn't have had a chance to in a corporate setting, and you took a shot at building something that can sustain you continuing in this lifestyle longer term. Even if they don't work out, they were likely stimulating and challenging ideas directly of interest to you.

When you think of it that way, what is there to be afraid of? At the end of the 2 years, you'll still be young with an improved tech skill set and in a great position to find solid employment when returning home. Maybe you don't end up working at Google anymore, but there are plenty of other opportunities out there. Don't be afraid, go for it...

3
kcdev 2 days ago 2 replies      
I can't imagine you'll enjoy working elsewhere if you're not happy at Google. If you're an entrepreneur at heart, you'll likely not feel fulfilled until you're working on your own product. I'd say stick around Google (at least for the paycheck) as your mentor suggested until you have an execution plan. Also, if you decide to find another employer in the future, it will be more difficult to explain that you quit because you felt "unfulfilled" (that would scare me if I were considering hiring you); but if you quit to start your own company, that's a commendable act.
4
wellpast 2 days ago 2 replies      
If you have a good relationship with your employer you should be able to say "Hey I want to try something else for a while, but if things don't work out, I'd love to keep the doors open on both sides."

I've done this before with a few jobs, one of which I went back to after I left and the other thing I was pursuing didn't pan out. In the time I was gone I learned a tremendous amount about myself and what's possible. If you can something like this set this up, it's only a win-win.

A few reasons to not try something like this: (A) - you're worried you'll set back any career path you were on track for at google(B) - you're worried they won't take you back

Have no comment on (A) b/c for me I'm more interested in personal growth than specific career track at a specific company.

If (B) holds, why wouldn't they take you back? Top engineers are hard to come by. If you can't make a convincing case that you're in that top category of engineer, then what has working for Google earned you these past few years? (Other than $..)

5
joejerryronnie 2 days ago 0 replies      
You're 26 years old with a high demand skill set, enough money to last a couple of years, and presumably no kids to consider - there will not be an easier time in your life to make this move. Certainly perform your due diligence at Google to make sure you're leaving on good terms with, ideally, the opportunity to come back at some point. But start planning your future now. Traveling the world for a few months will open your eyes to new project/company opportunities you will never even be exposed to sitting in Mountain View. If you're gonna be on the road longer than a few months, plan to pickup an open source side project to keep your skills sharp, build your network, and create a "balanced center" that you can return to no matter how foreign your surroundings.

Ah, to be young again with the world laid out at your feet! Not gonna lie, I'm a little jealous :) I wish you the best of luck and guarantee that, no matter what ultimately comes of it, you will never regret chasing your dream at least once in your life.

6
reffaelwallen 2 days ago 0 replies      
Leave Google, and travel wherever you want.

It will be harder later in life assuming you plan on being in a serious relationship and/or have children.When you are done, and realize that you have an idea- open a business. if you realize you don't have an idea, join a different place of work.

After traveling, you might not even want to do SWEing anymore, who know. you might want to go into permaculture! or a open a parking garage in Tokyo after meeting a nice person over there.

If you were 32 I would have a different opinion.

With all the crisis with millennias having to find meaning, not having a steady job and not saving for the future.I write these words and think "is my suggestion helpful?". in general, I hope saying to someone "go search where you think you will find yourself" is the healthiest thing. regret is a bitch later.

Here is a bonus new word to learn "Onism" it was coined by youtube channel called "Dictionary of Obscure Sorrows". you should take a look at it, it has a good sense if explaining how I feel about your question: https://www.youtube.com/watch?v=IrBlmpqh8T0

Good luck! being 26 will look a more naive time later in life, but don't only take my advice. i'm only 28.

7
jalayir 2 days ago 3 replies      
> My mentor suggested to stay at Google until I find an interesting startup idea to work on.

This is a sound piece of advice.

However, it looks like you're very keen on traveling. Maybe you can take a 3-month unpaid sabbatical from Google, and see what it feels like?

8
yongjik 2 days ago 0 replies      
"Leaving Google because feeling unfulfilled" is one thing. "Starting one's own company" is another. "Spending 6 months in SE Asia" is yet another. They don't necessarily work together toward a common goal: you have to decide what is the most important to you.

If you decide to leave Google because you don't like it, then obviously that's up to you, but if you truly want to start your own company, you have a much better chance of coming up with a good idea (and skills/networks to make it happen) if you work at Google than if you're traveling the world. Honestly I'm not sure how the travel and doing startup is even related.

That said, you're young and if you're good you can always get back to Google (or another similar company). So there's no big harm in trying something different and seeing if it works.

9
king_kerr 5 hours ago 0 replies      
You're 26 with a skill-set that's in demand and you've worked for a company that will give you some clout moving forward. So you should be fine in that regard. If you're truly passionate about starting your own business, that'll win out in the long run. Don't pressure yourself into making a decision prematurely. Take your time. Maybe write down all the pros and cons for both staying and leaving. At the end of the day, making a well-informed decision is what I'd like to see anyone do in this situation. Living with regrets can be tough and you owe it to yourself to pursue your dreams.
10
openmosix 1 day ago 0 replies      
As someone who has done this a few times (worked for large enterprise / found a problem worth to solve / started a company solving that problem / being acquired by other enterprise that wanted our solution exclusively): don't look for "ideas", but explore "problems". Working in an enterprise is great, because you are exposed - every day - to things that do not work in enterprise. For each problem you meet, ask yourself "would someone pay enough $$$ to get this problem solved once and for all?". If the answer is yes (and the problem is inspiring enough for you to dedicate 5+ years on that) the next phase is: what the distribution channel for a solution would be? Is the market too fragmented? How I would reach out to customers? What would be the cost to attract/retain customers? If you figure it out (and it seems a problem/distribution channel that works) - the next step is to think about a generic solution. Now you can test the "let's try to attract customers, for this problem, on my prototype/landing page". If the cycle starts to work, now it's time to figure out whether you want to quit and build the company/product/solution for real. The good of this process is that is 100% compatible with whatever NDA/NC/IP you might have signed, because you haven't written any lines of code up to this point. And when you leave, you have a solid framework of what you'll be doing next.
11
ksikka 2 days ago 0 replies      
It sounds like you're bored, and you don't have a very good reason to start a company. Starting a company is hard.

A less drastic move is to find a job you'll actually like. They exist.

12
googler123345 2 days ago 0 replies      
I am in a very similar situation.

I work at Google and am happy with the team and the product I'm on. The pay is good and my manager has been very supportive, they treat me very well, etc. but I'm just very unhappy in my life and considering moving.

I have only been at Google a short time (less than 6 months) but I'm contemplating switching to another office or just outright quitting and moving to a cheaper city for a bit.

It's hard to turn down the money. I feel like that's what's keeping me there, especially with the 1 year cliff for my first batch of equity. I'm afraid one year will roll around and I'll still be unhappy but then it will be even harder to turn down the money.

13
jdonaldson 2 days ago 0 replies      
Starting a company is really going to define you as a person. It forces a lot of hard decisions on you that get baked into your personality. The ups and downs are either euphoric and horrific. If things go poorly you will deal with self doubt and heartbreak on a very deep level. Even if things go well you may end up developing negative personality traits (hubris, callousness, aggression) that lead to loneliness.

My recommendation is to find a project idea that compels you, and at least one other bright and capable person that will help ground you. Most successful companies I've seen have started this way.

14
animex 2 days ago 3 replies      
My question is: Have you stopped learning/growing at Google? Staying at Google is probably the safe path. But you're stuck at the Mothership; And as guilded the cage is, it's still a cage. I left my company and now enjoy my days visiting friends, family, biking, dog-walking etc. and work at nights (on the nights I want). My capacity to learn has increased 10-fold now that I'm not slogged down in a 9to5 job (I should add, I'm "old", 46). I've started 3 businesses that are in different stages, one already paying my monthly bills after just 2 months! All I can say is "FREEEEEEEEEDOM!" :-) That being said, Google pays amazing and you'll amass a good fortune that can give you guaranteed freedom if you keep your expenses low and save /invest properly for 8+ years. So the question is: Are you a gambling man? :-)
15
seibelj 2 days ago 0 replies      
I know some googlers who described the engineering culture as hiring the brightest people to work on the dullest stuff. It's a giant company and lots of people do amazing things. But not everyone there is having a blast working on the cutting edge stuff. Someone has to maintain the google web toolkit gmail codebase.
16
minimaxir 2 days ago 0 replies      
I recently left Apple without a job lined up after years of debating whether or not it would be a good idea. (full story: http://minimaxir.com/2017/05/leaving-apple/)

The reason you're likely afraid is that despite having some safety with savings, the future is still uncertain, no matter how much you can prepare, and even with the credibility from working at a Big 4 tech company, that doesn't mean you'll automatically succeed in future endeavors. (see also prospect theory: https://en.wikipedia.org/wiki/Prospect_theory)

17
eleumik 2 days ago 0 replies      
Two years is too little experience for starting something. At google or any company that invest on formation, you can still learn a lot with relatively low stress. Once you start something you wont' have much time to study and you will pay for it (at least unpaid time). I had same ideas in my late 20's but if I look now at the projects they would have been disasters ;-) I waited a little bit.

With google in c.v. you will have door open everywhere. To start something you maybe also need to give a look to how work some other (maybe smaller) companies, maybe get hired, stay some months, observe, may be leave. This is what happened to me before starting to be on my own, but those were the crazy dot com bubble years (1999).

Freedom is nice but needs a lot of work.

18
yingw787 2 days ago 0 replies      
Never worked at Google, but do you think you could take a sabbatical or long vacation to travel and think? I think the risk profile would be lower since if you do come up with something solid, you could leave, and if you don't, you'd still have a job. Maybe consider doing a side hustle as well? Or part timing or working remote to get away from it all.

You shouldn't leave google because of all the smart people you have around, which isn't the same in a startup world, and because there are multiple projects and divisions and companies you could jump to in order to learn about different things. You should do a startup if you have an itch and an idea that makes money and you like doing.

19
uiri 2 days ago 0 replies      
Go travel in SE Asia for 6 months. If that's what you want to do, then you should go do it. The problem with travel is either having the money but not enough time, or having the time but not enough money. You have both so you should seize the opportunity.

When you return, either you'll have an idea for a startup or you'll look for a new job. It is easy to explain a six month gap with travelling, especially with the stories to back it up.

Maybe see if you can take a sabbatical or leave of absence like others in the thread are suggesting. I'm hoping that your mentor is neither your manager nor on your team since otherwise you've already played your hand.

20
matt_wulfeck 1 day ago 0 replies      
If you have dreams to travel, just do it. Spend a year backpacking and you will not regret it. Try and stay in an area for a month or longer. The experience will change you in positive ways and leave you will very memorable experiences you'll often think back on.

It's simply harder to travel when you're older, and you'll have many more obstacles to long trips.

If I may, I also really hope you make the trip without internet access.

21
sandipagr 14 hours ago 0 replies      
I cannot recommend traveling highly enough. I was in a similar spot as you and left Google last year in February to travel. The plan was to travel for 6 months but I ended up doing it for 11 months.

After returning back in January this year, I joined a super early stage startup and couldn't be more happier.

You are in a great position. Do what you really want to do and don't let fear hold you back. Life is too short to spend time on things you don't really enjoy. Feel free to reach out (email in profile) if you want to chat more.

22
justboxing 1 day ago 0 replies      
> My mentor suggested to stay at Google until I find an interesting startup idea to work on.

and

>I want to spend 6 months in SE Asia and travel the world before starting my company.

You may spend months trying to "find an interesting startup idea" to work on here and come up empty, whereas if you take off and spend even 1 month in SE Asia and the developing world, you might discover tons of startup ideas that are really worth solving for the 3rd world.

I know of several Indian-Americans who traveled in India for a few months, and built cost-effective phones that work on very low bandwidth, apps that help buy stuff in an almost all-cash economy.

A low-risk option would be to take a month off from Google (vacation) plan your trip in advance, visit just 1 single SE Asian country (Vietnam, India, Thailand whatever you fancy) and see what happens.

These countries also have coworking spaces with Hi speed internet, so you could in theory, take action on a startup idea, and build an MVP in a month's time (or even less) and drop it on the internets and see what happens.

23
callmeed 2 days ago 0 replies      
Any moderately successful startup/project idea I've had (I've had a few) came from frustrations/experiences at existing jobs or freelance projects. Same goes for other startups I've worked at (I've been at a few).

So unless you've already got a few things in mind from working at google or dealing with your side projects/passions, I wouldn't leave. You're probably _less likely_ to find a good idea by traveling and being in SE Asia. You're simply less exposed to the kind of problems that breed good startups and too far away from (potential) customers.

I don't know google's specific policy regarding side projects, but if you're in California you do have some rights (so long as you use your own time/computer and aren't competing).

My advice would be to (a) stay at Google, (b) start brainstorming ideas based on your current experience/passions/frustrations, (c) consider finding a co-founder, (d) build an mvp and find 1 customer, (e) quit and work from Asian once you get closer to product-market fit.

24
nathantotten 2 days ago 0 replies      
Another option, why not find a startup that you can join remotely while traveling? Unless you really want to not work for 6 months, working during the week and exploring on the weekend while living anywhere might be a nice balance. You'll get experience that will help when you find what you want to do on your own. From a life standpoint traveling for some time is a great experience. From a career standpoint, having a 6 month gap in your resume at such a young age could be an issue. I hire a lot of engineers and to be honest if I saw somebody that worked at google for 2 years and then took 6 months off to travel I would really worry about their commitment. 2 years is about the absolute minimum you should stay at one company. Moving any more often tells me, as a hiring manager, that I risk taking a bet on you, training you, and then having you leave right when you actually start adding value. Obviously, this assumes you need to get another job if your startup doesn't work, but that is unfortunately the most likely outcome.
25
falsedan 2 days ago 1 reply      
Re: starting your own company

Is there a problem which you see that no one is addressing? Please put aside software problems when considering this, since a start-up solving those sorts of problems is most likely to be acquired by a place like Google in 4-5 years, putting you in the same situation as you are now (perhaps with more money than if you stayed).

Have you worked at a small company? Are you excited to learn the skill necessary for running the day-to-day operations of a business?

Is there some subject that's always on your mind?

Do you have an idea who you want to help with your startup? Do you know anyone who matches your intended market? Can you think of a role or position that you could perform where you would meet more of your intended market (before starting your intended startup)?

Who in your professional network could you reach out to invite to work with you?

What's your goal? How much money? What will you do with your free time once you achieve it?

26
marcell 2 days ago 0 replies      
I left Google to work on a couple different start ups that did not work out. It's not terrible but you miss out on the salary you would have earned had you stayed at Google.

If you want to travel and start a start up then do that. Google has a nice re-hire policy if you leave on good terms and have good perf reviews.

27
vibrant 2 days ago 1 reply      
I think you should leave tomorrow.

I'm 36, started in tech 20 years ago. And the only things I regret was working for someone too long, focusing on the wrong startups for too long (and yes, you can tell which ones are the bad ideas - mainly if they're too big and not focused).

The main driver of building your own stuff is necessity, pressure. And the main fuel is time to strategise and think. So by quitting your job you basically have all the needed tools.

And then you just need to get involved with things to find the right idea - talk to people, do things, try this, try that, until you find something that works and validate it. Watch different industries, see where tech could reinvent things. Take your time until you find something worthwhile, make sure it can be profitable in a short amount of time. And consult with people who've done it.

28
shortoncash 1 day ago 0 replies      
I'm of the opinion that traveling the world isn't what it's cracked up to be. I traveled a bit, and outside of those brief fleeting moments where I witness something as breathtaking as the Great Wall of China, most of it was the same monotony as working on an exciting software project. That is, the traveling equivalent of mostly fixing bug tickets until the software equivalent of the Great Wall comes along.

These days I just watch other people on YouTube travel to exotic places and condense most of their lives down to the 4 minutes that's exciting.

So, in essence, there's a non-zero chance that traveling the world will not be much better than being at Google. On the flip side, if you do start the beginning of your startup idea in SE Asia, you'll have the benefit of a long runway since the cost of living is very low. But, if you're working on your idea there, it wouldn't be "traveling."

Just remember, the grass is always greener on the other side.

29
pm24601 2 days ago 0 replies      
Do you know how to:

* manage people?

* raise money?

* deliver/project manage?

* be a product manager?

Do you have:

* a set of friends who have a diverse set of non-SWE skills that are willing to join you?

* Determination to make shit happen?

* the ability to give up vacations and weekends for your startup?

Running a startup sounds romantic, but the reality is considerable less so.

30
zck 2 days ago 0 replies      
Of course leaving a well-paid job for your dreams is scary -- you don't have a plan! That's not a criticism, that's just how it works. If you were comparing two plans, you could more easily decide what's better. But right now you're comparing "stay with what I know" with "maybe my dreams will come true or maybe I'll die a failure in two weeks".

My advice? Go talk to a therapist (not a mentor, but an actual psychologist) about what you want to do. That person can help you figure out what you're afraid of, and how you can deal with it.

31
brookside 2 days ago 0 replies      
Assuming you have a great Google salary, I would live frugally and have enough money to be financially independent / retire in 5 years.

Then travel or work on whatever you please for the entire rest of your life!

32
goog_throwaway 1 day ago 0 replies      
I left Google as well.

Not many workplaces will match Google in terms of overall lifestyle, but there are companies that come close. And others can beat it in terms of pay (Google's base pay, for example, sucks).

I'd recommend leaving. The company is becoming more boring to work at all around. I've heard this from many friends. More enterprise focused, short-term money driven and less willing to innovate, mostly monetizing internal technologies or playing catch-up to other companies. It's a good time to try something else.

33
bsvalley 1 day ago 0 replies      
Think of it this way, would you jump in a luxurious train that can only travel through 10 cities max? Or would you jump in a dirty, cheap and slow train that can go on forever and potentially reach your final destination? Right now you're seating in the 1st class in a local train. You're at the top of the mini-chain. That's what we call the "standard" world. You're dreaming about the "exciting" world, the top %1. When you make the switch you have to jump off the comfy train and you end-up losing your spot. It took you a while to get there. Plus, you'll have to find a spot within that dirty train. Life's tough heh?

People don't like to take risks because they're afraid of making a step backwards. That's where you're are now. The competition starts at an early age, school, college, you want to have the best grades, then your first internship you want to land the best gig in the best company. When you apply you want to work in the best team. But it's really contained within the standard world right? Who defines your goals and your paychecks? People from the "exciting" world. Not you. You can't reach the top %1 because you work for them. You make them what they are. Do it for yourself, be selfish.

You're already going in the right direction, the problem is, you're in the wrong train. Jump off while you're young you'll run fast enough to hop on the dirty train. The journey is long but one day you'll wake up at your final destination. We'll all die one day. You have nothing to lose my friend but a seat in 1st class.

34
iSloth 1 day ago 0 replies      
There is a lot of unknowns - At the moment you're working somewhere which is easily considered one of the best places in the world to work, maybe you feel different, but the global perception and aurora will likely still influence you in some way.

Not only are you considering leaving this, but it would be to stat up a new any untested company which you are ultimately responsible for.

I'm not saying your job at Google is 'easy', however it's clearly going to be an easier and more comfortable paycheck.

Following what others have said, you should probably come up with your startup idea, and try validate with some kind of MVP before taking the plunge and leaving.

35
cbanek 2 days ago 0 replies      
It's not just fear. It's fear of the unknown. You admit this is your 1st ever job, so it can be hard to calibrate expectations from employment. It's not all great though, and even at a great company, you just might be in the wrong place or working on the wrong product.

I think personal fulfillment is key to good development as a person. You say you're unfulfilled. Why? Can you make a list? Where do you think things might be different?

I'd also encourage you just to look for a job, and maybe take some interviews (perhaps at startups you think are in an interesting field). This might give you some more perspective, and either let you realize that you want to do something else - or let you recognize how good you have it, and that you shouldn't be taking it for granted. Also, recognize the difference between the perception of starting your own business vs actually doing it. It's a lot of work. It can be great, but it is certainly easier to jump on a small company that is doing something you think is interesting.

You don't know what you've got till it's gone. But you will have many jobs in your life, so I'd just suggest you not get too hung up on any one particular job, and view it more as a long journey of exploration.

36
lobotryas 2 days ago 0 replies      
Do you have the option to take an unpaid leave of absence for 1-2 months? This way you can travel and sort yourself out without jeopardizing your job.

But hey, you're young so go ahead and be reckless! Leave your job, blow your savings, come back to the States and see how quickly you are able to find a new job of the same caliber. You're in a very advantageous position and a reality check like that should put things into sharper relief for you.

37
x0ner 2 days ago 0 replies      
I wouldn't quit without a firm idea of what you want to start; leaving your current role without an idea is likely to leave you more bored and questioning your decision. Having sold a company and worked at Facebook (not Google, but a great place), I'd suggest a long travel where you disconnect and think about what you want. As others have mentioned, you're young (29 here) and have plenty of time to work it out.
38
awinder 2 days ago 0 replies      
What's your vacation schedule been like so far? Just curious if you're recently recharged or in need of one.
39
pizzadonut 2 days ago 0 replies      
Worked for small software company for 4 years. wasn't interesting work but company was in Hawaii, so could surf every day. Travelled 8 months in SE Asia. Stayed home a while and 3 months in central American. I had some of the best times of my life. Not only fun, the culture is so different and amazing. Opens your mind in so many ways. The freedom of doing what you feel like without worrying of having to be at a job in a few weeks or months is priceless. 2 years after leaving my job, needing to find a job I feel like a have a huge gap in my CV. But it was totally worth it for me, maybe I didn't have prestigious job like yours but if you have worked for Google, you won't have any problem finding work if they don't want you back.
40
chrismcb 1 day ago 0 replies      
My suggestion. Forget the startup for the moment (unless you already have an idea) plan a 6 month trip to Asia. Take some time planning it, figure out the best time to go. Then quit shortly before you go. When you get back take some more time off, work on your own project, or some open source. Our maybe you came up with an idea. Then go back to Google, or somewhere else.The thing is you are young enough to stop also be able to get a job. And who knows, maybe you will find a better one.
41
zillionize 2 days ago 0 replies      
Startup life is really hard - you will have to answer questions much harder than this every day if you do a startup. Therefore, based on my own first hand experience and observation on more than 100 startups I funded, only passion, determination and persistence can make your startup a success.

From this point of view, all the questions can come back to the root question - are you really passionate, determined and persistent by nature? If no working at Google or any other giant companies is way better than doing your own startup; Otherwise, you shouldn't come to Hacker News to ask this question but you have already quit Google because working at Google for one more day is just a waste of your time one more day.

42
siliconc0w 2 days ago 0 replies      
Just noting that starting a company is a huge amount of often unrewarding work and unless you have a business co-founder you're going to be doing a lot of non-SWE work which you may find frustrating. Even with a business co-founder you're likely going to be wearing a lot of non-SWE hats. It's definitely gotten easier to start a company, with all sorts of tools and services to make it easier but that is a relative term. It's still long days, constant sales (selling the idea to yourself, VCs, potential employees, etc), and dark nights wondering why you're bothering. It definitely takes some hubris engineers don't always seem to have (which isn't a bad thing).
43
johan_larson 2 days ago 0 replies      
Google is a good place to work, but it is not the only good place to work, and in some cases it is not even the best place to work. If you have what it takes to get in at Google, there are any number of places you could work, so you wouldn't be giving up a lot if you stepped down for whatever purpose, whether travel or entrepreneurship.

You are very young with, I'm guessing, no large responsibilities outside your job. You also have a bit of money. That means you are now free as you will probably never be again to do what you want. Take this chance to do so if you feel at all inclined.

The job at Google is in the end just a glorified joe-job, and it or something very much like it will still be there if you ever want back.

44
swimorsinka 2 days ago 1 reply      
Yikes, you're giving me dj vu. I did exactly what you're thinking of doing when I turned 25. Google was my first job out of school, and I worked there for 3 years. I also had a mentor at the time who was encouraging me to stick around.

I went off and did my own startup for 2.5 years, and then wound up crawling back to corporate America.

I believed in 'following my passion' when I left, and I definitely wasn't finding that at Google. After all, my last project there was building automated tools to serve legal requests for Google+ - not exactly what you have in mind when you join.

A couple of things I wish I had known when I left:

- Following your passion is bunk. Most people don't understand themselves well enough to know what they're passionate about. There are always going to be parts of jobs that you don't like, even when you're working on your own stuff. I actually found the percentage of dislike to increase when I was doing my own stuff - I had to do sales and marketing for my own company. I never had to worry about that at Google.

- A lot of people try to find some larger meaning for what they're working on. I always wanted to work on 'something really important', and I wasn't finding that at Google. Problem is there just aren't that many 'really important' things. Even if you work on phenomenally successful products like the iphone, you could argue that product did not make the world much better in any meaningful way. What's worse, 80% of software developers spend their careers making glorified CRUD apps, or worse.

But this problem goes away if you just drop your need for doing something important. Nowadays, I don't care about the larger meaning of what I'm doing. I don't get hung up on that mental argument. I just take immense pleasure in the craft of producing software. Writing code is wonderful - you get to solve puzzles all day and learn new things. If that code changes the world, then great, but I don't 'need' it anymore.

- Pay - quitting Google cost me 1/2 a million dollars. I didn't make squat in my startup over the next 2.5 years. When I went looking for a job (I'm in Colorado), I realized that Google pays in the 90th percentile, and it was hard to find companies who would match my former salary.

So in retrospect, I probably would have stayed and just worked on side projects to satisfy my curiosity while I continued to make bank at my day job.

There are many, many wonderful things about Google - the people are all super smart and competent, the internal systems rock, HR 'just works', things like expense reports aren't a pain in the ass, and you can go off and explore awesome internal technologies.

Yes, you might spend some time working on 'boring' stuff, but that's going to be true at any job.

Anyway, that's just me, and I have a ton of perspective. I never would have found that perspective if I hadn't quit, so everyone has to follow their own journey.

Good luck.

45
mythrwy 1 day ago 1 reply      
From an old guy.Stay just a little a bit longer. Another year or maybe two. Don't stay 10.

Stack up a little more cash, get a better plan.

Don't go away from something. Go towards something.

46
ptero 2 days ago 0 replies      
Fear of regrets is not a good justification for avoiding a change, especially when you are young and healthy. That said, it seems you fo not have a well understood goal and just want to run from Google. If so, I'd flesh out where you want to go next and the way to get there before you make the jump.

Once you do I think you will feel a lot less worried -- your cash cushion is pretty hefty to allow for quite a bit of risk

47
tejasmanohar 1 day ago 0 replies      
It seems like most everyone here agrees that you're not more likely to think of a idea after you leave Google to travel. What about to go back to school?
48
galfarragem 2 days ago 1 reply      
Change careers like tarzan:

https://sivers.org/tarzan

49
BilalBudhani 2 days ago 1 reply      
> My mentor suggested to stay at Google until I find an interesting startup idea to work on.

IMO the odds of this happening is very slim compared to you going out on your own. When you travel around you get to experience a lot of problems first hand and then solutions to those problems come naturally to you.

50
Bookington 1 day ago 0 replies      
I'm a manager of PMs at Amazon. Also 26 and also trying to quit and travel SE asia for 3-6 months. Email me if you'd want to talk: jstoneproductions@gmail.com. It's scary for sure.
51
timwaagh 1 day ago 0 replies      
yes, google is too good a salary to leave. for most people. or at least that's what i understand. I consider it unlikely your startup would succeed as like 9/10 do not. being at google is prestige and money. so if you want the most prestige or money, i recommend staying.

but money as they say is not everything. the amount you saved up counts for more the further away you get from the place you are now. perhaps there are places you could happily live out the rest of your life with the money you have now. so in that case and it sounds like you want this, yeah go have some fun :)

52
michaelw 2 days ago 0 replies      
Let's count all the reasons not to leave:

1) If you don't have an amazing idea now, leaving won't make it easier. If anything it will be worse since you won't be constantly exposed to real-life problems.

2) Building great product is about a lot more than ideas. It's about execution, timing, scaling and a ton of luck.

3) After only two years at Google you're probably an L3 or L4 engineer. You have much to learn. Seriously. It probably took you a year to become productive so you've only scratched the surface. Go find a senior mentor and get them to talk about their journey. You'll be surprised.

4) Startups are hard. Don't believe the hype. Your startup will fail you. Even if the startup succeeds, you personally are unlikely to hit a payday. Remember the Golden Rule: Those who have the gold make the rules. The most likely outcome from any startup is that it fails. The second most likely outcome is that it fizzles and gets bought. Your equity would turn into a diluted options over 4 years.

5) In another 3 years at Google you'll save so much money that you'll have an entirely different set of financial options

6) Your long term career impact and financial success will actually be better off if you find a way to apply your ideas and passions within Google.

7) You are currently surrounded by some of the smartest software people in the world working on some of the hardest problems.

8) Look for a transfer to one of Google's SE Asian offices. Lots of interesting projects there.

To be blunt, it sounds like you're finding out that working as a software engineer is, well, work. It is. That doesn't mean you can't find your passion in what you do.

Buy yourself your own computer and work on your dreams at home while receiving the engineering and execution experience of your lifetime. Actively seek to learn more about your craft from a company that is still writing the book on this. Take advantage of internal instruction opportunities to expand your skillset (where else will you get paid to learn about ML from some of the best). Once you've earned your stripes at Google you'll be able to work anywhere on a just about anything. You'll also find that you actually understand the realities of product development and software engineering in ways you do not today.

I started working at Microsoft in the late 80s. I'm now at Google as a PM. I've done a bunch of startups and consulting along the way. My career has spanned over 30 years and there's no doubt in my mind that it was the time at Microsoft that gave me experience, skills and opportunities I would never have had elsewhere.

If your heart is set on the romance of startups, go find it. You'll learn a lot there too. Just don't do it because you're bored of work.

PM me if you want an extended version of this with Google insider specifics.

53
sametmax 2 days ago 0 replies      
With Google on your resum, you won't have problems to find another job. Travel the world for one year, use the second year to find a more fullfilling activity.

Honesty it's a no brainer.

54
johnrob 2 days ago 0 replies      
You should have a specific idea and not just the desire to start a company. I'd recommend waiting until you have that idea.
55
dirtylowprofile 1 day ago 0 replies      
SE Asia? Come to Philippines, there are a lot of startups here and so much to solve out here.
56
maxwin 1 day ago 0 replies      
If you ever visit Myanmar, send me an email.
57
slackingoff2017 2 days ago 1 reply      
Your first ever job is at Google? At 24? And no loan debt? How is that even possible. Not to be a dick, but honestly it sounds like your family is wealthy enough that you can do whatever you want.
19
Ask HN: What are some cheap/self-hosted alternatives to Zapier?
3 points by swapagarwal  1 day ago   2 comments top 2
1
nxrabl 1 hour ago 0 replies      
My favorite tool for finding software alternatives is alternativeto.net, which returns these alternatives for Zapier: https://alternativeto.net/software/zapier/

Most promising on that list is Huginn (https://github.com/huginn/huginn) which looks like exactly what you want.

2
saluki 8 hours ago 0 replies      
Integrations can be a lot of work. So $20 for 1000 tasks sounds pretty inexpensive.

If you want a lower monthly cost you'll need to roll your own basic integrations.

20
Ask HN: 50% of stock market is pension funds,what happens when everyone withdraw?
22 points by punnerud  3 days ago   27 comments top 8
1
Someone 3 hours ago 0 replies      
_If_ (that's a very, very big if as in "won't happen") everybody withdraws, they presumably do so with reason. The most likely reason I can think of is that they want to buy goods or services. If so, the economy will boom. On the other hand, stock prices will fall, giving "everybody" less worth to withdraw.

Net effect likely would be transfer of wealth from the older to the younger and from those with capital to those who have to work to make a living.

2
cbanek 3 days ago 1 reply      
I'm honestly not sure if it's 50% or not, but I suppose the idea is that not everyone withdraws at the same time. Ideally, you would only sell off assets that you need to raise capital to pay for benefits. Also, there's new money coming into the fund by employees paying in, and I'm not sure they can stop.

But in general, if everyone wanted to sell their assets at the same time, that's when the stock market "crashes", because there's no buyers. I suppose the pension fund managers can make these types of decisions, but in general they are governed by rules and best practices in terms of what investments they can make.

If these funds stopped investing their money, they'd be at greater risk of inflation, and where would they put it? What would be the next step?

But you're right there is a lot of retirement money in the market, and when people start to retire, some of that money will go out of the market, but also a lot of people are trying to live only off the interest/dividends, and keep the principal because they are worried they will live longer than they were expecting.

3
noir_lord 3 days ago 0 replies      
50% of people don't retire in any one year (though some years a larger percentage of people do retire because of bumps in the pipeline).

Also when people retire the pension fund doesn't draw out their entire pension in one go.

4
ThrustVectoring 2 days ago 1 reply      
This and the low birthrate in the west are fundamentally why interest rates are so low and why college and housing is so expensive.

When someone decides to forgo consumption now in exchange for consumption later, it has to net out into someone else consuming now in exchange for forgoing consumption later. The interest rate and price of financed goods adjusts until counter-parties meet on price and the market clears. Where are the sources of new debt in modern western economies? Mortgages for the most part (70%), with student and auto loans taking up much of the rest (~10% each).

5
spectrum1234 2 days ago 1 reply      
It's amazing to me how many smart people don't understand this. The prices would bounce back to almost exactly what they were before the withdrawal.

Edit 1:This is because the stock market is mostly (quasi) efficient. Every other answer in this thread is wrong. Random people buying and selling have nothing to do with what the correct price of assets are.

Edit 2:The question makes this answer particularly easy because pension investors are by definition buy and hold investors (not day traders). If 50% of day traders did this the answer would be more complex. However, on average the answer would still be the same. If it was fundamental investors, this would be a much more interesting question. However using induction previous fundamental investors would have never invested in the first place...And the end game here is risk must always carries a premium...which leads us back to...prices bouncing back yet again.

6
stouset 2 days ago 1 reply      
You continue your long-term strategy of buy and hold, and feel lucky to be able to buy these assets at a hefty discount.

If you're nearing a point in time where you expect to be withdrawing these assets, you should be gradually reducing your exposure to riskier investments and put greater percentages into lower-return but stable assets (classically, this would be bonds). In the event of a downturn, you would plan to have enough money in such stable assets to ride out anything shy of a total economic meltdown (in which case there probably wasn't much you could have done anyway).

7
danjoc 2 days ago 1 reply      
Ask 2008. That's when all the boomers started hitting early retirement age.
8
SirLJ 2 days ago 1 reply      
No matter what kind of investment, you have to have a system with clear entry and especially an exit strategy, all part of your solid risk/money management.

In any event of a market down turn I'll be out long before the bottom and will be probably in some sort of alternative investment which will rise, because the money will seek to go into something else, maybe gold for example.

I strongly recommend to look into systematic stock trading systems like trend following for example and to have a plan in place when the stock market turns down from the Friday all time high... Also i makes the greatest life style business with no customers, no employees and no investors and will run on autopilot as long as the stock market exists...

21
Ask HN: As a skilled developer, how do you make pocket money with little time?
150 points by Kmaschta  4 days ago   90 comments top 20
1
goldenbeet 4 days ago 2 replies      
So I have experience working with Udacity (MOOCs for various coding related fields)

I work as a mentor for a few of their courses. You're connected to X number of students (you set x yourself). Then as they progress through the course they have the option to send you a message to ask a question or whatever. You also do a weekly check-in with them to see where they're at, if they have any blockers, what their goals are for the next week.

You then get paid (via PayPal) based on how your student interactions went on a per week basis. 0$ for every student who didn't message you, 5$ for 1-9 messages, 15$ for 10+ messages. You get bonuses for them completing major sections as well.

You interact via a mentor dashboard on web or via a mobile app. If you use mobile, you're basically being paid to text some students a few times a week. Pay will obviously vary depending on how many students you have and how good you are at interacting with them. (The better your mentor rating the more students you're allowed to take on). I had 40 students and made 1.4K a month. The work didn't feel stressful or anything. It's pretty easy to land (no formal interviews or anything), you just have to get involved in their slack and PM one of the Udacity staffers. Was pretty easy, plus I enjoy teaching/mentoring.

You can also be a project reviewer rather than a mentor, but not sure how that works.

2
philip1209 3 days ago 8 replies      
We're working to solve this problem at http://MoonlightWork.com. At my last startup, I had a lot of friends who wanted to help us out - but they had day jobs that they couldn't leave. So, I started hiring them part-time as contractors. It was great - we had top talent, and they could focus on interesting problems while making extra money.

Moonlight is still in its early stages but we are doing thousands of dollars per week in business. Our average hourly rate based on paid contracts so far has been $146.79. We're focusing on more specialized work rather than generic web development from scratch. Early projects have ranged from a custom algorithm for a hedge fund to some infrastructure work to support Tensorflow. The benefit to companies is that they have access to specialized engineers for focused projects, and they can get a match within 48 hours.

If you're interested in short-term projects, you can join at https://MoonlightWork.com/apply - we're working on increasing the number of projects, so sorry if it takes a couple weeks to get a first project match.

We're going though YC's Startup School MOOC, and we did live office hours with Sam Altman a few weeks ago. You can see the video here: https://youtu.be/abtHadERzXU

3
stanmancan 4 days ago 5 replies      

 I tried to be a freelance, it is well paid but with my full-time job it's too time consuming and I'm not so ambitious.
That's your problem in a nutshell. If you don't have any time to spare, and you're not ambitious enough to find time, then there's not much you can do. However, unless you're putting in 60+ hours a week at your day job you most likely have a lot more time than you think. Even 1 hour a night can add up quick.

- I've build a number of websites businesses on the side. Most the jobs come through word of mouth and recommendations.

- A few of them have agreed to keep me on a retainer, they pay me $XXX a month and I'll host their sites and give them a couple hours of maintenance each month if needed.

- I started a little API about 5 years ago and dropped an advertisement on the homepage. 3 years went by with next to no revenue from it, as time went on though it started to pick up. It runs on a $10/m VPS and at it's peak it made $1600/m in ad revenue. These days it hovers around $600-700/m and runs on a $20/m VPS. This takes about 0.5 hours a month of my time to keep up.

- Another company wanted a web application but didn't have the budget to pay for it up front. Built out a proof of concept on my own time and presented it. They liked it, so instead of selling it outright I host/maintain it and sell them seats. They pay $X/m per employee. They're trailing it right now in a few stores but they're in talks to launch it nationally.

- About to launch a small SaaS; one of those 'scratch your own itch' things. Whether there's a market for it or not remains to be seen.

All of those things have been accomplished over the last 5 years. I have a wife, 10 year old daughter, a full time job, and coach a soccer team. I know there are many people much busier than I am out there, but if I can find time to work on side projects, so can most people. You have to want it though, and your lack of ambition is most likely the prime culprit.

4
kentt 4 days ago 2 replies      
I'm in a similar position, a web developer with a reasonable salary interested in side income, but not interested in onerous responsibilities of running a business. I've been had two projects I'm sort of happy with

1. A shopify app that makes about 150/mo. I answer about 2 emails about it per month and otherwise don't work on it. It took about 150 hours to build so I haven't been paid well for it, but I enjoyed building it.

2. A WordPress plugin I acquired for about 10k that makes 800/mo. I get a lot more emails about this but I think if I get it into a less buggy state then I can get that down to something more reasonable.

5
avisaven 4 days ago 1 reply      
I've recently been playing around with HackerOne. It's a great way to both benefit society (by finding, reporting, and eliminating security flaws in software that people rely on) and yourself (most companies on HackerOne give Bug Bounties out, anywhere from a couple hundred to thousands of dollars, depending on the bug). Specifically, I looked at shopify's mruby bug bounty (https://hackerone.com/shopify-scripts) and used a fuzzer (AFL/honggfuzz) to find bugs in mruby, which I could then investigate and report. That specific bug bounty is a lot of C/low level security, but there are many bug bounties which are geared towards websites/web development (XSS/SQLi/etc).
6
parametrek 3 days ago 1 reply      
Web dev? Affiliate links.

Consider a consumer item you are passionate about. Walk through the typical shopping process, either as a newb or as an enthusiast. Identify all the pain points, every bit of friction. Consider everything you've listed as an embarrassment that you will personally make right. Build the smoothest, fastest, most respectful experience possible. Compile lots of information too - your goal is to become the best resource on the internet. Put the user first at all times. And when appropriate add affiliate links. (In my case only 27% of URLs are affiliated.)

Why is respecting the user the #1 priority? Because you do not want to look like an affiliate content mill! Go read the blogs that teach you how to affiliate^W build dark patterns and do the opposite of what they suggest.

Of course even if you are unquestionably the best resource on the internet, some communities will still tar and feather you for having affiliate links. I was very lucky to find a great and supportive community.

7
amelius 4 days ago 3 replies      
I think there should be a service for that.

For example, if I say that in the following two weeks, I want to do X hours of programming work, and they know my skill level, they should be able to match me up. Like a job agency, but for short-term freelance work.

8
upbeatlinux 3 days ago 2 replies      
Freelancing takes some degree of ambition and if you're just starting it can be time consuming.

What I'm hearing though is you want the benefits of freelancing without having to do the work of a freelancer? That's a huge fallacy. Freelancing requires some degrees of ambition and most importantly work.

Unless you've built a reputation for providing these services its going to be difficult obtaining customers.

What should you do? At the very least

 - build your profile and build your brand - "become" an "expert" in your field by blogging, tweeting, etc to drive engagement - get connected to other "experts" and start conversations - build a simple landing page (site) for each area you want to provide services for. A/B test the landing page using Google Ad Words, etc - sign up as an organization on freelancing sites and start doing jobs which can be done asynchronously - become a maintainer or contributor to security auditing software
Alternatively you could buy an existing business and improve it.

Again, all this requires ambition and work.

If you don't have time or interest in finding the time it's probably not for you.

9
SirLJ 3 days ago 0 replies      
Hey, here is my idea for you to consider: stock trading, for me it is the ultimate lifestyle business with no customers, no employees and no investors...

You only need some python (and pandas) knowledge, a Linux server and some historical stock market data - please check my older posts for a source (I would love to post the source here, but there is a forum bully stalking all my posts a failed day trader who will crap all over your post).

The barrier for entry is very low, you can program your trading strategies in your spare time and run the tests while sleeping without loosing a single cent and once you find what works for you can automate it and itll run on autopilot...

Just my 2 cents, hope whatever you do works for you in the end, I was in a situation like yours and this is what is working for me...

10
verigit 3 days ago 0 replies      
I made a macOS app [1]. It was a lot of work and the outcome is always unknown beforehand, but I could do it at completely my own pace (which could be an answer to the "little time" problem).

[1] https://easygit.me

11
vlokshin 3 days ago 0 replies      
We're working to solve this exact problem.

Check out http://turtle.ai/

We've focused on building software that makes it really easy for "plug and play" software development work. We think 40 hours isn't perfect for every kind of engineering job. We even have some software developers delivering customers value in just a few hours per month.

You do need to be able to clearly say "here's what I'm doing, and here's when to expect results", but we also recruit customers that buy into our vision. Also, our software makes it really easy for both sides to keep smiling :)

12
dejv 3 days ago 1 reply      
My best source of good income was doing code reviews for an agency, but after while they realised how lucrative it is and started to do them inhouse.

I also did some presales engineering work for another agency. Agencies are great for this kind of biz/senior dev roles: they dont always have enough skilled personel that could do this kind of work and might be open hiring somebody to do it. If this is something you might want to do, then try to look around for it.

13
5_minutes 3 days ago 1 reply      
Normally if your social circle knows you're a webdeveloper, you'll automatically get offers, or let's say: requests for sites. Most of them you want to skip (like your friend who want to start a bar and has no money but will pay you in beers), or anything that is not for an established and succesful business. But still there should be a few freelancer opportunities without really trying, just around you.

So perhaps that could be a first step, getting word out more in your closer circle.

I personally have too much work with this ever expanding social circle freelancing stuff, as sidebusiness, that I think of outsourcing it or am wondering when the point is of quitting my day job (which is well paid). That said, I'm using "social circles" for lack of better wording.

What I really would like to do is creating my own sideprojects like goldenbeet here addresses, that seem like fun or just interesting myself. I have a bunch of good project ideas, but the sideproject freelance work keeps on flowing steadily and I never get to it. If this sounds like a brag: it's not. I actually consider anything of (semi-)passive income much of a success then regular freelancer gigs.

14
deedubaya 3 days ago 0 replies      
I've gone the side-gig-for-extra-cash route before. It was easy to make the money, but hard to sustain with a full-time job. It's a recipe for burnout.

If you're a skilled developer, you're much better of demanding a raise, switching jobs, or switching up your skillset to a higher paying job if your motivations are strictly cash.

15
vijayr 3 days ago 1 reply      
I don't know if it still works today, but Forbes says there are some people who make very serious money on fiverr, but they are mostly creative work though (voice over, writing etc). Not sure if it will work for software dev. Also the site is quite established now, so there is some stiff competition for low price.

https://www.forbes.com/sites/laurashin/2016/05/31/how-these-...

https://www.forbes.com/sites/laurashin/2017/04/25/how-to-mak...

16
tmaly 23 hours ago 0 replies      
check out some of the posts on indiehackers.com it lists side projects that are all cash flow positive to some degree. I use it to gain insight into how they got started. The IH community is also very cool.

oppsdaily.com is another great resource, it sends out a daily email with problems people are willing to pay to be solved.

17
namuol 3 days ago 0 replies      
Have you considered asking for a raise? How about switching your full-time job elsewhere that pays you more?
18
msencenb 3 days ago 0 replies      
The easiest way to make more money, without devoting more time into working, is to ask for a raise. If that doesn't work, find a job that pays more.

All of these other ideas are good, but are not easy and require time commitments.

19
cefthurston 3 days ago 0 replies      
Hi Kmaschta,

I saw some folks mentioning Gigster so thought I'd add some notes. For reference I'm Christian Thurston and I've been working at Gigster from early on.

The benefits of our model is that we do fixed price, not hourly, so if you're able to work better and faster then your effective hourly goes up. Also, with us you don't have to interface with the client - you work with a PM who speaks tech and write code - that's it.

Our clients are both technical and non-technical but it's a lot less relevant because you'll always be working with that PM layer as a dev, not directly with the client.

Here's what the higher end of pay looks like as well: https://www.forbes.com/sites/reneemorad/2016/10/24/the-skill...

Good luck on your search and hope you find a good situation that fits your needs :).

20
rollingpebbles 3 days ago 0 replies      
iPhone and Android apps, freemium or ad-supported
22
Ask HN: What single book is the best intro to your field for laypeople?
46 points by capocannoniere  4 days ago   19 comments top 16
1
SirLJ 2 hours ago 0 replies      
"More Money Than God: Hedge Funds and the Making of a New Elite" by Sebastian Mallaby - this is a great read and motivator for someone interested in quantitative trading systems - started as a side project for me, but looks like it will give me my early retirement + my legacy money to leave behind one day...
2
jamessb 4 days ago 0 replies      
The same question was asked on Ask Metafilter a decade ago, and received 237 answers: http://ask.metafilter.com/71101/What-single-book-is-the-best...
3
yitchelle 4 days ago 1 reply      
http://dilbert.com/ - for the management activities of my work.
4
e9 4 days ago 1 reply      
The Scientist and Engineer's Guide toDigital Signal ProcessingBy Steven W. Smith, Ph.D.

http://www.dspguide.com/

http://www.dspguide.com/pdfbook.htm

6
Amogha_IO 1 day ago 0 replies      
Hands down the best book to give an intro into my field: "How to win friends & influence people" by Dale Carnegie.

(I am a startup CEO, w/ technical background. Learnt a LOT from this book. Would probably not be in the same job if I hadn't read this)

Other good books that will give an intro into tech startup management for laypeople:

-Zero to One (Peter Thiel)

-The hard thing about Hard things (Ben Horowitz)

7
garyfirestorm 4 days ago 0 replies      
Noise and Vibration Analysis

http://www.abravibe.com/book.html

8
jbonniwell 4 days ago 1 reply      
When I was doing Bluetooth Low Energy development for IoT devices, this book was the goto reference for both the embedded firmware and mobile app folks:

https://www.amazon.com/Bluetooth-Low-Energy-Developers-Handb...

9
lasoandrade 4 days ago 0 replies      
10
3131s 3 days ago 0 replies      
For pure linguistics I'd recommend Transformational Grammar by Andrew Radford and Metaphors We Live By by George Lakoff and Mark Johnson.

And for NLP, Dan Jurafski and James H. Martin's Speech and Language Processing is excellent, and there are great projects like spaCy, NLTK, WordNet, FrameNet, COCA. etc.

11
jachee 2 days ago 0 replies      
As a systems administrator with an eye toward DevOps principles, I highly recommend (the possibly clich) The Phoenix Project by by Gene Kim, Kevin Behr, and George Spaffor.

It's a novel that reads like a thriller, but is infused with IT info.

12
santoshmaharshi 4 days ago 0 replies      
One of the first books many many years back, introducing me to software business and open source cultureThe Cathedral and the Bazaar Musings on Linux and Open Source by an Accidental RevolutionaryBy Eric S. Raymond-http://www.catb.org/esr/writings/cathedral-bazaar/
13
brudgers 4 days ago 0 replies      
48. The best book on programming for the layman is "Alice in Wonderland"; but that's because it's the best book on anything for the layman. -- Alan J. Perlis

http://www.cs.yale.edu/homes/perlis-alan/quotes.html

14
true_tuna 4 days ago 0 replies      
"Getting started with Raspberry Pi" is a wonderful introduction to systems, Linux, and IOT projects. Super approachable language, but also quite complete.
15
cm2012 4 days ago 0 replies      
Being Direct by Lester Wunderman is a great intro to the world of direct marketing.
16
bkohlmann 3 days ago 0 replies      
For aspiring fighter pilots: The Right Stuff by Tom Wolfe.
23
Ask HN: What is the max audio quality to feed to machine-learning transcription?
2 points by kmfrk  1 day ago   1 comment top
1
braindead_in 1 day ago 0 replies      
Most datasets are 16khz sampling rate, wav file. A good place to start is Mozilla deepspeech implementation.
24
Ask HN: What's your company on-call setup?
4 points by anoncall  1 day ago   5 comments top 4
1
iends 1 day ago 0 replies      
I work on a large SaaS product that is deployed in AWS globally and is expected to have 100% uptime. Each service team in the SaaS has its own on call rotation and is responsible for being highly available. There are also architects and more DevOps folks (SRE team) always on call so you can always get help at 2am if you really need it.

I'm the primary on call every 3 weeks, but secondary the week after. Technically, since I'm the team lead, I'm always on call if the issue escalates to me at level 3. In practice my team is very good and it's extremely rare to get a page when you are not primary.

The team doesn't get paid extra, but it is mentioned in the interview completely up front and my company's compensation is pretty solid.

If paged after hours you are expected to work remote. If you can't get to a computer in 30 minutes you should escalate the issue (or just ignore the page). This is company policy, but I expect most companies to have some type of SLA for responding to pages.

As far as what type of pages we get...when there was flooding in AWS Australia a few months back I got paged because we lost a certain number of AWS nodes. Sometimes we deploy code with a memory leak and we find out a day or two later. Often, AWS just does something stupid (like the AWS S3 outage a few months back). Sometimes the DB cluster loses a node. Sometimes we ship code that interacts with another service in unintended ways. We NEVER interact with customers, all our pages are in response to specific technical issues. If customers need to be contacted there are people with customer service skills that convey the message appropriately. We do not get paged out for issues that are not major (e.g. the product or a major feature stops working).

2
odonnellryan 1 day ago 0 replies      
What's expected? As an owner of a software company that requires on-call staff (I'm basically 100% on call all the time): If they did not mention it during the interview, nothing is expected of you on-call. If they bring that up, renegotiate your contract.

- How often are folks on-call? How frequently do issues occur at your org?

I worked in IT that had a rotation. We'd have 6-8 techs and just rotate weekly. However, issues were infrequent: maybe 1 every 2 weeks. Minor things.

- How much do people get paid? Is it extra when issues happen?

Depends. Maybe your total compensation is worth it to you. Maybe not.

- Is it normal to have all developers on rotation? Or do you have a separate operations team?

It's absolutely normal to have only some devs on rotation. It depends on your business.

- Can you work remotely? Are you expected to be available at short notice? Do you have a second level backup person?

Legally, at least in most US states (if not all), if you need to be available you must be paid for it if you're not salary exempt. So if you're not being paid, feel free to go camping.

Always have a second level guy. Then a number that gets called to ping the CTO/CEO if that second level guy doesn't check in. There are systems for this.

3
klez 1 day ago 0 replies      
All of this depends on the type of service the company offers, your contract, your country, and other stuff.

For example in my company we have 5 support engineers who self-organized their rotation. The important thing is that someone is available from 1 pm to 2 pm to 6 pm till 8 pm, because one of our clients pays for that time range.

The engineer needs to answer phone calls and emails in a timely manner, depending on the issue (from 30 minutes for issues that impact business operation to 4 hours for minor stuff, like resetting a password).

They get paid a little for the time they're available and roughly the same as overtime if they actully need do something.

This is in Italy and, I want to really stress this, it's how it works at my company and with our customers.

4
wayn3 1 day ago 1 reply      
I truly don't get what kind of company is expecting software engineers to be on call.

What do they even want you to do about issues clients have with software? If the software is down for some reason, call devops. Or call AWS. I don't care.

If there's a bug, its not going to get fixed at 4am by one person pushing a hotfix through production. Although if thats how bugs get fixed at your company, maybe you should revisit whether thats a good approach to devops and when you find that its bs, you can finally abolish "on-call rotation".

"btw, you're on-call.." "if I wanted to be on call, I'd be in medicine."

25
Ask HN: What is a good way to get into trading cryptocurrency as a developer?
7 points by pszczurko  2 days ago   15 comments top 8
1
elorm 2 days ago 1 reply      
I'm assuming you're talking about algorithmic cryptotrading here since you'd like to utilize your CS skills. No need to inform you that trading by bots is extremely risky, i'm sure you already know it.

Well here you go:

Grab some foreknowledge of cryptocurriencies fromhttps://github.com/Xel/Blockchain-stuff.

Sound knowledge of Quant,Stats and Economics in general. Also grab the Black Swan by Nassim Taleb if you can.

Learn a bit of technical analysis: Familiarize yourself with indicators

You'd need to spend some time on exchanges that have APIs, play around with the system a bit.

Learn about what kind of trading is allowed and what types of orders you can make.

Trade by hand just to get a feel of what trading is like. Some exchanges have demo trading in built when you sign up. Play around until you're comfortable

Find the trading strategy you're comfortable and begin to automate it.

Be prepared to lose lots of money!!!

Also join telegram chats of the various cryptogroups. Their analysis is so spot on, it sometimes feels like insider trading. Good luck

2
cdvonstinkpot 19 hours ago 0 replies      
I found Cryptotrader [1] interesting years ago, & found myself wishing I knew how to code so I could get in on maybe making some money there.

Was using a minimal bot that came as a Chrome extension called "Butter-Bot", but it stopped working right after that one Thanksgiving when it broke $1k- when the market started going sideways. The developer was building a newer version called "Butter-X", which looked promising, but was never completed after money ran out.

[1]

https://cryptotrader.org

3
mbrock 2 days ago 0 replies      
The top comment in this thread is very informative:

https://www.reddit.com/r/BitcoinMarkets/comments/1rhtv1/eli5...

The "pump & dump" dynamic is extremely important in cryptotrading.

4
meric 21 hours ago 1 reply      
You absolutely can make money with bots in cryptocurrency - there are times when different exchanges have $100 differences in the price of bitcoin. During times of volatility you can have bots making money off arbitrage.
5
jake_rd 2 days ago 1 reply      
I'm not too sure that CS knowledge would be that applicable (for trading) at least. Trading cryptocurrency for profit is speculation - essentially the same as trading a stock on the stock market. Unless you're working in HFT or trying to build out an algo to trade for you, besides some basic math skills, I can't see how CS knowledge would apply.
6
itamarst 2 days ago 1 reply      
1. Go to bank.

2. Withdraw large pile of cash.

3. Put it in a metal garbage can, away from any flammable materials.

4. Light the cash on fire.

This will get you to the same destination, only much faster.

7
airbreather 2 days ago 0 replies      
8
kleer001 1 day ago 0 replies      
never forget to only play with what you're willing to lose
26
Ask HN: What motivates founders?
23 points by BevanR  3 days ago   14 comments top 12
1
hellbreaker 3 days ago 0 replies      
For me, at least, it is the extreme belief in oneself to accomplish something. Whether it becomes the next billion dollar startup is second. I am doing it because it is a challenge and not everyone can do it. Its much better than working for someone else and being assigned to do the same tasks over and over again.

The closest mentality to a founder I have seen are those of extreme sports. Especially sports that requires laborious hours and determination to get done. Like those that choose to climb Everest. Its tough and chances of injury is high. But you keep climbing because you believe you can make it to the top. You can't imagine going back down to the mundane life below.

2
rl3 3 days ago 0 replies      
In my case it was initially just being extremely dissatisfied with my life and deciding to do a startup. Which is kind of like realizing your car is out of gas and deciding to push it across the desert for fun.

Eventually I found something which grew into pure unwavering passion. Unfortunately that doesn't automatically translate into being able to execute successfully.

The other reason was a desire for massive amounts of wealth. Not for the sake of it, but because I'd love to be able to spin up large projects left and right. Paraphrasing another comment: the deep desire to do things better. And of course, make the world a better place.

Funny enough, I spent about an hour writing a fairly heartfelt ten paragraph reply to this question, until Firefox mobile crashed and lost it all.

Then I realized that reply was an explanation of what keeps me going, not what motivated the decision to start in the first place. What keeps founders going might be a far more interesting question, and certainly a more complex one. It's a psychological minefield: career and personal life opportunity cost, sunk cost fallacy, people depending on you. Much more messy than the simple why of starting.

3
tixocloud 6 hours ago 0 replies      
For myself, it's the challenge and being able to prove to myself that I can do it. I love that there is no clear direction or obvious answer. I want to build something and make my mark on this world so that I can tell my kids one day that they can absolutely accomplish anything in this world if they set their heart to do it.
4
xiaoma 3 days ago 0 replies      
A deep belief that the world is doing it wrong and no ability to change large organizations from the inside.
5
pedalpete 3 days ago 0 replies      
Clearly, different people are motivated by different things.

I would suspect that anybody motivated by money is more likely to go to Wall Street than become a founder of a start-up.

Not to say that founders are not in some way motivated by money, but I'd be surprised if that is the primary motivation for the majority. If you look at the most successful founders, I think you'll find they love what they do, and the money, once you are successful, becomes secondary.

I've started a few times, and have ideas for other start-ups (nothing overly successful yet). I don't think about 'what would make me a ton of money', I think with respect to what I want, what is the world going to look like in 10 years in an area that I'm interested in. I have a vision, and I research if it is a good opportunity, and I pursue that vision. Even when the signs are that it is a financially bad opportunity, I find myself motivated by the vision, and continue anyway.

Last year I ran a project (not a start-up, I never saw it as a business), and paid the server cost for a year, as an experiment to see if others agreed with my vision, if I could inspire people, if I could change some lives. It was a really interesting learning experience. It was successful at first, more than I thought, and then fell to pieces, but what fun!

The reason people describe founders as 'visionary' is quite simple, if you don't have a vision, I don't think you've got anything to start.

6
balazsdavid987 3 days ago 0 replies      
Gambling and founding a startup are two vastly different things, they are not on the same scale. While gambling is a zero-sum game and you have little control over the outcome, a startup creates value (or at least, tries to) and you do have the ability to change/improve the product based on feedback from the market. I might be too idealistic, but I believe this is what motivates hackers to found startups: create value + take control of their lives.
7
no1youknowz 3 days ago 0 replies      
For me, money is just the lubricant which then allows re-investment to make the product, processes better and hire better people to them improve on those further and become the market leader.

My motivation was that I was extremely dissatisfied with the status quo of my respective industry. I knew full well that to achieve my own vision so to speak, would be really complex, time consuming and hard to pull off. When I realised this, the challenge was graciously accepted.

I could so easily start a venture to become an also-ran in a crowded market. There are many competitors of differing niches in my industry that I could immediately jump into. Do know, it's perfectly fine for someone to start a company based on a niche and then try to be the best. I'm not knocking sentiment. But for me that's not sexy, not what keeps me up at night. I want to be a monopoly, one that changes how people perceive things and what they do.

But ultimately, what I crave is the satisfaction that I started something, which blew up massively and then really affected peoples lives.

8
danieltillett 3 days ago 1 reply      
In my case is was circumstance - someone gave me a check and said go build it after I gave a talk about my great idea. I was so ignorant that I didn't even know I was founder.

What I find more interesting is what motivates founders to continue when things get really, really painful. I don't have a good answer.

9
DrNuke 3 days ago 0 replies      
As a tech employee your salary is 1/4 or 1/5 of your turnover for the firm and this thought is unbearable to many.
10
bsvalley 2 days ago 0 replies      
The freedom to create my own job and to be my own boss. That alone brings me happiness. It makes me feel like a I have a much larger purpose in life, from the mission I assigned myself to - to the amount of people who could potentially be impacted by that mission (in a positive way). Last but not least, if it ends up being a successful journey (in bussiness terms), as a founder, I would get the ultimate recognition and satisfaction.

1. Freedom

2. Impact

3. Recognition

11
mooreds 3 days ago 0 replies      
Solving a problem, building something, helping customers. Having autonomy in the workplace is a nice benefit too, but you can get that elsewhere.

Don't found a company for the money. The odds are so awful that you'd be better served getting a job.

12
samblr 3 days ago 0 replies      
Belief in creating a change that they have perceived in their minds.
27
Ask HN: Fastmail 2fa via Google Authenticator useless?
8 points by outerspace  2 days ago   6 comments top 6
1
nmjenkins 1 day ago 0 replies      
(I designed the FastMail 2FA system)

Short answer to your question: no.

We are concerned with both keeping other people out of your account and making sure you still have access to your account.

For most users, the risk of losing their authenticator token or security device and so getting locked out of their own account is greater than the risk of someone hijacking their phone number. This is why we require you to add a recovery phone first.

It's very important to note that if you have 2FA enabled at FastMail we always require two factors to access or recover your account. Hijacking your phone is not enough: the attacker would still need to have also stolen your password. And hijacking your phone number is a very visible move, which you will quickly notice. In the highly public cases we've seen of this kind of attack over the last few years, I believe in every one the attacker has not had the password, and has only succeeded because they could gain access to the account with SMS alone.

For advanced users you can remove the recovery phone at FastMail after setting up 2FA. If you do this, I strongly recommend you write down your recovery code and store this somewhere safe and set up at least two different authentication mechanisms.

2
troydavis 2 days ago 0 replies      
It's not just FastMail. Most other 2FA-enabled sites (including Google) offer and recommend providing a phone number as a delivery method for a onetime code.

The 2nd factor is only as secure as to the weakest delivery method, though, so defining a phone number does make that factor subject to porting and SS7 attacks. Most sites offered text message backup codes before those attacks had been seen in the wild, but they're probably also stuck with a lot of users who didn't write down their recovery codes.

There's no good recovery option with a large userbase. The closest is Delegated Recovery (https://m.facebook.com/notes/protect-the-graph/improving-acc...) but GitHub and Facebook are among the few, if not the only, implementors. Without that, eventually someone will lose or break their phone, realize Authenticator TOTP keys weren't in backups, realize they ignored the instructions to save the backups, and go to support.

As long as you actually do print and securely store the backup codes, I think there's a good argument for not giving your phone number as a backup method.

3
md_ 2 days ago 0 replies      
One point not mentioned by others here:

In the case where recovery entails a required password change and the site imposes some password history--the common case, though I don't know if this is true of Fastmail--the real account holder is guaranteed to notice if a recovery event happens, whereas ordinary password+SMS-interception may not be noticed.

So, yes, for the most part this is as weak as SMS second-factor--but it's less likely to go undiscovered by the real user.

4
alltakendamned 2 days ago 0 replies      
Not really in my opinion, the threat model becomes different.

2 factor authentication is used to avoid attacks when your credentials/password are lost/leaked/stolen. Many people reuse their password or have a weak password. Having 2FA enabled also improves protection against brute force attacksIt does not take into account the threat of having your phone stolen or an SMS intercepted.

So as an attacker, you still need the login/password/phone combination to authenticate. The phone can be replaced by an intercepted SMS, while it has been shown it can be done, I wouldn't call it easy. There is no way to update the phone number while not authenticated and Fastmail requires a second password confirmation before updating anything in password settings.

When you lose the password, now the attacker needs the phone or needs to intercept an SMS.When you lose the phone, the attacker still needs to bypass the lock screen and know the username/password of the Fastmail account.

What would you suggest to improve this? Recovery via email is no good as email can be intercepted as easy as SMS and a phone call is no good as that can be social engineered.

It's pretty much OK in my book, you simply shouldn't think that 2FA means there's zero risk.

5
guillaume8375 2 days ago 0 replies      
Its true you must give Fastmail a phone number to set up 2FA, but you can erase the phone number once 2FA is in place.
6
mtgx 2 days ago 0 replies      
It does.
28
Ask HN: How much could some one make if he makes a traditional mobile mouse app?
7 points by maksimpiriyev  3 days ago   6 comments top 6
1
random_moonwalk 1 day ago 0 replies      
Accurately inferring the position of the mouse from its acceleration is a difficult problem (the integration involved will result in rather large errors that compound over time when calculating the velocity and position). I doubt that the return on a 'traditional mouse' app would reward the effort required to make this work.
2
soulchild37 3 days ago 0 replies      
3
anotheryou 2 days ago 0 replies      
I don'f quite understand what you want ot build. In general a moise only makes sense for screens bigget than a typical mouse-pad or phone screen or look arround stuff like 3D games
4
miguelrochefort 8 hours ago 0 replies      
I already pair a bluetooth mouse to my phone...
5
GhostVII 2 days ago 0 replies      
Probably not too much. Mice are cheap and everyone has one, I don't think there is much market for a phone-based one.
6
2_listerine_pls 3 days ago 0 replies      
I thought about this a long time ago (2009) using the gyros + compass as an IMU. The thing is that the gyros were not as precise back then but things might have changed now.
29
Ask HN: Do you have voicemail turned on?
11 points by timvdalen  3 days ago   17 comments top 13
1
Amogha_IO 2 days ago 0 replies      
Voicemail is just another tool for communication. It allows for one way communication towards you, which might be useless in most cases but indispensable in some.

If you are someone who conducts a lot of business over the phone, voicemail is a must. If someone "important" is trying to call you / get hold of you and you are unavailable, your default goal should be to "reduce friction" for the other person to get the message to you! ("important" usually means they are really busy and they value their time a lot, and you should too.... Clients, Board, Investors, Counsel, Accountant, your managers, doctor, etc... ). Having voicemail disabled and requiring people to text you or email you after having tried to call you (which usually means it's time sensitive / important-ish) is adding more friction/resistance in the communications line. It also comes off as very unprofessional. What if you don't have their number saved on your phone or they call from an unknown number and you don't know who the miss call is from...adds a lot of lag in the communication pipeline.

Voicemail also allows you to take your time in getting back to someone if you don't want to / can't have a conversation right away, but you want to know what they might want to talk about. You can then prepare for the topic and call back.

My iPhone does a decent job at converting voicemail-to-text (at&t visual voicemail). I can quickly scroll through my voicemails, delete stuff from marketers/advertisements and call back important ones after reading/listening to the message. Voicemail has definitely help me prepare for important call-back more than a few times (especially while dealing with general counsel).

I would never disable my voicemail or let my inbox get full (voicemail inboxes filling up might be a "thing of the past" very soon!)

2
mvdwoord 2 days ago 0 replies      
Switched it off in 2003.. enabled it again in 2005 because of a practical joke by a friend who had my new manager made it a requirement for the new job.. :D

Switched it off soon after again. Reason is mainly that 99.9% of the voicemails left were work related (I only keep one phone# for everything) ahem, "lazy bullshit". It seems most (middle) management is constantly leaving messages about non-issues, for me to deal with. Texting is a miniscule additional "hurdle" which filters this out for me.

I had several discussions proving my point.

 [Bill Lumbergh]"Yeah, could you please enable your voice mail?" [Me]"Well, if it is important you can text me, I'll get right back to you" [Bill]"but that is less convenient.." [Me]"I guess if there is something important, it would warrant the effort to send a three word SMS message.. 'please call me'" [Bill]"Eh.."

3
greenyoda 3 days ago 0 replies      
Not everyone is able to use text messages. For example, if I get a call from a business that's returning my call, they're probably calling from a land line that doesn't have texting capabilities. And a non-online business (e.g., my doctor or my car repair shop) probably doesn't have my e-mail address and/or doesn't want to deal with customers via e-mail (it's an extra communication channel that someone at the business needs to monitor).

Also, if I want someone to reply to me quickly, I'm not going to put extra hurdles in their way to make it more difficult for them to do so.

On the other hand, if I'm calling a friend's cell phone and they don't answer, I usually leave a text message instead of a voice mail since it's easier for them to deal with.

4
mindcrime 2 days ago 0 replies      
Yes, but I almost never answer the phone unless I recognize the number, and I rarely check my v/m, meaning 3/4's of the time my mailbox is full and you can't leave me a message anyway. But I've been pretty cavalier about sharing my phone number over the years, so I get a lot of robo-call crap / marketing spam, etc., and it's pretty rare that I miss anything genuinely important.

At some point I'll get a new phone number and retire this one and when I do that, I'll probably A. be more guarded about sharing the number, and B. care more about voicemail. Maybe.

5
BevanR 2 days ago 0 replies      
I hate listening to voice messages. But my provider didn't allow it to be disabled. So my greeting says "please don't leave a message. I won't check it. Send me an email or text message instead"
6
laurentdc 3 days ago 0 replies      
Disabled, since my provider charges for it (around 0.12 per message, but still..) and it requires setting and remembering a PIN code to access it.

I don't think it's that useful anymore in the era of WhatsApp voice messages.

7
tedmiston 2 days ago 0 replies      
I have it enabled. If I receive an unexpected call from an unknown number, I don't bother returning it unless they consider it important enough to leave a voicemail. I don't use it much, but of course there are places like doctors offices that wouldn't communicate via sms or email.
8
squarefoot 2 days ago 0 replies      
I use my land line only to place calls because of free calls to cellphones and national land numbers, but the ring is kept off 24/7. Voice mail is enabled though I'm considering disabling it since the ratio of commercial vs non commercial calls is overwhelming.
9
et-al 2 days ago 0 replies      
On; because my dentist's office isn't going to text me (though I usually know it's an appointment reminder). And the iPhone does pretty decent job of transcribing voicemails these days.
10
praseodym 2 days ago 0 replies      
Disabled. I like having a little more time to answer my phone, and do not like incurring costs to the other party when I do not answer (voicemail counts as a connected call).
11
toomuchtodo 2 days ago 2 replies      
Enabled. Transcript by Google Voice emailed to me.
12
tim2387 3 days ago 0 replies      
I never thought about it. Thanks for the tip.
13
nailer 2 days ago 0 replies      
Same as you: turned on, message saying don't leave a message, email me.
30
Ask HN: Should I leave tech for international trade?
4 points by throwawaynnn  1 day ago   5 comments top 5
1
csa 56 minutes ago 0 replies      
I wouldn't leave tech. At the most, I would give it a try in my free time first.

I think on potential problem is that your brother may be able to do some things that are in a legal gray area. This happens a lot in many countries, but you don't want your name on the company if something goes sideways.

To be blunt, if your home country is China, India, or any developing country where favors at the border are a thing, there is absolutely no way I would do this as stated.

2
borplk 1 day ago 0 replies      
Only you can answer. But to me sounds like a prettyy bad idea.

Doing business with any family member is generally not a good idea.

Not to mention leaving a high-paying industry to go into some random thing you don't know anything about.

3
cylinder 1 day ago 0 replies      
Guessing your brother is in India or something similar. Business is different there, lots of small traders do import and export of basic commodities. Not really going to be viable in the US unless you have some advantage.
4
akg_67 1 day ago 0 replies      
Don't quit your job but try out the opportunity on the side. Try to find one person/business in US who is willing to buy what you are selling. Until you have made that sale, you don't have a business just "Hopes & Dreams."

Sell first, build later. Nothing happens until someone somewhere buys something. These should be your guiding principles.

5
gt2 1 day ago 0 replies      
As they say, don't give up your day job yet.

Test the waters and investigate the new business opportunity without quitting your job. Check your employment agreement, maybe you can even start a business outside of work. More likely if the business is in a different industry, like this sounds.

Also, it sounds like you are looking for an excuse to leave your day job. Maybe investigate that a bit by doing some deep thinking.

       cached 6 June 2017 20:05:01 GMT