Markdown Here – Write email in Markdown - <AUTHOR> http://markdown-here.com/index.html <comment><USER2> I absolutely love this extension and it's been a stable part of my workflow for the last 2 years or so.

For people who are asking what the use case for this is have clearly never tried sending chunks of code over email (especially a auto-word-wrapping HTML client like Gmail). Markdown Here allows me to create beautifully formatted code blocks which are readily shared with the rest of the team and beyond (Even non-Engg love reading well formatted blocks of markdown).

My workflow for a lot of mails sent out to other teams involves the following template:

\----

Hey there! I ran into this error while running XYZ service. The error seems to be with a background sync script that is failing to update data. The call and params along with the response is shown below:

```

insert block of code here

```

Please let me know how to resolve this. We can get over a quick Hangouts call if necessary.

\----

Select and "toggle markdown" using the extension. Send!

YMMV, but this extension has been a gamechanger for me! Thanks for an awesome extension! :)

<comment> adam-p > Thanks for an awesome extension!

You're welcome! (I won't reply to every positive comment, but...)

The impetus for me to create Markdown Here was mostly a) code blocks, b) nested bullet lists (which are fiddly and hotkey-heavy in a rich editor). (Brief origin story, fwiw: [http://markdown- here.com/about.html](http://markdown-here.com/about.html) )

<comment><USER3> Any chance of creating a Brave extension? [https://brave.com/](https://brave.com/)

I know probably not, but it's the only browser I use for gmail. It's so convenient keeping it open in the background, isolated from my main Chrome browsing workflow. Whenever I get an email I get a nice OSX popup. I know Chrome can do this too but I restart Chrome like five times a day.

Brave is pretty good, but doesn't get much love. Hopefully it'll catch on more.

Thanks for your work!

<comment><USER4> Do they have tabs on the side?

<comment><USER3> Nah. Admittedly the tabbing kind of sucks. You can't even tear off tabs into windows.

Tabbing is an interesting thing... I've always been jealous of Firefox's tree- style tabs, which are impossible to implement on Chrome. But never quite jealous enough to give Firefox another shot. Yet.

<comment><USER5> Try Quantum, in beta until next week. Just trying it now and very impressed:

[https://www.mozilla.org/en- US/firefox/channel/desktop/#beta](https://www.mozilla.org/en- US/firefox/channel/desktop/#beta)

<comment><USER4> Beware. Tree style tabs has become quite slow on newer Firefox (nightly)

</comment></comment></comment></comment></comment></comment></comment><comment> adam-p I'm the author of Markdown Here. And surprised to open HN and see it on the first page! I can answer any questions (although it's really a straightforward tool -- it does what it says on the box).

<comment><USER6> Is there a way to use just the markdown -> html so that it can be used for automated sending e.g. via mandrill/sparkpost?

It looks pretty!

<comment><USER7> that... just... that doesn't make sense. why would you use a plugin that converts markdown to html in browser windows to do automated sending. There have been command line tools to convert markdown to html since the beginning (literally, first implementation by gruber). Pandoc is probably the go-to one these days but yeah, that's just.... not the right tool for the job.

</comment></comment></comment><comment><USER8> Maybe the answer is to return to sending plaintext emails? HTML emails are an abomanation. Rather than extend them, just ditch them.

<comment><USER9> We have lost this battle, but keep fighting the good fight. We've also lost to top-posting and JavaScript.

<comment><USER10> Top posting only won in places where everyone uses Outlook. Mailing lists still use quoted style.

<comment><USER11> Gmail also had a big hand in the reduction of top posting, by hiding the quoted message by default (click the little '...' icon to see it).

This means that replies in-line, or below quoted text are instantly hidden and then you get complaints from the technically challenged who insist the email you sent was blank.

I tried to educate and fight back for a long time, but too many important things were lost to those who insist on writing right where the cursor appears instead of taking a moment to position it thoughtfully, and alas the rest is history.

<comment><USER12> The fact that Gmail hides the quoted portion actually encourages people to use top posting more.

Which is a great thing.

I know, not a popular opinion here, but top posting saves a lot of time in catching up with long email chains.

If you don't agree, pick an old style mailing-list like a Linux kernel discussion, choose a discussion with 20+ emails in and read it from top to bottom. You'll quickly realize how exhausting inline quoting is.

<comment><USER13> Less exhausting than reading each of those 20+ emails separately. For any conversation of substance, you need the relevant context before you can understand the reply.

If context isn't required, then don't include it. Inline replies act as a forcing function, directing people to reply to the substance of what was said. That necessarily includes eliding irrelevant bits, which is often the most helpful aspect. Neither top posting nor bottom posting help emphasize substance.

In high quality forums inline posting is extremely useful for both reader and author. For the Outlook and Twitter set, it's a pointless debate.

<comment><USER12> Either you're part of an active email chain (e.g. happening over a period of a few hours), in which case you have the context. You don't need to read it over and over again, so the best place to put it is below the signature. Top posting wins here.

Or you're catching up on a discussion that happened in the past, reading each email one after the other. Again, the context is secondary, so the best place is to put it below the signature. Again, top posting wins.

For these rare emails where specific answers need to be positioned below some specific context, the writer of the email needs to have the discipline to put it there, and this can be achieved with top posting as well.

Inline quoting has really no good reason to exist in most email chains.

<comment><USER14> There are two relevant senses of context: what has already happened in the email thread and what a given person thinks he is responding to. Top posting is better for an outsider who is just reading through the thread while inline replies help the people in the thread understand where a given author is coming from.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER15> I can't praise MailMate[1] enough here: A lean, no-fuss mac email client with first-party support for Markdown (with syntax highlighting!), and plenty of other goodies.

Cherry on top, its developer is very active, and keeps a regularly-updated blog[2], talking about email server quirks and many other interesting technical bits.

Note that I'm not in any way affiliated with the software – just a very happy customer.

[1]: [https://freron.com](https://freron.com)

[2]: [https://blog.freron.com](https://blog.freron.com)

<comment><USER16> Thanks for sharing! I wanted to get more information, but couldn't find it on the website (mobile, without downloading), until I found this series of screencasts. [https://m.youtube.com/#/watch?list=PLC4ZkBr87CO0jmrQvGQ77t44...](https://m.youtube.com/#/watch?list=PLC4ZkBr87CO0jmrQvGQ77t44tCT- xklqU&params=OAFIAVgB&v=xJFt952wQGA)

Looks very interesting for power users. Going to check this out!

</comment></comment><comment><USER17> Is it really easier to use markdown than bolding things using a keyboard shortcut?

And tables are downright awful in markdown (or anything barring a full spreadsheet editor). When would you want to do this by hand?

<comment><USER18> > Is it really easier to use markdown than bolding things using a keyboard > shortcut?

Yes, it absolutely is easier to type a few asterisks in running text rather than selecting text, hitting a keyboard shortcut or clicking a button, and then going back to typing more text.

<comment><USER19> Most rich text editors allow bolding running text. "Ctrl+B" vs. "shift-8" are equal.

(Most rich text editors are poorly implemented and suffer from hidden state, but that's a separate problem.)

<comment><USER20> I use Ctrl+B in my browser to open the bookmarks side-panel though.

</comment></comment></comment></comment><comment><USER21> For those wondering which of the thousand bespoke dialects of Markdown this speaks, this project uses marked.js: [https://github.com/chjj/marked](https://github.com/chjj/marked)

<comment><USER22> marked.js has a GFM option, which is what Markdown Here appears to be using: [https://github.com/adam-p/markdown- here/blob/dc1454ecb26a951...](https://github.com/adam-p/markdown- here/blob/dc1454ecb26a95120a8662461c9629911dbc0638/src/common/markdown- render.js#L77)

I guess these days most projects use GitHub markdown since it's the most common and with the best documentation.

<comment><USER21> It's not quite so simple. Markdown's problem is that it's always been pretty ill-specified. The original GFM was merely an extension to "Markdown", with its myriad of implementations all with differing behaviors. Even the marked.js README says that it merely "more or less passes the official markdown test suite"; which tests doesn't it pass? And what official Markdown test suite is this referring to ("official" would imply that it's from John Gruber himself, but the first Google result for "official markdown test suite" doesn't have Gruber's name on it)?

Of course nowadays we have CommonMark, but despite ongoing activity CM has yet to have a 1.0 release, meaning that even if one intended to adhere to CM, ongoing maintenance would be required to ensure compatibility. Given that it looks as if marked.js last had a release in mid-2015, that would lead one to assume that it's not trying to follow CM. Furthermore, it was in March of this year that GFM was officially redefined to be an extension of CommonMark, not of Markdown: [https://github.github.com/gfm/](https://github.github.com/gfm/) , so it's unclear which version of GFM marked.js is emulating.

Lest anyone think I'm taking this too seriously though, the project here in the OP almost certainly doesn't need to care about compatibility. The markup produced is completely transient, so the worst that would happen upon hitting an unintended edge case would just be some temporary cursing on the part of the user. Where it actually matters is when you're storing the markup long- term and expect to ever want to upgrade your Markdown parser without breaking everything; for an example of the difficulty here, see how Rust has been attempting to gracefully upgrade the parser in rustdoc for almost a year now: [https://internals.rust-lang.org/t/what-to-do-about- pulldown-...](https://internals.rust-lang.org/t/what-to-do-about-pulldown-and- commonmark/5115) , [https://github.com/rust- lang/rust/issues/44229](https://github.com/rust-lang/rust/issues/44229)

</comment></comment></comment><comment><USER23> So markdown was inspired by the was emails were formated in plain texts, which was easily read by humans, just so that eventually through permutations, variations and abominations people start converting this (onnce) easily readable syntax into HTML emails?

great.

<comment><USER24> That's because browsers don't support native Markdown formatting.

<comment><USER23> Markdown is it's own formatting environment! All it needs is a constant-width font, a concept not particularly new to the world of computers.

If there were no downsides to this, and email was build from the first day on to work with HTML, then this would all be fine, but sadly (or not so sadly) this isn't the case.

</comment></comment></comment><comment><USER25> I love Markdown Here and if the author is reading this — thanks a lot for your work. I've had a great time using it for years.

I've did had problems with it when using it with FastMail and I hope it gets fixed at some point. Naturally it's optimized for Gmail first.

Btw folks, webmail isn't the only option. I've been using MailMate ([https://freron.com/](https://freron.com/)), it has baked-in Markdown support, keyboard shortcuts, plays well with Gmail too and it's awesome.

For messages it's much better to use a client like MailMate instead of a browser plugin like Markdown Here, because it will properly format and send multi-part mime messages — your message will be displayed well in both text and HTML ;-)

PS: I wish an open-source alternative would be as awesome as MailMate, but alas. On the other hand MailMate is very standards oriented and I don't mind supporting its author with money.

<comment><USER26> You forgot the small print: MailMate is Mac only.

<comment><USER25> Yes, sorry, but it's really good, I wish Thunderbird were like that.

</comment></comment></comment><comment><USER27> Worth noting: Requires "Access [to] your data for all websites"

On the add-on site, it fortunately does note why:

> Privacy: Markdown Here accesses and modifies web content when you activate > it. It can, in theory, access other web content, but does not. It also makes > no Internet requests whatsoever. Your data is modified when and where you > choose, and does not leave your browser.

Is this a limitation of WebExtension APIs that necessitate this? Perhaps there is an opportunity for more granular WebExtension APIs.

<comment><USER28> This is essentially a limitation of the browser environment itself, not of WebExtensions. Allowing an extension to inject code into a web page gives that extension the ability to do anything that the page could do on its own, including exfiltrating data. I don't see any easy way to prevent this without severely limiting what the extension can do.

<comment><USER20> It could at least be limited to gmail.com or the browser could ask for each domain.

<comment><USER26> You want a confirmation box for every website you access?

<comment><USER20> The box should only appear when I try to toggle Markdown for the first time (which I would only do for web mail).

If I understand it correctly, as it is now the extension has access to everything on every website I visit.

</comment></comment></comment></comment></comment><comment><USER29> What's the point? My plain-text emails are already awesome.

<comment><USER30> Images. Formatted text. Syntax highlights in source code snippets.

Html is overkill for these things, but still better at them than plaintext. Markdown strikes a good balance.

<comment><USER29> Images in emails? Are you serious?

<comment><USER31> The more I read this thread, the more I think I live in a different universe.

Yes, images, bold, links, colors and font sizes is what I see in all the emails I get (and send).

I sometimes get the odd plaintext email and wonder why the sender was punished.

I started using email in 1991. The mail today (with all the civilized elements) is infinitely better.

</comment></comment></comment></comment><comment><USER32> > It can:

> * Read and change all your data on the websites you visit

[https://github.com/adam-p/markdown- here/blob/master/src/mani...](https://github.com/adam-p/markdown- here/blob/master/src/manifest.json#L19)

Shouldn't this just be email serving domains? e.g. `[https://mail.google.com`](https://mail.google.com`) et al? Also it'd be great if the Chrome webstore could offer some verification, so that as long as I trust Github and Google, I can confirm that the code I see at Github is the extension I'm installing.

<comment><USER33> Chrome extensions are stored unpacked on your filesystem, it's easy to read what code is being used. On OSX they're in:

        ~/Library/Application Support/Google/Chrome/Default/Extensions

<comment><USER34> Here's a script which makes it easier.

[https://gist.github.com/chittti/6f59b53053c44954414ff15d5826...](https://gist.github.com/chittti/6f59b53053c44954414ff15d58265606)

</comment></comment></comment><comment><USER35> Very neat idea and execution, but I doubt its usefulness. Let me explain what my thinking would be if I was the developer:

Whatever email client you're using likely has easier/better support for bold/italics or other forms of text styling very easily, with shortcut keys. It probably also supports numbered/bullet lists automatically by converting lines that start with 1., 2., ... or */\- characters, too.

If you think about it, there's not a lot more features of Markdown remaining. The email client also likely allows easier ways to insert pictures and create links, too.

This leaves us with:

\- Tables: I suspect anyone actually writes tables in markdown, also the mail editors probably support this better.

\- Math equations: I suspect anyone actually uses this except academics.

\- Code blocks with syntax highlighting: this seems to be the only useful feature of the extension.

I also realized the extension does not work on Google Docs, where I was mainly hoping to use the code formatting feature.

<comment><USER36> > I doubt its usefulness

Tell that to the 70k people who use it in Chrome alone.[0] While for you it's not that useful, I've used it for years now.

I'd say Adam has built the perfect product for the target market.

[0]: [https://chrome.google.com/webstore/detail/markdown- here/elif...](https://chrome.google.com/webstore/detail/markdown- here/elifhakcjgalahccnjkneoccemfahfoa)

</comment></comment><comment><USER37> I find this nicely ironic, as Markdown was invented as a way to convert the de-facto standard for writing textual messages (like email and usenet) with semantic information.

Personally, I have been writing my emails in Markdown for years, as I still use a fixed-width font even in Gmail (which doesn't have a text-only option, at least not that I know of).

EDIT: I just checked, and Gmail _does_ have a plain-text option. However, for double irony, when you select it the font used for the message is not fixed- width, which pretty much beats the purpose. :-/

<comment><USER38> Yeah I hear ya. I used to have a browser extension that let me have a fixed width font and use plain text mode in Gmail, but I think that stopped working a couple years ago. These days, if I am writing a long email, I usually just type it in vim first.

</comment></comment><comment><USER39> Would be great if you had this for Outlook. My work emails are where I would need this the most.

<comment> adam-p [https://github.com/adam-p/markdown- here/issues/67](https://github.com/adam-p/markdown-here/issues/67)

I probably won't do it, though. I'm pretty sure I'd have to reimplement the entire thing in .NET.

</comment></comment><comment><USER40> I've found out that even business types can understand text/plain emails with markdown-style formatting, so what exactly is the usecase for this?

<comment><USER41> While \ _this\_ is understandable, it is a lot less professional than _italic text_. It's all about presentation, and this is a shortcut to a better presentation with the same amount of effort.

<comment><USER40> That probably depends on whether you want to convey meaning by formatting of free flowing text. Professional way to do that is to highlight (highlight, not make bold, italics or whatever) the parts of your email that constitute the tl;dr part, even more professional is to simply write your email such that it's main point is repeated in first and/or last paragraph.

</comment></comment></comment><comment><USER42> If anyone has set something like this up with emacs, would love to hear about it. I'm currently using org-mime, but would prefer to use markdown

Edit: 30 seconds of searching led me to here: [http://tess.oconnor.cx/2008/01/html-email-composition-in- ema...](http://tess.oconnor.cx/2008/01/html-email-composition-in-emacs)

<comment><USER43> Just curious: why do you prefer markdown over org?

<comment><USER42> I'm more familiar with markdown, and I think for non-emacs users the plain text format is more familiar as well

</comment></comment></comment><comment><USER44> This is pretty cool. If the main interface here is to allow you to right click and transform the text though, does this require permissions to read and change all data on all your pages? Can the right click menu not only look at just the highlighted portion? Permissions feel excessive, but not sure if this is the only way based on how Chrome enables it.

</comment><comment><USER45> This is fantastic! I tried it in Thunderbird and it works great. Just keep in mind that math formulas are sent to be rendered via Google Charts - so don't use this to generate your super-secret cold fusion equations... (as if sending them by mail would be a great idea to begin with).

</comment><comment><USER36> Cheers to Adam. I've been using the for years--since time the extension was called "Markdown Anywhere" and had a purple butterfly as the logo and mascot!

My use cases:

\- Sending code, diffs, and equations in emails

\- Copy/paste from other markdown docs

\- Dodging crappy WYSIWGs on some sites

</comment><comment><USER46> I've been using this extension for a while now and I'm really loving it.

Whenever I need to send an email that includes a code sample, Markdown Here makes it so much better than just slapping a monospaced font on plaintext code.

<comment><USER47> By indenting for you?

<comment><USER46> No, it doesn't format the code, but it does support syntax highlighting.

</comment></comment></comment><comment><USER48> Been using Airmail for macOS for a few years now. Pretty happy with it, does formating with Markdown as well.

</comment><comment><USER49> This is great. I'm often asked to provide data, and have made some helper methods to return the data in markdown. I then typically have to find a converter before pasting the results into the email body, so having an extension to make this easier is great :D

</comment><comment><USER41> This looks like a fun TodoMVC equivalent for testing addons, I think I might try to roll my own!

</comment><comment><USER50> I've been using this for a few years now, mainly with FastMail and Gmail. I can't live without it, especially for sending emails with documentation, technical instructions, usernames, etc. to customers.

</comment><comment><USER51> As if HTML email was not an idiotic thing already, you build a tool to create HTML emails from a text format that was based on the usual formatting of plain text emails (and also is less portable than assembly).

</comment><comment><USER52> Such an amazing extension. It makes writing email fun again.

</comment><comment><USER53> 95% of the email I send is unstyled. Occasionally I'll throw in bold text. Does this really solve a problem for the everyday man or woman?

<comment><USER54> It only makes sense if an email is "unstyled". Thunderbird manages to fuck up my email layout all the time if I need to add a few lines of preformated text, occasional bullet list or some highlighting. If I try to write plaintext-only emails it fucks up RE: and FWD: emails for most normal people. If I use "rich" text emails with standard settings email client will do everything to fuck them up and while it will look ok on my screen it will end up with some smart- ass who uses plaintext-only client whining about me writing shitty formated emails.

So, I don't know if using this plugin will feel helpful (I doubt it, since second most used formatting option for me is text-highlighting with color — indispensable when marking up some airline fare construction quote or something else cryptic enough, — which markdown doesn't really support), but the problem it _tries_ to solve definitely exists.

</comment></comment><comment><USER55> Does this support ProtonMail? I'm interested, but I'm also a bit paranoid with my mail privacy.

<comment> adam-p At last report it works: [https://github.com/adam-p/markdown- here/wiki/Compatibility#p...](https://github.com/adam-p/markdown- here/wiki/Compatibility#protonmail)

</comment></comment><comment><USER56> Doesn't seem to work with fastmail

<comment> adam-p I just quickly tested and it still seems to work. Make sure you have rich editing enabled[1]. If it still doesn't work, create an issue with more info.

[1]: [https://github.com/adam-p/markdown- here/wiki/Compatibility#f...](https://github.com/adam-p/markdown- here/wiki/Compatibility#fastmail)

<comment><USER56> It seems I needed to reload the page. Works great now, thanks.

</comment></comment></comment><comment><USER57> I can do that very simply. Just start writing. But please, don't parse that and send html emails.

</comment><comment><USER58> This is vulnerable to XSS, payload: [Click Me](javascript:this;alert(document.domain))

<comment><USER59> Or even the more naive "<script>alert(3)</script>" \- which was the second thing I tried.

</comment></comment><comment><USER60> Are there any mail clients that can send with _Content-Type: text /markdown_?

<comment><USER61> That would be nice if it was standard for clients to display text/markdown rendered as styled text. This would require an actual standard for the markdown syntax though. Without the rendering, markdown is just text/plain.

Are there any mail clients that will send both the markdown source and the rendered HTML as a multi-part message?

<comment><USER62> You can specify Markdown variant in Content-Type.

Source:

[https://tools.ietf.org/html/rfc7763](https://tools.ietf.org/html/rfc7763)

[https://www.iana.org/assignments/markdown- variants/markdown-...](https://www.iana.org/assignments/markdown- variants/markdown-variants.xhtml)

<comment><USER61> Ok, good to know, thanks. The point still stands that the receiver's client _probably_ doesn't bother styling the message. I mean even if GMail, say, was persuaded to do it, Outlook for instance wouldn't.

</comment></comment></comment></comment><comment><USER63> Doesn't seem to work with Google Inbox. Agh.

<comment><USER64> It does not. Here's an Github issue I've created almost 2 years ago...

[https://github.com/adam-p/markdown- here/issues/327#issuecomm...](https://github.com/adam-p/markdown- here/issues/327#issuecomment-342757932)

</comment></comment><comment><USER65> Does this work through the Apple mail app ?</comment>


Being a polyglot programmer - <AUTHOR> http://coding.kulman.sk/being-a-polyglot-programmer/ <comment><USER4> If you are planning to be a polyglot, I highly recommend learning a language of the APL family (APL, K, J, Kona) and writing a few nontrivial programs.

The benefits of being a polyglot is that it lets you more easily think "outside the box" in any language you are using (especially when you can't use "the right tool for the job").

The facilities in most languages are designed to let you build larger and larger abstractions based on previous abstractions. That's true for C++, Java, C#, Scala, Perl, Ocaml, Ruby, Python, and almost every other language out there.

APL (and to a smaller extent, Erlang) tick differently; on one hand, they do not provide abstraction facilities to build your own "classes" and other "abstract data types" or new kinds of "flow control". On the other hand, they provide simple tools that let you get buy without those.

Only after really grokking K, I realized how much language and library infrastructure do not actually help you achieve your goals of "getting things done". The usual reply to that is "well, but it makes things more readable/maintainable" - which might be true in most cases for e.g. C++ or Java, but that's mostly because they don't provide the right tools for the job.

Take some time to grok APL. The learning curve is not easy, but the payoff in insight and productivity is immense. (And also in pay: K programs command significantly higher salaries than e.g. Java or Scala programmers)

<comment><USER5> Agreed, working with APL has been an extremely valuable exercise.

Another experience I found enlightening was working through the Pragmatic Programmers book _Seven Languages in Seven Weeks_ which points out the more interesting and distinguishing features of Ruby, Io, Prolog, Scala, Erlang, Clojure and Haskell:

[http://pragprog.com/book/btlang/seven-languages-in-seven- wee...](http://pragprog.com/book/btlang/seven-languages-in-seven-weeks)

<comment><USER6> I just finished a class in my CS graduate program where we used this book for part of the class. It was very interesting and has widened my perspective on languages quite a bit (including giving me a bit of a functional language interest). I've only done C/C++/Perl in the past so working with some of the languages in the book was a bit of a mind bending experience, but very rewarding. I may have to check out APL as well.

</comment></comment></comment><comment><USER7> The older I get the less I want to be a polyglot. Or at least the meaning of polyglot changes. I used to love learning every new language that I came across, but now I find less value in doing that. I find it too time consuming to learn new languages and I'd rather be creating things. It's difficult enough to create things in your spare time with the languages you already know. It's enough for me to know one language of each of these types: one statically typed OOP, one dynamic OOP, one functional. Being strong in 3 of those and employers will see that you _can learn_ whatever it is that they use. In your spare time, do what you enjoy, if ColdFusion is that, use ColdFusion.

<comment><USER8>
      (http://news.ycombinator.com/user?id=MatthewPhillips)

      "My current interests are in Clojure, ClojureScript, and IndexedDB."

Yet it appears that you are keeping quite current with new technology :)

<comment><USER9> There are lots of other shiny new things that he could have learned. Clojure happens to be a rather practical new language to learn if you already know Java, and ClojureScript has a pretty small hump if you already know Clojure and JavaScript (which, lest anyone forget, is about 15 years old now).

<comment><USER7> Yeah, I never said I don't want to learn new things. I still have a desire to be employable, and if something new seems novel I'll look into it. But I have, for example, no desire to learn any new OOP languages (aside from a quick look) until the ones I already know become irrelevant.

</comment></comment></comment></comment><comment><USER10> Interesting that nobody puts forth "Because I enjoy learning" as a motivation for learning. It's not a dichotomy: You can enjoy learning _and_ benefit from learning idioms that cross over between languages, or enjoy learning _and_ insure yourself against obsolescence, &c.

But for some people, it's a personal thing, they simply enjoy learning, much as an Architect who designs tract houses might still enjoy reading about new, avant garde office buildings.

<comment><USER11> > Interesting that nobody puts forth

So true! There is a APL and its descendants mentioned, so array-based languages are covered, but what with concatenative ones, like Forth, Factor or Joy?

I found learning (the very basics of) Forth illuminating almost to the same extent as learning Scheme if not more. `swap`ing the order of argument with higher order function is never going to be the same again :)

</comment></comment><comment><USER12> The article doesn't actually provide any significant reasons as to _why_ you need to be a polyglot programmer. If anybody is reading this I would love if somebody can provide reasons besides _being able to think differently_. I'd like to encourage programmers, at a ruby user group, to learn other programming languages. But besides the _think differently_ I can't come up with any compelling reasons. Am I being silly? Is being able to think differently about problems the only reason to learn different programming languages?

<comment><USER13> i think you can make the case that for many (largely self-educated) programmers, learning new languages is a good way to understand programming at a more abstract level. and that, in turn, means that you can write better code.

for example, if you understand an object-oriented and a functional language then you understand two quite different ways of encapsulating state - <USER2> objects and as closures. that leads you to thinking about state as something more general than either, which gives you a higher level view of the problems you are tackling.

so learning multiple languages illustrates different aspects of "deeper" issues in programming and motivates the discovery of those abstract concepts, which then provide a stronger "mental toolbox" to do your work.

from my own work, for example, i feel that google's guava library has improved my java code considerably. using that library well requires (i believe) an understanding of the advantages and disadvantages of both oo and fp programming.

<comment> loup-vaillant > _if you understand an object-oriented and a functional language then you > understand two quite different ways of encapsulating state - as objects and > as closures. that leads you to thinking about state as something more > general than either, which gives you a higher level view of the problems you > are tackling._

Yet, it may not be general enough. With one data point, one doesn't generalize. With two, one tends to think of a spectrum. With three… Now it gets interesting.

For instance, encapsulating state: you had objects and closures. They look pretty different, until you learn of Functional Reactive Programming, where state is handled in a much more timeless fashion.

</comment></comment></comment><comment><USER14> > When I finished the course I really liked Haskell and functional programming > because of its clarity, readability and the fact that I could write a very > compact code. But I had no practical use for it. It did not change my > Programming style but made me look for a more pure and "nicer" language to > learn.

Why did it not change your OO style to be more functional? Static methods, no mutation, etc etc?

<comment><USER15> Why would it? OO languages aren't functional. Trying to misuse a tool seems like a great way to resent it. After learning to use a saw, trying to cut boards with a hammer would be a nightmare.

<comment><USER16> I learned java in school and used C# professional for year. Almost every useful refactoring I perform in C# is based on functional concepts. You can slap patterns on a mess to provide order or you can introduce functional concepts to remove it, almost entirely.

I am not trying to dismiss patterns, but when you have lambda's you have a free way to add a visitor, command or specification to your code. It is one line instead of three interfaces and a bunch of shared understanding.

Consider,

var even = (new [1,2,3,4]).Select(x => x % 2 == 0);

The select statement gives you a way to interrogate individual objects, in the same way you could if you built up all the plumbing for a visitor pattern. What did I have to add to do this? Nothing. C# is awesome.

<comment><USER17> Isn't it new[]{1,2,3,4}? Or is this some new syntax I don't know about?

<comment><USER16> No, you posted the correct form. Mine would have a compile error.

</comment></comment></comment></comment></comment><comment><USER18> For me, being a polyglot programmer is about being able to sit down and get comfortable usage from any language or framework.

I started out with VB.Net in University, during my second year started using C# on my own. Next came Ruby with it's elegance. Followed by PHP for it's commercial potential (lots of people pay for this), followed by Ruby on Rails, followed by CakePHP, followed by ASP.Net, followed by ASP.Net MVC.

I have about 2 months of CakePHP experience - and I have a full time job using it at a Senior Position. It's about being able to somewhat "bs" your way into a job but NOT suck at it, because you are used to change. You can adapt and roll with the punches. Paradigms, toolchains, dev ops, are secondary - <USER3> real concern should be:

CAN I ADAPT EASILY TO ANY ENVIRONMENT?

<comment><USER19> All of these languages are mostly imperative. The author recommended, and I concur, getting some hands-on with other paradigms (Functional, Logic, etc).

<comment><USER18> I agree with you, I'd love to find the time to learn Clojure. Hopefully things slow down a bit for me this end of the year I'll find some quality time to sit down and learn.

</comment></comment></comment><comment><USER20> I think that being a programmer is not about coding in a particular language. It's all about thinking differently thus his point about being a polyglot programmer does not seem to hold. For me programming is how would I solve a particular problem with the tools I have. Maybe an easier solution exists if I do a certain thing a certain way but it would be more satisfying for me if I come up with a solution my way.

<comment><USER21> For me, having learnt to program in multiple different languages means I've learnt that being a programmer is more than syntax and given I've programmed from C++ to Ruby to Node.js that I've usually got (some) insight into the best language to tackle a particular problem.

Whether or not I'm correctly attributing this to having programmed in multiple languages I'm not sure, but it's certainly nice to be able to jump between things with a slightly smaller learning curve.

<comment><USER20> Learning different programming paradigms is of course a great practice however I'm not sure we can attribute that to learning different languages. I think for a good programmer choice of a programming language does not matter.

<comment><USER22> > I think for a good programmer choice of a programming language does not > matter.

I disagree. I think an important part of being a programming is choosing the right tool for the job.

You might be able to build what you need using a hatchet to cut your lumber, but you will almost certainly end up with something much cruder than if you had chosen to use a saw.

So a good programmer should be able to get by with the tools he has, but should pick the best tool for the job when he has the option.

</comment></comment></comment></comment><comment><USER23> In my opinion, it all goes back to your tool belt. If you only have a hammer, you can only hammer nails. You can use a hammer to cut wood if you beat the wood with the claw long and hard enough, but you would be much better off if you had a saw.

The more tools in your belt will definitely allow you to build better things more efficiently

</comment><comment><USER24> I would tentatively agree but would say the pace is important. Otherwise you end up a jack of all trades and master of none. My goal is to learn one new language every year as well as to deepen my knowledge of the languages that I use regularly.

<comment><USER25> Only worth learning language that are dissimilar, or otherwise you end up learning yet another dialect of C.

</comment></comment><comment><USER26> Dont be a polyglot, it is read to hell! Learn only two languages which are stable, use similar stack and complement each other (C and Lua; C++ and Python; Java and Clojure). And become _best_ at those two.

<comment><USER19> Which languages have you studied? What makes you say that?

<comment> loup-vaillant If I had to guess, I would say that many programmers first learn one language at the university. It's hard, because it's their first one. Then they learn C++. It's hard because it's C++. From that, they infer that languages are complex, difficult to learn, and maybe impossible to implement.

This is true of languages that desperately try to be the proverbial hammer. That's why we call them "general purpose". On the other hand, more specialized languages are often much easier to handle: Of the top of my head, I can think of Make, Lua, and OMeta.

I learned the basics of make in a few days. I'm currently using Lua for the first time, to re-implement OMeta, which I learned in a couple days. It looks like basic Lua proficiency will take about a week of practice (during my spare time).</comment></comment></comment>


Why the Job Search Sucks - <AUTHOR> https://thewebb.blog/thoughts/2017/why-the-job-search-sucks <comment><USER2> A candidate we passed on reached out and asked for more specific feedback about why we passed. I happened to have some time over the holidays and agreed to provide him with some additional information personally and to meet up for coffee.

> It's not you: The first thing I told him was that 80% of whether you get > hired at a company is nothing you can do anything about. It depends on the > company, your skills, their needs gap, the timing, the manager, so if you're > batting .200, that's pretty good.

The second thing was that there were some really basic stuff to make sure you're doing every time you interview that you CAN control to narrow that gap further:

> Dress: wear dark jeans, nice shoes, a button down dress shirt. This outfit > is almost never "too fancy" or "too casual". If the company requires more > fancy than that, might want to question if you're a good fit (unless you > like wearing a suit _shudder_ )

> Give Specific Examples: Always try to start your answer with a summary, then > give a specific example then abstract it into a generalized theory. Don't > start with the generalized theory and never give specifics

> Know your stuff: If you list something on your resume, especially in a > recent job, make sure you can not only explain it but that you have an > opinion about it and that you've considered other opinions.

Edit: the outfit above applies mainly to men, I'm less versed in what the equivalent would be for women. If someone wants to add that, I am sure it would be helpful.

<comment><AUTHOR> See? This! This would make the job search process a lil' less opaque.

<comment><USER3> How? That's just general "how to do well" advice, it doesn't help explain which of the reasons were relevant to a particular rejection.

And even that comment doesn't give an example of a shortcoming relative to one of those bullet points.

I mean, from the comment it sounds like kaspm literally told the candidate: "hey, sometimes it just doesn't work out, you should be glad at 'batting .200'.". I don't see the actionable feedback.

<comment><USER2> Ah sorry, this is a good point.

Edit: I added the specific examples of each item that I gave the candidate but decided to remove them so as not to expose them publicly should this candidate read hacker news.

People can PM me if they'd like to know more information about the way this particular candidate could have benefited from the above.

<comment><USER4> I'm interested in the details, but I don't see PM info in your bio.

Please reach out to twitter@web007 or ryan at geekportfolio with anything you can share - I'm working on a side-side-side-project for increasing employability, and this kind of info is exactly what I want to promote.

<comment><USER2> I see that the contact info is private. Will do

</comment></comment></comment></comment></comment></comment><comment><USER5> The level of pure bullshit that is part of the hiring process these days is mind-boggling. An recent example:

I interviewed for company X, where I spent an entire day with more than a dozen engineers, answering the same types of questions over and over again: "Here's our platform, how would you fix it". At every turn, I would speak about X,Y,Z issues that would need to be solved and how this or that technology might be applicable in a broad case. Diligently, in every session, the interviewers were taking copious amounts of notes about what I was saying... NOT how I was doing on the interview, but rather, the content of what I was saying. "How do you spell Corfu?" (as an example).

At the end, they told me they really liked me, and would have an offer for me in the next day or two... Two days passed and they called with "We're sorry, but you're just not technical enough for us".

I basically gave them a free day of consulting.

I'm not sure HOW to fix the problem, but it is definitely getting worse.

<comment><USER6> Encountered such situation couple of times. Pokerface interviewers asking in- depth questions (e.g. domain knowledge, not necessarily data structures or algorithm smartassery), with minimal feedback. Learning basically. Quite cynical because it's good to talk basically, exchange knowledge and experience - I've always taken it as a common sense. Once I detect pokerface jokers I answer "no clue" for the simplest questions.

<comment><AUTHOR> You made me realize I've been in interviews like that too. This is frustrating to think about. I'm gonna try the "no clue" method with these people, the interview's a wash at that point.

</comment></comment></comment><comment><USER7> I've been unemployed for ~4 months now (by choice) and it's been the best time of my life. Yeah, I'm burning through my savings, but I can focus on projects that make me happy, I can focus on honing skills I actually care about, and I don't have to partake in endless meetings that serve no purpose whatsoever.

What I realized as I entered my 30s is that some people are _okay_ with that. Some people are okay with endless streams of bullshit and office politics, with building sub-par products, and with anxiety-inducing whiteboard interviews. All they want is a paycheck and all is well. Last year, I discovered that I'm _not_ one of those people. I tried hard to fit in that mold and just _be happy_ \-- but what makes me happy is fundamentally at odds with being a model "company man."

Why the job search sucks is that there's a lot more people in the former camp than in the latter. It's the same reason why most people don't start companies, don't try to write novels, and don't compose orchestras -- a fundamental lack of creativity. Unless one of my projects really takes off, I'll inadvertently have to get another "real job" soon, and even though I loathe the process, I'm happy that this time away from work really helped me reflect and figure out who I truly am.

<comment><AUTHOR> Having the privilege of being unemployed _by choice_ sounds amazing. Unfortunately, I was blindsided by my employment and didn't have enough to just take it easy all this time. Thankfully, unemployment exists and I've been able to pay my important bills on time.

This experience has reshaped how I think about savings though, that's for sure.

</comment></comment><comment><USER8> > At least I know not to waste my time waiting on you.

So don't. If they don't meet your communication expectations, then it isn't a good match anyway. So don't wait. Move along.

> These tests and whiteboarding are not indicative of your skill level

No, they indicate your ability to work and talk through problems. I'm not sure where this idea that whiteboarding is about skill level came from. You can cram/study algorithms. But you can't fake the thinking process, or how you approach a problem. You can't fake your communication style. And that is what doing it in a stressful situation shows - how do you really think and communicate under pressure?

> Maaaaan, go fuck yourself.

Hmm. OK, you are being honest about your feelings, but... does anyone ever get a better result in their job search after ranting about it online? Does an employer ever call you and say, "Well, we were on the fence, but after seeing you F-bomb other companies, we decided we liked you!" I'd save these rants for AFTER you get a job.

<comment><USER9> Not a fan of the OP's language, but in terms of the overall rant, actually I'm absolutely going to be more interested in hiring somebody who is calling it for what it is. Lengthy and convoluted interview processes and non sequitur whiteboard sessions are the scourge of the industry. The more programmers revolt and refuse to accept these bizarre practices, the better.

<comment><USER10> The number 1 reason I don't actively look for new jobs anymore is because of what the hiring process has become. I refuse to go through this BS unless I absolutely have to.

All these companies screaming they can't get good candidates. IMO a major part of it there are tons of people that no longer want to go through it so they are not actively looking like they did in the old days.

These big tech companies have seriously damaged this entire industry with all this bullshit. Yes I blamed the big companies because they get all the press and everyone copies them.

</comment></comment></comment><comment><USER11> "I state upfront that I have zero React experience because 99.999999% of tech companies want someone with 18 years of experience with a four-year-old JavaScript framework. I'm being facetious here but that requirement is ridiculous for a fad. Writing CSS in JS? GROSS."

You don't have experience 99% of employers want, and your response is to stubbornly write it off as a fad? Maybe that's got something to do with it? If you have zero experience, how do you know it's gross?

<comment><USER12> I am actually wondering how many readers of the blog post rolled their eyes here. I am not saying that React is the best thing ever; there may be different arguments against using it, but man, this "CSS in JS" (or, alternatively, "HTML in JS") argument is not even funny anymore.

I would have discarded this as a meaningless complaint coming from a hardcore backend developer who is repeating the principles of single responsibility and separation of concerns he has heard in older days and has not yet had a chance to realize that a component is no lesser way of thinking about separation of concerns than an html or a css file. But judging by the appearance of the blog site, the author is a frontend developer, with pretty decent skills. I am confused.

<comment><USER13> As a mostly back end developer, snazzy front end templates are either cheap or free.

<comment><USER14> Could you please provide some pointers to those? Thx.

<comment><USER13> Google "free html5 templates" or replace html5 with your preferred framework. Here's one.

[https://themewagon.com/theme_tag/free/](https://themewagon.com/theme_tag/free/)

<comment><USER14> Thanks!

</comment></comment></comment></comment></comment></comment><comment><USER15> FTA: "These tests and whiteboarding are not indicative of your skill level, they are approximations of what you can do with what is likely to be limited information and ambiguous scope."

If I'm going to make you get up at a white board (and I might) it isn't going to be to write code on it. We don't hand designers white board markers and say "draw monkey draw" \- because it isn't their medium and neither is it ours.

If I am going to get you up at the white board it is going to be to show me a diagram (probably database) or how you think something "should flow" (boxes and arrows) to see if you can COMMUNICATE a concept. If you can't do that then we have issues -- because at some point your going to have to do that very thing to convey an idea to a colleague and if you can't we have a PROBLEM. There isn't really a "right" answer to this setup, but there are plenty of wrong ones - ones that show you either lack basic knowledge or communication skills needed to do the job.

<comment><USER16> I like this explanation, I hadn't put it into words before but it feels intuitively correct. For most positions, your ability to communicate what you're doing to the rest of the team is _way_ more important than your ability to write fancy code, or do something like a sample project that isn't our actual day-to-day-codebase. That communication is what's going to keep the team disciplined design wise, keep things consistent, and keep the codebase extensible. And keep morale up since everybody is capable of getting on the same page with everybody.

Dealing with ambiguous scope is the single biggest thing I want in a candidate, so if you don't like dealing with that, you're not going to like working with me anyway. But here's the thing, from my perspective: when's the last time you worked with product or business people who gave you 100% perfect information and specs up-front and then didn't change them? If you can build in a way that allows for future change based on the needs of the team/company/market, then you're very valuable.

> I've never met someone who performs exceptionally well with thinking on the > spot in front of people they've never met when the grand prize is gainful > employment.

I also want to know, based on this line, _how many people the author has interviewed themselves._ Cause I've interviewed a few (it's at least in the 100+ area) and have seen as many people do well in that sort of environment as have frozen up. Not uncommon for them to do better than I'd expect myself to do, either, algorithmically - but neither does that always translate directly to an offer, if they're bad at the communication or wrinkle-handling parts.

</comment></comment><comment><USER17> """ I state upfront that I have zero React experience because 99.999999% of tech companies want someone with 18 years of experience with a four-year-old JavaScript framework. I'm being facetious here but that requirement is ridiculous for a fad. Writing CSS in JS? GROSS. """

React is just a library for mapping state to ui elements, right? I've been using react and all of my css lives in separate .css files. Is that not typical?

Maybe they are just venting frustration but maybe blowing off what employers want is indicative of other issues or a bad attitude.

</comment><comment><USER18> The reference point for gaining employment is that dude who wrote Homebrew and got rejected by Google for being unable to "invert a binary tree on a whiteboard" [1]

Unfortunately with this and many other articles I've read on HN over the years, the common theme is that decent/good programmers are not making it past HR.

Everyone that wants to work in tech should instead navigate through the meetup/social space and build up a decent network for this kind of thing.

Anecdotally, at 1 interview I went for, I knew the hiring manager and our "interview" was a 15 minute casual chat. That's it.

[1] [https://twitter.com/mxcl/status/608682016205344768](https://twitter.com/mxcl/status/608682016205344768)

<comment><USER16> Maybe I've been just unlucky with how many times I've had to google for weird "brew doctor" type incantations to make it happy, or with how (un)smoothly I've found it + a Mac compared to using real actual Linux, but is it outside the realm of possibility that you can make something a lot of people find useful for some situations _and still not necessarily be qualified for or entitled to every job out there_?

If it's truly because there was an algorithm question with no correlation to what the team worked on, that sucks. But I've seen the other side of enough of these rants to take any single anecdote with a giant grain of salt.

There's a few potential audiences for rants like this, but most of them are unproductive. Other frustrated people don't have influence to change things, and hiring managers _not_ experiencing hiring issues don't have incentive to listen to you. The group you need to find, if this is how you're feeling, is the hiring managers who _aren 't_ having luck right now. Maybe because their company doesn't have as much name recognition, or as much money to offer, or a sexy office location in the Bay Area, whatever. They're gonna need to expand their pool to compete, and that's where potential matches are. It takes a lot more leg work and sales work of the "here's why I don't fit exactly what you're looking for but why you should be confident in my ability to get there fast" variety, but it can be accomplished - I did it about 7 years ago, myself, to get from the land of "boring jobs" to the land of "interesting jobs building 'interesting' experience," and have seen other people pull off the same path since then. You also generally will do better starting in a smaller environment like that with more face time with the key players in the company, than as another line-level cog at BigCompany.

<comment><USER19> > Maybe I've been just unlucky with how many times I've had to google for > weird "brew doctor" type incantations to make it happy, or with how > (un)smoothly I've found it + a Mac compared to using real actual Linux,

Have you tried MacPorts? But more to the point…

> but is it outside the realm of possibility that you can make something a lot > of people find useful for some situations and still not necessarily be > qualified for or entitled to every job out there?

Let's drop the dig regarding entitlement for a moment. Shipping a nontrivial tool like Homebrew and getting pretty much every Mac power user (except me and a handful of other MacPorts holdouts) using it should show far more qualification for an engineering position than inverting a binary tree on a whiteboard. Software is a complete system and process involving decisions and unsolved problems, even if those problems are "how do we solve these problems in a better way than they are already;" inverting binary trees is… an algorithm. One I can probably find with ten seconds and a search engine should I ever need it.

Granted, perhaps Google was hiring for a position where knowing how to invert a binary tree off the top of your head is crucial. Who knows. And I'm sure there are people out there who know that as well as how to create, ship, and maintain a useful product. But if I personally were looking for someone to hire, I know which would impress me more.

By the way, for those wondering, if you're ever asked to invert a binary tree on a whiteboard, here's how to do it:

1\. Draw binary tree on whiteboard

2\. Remove whiteboard from wall

3\. Rotate whiteboard 180 degrees

4\. Reattach whiteboard to wall

INTERVIEWHACK

</comment></comment></comment><comment><USER20> When looking through job postings I watch out for this type of statement: "Only short-listed candidates will be contacted." which means that I can't expect any reply if I am not selected for an interview. Dear recruiters, this is not OK, ever!

I put a day or two into a job application. (Which may be excessive, but it leads to a high conversion rate). Preparation includes researching the company, their products and projects, their history and my possible contribution – and tailoring my application package to their needs. If the company can't be bothered to write me a short email "Nope, sorry. HR." then that company is not worth my time.

In effect, "Only short-listed candidates will be contacted" tells me: "1) We are too lazy or incompetent to set up a mass email reply. 2) We don't care about candidates enough to save them the time and stress of unnecessary follow-ups." By extension, I will assume that company does not care about its employees either and has effectively disqualified itself from my becoming a part of their team.

</comment><comment><USER21> I hate not getting feedback and the time it takes now to interview. On the other side of the desk, I have regretted not putting up the same code challenge and whiteboard sessions with people I interviewed and hired.

<comment><AUTHOR> Yep, it's a massive time sink. I'd want tips on how to make that time _matter_ or be utilized better.

</comment></comment><comment><USER22> He makes a lot of good points, many which I have experienced and resolved to never do.

All my applicants know within a few days of whether they are getting an interview.

All my first round interviewees know the next day if they are getting a second round interview.

All my second round interviewees know the next day if they are hired.

As you see above, there is only two rounds. There isn't any white boarding, because I find it a waste. For web developers, I ask a very simple one page site to make.

I try hard to make sure the applicants at least know where they stand pretty quick. Because I've been on the other side of that.

<comment><AUTHOR> Your last point is quite telling.

I think a majority of the people making hiring decisions in these companies have never been where I'm at (and where you've been).

</comment></comment><comment><USER23> It was nice to randomly find your name here (: Good luck with the interviews, I totally agree with your points. Your blog improved a lot since I last checked it! (The NX framework guy)

<comment><AUTHOR> Haha, hey man! Yeah, I've been improving it bit by bit.

</comment></comment><comment><USER24> If you can imagine each interview as a good way to learn about the people at the company, and also about the company's processes, then you can triage as you wish.

As an example you could ask openly about the company's hiring processes, rankings, followups, and the like. If you receive answers that satisfy your preferences, that's great; otherwise, you can move on to prepare for the next company.

<comment><AUTHOR> Y'know what jph? I'm gonna try that.

</comment></comment><comment><USER25> This is an area were AI could really help improve discovery. I see more and more job sites leverage personalized feed technology similar to the Facebook and YouTube. One could argue its perhaps more useful for job sites :) Also check out this blogpost: [https://getstream.io/blog/personalized-job-feeds- machine-lea...](https://getstream.io/blog/personalized-job-feeds-machine- learning/)

</comment><comment><USER26> Isn't this one of those asymmetry things where the hiring company has no incentive to make the process pleasant? They hold all the power/keys etc.

Before people jump in with "what about negative Glassdoor reviews" or "negative reputation", I'm saying that all things taken into account, the equation is still in favor of the company.

I don't know.

<comment><USER27> It is complicated. My team is trying to hire but it is almost impossible to get a decent candidate. It is a massive time sink and still depends more on luck than anything else.

<comment><USER28> The hiring market is like a disfunctional dating market: A whole bunch of mediocre singles complaining they can't find supermodels of the opposite (or their preferred) sex.

<comment><USER26> So there should be optimal pairing... I guess the problem is if both sides are exercising minimums. "I don't want the best of the shitty programmers remaining, I want someone with at least this much experience."

I don't want some random company, I want a supermodel!

</comment></comment></comment></comment><comment><USER29> Job search sucks for many reasons and for the most part it's the hiring companies to blame for. However, this is a given situation which will not change any time soon. Instead of ranting, candidates should put some time in researching what the companies they're applying to are looking for and act accordingly - e.g. personalize their resume to match job descriptions, anticipate interview questions and do mock interviews. Some resources that can help in the process:

[1] [https://www.glassdor.com](https://www.glassdor.com) (to find out interview questions asked by companies)

[2] [https://www.jobscan.co](https://www.jobscan.co) (to optimize your resume against job descriptions)

[3] [https://www.pramp.com](https://www.pramp.com) (a peer-to-peer mock interviewing platform for software engineers)

</comment><comment><USER30> The job search sucks for this guy because he's a front end developer that isn't keeping up with front end developer trends. Which is the thing people pay front end developers to do.

<comment><AUTHOR> Actually, it sucks for a lot of people. Keeping up with trends !== building a todo app with said trend. Do you really expect anyone to create a new app with the new hotness every time a "Show HN: My framework" is announced?

<comment><USER31> Yes. If there are people who are getting hired over him. It's not about what's fair.

<comment><AUTHOR> That still doesn't equal years of experience.

</comment></comment></comment></comment><comment><USER32> I think the answer to age bias (that author referred to) is remote work. No one gives a shit how old you are if all you need is code, slack, email, and zoom/webex.

Or so is my experience.

<comment><USER33> Speaking as a mostly remote worker, you still have to get by a lot of the screening BS - and commonly awful HR treatment - before you can start work. Also many places think they can pay a lot less for a remote person.

<comment><USER34> Do you use many of the services like Hired / Vettery or Remote seeking these gigs?

I'll be honest I just haven't put much effort into it quite yet - still trying to arrange a few other projects in the event one of them takes off.

I am just resided to the "if it doesn't exist - make it yourself" but it sure is taking a lot of patience out of me to make it so.

<comment><USER33> I've not had good luck with Hired, but I haven't been a developer in quite a long time. Mostly it's been "make it yourself" which is unfortunate, I agree.

</comment></comment></comment></comment><comment><AUTHOR> OP here, I just realized the year slug was 2017 and it's clearly 2018. Updated link is here: [https://thewebb.blog/thoughts/2018/why-the-job-search- sucks](https://thewebb.blog/thoughts/2018/why-the-job-search-sucks)

Thanks for the insightful responses!

</comment><comment><USER35> One thing about feedback: Too much feedback helps candidates game the system. This ultimately leads to bad hires, who end up getting fired. It hurts the process overall.

When interviewing with a good interviewer, he (or she) knows that whiteboard sessions / tests / projects are just hypothetical situations. If I throw an unfamiliar API in front of you, and you ask certain wrong questions, I know you're not going to work out. If you "get it" and can move forward, I know you're going to be able to learn all the weirdo stuff that you need to learn in order to do the job.

But, something I learned when I was in a similar situation: Companies that demand a LOT of upfront, grueling time in the interview process should be avoided. Once a call drags out beyond 45 minutes, or the coding test is just too time consuming, it's time to walk away.

Regarding whiteboarding, if the candidate argues with me about why we're using a particular API, I pretty much reject the candidate. (No, we can't use the new threading API, I want to see how you can learn this API. No, we can't use an ORM, I want to make sure that you understand how to use a database.)

<comment><USER28> > Regarding whiteboarding, if the candidate argues with me about why we're > using a particular API, I pretty much reject the candidate. (No, we can't > use the new threading API, I want to see how you can learn this API. No, we > can't use an ORM, I want to make sure that you understand how to use a > database.)

YUCK. One of the first things I will do when presented with a technical scenario is start questioning the problem's parameters, including API choice.

Interviewer: "Show me how you'd store a list of items in C++." Me: "Well, depending on the expected usage pattern I'd reach for one of the standard library's containers like std::list since it is time tested, robust, and comes with the compiler." Interviewer: "No, er, I mean if you don't have std::list... I want to know you can implement something from scratch." Me: "Am I really going to be working on a project without the language's library?? You generally don't want someone's hand-rolled linked list in production code."

I guess not wanting to waste the company's time re-implementing a wheel makes me a bad candidate.

<comment><USER34> I've been forced to implement atoi and itoa functions in interviews, and albeit I agree with you that it's silly, I think they are just looking for a positive attitude.

I try to hype myself up with a "thank you sir may I have another" once I get through solving what I think is a silly question.

I remember being asked to solve a linked list problem with callbacks in JS where a service returned a Node and the API call to the next node in a list.

I had to just build a function to traverse the async list - I'd have wanted to just redesign that API, but instead I had to solve their silly problem.

I got the job, and it was all due to forcing myself to have a positive attitude and being happy to solve the problems vs questioning why one would ask it.

<comment><AUTHOR> That...sounds absolutely dreadful. I'm happy for you but that doesn't sound like my cup of tea.

<comment><USER34> I think it just happens when younger folks do the interviewing, they don't know how to interview so they grasp for what they know.

Just seems that every big firm does it. Recently I had a take-home assignment - spend like a week at night working on it only to be kind of insulted by the folks who interviewed me. They didn't even spend 5 whole minutes looking over my work. I was far more frustrated with that than I was being asked to implement a Linked List in front of someone on the spot.

</comment></comment></comment></comment></comment><comment><USER6> > Writing CSS in JS? GROSS.

Similarly jsx is writing HTML in JS. The whole evolution of web was to separate, modularize, componentize the concepts (DOMs, CSS, JS, HTML5 APIs, templates etc.), what on fucking earth happened?

<comment><USER36> The goalposts moved. We went from building websites to building SPAs, and the biggest problem there was reusing/abstracting/modularizing logic.

</comment></comment><comment><USER37> Hey, just wanna stop by to say hi! I was in the same situation, the company I working for ran out of cash for no reason and I got no paycheck since November too :(

<comment><AUTHOR> Damn, that sucks. I hope we both find an awesome place to work soon!

</comment></comment><comment><USER38> > Coding/design tests

Left tech years ago, but assumed that many/some of those tests and sample projects were employer attempts to procure free labor w/o any of the burdens (liability) of internships and employment.

> Rounds of interviews

Perhaps its helpful to look at the whole process from a different vantage point. Saw an article on CNBC a few days ago about the importance of, essentially, seeming desperate and wholly committed to whatever position it is one is applying/interviewing for. Seem too smart... too ambitious... have options for doing something else if this doesn't work out... etc? Don't expect to get hired. I can actually attest to that.

Anyway, the implication is that if you are still available and willing to go through rounds of interviews, you probably aren't 'all that desirable' in the first place. Yes, there is some irony there. But I know this having spoken w/ a # of HR people.

> Feedback:

\-- Dear Paul, Hahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahaha NO.--

Yeah, that would be, at a minimum, courteous, but... Workers are for the most part, commodities. As such, feedback isn't merited. Could say more here, but won't.

> How to deal

Obviously, each person's situation is different, but my experience tells me the best solution is to position oneself for independence (as much as is possible in a society). While in my last job, I pretty much decided that I'd focus on (hopefully) not needing another job. And while I didn't get everything right, I think that mindset and planning was instrumental in me pretty much being able to walk away from a job market that is pretty stacked against the typical applicant.

I know tech is supposedly immune to such stacking, but... Last year I listened to an applicant's conversation with a recruiter. The applicant was getting robbed, so much so that a guy, who I think was/is homeless, told the applicant as much. I mean are people really going through all this work to get paid $25/hr... in California???

Yikes!

</comment><comment><USER39> But, why does job search sucks?

I feel like I need to hear the other side of the story to get the full picture.

<comment><USER13> Companies can't tell the difference, get bad candidates and are then afraid to fire them, even in "at will" states.

Companies think this rigamarole will separate good candidates from bad candidates.

</comment></comment><comment><USER40> The tone of this whole post tells the actual story.

<comment><AUTHOR> You sound like the dismissive companies I ranted about.

</comment></comment><comment><USER41> Filling out 7000 fields on taleo is comical.

It's why I use the hated recruiters now. I get to skip the BS of applying online. (At the employer's expense too!)

I miss the old days, you submitted your resume, then they called you for an interview. You interviewed and either got hired or didn't (they'd typically call and say if you didn't).

Why we need 80 layers of BS between the job seekers and employers is beyond me. I've also never seen a competent HR person in my 20+ years of working in IT. If you can't tell by their resume, HR isn't going to give you anything more so skip that stupid step as well.

<comment><USER31> Why the "hated" recruiters. Only once in the past 20 years have I even thought about getting a job without a recruiter. I applied for 17 jobs through recruiters in my last job search and I knew the technology stack and the salary they were willing to pay before ever starting the process. Out of the 17, only one wasn't interested in starting the process, I got three offers within a month and none of the other 12 rejected me, I took myself out of the running when I found a company I liked.

At no point was I just twiddling my thumbs waiting to hear back. The recruiters always knew where I was in the process. One day, I had 6 phone screens with different companies. Another day, I had a morning interview and an evening interview.

I'm not trying to brag about myself, when you have a recruiter it's just so much easier finding jobs you are qualified for. They've also worked with the company before so they can prep you a little more for the interview.

Also, you hardly ever walk into an interview knowing whether the salary you are expecting is in line with what they are willing to pay without a recruiter.

<comment><USER42> I concur.

1) Every time I talk with a recruiter, salary is the first thing brought up. It saves so much time to go through an interview process only to find out they're going to pay you 30% below market value.

2) A recruiter brings you an job position that you did not know about in the first place usually. There are thousands of companies in an area, and not all of them post to the job boards you're looking at.

3) Using the recruiter means the company is motivated to filling that position. They need someone now and the usual means of getting people in to interview in that company is broken.

4) Developing a relationship with a recruiter is valuable, because they know what's hot, and what companies are willing to pay.

</comment></comment></comment><comment><USER43> Employers should be required, by law, to compensate interviewees for their time at a rate equivalent to the job for which they are interviewing.

(Macdonald's, Goldman Sachs, line cook, VP legal, same law, everyone, everywhere)

<comment><USER44> Well then I would be a professional job candidate. I could easily fill my time with $300k+ job interviews that I can pass a phone screen for but am not fully qualified for.

<comment><USER43> First, good for you. Second, if the transfer of wealth from employers with 300k+ jobs to the public does not lead them to change their practices, than even better for you. Go get the money. But, for the vast majority of people and employers, your special case is irrelevant.

There exists a very inefficient, unbalanced social practice. Needs a regulatory nudge. Simple law. California goes first. The world follows. Onwards.

<comment><USER44> The interview process would certainly change as a result, so who knows if one could interview full time sustainably.

But I don't think it's a special case. Good software developers are by nature great at hacking systems and plenty of them would find it more profitable to keep interviewing rather than work a regular job.

If it does need a regulatory nudge, paying people to interview is the most naive way to do this.

<comment><USER43> "They say we offer naive answers to complex problems."

Just paraphrasing something from my sons leadership project ;)

<comment><USER44> Google tells me you're misquoting Hucci lyrics.

<comment><USER43> I think you are misreading the SERP.</comment></comment></comment></comment></comment></comment></comment>


Search Engine Yandex Launches "Cocaine" To Compete With Google App Engine - <AUTHOR> http://techcrunch.com/2013/10/16/search-engine-giant-yandex-launches-cocaine-a-cloud-service-to-compete-with-google-app-engine/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+Techcrunch+%28TechCrunch%29 <comment><USER2>
      "Regardless of the name, these cocaine clouds represent a new force in the cloud services market and show the trending acceptance for Linux containers."

Ah, yes, "cocaine clouds."

<comment><USER3> I wonder if the Yandex guys are fans of Woody Allen.

<comment><USER4> More like Eric Clapton's fans

[https://github.com/cocaine/cocaine- core#readme](https://github.com/cocaine/cocaine-core#readme)

</comment></comment></comment><comment><USER5> Regarding the name...

If lots of people started emailing each other, talking on social networks, etc about it, would that cause a corresponding extra amount of filtering work for the likes of the NSA?

If so, wouldn't it rather screw things up if we got loads of these like, Linux Bomb, Android Plot, OSX Semtex, Windows Terror and so forth?

<comment><USER6> Do you think people who actually use/sell/buy it call it be the medical name?

<comment><USER7> They probably call it coke, but that already conflicts with coca cola, and some other things.

</comment></comment></comment><comment><USER8> I'm curious why they chose 'Cocaine' as the name of the project. Naming a project after a substance illegal in most of the world is pretty bold. I'm looking forward to how they market this outside of Russia.

<comment><USER9> I wonder if it will become a trend to name technologies after taboo items? Imagine if a product called Dildo comes out and it is the best, most easy to use piece of software that ever existed. People would just have to use Dildo and get over the name. It could start a revolution.

<comment><USER10> There's a javascript testing tool that was known as "testacular". Well, cool pun bro, but the name was changed to "Karma" when it grew up.

</comment></comment></comment><comment> V-2 [http://www.economist.com/blogs/dailychart/2010/11/drugs_caus...](http://www.economist.com/blogs/dailychart/2010/11/drugs_cause_most_harm) \- alcohol is more harmful than cocaine, and yet you've got www.alcohol- soft.com and noone makes a big deal out of it.

Illegal? Sure, but so is killing. And yet you've got [http://www.killermobile.com/](http://www.killermobile.com/) for example.

<comment><USER11> I kinda think both Alcohol Soft and Killer Mobile are pretty bad names too.

</comment></comment><comment><USER12> Hmm, no. It's open-source system to create your own PaaS like Heroku or Google App Engine. Right? See here: [https://github.com/cocaine/cocaine- core](https://github.com/cocaine/cocaine-core)

</comment><comment><USER13> Other than the fact that they are using docker, what I found most interesting was that they are developing support for Racket!

<comment><USER14> Quite a number of Jet Infosystems (a company with a lot of products utilising Lisp) ex-employees ended up in Yandex.

</comment></comment><comment><USER15> The degree of reality distortion of the management who chose this brand name is very telling. Moscow, Russia.)

So what, FreeBSD jails based hostings are cool again? But, of course, Docker is much more cool and "innovative".

</comment><comment><USER16> In my experience, although I know only a few Russians, they are not very politically correct. So calling it "Cocaine" is not that surprising.

<comment><USER4> Compared to the US, any other country can be deemed politically incorrect :)

<comment><USER17> I'd say Scandinavia and the UK are on par at least

</comment></comment></comment><comment><USER18> It's odd, they don't mention if it's possible to do rails.

Maybe with a couple dollar bills they can make rails happen, doesn't seem to work so far.

<comment><USER19> This kind of talk is probably going to send more than a few recovering addicts reeling back to rehab if not careful. ;)

</comment></comment><comment><USER20> The documentation is scattered, but the best information can be found at:

[https://github.com/cocaine/cocaine-docs- en/wiki](https://github.com/cocaine/cocaine-docs-en/wiki)

[https://github.com/cocaine/cocaine- core#readme](https://github.com/cocaine/cocaine-core#readme)

[https://github.com/cocaine/cocaine- core/wiki](https://github.com/cocaine/cocaine-core/wiki)

The docs state that they refer to the 0.9 version, while development is going on in the 0.11 branch, so the docs might be more of less out of date.

It seems that they have already implemented a large part of the Heroku infrastructure, including service discovery, auto balancing, cross-language events (using ZeroMQ) and that they are using it in production. All in all, an impressive feat!

It would be interesting to hear if anyone has experience running/using this outside of Yandex. The source code seems well written, though comments are quite sparse.

As Lazare remarked, it seems to directly compete with flynn.io. It is good to see that different high-level platforms are created based on docker. But it would be nice if these platforms would consist of modules (for example service discovery or messaging) that can be used without using the whole kitchen-sink. I am not sure if this is possible with cocaine.

BTW, the repo cocaine-core is quite a bit older (since 2011) than docker (since early 2013?). The docker-core readme states that docker support is "on it's way" so it is not clear how mature this is.

P.S. As adults and hackers, can we look beyond the name at the technology presented here?

<comment><USER21> I work for dotCloud (the company which started Docker), and I was at YaC (Yandex tech conference; the equivalent of Google I/O in Eastern Europe, if you will), and had the opportunity to discuss this with the Yandex team. Here are some extra info (that can easily be found on the web, so nothing sensitive here)

\- They released the Docker plugin shortly before the conference [1] \- Yandex uses a distributed storage system called Elliptics [2] in many places, and they implemented an Elliptics backend for the Docker registry (the code is out there somewhere. They contributed the Elliptics backend to the Docker registry repo a couple of days ago [3]. \- Cocaine is used to power various things inside Yandex, like the Yandex.Browser backend. This backend can sustain very high loads (10-100k req/s). I discussed with their Ops team, since they had specific questions about how to identify (and remove) potential performance bottlenecks in Docker networking stack. (Good news: you can achieve native network performance within containers with zero overhead!)

I'm considering writing Dockerfiles for Elliptics and Cocaine (as soon as I can find some spare time to do so...) but I would also be happy to help if other people want to do that (I'm actively monitoring the docker-user mailing list [4] so don't hesitate to get in touch through here).

[1] [https://github.com/cocaine/cocaine- plugins/tree/master/docke...](https://github.com/cocaine/cocaine- plugins/tree/master/docker) [2] [https://github.com/reverbrain/elliptics](https://github.com/reverbrain/elliptics) [3] [https://github.com/dotcloud/docker- registry/pull/101](https://github.com/dotcloud/docker-registry/pull/101) [4] [https://groups.google.com/forum/#!forum/docker- user](https://groups.google.com/forum/#!forum/docker-user)

</comment></comment><comment><USER22> Haha, I wonder if the name is just a clever way to get the word out, since yandex is fairly unknown in the west.

</comment><comment><USER23> After trying for minutes to come up with an apt comment, I think I will just pack my stuff and move to Russia.

</comment><comment><USER24> Does anyone have any comments other than the name?

Seems like it competes directly against the soon-to-be-released Flynn[1] and Deis[2]. I'm tempted to poke at it a bit, but the documentation seems pretty scant. In theory an open source roll-your-own PaaS is pretty cool, right? Certainly Flynn got tons of attention and funding with a similar value proposition.

[1]: [https://flynn.io/](https://flynn.io/) [2]: [http://deis.io/](http://deis.io/)

<comment><USER25> I find the name pretty funny myself...

Speaking on behalf the the Deis team, it's nice to see another public PaaS getting an open source implementation. We're obviously bigger fans of the Heroku model than the GAE model, but that's the beauty of the new Docker PaaS world. Choice.

I just hope their Docker containers/images end up being portable. Some better docs wouldn't hurt either.

</comment></comment><comment><USER26> Couldn't tell by looking around but do you think this could be used to host multi-tenanted environments? How about untrusted code execution?

<comment><USER23> Yes that's the crux of it

</comment></comment><comment><USER27> Feels like some decision makers are doing cocaine and making them feel perhaps more confident than they should.

<comment><USER28> This theory is probably correct...

</comment></comment><comment><USER29> It's me or that beta.yandex.com search engine (that I've never heard before) is a complete ripped-off of google? I mean, I know it's a search engine. But in term of UI and design choices, the beta looks _very_ similar.

<comment><USER30> It's a teaser for their "Islands" project. In its core, it's something actually new (letting you interact with other sites without leaving search pages). However, in terms of presentation, it is indeed quite similar to google.

<comment><USER31> I actually really disagree. Google is incredibly simple, it's essentially a header, footer, an input field, three buttons and an image.. It's designed to be as simple (and thus attractive to a larger/broader base) as possible. Maybe I'm not being very insightful here, but it's like comparing two sports cars that are white and saying they're the same.

<comment> guard-of-terra Actually, Google search results are more and more cryptic with each year pass. Now you don't get organic web results too often, instead you are awash with images and captions with weird padding.

<comment><USER31> Very true. A lot of effort goes in to that cryptic design though.

</comment></comment></comment></comment></comment><comment><USER32> Supporting C++ is pretty interesting. Are there comparable hosts providing C++ hosting?

<comment><USER33> There are heroku buildpacks for C: [https://github.com/atris/heroku- buildpack-C](https://github.com/atris/heroku-buildpack-C)

</comment></comment><comment><USER34> I'm pretty sure my companys filter will block this only because of the name.

</comment><comment> V-2 It would be nice naming versions after drug names, like Android with their sweets. But it should go from weakest to strongest - whoever starts with cocaine straight away, does not leave themselves a lot of space

</comment><comment><USER35> This will be bad for cooperation between NSA and DEA.

<comment><USER36> I'd say quite the opposite, now they can detain more developers for 'using cocaine' and then blame it on misunderstanding after the fact.

</comment></comment><comment><USER37> If we leave aside the name.

Do people see potential for this?

I saw a short presentation on it at the weekend at PyCon Ireland, It was above my pay grade but it was intrigueing.

</comment><comment><USER38> "We are running on Cocaine." Seriously? They don't even have the excuse of being French (do you like Coq?).

<comment><USER39> Hey, makes sense now.

</comment></comment><comment><USER40> Love the name!

</comment><comment><USER41> Its an unfortunate name

</comment><comment><USER42> wow, they use docker</comment>