Google C++ style guide - <AUTHOR> http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml <comment><USER2> The C++ you end up with by following Google's style guide is more of a "C with classes" thing, they prohibit several central features of C++. That said, I understand that they mostly do this to be consistent with their older code bases.

But it's not exactly a style guide I'd follow strictly in a new project/team.

<comment><USER3> The Google style guide could help explain why the Go team thought that their language would make more of an impact in C++ land than it actually did.

<comment><USER4> Nope. Go was born because large C++ builds were just too darn slow, but that wasn't due to using a restricted subset of C++. In fact, using a subset of C++ speeds the build up.

</comment></comment></comment><comment><USER5> _> Functions should start with a capital letter and have a capital letter for each new word. No underscores._

Why so? It's Java-ish. Java favors camel notation for some historic reason. C++ on the other hand favors snake notation which is clearly reflected in stdc++. Snake notation is also easier to read, especially if the name contains many words in it. Of course in the end it's a matter of preference, I just wonder why Google mandates camel notation.

<comment><USER6> >Snake notation is also easier to read, especially if the name contains many words in it. Of course in the end it's a matter of preference.

Exactly. It's matter of preference. I can read TextLikeThis much easier than text_like_this. Granted I've been developing in C# for past few years so that's likely the reason.

<comment><USER7> I don't have a strong opinion either way (I probably like snake case more, but use camel/pascal case basically everywhere) but this doesn't work as well when acronyms are involved. e.g. is it XmlParser or XMLParser? I'd say the latter, but someone else might disagree.

I think there are more ambiguous examples, but cant think of them.

<comment><USER6> > is it XmlParser or XMLParser?

MS standards says that if shortened letter combination is longer than 2 words than it's lowered, otherwise everything is uppercase.

e.g. XmlParser, IOStream

But again, everyone can create their own standard and be happy. The only problem occurs when you work with 10 people and everyone is sticking to his own style.

<comment><USER7> Not every API is that consistent. JavaScript's `XMLHttpRequest`, for example...

</comment></comment></comment></comment></comment><comment><USER8> For those who are unaware, `clang-format` ([http://clang.llvm.org/docs/ClangFormat.html](http://clang.llvm.org/docs/ClangFormat.html)) can be used to automatically convert existing C++ code to a given formatting style (Google, LLVM, a custom style, etc).

It's similar to `gofmt` in the golang world, and is a really useful tool for enforcing these kind of style guides.

</comment><comment><USER9> No lambdas allowed? For many other things they say "use within reason", I don't see why they can't say this for lambdas. They're finally making the stl algorithms easily usable. You don't have to write Functors that are in a different place then called.

Also, the guide seems to completely miss templates and actually pretty much allow everything in C++ (except lambdas and exceptions). I don't really see the point then.

<comment><USER10> > They're finally making the stl algorithms easily usable.

Well, considering they ban use of exceptions and considering that stl does use exceptions and therefore they cannot use stl, I don't think that they really care.

<comment><USER11> I suspect they either use an STL that has a way to disable exceptions (such as STLPort) or they disable exceptions using compiler flags, or maybe both.

You may argue that this really brings into question the "S" part of "STL" but it is done in practice and I'd argue it's not even all that difficult to deal with.

<comment><USER12> According to this StackOverflow reply [1], they do use the STL, but don't catch the (very rare) exceptions.

[1] [https://stackoverflow.com/a/15564254](https://stackoverflow.com/a/15564254)

</comment></comment></comment></comment><comment><USER13> There's a few style guides up the path for those interested: [http://google- styleguide.googlecode.com/svn/trunk/](http://google- styleguide.googlecode.com/svn/trunk/)

</comment><comment><USER14> As an x googler I had my issues with it

[http://games.greggman.com/game/lets-debate-coding- style/](http://games.greggman.com/game/lets-debate-coding-style/)

</comment><comment><USER15> "Use only spaces, and indent 2 spaces at a time." Of course you realize, this means war.

Much like all other style guides I've come across, there are a lot of hints that I'll find helpful and encourage at our next meetup, but honestly, the only style guide that truly matters is the one you can all agree to in your team and makes sense in your context.

And, I'm not sure if this is just those who share the same water cooler, many C++ devs seem to dislike using STL. I can't figure out why.

<comment><USER7> The big reasons for avoiding the STL are (in my experience)

1\. Holdover from when STL implementations were buggy

2\. Holdover from C

3\. Avoiding exceptions it might throw if you compile with exceptions off

4\. Many STLs are slow and unoptimized.

5\. Many parts of the STL are slow, no matter which STL you use

6\. Poor allocator support (better, not perfect in c++11)

7\. You need guarantees that the STL doesnt provide.

there are more, but those are the big ones.

</comment></comment><comment><USER16> It doesn't get any worse than that guide (except maybe EC++ or the FQA). No RAII, no class invariants, no value semantics, no streams, no operators (which means no custom Iterators, EqualityComparable or even CopyAssignable types! Such a basic feature called "insidious"). Not even mentioning the FUD about newer C++ features.

</comment><comment><USER17> I love C++, I wish there was more work available that used it. EDIT: Clearly my issue is where I lived, not the lack of available jobs apparently.

<comment><USER18> I don't really see a lot to like about C++. It's huge and fiendishly complex, keywords are overloaded to incomprehensibility, it doesn't make satisfactory guarantees about static initialization, exception safety is too hard to reason about, it's full of features maintained for backwards compatibility even when they no longer make sense, and development tools are unacceptably inferior to Java and C#.

Pros are that it performs excellently and const correctness is pretty cool.

Let's get an old fashioned debate started!

<comment><USER19> >It's huge and fiendishly complex

It's used to write software where that complexity is a minor cost in return for the performance it provides.

>keywords are overloaded to incomprehensibility

I don't know of a single keyword that is incomprehensible. Only a few keywords are overloaded but they are overloaded in contexts that make it very very clear what they're being used for.

>doesn't make satisfactory guarantees about static initialization

It makes very strong guarantees about static initialization. Static variables declared within a function are initialized when control flow passes through it for the first time, and such initialization is guaranteed to be thread safe. Global variables have three phases to their initialization, zero initialization, static initialization, and then dynamic initialization. Global variables are also initialized in the order that they are defined within a translation unit.

> exception safety is too hard to reason about

Exception safety is easier to reason about in C++ than any other language thanks to RAII.

>it's full of features maintained for backwards compatibility even when they no longer make sense

They make sense because no one wants to rewrite the billions of lines of code that their project might depend on that uses those features. Instead, it makes a lot more sense to just avoid using deprecated or backward compatible features rather than remove them from the language and break a crap load of invaluable software in the process.

>development tools are unacceptably inferior to Java and C#.

This is true.

<comment><USER18> > It's used to write software where that complexity is a minor cost in return > for the performance it provides.

Other languages (C, D, Ada, Go) provide similar native performance with far less complexity.

> I don't know of a single keyword that is incomprehensible. Only a few > keywords are overloaded but they are overloaded in contexts that make it > very very clear what they're being used for.

static, virtual, and class are all overloaded in weird ways. But punctuation is the worst: in particular commas, colons, ampersands, and asterisks are overused to absurdity. I'd almost prefer APL-like extra symbols to disambiguate some of the insane template one-liners that I've seen.

> It makes very strong guarantees about static initialization.

Are you saying that the static initialization order fiasco doesn't exist? C# and Java do not suffer from this problem.

> Exception safety is easier to reason about in C++ than any other language > thanks to RAII.

I don't even know what to say to this one. Exceptions are notoriously wonky in C++. The language makes you resort to idioms like RAII and copy-swap to use them at all, instead of providing language-level support to solve those problems.

> They make sense because no one wants to rewrite the billions of lines of > code that their project might depend on that uses those features. Instead, > it makes a lot more sense to just avoid using deprecated or backward > compatible features rather than remove them from the language and break a > crap load of invaluable software in the process.

And as a consequence the language suffers. Historical reasons are not a valid defense of the present design of the language.

I am reminded of this esr quote:

"While we do not intend to insult the designers of C++, we will not make excuses for them either. They repeatedly made design choices that were well- intentioned, understandable in context, and wrong."

</comment></comment></comment></comment><comment><USER20> Looking at this style guide as a C++ programmer, I'd hate to work at Google.

</comment><comment><USER21> FYI, the lint tool referenced in the guide is found here:

[http://google-styleguide.googlecode.com/svn/trunk/cpplint/](http://google- styleguide.googlecode.com/svn/trunk/cpplint/)

</comment><comment><USER22> It might sound like a good idea to precisely describe how code should be written, until you realize it's inefficient and useless.

Code coherence can be accomplished with more relaxed rules if you delegate more responsibility to your engineers.

<comment><USER10> > Code coherence can be accomplished with more relaxed rules if you delegate > more responsibility to your engineers.

Please elaborate.

<comment><USER22> I think consensus through code review is better as compilers and languages evolve. If you write rules for everything you spend your time checking for compliance and perhaps rewriting rules instead of relying on a more organic code quality assurance.

You also want your engineers to think by themselves instead of hiding behind a rules book.

<comment><USER23> Code style doesn't dictate what your engineers build, it just makes their code easier to review and maintain. Code smells, foreign conventions, and inconsistency all make reviewing and editing code harder.

</comment></comment></comment></comment><comment><USER24> "Vigorous programming is concise. A method should contain no unnecessary statements, a class no unnecessary methods, for the same reason that a drawing should have no unnecessary lines and a machine no unnecessary parts. This requires not that the programmer make all his methods short, or that he avoid all detail and treat his classes only in design, but that he make every statement tell."

—String and Wire (Elements of Modern Programming Style)

</comment><comment><USER25> C++ Guide: We do not use C++ exceptions.

Python Guide: Exceptions are allowed but must be used carefully.

C++ Guide: Do not use lambda expressions, std::function or std::bind.

Python Guide: Okay for one-liners.

<comment><USER26> I've encountered a lot of c++ programmers who seem to dislike a lot of c++; even refusing to use the STL. Perhaps it's because c++ and Python have different cultural backgrounds: a lot of early c++ programmers came over grudgingly from c and continued to program in a c-style.

</comment></comment><comment><USER25> Does Google's 80 character limit include the identification sequence?

<comment><USER18> You'd think that with their mountains of cash Google could afford to replace their engineers' 80-character monochrome terminals.

<comment><USER4> Actually you find that many engineers with 30" monitors end up using multiple side-by-side terminal windows, each set to 80 chars.</comment></comment></comment>


Ambition: How we manage success and failure throughout our lives (1992) - <AUTHOR> https://ambition-book.com <comment><USER2> > When we win, we try for more; when we fail, we cut back.

Thanks for sharing this book, OP. I've personally seen this range of ambition in my own life. I can very much relate to this. When I was younger I was always seeking more out of life. Now becoming an adult and struggling as sole- provider of my family and spending many years attending university while trying to help my wife through severe depression and my special-needs child I am now careful about finding new commitments and I'm trying to greatly simplify my life.

<comment><USER3> I feel there's more to this. I've suffered from chronic depression throughout my entire life. The last bout caused me to quit my job and move back to our family home.

Early in my life when I hadn't experienced failure, I used to aspire a lot and actually did achieve quite a bit despite my shortcomings. Programming whilst depressed isn't an easy task. I've been actively trying to get back into the rat race and trying to pursue something achievable yet worth doing.

So while we cut back, we define our limitations and make further goals achievable (rather than moonshots). I'm not going to be the president or a CEO of a $100BN company anytime soon, but it's not like I couldn't cut it as a dev at a decent company.

In failing we realise our limits and rediscover humility.

<comment><USER2> > Early in my life when I hadn't experienced failure, I used to aspire a lot > and actually did achieve quite a bit despite my shortcomings

I was just like this too. I would have preferred experiencing more failure when I was younger when the risks held less consequences. Now I feel like I never met the expectations of my former self but now my future aspirations are more achievable. Rather than running my own business like I always wanted to do or working for a big-name tech company, I'll be happy when I self-publish the book I'm working on with no expectation of it being successful. I am happy with progress since progress is better than failure and doesn't have the same negative consequences when I don't succeed.

<comment><USER3> > progress is better than failure and doesn't have the same negative > consequences

For sure, we need to keep moving. I like to compare us to sharks, if we stand still we exponentially increase our chances of failing.

I'd love to read that book of yours once it's done. Taking care of the two most important people in your life whilst juggling a career is no easy task.

</comment></comment></comment></comment><comment><USER4> Looks like a very interesting book, particularly for those of us who are struggling with the fact that we'll never be the success we once thought we would. Thanks!

For everyone else, check out the prologue; it's short and a good read.

<comment><USER5> Wow, my heart sank when I read this comment.

The frustrating reality of life...

<comment><USER6> Define success. It's impossible for everyone to be way above average. Is it so bad to be a jack of all trades? A good husband, good father and good community member, instead of world domination of some e-commerce area that would have happened anyway?

I'm not saying give up, I'm just saying if we were all Steve Jobs (not to pick on him I've no idea if he was/was not a "good" person) it would be a mad world.

<comment><USER7> A dark thought: today we call a jack of all trades unemployed. Illusions of polycompetency are really just multiple specializations when in a business context.

</comment></comment></comment></comment><comment><USER8> Success is as dangerous as failure.

Hope is as hollow as fear.

What does it mean that success is a dangerous as failure?

Whether you go up the ladder or down it,

Your position is shaky.

When you stand with your own two feet on the ground,

You will always keep your balance.

-Lao Tzu

</comment><comment><USER9> It looks like this is a web page that then loads a PDF from [https://ambition.gratis/ambition.pdf](https://ambition.gratis/ambition.pdf) \-- to what end I'm not sure, though it did screw with my trying to directly save it into a "read offline later" folder.

<comment><USER10> > into a "read offline later" folder.

I have a "pretend you will read offline later but never actually read" folder.

<comment><USER11> Same here, though I find that it still helps a lot with procrastination. Separating the process of discovering content and actually consuming it means I'll only lose 10 minutes instead of getting sucked in for an hour because I'm too afraid to close the tab.

I actually got through a nice chunk of my read offline folder during a long car trip recently, but that only justified this hoarding tendency!

</comment></comment></comment><comment><USER12> For those not sure about diving directly into a PDF at work or want to know why they should, here's a review I found online of the book:

[https://www.kirkusreviews.com/book-reviews/gilbert- brim/ambi...](https://www.kirkusreviews.com/book-reviews/gilbert- brim/ambition/)

"Succinct and finely tuned thoughts on why happiness has little to do with money, youth, or even education, by the director of the MacArthur Foundation Research Network on Successful Mid-Life Development. Humans make themselves happy, Brim argues, by finding a ``way to live at the level of just manageable difficulty.''"

</comment><comment><USER7> This looks interesting, but it'll take some time to read through.

</comment><comment><USER13> He makes an interesting note about robots in the first chapter... which makes me think about the role of 'ambition' in AI. Any writing about that subject out there?

</comment><comment><USER14> A tangential. Is this book available in mobi format for the kindle?

<comment><AUTHOR> it will be in 4-6 weeks. email ambitionbookbrim [at] google's free email and i will make sure you get a copy

<comment><USER15> Any chance for an epub?</comment></comment></comment>


Augmenting Long-term Memory - <AUTHOR> http://augmentingcognition.com/ltm.html <comment><USER2> I use anki for around seven years now and it has proven to be the best learning technique for me so far.

When I went to university I still believed that understanding is everything and learning will happen en passant. I read many books, pondered long about them, and forgot everything a month later.

Five years ago I started studying again (computer science) and as anki has already been usefull in learning programming for me I used it extensively during my studies. Instead of taken notes on paper I just marked important facts while reading and made anki cards for them afterward. Sometimes these where simple atomic facts like "What is the definition of XYZ?", sometimes they demanded a longer answer "How does x yield y?". It took me about 20 to 30 minutes each day to reherse my cards (while commuting to work) and learning has never been that easy.

I soon realized that understanding a fact or each step of a proof the first time you read it is not as important as often stated. Understanding often only came with learning because anki forced me to think about these facts daily. That was much more effective than pondering hard about them once.

I made a deck for each course the day it started and archived it after the exam. But not only did this help me during the exam I also forgot far less of what I have learned afterwards. Overall I would say that learning with flashcards took only about a fifth of the time it would have taken with other learning techniques that have a stronger focus on understanding (mind-maps, active reading &c.)

<comment><USER3> What are the biggest features for your use of Anki, if you don't mind me asking?

I'm writing my own self hosted backend for this type of thing, and I'm curious what features might be of most help for me to memorize data. Though, it's quite possibly that I'd just make a bridge to Anki, who knows.

<comment><USER2> As I used Anki to learn a lot of math and computer science related topics one of the most valuable features has been its integration of latex and the possibility to type formulars.

The thing I missed the most about anki was any possibility to edit and manage my cards in plaintext files. I would have really liked to type my cards with a real texteditor like Vim instead of the integrated gtk text input field.

<comment><USER4> > The thing I missed the most about anki was any possibility to edit and > manage my cards in plaintext files.

Well, that's exactly what I implemented with the vim plugin referenced in comment below!

</comment></comment></comment></comment><comment><USER4> If somebody is looking to streamline their Anki/Mnemosyne card creation, I created this vim plugin a while back:

[https://github.com/tbabej/knowledge](https://github.com/tbabej/knowledge)

It takes a plain text note file and converts it to a set of cards. Syncs the updates if the notes change, and also supports things like images.

I don't have as much time as I used to for open source development, and could certainly use some help (especially on the Anki side, as I am a Mnemosyne user now).

Note that this allows you to not only have a set of flash cards, but also a nice collection of notes grouped by topic, if you want to have an overall look at the section of your domain knowledge (say, linear algebra) in context. This is a bit hard to do with a set of cards already entered in a flash-card application.

<comment><USER5> Besides there are several scripts that make flashcards from text files for Anki. My favorite at the moment is [anki-editor for emacs]([https://github.com/louietan/anki- editor](https://github.com/louietan/anki-editor)) because it stores the anki note-id in the org-file so that I can update existing notes in Anki (contrary to most other scripts I know).

</comment></comment><comment><USER6> Fantastic article!

I want to point out that the essence of these systems, Anki and the others, is that you are teaching your brain what you value.

Your brain is an organ, a kind of _gland_ for _thought_ , and it uses a huge amount of energy (in the form of calories and oxygen, your brain uses something like 20%-- one fifth --of all the oxygen you breath) to do its job.

The brain is only going to spend as much energy as it has to for you to survive, because evolution made it that way. It's only going to spend its energy budget on memory of "facts" if it's convinced there's important survival value to do that.

This budget is largely automatic, but you can influence it, and these flash- card systems work by doing that.

The time and attention you put into setting this up and then being able to successfully answer the questions that pop up, exactly mimic the time, attention, and reward of _hunting small game_.

Think about how a cat _studies_ anything mouse-like, and compare that to the way _most students_ treat studying...

Anki, et. al., set up a scenario where your brain is being trained to regard memory and recall of facts as a fun and easy way to scratch that survival itch.

Your brain can actually remember things instantly and permanently and without conscious effort (in the extreme, pathological case we get _phobias_ ) but it won't bother unless it's convinced you care.

</comment><comment><USER7> "Most students will not use such trivial devices as flash cards; it seems to be beneath their dignity. They suffer accordingly."

Richard Hamming

</comment><comment><USER8> This article is about committing knowledge to long term memory. I've been thinking about ways to actually augment long term memory with external storage. I'm unsatisfied with current software (mind maps, OneNote/Evernote, WorkFlowly, org-mode...). They all feel like building a document. I noticed when I come back to my notes in those formats it takes too much time to retrieve information and to add new information without re-structuring existing information. The existing solutions are not optimized for quickly putting down some facts/ideas/goals for later retrieval, without worrying about layout and structure.

To efficiently augment memory, the software (especially UI) should mimic the way we think. Each captured thought should be in some way related to one or more previous thoughts and stored in the correct context. Inputted notes should be fairly short and they should be organized in graph structure. Edges should define relations, for example: contains, depends on, implies, follows.

When retrieving a thought it should be visualized in context with other related thoughts. This graph should have same layout each time it's retrieved, for better visual navigation. If the system limits the visualization of graph up to 2nd neighbors, there should always be enough space on 2D plane to expand the graph with new thoughts. Manual layout should be discouraged because it wastes too much time.

The basic storage/retrieval model could also be expanded with additional processing to further offload brain activities: logical processing (if an assumption proves to be incorrect, all dependent thoughts should be flagged as incorrect/uncertain), goal prioritization, future event reminders.

The hard problem is entry method. Because such system should always be accessible, the candidate devices are smartphone and smart watch. So far all input methods except keyboard are too slow and error prone. Most input methods also obscure much of screen space and require visual feedback to verify that text is correct (swiping and auto-correct). I'm researching gesture-based and chording virtual keyboards, but there's nothing suitably fast.

This is on my side-project back log, but hopefully I'll find something close enough I can use instead of building from scratch. Any suggestions?

<comment><USER9> You are describing a Memex, and I agree there are no satisfying options.

Some related keywords / projects (from my natural memex): IdeaFlow, Mark Carranza, The Brain, Org-brain.

For input methods, I'm excited for a combination of text-to-speech and neural interfaces like Ctrl-Labs.

Given the level of augmentation users of Anki and Org-mode tout, I'd be first in line for a better interface (like the one you described).

<comment><USER8> Great list of related projects! I missed some of them in my research. Now I'll deep dive into each and steal all the good ideas.

Text-to-speech is very promising, but I could use it only about 20% of time during the day. Other problem is I would constantly have to check the recognized text for errors and have a way to delete and re-entry. So far it's been frustrating to use.

Neural interfaces are really the end goal. AFAIK current commercially available solutions are able to recognize only a dozen actions after training, not enough for text input.

</comment></comment></comment><comment><USER10> Great article! I'm a long time Anki user, and while our use patterns for Anki are a bit different, I really identify with almost everything in that article.

I _highly_ recommend you learn and use Anki, _especially_ if you're actively studying something (e.g., for a degree). I'm using Anki to (partially re-)learn mathematics, and it is gratifying to know that, with a reasonable amount of certainty, whatever I learn I'll actually _remember for the long term_ (unlike when I did my CS degree).

</comment><comment><USER11> My experience with Anki and similar programs has always been that my ability to recall the learned information is heavily dependend on context. Words or facts I can perfectly recall in Anki often didn't come to me in real-life situations.

<comment><USER12> Is part of the context translating from one language to another, vs producing it directly? (e.g. is the front of your card "cat" and the back "gato"?) Or do you use pictures (google image search[1] for "gato" and see what comes up, use one of the pictures for the front of the card, and "gato" on the back). For example, being able to speak the new language without having to think of the words in your first language and then mentally translating it?

As mentioned in the book and website "Fluent Forever" (a language learning method which also recommends Anki), it's better to translate from a picture to the new language rather than learning to translate from your first language.

[https://fluent-forever.com/](https://fluent-forever.com/)

"No Translation"

"Use pictures when learning new vocabulary and grammar rules. You'll discover that you can actually remember what you've learned."

[1] "Fluent Forever" suggests trying google image search in your target language because many words are not direct translations, and you'll notice differences in what types of images come up for words. gato/cat is not a great example of this though

<comment><USER13> Words and pictures are just different ways to represent a concept whose description in the target language you want to learn. It probably impacts fluency (i.e. speed) when you first come up with a word in one language and have to translate it into the other, but learning the connection "word -> word" and "picture -> word" should be equivalent otherwise.

I would try using pictures more to see whether there actually is a difference, but most words I'm practicing with Anki don't corresponding to visible objects at all.

</comment></comment></comment><comment><USER14> The beauty of human memory is not what we remember but what we forget.

</comment><comment><USER15> What is the current state of collaborating on Anki decks? I see there is the CrowdAnki plug-in – this exports decks to a JSON file, which can be version controlled and uploaded to Github. But how well does this work in practice? I feel it would be nice to have a more integrated way of collaborating on decks.

<comment><USER16> I took the "learning how to learn" course in Coursera. They discuss Anki and recommend each person makes their own flash cards because that's also part of the learning process.

</comment></comment><comment><USER17> This is great. Anki looks amazing. The reason I don't use Anki, though, is that I feel like the things I wish I could remember are rarely things I would have had enough foresight to make a flashcard for. In other words, I rarely feel like I have a problem remembering things that I would have been wise enough to make a reminder about. The things I wish I could remember are things in books that I didn't even pay much attention to on a first reading. It's things that I wish I could see all the hidden connections to once I realize some new insight.

There are things I know I want to remember and there are things I realize I would have wanted to remember more clearly only after I have learned some fundamentally new way of viewing the world. The former Anki solves but they're rarely things I feel a problem with, and the latter is by definition things I wouldn't have paid enough attention to to write down in Anki.

</comment><comment> bra-ket It would be interesting to automate the "ankyfication" process, i.e. given a text extract a set of questions and answers , then it can be used either for personal learning or as a feed to a memory machine

<comment><USER18> It would be interesting, and has been tackled eg by [http://www.cs.cmu.edu/~mheilman/papers/heilman-smith-qg- extr...](http://www.cs.cmu.edu/~mheilman/papers/heilman-smith-qg-extr- facts.ppt) . Nielsen specifically hypothesises that coming up with the questions yourself is part of learning and building understanding. Using software-generated q's and a's would be like using someone else's deck, only the someone else is a program.

<comment><USER19> I haven't studied this issue much, but was surprised to hear on one of the learning scientists podcasts that generating cards may not be very useful for learning / consolidation.

(It was in one of their first 6 episodes, not sure what to think of the claim)

[http://www.learningscientists.org/podcast- episodes](http://www.learningscientists.org/podcast-episodes)

</comment></comment></comment><comment><USER20> I augment my long-term memory by truly augmenting my brain via blog posts on ryanmercer.com that I tag thoroughly, Evernote entries that are filed broadly and tagged thoroughly and by forwarding remotely useful emails to myself in Gmail with the search strings I'd likely use to find them in the future.

Obviously this requires connectivity but I'd rather offload the stuff to a server somewhere than carry EVERYTHING in my mind.

</comment><comment><USER21> Does anyone know if there is an alternative to Anki with a better web experience? My biggest hurdle in using Anki is working on computers on which I am unable to install software and the lack of quality support for the web version.

<comment><USER22> Yeah! I'm working on one here: [https://github.com/pensieve-srs/pensieve- web](https://github.com/pensieve-srs/pensieve-web)

</comment></comment><comment><USER23> Anyone have a link for where to obtain the desktop and mobile clients? I couldn't find links in the page, and Google play store has dozens of things named Anki.

<comment><USER19> Home page - [https://apps.ankiweb.net](https://apps.ankiweb.net)

Android app - [https://play.google.com/store/apps/details?id=com.ichi2.anki](https://play.google.com/store/apps/details?id=com.ichi2.anki)

</comment></comment><comment><USER24> This is fascinating. I'm starting a new job soon with a new platform to learn and this is something I'm going to incorporate.

</comment><comment><USER25> windows client installer is pretty large at 29MB and scores 3 detections out of 66 on virustotal.

<comment><USER5> actually one flags it as suspicious. so 2 detections. I think that's quite good if I compare it with the much more popular latest firefox for windows installer which scores 1 detection out of 64 [virutstoal]([https://www.virustotal.com/#/file/d35d12cb0e864c59edbf7e2630...](https://www.virustotal.com/#/file/d35d12cb0e864c59edbf7e26304a0f33aa3a89e33299b91e62233ee43884cd74/details)).

</comment></comment><comment><USER26> Remembering is not as important as training. As recent HN submission put it, you can't tell people anything. You can, however, learn languages with anki- style cards, if that is what you want.</comment>


The perils of internationalized domain names - <AUTHOR> http://daringfireball.net/2010/09/starstruck

<comment><USER2> I still think that supporting Unicode in domain names is asking for trouble. Don't believe me? Just wait until a few thousand people get suckered into giving their credit card information to "amazοn.com". That's amazοn with a lower-case omicron, not an O. A workaround for this, used by Safari and probably others, is for the browser to only display the ASCII-encoded versions of the URLs -- in this case, "xn--amazn-uce.com" -- but that defeats the purpose of having Unicode in your DNS in the first place.

<comment><USER3> Browsers are already aware and defending against this: [http://en.wikipedia.org/wiki/IDN_homograph_attack#Defending_...](http://en.wikipedia.org/wiki/IDN_homograph_attack#Defending_against_the_attack)

</comment></comment><comment><USER4> _> I frequently get asked how and where I registered a non-ASCII domain name. Many — probably most, in fact — domain name registrars don't support IDN. I used Dynadot to register mine, and consider myself a satisfied customer._

Bizarrely all the registrars I checked seem to have a separate search portal for IDN, and don't even let you search for the punycode version using their normal tools.

</comment><comment><USER5> If you you firefox and want to prevent the possibility of IDN spoofing, you can turn it off in about:config. Set network.enableIDN to false.

</comment><comment><USER6> I shall await a spoofed google.com with cyrilic o's instead of unicode o's and cackle with glee when people visit it</comment>


Show HN: Visual website editor for Atom - <AUTHOR> http://pinegrow.com/pinegrow-atom.html <comment><USER2> Pinegrow home: [http://pinegrow.com/](http://pinegrow.com/)

</comment><comment><USER3> Charging $ to use Atom? No thanks.</comment>


Why Silicon Valley billionaires are prepping for the apocalypse in New Zealand - <AUTHOR> https://www.theguardian.com/news/2018/feb/15/why-silicon-valley-billionaires-are-prepping-for-the-apocalypse-in-new-zealand <comment><USER2> I don't know, I get how the whole survivalism might seem eccentric and even paranoid, but if I had a billion dollars I would absolutely be willing to spend a few million on preparing for worst case scenarios.

I know wealth doesn't really work in strict linear proportions, but as someone with a much lower net worth, I think it's reasonable to keep iodine tablets and canned food around, and can pretty easily imaging scaling that up a bit if I had drastically greater access to capital.

None of this is to say that I'm discounting the article, I actually liked it a lot.

<comment><USER3> I think that preparing for the worst case is understandable, but this way of preparing seems totally misguided and very childish.

I like the way Bill Gates is preparing much more, he is actively working and spending his billions to avoid collapse.

Peter Thiel and his likes seem to actively work toward collapse, gaming the system and profiting from the misery of the less fortunate along the way. Hoping to reestablish an "improved" version of their society elsewhere, even after its collapse, is beyond belief.

I hope that having friends will help more than having property, in the event of society collapse. At the very least, I'd hope NZ would quickly take all his money as a special "solidarity tax", if that day would come.

</comment></comment><comment><USER4> The most likely collapse will be a societal one due to growing inequality. One strategy to survive this type of collapse would be to move to a country with very low inequality. For a billionaire this could be painful because the taxes will be high (they are the reason for the low inequality). But hey, better than being lynched by an angry mob, right?

</comment><comment><USER5> Peter Thiel bought a 477 acre sheep farm in New Zealand. How long can he really expect to survive there and with what quality of life if Armageddon happens?

I don't think he's on record saying that's why he bought it and the Sam Altman quote taking about a deal with Thiel to fly there in the event of societal collapse sounds more like a joke between billionaires than a means of survival.

It seems like someone wrote an insanely long article about a rumour about why a billionaire bought a secluded piece of land.

<comment><USER6> Though if you think about it, if you want to survive in a potential societal/structural apocalypse then a remote secluded island seems like the best option. NZ seems to be advanced enough to support decent lifestyle, and isolated enough, too.

Not that I believe in the kind of apocalypse that New Zealand somehow would be the safest place to hide, but seriously, why are these people buying property there? Any rational explanation?

<comment><USER7> I have no reason to not believe the article when it says:

> "Look," he said, "it might be one strand in terms of what's motivating them > to buy here. But in my experience it's never been the overriding reason. > It's much more of a positive thing. What they see when they come here is > utopia."

> In one sense, I knew what he meant by this. He meant excellent wine. He > meant world-class golf. He meant agreeable climate, endless white sand > beaches that scarcely aroused the suspicion of the existence of other human > beings.

The author goes into more detail about the tensions between the different and even contradictory views of "utopia" in the history of New Zealand.

</comment></comment></comment><comment><USER8> Excessive wealth does weird things to the mind.

</comment><comment><USER9> Quite a lot of fuss over not a lot of real estate.

Not much here to indicate that Peter considers this a real bug out plan. At this stage it seems more likely that he just enjoys the views.

</comment><comment><USER10> Right right. But I think Thiel chose NZ for other reasons. NZ offers tax-free living for the first 5 years of your stay.

</comment><comment><USER11> Its the country best sheltered from

1\. population increase (immigration) 2\. climate change

</comment><comment><USER12> How long is this article????

<comment><USER7> Just under 7,000 words, the first three of which are "The long read".

This identifies the piece as being long-form journalism, even without reading the text. Quoting [https://en.wikipedia.org/wiki/Long- form_journalism](https://en.wikipedia.org/wiki/Long-form_journalism) .

> Long-form journalism is a branch of journalism dedicated to longer articles > with larger amounts of content.[1] Typically this will be between 1,000 and > 20,000 words.</comment></comment>


Hiring Software Developers - <AUTHOR> http://hesh.am/2013/11/hiring-software-developers/

<comment><USER2> _> "Can you even remember when was the last time you had to write an algorithm to traverse a tree?"_

Fairly often? There are lots of things taught in comp sci classes you could have used for your example here, but traversing a tree is not one of them. Huge amounts of software will have something as basic as traversing a tree and if you can't remember how to do it even 20 years out of comp sci classes, I'm not sure you should be writing code anymore.

I'd think that refusing a candidate who can't work out how to traverse a tree in 5 minutes for an interview isn't a strong candidate for any coding position. At least I wouldn't hire someone who couldn't. (Give it a try if you doubt me, if you've done any amount of coding you should be able to work this one out very fast without ever stepping foot in a CS class, although you might have to spend 2 mins on Wikipedia first to see what a tree is)

I agree with the article though: best way to hire someone is to give them a trial run. However, most employable developers will laugh in your face if you ask them to come work for you as a trial run without pay. At least, I definitely would.

Paid 1 month trial of remote work is a good bet, but relies on your candidate not being employed already - and if they're any good, they are probably employed already. I guess you might catch freelancers though, but freelancers are not going to agree with the rest of the points in your post.

<comment><USER3> He says "traversing a tree to find the shortest path". Sounds an awful lot like he is confusing graphs and trees. You don't really tend to path find with trees. Am I right?

Trees are very useful. Graphs are occasionally useful. But you can't really say what is useful until you know it. One of the sadder truths of education/learning.

<comment><USER4> Definitely. In a (directed) tree there are exactly 0 or 1 paths between two nodes. There's no such thing as a shortest path. In an undirected tree there's exactly 1 path between any two nodes---even worse.

You might be representing a graph with a tree however if your nodes are labeled and you want to talk about the shortest path between two nodes quotiented by those labels.

</comment></comment></comment><comment><USER5> I've hired several junior developers after just chatting without really getting into deep technical details. With junior developers, I'm more concerned with the individual being a good fit for our team culture and dynamic.

With more seasoned engineers, I mostly just ask about projects they've worked on before. The good engineers that have been a great fit with the team are the sort that (when prompted) get really excited when I ask about their previous projects. They go into great detail on cool hacks they made and challenges they were able to overcome. People that aren't a good fit usually give simple answers to direct questions. If I have to goad the developer along during the interview process, it's a non-starter.

And, to agree with some of the other commenters, none of the best engineers we've hired have ever been unemployed during our courtship phase. We make every effort to accommodate their work schedule, including having interviews during lunch time or in the evenings and weekends. Good developers are generally not out of work for very long, if at all. If a guy wants a job with us and isn't currently working, it's almost always a sign of some deeper problem.

<comment><USER6> You do realize that disclosing details of a proprietary project that I've worked on might be a no-no? A lot of us have signed a paper explicitly stating that we're not allowed to do this.

</comment></comment><comment><USER7> Nice article, except I disagree on one point: Forget about a general Github account. Even having a Github account/or a Github project used by a billion users - does not prove that one is a great programmer according to me. Perhaps this a Github advertisement? (Python lover + mercurial user + No Github Account = bad programmer :-)

<comment><USER8> Or that not having a GitHub account with a billion stars makes you a bad programmer.

Or (gasp) not having a GitHub account at all.

Chances are, if you're a full-time software engineer, you're already spending a significant chunk of your waking life thinking about\working on code, just by showing up to work for >= 40 hours per week. Whatever happened to well- rounded employees?

<comment><USER9> In my first interview, one question asked was "How do you maintain a healthy work/life balance" which was really encouraging.

</comment></comment></comment><comment><USER10> One problem with "go do a task" interviews is that you can't gauge a company's interest in you, the candidate, before doing them.

I remember doing a task-based interview once, getting an offer, and having it retracted after I asked to meet with the team before accepting (they just moved on to another developer who would accept without meeting the team first). This was a reputable, respected small company. Clearly, task-based interviews let them determine who was competent and who wasn't, but I was the only one who was invested in the interview process.

Payment helps and it's great to see some companies pay for project interview that aren't even directly related to their technical needs. The company invests money and the candidate invests time.

</comment><comment><USER11> I have gone through a couple of interviews at large companies recently. I have over a decade of experience, and I can tell you that I know what I'm doing. I have a real problem with these whiteboard handwritten algorithm problems. I'm not sure why companies insist on conducting interviews in this manner. It doesn't represent anything close to how I actually go about solving problems. Hell, I RARELY actually write anything down anymore, so the slowness and errors I make in writing just make it that much more distracting.

Why do these companies not just give you a computer and an editor, hell, even one with code completion enabled, and let you solve the problem that way?

I agree completely with this article. I have not once needed to write an algorithm to traverse a graph, or find the shortest path, etc. I have RARELY ever needed to implement a common data structure myself. That's what libraries are for. People that write library code wouldn't be able to properly write these data structures in the allotted interview time. It makes very little sense.

Something else to note. Traveling from one coast to the other for interviews almost certainly has a mental cost. I have noticed it personally, that the jet lag reduces my concentration and ability to process.

I'd be interested to see statistics on what percentage of hires were actually successful when coming from the same coast vs the opposite coast.

</comment><comment><USER6> > Things like traversing a tree to find the shortest path.

No one is going to address the fact that there is only ONE possible path to a node in a tree? This guy seems to have no idea what he's talking about, no wonder he dislikes algorithmic questions. Instant no-hire.

</comment><comment><USER12> Reasonable and sensible article about hiring. Nice work.

<comment><USER13> I don't think just asking for a github instead of a CV is sensible or ethical.

[https://news.ycombinator.com/item?id=6728417](https://news.ycombinator.com/item?id=6728417)

</comment></comment><comment><USER14> Great article! I had an interview where they asked me a brain teaser question that I could not answer. It was completely unrelated to what I do day to day. These math based brain teaser questions are really out of place.</comment>


Ask HN: Which open source project should I contribute to? - <AUTHOR>

I am an ordinary programmer with deep interest in PHP, Python and JavaScript. Whenever I get bored I like to write code. I realized that if I spend my free time helping some open source project in above three technologies I will be helping the world be a little better place.
But then where should I look? I am not sure if I can contribute something big but I am sure capable of fixing a bug here and there, writing a jQuery plugin useful to someone and so on.
Problem is not lack of skill or time but lack of ideas. How exactly should I go abotu contributing to an open-source project? <comment><USER2> Wanting to reciprocate in some way to the open source projects you benefit from is natural, but the reality of the matter is far from obvious. Unless you are truly interested and fascinated by the code, you won't keep at it. The time and effort invested by the other project developers in your education will eventually be wasted when you lose interest. It might not be a complete waste since you might actually make some useful contributions, but all healthy projects are looking for long term contributors.

I hate to say it, but if you knew of a project with code that fascinates you, then you would not be asking this question, instead, you'd be working on it right now because it's fun.

With that said, the easiest way to get started in any project is just start fixing bugs and submitting your patches. Everyone loves bug fixes, even if you do them wrong the first time and need to redo them. In other words, it's your effort and dedication that shows through and is important. You don't need to be the world's greatest programmer or the resident expert of a codebase, but you do need to keep trying, and you need to be able to listen to feedback and learn from it (even if harsh).

Lastly, there's always more things to do to help a project than people to do them. Though a project _IS_ code, you can always find other ways to contribute if you use your imagination and put in some effort.

<comment><USER3> @jcr agree. If you have to ask, then you probably won't stick with anything that anyone suggests. Doing development on an open source project is like another job, and if its not something you enjoy doing or is a hobby for you then you will end up not sticking with it.

</comment></comment><comment><USER4> Here you have a list of PHP + Python + JavaScript Open Source projects <https://www.masterbranch.com/javascript-php-python-projects> (Disclaimer: I'm the co-founder of the site).

As others said, one way to start contributing is ask on the mailing list. Maybe you can start askin / answering some questions, being active and offering you to do some minor bugs or documentation (this is a good start). if you feel confortable and you have been doing a good job you will be able to continue with your contributions.

Also, the most important part is: have fun, try to pick a cool project, something that you enjoy and start from there.

Last but not less, good luck with that

<comment><AUTHOR> This is really cool. I really wanted something like that.

</comment></comment><comment><USER5> Most Open Source Project use version control systems/Source code management system to track the code base. Do you have experience in using them. I found a bug in miro few months back, and wanted to patch it. They managed their source code with Git, So, I ended up learning some important things in Git.

So, Also make sure you have knowledge about VCS like Git, Subversion under your belt.

<comment><AUTHOR> yes, I am proficient with GIT.

</comment></comment><comment><USER6> I have several I need help with. I am a part of a team building an open source social search engine framework in python/javascript to compete with the likes of radian6 and socialmention.

Contact me at firstname.lastname@example.com if interested :-)

</comment><comment><USER7> Check each project's bug tracker and see what you can fix.</comment>


The Highest Earning Hedge-Fund Managers of the Past Year - <AUTHOR> http://www.institutionalinvestorsalpha.com/Article/3337321/The-Rich-List-The-Highest-Earning-Hedge-Fund-Managers-of-the-Past-Year.html I had a debate with pg that the biggest wealth in the past 15 years has been created in Finance, not Technology. Thanks to years of misbegotten Federal Reserve policy, the economy is now heavily financialized. If you want another proof, look at the list in this URL, and keep in mind this is all for just <i>one year</i>. <comment><AUTHOR> I had a short debate with pg a while ago on HN, where I said something to the effect "Finance has created far more wealth in recent years than technology or entrepreneurship". I don't think that trend is good for the economy but that is the inevitable consequence of the monetary policy the Fed has been running. The economy is well and truly financialized, and finance rules.</comment>


4,600 Expected to Be Deported for Using Fraudulent Experience Letters - <AUTHOR> https://www.rnlawgroup.com/news/797-4-600-nonimmigrants-expected-to-be-deported-for-using-fraudulent-experience-letters <comment><USER2> (WARNING: This is a socio-political meta rant.)

Alas, the 'jugadification' of India, in the face of fickle extractive governance systems (incl. the current one) over from the past 1000 years, has led to a situation where rules are essentially seen as another imperial imposition, meant simply to be overcome, either by hook or crook.

Not that I blame them - the Indian constitution itself is almost entirely based on the Govt. of India act, which at the time was meant to 'seal' India's fate as an imperial plunder house (unlike those with White settlers). It shows too - reading the case judgments, even those of the Supreme Court in Delhi, just shows how alien these systems truly are in India (even after _this_ many years). Of course the fact that it's all done in his master's 'imperial tongue', doesn't help.

<comment><USER3> Everything is the white man's fault.

</comment></comment><comment><USER3> It is mindboggling how shitty everything around these companies are. Anybody with 10 minutes of time can clearly see how fake they are. And they didn't even try to keep low profile; they got into the top 10 of producers of those experience letters. What did they expect would happen?</comment>


Augmented Reality Virtual Keyboard using HTML 5 - <AUTHOR> http://nicklothian.com/blog/2009/11/18/augmented-reality-virtual-keyboard-using-html-5-video/

<comment><USER2> If you watch the end of this video [http://www.ted.com/talks/pranav_mistry_the_thrilling_potenti...](http://www.ted.com/talks/pranav_mistry_the_thrilling_potential_of_sixthsense_technology.html) which was posted on HN a couple of days back, you will see a lot of things that he proposes which can completely change how we interact.

He not only gives an example of virtual keyboard, he also gives example of a paper can be converted into a touch screen with a motion sensor.

Highly recommended video.

<comment><USER3> I didn't know you could download MP4 videos of TED talks! (links below the video)

[http://video.ted.com/talks/podcast/PranavMistry_2009I_480.mp...](http://video.ted.com/talks/podcast/PranavMistry_2009I_480.mp4)

</comment></comment><comment><AUTHOR> With quite a few Augmented Reality iPhone apps currently in development, along with creative new approaches such as this use of HTML 5 video, I see Augmented Reality as a frontier with a great deal of space for startups to flourish.

<comment><USER4> Thanks

Personally, I'm becoming convinced of two things:

1) Sci-Fi AR is much, much closer than people think. Obviously iPhone/Androids apps are a good first step, but Minority Report style UI's within 2 years wouldn't surprise me.

2) AR is going to be HUGE. I think there is a distinct possibility that AR could be bigger than the web. It feels odd saying that.

The one thing holding it back is the lack of the AR equivalent of HTML/HTTP. At the moment everything is proprietary. Hopefully, HTML5+Extensions (eg <http://www.w3.org/2009/05/DeviceAPICharter>) will get there soon.

</comment></comment><comment><USER5> I'm confused. It doesn't seem there's a way to read the webcam from HTML5, right? Did he just upload a video? Or am I missing something here?

<comment><USER4> The demo is using a recorded video in the left view, with JS processing on the right. When he (I) was developing it, I used VLC to stream the webcam to the page.

If you view-source, I've got a link to the documentation on how I did that: "To use this with a webcam instead of a saved video you'll need to stream your webcam via the same domain this is running from. [http://nicklothian.com/blog/2009/11/17/using-a-webcam- with-h...](http://nicklothian.com/blog/2009/11/17/using-a-webcam-with- html-5-via-vlc/) has some docs on this."</comment></comment>


America's secret role in the Rwandan genocide - <AUTHOR> https://www.theguardian.com/news/2017/sep/12/americas-secret-role-in-the-rwandan-genocide <comment><USER2> "The US was monitoring Ugandan weapons shipments to the RPF in 1992, but instead of punishing Museveni, western donors including the US doubled aid to his government and allowed his defence spending to balloon to 48% of Uganda's budget, compared with 13% for education and 5% for health, even as Aids was ravaging the country. In 1991, Uganda purchased 10 times more US weapons than in the preceding 40 years combined."

It's wrong on so many levels, but I want to concentrate on this.

So basically the us government gave away the tax payers money to murderers, which they used to buy weapons from U.S defense companies. How many more deaths will the greed of the companies cause.</comment>


Ask HN: Established company planning same thing as 1-man startup – please advise - <AUTHOR> I came up with the idea for matching up employers and potential employees based on common answers to user-submitted multiple choice questions: the idea is basically an online dating site, only for employment.  I told my buddy about the idea and he pointed me to a WaPo article about how eHarmony is getting into this space, launching in December (http://www.washingtonpost.com/blogs/on-leadership/wp/2014/08/08/eharmony-wants-to-match-you-with-the-perfect-boss/). At this point, I have an MVP (emphasis on 'minimum') prototype running at http://proqua.0xf1d0.net; but I'm not sure where to go next.  One possibility is to try some sort of advertising campaign; another is to proceed directly to seeking capital (I have some personal money to play with, but not nearly enough to build a team and make a splash in a furious hurry).  Unfortunately, I have no direct personal experience with either. If anybody has any suggestions for what a good next move would be, I'd appreciate it. <comment><USER2> I have seen a lot of startups with the same concept, probably at least a dozen. So you are not alone. That being said, worrying about competition is silly. In fact, if one of your competitors gets traction you should see that as validation for your product, think about what you can "copy" and what you can improve upon. Just make sure you can tell the difference between what the press writes and what is actually going on behind the scenes.

The real question you should ask yourself is: How passionate are you about this product? Can you imagine spending the next 3 years working on this, giving it your full time and attention?

If yes, go ahead, keep on eye on competition, but don't obsess about it. Keep hustling. There are many ways you can beat the "bigger" players. The best marketing is usually free. The saying that Microsoft was replaced by two guys in a garage doesn't come from nothing. Also, it's a big market with enough space for multiple players.

If you are not incredibly passionate about this industry and product you should probably stop right now. In this space, with lots of competition, you are probably not going to get huge traction (or money) from one day to another. It's a marathon, and without the right motivation behind the product it's difficult to keep it up. And most of your competition will die for this reason, not due to the lack of marketing dollars.

Edit: Also, a large part of marketing such a product goes towards changing the habits of job seekers. Initially, there will be a lot of resistance (or inertia). People are not used to your way of looking for jobs. You need to teach them. Competition will be immensely helpful with this. They educate your target audience for you. Once someone is actually willing to change their habits and try out a new way of looking for jobs (e.g. your competitor's) it's much easier for them to "just switch to the better product", which is where you come in.

PS: I won a hackathon with the exact same idea once ;) But I didn't keep working on it.

</comment><comment><USER3> Before you pour in personal money, you should really think twice if you want to enter this market.

The employer-employee matching market is pretty fucked up in my opinion and personally, I wouldn't touch it with a ten-foot pole. It feels horribly broken and I understand why so many people try to get into the market. There surely must be an easier way to match employees with employers than everything out there yet.

My main objections are:

\- This is not a technical problem. Matching employees to employers _feels like an easy problem_ but is incredible hard. Hence, there are assessment centers and headhunters. Do they work? Some articles pop up on HN every few weeks that suggest that they don't.

\- In my opinion, it is not even a problem. Top talent isn't hired by match- making platforms. So you try to match average Joe with average jobs. For this job, a simple job description should be sufficient (and it is, mostly).

\- Match-making platforms are easily game-able, because they're only an intermediate step. The goal is to get a job interview, thus it's better to game the system as an employee than to play by the rules

\- "My PHP skills are a 7 out of 10, you're looking for at least an 8. Am I really a 7?" -> there's no objective way to judge skills. It depends on the job and on the employer. Thus, the best solution is to put as many skills as possible with the highest points as possible.

\- Try to think of this "problem" by comparing it to housing-platforms. You're looking for a 2 bedroom appartment. It should be bright, not much noise, under 1000$. Surely, you can now filter search results, but a match is done in real life. There's no way to tell if the appartment is really for you unless you've seen it with your own eyes and got a feeling. The same is true for jobs. There's no way to tell if someone is a good fit without having human contact. For appartments, a simple appartment description is enough. Why would you try to apply sophisticated matching-algorithms to human beings?

The only way this might work is if you try to target a specific niche that you really know a lot about.

</comment><comment><USER4> Recommended reading:

[http://techcrunch.com/2012/04/24/with-1-5m-from-adecco- path-...](http://techcrunch.com/2012/04/24/with-1-5m-from-adecco-path-to- wants-to-be-the-eharmony-for-jobs-in-silicon-valley-and-beyond/)

[http://venturebeat.com/2013/07/16/path-to-shuts-down- after-l...](http://venturebeat.com/2013/07/16/path-to-shuts-down-after-losing- uphill-battle-to-improve-job-search/)

[http://seriousstartups.com/2013/07/18/jacksonville- startup-p...](http://seriousstartups.com/2013/07/18/jacksonville-startup-path- to-finds-path-to-startup-failure-shares-ways-avoid/)

It seems something beyond smart matching algorithms is needed to really make it in the job search/recruiting space. Unless eHarmony has found such a breakthrough, they don't have any advantage but sheer weight. As someone else mentioned, smaller == faster. I wouldn't spend anything above what was already planned on marketing or whatever, you'll certainly not win that race when they have a fuckton of money available.

</comment><comment><USER5> This is a two sided market, and many people see that as a challenge. However, one side of the market is unemployed people, who are generally desperate and willing to submit their resume just about anywhere. (Apologies if that sounds insensitive to anyone, but it's true in the general case.)

Here's your strategy, at a high level:

> 1\. Acquire as many employee leads as possible.

> 2\. Sell the leads to companies.

So your first step is acquiring employee leads. The easiest way to do this is to set up a google docs form, with the set of questions you want to ask employees. Include name, location, contact info, and resume.

Post on the employment section of craigslist in every city, every day. There are ("blackhat") services that will do this for you, or you can setup your own system with proxies and automation. I guarantee you will get an absurd conversion percentage. Unemployed people will submit their resume almost anywhere.

In your CL post, be upfront about what you're doing. Tell the employees that you are matching them to companies based on questions they answer. Feel free to lie about how many companies you have signed up. Say it's something like 1000, which sounds like a lot and will convince them to give you their info, but also gives you plausible deniability when they don't hear from any companies for a while.

Once you have a sufficient number of leads, it's time to get the other side of the market. Pick some companies you want to sell customers to. Go through your spreadsheet, and answer questions how you think that company might answer them. Then, go to the company. Seriously... physically go there. If you can't do that, send a first class fedex envelope with some really nice marketing materials. Explain to them what your service is, and tell them you have X employee leads who answered this set of questions. If they're interested, they can pay you per lead or a percentage of salary for any hire.

Boom. Leads sold, money made.

Notice how you do not need to build out your product. You have everything you need right now. Maybe make a nice landing page for your Google docs form, but otherwise, you don't need to do any coding. Get the leads, get the companies, then build out the product.

Move fast. You are not eHarmony. You don't need to put out some polished product, and you don't need to play by the rules. Hustle!

<comment><USER6> > feel free to lie about how many companies you have signed up. Say it's > something like 1000.

Is this really the sort of advice we give here?

<comment><USER7> It's a complicated line sometimes to walk.

Reddit for example faked their user base to get started, and have admitted such, here:

[https://www.youtube.com/watch?v=zmeDzx4SUME](https://www.youtube.com/watch?v=zmeDzx4SUME)

This is a common approach to demonstrating a product early on when there's little to no traction. If users show up and it's a ghost town, they will leave.

<comment><USER8> It's really not that complicated.

</comment></comment></comment></comment><comment><USER9> How did you plan to market and sell your service before you found out about potential competition? You should execute that plan without regard to what others are doing.

The biggest threat to your ability to get off the ground is not eHarmony. In your general market (services that connect job seekers and employers), there is _already_ significant competition, so what one company does or doesn't do will matter a whole lot less to you at this point than your willingness and ability to hit the pavement and sell what you have.

eHarmony is working with three Fortune 100 companies. There are 1000 Fortune 1000 companies. If you called each and every one of them, do you think you could get a few interested in working with you on a trial basis? The answer to this question will reveal more about your chances of success than a Washington Post article.

<comment><USER10> > If you called each and every one of them, do you think you could get a few > interested in working with you on a trial basis?

This is a smart play, market validation. Your system solves a problem for the heads of Talent Acquisition and Human Resources. But a CTO/CIO might be the true economic buyer.

</comment></comment><comment><USER11> Competition isn't bad. Markets are huge, don't let that part scare you.

However, two-sided market startups are very, very hard. Unless your business model works before having a liquid market form, you're probably doomed. Especially as a 1-man startup, it just sounds crazy. The thing with 2-sided market business is that the more you succeed, the more you have to grow the business, and it's usually not profitable at first.

Unless you're willing to get external funding and be in it for the long-haul and be OK with a largely binary outcome in terms of success (complete failure or big success), this is the type of business scenario I'd advise against being the best place to apply your efforts.

</comment><comment><USER12> This is a good thing, not a bad thing. A market of one is a lonely place to be. It's much better to have a large company creating the market and bearing the expense and then leaving niches open for you to fill.

</comment><comment><USER13> Competition reduces marketing expenses and adds parameters for differentiation.

<comment><AUTHOR> I agree with you, but I'm not sure how effectively I can compete as a 1-person operation.

<comment><USER14> In terms of marketing, no, you'll never be able to compete with eHarmony, they were one of the first online dating sites with a TV presence, they know how to sell their wares.

However, a one man show can absolutely out-react a large company like eHarmony. Assuming you've got the chops, you can push out new features and respond to user needs much quicker than a large development team can, simply by virtue of having no debate or discussion to get in your way.

So if you can get known, you can compete.

I had a similar idea to yours a little bit ago, but don't have the freedom of time to develop it. I extended the questionnaire system it to the business model, where the more questions answered and details provided by the employer, the cheaper it is for them to list. Take advantage of the high cost of posting on most job boards to drive for better matches. The idea being that large corporations would likely just pay the extra cost to get their opening out there, but small companies would be incentivised to provide more indexable data in order to get better matches.

Dunno if its something that fits into your idea, but I give it up simply because I'm sick of how awful all the job sites are.

Also, if you need a source for questions: [https://github.com/ChiperSoft/InterviewThis/blob/master/Inte...](https://github.com/ChiperSoft/InterviewThis/blob/master/InterviewThis.md)

</comment></comment></comment><comment><USER15> Generally speaking, large companies tend to suck at executing on anything but their core products. Other startups are a far greater threat, simply because they tend to move faster and with greater focus, usually with a much higher- quality product.

In this case though, I'd say the threat is about equal since eHarmony has a massive amount of users. Keep in mind that many startups looking to foster a two-sided market fail because they can't reach the minimum threshold of initial growth required for their product to work as intended.

</comment><comment><USER16> I am building a similar product for the same market and what everyone has told you on this thread is great advice. People thinking that there is a one size fits all solution to hiring methods usually go out of business (path.to work4pie etc). Big hitters entering the market validates what you are doing. We have a very specific proposition for a very specific group of people which we want to solve best. If you are really interested in this problem maybe we could talk more outside of HN.

</comment><comment><USER17> There's lots of good things about this. They're going to spend money educating the market about this kind of service but they're never going to be a monopoly, they'll have lots of competitors if the market is big enough, and someone else had a similar idea and thought it wasn't horrible too.

You should launch and carry on with your existing plans, faster.

</comment><comment><USER18> Only because Ask Jeeves was popular didnt meant for few folks to create Google. Facebook? Twitter?

Use others experience to avoid mistakes and use being one man army as advantage - you dont follow stiff corporate code. Why Google and Facebook have issues with creating new service that will rock the world? WHy they need to buy startups? Use this as advantage!

</comment><comment><USER19> Hire a lawyer, file IP for your code and invention, backdate it to the time you started and show the logs of your Git account as evidence.

Write the other company a C&D letter, that references you IP.

You need two things when you first start out a lawyer to file IP and an accountant to figure out your money flow and forms.

</comment><comment><USER20> Established companies are notoriously bad at the pace at which they respond to users - so don't worry about the fast that you have an established company entering the space.

The bigger challenge in my opinion is that this is a two sided market (and building such business is very hard).

</comment><comment><AUTHOR> Thanks a lot, everybody, for taking the time to read & respond. I'm grateful for the advice & encouragement.

</comment><comment><AUTHOR> Well, so far, the general consensus seems to be to carry on as initially planned.</comment>