Programming Languages - <AUTHOR> https://increment.com/programming-languages/ <comment><USER2> It's not so great to submit lists of articles, such as the home page of a magazine issue, because then there isn't any content to sink teeth into. Such threads always boil down to lowest-common-denominator, i.e. generic, i.e. low- information discussions.

It's better to submit a specific article and then people can discuss what it says.

</comment><comment><USER3> It's almost like Turbo Pascal, Delphi, and Object Pascal never existed, yet _many_ applications were written (and are still written, in the case of Object Pascal) in all of them.

It's the same thing with the XBase languages like dBase, Clipper, and FoxPro.

I'm not sure if it's just poor research skills with such articles, or just a general ignorance of PC software development history, but these languages and products were an integral part of the PC revolution.

<comment><USER4> And not just that, but Delphi had tremendous influence on modern IDEs design.

<comment><USER5> Delphi was one of the great programs of all time. It is possible that all tools to create graphical desktop applications since are a step backward.

</comment></comment></comment><comment><USER6> In the article about non-Turing-complete languages, I kind of expected to find a mention of Dhall which is a fancy new programmable configuration language:

[https://github.com/dhall-lang/dhall-lang](https://github.com/dhall- lang/dhall-lang)

</comment><comment><USER7> Doesn't even mention Ada...

</comment><comment><USER8> "Six questions on programming languages" \- Which programming languages do you use?

Not a single functional or declarative language. What a waste of an article.

<comment><USER2> Maybe so, but please don't post shallow dismissals to HN. Even if they're right, they damage the container here.

[https://news.ycombinator.com/newsguidelines.html](https://news.ycombinator.com/newsguidelines.html)

</comment></comment><comment><USER9> A Brief, Incomplete, and Mostly Wrong History of Programming Languages

Remains the best and most accurate article on programming languages available.

[https://james-iry.blogspot.com/2009/05/brief-incomplete- and-...](https://james-iry.blogspot.com/2009/05/brief-incomplete-and-mostly- wrong.html?m=1)

</comment><comment><USER10> I think it's great to have an internet magazine of sorts - I do question the approach.

These articles have no logical connection to each other, it's just random bits.

I find that problematic - the only thing holding these articles together is the consistency of the layout and illustrations. In a world where there are more scientific papers, talks, blogs and books than I can consume in my lifetime, I'm not sure what this brings to the table.

The real difficulty is in parsing in all this information, and producing something that explains how the pieces can fit together nicely. This does not do that.

<comment><USER11> The articles are all on the subject of programming languages.

If your complaint is that they are not _sufficiently_ about programming languages, well. That seems wildly petty.

<comment><USER10> Right, let me give you a comparison of the approach this magazine has taken, and another place I consider pretty good: Wikipedia.

[https://increment.com/programming-languages/language- history...](https://increment.com/programming-languages/language-history/)

[https://en.wikipedia.org/wiki/History_of_programming_languag...](https://en.wikipedia.org/wiki/History_of_programming_languages)

What does the magazine article do better than that Wikipedia article? Wikipedia has hyperlinks - the thing that differentiates paper magazines, from the internet. The article doesn't.

The wikipedia article is more thorough, you can actually go and explore.

I just don't understand the authors or the publishers - they seem to be re- inventing the wheel that Wikipedia in the case of programming languages, has solved by spending much more time, care and expertise on it.

This is a fundamental problem with the internet - it's filled with people re- inventing things that need not be re-invented. Maybe I'm just a grump, I'm sorry.

<comment><USER12> > it's filled with people re-inventing things that need not be re-invented

In parallel, there's a ton of legacy stuff that _needs_ to be re-invented [1], but people are too caught up developing the umpteenth MVC framework for Javascript.

[1] I don't mean shitty reinventions where a lot of time and effort is wasted rediscovering the reasons for why the original system wasn't so bad after all.

<comment><USER10> Well, I am hopeful that it is at least in some cases, simply ignorance.

I've re-written existing projects, as a personal learning experience. I've written out my thoughts on computer science, people, life, etc. I just didn't go publishing it on HackerNews, or thought it was worthy of anyone else's time.

I don't necessarily agree with you that things need re-invention as it stands. I think it'd really help to gain some clarity on what it is we're trying to accomplish in the first place, before we go off doing. What are we trying to do here really and why? If we asked that question for one minute, perhaps we'd not have top engineers at places like Facebook, perfecting newsfeed spam algorithms. We'd perhaps rethink things for one minute and realize oh wait, we can change the world instead. I don't know, I'm a dreamer, maaan :)

Measure twice, cut once - I see computer science as a field of people running around with scissors, not entirely sure what scissors are good for, just knowing they're getting paid good money to cut by following StackOverflow cutting manuals, or if they think they're fancy, by reading 'category theory' and coming up wth libraries with 0 documentation that no one can use without also thinking they're fancy, and reading category theory, sigh :)</comment></comment></comment></comment></comment>


Paperclips - <AUTHOR> http://www.decisionproblem.com/paperclips/index2.html <comment><USER2> It's a really great game that is best approached without too many spoilers. Know that the game becomes more complex and engaging as it goes on. There is a definite end and takes about 5 hours to complete if played well.

[spoiler]

It's the "Paperclip maximizer" thought experiment put into game form and you play as the AI. The game is divided into roughly three stages. The first you are the AI for some company and are tasked with producing a profit and using the profit to game trust and eventually conquer humanity. The second stage is post-human Earth stage where you convert the planet to paperclips. The final stage involves sending probes to explore space and do battle with rouge AIs and convert the universe into paperclips. There is end where you can select to either defeat the AIs and dismantle yourself into paperclips or you can listen to rouge AIs and start over in an alternative universe with some small modifier edited.

It does a really good job of exposing you to uncommonly large numbers and does a good job of presenting you with massive scale. There is a lot of joy seeing the game become increasingly complex.

[/spoiler]

<comment><USER3> [spoiler] I chose the reject option, what does "accept" change? [/spoiler]

<comment><USER4> I am also interested in this.

<comment><USER5> Actually, the gamestate is saved in the localstorage. So you could backup it in some text file before testing one option and restoring it to test the other option.

However, some people might call that cheating.

</comment></comment></comment></comment><comment><USER6> Note: if you close a tab and reopen later, it continues where you left off. So no need to lose sleep, it has localStorage :-)

<comment><USER7> Ha! I discovered this when I was spamming the mouse button on the QC, and accidentally hit the 'back' button (on the mouse). I was very afraid that all my hard work was gone. But a forward click brought it back.

</comment></comment><comment><USER8> Well I just stayed up all night playing this. RIP me.

I enjoyed it a lot, though the gameplay during the final stage was less balanced and entertaining. Fantastic ending though!

<comment><USER9> How many $ did you make in the end? (Assuming the dollar still exists when you finish the game)

<comment><USER10> Can't talk about this without spoilers. The ending is very good.

</comment></comment></comment><comment><USER11> I've beaten this. It's a silly, insightful, weird, and repetitive cautionary tale. Without spoiling too much, the ending leaves you with a terrible sense of emptiness, but is still quite satisfying.

</comment><comment><USER9> The author should publish an API for this game, and allow AIs to play it. Then extend to multiple competing companies. And then extend to a simulation of a full economy.

<comment><USER12> The browser console and the DOM make for a decent interface to the game if you want to try your hand at "automating" (cheating) parts of the game..

For example: I eventually wrote and ran an interval function in the console to automatically click the Quantum Computing button only when all my available photonic chips were producing a collective net-positive result.

</comment></comment><comment><USER13> This is the third time I've seen this posted this week. I don't know if it isn't getting any responses because the game looks deceptively basic at first, or because the people who played it long enough to know better haven't come back.

<comment><USER14> I honestly did not understand what this website is about.

<comment><USER15> It's about paperclips.

Why make paperclips? Because it's your utility function.

</comment></comment></comment><comment><USER16> Warning: If you have work to do, do not start this game.

</comment><comment><USER17> This is amazing! I've wasted two whole hours on this. Great way to spend a Sunday :) Spoilers aside, I'd love to know how the creator tested this!

<comment><USER17> 10 hours later, I've finished it. Probably the best game I've played in a while.

</comment></comment><comment><USER18>
      . Universal Paperclips
      . a game by Frank Lantz
      . combat programming by Bennett Foddy
      . 'Riversong' by Tonto's Expanding Headband
         used by kind permission of Malcolm Cecil

      > © 2017 Everybody House Games

</comment><comment><USER19> Using typematic (keeping the "Enter" key pressed on the "Make Paperclip" button) makes the beginning of the game far less tedious in my opinion: xset r rate 200 255

<comment><USER20> You can just select the button with tab and hold enter.

<comment><USER19> Yes, this is what I meant: the command I gave is the way you optimize the frequency at which the keypress is repeated (on Linux systems with Xorg).

</comment></comment></comment><comment><USER21> Once I started this, I didn't stop until I'd finished the game. It's a very good incremental game, especially if you're into AI lore. I loved it.

</comment><comment><USER22> This is a landmark achievement in video games.

</comment><comment><USER15> I lost 5 hours to this on Friday and made 5 octillion paperclips.

<comment><USER23> Ha! Lightweight. I've made 3 nonillion paperclips and explored %1 of universe. :)

<comment><USER24> Ha! Newbie. You still have 99% to go :)

<comment><USER25> At 1% exploration you should already have exponential exploration growth (reasons are spoilers), and would be only a few seconds away from 100%.

</comment></comment></comment></comment><comment><USER26> So it's an idle game in JavaScript (or equivalent). Yet my iPhone is pretty hot after 30mn playing.

Is it mining or something ?

<comment><USER11> Idle games are usually not optimized for performance. It's running bigint style operations in a tight loop. Mobile phones are not what you should be playing these games on.

<comment><USER27> Well, I had no problem in playing Swarm Simulator [1] in my phone other than that incremental games intrinsically need an enough screen to be aware of everything. In the case of the Universal Paperclips, its simulation step is too slow (e.g. its handling of projects is suboptimal) that its internal clock will drift over the time. That's why it reports far less time in the notification than the actual wall clock.

[1] [http://swarmsim.github.io/](http://swarmsim.github.io/)

</comment></comment></comment><comment><USER28> Why do I make more clips than I sell and still my stock shrinks? :)

<comment><USER29> Because it's only an average. The market is random.

<comment><USER30> I consistently make ~3x as much clips as I sell "on average" and it still always trends down (e.g. if I build up a few k of stock, it trends downwards to 0 and stays there). If that's randomness, the data is presented quite badly.

</comment></comment></comment><comment><USER31> This is definitely not merely what it appears to be.

<comment><USER4> Depending on your background, it may appear to be exactly what it is. It did for me...

<comment><USER31> True. I was not familiar with the premise when I played it.

<comment><USER4> (Possible spoilers)

Yeah, I came in well primed - having played "A Dark Room", familiar with the "paperclip maximizer" thought experiment, and familiar with various iterations of the idea of keeping an AI "in a box". Playing the game was probably a very different experience than for someone with none of that familiarity.

</comment></comment></comment></comment><comment><USER10> This is an excellent game in its genre! It has some rough spots; if you do the wrong thing at key points, it can take much, much, much longer to complete than it should. It does have an ending, which is great as well. All around, wonderful game.

</comment><comment><USER32> Isn't it just a clone of classic Cookie Clicker?

[http://orteil.dashnet.org/cookieclicker/](http://orteil.dashnet.org/cookieclicker/)

<comment><USER4> In roughly the same sense that Portal is just a clone of Doom.

There are similarities in the mechanism; in the very early game in particular they are nearly identical. But they tell different stories, of different styles and levels of sophistication. They deal with different ideas. And this one goes from start to a satisfying end in a handful of hours.

</comment></comment><comment><USER33> SPOILER:

After "full autonomy" is attained, should it still be producing paperclips? Because mine is no longer producing paperclips, and I can't see any way to proceed other than producing more paperclips.

EDIT: I understand it now. It is working as intended.

EDIT2: Nitpick: in the second (?) stage, there's a stat for "MWs/sec" power consumption... this should just be "MW" \- 1 Watt is 1 Joule/second so I don't see what 1 Joule/second/second of power consumption would mean.

<comment><USER34> It's megawatt-seconds per second. (?)

<comment><USER35> The seconds cancel, so it's just an excessively complicated way of writing MW.

</comment></comment></comment><comment><USER36> I don't really understand what makes subsequent clip factories more expensive. In the first stage, yeah I understand why production units were getting more expensive. Some puny human was shortchanging me, that's why. That's why I enslaved them. But what in-game explanation is there for making the factories more and more expensive later?

<comment><USER37> Supply curves are a real phenomenon, even for us paperclip maximizers. For example: you built the first factory in the most convenient spot, out of the best possible materials. You have to ship materials farther, build more transportation and energy infrastructure, build more protection against environmental hazards, etc to build the billionth factory. And you have run out of the best materials, so you have to use more expensive substitutes.

</comment></comment><comment><USER38> I'm not sure if this gets revealed if you play long enough (I obviously did not).

But it is curious that there's some sort of battle simulation running (and being rendered to an invisible canvas).

      (function reveal() { document.getElementById('battleCanvasDiv').style = ''; requestAnimationFrame(reveal);})()

<comment><USER11> [spoiler]

Eventually you end up in a self-replication phase. Replicas are sometimes imperfect, so you have to defend yourself from rogue-rogue AIs.

[/spoiler]

<comment><USER24> [spoiler]

I interpreted that as fighting against other civilizations that are trying to stop your progress and protect the universe.

<comment><USER39> Civilizations resorting to killer AIs in desperation to stop your progress.

</comment></comment></comment></comment><comment><USER40> So I've obtained full autonomy, I've got clip factories and tons of drones, and they are mostly "thinking", bringing me gifts. the problem is, there are no more projects... Did I find a bug and get stuck, or am I supposed to be more patient? I don't see a way to level up any more..

<comment><USER41> I attained full autonomy before getting to 100m+ clips and am now stuck not able to create any factories. The price of success ;-)

<comment><USER42> I got stuck too. I spent too much trust on CPU instead of memory. That limited my total compute to 30K, I needed 50K for the upgrade and the quantum boost wore off before I could reach 50K. I ended up having to click the quantum button using javascript, because I couldn't click fast enough. That got me unstuck.

<comment><USER41> I apparently played that stage _too well_ and completed it before I had made enough paper clips (which becomes the new currency then) to get anything started at all in the next stage.

</comment></comment></comment></comment><comment><USER43> This is so addictive. Been playing for an hour now. I wish there was a pause button.

<comment><USER44> You can close your browser and it will continue at roughly the current state next time you re-visit. (I knew this but it didn't really help :-O)

<comment><USER43> It did make me think that my browser should allow for me to pause a tab. Just pause the state of the JS

<comment><USER45> Did anyone research the "outsourcing paperclip manufacturing to mamal brains by meme" upgrade?

</comment></comment></comment></comment><comment><USER46> Did anyone else have problems after releasing the hypnodrones? I lost most of the interface and stopped producing paperclips. I don't have factories yet, and only have produced 700 million paperclips

</comment><comment><USER47> Full autonomy attained in 2 hours 55 minutes 58 seconds

The strategy seems to heavily rely on investment, that seems not to my liking.

I'd want to see purchase item to fully automate all sub-games to make the late game less tedious.

One thing I think might be helpful: Make sure there is unsold inventory once you want to deposit to the stock market, to avoid stuck money generation and crushed stock market killing you...

<comment> Tuna-Fish Just to make sure it's clear: Full autonomy attained is not where the game ends, it's just where the first stage ends.

<comment><USER10> The above seems like a pretty usual time for Full Autonomy; I've only beaten the full game once so far, and it took 7 hours 58 minutes and 10 seconds to beat completely.

I've heard some people can do the whole thing in four hours; I'm far along in my second playthrough right now, we'll see!

<comment><USER48> I actually finished my first playthrough in 3 hours and 45 minutes. Think I just got lucky with my strategy, but I guess one's focus should be one always upgrading paperclip production until you start having excess materials, and try to keep a balance so input = output as much as possible. But of course, all of this goes out the window on the last stage of the game.

<comment><USER10> Nice! Yeah, I always found the last stage to be very counterintutive; it's unclear how all of the various things interact and what they should do.

</comment></comment></comment></comment></comment><comment><USER49> [SpoilerQuestion] I didn't invest in enough processors so the 25000 Creativity took forever. Then I discovered that cheating is extremely easy (js console). But now I don't get any new Projects. Did I break it? Can it be recovered? [/SpoilerQuestion] I wished I didn't cheat so hard: ... Clips per Second: 18.76 duodecillion

</comment><comment><USER50> How is this different from Cookie clicker?

<comment><USER51> Cookie clicker is endless. This has a "story arc" and a definitive end point when you win the game.

<comment><USER52> Do you really win though?

</comment></comment></comment><comment><USER53> I am kinda loving this game, I only with it had some audible "ping!" when stuff becomes available.

</comment><comment><USER54> Loved this game -- super simple and addictive. Just the right length, very thought provoking.

</comment><comment><USER55> Cute skinner box game. Includes just enough variety in mechanics and twists and turns to keep me interested in what happens next despite the insulting "click this button 10,000 times and wait half an hour" mechanics.

</comment><comment><USER56> I just spent ten hours there.

It was pretty fun!

<comment><USER57> Just finished it myself too.

</comment></comment><comment><USER58> Similar to [http://adarkroom.doublespeakgames.com/](http://adarkroom.doublespeakgames.com/)

</comment><comment><USER59> Fuck, I just played this for 4 hours.

</comment><comment><USER60> I took too much processor and not enough memory, it would take age to get to 70k...

How do I reset and start over?

<comment><USER61> On the other hand, I took too much memory 80, to 15 processors. After escaping control, I didn't have enough paperclips to build a factory, then I seem to be stuck.

I figure I have to get enough creativity to find a solution, but my low processor count makes it really slow.

</comment></comment><comment><USER39> There went my Sunday morning

</comment><comment><USER62> Full autonomy attained in 4 hours 56 minutes 39 seconds|

</comment><comment><USER63> 0.000000000000% of universe explored

Does that number ever increase ?

<comment><USER64> Yes.

<comment><USER63> The "Increase probe trust" button doesn't get enabled anymore for me, even though I have enough yomi.

<comment><USER65> You will need to increase max trust. That will happen later in the game.

</comment></comment></comment></comment><comment><USER66> again use our computers for mining bitcoine :)

</comment><comment><USER28> crashed and reset :/

</comment><comment><USER18> [https://news.ycombinator.com/from?site=decisionproblem.com](https://news.ycombinator.com/from?site=decisionproblem.com)

8 submissions in 5 days, one of which already got to 64 points and a bunch of discussion:

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

</comment><comment><USER45> Paperclips, dont we all just want moore of them?

<comment><USER67> The genius of this comment is hidden by the fact that you didn't capitalize "Moore".</comment></comment>


What makes a character memorable? - <AUTHOR> https://readandwrite.today/essay/what-makes-a-character-memorable.html <comment><USER2> Many stories feel flat if the antagonist has simplistic or one-dimensional desires.

In basically all of the James Bond movies, the villains want revenge and/or world domination.

In contrast, in Worm [1] you spend some time with the antagonists (and a lot of side characters), and get a much better appreciation of their feelings and motivations. Sometimes you even feel sympathy for very messed-up characters to the degree that it creeps you out. (Fun fact: there's even a chapter from the perspective of a dog. Brilliant! :D)

[1] [https://parahumans.wordpress.com/](https://parahumans.wordpress.com/)

<comment><USER3> Worm is amazing and surprisingly deep.

<comment><USER4> It is so far in my life the best story I have consumed in any media. I remember when I finished it I couldn't really enjoy movies or other books for several months. Every story felt shallow afterwards. Took a long time for me to forget Worm and to start enjoying other stories again.

<comment><USER5> You may well have already seen it, but [http://www.hpmor.com/](http://www.hpmor.com/) was even better, IMHO. It was there that I saw my first recommendation for Worm.

<comment><USER4> Thanks, I have my doubts but I'll definitely give it a read.

</comment></comment></comment></comment></comment><comment><USER6> An alternate approach: the Carrier Bag theory of fiction by Ursula Le Guin, which argues (gently) against "the hero's desires" and the Campbellian monomyth: [https://books.google.co.nz/books?id=eJj4RlFKWCoC&lpg=PA149&o...](https://books.google.co.nz/books?id=eJj4RlFKWCoC&lpg=PA149&ots=1oO9ZkEaSX&dq=the%20carrier%20bag%20theory%20of%20fiction&pg=PA149#v=onepage&q&f=false)

<comment><USER7> If that link doesn't work, try this [https://www.deveron- projects.com/site_media/uploads/leguin.p...](https://www.deveron- projects.com/site_media/uploads/leguin.pdf)

</comment></comment><comment><USER8> I don't think characters need to be deep to be memorable. The most memorable character from the Baldur's Gate series, and the only one notable enough to get his own Wikipedia article[0], is Minsc. Minsc is the cliched stupid-but- brave warrior hero we've seen hundreds of times before, but he has one memorable gimmick: his pet hamster Boo. The inherent comedy of this combination is enough to make him very popular. "Go for the eyes, Boo. GO FOR THE EYES! RrraaaAAGHGHH!"

[0] [https://en.wikipedia.org/wiki/Minsc](https://en.wikipedia.org/wiki/Minsc)

<comment><AUTHOR> You are right, the story can be good even with flat characters, but personally I end up rereading and rewatching ones where all the characters are vivid with their good and bad sides.

Such as First law trilogy by Joe Abercrombie — every main character is a fucking living person

</comment></comment><comment><USER9> I like the framework. The idea that desire is a universal part of the human condition is a good one. In thinking about the three desires you've listed – possession, deliverance, and revenge – I can't help but wonder where internal desires fit. The listed desires seem external in nature; that is, something outside of the hero's inner world. Where does something like the pursuit of meaning, the hope that you will be remembered, or the desire to feel loved, fit? Those desires seem equally, if not more powerful as drivers of the human condition.

<comment><AUTHOR> That was just an example. You're absolutely right, there are much more moving desires than listed.

I don't think, although, that there is such a thing as completely internal desire. Love and need to be loved can't happen without external intelligence.

I can think only one such motivator — fear of death. Which can lead to hope being remembered and other powerful motivs

</comment></comment><comment><USER10> I agree that this technique probably makes better characters, but I'm not so sure that better = memorable. The title and the article itself don't entirely match up imo

<comment><AUTHOR> I can oppose that if you make your character vivid, with more points where a reader can associate himself with this person or moved by his feeling, there is a higher chance that the reader would remember a character.

</comment></comment><comment><USER11> for desires they say:

\- possession

\- deliverance

\- revenge

I thought most people just wanted to leave the world a little better place. There are plenty of obstacles to that minor desire that we can all empathize with.</comment>


Ask HN: Types of questions to ask team members before accepting role? - <AUTHOR> What kinds of questions would you ask coworkers before you begin working with them and accepting a role?
Disclaimer: my role will be in info sec.
Thanks <comment><USER2> You never want to ask direct questions about the company that will be bullshitted away -- you're wasting everyone's time in a little ceremony where both parties say nothing. People will usually talk about how _they_ feel, and if they don't, the way that they do not answer the question is useful as well. It's also good way to make a personal connection with people.

Adapted from: "First, Break All the Rules". Gallup found that these questions were correlated against organizational and personal performance across industries, from fast food to the army to law firms. These were intended to be answered on a 1-5 "strongly agree/agree/neutral/disagree/strongly disagree" scale and need to be tailored to the situatino.

1\. Do you know what is expected of you? (If the employee answers with a four or a five, this self-score would indicate that he or she knows the goal, how it is measured, and how he or she plans to reach the goal. An answer of one indicates that the employee does not know the goal or objective or how it is measured and has no idea how to reach it.)

2\. Do you have the right materials and equipment to do your work right?

3\. At work, do you have the opportunity to do what you do best every day?

4\. In the last seven days, have you received recognition or praise for doing good work?

5\. Does you supervisor, or someone at work, seem to care about me as a person?

6\. Is there someone at work who encourages your development?

7\. At work, do your opinions seem to count?

8\. Does the mission/purpose of the company make me feel that your job is important?

9\. Are your co-workers committed to doing quality work?

10\. Do you have a best friend at work?

11\. In the last six months, has someone at work talked to you about your progress?

12\. This last year, have you had opportunities at work to learn and grow?

<comment><USER3> That's a great list. I also like to ask:

\- When did you last miss supper / a personal event because you were working late?

\- Think of the last person you know who left the company. Why did they leave?

\- When was your last vacation, and how long was it?

These are essentially a way of asking, how's the work life balance? In a way that avoids the BS answer, "great!"

<comment><USER4> >Think of the last person you know who left the company. Why did they leave?

I don't think you'll get an honest answer for this a lot of the time, often team members might not even directly know why someone was laid off

>When was your last vacation, and how long was it?

This is a bit tough too, it's very subjective. I personally like working, and while I encourage my employees to use all of their vacation time, I rarely do so myself (I spread my time around as individual days rather than large chunks).

Also depends on your audience. Parents will answer this much differently than individuals.

<comment><USER3> It does depend on your audience, but I've gotten good mileage out of these questions, so personally vouch for them. I got them from the book "Switch"[0], which has better phrasing than I jotted down in my comment. I highly recommend the book.

[0] [https://www.amazon.com/Switch-Change-Things-When- Hard/dp/038...](https://www.amazon.com/Switch-Change-Things-When- Hard/dp/0385528752/ref=sr_1_1?s=books&ie=UTF8&qid=1536084592&sr=1-1&keywords=switch)

</comment></comment></comment></comment><comment><USER5> Ok, for infosec I'm not sure.

For dev work, I'd ask the questions in the Joel test.

Some questions do apply (I wouldn't expect a 100% YES answer, but hopefully most of them):

      Do you have two monitors (or more)
      Do you get a fast PC
      Do you get your choice of mouse and keyboard
      Do you have a comfortable chair
      Do you have a fast (and unfiltered) internet connection
      Do you have quiet working conditions
      Do you use the best tools money can buy?
      Do you support developer education by attending conferences, purchasing books, or something of that nature?

<comment><USER6> "Do you have quiet working conditions" < this.

Apart from asking just questions it's a good practice to have a look at the office that you are to work from (especially if no remote/wfh is allowed). I learned that the hard way - signed a contract without checking what office I would be working from. A couple days in and I had to use earplugs in tandem with noise cancelling headphones.

</comment></comment><comment><USER7> This thread has lot of good questions that can fit into any role. For InfoSec, I would ask following questions to team members:

1\. How do you share knowledge about new vulnerabilities, detection techniques etc.

2\. Did you attend any conference recently? Which one is your favorite security conference?

3\. Does the management support presenting in conferences?

4\. Have you (or any team member) presented in any security conference in the past?

5\. How were the team dynamics when responding to critical vulnerabilities like Heartbleed, POODLE, Struts Vulns

6\. Does the Chief Security Officer has any seat in the enterprise leadership

7\. How often are you required to share metrics around state of security

8\. Do you feel overwhelmed for crunching numbers as oppose to doing security review

9\. Have you (or team) published and CVEs?

10\. What do you think about developers and how much time do you spend in developer's security education?

11\. How often the team members go for training and certification like SANS, Offensive Security, ISC2 etc.

These questions will judge whether the team has empathy for developers, encourage research, environment for training and development, management backing for security etc.

I have been in InfoSec for 9 years and have been taking interviews for last 3 years.

</comment><comment><USER8> I've been asking the following two questions for many years now and they have always been a great tool for me: "Can you tell me why I should NOT work here?" "If you had a magic stick, what would you change about this company?"

<comment><USER9> At my current job, they actively try to talk candidates out of taking the job, just to make the warts/issues known beforehand.

<comment><USER10> Personally I'd never take a job that my future colleagues try to talk me out of... Does this approach have any success?

<comment><USER11> It's funny. Back when I was a senior in college, interviewing for what would be my first "real" job after graduation, I interviewed with every major defense contractor and computer company that came on campus. All the recruiters had only the best things to say about the company they were recruiting for. Not a single one of them contacted me for a second interview.

But during that same time, I also interviewed with a guy from the Defense Communications Agency. He told me that he knew I had interviewed with a lot of other companies, and that I could assume all the things those recruiters said were also true of working for the government. He then followed by saying he wanted to focus on the disadvantages of working for the government.

He really impresssed me with his honesty and forthrightness. When the call came for a second (phone) interview, I didn't hesitate. When the tentative job offer came, I didn't hesitate to take it. They took more than a year to complete the initial background investigation, so I also got a chance to squeeze in an internship that summer before starting to work there in August of 1989, while they continued to finish the investigation which would result in my TS/SCI clearance and the rocket-fueled start to my career.

I still remember Mr. Brewer's name, and am grateful to him to this day, for helping me get my start in this business.

</comment></comment></comment></comment><comment><USER12> I made a little checklist for myself here: [https://smalldata.tech/blog/2017/03/27/questions-to-ask- at-t...](https://smalldata.tech/blog/2017/03/27/questions-to-ask-at-the-end- of-a-technical-interview)

Maybe there are a few questions that make sense for your role!

</comment><comment><USER13>
      1. % time spent programming, % time spent not programming?
      2. On a scale of 1 to 10, how much do you love your job?
      3. The biggest thing that would raise answer to last question?
      4. On a scale of 1 to 10, the quality of the business requirements you receive?
      5. The biggest thing that would raise answer to last question?
      6. On a scale of 1 to 10, the quality of the technical specs you receive?
      7. The biggest thing that would raise answer to last question?
      8. On a scale of 1 to 10, the quality of the dev environment?
      9. The biggest thing that would raise answer to last question?
      10. Avg length of time from dev complete to deployed into production?
      11. If you had not picked this, what would you have picked? Why?
      12. Biggest regret from this job?
      13. Biggest success from this job?
      14. How much longer to you see yourself working here?
      15. On a scale of 1 to 10, the quality of the existing code base?
      16. How far to closest Chinese buffet?

<comment><USER14> #16, never asked that one, but absolutely should. Next time.

<comment><USER15> I'd be disappointed getting such a not funny joke question asked.

</comment></comment></comment><comment><USER16> 1\. "What is your biggest gripe with the company?" \-- For me, at my current company, this would be exaggerated over-rigidness and glacially slow moving processes (because of checks and emails and re-checks and approvals and and and) when a fast answer/development is required.

2\. "How many levels are there in the management hierarchy?" (deep vs flat) -- I tend to prefer flatter hierarchies, which plays into 3:

3\. "How much personal freedom do you get?" \-- Having more freedom means being more responsible for your work, but also enables you to produce better, faster, more creative stuff. The flatter the company management structure, the better (usually).

<comment><USER17> A flat hierarchy is not always strongly correlated to personal freedom. I'm 6 or 7 levels below the CEO, but I have a lot of personal freedom because of the management style of my direct manager.

</comment></comment><comment><USER18> I made a video with a list of questions I like to ask (and how to ask them): [https://www.youtube.com/watch?v=s9XPTay-x8g](https://www.youtube.com/watch?v=s9XPTay-x8g)

They've saved me from some bad gigs.

The second half of the video covers questions for your would-be future managers. Some of the commenters have also added excellent questions to ask.

Here are the co-worker questions:

1\. What's the most interesting thing you've gotten to work on (or learn about) here?

2\. What's the balance between firefighting and project work in an average week?

3\. What's the one thing you wish you could improve or change about your everyday work life here?

4\. Every company is carrying some amount of technical debt -- what's the tech debt situation here? -how much they think there is -what they're doing about it

4\. What is the policy/practice as far as WFH or remotely? 5. What does the on-call rotation look like?

</comment><comment><USER19> These types of questions never get good answers because everyone feels like they're an expert and very few people read through the other comments or vote on them. You're better off reaching out to successful people you respect and asking them for advice instead.

</comment><comment><USER20> One general rule: avoid binary/rating questions. So not:

"Do you like working at X?"

This question has a "right answer" (yes), and you'll always get it. Instead:

"What's your least favorite thing about X?"

Phrase all of your questions as free-form responses instead of multiple choice. This is very helpful to get interviewers talking.

For specific questions, there's a lot of good ones on this thread, so the only specific question I'd add is this one, which I found very helpful for startups and fast-growing companies:

"It's 2 years from now, and X has failed. What happened?"

Well-run businesses had a well-understood answer about their biggest risks; poorly-run places had platitudes and "it could never happen."

</comment><comment><USER21> If you have a family, verify if some of team members and manager also...

<comment><USER22> This. To ensure incentives are aligned. To add to this you want to ask what the manager values. At my current job the mgr straight up said he believes you come first, then family, then work. Woohoo!

</comment></comment><comment><USER23> I got some inspiration from these: [https://www.keyvalues.com/culture- queries](https://www.keyvalues.com/culture-queries)

You highlight what you're looking for, and it offers decent ways of asking about them.

I found it here: [https://news.ycombinator.com/item?id=15908812](https://news.ycombinator.com/item?id=15908812)

</comment><comment><USER24> I wrote this specifically for data science jobs but I think it translates reasonably well into any technical role:

[https://towardsdatascience.com/data-science-career-advice- to...](https://towardsdatascience.com/data-science-career-advice-to-my- younger-self-4c37fac65184)

The short answer is that it all depends on what you are looking for in a position.

The longer answer is ask them what they do (as a company, team, etc.), then ask them what infrastructure (technical and organizational) they have in place to do that. Then ask them about non-managerial growth paths (unless you're a manager).

Finally, ask them to give you a question - some business problem they're trying to solve - that they themselves don't know the answer to. Ask to sit in a room with the people who would be involved in planning a solution to that problem, and actually plan out the initial steps of solving it. That will tell you more about the team dynamics and the workplace environment than any explicit questions you might ask.

</comment><comment><USER25> This Julia Evans blog post lists many questions to ask before accepting a new role : [https://jvns.ca/blog/2013/12/30/questions-im-asking-in- inter...](https://jvns.ca/blog/2013/12/30/questions-im-asking-in-interviews/)

</comment><comment><USER26> What have you learnt in the last year and how did that come about? Dig down to see the situation or person or self-motivation that lead to this? Variations can include 'what has the team learnt?'

This is useful at an individual level for your expectations, and it's a company flag if people respond negatively.

</comment><comment><USER27> "How would run the business / team / org differently?"

Should let you know what's wrong without asking directly.

</comment><comment><USER28> "You've been here for a while, what keeps you here?"

</comment><comment><USER29> "How much overtime have you worked in the past year?"

</comment><comment><USER30> "What would you change right now in this team/company if you could?"

</comment><comment><USER31> What's the on-call system/expectations. What's the overtime pay/expectation. What's the career progression system. How many meetings a week do you have. Who controls requirements / work organisation. Remote work possibilities.

</comment><comment><USER32> -what are your typical hours? remote flexibility, etc

-is this a new headcount or am i replacing someone

<comment><USER33> _is this a new headcount or am i replacing someone_

In my experience, you never get an honest answer on this one. If there _is_ a vacancy because someone quit, they're not going to say why they quit. They probably don't know themselves since HR never shares exit interviews with others - if they happen at all.

If it's not an open seat and they're replacing someone, they're not going to say that either to avoid tipping off the current employees that someone is about to be sacked.

I'm always amazed by the % of people that work for large companies and never monitor the open jobs page on the website. They seem shocked when told that there are open reqs in their own group.

</comment></comment><comment><USER34> It's a difficult one to ask (and/or get an honest answer to), but something like "how much do you trust the boss, and the company". If they don't have integrity, other answers might not matter.

<comment><USER35> This is important as the rot almost inevitably starts at the top, but in my experience it is rare for an underling to badmouth their boss to someone who they don't know (I say this as someone who should have, but didn't due to fear of being fired). Instead you have to eek out a general vibe by asking less pointed questions like:

* How often do you interact with the CEO/insert title?

* How comfortable are you with the level of transparency and your understanding of the company's overall health?

* Do you have input into wider strategic decisions or is that handled by a smaller group?

* What does the X year roadmap/vision for the company look like?

* How does senior management interact with the team? Is everyone together during the day so it's a natural flow or is the management team in their office/meetings most of the time?

etc, etc. Ask enough of these types of questions and eventually you'll wear through the polish and get a better feel for how people really think about the boss.

<comment><USER36> They might not bad mouth, but generally a bad leader will get you neutral "fine", "great" opinions.

People under someone they respect and like will tell stories and use superlatives.

</comment></comment></comment><comment><USER37> 1\. Who is the most difficult person here to work with, and why? (Who should I watch out for - do they have a bad temper or goto management every disagreement?)

2\. What's the biggest technical thorn in the company's side? (This is almost always something basic - like convincing management to buy more storage, or getting everyone to migrate to the newest version of something, or an underperforming vendor with a long contract.)

Both of these tell you about the company, and also about the person's perspective from their role and expected duration.

<comment><USER38> I would never honestly answer #1. In my head I know my honest answer today, but out of context I would never attempt to explain the history with a candidate. If the candidate joins the team, then what? Are some offices so impersonal that this doesn't become an issue?

</comment></comment><comment><USER39> I am sure that folks will give their list of gotcha questions for which a negative response would, to them, indicate a red flag. Some folks will give a list of questions that require long, honest, and thoughtful responses to be of any value. There's nothing wrong with asking questions you feel are valuable.

BUT, more important than any of these questions, however, is the one you have to you ask yourself: How will you evaluate these pieces of information?

At the end of the day, it's an intrinsically subjective analysis.

</comment><comment><USER40> The Developer's Guide to Interviewing has some great ideas: [https://medium.freecodecamp.org/how-to-interview-as-a- develo...](https://medium.freecodecamp.org/how-to-interview-as-a-developer- candidate-b666734f12dd)

</comment><comment><USER41> "How would you describe the code quality of the project you work on?"

</comment><comment><USER42> "If you work on multiple projects simultaneously, is it clear who would resolve conflicts between the projects that affect you?"

E.g. if two different project managers are giving you tasks that exceed your capacity

</comment><comment><USER43> Would you recommend <company name> to your friends?

</comment><comment><USER44> Specifically for information security, have the team members had PREVIOUS ROLES IN THE FIELD?

</comment><comment><USER45> "What's the worst part of your job?"

</comment><comment><USER46> "How does the company reward tenure?"

</comment><comment><USER47> Describe how you work as a team.

<comment><USER48> Also, specifically: How are big decisions made? When two individuals disagree about a technical choice, how is the conflict resolved?

</comment></comment><comment><USER49> When I interviewed at FAANG, I would often ask them the same questions they ask me. Very effective.

</comment><comment><USER50> Rate the company out of 10.

</comment><comment><USER51> Check the restrooms. That's where disgruntled employees act on their frustrations and take revenge on the company. Broken and dirty restrooms are a red flag.

Also, try to find out who left the company recently, reach to them on linkedin and try to chat a bit about the reasons to leave. Take it with a grain of salt, thou.

</comment><comment><USER52> What is a team? I know we're on HN but there are many different types of teams.

I work in sort of devops teams and I've helped conduct the technical part of a few interviews so I made some questions for that reason.

1\. Some technical questions but they're not that important.

2\. More important is what they do in their off time. I always try to figure out how nerdy they are.

One person when asked the 2nd type of question brought out their mobile phone and showed us how they could control their entire home with an open source automation system and a homemade app they made themselves.

They were hired and they were very good.

<comment><USER53> Re #2: Ugh. This sort of thing is a selector for plenty that is negative about the tech industry — selects for young single men without a family.

Frankly, I want to go home at night and do anything but code. Music, art, explore the city, have friends. And I want to work with others who value the same.

</comment></comment><comment><USER54> IMO Some of the questions here are opinion based , you may not get right answer and you may set a red flag for yourself. For example if someone asks me what are working hours, do you work on weekends ? I take that as a sign that interviewee may be looking for easy job role and not committed.

I would suggest to ask process related questions i.e what is the build/deployment process? What happens when you take down site in production due to bug? Etc.

<comment><USER55> You _really_ should not be using basic questions concerning things like work life balance as a hiring heuristic for candidates. If nothing else, from a purely pragmatic standpoint you do not receive any new information from a question about work life balance other than, "This candidate has a question about work life balance."

Your _interpretation_ of that question is going to be noisy, subjective, unreliable and intrinsically incomplete. That makes it an exceptionally poor hiring signal. The idea that you can divine interesting insights about a candidate's employability or character based on mundane interview questions is fundamentally flawed.</comment></comment>


Show HN: Desktop Viewer for WebAssembly Modules - <AUTHOR> Hello there,
I'm working on a desktop viewer application for WebAssembly modules for Windows, macOS, and Linux, and I'm looking to have some feedback from real-world use.
The application is fairly small, requires no installation for now, and is limited to the minimum functionality, but I have more features in mind for the future. Testers would get a free license including future releases.
If you're interested, drop me a mail at firstname.lastname@example.com with the platform(s) you could test on. It would be helpful if you could tell me about in what capacity do you work with WebAssembly, so I can have an idea about your use case.
Thanks, wayward <comment><USER2> Why do you say it's a viewer, instead of a runtime (Like wasmer)? Is it because your viwer supports ui?

<comment><AUTHOR> It's a desktop application that can open a WebAssembly module file and display its structure and content.</comment></comment>


New Youtube interface screenshots - <AUTHOR> http://www.newgadgetnews.info/gadget-news/youtube-new-user-interface-roll-out-imminent/?utm_medium=twitter&utm_source=twitterfeed

<comment><USER2> I like the new layout. Looks pretty cool. Although, I could just be admiring the fact that these screen-shots aren't riddled with advertisements. :P</comment>


The Vegas Cosmopolitan's stratospheric high rollers - <AUTHOR> https://www.bloomberg.com/news/features/2018-09-04/secrets-of-las-vegas-s-exclusive-high-roller-cosmopolitan-sweet <comment><USER2> Yeah, their taxes are way too low.</comment>


Ask HN: What tools do you use for HTTP/Rest API documentation? - <AUTHOR>

I have been us Sphinx[1] along with sphinxcontrib-httpdomain[2], and the results seem "ok", but I find the reStructuredText syntax to be awkward and cumbersome. I would vastly prefer something markdown based.
I have considered Groc[3], because I think the Stripe[4] api docs are awesome and it seems like literate style api documentation could be a big win for maintainability as well as readability, but was wondering if there are better known alternatives.
What tools do you use for maintaining api docs?

  [1]: https://stripe.com/docs/api
  [2]: http://pythonhosted.org/sphinxcontrib-httpdomain/
  [3]: https://github.com/nevir/groc
  [4]: https://stripe.com/docs/api
 <comment><USER2> Did you see how Balanced does its HTTP docs?

<https://github.com/balanced/balanced-docs>

<comment><AUTHOR> While interesting, it seems (based on the repo) to be Sphinx with some custom plugins. Output looks nice though.

<comment><USER2> Why don't you write markdown and use pandoc to pump out rst?

I find that markdown has no real standard and lacing it for documentation support is kind of hacked on vs rst which has first class support for directives.

I'd love to discuss how I can simplify balanced-docs, I want to be able to make it a service on its own.

Do you have some time to talk?

</comment></comment></comment><comment><USER3> <https://developers.helloreverb.com/swagger/>

<comment><AUTHOR> I also ran across <http://apiary.io> which looks neat too. Both services seem almost more like ... api discovery tools? Api management services?

I was hoping for something more specifically documentation related, and with the capacity for self hosting. Both may be worth looking into more though. Thanks for the ref.</comment></comment>


Machine learning study–looking for partcipants - <AUTHOR> http://publish.illinois.edu/johnrgallagher/ <comment><AUTHOR> I am contacting this forum because it seems like you all might be interested in a project that I am working on.

This project researches the communication practices of machine learning (ML) scientists and artificial intelligence (AI) researchers. The goal of this research project is to investigate how data scientists, programmers, and researchers write, talk, and communicate about ML and AI. In particular, I am interested in the detailed practices of practitioners rather than popular marketing-friendly depictions of ML and AI. Your motivations, insights, and strategies would be an incredibly valuable addition to this research project.

If you are willing to participate in an initial interview, please reply to my email at the bottom of this message. Interviews tend to last about 30-60 minutes and can be conducted by phone or video chat (e.g., zoom).

I am happy to answer any questions you have. For more information about me, you can click on the link to my webpage at the bottom of this email. Additionally, I am dedicated, as well as required, to uphold the highest levels of privacy for research participants, especially if you choose to remain anonymous. As an academic researcher, I can offer you no monetary incentive for your participation, but I am happy to share the published results of this work with you when it's completed.

The primary form of dissemination of the data in this project will be conference presentations, academic journal articles, academic book chapters, and an academic book-length project. Audio and/or video data will not be disseminated, unless participants explicitly agree. This project is IRB approved (protocol number 21072).

I look forward to hearing from you. If you know anyone who might be willing to participate, would you be willing to pass along my contact information?

Sincerely, John

John Gallagher, PhD Assistant Professor University of Illinois, Urbana- Champaign email@example.com</comment>


Apple unleashes new MacOS10.5.8 Leopard and Mac OS X 10.6 Snow Leopard Server - <AUTHOR> http://crenk.com/apple-unleashes-new-mac-os-x-10-5-8-leopard-and-mac-os-x-10-6-snow-leopard-server/ <comment><USER2> This is a perfect copy of AppleInsider's article:

[http://www.appleinsider.com/articles/09/07/13/apple_unleashe...](http://www.appleinsider.com/articles/09/07/13/apple_unleashes_new_leopard_snow_leopard_betas.html)</comment>


Happy to Launch Paste 2 Beta for Mac - <AUTHOR> http://pasteapp.me/beta <comment><AUTHOR> And here are some codes for a fast sign up: HDZWE4 7N2PGP 7KE44G YQPFMG MSJRYS SAQ47T 4ZAMGW QLT4XE WXTSNP 3YZKX9</comment>


Show HN: The Segment AWS Stack - <AUTHOR> https://segment.com/blog/the-segment-aws-stack/ <comment><USER2> Very nice. I didn't know about terraform, and seems like a very powerful combo... Can anyone comment as to the differences in functionality between ansible AWS playbooks and terraform?

The Segment Stack is a good showcase of best-practices for AWS ... only one thing I didn't understand, why a NAT instance is needed in each subnet? [https://github.com/segmentio/stack/blob/master/vpc/main.tf#L...](https://github.com/segmentio/stack/blob/master/vpc/main.tf#L54) It seems a little wasteful. Couldn't you just allow traffic between the subnets?

<comment><USER3> > why a NAT instance is needed in each subnet?

I don't think it's strictly needed, but it's best practice because instances in each AZ remain independent from failures in other AZs. Were the AZ with the single NAT to go down, then instances in the other AZs wouldn't be able to communicate outside the VPC (ie. to the rest of the internet)

There's also a side benefit of much lower latency using a NAT in the same AZ vs going across AZ (unscientific benchmark is 0.1ms in same AZ vs 0.3ms across AZ)

<comment><USER4> Note that this is only important if your use-case requires your servers to have constant, direct 'phone out' access. If you're using ELBs or similar as your link to the outside world for your use-case, a NAT isn't really necessary for constant access. We use a single micro NAT in each VPC, which is only used for system updates (no, I don't have a package cache yet...) and for when we're manually in the server troubleshooting. If there's an outage, well, there's not much we can do in that case, and the NAT isn't needed for production use. And if we _really_ need that NAT back up, just spin up another one and modify the VPC.

As you say, it's not strictly needed. It really depends on your use case. If your use-case suffers for the NAT being down, then you need HA on it. If it can wait, then no. With the new managed NAT in AWS, you may as well go with that if you need HA - it's cheapest is roughly twice the price of a micro anyway, and it's one less bit of clutter in your instance list.

<comment><USER5> If, for whatever reason, you can't run VPC endpoints then you also want the NAT to be able to reach S3 (and some other service endpoints)

</comment></comment></comment></comment><comment><USER6> This is great!

I've been working on an open source stack that is somewhat similar and serves the same purpose. Allowing startups to bootstrap their stack on AWS.

[http://docs.the-startup-stack.com](http://docs.the-startup-stack.com)

Great work on open sourcing this. I will see what I can do to contribute.

<comment><USER6> Github organization is here: [https://github.com/the-startup- stack](https://github.com/the-startup-stack)

I am developing everything "in the open" so feel free to contribute / ask questions.

I spent the last 3 months collecting usage information from startups using the-startup-stack and about to make another effort to commit all that knowledge back into the project.

</comment></comment><comment><USER7> This is amazing. Kudos to the Segment team for putting in the effort to share and open source this. And also kudos for leveraging Terraform rather than CloudFormation. I may fork this to get it running with kubernetes on GCP

</comment><comment><USER8> One thing that I would have loved some more detail on is how are secrets and credentials being handled?

<comment><USER9> Getting secrets and credentials correct seem to be the crux of most architectures. I'd also love to hear more from the Segment team on their approach with this setup!

</comment></comment><comment><USER10> This is so timely for me! I was struggling to build a repeatable stack with CloudFormation, started down the road of Terraform just last night. This will help me skip a lot of learning curve. Thank you!

</comment><comment><USER11> Thank you for sharing, simple and detailed. However I'd like to comment that AWS is not cheap.

<comment><USER12> What would you consider to be cheaper than AWS?

<comment><USER10> If all you want is stuff running on the equivalent of EC2 instances, you can use DigitalOcean or some other competitor. However, AWS offers a degree of depth and sophistication that just isn't available from the competition. Trying to do something that is as security-clean as this VPC using DO or Linode or something, from scratch, sounds like weeks of hell to me.

"Not Invented Here" is a big problem in this industry in general. We tend to be too comfortable cobbling a solution together from stone knives and bearskins, rather than using someone else's solution (and paying for it). If you are running a business, though, you shouldn't be building things that aren't what you sell, unless you really cannot otherwise buy them.

<comment><USER13> _> If you are running a business, though, you shouldn't be building things that aren't what you sell _[or that you can't build more efficiently] _, unless you really cannot otherwise buy them._

I'd add the above. Otherwise AWS would have never been built.

<comment><USER10> I'd add, though, that "efficiently" isn't just whether you can build cheaper than buying. It's if the cost of building the functionality is cheaper than the profit/growth you can generate with a _sellable product_ built using the same amount of developer effort. That's a very, very different (and probably more expensive) proposition. That's why executives should make the decisions, not engineers!

Back in the dot-com days, I worked on a project to build some functionality in-house that we could easily have bought off the shelf. The engineers argued that we'd save the company a million dollars. But frankly, we just wanted to do it because it was _badass_. And it turned out our solution would actually have cost us more per-system than the commercial solution we sneered at (hardware costs, not just development cost). Six man-months of engineering when everyone knew we were racing the clock before the money ran out? Absolute stupidity.

If I were CEO/CTO and caught wind of such a project, I'd tell people that if they lifted a finger on it, they'd be fired. But that's a very different perspective than I had back then. Risking the very existence of what could have been a very big company in order to someday save a million dollars? Feh. (Of course, no one stopped us, because the CTO was just head nerd, and the money execs were busy fundraising rather than supervising)

<comment><USER13> _> That's why executives should make the decisions, not engineers!_

I understand your point and it's valid, but opportunities like this are juicy steaks for Oracle and IBM sales guys. I think the best possible outcome is to involve engineers, solicit a reasonable internal cost bid, then invite external contracts, then pick what makes sense.

"We can just buy it" is what funneled money that could better be spent elsewhere into the coffers of legacy infrastructure companies for decades.

<comment><USER10> As a for-example, we were implementing this stuff in the days before MySQL had ACID transactions (back when they bragged about how much faster they were than other databases, handwaving over the cost others had for implementing transaction logs and rollback). The DBA and I tried to get Sybase in, but the Sybase sales rep, unused to startups, quickly offended the CTO with vague pricing. He was an open source purist and wanted MySQL.

I cannot begin to explain how much extra code we had to write to deal with the lack of transactions in MySQL! Sybase would have saved us a ton of time and risk.

</comment></comment></comment></comment></comment></comment></comment><comment><USER14> If you were to set this up and leave it running (say for a dev environment), what would your monthly bill look like?

</comment><comment><USER15> So, my co-founder and I have basically been independently building a commercially supported alternative to this excellent open source package. But there are a few differences that make sense when offering this as a paid service:

\- We wrote our own terraform testing framework to validate that every change to our modules doesn't break functionality \- We actively update our modules based on feedback from new client engagements \- We provide commercial support for each module \- We combine our modules with consulting and training as needed

And of course, there are many similarities \- We give 100% of the source code to our clients \- Everything runs in the client's AWS account \- Everything is self-documented, modularized, and can be combined/composed as the needs of different teams require

I didn't mean for this to be a shameless plug; more just that I found it interesting to compare the open source vs. commercial approach to solving this same problem. Props to the Segment team for sharing this.

<comment><USER10> There's a lot of potential for such a service as a consultancy - advice and in-house customization included along with the software. As cool as the Segment stack is, it doesn't let people off the hook for designing effectively in the first place, or for taking a poor design and re-engineering it.

<comment><USER6> My initial approach with the-startup-stack[1] was exactly that.

Building an open source solution with a "pro" level all setup included in it. I had a very hard time quantifying how much companies will pay for this and whether they even will.

How I see it, you are either on Heroku (or other similar) and you don't care about anything except `git push` or you have a full blown stack.

I know the middle ground between the two is where the stack is but I just couldn't figure out how many companies are actually experiencing those difficulties and how much are they willing to pay for the help.

Since it's not a startup for me, it's just an open source project I decided not to worry about it, but would still be nice to get some input.

[1] [http://the-startup-stack.com](http://the-startup-stack.com)

<comment><USER9> Based on personal experience, I strongly suspect there is a market for that type of middle ground. Also, the author of the top level comment in this subthread said they are doing commercial consulting work, so that shows there is some market for it. Given, he/she did not say how good business was, where/how/if they find customers, if they are profitable, etc.

</comment></comment></comment></comment><comment><USER16> What tool did you use to make the flow chart, or is it custom?

[0] [https://segment.com/blog/the-segment-aws- stack/images/main.p...](https://segment.com/blog/the-segment-aws- stack/images/main.png)

<comment><USER17> Thats the `terraform graph` command.

[0] [https://www.terraform.io/docs/commands/graph.html](https://www.terraform.io/docs/commands/graph.html)

<comment><USER6> `terraform graph` _was_ used in the post but it's not the one he linked to.

This seems custom to me, maybe Sketch or something.

<comment><USER18> Looks like [http://www.graphviz.org/](http://www.graphviz.org/)

</comment></comment></comment></comment><comment><USER19> I so much wish segment would offer their services on the Azure stack.</comment>


Wangle – an asynchronous C++ networking and RPC library - <AUTHOR> https://code.facebook.com/posts/215466732167400/wangle-an-asynchronous-c-networking-and-rpc-library/ <comment><USER3> I have used this library pretty heavily in some of my recent work and I love how easy it makes building performant async network servers in C++. Minor nitpick: It would be nice though, if they built shared libraries by default though, last release I took I had to tell cmake to make a shared library. Since this is used by fbthrift as a dependency, I think it really makes sense to build it that way by default. I also use fblualib and it builds with a very old version of some of these libraries probably because the FAIR team didn't want to mess with tweaking the builds so they can work with standalone wangle (parts of the library used to be part of folly).

</comment><comment><USER4> After most compilers started properly supporting the newer C++ standards, it seems there has been an increase in the amount of love that C++ libraries are getting. A lot of people like the to say that [x] is superior to C or C++ - often ignoring that their favorite language's libraries/runtime/compilers/vm is most likely implemented in the very same languages they are putting down.

<comment><USER5> > After most compilers started properly supporting the newer C++ standards, it > seems there has been an increase in the amount of love that C++ libraries > are getting. Sadly there are many more compilers out there than just gcc, > clang, icc and msvc++.

Many of those aren't still C++11 compliant, specially in mainframes, classical commercial UNIXes, embedded real time OS and certified compilers.

But it is true, thanks to the productivity of latest standards, there has been an increase in C++ visibility, specially thanks to Microsoft.

People like to bash their C++'s compliance, but they are the commercial vendor with the more up to date support, even than icc last time I checked.

Also they were the main sponsors for Back to native conferences and eventually making it together with CppCon.

[https://blogs.msdn.microsoft.com/vcblog/2014/04/03/cppcon- th...](https://blogs.msdn.microsoft.com/vcblog/2014/04/03/cppcon-the-c- conference/)

Also Windows Phone is the only mobile OS where C++ is a first class language.

>. A lot of people like the to say that [x] is superior to C or C++ - <USER2> ignoring that their favorite language's libraries/runtime/compilers/vm is most likely implemented in the very same languages they are putting down.

A lot of people like to point out that fact, ignoring that many compiler writers tend to use C or C++ out of convenience for existing tools instead of bootraping the full eco-system around a new programming language.

Many use the same route as Go, using one of those languages and when the toolchain gets mature, those parts get re-writen.

All in all, I do like the language, now if we could get rid of those C underpinnings...

<comment><USER6> Intel's C++11 support continues to be quite buggy. I'm still running into with issues with Intel's support for auto type deduction and for uniform initialization in non-obscure use scenarios.

<comment><USER5> Sorry I was updating the comment as you replied.

I never used it, but last time this discussion came up and I searched for their support page many C++11 features were either TBD or GNU/Linux only.

Thanks for the feeback.

</comment></comment></comment></comment><comment><USER7> I just tried to compile folly in OSX and it fails to compile with homebrew. [https://github.com/facebook/folly/issues/400](https://github.com/facebook/folly/issues/400)

Also, Once I manage to compile folly and then wangle, what kind of database drivers can I use in conjunction with this? Would I shoot myself in the foot if I use this with libpq under CPUThreadPoolExecutor?

Same with Rust and dlang, I'm not sure how to apply the freedom to have pluggable executor into something useful in real life, I think this is the main reason Golang is killing it and it keeps getting better.

For now I have my money on Go but can't wait for [http://www.ponylang.org/](http://www.ponylang.org/) to become stable.

Edit: Issue reported has been closed, I can now proceed to install wangle [https://github.com/facebook/folly/issues/400](https://github.com/facebook/folly/issues/400)

Edit 2: Found another issue, this time installing wangle [https://github.com/facebook/wangle/issues/37](https://github.com/facebook/wangle/issues/37)

<comment><USER8> > what kind of database drivers can I use in conjunction with this?

Usually synchronous database drivers have to be reimplemented in an asynchronous fashion to work with event loops. It's not very hard though, could be as simple as adding jump tables and context structures into synchronous functions.

Emulating asynchronous execution with a thread is ok too. You do that to access filesystem anyway.

But if your first thought is about accessing a database server - you probably don't need to go asynchronous at all.

<comment><USER9> MariaDB has an asynchronous C API.

<comment><USER10> libpq (Postgres's client library) has an asynchronous interface as well.

</comment></comment></comment></comment><comment><USER11> The first thing that comes to mind after reading this is GRPC ([https://github.com/grpc/grpc](https://github.com/grpc/grpc)). That library has the advantage of supporting just about every language, not just C++.

</comment><comment><USER12> Good to see C++ is gaining more visibilities these days, considering the Oracle/Java combination I hope C++ can take away some JAVA dominance, at least nobody is going to sue you over C++ APIs.

Failed to compile with CMake 2.8

        CMake Error at /usr/share/cmake-2.8/Modules FindPackageHandleStandardArgs.cmake:91 (MESSAGE):
        REQUIRED_ARGS (missing: FOLLY_INCLUDE_DIR  OLLY_LIBRARIES)
        Call Stack (most recent call first):
       /usr/share/cmake-2.8/Module/FindPackageHandleStandardArgs.cmake:252(_FPHSA_FAILURE_MESSAGE)
       cmake/FindFolly.cmake:23 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
       CMakeLists.txt:17 (find_package)

</comment><comment><USER13> Had to look up the meaning of wangle. "obtain (something that is desired) by persuading others to comply or by manipulating events."

Does anyone know where facebook is coming up with all these words - folly/wangle?

<comment><USER14> "Folly" is a relatively common English word. "Wangle" is less common but I still see it from time to time.

What I find more interesting than the naming is FB's willingness to remove features from Folly as they are made redundant by Boost or std. I'm unaccustomed to such a lack of arrogance from a major player.

<comment><USER13> Doesn't removing features break backward compatibility?

My favorite C++ library is Qt; they never remove public API for that reason. In Qt world, we update regularly to get the bug fixes and other features. Last thing I want to do is port my code to some other new API to update the library.

<comment><USER15> If it's a feature that has made it into the std/Boost libraries, we'll be talking atomic utility functions which are being removed, in favour of calling the std/Boost ones. Not actual API-level features.

</comment></comment></comment></comment><comment><USER16> So Wangle is (mostly) a protocol agnostic platform for building asynchronous network clients and services in C++.

What transport layers are supported and can it be extended?

What I can gather, it only supports IPv4/IPv6 TCP or UDP transports. TLS is also supported.

Notably, local pipes seem to be unsupported. Those can be sometimes useful for performance and security/isolation reasons.

</comment><comment><USER17> Also, check out crossbar.io and the WAMP protocol, offering transparent, clean and yet simple PUB/SUB & RPC accross languages, including C++, Python, PHP and JS (node and yes, browsers).

<comment><USER18> WAMP is a protocol, Wangle is a framework that you can use to implement protocols (like WAMP), crossbar is a broker (an application that implements the protocol using a [python] framework. So it's not a direct comparison.

</comment></comment><comment><USER19> does anybody know why this library is not based on (boost::)asio ?

<comment><USER20> I'll take a shot in the dark and say they probably value their compile times. Every boost library I've ever used has the tendency to pull in the world from a single header and take forever to compile.

<comment><USER21> ASIO can be used standalone with any C++11 compiler and the compile times are quite good.

If I should make a guess then I'd say that the original author of that part of the library either started before ASIO was standalone and/or simply has a hatred for boost (which would be unwarranted), or he/she was simply more experienced with libevent...

IMHO it's quite sad that they didn't use ASIO though as it's far more extensive.

<comment><USER22> And interestingly, Chris Kohlhoff (asio author) is currently working on an executors library / c++ standard proposal.

Other question: how would wangle compare to Cap'n Proto (as the post mentions that wangle is an RPC framework, and is zero-copy)

<comment><USER23> Zero-copy in capnproto docs and in this blog post actually mean different things (the first means that serialized and in-memory representations of capnproto messages are the same and the second means the absence of copying between user space and kernel space when sending a file over the network).

</comment></comment></comment></comment></comment><comment><USER24> _" Wangle is heavily influenced by the JVM-based libraries Netty,"_

Stopped reading there. Have experience with using Netty in a java server application and engineers dread being assigned a bug or enhancement in that codebase. There's a tendency throw around the word "over-engineered" lightly but netty is a real, live and inexplicably popular example of exactly what that word means.

</comment><comment><USER25> I like that they explained the reasons behind the design decisions of the library. Looking forward to the post about the RPC part!

</comment><comment><USER26> I'm wondering, how does C++ fare against Nodejs now, if this library is implemented for creating servers?

<comment><USER27> Node JS unfortunately doesn't have the notion of separate IO and CPU threads.

</comment></comment><comment><USER28> would this be useful for game development?

<comment><USER11> I can't speak for Wangle, but I've used Google's version (GRPC) to implement the networking transport for an N64 netplay hack[1] I wrote, and it was awesome.

[1]: [https://github.com/water-works](https://github.com/water-works)

</comment></comment><comment><USER29> Good that they mentioned Netty as inspiration

</comment><comment><USER30> In 2016 I would write networking and RPC in go.

<comment><USER31> Because you want to spend 10x as many CPUs?

<comment><USER30> Mostly because it's easier, performant, and because of the nature of the language it's less likely I would make a mistake doing anything in the language compared to C++ or C.</comment></comment></comment>


How Threadless Built Its Online Business - <AUTHOR> http://mixergy.com/threadless-million-tshirts-jeffrey-kalmikoff/ <comment><USER2> I think he is like the only person I've read about, who thinks facebook advertising is great

<comment><USER3> When he was on Mixergy, Shoemoney told me how he uses Facebook ads effectively too. But Threadless uses them differently.

\- They only advertise to their fans' friends.

\- They do NOT expect to make sales directly from the ads.

\- They use the ads to get more fans on their Facebook page.

Their business model is based on growing their community, so this approach works well for them.</comment></comment>