Ask PG: Can we limit reply count/depth? - <AUTHOR> The popularity of HN is only growing. This is not a bad thing, but it does mean that every discussion can and will take more turns, more different directions. I've watched as so many different online forums for conversation have broken down under the strain of a growing user base. You either end up with uber-deep threads that only the participants, if anyone, can follow any longer, or you get a dog-pile of nearly-identical responses to popular posts.
I understand that HN has always been an experiment, so why not experiment with a different way to manage the conversation? Writing a top-level post is more challenging than a follow-on reply. I suspect you'd find that top-level posts generally display more novel thought than the majority of reply posts (not all -- there are some very high quality replies -- but most).
Similarly, when a reply thread gets very deep there is a good chance that the conversation has strayed from what is interesting to the general population. At this point, it would probably be better to continue the discussion in email or some other communication medium.
I still come to HN primarily for the comments, but I find myself increasingly opening a comment link only to find a first comment followed by a page of replies to replies to replies; almost a straight line across and down my browser window. Sometimes I will scroll to see if maybe the second top-level post has a different take or covers a different question, but more often I close the page and move on...
...obviously this is just a thought. I wonder if there other things HN might try to maintain the level of discourse with its ever growing audience? <comment><USER2> If you use Chrome, install Hacked Hacker News to highlight unread comments and Hacker News Collapse to make the threads collapsible.

[https://chrome.google.com/webstore/detail/hacked-hacker- news...](https://chrome.google.com/webstore/detail/hacked-hacker- news/hlddllcemddpbekleofllndfidcgbgdp)

[https://chrome.google.com/webstore/detail/hacker-news- collap...](https://chrome.google.com/webstore/detail/hacker-news- collapse/bbkfcamiocfccgmcjngdljolljhifdph)

<comment><USER3> Or the Hacker News Enhancement Suite which does both!

[https://chrome.google.com/webstore/detail/hacker-news- enhanc...](https://chrome.google.com/webstore/detail/hacker-news- enhancement-s/bappiabcodbpphnojdiaddhnilfnjmpm)

</comment></comment><comment><USER4> The "reply" button is not available just after a deep post is submitted. The length of time it's gone increases with depth. This is to prevent flamewars. I think it's a good comprimise, since after a while people have "cooled down" from a flamewar but might still have something interesting they want to say.

</comment><comment><USER5> Most annoying is finding a huge, interesting comment page (200 comments), reading half of it, then coming back later to see 400 comments. No visual diff = scanning and scrolling. Searching the page for "minutes ago" shows me in- the-last-hour posts, which is a happy medium.

Hierarchical comments lead to problems like you describe: 1 8-deep thread can come up from the bottom and dominate the comments page. Sense of time is destroyed as who has time to scan the leaves of a vertically-serialized tree? The same discussion will happen in 3 or 4 branches, confusion builds, and sometimes "see my other post below" comes out. What a mess! Maybe that's just the natural, irreducible 'mess' that comes with human conversation, but I've got a hunch it's not.

<comment><USER6> For usenet and mailing lists, this is handled on the client side by read/unread tags on messages. Web forums haven't yet found a way to do as good a job imo, leading to a lot more reload-and-scan type activity that feels even more twitchy than the old kind of check-for-new-messages twitchiness.

Reddit does notify you when there's an unread direct reply to one of your comments, which is a replication of one part of that functionality.

</comment></comment><comment><USER7> Rather than limit the reply count, I'd much rather see a collapsable comment system. Can't imagine it's top of PG's priority list though.

<comment><AUTHOR> I thought about this too, but it seems to me more like sweeping the problem under the rug than addressing it directly. Personally, if this encouraged even two or three people engaged in an interesting conversation to contact each other directly, instead of continuing to engage semi-anonymously on the internet, I think it would be worth it.</comment></comment>


What I learned at LISA '16 - <AUTHOR> http://everythingsysadmin.com/2016/12/lisa16-success.html <comment><USER2> > I learned that the coming generation of servers from Dell/HP/etc. will have > terabytes of persistent RAM (RAM that retains info between reboots).

WTF? That's some serious security shit right there. Will there be extensions to OS boot sequences to reset the RAM for security purposes?</comment>


Why Linux Sucks | LFNW 2012  - <AUTHOR> http://youtu.be/Sh-cnaJoGCw

<comment><USER2> Why Linux Does Not Suck: [http://www.youtube.com/watch?v=BfLqLK7VdQY&feature=relmf...](http://www.youtube.com/watch?v=BfLqLK7VdQY&feature=relmfu)</comment>


The Lazy Developer's Guide to Command Line Building with C# - <AUTHOR> https://mianlabs.com/2017/01/02/the-lazy-developers-guide-to-command-line-building-with-c/ <comment><USER2> I use LinqPad[1] as my C#/F# scratchpad. Works wonderfully well and I can't imagine living without the magic ".Dump()" feature.

[1] - [http://www.linqpad.net](http://www.linqpad.net)

<comment><USER3> Is there an FOSS alternative to LinqPad with any of the same features? I'd prefer to support open source but if non-free software's much better I'll probably just go with that.

<comment><USER4> Well, scriptcs sounds somewhat analogous. Similar REPL for C#, allows for packaged scripts, plays nicer with the filesystem than an IDE (which you'd expect for command-line apps). [http://scriptcs.net/](http://scriptcs.net/)

Note: I've tried to use scriptcs, but the extent of my C# knowledge consists of pretending it's Java. But people do seem to compare it to LINQPad, so maybe it fits.

<comment><USER5> Linqpad's amazing "dump" isn't to be found in scriptcs or anywhere else, so far as I'm aware, however. Which really does make working with a C# REPL a million times nicer.

</comment></comment></comment></comment><comment><USER6> "dotnet new -t web" is my favorite lazy command I didn't see mentioned in the article (I think you need to install the cli .net core thing).

</comment><comment><USER7> I find it really strange that there is no longer a stand alone compiler with dotnetcore. There is also an alarmingly low number of .net devs that even know that csc exists, which is a shame because it gives you a lot more flexibility when building your projects and is a lot faster than msbuild.

<comment><USER8> A while ago I wrote a batch script that assembled a project with csc instead of using Visual Studio. This was so easy and refreshing to work with. Source control worked, build times were incredibly fast and the result was independent of Visual Studio settings.

I really want my good old makefiles back for C#. For build management Visual Studio adds a lot of complexity and weird behaviors.

<comment><USER9> Those are msbuild settings, not visual studio settings.

<comment><USER8> My point was that, in a team, the output of the build depends on Visual Studio settings of each developer.

</comment></comment></comment></comment><comment><USER10> Uhhhh I don't use _any_ of those commands.

        ### Build this project
        msbuild ./path/to/some/Solution.sln

        ### Build this project for release
        msbuild ./path/to/some/Solution.sln /p:Configuration=Release

<comment><USER3> This article seems to be assuming no use of Visual Studio. Are there useful command line utilities for _editing_ solution files?

<comment><USER11> Text editors?

<comment><USER5>
         Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Project1",
        "Project1.vbproj", "{8CDD8387-B905-44A8-B5D5-07BB50E05BEA}"
        EndProject

Just a small part of a solution file, and not exactly the easiest thing to write by hand. Where do the hashes come from, what do they represent, and what kind are they?

Take a look at the example file here: [0], almost half of it _is_ hashes... But are they necessary? Or automatable easily? Is it well documented? Does it break between VS versions? I know VS has "updated" my solution file between versions, and isn't always backwards compatible. That story might have changed.

But... Solution files seem to be machine readable, not human.

It just seems like a bad idea to do it yourself.

[0] [https://msdn.microsoft.com/en- us/library/bb165951.aspx](https://msdn.microsoft.com/en- us/library/bb165951.aspx)

<comment><USER11> Whoa, the GP asked what to use to _edit_ the files, not what to use to write them from scratch :p

Yeah, they're plain text, but they're pretty nasty, for sure.

I'm not a Windows developer anymore (haven't been for over a decade now), but my understanding is that if you're going to be doing a whole project from the command line, you're going to want to use MSBuild[1], FAKE[2], or perhaps nmake[3] (which is old-skool and not particularly compatible with the usual %nix makes, but will at least be familiar for many developers coming from %nix).

Of course, there's no (technical) reason you couldn't use some other generic build tool with the Visual Studio command line tools, but other Windows developers will likely not be prepared to deal with them.

[1]: [https://msdn.microsoft.com/en- us/library/0k6kkbsd.aspx](https://msdn.microsoft.com/en- us/library/0k6kkbsd.aspx)

[2]: [http://fsharp.github.io/FAKE/](http://fsharp.github.io/FAKE/)

[3]: [https://msdn.microsoft.com/en- us/library/dd9y37ha.aspx](https://msdn.microsoft.com/en- us/library/dd9y37ha.aspx)

P.S., I don't think those are hashes—just UUIDs. I've edited the solution files by hand before without touching the UUIDs and they continued to work fine. IIRC, the various %.%proj files are also plain text (XML, I think, but I could very well be wrong). Unfortunately, I don't know how to answer your other questions, other than that I _think_ you can usually open solution files for older versions in newer versions, but not vice versa.

EDIT:

P.P.S. Pretend the various '%' characters are asterisks. Couldn't get them to stop italicizing everything...

<comment><USER5> Sorry to hit you with that one.

More a comment on you basically have to deal with Visual Studio if you want a solution file.

There have been others in this thread, and on major projects, you work with C# without either. csc, etc. (Which you of course, pointed out).

Working with solution files is painful without the IDE they're made by, and fairly undocumented in places where it matters. It worked for editing by hand, this time, but you don't have guarantees for the future. The solution file docs I linked to sort of assume that Visual Studio is the author of the file, to populate it correctly.

Just wanted to say that working with Solution files outside of Visual Studio is somewhat unsupported, and could be more difficult than expected.

(And you are indeed right that %proj files are indeed XML [0], and incredibly verbose, even for XML.)

[0] [https://msdn.microsoft.com/en- us/library/5dy88c2e.aspx](https://msdn.microsoft.com/en- us/library/5dy88c2e.aspx)

<comment><USER11> > _Sorry to hit you with that one._

Don't worry about it. I had it coming ;) Sometimes when I don't have a lot of time to comment, I'll make a shitty (snarky, snide, abrupt, or cetera...) comment, then come back later when I have the time and provide a more detailed comment. It might not be the best thing to do, but anecdotally I get more engagement from others if I do it that way than just waiting to write the longer comment in the first place. I don't expect anybody to know that, though, so I know that I run the risk of coming off as abrasive and I don't expect people to necessarily be super nice about that...

> _More a comment on you basically have to deal with Visual Studio if you want > a solution file. ... Working with solution files is painful without the IDE > they 're made by, and fairly undocumented in places where it matters. ... > Just wanted to say that working with Solution files outside of Visual Studio > is somewhat unsupported, and could be more difficult than expected._

Agreed on all counts. These things can be pretty frustrating. The saving grace is that the information you'd need to build the project can be identified in the file and extracted for use in some other format. Far from ideal, to be sure, but it means you're not completely out of luck if all you have with the source files is the solution file. The situation could be much better, though.

> _(And you are indeed right that %proj files are indeed XML [0], and > incredibly verbose, even for XML.)_

I thought so, but it's been a while since I've had to deal with a VS project. And, yeah, Microsoft's record with XML in general has always seemed to be pretty damn verbose to me.

</comment></comment></comment></comment></comment></comment></comment><comment><USER9> Or use LinqPad. I am confused. I'd never recommend use another tool.</comment>


A Startlingly Good Leukemia Trial - <AUTHOR> http://pipeline.corante.com/archives/2011/08/12/a_startlingly_good_leukemia_trial.php

<comment><AUTHOR> Since there was so much interest about this yesterday, I thought this analysis might be a better insight than all the press release style stuff floating around. I missed this during my skimming of the article:

"The patient's kidneys were, in fact, having a hard time keeping up with the amount of cellular debris that they were being asked to sweep out of the blood stream; he lost over a kilo of cancerous cells."</comment>


China passenger train hits 300 mph, breaks record - <AUTHOR> http://www.thehindu.com/news/international/article929388.ece

<comment><USER2> "The line is due to open in 2012 and will halve the current travel time between the capital Beijing and Shanghai to five hours."

In the meantime, CA is spending billions to build a 54-mile high speed rail segment from Madera to Corcoran - aka the "train to nowhere".

<comment><USER3> There is too much friction to build high speed rail in the US due to the democratic process. You have to get everybody along the way to agree which is pretty much impossible as you get to populated areas. In a place with a centralized government system like China, the nice thing is that things get built very quickly, but it sucks for the people who are affected negatively along the way.

<comment><USER4> Eminent Domain displaces people in the US all the time. When a developer wants a pretty lake by the highway to build a condo complex, guess where the trailer park that was next to the lake goes?

Kelo v. City of New London for just one example.

<comment><USER5> Kelo-style eminent domain is uncommon. The idea is that the land is taken for the benefit of the public, and usually that benefit is direct, like a new highway. In Kelo, the public benefit was the jobs and tax revenue from new private development, which is why it went to the Supreme Court.

<comment><USER6> How do you define uncommon? Here are just a few cases of Kelo-style eminent domain:

[http://blogs.cuit.columbia.edu/current/2010/04/11/from- the-e...](http://blogs.cuit.columbia.edu/current/2010/04/11/from-the-editors- lost-in-manhattanville/)

[http://reason.com/archives/2009/10/13/private-developers- hav...](http://reason.com/archives/2009/10/13/private-developers-have-no-rig)

<http://boortz.com/nuze/alabaster.html>

[http://www.castlecoalition.org/index.php?option=com_content&...](http://www.castlecoalition.org/index.php?option=com_content&task=view&id=261)

[http://www.ij.org/index.php?option=com_content&task=view...](http://www.ij.org/index.php?option=com_content&task=view&id=961&Itemid=165)

[http://reason.com/archives/2003/02/01/wrecking-property- righ...](http://reason.com/archives/2003/02/01/wrecking-property-rights)

</comment></comment></comment></comment></comment><comment><USER3> This reminds me that California has approved construction of a section of high speed rail too.

[http://www.latimes.com/news/local/la-me-high-speed- route-201...](http://www.latimes.com/news/local/la-me-high-speed- route-20101203,0,2569735.story?page=1)

Hard to evaluate the cost/benefit of high speed rail since the costs are obvious while the benefits are delayed and not as obvious. It would be really cool to get from SF to LA in 2-3 hours though.

<comment><USER7> SFO -> QLA takes 2 Hours, curb to curb, and costs $50 with pretty much every airline that flies the route. It costs me more for the taxi to get from Redwood City to SFO, than it does for the flight to Los Angeles.

It is neither the cost, nor the time that attracts me (neither of which are likely to be that much better on a train), but the possibility of using that 4-5 hours a day productively on a reasonably civilized train ride instead of the horrible experience one gets in the Cattle-Like experience every morning in the airport.

<comment><USER8> I would value not having to fly very highly. At least until some idiot decides we need a security theater for trains as well.

</comment></comment></comment><comment><USER9> Same story from Yahoo:

<http://news.ycombinator.com/item?id=1968712>

No comments or upvotes on that item, but it is a different source.

</comment><comment><USER10> "Chinese passenger train" or "Passenger train in China". _China passenger train_ sounds wrong although I cannot explain why.

</comment><comment><USER11> Grand infrastructure projects like this often signal the height of a construction bubble that will pop sooner or later.</comment>


Mythical Creatures of the Startup World - <AUTHOR> http://medium.com/@rcastelo/mythical-creatures-of-the-startup-world-565ec98a80c1 <comment><AUTHOR> I would like to write a follow up to this one and was wondering if any of you can give me ideas about more creatures?</comment>


Sattern - <AUTHOR> https://sattern.dev/ <comment><AUTHOR> Sattern is a JavaScript instrument for creating musical patterns.

It can generate sequences and trigger various targets inside an audio graph.

A graph is a collection of targets or "audio units" and these can be MIDI ports, OSC ports, or internal Samplers and or SOUL patches.

It can also be used in passthrough mode to receive messages from MIDI and or OSC ports and trigger various targets that way.

Sattern can run as standalone or as an AudioUnit (AU) plugin.

<comment><AUTHOR> This one has been in the oven for some time now and I've finally got around to releasing it!

Inspired by the Roland MC-4 Microcomposer and various Eurorack sequencers, I decided to create an JavaScript environment/IDE to do read–eval–print loop (REPL) style musical pattern and composition system that can be used as a standalone or as an Audio Unit (AU) plugin inside your DAW.</comment></comment>


Show HN: JSRobot – A platform game you play by coding in JavaScript - <AUTHOR> https://github.com/reaalkhalil/JSRobot <comment><USER2> Interesting, you might want to look at the suggested code though, maybe play through with some beginners?

        function init(robot){
            robot.number = 0;
        }

        function loop(robot){
            robot.jump();
            if(robot.number++ % 2 == 0){
                robot.move(2);
            }
        }

This is in the second level.

Incrementing inside a check is awkward, as is just calling the variable 'number'. Perhaps something like

        function init(robot){
            robot.jump_next = true;
        }

        function loop(robot){
            if (robot.jump_next) {
                robot.jump()
                robot.jump_next = false;
            } else {
                robot.move(2);
                robot.jump_next = true;
            }
        }

<comment><USER3> The first snippet calls robot.jump() every loop. The second doesn't not.

<comment><USER2> True, although as someone else points out (contrary to what I thought) only the last runnable action is done.

If that wasn't the case, then swapping things around to be something more like "move_next_turn" would be clearer I think.

</comment></comment></comment><comment><USER4> If I remember correctly, Google's Blockly Games used to allow JavaScript on more than just the last "level". It definitely starts at a much earlier point in the learning process.

The best part of the previous discussions is links to similar technologies; I look forward to seeing what else is mentioned today.

Blockly is a library for building visual programming editors | [https://news.ycombinator.com/item?id=10763057](https://news.ycombinator.com/item?id=10763057) (Dec 2015, 40 comments)

Google's Blockly Games | [https://news.ycombinator.com/item?id=8211031](https://news.ycombinator.com/item?id=8211031) (Aug 2014, 18 comments)

Google Blockly - a visual programming language | [https://news.ycombinator.com/item?id=4050426](https://news.ycombinator.com/item?id=4050426) (Jun 2012, 123 comments)

\--

[http://learn.code.org/hoc/1](http://learn.code.org/hoc/1) \- highly polished Hour of Code

[https://tickleapp.com/](https://tickleapp.com/) \- Blockly <-> Swift controlling physical hardware

</comment><comment><USER5> A neat concept but frustrating when restarting the page loses any code in the script window.

<comment><AUTHOR> Sorry! That's next up on the todo list

</comment></comment><comment><USER6> It's an interesting game, but I was immediately put off by level two, which sinks you into the limitations of the robot API by making you introduce a counter that needs checking. That would be totally counter-intuitive for beginners.

<comment><USER7> > ...introduce a counter that needs checking. That would be totally counter- > intuitive...

Was the pun intentional here?

<comment><USER6> No. In fact, initially I put "unintuitive" there, but the spelling-checker marked it as an unknown word while it is perfectly valid English.

</comment></comment></comment><comment><USER8> Stops working for me after level 1. Repro: 1\. [https://lab.reaal.me/jsrobot](https://lab.reaal.me/jsrobot) and click "start" 2\. Complete the level and click "next level" 3\. This takes me to [https://lab.reaal.me/jsrobot/#level=2](https://lab.reaal.me/jsrobot/#level=2) but the screen is blank 4\. Dev tools shows this: "ReferenceError: URLcode is not defined[Learn More] ui.js:32:5"

Using Firefox 56.

<comment><USER9> I'm get the same error in Chrome 61.

<comment><AUTHOR> Sorry about that, fixed

</comment></comment></comment><comment><USER10> I contributed to a similar project[0] for the 2016 7DRL[1].

It was a lot of fun to build but ultimately I just wanted to play the game manually. Someone who tried it back when we released actually wrote a script to control the game turn-by-turn via alert boxes, hah.

[0] [https://github.com/bovard/raid](https://github.com/bovard/raid)

[1] [http://7drl.org/](http://7drl.org/)

</comment><comment><USER11> Reminds me of a course I had to take freshman year in college called Karel the Robot[1]. It had a Basic like programming language. It mostly existed to try to quickly bring up to speed the students that has no experience coding prior to college. This is interesting because Javascript is a much more complete language and probably also a it harder to learn if you are just getting started.

Overall, great work though.

[1] [https://en.wikipedia.org/wiki/Karel_(programming_language)](https://en.wikipedia.org/wiki/Karel_\(programming_language\))

</comment><comment><USER12> :/ Fun idea, but I wrote a chunk of code for the third level, bumped the electro thing, died, clicked the restart button and it wiped my script. I should know better than to trust browser based text editors, but it made iteration and exploration difficult.

<comment><AUTHOR> Sorry about that, I lazily made the page refresh to restart a level, will fix!

</comment></comment><comment><AUTHOR> UPDATE: I've fixed the issue where restarting the level clears the script

</comment><comment><USER13> On the right track, but waaaay to steep a learning curve for an absolute beginner, assuming that is the target audience.

In-line incrementation and Mod operations on level 2 is a fast way to lose beginner interest.

</comment><comment><USER14> Another example in Action/RPG format

[https://codecombat.com](https://codecombat.com)

</comment><comment><USER15> This game is simply amazing. Better interactive tutorial for beginner than Codecademy.

</comment><comment><USER16> document.write("
you win
")

</comment><comment><USER17> Great resource for learning Javascript. Good work!

</comment><comment><USER18> It's a nice idea and really well executed but the second test just demonstrates to me how JS is not an ideal language for a beginner to learn as you're thrown straight into async execution and having to work around the fact that functions execute immediately with arcane workarounds.

I still think Python is the most straightforward to learn, even though the whitespace constantly catches beginners out too.

<comment><USER19> I don't understand. Are you referring to Level 2?

What's going on there is just that the robot can only enqueue a single action for the tick. So calling multiple actions will just overwrite the slot.

It's an implementation detail of the game. Maybe it's tougher for beginners or not the best trade-off, but it doesn't have much to do with Javascript

<comment><USER20> I think it's just a case of leaky abstraction. I'd change the API to something like:

        robot.action = { action: 'jump' };

        robot.action = { action: 'move', amount: 4 };

        etc.

Or if you want to keep the action creators:

        robot.action = robot.jump();

        robot.action = robot.move(4);

Which makes it obvious that there can only be a single action per loop call.

<comment><USER21> Or the action could be the return value. IMHO, trying to guess the physical model by experimentation is painful. Why not propose a debug button to display the state of variables during the execution of script.

<comment><USER22> Exactly, the function should not be responsible to see if robot.action has any existing value. It should just return an action depending on the state.</comment></comment></comment></comment></comment>


I am stressed out about interviews - <AUTHOR> I have an interview at facebook and google coming up. I have about 7+ years of experience. I have been doing leetcode and studying for last month.
I have tried to motivate myself, I have been reasonably diligent in studying, but when I read through these forums it seems like people treat these interviews as FT jobs. I want to do that to, but I lack the motivation because I don't think I can compete. I feel I am hard worker, but apparently not compared to other folks. The only way to really compete is to put in as much work as these people. I got like a 100 in my algo classes, but they can ask the gambit of questions. They can ask anything from heaps to recursion to  dfs to red black trees to I don't know what. I graduated top 10% from one the 10 best CS schools in country. I don't think I am dumb, but I feel I am just not as sharp as I was when I was younger.
I feel like not going because its just stressing me out. Heck I didn't even apply for these jobs. Sure I would love the money and having google or fb on your resume looks nice, but its not helping my mental state. I really got to respect people who work at Google or FB for going through the tests.
Are there really that many people who are so good at algo that they can come up with o(log n) o(1) solution to a problem in 30min? I am guessing they are recruiting a million people so they get 1% to pass through their tests, but is the stress really worth it? <comment><USER4> Here's one way to see things – there's around 3.6M software engineers in the US. Google has 100k employees, so let's assume they have 50k engineers. Do you think the top 1% of engineers in the US all work at Google?

Obviously they don't. The truth is, there's no perfect interview process, and chances are you may fail (or succeed) for reasons completely out of your control. You've been studying for a month, and have a degree from a great school – what else can you do to improve your chances? Relax, accept that interviews are a crapshoot and try doing your best.

Worst case you won't get an offer but guess what? Plenty of great engineers got passed by Google or Facebook.

<comment><USER5> I second this. Do your best and know that you will be a better programmer because of the one month study and the experience of the interview.

</comment></comment><comment><USER6> First of all, what's your downside? You didn't seek the interviews, so I suspect you're already employed? Then your downside is that you may waste a vacation day or two on interviews that don't result in a new job. That's not the worst thing in the world.

They aren't necessarily testing your ability to solve the exact problem. The thing is, at Google or FB scale, the difference between o(log n) and o(1) can be huge. It can be millions of dollars in hardware cost. So they _really care_ about the ability of people to find a way to do it in as optimal a way as possible. But, again, they aren't necessarily expecting you to solve it in 30 minutes. They want to watch your thinking process as you tackle the problem.

And, if they _do_ ask something that you know cold, your reward will probably that they very quickly ask something else. They (I presume) aren't trying to see if you know all the algorithms. (We've got this company called Google that does a pretty good job of helping you look up an algorithm if you need it.) They want to see how you work on one you don't.

If I'm reading their intent correctly, then you _cannot_ study well enough for this, because they will move away from what you know. So don't worry that your studying wasn't good enough. _Nobody 's is._ If, from your studying, you kind of got how to attack problems like these, then that's about as good a preparation as is possible.

And if you completely fail... you didn't lose much.

</comment><comment><USER7> To quote Joel Spolsky, "...if you reject a good candidate, I mean, I guess in some existential sense an injustice has been done, but, hey, if they're so smart, don't worry, they'll get lots of good job offers."

It's part of the process. People accept that they'll have false negatives. But you'll get good job offers anyway.

Google and Facebook probably don't have the best process either. They're giant brand names. They get a _lot_ of garbage in their funnel and probably have to filter for minimum garbage, as opposed to having the best engineers.

Not that they don't have great engineers, but the system is flawed and it's a bit of a gamble to get in.

[0] [https://www.joelonsoftware.com/2006/10/25/the-guerrilla- guid...](https://www.joelonsoftware.com/2006/10/25/the-guerrilla-guide-to- interviewing-version-30/)

</comment><comment><USER8> Having just recently interviewed at one of the FAANG for a role that I felt was really well suited for me experience-wise, it's not worth the stress. I study all the time already, simply to do my job and out of interest.

The average whiteboard interview nowadays doesn't reflect my day-to-day work and tests a narrow slice of my ability to solve problems. It also supremely fails to qualify people from non-traditional backgrounds.

Enough of the "we should be thankful there's such a low bar of entry - <USER2> just need to cram exercises". FAANG and many others externalize the burden of qualifying employees by relying on volume and setting the bar very high. Many are going to wear themselves down when the entire process is skewed against them.

So my advice - don't worry too much, you're probably a great candidate and it sounds like you've already done as much as you should to prepare.

</comment><comment><USER9> You don't sound like you really want to be a part of these companies your preparing to interview at by saying "Heck I didn't even apply for these jobs.". And you seem to be having trouble finding a good reason to really go to the interview. The more I read your post; the more I feel that you don't want to feel stupid or inadequate based on the interview. Everyone doesn't want to feel stupid or inadequate, this is normal. Also you've put the interviews on a pedestal that'll declare you as good enough by discounting your experience and achievements thus far.

If you feel this wound up before the interview how do you think you'll feel working for these two companies? It'll be a daily anxiety/fear of being inadequate for the job.

My advice is to lower your expectation/valuation of the interviewing company and go to the interview if you really deep down inside want to. These kinds of interviews have a history of making interviewees feel worse about themselves so bear that in mind.

</comment><comment><USER10> There is no amount of preparation that will prepare you 100% and guarantee you a job at any of these companies. I think we've gotten to a ridiculous point with the interview process now and at some point you just have to decide you've done enough to prepare on the technical end and it sounds like you're basically there. I would probably start looking at other aspects of preparation. Think about the human aspect of things and what you want to impress upon your interviewer. These are more subtle things that might make the difference when deciding a thumbs up or thumbs down. But in the end don't sweat it. Decide you're going to have fun with it and see what happens. Truly try to enjoy yourself and view each problem as an interesting puzzle instead of some do or die test. And hey, free lunch!

</comment><comment><USER11> Yes, there are people that good at algorithms, you just need to enter a contest at leetcode/codeforces/topcoder where you can just amaze yourself how some people can solve these difficult problems in such a little amount of time.

On the other hand, for FB and Google you just need to be decent enough at these questions not really a superstar. I would say if you can solve most medium problems in leetcode and occasionally a hard then you are good enough.

Worst case you just get rejected and life follows its normal course.

BTW, i have been rejected like 30 times from these companies, it does suck when they tell you, because you start doubting yourself, but then after a few days the feeling goes away.

</comment><comment><USER12> There are three things I'd like to share with you.

First, I've hired dozens of people in the last year, and the main piece of advice is this: I'm rooting for you.

Seriously.

I spend a TON of time sifting through resumes, doing phone screens, checking Github repositories, and on-site interviews. I really, really don't want to do it.

Ideally, the first candidate that walks through the door is perfect, and I don't have to even talk to anyone else. Done. Finished. Now I get to do real stuff at work.

I'm rooting for you. Honestly.

Second, the answer to your question is "No". You don't have to know how to invert a binary tree or re-implement quicksort. For good interviewers, the point isn't for you to reinvent or regurgitate complex computer science problems in 30 minutes, but rather to allow you to demonstrate your thinking. Can you write code? Can you walk me through your thought process? If I throw a curve ball, can you adapt your solution to that?

You don't need to _know_ all of those things you mentioned, but you should be able to demonstrate that, given enough time, you _can_ do those things.

We only get 30-45 minutes with you. The goal is to figure out what you _do_ know quickly, and then gauge your capacity to grow beyond that.

Look, there are some things you must know to get a job with me, and there are some things that aren't important. "Can you write code?" is the bare minimum. I wouldn't hire a carpenter who doesn't know how to use a hammer, but just knowing how to use a hammer doesn't make a carpenter good, either.

There are an infinite number of skills out there that you can learn. I don't expect you to know them all. I expect you to know SOME of them. I expect you to be able to write code, but I expect you to do a little bit more than that.

Most jobs I've ever had required on-the-job training. I have to learn how the new job does code deployments, how they structure their code, maybe a new programming language. I have to learn how they do standups (if any), code coverage (if any), and one-on-ones (if any). I have to learn what's in this database and how it connects to that API and what framework they're using. Everyone uses frameworks differently, so I have to figure out the quirks and esoteric choices that this particular company made.

The point is this: you don't have to know everything. You need to demonstrate that you can code (the bare minimum of the job), you have to demonstrate that you can learn and ideally learn quickly, and perhaps most importantly, you are hopefully someone that I would like to sit next to for the next six months.

I'm not going to tell you not to stress out, because that's perfectly normal. But what I will say to summarize are these two things:

1\. We are rooting for you.

2\. You don't have to know everything. Just be your normal smart, enthusiastic self and do the best you can.

Keep those in mind and you'll be fine.

<comment><USER13> Your process seems fine for someone unknown, "blank". But when you have information about the past experience - does it really make sense? e.g. if someone graduated from the top CS program - can't you deduct that they are able to "think", "solve problems" and "code"? I guess one can argue that the interview process is some kind of verification of applicants resume - <USER3> aren't there more efficient ways to do this? You can easily check whether the person really graduated that program, about past experience - previous jobs, etc...

I mean, you should leave the qualification verification to those entities who are more qualified to do it, and who have much more time - I guess if the university awards a degree after 4 years of involvement with the candidate says much more than you can deduct in 30 minutes during the interview set up.

<comment><USER14> No, you can't make those assumptions.

People graduate from high school who are functionally illiterate. Similarly, people graduate from CS programs who are functionally incompetent.

I've interviewed many people who can talk the talk, have an impressive resume, can talk details about their projects... But fail a simple coding question. My go-to phone screen question is to find the common elements from two lists of integers, and half the candidates can't do it in better than O(n^2). I'm not even looking for the perfect solution, just something that is better than brute-force.

It's the "do original work" that is the hardest for many people. They can modify existing systems, plumb together interfaces, etc. without a problem, but given a fresh problem and a blank sheet of paper they are stuck.

I've found the same people are also weak in their fundamentals...

<comment><USER13> The "original work" vs "plumbing things" distinction is very vague - we all stand on the shoulders of giants. E.g. PageRank also can be seen as Algebra stuff plumbed together.

Even if we go with your definition - why do you assume that someone who practiced leetcode/hackerrank stuff and thus are able to pass interviews is good with the "original work"?

I tend to think that the current interview practices have two (eventual) goals:

1\. Hard to change jobs because practice is needed.

2\. Tests how dedicated/desperate the candidate is - willing to allocate time for preps.

</comment></comment></comment></comment><comment><USER15> Go into an interview with an open mind and with curiosity. Your having a conversation and part of how you interact will reveal if your a good cultural fit and if your someone they can get along with.</comment>


Ask HN: What is the best interview experience you have had? - <AUTHOR> The company I work for is currently in the process of making some of our first hires (we are a team of 4 right now). We always want to strive for providing the best interview experience for everyone we talk to.<p>What is the best interview experience (whether you were hired or not) that you have had? <comment><USER2> I went for a jog with an ex-colleague who was starting a new company in NYC. He had asked to meet up to get my advice on how to interview people for a research project that his company was working on. After 45 minutes of me explaining how a candidate would ideally approach the work, he offered me the job. I basically said yes on the spot.

</comment><comment><USER3> The best interviews have been interviews where I have been warned ahead of time what to expect. Ie in the phone screening interview I was given an informal hint that I should add unit tests to my programming task (the next step of the interview process). Or the time I was told that my in-person interview would include a hello-world with a certain IDE and a certain language (which I had no previous experience in). I felt comfortable because I knew what to expect and I could prepare ahead of time. I think it also showed I was listening and I was willing to learn new things.

</comment><comment><USER4> My favorite interview experience was with my current company. Highlights:

 __1st Interview: __

Lunch interview with my boss. Conversation was casual, covering my background & goals, the leadership's background, and the tech stack. After lunch we expanded a little on our conversation with a showcase of certain features of the company's product.

 __2nd Interview: __

Met with the company 's founder for about an hour, followed by individual meetings with a few engineers. During the meeting with the founder we exchanged some background information and I was shown some info on the company's performance thus far; this was huge personally as transparency had become a huge pain point with my previous employer. The engineering meetings went smooth; I'd consider them casual but the technical discussion was more in-depth than the 1st interview.

 __Code test: __

After the 1st Interview I was given a take-home code test; building a simple card game using the MEAN stack (shuffle deck, deal cards, score game based on card 's position relative to a brand new deck, store results & calculate ongoing average). It took me about 12 hours over the course of a week (evenings mostly - I was employed during this interview) to complete. Since our product has no relation to card games, IMO the code test sought to prove that:

1\. I was capable of taking a spec to code completion

2\. I was capable of working within the confines of the company's tech stack (MEAN)

It took my boss less than a day to review my submission before offering me a position on his team.

Aside from my best interview experience, I've had some not-so-great experiences, here's a few that I encourage avoiding:

\- No call, no show. Be mindful of your schedule and if you can't keep the commitment, inform the candidate. Candidates hate wasting their time, especially if they're still employed since it usually means taking time off.

\- Impromptu skill evaluations. If you tell a candidate that the 1st round interview is going to be non-technical, then they're going to prepare accordingly. Shotgun questioning is not well received.

\- Surprises on code tests. If your code test is going to measure one's ability to work within your stack, make sure the technologies come up during the interview conversations prior to issuing the code test.

<comment><USER5> You lost me at "12 hour unpaid coding homework project". There's no way I would do that, and it's disrespectful of the candidate's time.

<comment><USER4> My wallet disagrees with "unpaid" and "disrespectful"

</comment></comment></comment><comment><USER6> I had a phone screen, 2 quick coffee meetups with CEO (<30 mins).

I was then given access to github and told to implement a fairly simple feature in the next few days. This was with a stack I didn't know, so I had to prove that I can navigate my way through the code base. I sat down on the weekend, learned the basics of Rails, and implemented the feature. I then pushed upstream to github and was told I was hired a few days later.

</comment><comment><USER7> My best interviews were the ones where money wasn't an issue. They focused on getting talent first and dealing with bad hires later. So the process went like this:

\- _" I see you have done this and that, have some years of experience and seem to know how to do things. Here is what you would do in our company ..."_

\- _" Still interested? Great. Can you please reverse a string?"_

\- _" Well, looks like you can code. Let's talk salary."_

\- _" Welcome aboard. :)"_

Whenever someone turned out to be bad, they simply asked them to leave. Usually with severance. So easy and simple. I really can't understand why only a few companies work like this. No tests, no homework and definitely no hazing and grilling. Just some guys that want to build some stuff.

<comment><USER8> > I really can't understand why only a few companies work like this.

Highly dependent on the legislation the company is operating in. "At will" companies, if I understand the term correctly, certainly have that flexibility where they can let the bad hire goes. In other countries where firing is less flexible, more hoops needs to be jumped through.

<comment><USER7> I didn't say anything about firing. In Europe it's very hard to fire someone. But give them a stack of cash in exchange for pursuing other opportunities and almost everybody will take it. It's actually a common practice for non-tech jobs. Layoffs are not possible, but getting a year's salary for quitting is.

<comment><USER8> You're right. I made a bad assumption that getting rid of bad hires means firing them. Like the saying goes, there are many ways to skin a cat.

<comment><USER9> In Europe there is normally a probation period, during which new employees can fired easily. After that it gets harder to fire.

</comment></comment></comment></comment></comment><comment><USER10> I recently had an interview for an intern position. I think it was one of the best interviews I have ever been.

The interview was for an hour or so with two developers. We chatted casually for the first 20 minutes. They introduced themselves and briefly discussed about their product. After going through my CV, they asked about my experience with the startup I had mentioned, the challenges I faced, why I choose that particular technology etc.

As per the technical part, the questions involved basic sql queries and schema design. Then we discussed about various data structures. I wasn't given any problems though. I was just asked to explain various data structures(array, list, stack, queues, trees and hash tables) and their complexity with an example on a whiteboard.

The best thing was that it felt like a casual conversation between a couple of friends.

</comment><comment><AUTHOR> For myself. I think the best interview experiences I have had are when the interviewer is honest or when they provide constructive observations about my abilities.

For example, one of the best interviewers I have interviewed with would answer my questions about the company and their culture straight away without hesitation or himming-and-hawing about the response. It helped me feel like I could trust what he was saying. As well at the end of the interview he took the time to lay out his thoughts about me, my abilities and how I could contribute to the company. When I left the interview I had no doubts in my mind about what he was thinking and I was left sweating for days while waiting on a response about the position.

Since that interview has always left a lasting impression on me, I always try to do the same with anyone that I interview now.

</comment><comment><USER11> At my last workplace, we had an interesting approach to interviewing candidate in person. We focused on personal compatibility more than technical skills. Our team view was that technical skills can be taught/learnt but social and emotional maturity is hard to teach and learn. This philosophy wasn't unique to the company just to our team.

We typically will have 4-5 hour day setup for series of interviews, preferably before lunch and during lunch. By this time remote team workers already have interviewed the candidate on phone and shared their impression to boss. First interview and last interview was by the Boss, in between we alternated between junior and senior members of the team as well as a few people from teams that we closely worked with in our job. Each interview lasted 30-45 minutes. Everyone was free to structure and cover whatever they wanted to explore during the interview. There were no prescribed method or feedback forms.

We provided verbal feedback to the boss as we walked by his cubicle after the interview. The typical feedback was "S/he reminds me of XYZ or s/he is strange or something along these lines, sometime politically incorrect." The XYZ typically being a current or ex-team worker or someone we all have/had known. Sometime we will have little bit more to say but not much. The feedback typically ended with "thumbs up," "thumbs down," or "thumbs sideways".

Even though, we schedule one person to take the candidate out for lunch, by the time lunch comes around, boss has pretty good guess whether candidate is hirable or not. If he is getting consistent thumbs up, we decide to take him out for lunch with the whole team. During the lunch, there is no discussion about interview or questioning candidate, just having a good time and treating the candidate as one of the team member. Of course everyone enjoys as we go for lunch to a nicer place and it is on company dime.

We continue the scheduled interviews after the lunch. Once interviews are over, we huddle for a quick 15 minute meeting with remote team members on the conference call and comment on the candidate. By that evening or early next morning boss lets everyone know the hiring decision he made.

</comment><comment><USER12> The best interview I had was one where they brought in the whole team of 8 or so people to interview me. They asked me questions but there was a lot of joking around as well and it gave everyone in the room a good sense for whether I would fit in with the group. I have a small fear of public speaking so it was very much not what I would have picked for myself but it turned out to be pretty great.</comment>


Spectre mitigations in MSFT VC++ compiler - <AUTHOR> https://blogs.msdn.microsoft.com/vcblog/2018/01/15/spectre-mitigations-in-msvc/ <comment><USER2> > For clarity, the left hand side includes a comment, introduced with a ; in > assembly.

I wonder who they think will be reading that article that knows assembly well enough to read that snippet but not well enough to know that ; denotes a comment?</comment>


150-Year Wait for Indian Immigrants with Advanced Degrees - <AUTHOR> https://www.cato.org/blog/150-year-wait-indian-immigrants-advanced-degrees <comment><USER2> Or you could immigrate to Canada and then from there to the US in a total of about 5 years.</comment>


Silicon valley out, Graphene valley in - <AUTHOR> http://www.technologyreview.com/communications/26612/

<comment><AUTHOR> There was an article about graphene I read a while ago. Only now it starts to really take off. Graphene is going to be the new silicon scientists say: [http://www.tomshardware.com/news/graphene-replace-silicon- da...](http://www.tomshardware.com/news/graphene-replace-silicon-day- scientists,5075.html)

And IBM already used it to build 100Ghz supercomputers according to this article: [http://www.pcworld.com/article/188656/ibm_details_worlds_fas...](http://www.pcworld.com/article/188656/ibm_details_worlds_fastest_graphene_transistor.html)

It is not that farfetched to think that in the pretty near future graphene will be used for flexible displays: <http://techon.nikkeibp.co.jp/article/HONSHI/20090225/166337/>

The future for commercial graphene applications is virtually unlimited and is going to explode exponentially within the next couple of years.

Silicon out, graphene in..</comment>


Ask HN: Those who are going to Startup School, where are you staying? - <AUTHOR>

Where is everybody staying especially those who do not have a car and do not plan to rent?<p>I am coming into the San Jose airport and I have no clue where to book a place. <comment><USER2> Hey, there is a Facebook group where people are coordinating plans and discussing options:

<http://www.facebook.com/groups/263608800427362/>

See you there!</comment>


Half of Marketing Jobs Will Be Replaced by Machine Intelligence - <AUTHOR> http://www.martechadvisor.com/articles/study-half-of-marketing-jobs-will-be-replaced-by-machine-intelligence/ <comment><USER2> When do we get to the point where the sell-side AI and the buy-side AI talk to each other in some useful way?</comment>


Show HN: Application to deploy from a GitHub repo to AWS - <AUTHOR>

Hello Folks, We have just released CloudMunch Developer Edition. This is an application to deploy your application from a GitHub repo to AWS. We would appreciate your thoughts and feedback on the application. Thank you.<p>Links: http://www.cloudmunch.com/developers <comment><AUTHOR> @nanijoe My response to your first comment

CloudMunch Developer edition (Beta) will currently provide you the following. Please note this is free to use. You will pay only for the AWS infrastructure you consume. 1. A history of your builds 2. A build repository to store older builds and deploy them if required 3. A deployment history 4. A template for build orchestration to perform code analysis, e.g. PMD, code visualization (TBA) 5. Scheduled deployments - on-click, daily or weekly 6. Seamless connection between GitHub and AWS using your GitHub id

We plan to add some features based on our thoughts and your feedback. I hope this answers your questions.

</comment><comment><USER2> Its not clear to me what your value proposition is, or what I would be paying you guys a monthly fee for. If I use Elastic Beanstalk, I can deploy with a simple git push, and I can manage AWS directly myself. What do you guys do to make this easier?

<comment><AUTHOR> CloudMunch Developer edition (Beta) will currently provide you the following. Please note this is free to use. You will pay only for the AWS infrastructure you consume. 1\. A history of your builds 2\. A build repository to store older builds and deploy them if required 3\. A deployment history 4\. A template for build orchestration to perform code analysis, e.g. PMD, code visualization (TBA) 5\. Scheduled deployments - on-click, daily or weekly 6\. Seamless connection between GitHub and AWS using your GitHub id

      We plan to add some features based on our thoughts and your feedback. I hope this answers your questions.

</comment></comment><comment><USER2> vijay, I don't know why your reply shows up as 'dead but it does..You guys should seriously re-evaluate your value prop, cos I can already do the first 3 things you mentioned with Elastic Beanstalk, and I don't care about the last 3. Maybe provide an abstraction layer like heroku does?

<comment><AUTHOR> Thanks for the feedback. Will re-look at our value prop and the comment issue.

</comment></comment><comment><AUTHOR> @nanijoe Thanks for the feedback. Will re-look at our value prop and the comment issue.</comment>


Ask HN: How do I become a Sales Engineer? - <AUTHOR> Hello HN.
I'm a developer with ~6 yrs experience mostly with back-end systems, web services (C#), some Asp.net MVC, some Ruby/Rails, some Node.js. I recently came across a Sales Engineer position and was wondering how one transitions and if it's ever worth it - for context, I like being an engineer, and I'm wondering about pay gaps b/w the two positions, especially their asymptote over ~10 yrs.
Much appreciated! <comment><USER2> > How do I become a Sales Engineer?

Start by reaching out directly to individuals on your company's Sales Team. Tell them that you're interested in learning about their end of the business and what they do.

A great question to ask them - 'From a technical perspective, where are you guys struggling? Where do customers seem to struggle?

Then offer to assist. Imagine a pilot project where Sales gets special permission to enlist your help with a customer sale. It builds from there. Eventually, they might create a role just for you.

Incidentally, a great primer to read up on sales- Mike Weinberg > [http://www.goodreads.com/book/show/15863998-new-sales- simpli...](http://www.goodreads.com/book/show/15863998-new-sales-simplified)

<comment><AUTHOR> Great suggestion, thanks.

</comment></comment><comment><USER3> A Sales Engineer is fundamentally responsible for the technical aspects of a sale, in my opinion. That means listening closely to customers so you understand their problems, presenting how your companies technologies fit the general case and presenting solutions to the customers specific challenges. It's a collaborative team game and specifically involves working closely in partnership with a sales person/s.

Communications, both verbal and written are the core skills. Take listening to clients - it means interpreting what they're saying and converting it into recognisable requirements, since many clients won't know the technologies or constraints in the way the specialist does.

The first thing you have to know is whether you'll enjoy the role, and be any good at it. While much of the role is about active listening, it also involves communicating complex technologies in a straightforward manner - if you enjoy doing that, then you may well enjoy the role. I'd suggest (if you don't already) presenting at conferences, writing blog posts and teaching other people are all things that you can do to discover if you'd enjoy it.

In terms of transitioning, I would look for situations or roles where you can work in a customer-facing situation. The closer you can get to sales and marketing the better. Your current organisation might be willing to work with you on it as part of a career plan: that's how I've handled people who wanted to move from back-end roles to a front-end one. For example, meeting with customers to update them on new upcoming technologies, or present how existing solutions could be improved, presenting at marketing events. If not in your current environment, then roles such as developer relations may be a useful stop-over point. Of course, the easiest way to transition is to .... apply lots ;-)

I should mention, that while the money is often good, there is a significant level of pressure. In most organisations the sales function is less stable with constant pressure to hit targets. While there will be fun if everything is going well, it's less so when it's not! If your sales person/team is having a hard time hitting their targets you will know all about it, and may suffer the consequences. You may also find that the obviously "technically right" solution is not as easy to determine when dealing with customers and sales people - both are an interesting design constraint. Finally, working with sales people is it's own challenge as they are often very different to technical people.

<comment><AUTHOR> Thanks for the excellent summary. I do feel I'm good at presenting ideas, hence this may be a role for me. I've mostly been at large corporations with boring stability and so wouldn't mind the pressure for a change. If it gets to be too much to handle, I could always switch back to being a developer.

</comment></comment><comment><USER4> Good discussion here with a couple people that have made the transition offering assistance:

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

<comment><AUTHOR> Thank you!

</comment></comment><comment><USER5> At midnight, you go to the Crossroads and wait for a man in an all-black suit and dark glasses to show up...</comment>


I'm a teapot - <AUTHOR> http://nytimes.com/418

<comment><USER2> Bah... 200...

      $ curl -I http://www.nytimes.com/418
      HTTP/1.1 200 OK
      Server: Sun-ONE-Web-Server/6.1
      Date: Wed, 25 Jan 2012 21:28:58 GMT
      Content-length: 17
      Content-type: text/plain
      Set-cookie: RMID=2dab5fc96b364f20741aba0c; expires=Thursday, 24-Jan-2013 21:28:58 GMT; path=/; domain=.nytimes.com
      Last-modified: Fri, 29 Apr 2011 19:40:57 GMT
      Etag: "11-4dbb1449"
      Accept-ranges: bytes

<comment><USER3> I'm betting that's their CDN swallowing the nonstandard (even though its on spec) http code.

Varnish does the same thing, which is why you can't get a 418 code out of httpstat.us/418, which is on heroku. Same goes for that cat-based one that came up the other week, which is also on heroku.

<comment><USER4> Is it on spec? Somehow I doubt there's an actual teapot involved anywhere in responding to that request.

<comment><USER5> HTTP status 418 is an "official" status code released in the traditional yearly April Fool's Day paper[1] of the Internet Engineering Task Force. It was the joke for 1998.

[1][http://en.wikipedia.org/wiki/Hyper_Text_Coffee_Pot_Control_P...](http://en.wikipedia.org/wiki/Hyper_Text_Coffee_Pot_Control_Protocol)

<comment><USER6> True, but the spec clearly states that the 418 code is to be used only when "the HTCPCP server is a teapot; the resulting entity may be short and stout."

<comment><USER7> How does Varnish know the backend server is not a teapot? It's a blatant violation of the standard to strip it out.

</comment></comment></comment></comment></comment></comment><comment><USER8> It's a reference to an April Fools joke from 1998: [http://en.wikipedia.org/wiki/Hyper_Text_Coffee_Pot_Control_P...](http://en.wikipedia.org/wiki/Hyper_Text_Coffee_Pot_Control_Protocol)

<comment><USER9> In the spirit of more fun, <http://medlem.spray.se/erur/418.htm>

</comment></comment><comment><USER10> Needs more teapots.

<http://www.bbc.co.uk/cbeebies/418>

<comment><USER11> Headers:

        HTTP/1.1 418 I'm a teapot
        Date: Wed, 25 Jan 2012 23:57:22 GMT
        Server: Apache
        X-Webapp: cbeebieshome
        X-Generated: Wed, 25 Jan 2012 23:57:22 +0000
        Cache-Control: max-age=60
        Content-Type: text/html; charset=utf-8
        Content-Length: 20820
        X-Cache-Action: PASS (status)
        X-Cache-Age: 0

<comment><USER12> Unfortunately, it's a lie. Obviously this is a web server and not a teapot.

<comment><USER13> Technically most web servers _are_ teapots, just incredibly bad ones.

<comment><USER14> Old Prescott Pentium D CPUs might actually make decent teapots. Those things were _hawt._

</comment></comment></comment></comment></comment><comment><USER15> Google AppEngine doesn't seem to allow the 418 response code. Failed expectations at the best: <http://geekceo.com/418>

</comment><comment><USER16> Has anyone designed a teapot to functionally implement this protocol?

<comment><USER17> <http://www.cs.rhul.ac.uk/home/joseph/teapot.html>

The page claims that <http://184.108.40.206/> is the device in the picture. Since we may be about to hammer it:

        jerf@jerfhom ~ $ curl -i http://220.127.116.11/
        HTTP/1.0 418 I am a Teapot
        Server: BaseHTTP/0.3 Python/2.4.4
        Date: Thu, 26 Jan 2012 01:38:15 GMT
        Content-Type: text/html
        Connection: close

        <title>Error response</title>

Error response

Error code 418.

Message: I am a Teapot.

Error code explanation: 418 = ???.

<comment><USER18> Lovely!

Perhaps the next implementation should use Raspberry Pi instead of a laptop.

<comment><USER3> You don't need a raspberry pi.

<http://d116.com/ace/>

<http://arduino.cc/en/Tutorial/WebServer>

</comment></comment></comment></comment><comment><USER19> I did a university assignment on the HTCPCP. My tutor thought it would be hilarious to get us to create a coffee pot server which was based on RFC 2324

</comment><comment><USER20> How did anyone find this? (It's not in robots.txt, fyi)

<comment><USER21> It's from an April fools joke from 1998 regarding the "Hyper Text Coffee Pot Control Protocol"

[http://en.wikipedia.org/wiki/Hyper_Text_Coffee_Pot_Control_P...](http://en.wikipedia.org/wiki/Hyper_Text_Coffee_Pot_Control_Protocol)

<comment><USER20> You misunderstand - my Q is how did anyone find NYTime's implementation of this joke spec?

</comment></comment></comment><comment><USER22> From the excellent HTTP Status Cats:

<http://httpcats.herokuapp.com/418></comment>


Show HN: Simple Workout – Weightlifting Tracking App - <AUTHOR> Hello!
I got a little tired of the UI in other popular Android fitness tracking apps, so I decided to make my own.
Google Play: https://play.google.com/store/apps/details?id=com.harrisontu...
I've stripped away all the other features, and left what I thought was essential. I tried to optimise for ease-of-use (and speed!). Let me know if there's anything you think I missed.
Check it out! Hope you like it. Its the first app I've ever published.
Built with Google Flutter, if anyone is curious about that development experience. Also happy to consider open-sourcing this!
Cheers,
Harry <comment><USER2> I'm fairly unhappy with the available options for iOS. The screenshots for your app look more like what I'm interested in. Any plans to release this for iPhone?

<comment><AUTHOR> Definitely! In theory, it should be ~super~ easy for me to release on iOS, since Flutter is cross platform and I have a Mac.

Unfortunately I don't have an iPhone to test it on, but I could potentially borrow one from a friend. I'll let you know!</comment></comment>


Cloudflare aims to keep HTTPS certificates from falling into the wrong hands - <AUTHOR> https://arstechnica.com/information-technology/2019/06/cloudflare-aims-to-make-https-certificates-safe-from-bgp-hijacking-attacks <comment><USER2> finally, a service from CF without an ulterior, sinister motive.

this is quite good. i wonder if it's been done before.</comment>


We think Apple "lost" our 27" iMac - <AUTHOR> http://blog.reamaze.com/2013/01/we-think-apple-lost-our-27in-imac/

<comment><USER2> Uneducated guess: something didn't get logged into GCRM properly and the record of the repair was blitzed. It sat in back for a few days with nobody questioning it since it's among dozens of other machines. Then you showed up and a panic ensues since nobody's even able to confirm the serial number of the machine in question.

A new iMac is presented. The end.

<comment><AUTHOR> Probably spot on.

"As a person who just stopped being a genius, I totally agree with the above point. From day 1 I approached this job with the attitude "I will explore every angle to fix this under warranty until I am out of options" and this made the job EXTREMELY satisfying for me. Apple does give you an extraordinary about of latitude in making those decisions, so as long as you are "really doing it for the good of the customer", it's usually ok. The biggest issue for Genii (and the thing that causes many genii to lose their jobs and/or leave) is the administrative side (ie.... dealing with a system called GCRM ) and inventory issues (like accidentally replacing a 16 gb iphone with an 8gb ....don;t laugh it happens more often than you think, and its a BIG deal since our system is not designed correct inventory snafus easily). Their as also time issues, since Genius Bar appointments are only 20 minutes,so going over that (which happens quite frequently) is a big deal, and very job threatening."</comment></comment>


Hack`s web bookmark site    websir.in     - <AUTHOR> http://www.websir.in this site can place many urls,organized by folders,tags,design for ipad,iphone,android,help hack collector url information <comment><AUTHOR> design for ipad,iphone,android web bookmark</comment>


Stereotype Threat - <AUTHOR> https://www.thelancet.com/journals/lancet/article/PIIS0140-6736(20)31139-9/fulltext <comment><USER2> What is this

<comment><USER2> What you ask</comment></comment>


Ask HN: What happened to searchyc.com? - <AUTHOR> <comment><USER2> It's dead. You can use <http://www.hnsearch.com> instead. HNSearch was created by the guys of ThriftDB, the same guys of Octopart. I think.

</comment><comment><USER3> See pg's new post about an implementation of HN search:

<http://news.ycombinator.com/item?id=2619736>

</comment><comment><USER4> I hope this won't turn into another... oh, my aching brain cells -- what what the econ/market site based on HN code?

If searchyc is toast, can we migrate it as opposed to simply the deadpool? There've already been some offers to host.

I'm hopeful that they're simply exploring options, and that it won't come to actual death.

(Hmm... It seems I'm very "optimistic", this morning. More coffee!)

<comment><USER3> _what the econ/market site based on HN code?_

New Mogul. That was quite enjoyable for a while.

<comment><USER5> You can follow economics on hubski. <http://hubski.com/tag?id=economics> Same code base, in for the long haul. :)

<comment><USER3> That's an interesting karma (and "clout") model there, which may be of interest as an example of how social clues can promote good discussion.

<comment><USER5> Thanks. It's unproven at scale, but so far, so good!

IMHO it's more effective to make water flow where you want, rather than to keep it from flowing where you don't. :) A little of both is necessary, but I think the first approach has more stability.

</comment></comment></comment></comment></comment><comment><USER6> What happened to searchyc.com?

See here:

<http://news.ycombinator.com/item?id=2605959> <http://news.ycombinator.com/item?id=2600193>

</comment><comment><USER7> Where is the json/api option?

</comment><comment><AUTHOR> <http://www.searchyc.com></comment>


Some Rookie Mistakes in Go - <AUTHOR> http://engineroom.teamwork.com/go-learn/ <comment><USER2> > Go has multiple returns from functions so a very typical scenario is a > function that returns something and also an error, which would be nil if > everything worked okay

This is one of the problems I have with C. You basically have to remember to manually check for an error on every function call, which means (1) an algorithm with short and simple pseudocode becomes lengthy and hard to read real code, because you need to add a ton of error handling, (2) it is easy to forget to handle an error in some place. Exception-based error handling lets you delegate errors to a top-level handler without cluttering up intermediate code (i.e. an exception anywhere in webpage rendering logic should be handled by 500'ing the entire page, which exception-based error handling lets you do without cluttering intermediate functions between the function producing the error and the function handling the error with error-handling logic).

I've been thinking about learning Go, but if its only error handling mechanisms are "pack it into a return value" or "panic() which is like exit(1) in C" then it's a black mark against the language. It's still a black mark if the language has exception-like error handling but it's not considered "idiomatic Go" and the stdlib and a good chunk of third-party libs report errors in return values.

<comment><USER3> On the other hand, exceptions are implicit control flow, which means you have to assume every single expression may throw an exception. So if you don't take extreme care to write strong exception safe code, subtle bugs will exist and are extremely hard to find.

Explicit control flow is more verbose, but it is also easy to spot when the control flow passes over something important by mistake. And as pointed out elsewhere, forgetting to check a return value is a solved problem via static analysis.

<comment><USER4> > On the other hand, exceptions are implicit control flow

Go doesn't force you to deal with errors either. I see plenty of code ignoring them with

       retval , _ := MightYieldAnError();

And some languages that have exceptions actually force the client code to handle them, like Java AFAIK .

Finally, Go "explicit control flow" didn't have to be verbose like it is, that's a design choice its authors made.

Go is primitive in the sense that it uses C style code patterns , like the famous :

          retval = MightYieldAnError( &outError);

Edit: I forgot to mention the panic/recover which ultimately means Go designers implemented some form of exceptions. That basically voids the usefulness of Go error system, and an admission that it's broken.

<comment><USER3> > Go doesn't force you to deal with errors either.

> And some languages that have exceptions actually force the client code to > handle them, like Java AFAIK.

But this misses the point. Any error which you have to explicitly ignore is fine, because then you were aware of it at some point and explicitly ignored it, and anyone reading the code can plainly see you explicitly ignoring them.

And errors which can only happen at specific points (like function return values) are also ok, because then you only have to consider error handling and cleanup at those points.

But if you have neither of the above - if you have the situation where errors can spontaneously result from any evaluation of any expression with no explicit notation required - then you have a poor situation indeed.

</comment></comment></comment></comment><comment><USER5> Why does Rust get articles about eg an operating system written in Rust, but all the Go posts are how to tie your shoe laces? Somebody explain, please.

<comment><USER6> Go is for writing api servers which otherwise should be written in python but must be fast.

Rust is for the lowest level code which is not assembly, with all the performance tricks, but that should be secure.

Rust is expensive to develop - if you can afford to use a GC, you should use a GC.

So people want to rewrite all the world's C and C++ to rust, for security. But people are less passionate about rewriting all the world's python into go for performance.

<comment><USER7> > Rust is expensive to develop - if you can afford to use a GC, you should use > a GC

This has not been the case for many people using Rust, including myself. Once you learn the language, there is no "cost" to use it. In fact, the compiler simplifies much of the mental overhead when dealing with concurrency, sharing data, mutability, etc... Sure the compiler has some strict rules, but it's not expensive to develop in by any means.

I would also say Rust is in a sense higher-level than Go in terms of expressiveness and abstractions.

<comment><USER8> Rust can be hard to refactor. Not sure if that's a problem with Go, but it's a real cost.

<comment><USER7> How so? From my experience, I was able to make massive changes and the compiler would guide me through to make sure I didn't miss anything. If it compiles, it'll generally work minus any logical errors/changes.

<comment><USER9> There are definitely refactoring woes to be had when taking an existing struct and changing it such that it now stores a reference in one of its fields, requiring lifetime parameters to trickle down through your program. The compiler guides you in getting it all right, but it's something that I'd rather see an IDE do automatically in the future.

</comment></comment></comment></comment></comment></comment><comment><USER10> Found myself agreeing with all of this. I very much second the decision to not use a framework and instead use the core to libraries and a standalone multiplexer. Another huge benefit of this is that you can write some glue code and test your end points without using the http mocking interfaces, which are absolutely terrible for testing.

</comment><comment><USER11> FYI: golang not the game of Go. Recent news has skewed my expectation of go in article titles.

<comment><USER12> Yep, good news I like both ;)

</comment></comment><comment><USER13> I personally use gin [https://github.com/gin- gonic/gin](https://github.com/gin-gonic/gin) and have never looked back

<comment><USER14> +1 here. Gin is a pretty reasonable web framework that sticks to the core go patterns and practices, but provides some good built in helpers. It includes http router (a high performance route handlers and dispatcher), and the implementation of middlewares is nice.

We've tried with Revel, and I completely agree with the post here. We could use net/http directly, but gin is working super well for us right now.

</comment></comment><comment><USER15> It is spot on observation about rather bad rules in Go about := and scopes that hit me as well. For example, the following compiles without warnings and even runs the first invocation of test successfully, [https://play.golang.org/p/tYQSNjudGT](https://play.golang.org/p/tYQSNjudGT) :

package main

func test(n int) { for { n := n - 1; if n == 0 { break } } }

func main() { test(1); test(2) }

<comment><USER16> That seems somewhat natural to me, to be honest. The same could happen in Rust, or most languages with shadowing.

IMO, allowing it is the lesser evil.

<comment><USER15> The issue here is not shadowing in general but shadowing withing a single statement like in n := n + 2. A sane rule would not allow to refer to the declared name in the right-hand side expression.

</comment></comment></comment><comment><USER17> Most of these mistakes are mistakes for any language you write in.

<comment><USER18> "Don't use a web framework" definitely isn't something I would tell developers.

I really think good web frameworks is one of the reasons why the web has progressed so quickly the last ten years.

<comment><USER19> In Go, "don't use a web framework" translates to something like "net/http is already a 'web framework' much like web.py or other 'minimalistic' frameworks". Unlike, for instance, Python, where you "have to" use a web framework because the standard library doesn't ship with much (http.server is too basic on its own [1]), the base net/http is enough for many non-trivial usages. (Of course Python has a few dozen good 3rd-party choices.)

[1]: [https://docs.python.org/3/library/http.server.html](https://docs.python.org/3/library/http.server.html)

</comment></comment></comment><comment><USER20> I'm not sure that using a custom panic filter is idiomatic...

<comment><USER21> It's used in the stdlib I think, you just need to recover the panics at your api boundaries.

<comment><USER22> Only for very specific use cases, like the recursive descent parser in encoding/json. It's not appropriate as a general pattern.

<comment><USER20> That was my understanding. You're just suppose to handle/return errors normally right?

<comment><USER22> Yup!

</comment></comment></comment></comment></comment><comment><USER23> Golang, not Baduk :-(

<comment><USER24> I know. I was waiting for some life or death problems...

</comment></comment><comment><USER25> I was intrigued about the part about not being able to ready the response body more than once. Can anyone more experienced explain why this decision was made in the core libraries? And if there is a good reason to not read the body more than once, is the author making a mistake by trying to get around it?

<comment><USER19> Go's core library specifies several interfaces for reading, writing, and closing streams. Here's Reader, for instance: [https://golang.org/pkg/io/#Reader](https://golang.org/pkg/io/#Reader) Those interfaces do not promise seeking, so they apply to as many things as possible. (See [https://golang.org/pkg/io/#Seeker](https://golang.org/pkg/io/#Seeker) .)

The HTTP body is provided as an "io.Reader" which actually backs to the network stream, and since TCP streams can't be seeked, it's an error to think you can. This means that native Go HTTP handlers can handle a multi-gigabyte upload or download without consuming all that RAM at once (assuming there is some way to stream), but you lose seeking. You can easily recover read-only access by using io.ReadFull to fully consume a reader into a byte buffer, but then you pay the price of consuming all the RAM, of course. ([https://golang.org/pkg/io/#ReadFull](https://golang.org/pkg/io/#ReadFull) ) Whether or not it's a mistake depends on your situation. Fortunately, in the HTTP context, you have a Content-Length that you can examine to make decisions if you need to; the generalized io.Reader does not have that, either.

This all comes from the nature of HTTP itself. I tend to consider it a basic requirement for any web development environment that there be a way to correctly deal with an HTTP upload as a stream, and that the environment not "helpfully" unconditionally load the entire stream into memory for me.

</comment></comment><comment><USER26> Can someone follow up with more details on vendor for those not using go currently? What is the best practice for locking versions of libraries down. I am comparing this to gemfile.lock and shrinkwrap.json . Ty

<comment><USER25> There are multiple ways to do this. Personally, I've used and liked govendor [https://github.com/kardianos/govendor](https://github.com/kardianos/govendor).

As of go 1.5, its supported by the language itself: [https://github.com/golang/go/wiki/PackageManagementTools](https://github.com/golang/go/wiki/PackageManagementTools)

</comment></comment><comment><USER27> actually, for error handling, panic is a lot more like exceptions than exit. much like java, panic acts like throw, and defer/recovery like try/catch. and you can use it like that in the depths of your library, recovering from panics in your exported functions.

</comment><comment><USER28> I am constantly amazed at how people will find a way to fly to Mars in a bucket just so they don't have to learn how to operate a rocket :)

<comment><USER29> I'm constantly amazed at how people find a justification to fly a rocket just to get to the McDonalds a block from their house.

<comment><USER30> Obviously you need to spend more time playing Kerbal Space Program. Rockets are their own justification.

On a more serious note, I think that's just human nature - if you're invested in something - a technology, a stack, a business model, a car - you value that investment more than its worth, because it is yours. I think there's also an element of "I put in the effort to learn this, so damnit I'm going to use it".

Or just people like challenges.

</comment></comment></comment><comment><USER31> Loved the article!</comment>


Bionic Legs, i-Limbs, and Other Super Human Prostheses You'll Envy - <AUTHOR> http://www.fastcompany.com/magazine/142/super-human.html?partner=rss&utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+fastcompany%2Fheadlines+%28Fast+Company+Headlines%29&utm_content=Google+Reader <comment><USER2> Read the comments first, then the article. The comments are in stark contrast to the article itself.</comment>


How to Play WWDC Session Videos in Chrome? - <AUTHOR> https://www.kaushikc.org/how-to-play-wwdc-session-videos-in-chrome/ <comment><USER2> You can't stream them on Windows either. Apple has discontinued Safari for Windows and the last version released - v5.1.7, won't play the videos. I suppose the thinking is, if you're developing for an Apple OS you are likely to have Apple hardware. As the article mentions, you can always wait for the mp4 file to download.</comment>


Linux Containers, Docker, and Security - <AUTHOR> http://www.slideshare.net/jpetazzo/linux-containers-lxc-docker-and-security

<comment><USER2> Nothing here about crypto, and the risks of running crypto for two different applications on the same kernel (and with the same CSPRNG state) simultaneously.

<snark> But I'm sure if nobody's talking about it on Reddit, that must mean it's not a big deal. </snark> ;)

<comment><USER3> basically even if the container code was perfect (and its not) theres a bunch of desgin issues security wise due to sharing the same kernel memory space.

kernel bugs affect all containers for example

<comment><USER4> > kernel bugs affect all containers for example

Fun fact: BSD jails have same (mis)design.

<comment><USER2> It's weird to call it a "misdesign", since that attribute is fundamental to the concept.

</comment></comment></comment></comment><comment><USER5> I am terrified of containers. In 2012 I used lxc-destroy on a container, and it managed to destroy my entire filesystem. It seems beyond belief to me that something like that could happen, but it did.

Definitely unfair to bring it up at this point--it was a while back--but until everyone universally says they're solid, I'm not touching them.

<comment><USER6> Which filesystem? Host or container's? Either way, it's more likely that the fs was already corrupted in that case - did you also stop using that filesystem since then?

<comment><USER5> Host's. Stopped using it once destroyed, just ended up re-installing Arch and thanking the gods I had backups.

<comment><USER7> Wow. Any luck reproducing it?

EDIT: Anyway, it's probably an issue with the tooling around containers, not the implementation of kernel containers itself (well, in theory it might have been a bug in the kernel that corrupted the rootfs and you reported it here as it has destroyed your host's system).

</comment></comment></comment></comment><comment><USER8> The presentation makes a good point that containers aren't universally "insecure".

For certain use cases they are absolutely fine because the trust boundary between containers or the kernel isn't critical: * Deployment (immutable servers) * Development environment (develop against same configuration as production) * Test environment (try different distros)

But running multiple containers from untrusted parties on one host _is_ risky. Let's face it, kernel exploits do come out periodically and when that happens, container boundaries can be breached.

At the end of the day, security isn't absolute. You need to consider how valuable your data is and make your own decision.

</comment><comment><USER9> It's worth noting that libvirt puts an (LXC) container around each regular KVM virtual machine it runs, and will also secure it using SELinux (see: sVirt).

</comment><comment><USER10> Can someone comment on the current state of Namespaces in Linux and how that impacts LXC security? I found the following from 2012: [http://lwn.net/Articles/528078/](http://lwn.net/Articles/528078/)

<comment><USER11> The slides are horrible outdated. Using Linux user namespaces you can have a secure Linux container with a root within. And everyone who thinks that KVM is totally secure need to go back to school.

<comment><USER10> any chance you have a good resource showing how to do this properly?

<comment><USER11> Yes, use libvirt-lxc and setup a uid-mapping.

</comment></comment></comment></comment><comment><USER12> This is pretty much spot on based on my experience writing containers implementations. I have been putting together information documenting containers and just added some notes about security earlier.

At the moment i am taking my notes on how to secure containers and attempting to put them in a more digestible form unfortunately depending on what you are trying to do with containers the security model and how you defend those containers changes dramatically

if any one is interested in more info hit up [http://doger.io](http://doger.io) and feel free to ask questions or request specific information be posted

</comment><comment><USER13> Interesting to see this as just today I have decided to setup a new server with LXC.</comment>


What makes some people become more "mature" sooner than others? - grasp-the-world

Let's define being mature as "seeing the world with the eyes of a person with a lot of life experience and thinking and acting accordingly".
What makes some people be mature at a young age, such that they are better prepared for entrepreneurial endeavors, while others take longer to achieve it?
Would it be wise to attempt to "force" a young teen to attain such maturity at a younger age?
As an example we can think of a guy like Sam Altman. As PG said, at 19 he seemed to have a 40 year old inside him.
What do you think? Feel free to tinker with the definition as well. <comment><AUTHOR> Realizing the world doesn't revolve around you.</comment>


A programming-language-aware, refactor-ready merge tool - <AUTHOR> http://codicesoftware.blogspot.com/2013/04/put-your-hands-on-programming-language.html

<comment><AUTHOR> It is able to identify methods that have been moved and modified, totally reorganized classes, find conflicts at the semantic level and may more... hope it helps!

</comment><comment><USER2> Regarding the diagrams: Why Comic Sans?

<comment><USER3> Good call, monospace fonts (Consolas, Lucida Console) should have been better.

</comment></comment><comment><USER4> Can this be easily integrated into SVN, TortoiseSVN, and git?

<comment><AUTHOR> Yep! It is a client app so really easy. Once we go live (in a few days), we'll post the info about how to get it configured with every scm! :-)

<comment><USER5> Can you please send a git-mergetool patch to the git mailing list? This will save everyone the trouble of needing to discover how to configure it. Feel free to contact me offline if you need some pointers.

<comment><AUTHOR> Hi David, sure, I'll try to contact you and I'll send you the config info.

</comment></comment></comment></comment><comment><USER3> Will I able to use this with my git/mercurial installation?

<comment><AUTHOR> Yep, it can be setup to be used with ANY version control. We already tested it with Git, Hg, SVN, TFS... and it will be usable from P4 and others

</comment></comment><comment><USER6> What languages are supported? The examples look like C#?

<comment><AUTHOR> yep. we started with c#. java will be there too, later c/c++ and after all that it is a matter of listening to our users and react as fast as we can! :-) I'd love to have javascript soon too.

</comment></comment><comment><USER7> I'm really impressed, great work!

</comment><comment><USER8> I have to see it to believe it!

</comment><comment><USER9> Cool work! I'll give it a try.</comment>


Hazelnuts embedded with microchips used to study squirrels - <AUTHOR> http://www.latimes.com/local/lanow/la-me-uc-berkeley-squirrels-20170326-story.html <comment><USER2> Seems like researching how squirrel behavior and power line systems might be better designed to reduce squirrel related power outages:

[https://www.washingtonpost.com/news/wonk/wp/2016/01/12/a-ter...](https://www.washingtonpost.com/news/wonk/wp/2016/01/12/a-terrifying- and-hilarious-map-of-squirrel-attacks/)</comment>


Photo of Football Star Sitting with Boy Eating Alone at School Charms Internet - <AUTHOR> http://www.nytimes.com/2016/09/02/us/photo-of-fsu-football-star-sitting-with-boy-eating-alone-at-florida-school-charms-internet.html <comment><AUTHOR> This reminds me of a quote from Aesop: "No act of kindness, no matter how small, is ever wasted."

<comment><USER2> Reminds me of a crudely staged photo op that ticks the autism, race relations and high school iz a hell boxes. I'm not as well edumacated as you though.</comment></comment>


Sozi – The FOSS Zooming Presentation Editor - <AUTHOR> https://sozi.baierouge.fr/ <comment><USER2> This is a pretty good piece of software, I started using it when it was an Inkscape addon, the only problem I have is, in order to make simple edits like fixing a typo you need to open an external program.</comment>


Show HN: ScraperAI – Extract data from any website, detect changes - <AUTHOR> https://scraper.ai <comment><USER2> The website is a bit sparse on information about how it works. Anyway, not bad not bad. Would have loved a bit more info though.

<comment><AUTHOR> Hi There, thanks a lot for your feedback! More is coming as soon as possible!

</comment></comment><comment><USER3> How does this compare to Apify?

</comment><comment><USER4> Sooo where's the AI?

<comment><AUTHOR> The AI is in the background, working on unsupervised extraction ;)</comment></comment>


Scheme: Developing a Memcached Client - <AUTHOR> http://weblambda.blogspot.com/2009/09/developing-memcached-client-1-storage.html <comment><USER2> People who like the simplicity of the Memcached protocol will enjoy hacking a client library for the super fast Beanstalkd message queue.

<http://xph.us/software/beanstalkd/>

Sure, it's non-persistent and similar things could be hacked with the viciously fast Redis DB or other Key/Value DBs, but it's fun to telnet into a message queue and issue plain ascii commands :-P

<comment><USER3> > but it's fun to telnet into a message queue and issue plain ascii commands

You can do this with Redis too.</comment></comment>


Introducing CoVim – Collaborative Editing for Vim - <AUTHOR> http://fredkschott.com/post/50510962864/introducing-covim-collaborative-editing-for-vim <comment><USER2> This is really damn cool. It just comes too late for me. I have adapted to shared tmux sessions -- that allow me to work with _shiver_ the dirty emacs users.

<comment><USER3> same here, and tmux lets you share more than just your vim session. We use it regularly for pair programming, some times even in the same office, each one at his own computer.

I liked that coVim launches its own server, so you don't rely on having to ssh to the same box, but at the same time, I imagine ssh should be safer.

<comment><AUTHOR> What seems to be the key feature is the text coloring, which I don't think you can get using screen or tmux.

<comment><USER4> tmux supports 256 colors with the -2 flag. I just add an alias in my .bashrc to make this the default.

<comment><USER3> I think he meant having different cursors, each with a different colour assigned to a person, and being able to use each cursor independently. not just colours in general...

</comment></comment></comment></comment></comment><comment><USER5> Very very cool. I like their approach toward file management -- "we'll get the multi-user data into a buffer; you deal with it from there."

And now, of course, I'm wishing I had this before I switched my primary editor to SublimeText ;) Anyone know of a similar project for that?

<comment><USER6> Floobits works with Sublime Text 2 and 3, emacs and vim and a web editor and Google Hangouts and integrates with GitHub + a permission model and a shared terminal.

</comment></comment><comment><USER7> So it's like Floobits but for only one editor? <https://floobits.com/>

<comment><USER8> So Floobits is like this but it's somehow associated with a startup and doesn't have first-class support for vim?

<comment><USER9> Does "first-class" mean it has to be the only one that gets all features and imply all other editors are second-class?

</comment></comment></comment><comment><USER10> Too bad it doesn't use the Infinote protocol just like Gobby [1] and Gedit. That way, everyone could use their own editor while working on the same document.

[1] <http://gobby.0x539.de/>

<comment><USER11> It's a bummer, but it isn't the CoVim authors' fault that the Gobby developers chose irrelevance. [http://git.0x539.de/?p=infinote.git;a=blob;f=COPYING;h=b124c...](http://git.0x539.de/?p=infinote.git;a=blob;f=COPYING;h=b124cf581250c210960185e8fbf6c967a0538721;hb=HEAD)

<comment><USER12> I don't understand. You've linked to a copy of the LGPLv2.1 in infininote's git repo. Are you saying that their choice of licence primarily caused their product to be less popular?

<comment><USER11> No, I'm saying that it precludes it from being an obvious choice for a standard, since implementing that type of protocol isn't simple and there are editor writers who don't want to integrate LGPL code.

<comment> qu4z-2 Surely if it's LGPL you can just link against it, no?

</comment></comment></comment></comment></comment><comment><USER13> I was really hoping, based on the title, that this would be a coeditor which types code to you.

</comment><comment><USER14> With CoVim, do all the co-editors see the same screen, or can they view different buffers?</comment>