Interviewing for a JavaScript Job - <AUTHOR> http://raganwald.com/2015/02/21/interviewing-for-a-front-end-job.html <comment><USER3> I loved this post and also the HN comments, which show a wide variety of interpretations.

My interpretation is that the article satirizes modern JavaScript development _and_ startup culture, both of which are heavy on sizzle but lean on steak. It skewers the interviewer, who "intones" a highly refined question that's totally disconnected from the actual content of the position. But it also skewers the candidate, who happily provides an elaborately over-engineered solution that shows off "modern" JS development practices.

The candidate and interviewer learn nothing from each other, but we are left certain that, if hired, the candidate's chief legacy will be a GitHub repo of a JavaScript MVC templating micro-framework that leverages JQuery and Backbone and...

<comment><USER4> What is over engineered about his design ?

It's actually well designed.

<comment><USER5> I would just have used a position hash map and be done with the problem in 30 seconds. His solution is definitely heavily on the over-engineered side of things.

If somebody would pull something like the author in a interview, I would surely be impressed but it would be a read flag if it is really the way it handle simple problems like this on a daily basis.

<comment><USER6> there is the detail that if the interviewer wants it to be a constant-space mechanism, that you'll want to use the linked-loop cycle detection algorithm

<comment><USER7> The interviewer requires for a solution in finite time and space, and explicitly says that the size of the chequerboard is unknown but finite. The constant space requirement is totally made up by the interviewee.

Also, the code is a bit muddy to me, but it seems (please tell me if I'm wrong) that the proposed solution requires being able to move _two_ separate pointers on the chequerboard. If this is true, note that the specification of the problem is

"A chequerboard is _hidden from us_. A player (note: a _single_ player) moves the chequer one square _and calls out the move_ ".

For how the problem is stated, there is no chance of moving two separate pointers along the chequerboard. The list of moves could be streaming through a web service, so in order for the tortoise to move at half the speed of the hare, we'd need to remember in an array all the moves that separate the tortoise from the hare, making it for a solution equivalent to the plain and readable one.

So it sounds like the zealous overengineering somehow (in fact through the usage of iterators) brought the interviewee to a solution that's plain wrong with respect to the given requirements. Where did I see that before? :)

<comment><USER8> This is why a more interactive interview is useful. Christine could ask politely, "How would this work if you were given a streaming web service, instead of an iterator that you could restart? What would you change?"

It would be interesting to see if The Carpenter threw the whole thing out, or simply wrote a memoizing cycle detector in place of the last step. That could lead to a discussion about separation of concerns.

<comment><USER7> Apparently Christine failed to notice that the code doesn't respond to the requirements as they're laid out. She would have at least had a better reason for rejecting the Carpenter: she could have said "writes unreadable code that doesn't even respond to requirements".

However, the fact that Christine couldn't even tell that the code was not working reinforces the correctness of her hunch: hypnotized by the unreadable code, neither her or the interviewee could see clearly that it wasn't fit for the intended purpose. And this is clearly a serious issue.

I agree that an interview should be more interactive than that, but one could easily blame the Carpenter for having transformed the answer to a simple question into a long monologue that lead nowhere. I can't help but feeling he got what he deserved, although I'm afraid that, in the real world, his confidence and command of technicalities would have gained him the job on the spot.

<comment><USER8> Let's not fall into the common trap of assuming that blame is a zero-sum game. I have no problem blaming all three of the participants for what happened here.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER9> I'm obviously way behind the times here, but... what the heck have they done to Javascript?!

Anyway... the worst case run-time of any algorithm I think is size-squared -- you have to look at every square. If you ever touch the same square twice, since the state of each square is constant, you have a loop. Therefore, either you use a bitmap to see if you've been there before, or just check if a move counter is greater than size-squared.

If someone spent an hour discussing this problem in an interview, even if it seemed intelligible, honestly I doubt I would want to pursue it further.

<comment><USER10> The question starts with: "Consider a finite checkerboard of unknown size", which means you don't know the value of size-squared. Bitmap requires O(n) space, while the Carpenter's solution requires only O(1) space. And both require O(n) time. If an interviewee failed to see the difference, honestly I doubt I would want to pursue it further.

<comment><USER11> "size" is perfectly known in the code. Before shooting off into functional rearchitecture land, a simple common sense question like "by unknown you mean arbitrary, right?" would have been more sensible. In addition, the candidate thinks "being asked to whiteboard code was an excuse to have a technical conversation with a future colleague" but spends the entire time having a monologue rather than a conversation, and seems pleased about it.

</comment></comment></comment><comment><USER12> 1) We will also need to hire a 'pretentious <-> English' translator just to communicate with this guy. He's probably also very opinionated and difficult to get along with.

2) His state-of-the-art code won't work on any of our deployed systems without lengthy and expensive upgrading or backporting.

3) We'll have to get all of our clients to upgrade their systems, or spend a ton of money and time adding compatibility layers.

4) None of our other developers will be able to maintain his code, and hiring someone to replace him would not be easy or cheap.

5) If we need to hire a 3rd-party agency for something, they wouldn't be able to work with him or his code either. It could cost us a fortune.

He may be brilliant, but basically, we'll have to treat everything that he does as disposable, just as we would with a clueless newb who knows nothing about programming. And we can't entrust him with anything important.

<comment><USER8> The story is really about what's wrong with this process. You say the candidate should have written production code. And yet, this isn't a production problem, it's a made-up CS101 problem. How does it make sense to ask a CS101 question, but not accept a CS101 answer? Likewise, how does it make sense to give a CS101 answer without knowing what the interviewer is looking for in an answer?

How do we know this is the code this person would write in production if we don't give him a real-world problem to solve and ask him to solve it in a real-world way?

If it's legit to assume that this person only knows how to write theoretical code from one answer, it's also legit to assume that the company only has theoretical problems to solve from one question.

In reality, it's insane to presume anything from one answer. If you want to know what this person writes in production, you ask about that. This is an experienced programmer being interviewed, how does it make sense to terminate the interview after asking one poorly-given question?

Really, this is about a failure to communicate on both sides. For questions like this, if you don't make it clear what you are looking for, you aren't really testing their technical competence, you're testing their ability to guess the answer you're looking for.

Likewise, if you aren't given clear guidance about what kind of answer the interviewer is seeking, your responsibility is to ask for guidance, not to rush off and give the answer you think suits your agenda for showing off or for sparking the conversation you want to have.

Failing either or both parties actually talking to each other, this isn't a technical question at all.

<comment><USER13> "if you don't make it clear what you are looking for, you aren't really testing their technical competence, you're testing their ability to guess the answer you're looking for"

^ +1

Google stopped doing this for a reason. Give people real problems to solve, then dive deep on their answer. Unless you're interviewing for an algorist, this is a waste of everyone's time.

</comment></comment></comment><comment><USER14> I personally think the answer here is fantastic. It shows several important things: the candidate keeps up to date with the tools, he thinks about problems formally and systematically, and has a solid grasp of theory. Not only did he decompose the original template into one that leverages existing utility functions, but written the solution in a mostly functional way where mutable state is localized in specific functions. You can easily extend his solution with more analyses.

The interviewer asked a simple question designed to screen the clinically incompetent, and this guy used it as an opportunity to show the extent of his skills and knowledge, _which is the whole point of an interview._

<comment><USER15> I hope I never get to work with someone like the carpenter.

<comment><USER16> you're missing out. I hope to be the carpenter's apprentice!

</comment></comment></comment><comment><USER17> Unless I'm being thick, I think the point of this parable is to question the developer, not the interviewer.

Despite using a bunch of fancy new language feature, name-dropping Knuth, and describing the solution for an hour, the result is code with no additional benefit and significantly worse maintainability.

Sometimes being smart doesn't have to look so smart.

<comment><USER18> Looking at the previous posts by this author it looks as though he's got a very specific interest in playing with JavaScript language features.

So I'm guessing this wasn't ever a real situation, just a fantasy story about how he'd love for an interview to play out.

<comment><USER8> And yet... At the end of the story, all three participants (recruiter, company, and candidate) have failed to get what they want.

Somehow, this does not come across as a fantasy being played out, more of a cautionary tale.

<comment><USER19> In the story, the very next day The Carpenter got a generous contract from FOG, a stealth startup doing very interesting work, and promptly forgot all about Thing. It sounds like he got exactly what he wanted.

<comment><USER8> That might be a red-herring. When times are good, people get positive reinforcement for doing bad things. Thing might hire the next programmer, and the Carpenter gets the next job, and everybody assumes that the right best way to conduct an interview is for both people to "flip the bozo bit" on each other as soon as possible.

Then when it becomes hard to find good people, Thing suffers because they are too quick to reject people based on one answer. And if the Carpenter finds there are few jobs that suit his criteria, he has trouble getting one with the style of answer he tries to jam into every question.

That's a bit of a metaphor for how many (but not all) companies become internal shit-shows in tech. They get a lot of positive feedback (raising money, adulation from HN) for their tech, but meanwhile are terrible managers.

It takes great discipline (and possible great mentoring) to say to yourself, "things are going well, but what am I doing wrong that I just happen to be getting away with?"

<comment><USER19> You bring up a good point, but it's not one supported by the text of the story. Perhaps that's _why_ it's a good story: everybody reads into it their personal experiences and assumes it means what they want it to mean.

FWIW, the meaning I took away from it is "Well, this is a cool way of looking at things. Some people will run away screaming, some people will appreciate it. If you want a happy life, find the people who appreciate it and don't worry so much about the people who don't see things your way."

</comment></comment></comment></comment></comment></comment><comment><USER20> This boiler plate code seems pretty bad to me. It is almost as if it was designed to trick candidates by giving them access to data they aren't supposed to use.

The problem clearly states "The game board is hidden from us" yet the boiler plate code gives a developer access to the size of the board as well as the current position. It is as if the interviewer asked carpenter to solve problem A then gave him boiler plate code for problem B.

</comment><comment><USER21> Perhaps not unreadable but definitely way overly complex. I'd be much more happy with the 2-4 line solution that is obvious and move on to another question or work on then optimizing that for performance time or memory size.

<comment><USER22> The candidate did not "optimize it for performance time or memory size".

I love how the candidate integrates a lot of ES6 features and even basic algorithms into this. I would kill for candidates like this when I interview. It doesn't only show that they keep updated in the field which is important on its own - it shows that they understand the fundamentals.

When I'm interviewing I _am_ interested in seeing this in a candidate. At the end of the day the candidate _did_ solve the problem.

<comment><USER23> The candidate may have solved the problem, but failed the task.

At the outset, the interviewer placed a premium on time which the candidate ignored. The candidate made assumptions that the question was contrived therefore the solution offered was simply a place to make speaking points as well as test the interviewer's code literacy and as a result, spent the entire interview rewriting the system rather than filling in the blanks and moving on as asked.

Did the candidate prove adequate experience? Sure. But at the day of the day, I feel the interviewer made a very reasonable decision to dismiss the candidate based on the fact that the response ignored the implied time constraint for the sake of adding superfluous nonsense.

If I ask someone to fix a simple bug in some of my code and come back to see the code completely rewritten, 3 times the length with prince of darkness and tortoise and hare stuff mixed in, that would likely be the last time I ask them to touch my code.

<comment><USER24> I don't see any mention of time constraints, except for "to save time, we have written some boilerplate for you". I wish my prospective employer clearly communicated key constraints like this.

If I were the candidate, though, I'd first explain the idea of the solution (takes half a minute), then discussed ways to implement it (a minute or two), then went with a particular solution (counter, bitmap, two chasing indices, etc). I'd keep feedback from interviewers constantly flowing.

<comment><USER25> Well, it's an interview. As both an interviewer and interviewee, you should be respectful that time is finite.

</comment></comment></comment></comment></comment><comment><USER15> I'm surprised why no one has mentioned the fact that the recruiter hinted the candidate and that the candidate could've prepared that convoluted answer beforehand. I would've certainly not hired him. Also, it is stupid to measure if a candidate knows some graph algorithm that you learn in CS 101 or some new js features that no one in their sane mind would use in prod, you should probably be more worried about thought process, concepts of modularity, maintenability and experience.

<comment><USER26> Third-party recruiters will often hint these types of things, because it gives the candidate a better chance of success.

After you interview, they will ask what you talked about and what kinds of questions you were asked. This allows them to keep track of how the company is interviewing, and to give the next candidate more information about what to expect.

This will mean that the recruiter doing so will have a potentially higher rate of success than a recruiter not doing so, since the candidate has this benefit.

Honestly, it's a pretty good thing. It's just good recruiters exploiting bad interviewers. It's better to design your interview around each candidate instead of recycling the same comp-sci questions that you heard in college over and over again.

Companies are really just testing how often people interview in most cases, but don't realize how bad the process is. They are using the same questions that every other company uses instead of creating their own, and it usually doesn't find good candidates as much as it finds people who memorize interview questions.

</comment></comment><comment><USER27> I felt dumb not recognizing const, let, or the fat arrow as javascript constructs...

Are they Firefox only? Or is Firefox the only one shipping the new standard? All my Googling only gives me Mozilla results; I do JS full time and haven't heard of these.

<comment><USER28> A nice set of slides explaining es6 syntax.

[https://speakerdeck.com/rauschma/using- ecmascript-6-today](https://speakerdeck.com/rauschma/using-ecmascript-6-today)

</comment></comment><comment><USER29> This article is a little weird. First we have this guy, who despite his experience "makes" the mistake of saying he can show something on the whiteboard. Why is that a mistake?

And then we have this guy Bob - he coaches people what kind of questions they are asked at a given interview. So he is letting people get jobs which they might not even be suited for.

I hope it is satire, as mentioned somewhere else.

</comment><comment><USER18> I would just leave if this actually came up in a real interview.

<comment><USER30> This sort of thing deters me from interviewing in the first place.

</comment></comment><comment><USER31> And all of that because he didn't notice that requirement was finite space not constant space.

If someone asks you to buid a shed and you build space station then put it on their backyard for them to keep tools in don't be suprised that the answer you'll get is "We're not gonna pay for that".

Anyway nice short story. Pleasent read.

<comment><USER22> The protagonist didn't build them a space station - they have effectively shown understanding of the problem by reducing it to the problem it really is (cycle detection) showing them he understood the idea and not just how to solve it while using modern tools and correct abstractions (sequences, really).

It's especially "provoking" since the author mentioned it was a Python shop and Python is _full_ of these - a lot of lazy sequences and generators all around and a community that understands them well too.

<comment><USER31> Except that it's not about cycles detection in a linked list. It's about thing as simple as 'if I am where I have aleady been then I'm screwed'. You just need to remember stuff and recall it as quickly as possible, so hashmap. It's finite because size of the board is finite. End of story.

His solution is just worse. His solution is slower because he picked inadequate data structures and he used algorithm for finding cycles that's only interesting because it can operate in fixed space but it's use is totally stupid because he constructs the linked list himself and that takes in worst case amount of memory proportional to number of fields on the board.

It's a task you can figure out just by thinking few minutes about the problem without any prior knowledge so a good test question for checking your ability to think.

The only reason you might come up with the solution OP presented is if you were told to 'do it as if js was haskell or something'

<comment><USER8> Where does the solution given use On space?

<comment><USER31> Sorry. My mistake. It doesn't. It cheats its way out of it by running game twice instead. That's why it needed to turn Game into iterable or at least generator function not just a generator intance.

<comment><USER8> Not to worry. I have it on good authority that the author thinks all three fictional parties are at fault.

</comment></comment></comment></comment></comment></comment><comment><USER31> Is there a point there to returning object with generator in the [Symbol.iterator] property instead of just the generator itself?

<comment><USER22> Generally? Yes, for example for an array like data structure it would make sense to have methods on the data structure and make it iterable by providing a `Symbol.iterator` - in this case it can be avoided a generator is just a function that returns an iterable sequence (i.e. a sequence using the new ES iteration protocol) so usage would be different - you'd invoke it in a for...of instead of just iterating it.

<comment><USER31> General usage I get. I just don't see the point of using it in this example. Everything else can be explained by 'I wan't my data structures to be immutable and lazy'.

Symbol.iterator just seems like purposeless showing off.

As for your last point, you wouldn't have to invoke in for...of if you returned generator instance, not generator function from your code.

<comment><USER25> > Symbol.iterator just seems like purposeless showing off.

That's the point.

</comment></comment></comment></comment><comment><USER32> I feel like this is a roman à clef and I'm missing the clef.

What's the story with the repeated John Carpenter references?

<comment><USER22> I think that this is the correct reference [http://ntraft.com/the-carpenter- and-the-engineer/](http://ntraft.com/the-carpenter-and-the-engineer/)

<comment><USER33> > Some time later, The Carpenter ran into Bob Plissken at a local technology > meet-up. "John! What happened at Thing?" Bob wanted to know, "I asked them > what they thought of you, and all they would say was, Writes unreadable > code. I thought it was a lock! I thought you'd finally make your escape from > New York." > The Carpenter smiled. "I forgot about them, it's been a while. > So, do They Live?""

The character's name is "John, The Carpenter".

bob plissken - [http://en.wikipedia.org/wiki/Snake_Plissken](http://en.wikipedia.org/wiki/Snake_Plissken) the thing - [http://www.imdb.com/title/tt0084787/](http://www.imdb.com/title/tt0084787/) escape from new york - [http://www.imdb.com/title/tt0082340/](http://www.imdb.com/title/tt0082340/) they live - [http://www.imdb.com/title/tt0096256/](http://www.imdb.com/title/tt0096256/)

FWIW, I don't get the connection to javascript interviews either.

<comment><USER34> Let's not forget Assault on Precinct 13 (www.imdb.com/title/tt0074156/) and Christine (www.imdb.com/title/tt0085333/) :)

<comment><USER35> They Live is a Carpenter movie in which aliens in invisible pizza masks - <USER2> can see them if you have special magic shades - live among us and control us.

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

And of course there's The Thing, which does an excellent job of explaining why you should you never allow important data to be mutable.

</comment></comment></comment></comment></comment><comment><USER36> You know what. Criticisms and thoughts of this article aside, I do love thinking about problems, and solving problems.

I feel gratified to get the jump from looping -> halting problem, (though the author obviously telegraphed it), and though I found the implementation he provided to be a touch over engineered, I did enjoy walking through with him.

I agree with the majority of HN, but to be candid, I think I would of enjoyed being in Christine spot.

</comment><comment><USER37> I read this as a parable about abstracting & decomposing problems, and how lazy evaluation makes it easier. Also, about how you can write Haskell in Javascript.

</comment><comment><USER38> So how would the expected answer look like?

1\. Create an array of visited squares

2\. Return false if square has been visited before, add current square to visited

3\. Return true

Would this be correct?

<comment><USER4> Sort of. Store the squares in a hash map with the value used to indicate whether you've already seen it.

</comment></comment><comment><USER39> The code here repeatedly defines functions which return an object with only one property, with the name being Symbol.iterator and the value being a generator function. Is there a reason to do this, rather than just writing a generator function directly?

<comment><USER22> Well, you can't iterate a generator without invoking it. If you returned a generator you can't `for(let x of myGeneratorFn)` because it's not an iterable - rather a generator is just sugar for a function that returns an iterable. You'd have to do `for(let x of myGeneratorFn())` although in this case I agree it's silly to return it like this.

<comment><USER31> He couldn't return generator instance because he needs two instances of game running at the same time for the tortoise and hare algorithm to run in const memory.

He would need to return at least generator function but that would force him to invoke it before iterating.

</comment></comment></comment><comment><USER40> If you engineer a solution for a terrible game and no one actually plays the game, does a problem really exist?

</comment><comment><USER41> Hey I think this should be called "Interviewing for a JavaScript game developer job". Asking people to implement a game as a test to see if they know JavaScript is in my honest opinion not the best way to probe a person.

<comment><USER42> They didn't ask him to implement a game. The game board was a metaphor for an arbitrary network of states.

<comment><USER43> If you're trying to solve this problem in JavaScript and it's not a game then I think you're doing something wrong(ly).

</comment></comment></comment><comment><USER44> _" Writes unreadable code."_

Code is meant to be executed first, read second.

Programmer A's reply was a terse, when Programmer B commented on some piece of code they couldn't understand. _' I can't read it, what does this do?'_

Code and its readability wasn't the problem.

<comment><USER45> > Code is meant to be executed first, read second.

Knuth would disagree, as would anyone who had to maintain code...ever. Nowhere in the convoluted answer, did the carpenter explain the conceptual strategy of the solution. At least, that would have gotten a discussion going by replacing ??? with a comment. Instead they just chose to pontificate random aspects they considered important on a path that only they knew, assuming their approach was optimal (which it is not). That's pretty useless at any company.</comment></comment>


A Better Way to Track JavaScript Errors - <AUTHOR> http://trackjs.com/blog/better-way-track-javascript-errors/ <comment><USER2> While I appreciate a need for "Error Logging as a Service", I really wish all of these kind of tools were open and could configured for logging back to our own servers without needing to access anything else in the "cloud". Building LoB web apps that are often accessed from heavily firewalled networks makes these tools, unfortunately, useless.

<comment><USER3> Sentry: [https://getsentry.com/welcome/](https://getsentry.com/welcome/)

It is good.

Easy to deploy internally. Python server, client libs for basically everything, plugins to chat apps, issue trackers, you name it: [https://github.com/getsentry/sentry](https://github.com/getsentry/sentry)

The JS reporting supports source maps too.

<comment><USER4> I'm a fan of Sentry, and their hosted service is very affordable. The fact you can push data to it on your own terms is great. I use it in combination with Logstash as an output, so any logged errors reaching Logstash are automatically piped to Sentry.

As a bonus, should you wind up deploying Sentry internally, you need only update the API host in Logstash.

</comment></comment></comment><comment><USER5> This is aweesome! I've played around with the idea of building something like this in the past, and have always shied away because of the complexity. Well done - it looks super useful.

One minor critique: Can you refer to yourself as "track.js" or "TrackJS" instead of {Track.js}? You're going to drive me nuts if I have to type curly braces every time I mention you somewhere.

</comment><comment><USER6> Saw their presentation at Iowa Code Camp last year and I was really impressed.

Unfortunately, at the time, they had no plans to support source maps. We exclusively use minified JavaScript in production. Seems like not getting a proper line number or filename in a stack trace would be a huge hindrance to debugging.

</comment><comment><USER7> Hopefully there's also a good way to track backend errors, because I'm getting this:

        Error establishing a database connection

<comment><USER8> We are working on getting it back up ASAP, in the meantime you can also check out [http://trackjs.com](http://trackjs.com) which is just static files. (The blog is of course wordpress)

(Edit: After kicking MySql things should be back - also, the rest of our application does not use MySQL :))

<comment><USER9> The CSS is still not loading for me.

<comment><USER10> same here on firefox. On Chrome everything loads well though.

</comment></comment></comment></comment><comment><USER11> As an alternative, Sentry also has a JS client [1], but is not limited to it, so you can centralize all error reporting in one tool.

[https://www.getsentry.com/for/javascript/](https://www.getsentry.com/for/javascript/)

<comment><USER12> Paul Irish has a list of alternatives at [https://plus.google.com/+PaulIrish/posts/12BVL5exFJn](https://plus.google.com/+PaulIrish/posts/12BVL5exFJn), but I really don't think any of them compare to this (TrackJS). So while I think everyone should be doing client-side reporting and evaluating all the options, I suspect TrackJS just brought this to another level (think awstats vs Google Analytics)

</comment></comment><comment><USER13> I like this approach a lot. If this works in IE, I'm basically sold.

I do have a few questions that went unanswered, though:

\- What's the performance impact, both in terms of initial page load and in terms of tracking stuff.

\- How big is the buffer of "events" in the timeline?

\- You charge per hit. Is there a way I can load the javascript from my own CDN? Does it ping your server upon load?

\- What prevents somebody from going to my website and triggering a large number of "hits"?

<comment><USER8> Eric from TrackJs here.

1) The performance impact should be functionally negligible. We do instrument a few of the lower level base JS objects but it's all very lightweight. We have not noticed any performance issues thus far. That said, we have some new features coming and we will make anything potentially performance impacting opt-in

2) the buffer of events is currently the latest 10 events from the console, network, and user interaction, for a total of 30. We are looking at modifying this.

3) You can certainly bundle our script, we use the same technique Google Analytics does to capture hits.

4) Nothing, although we currently don't have hard caps and would certainly be in communication with you if you were concerned that was happening!

<comment><USER13> Thanks, I look forward to giving this a shot soon :)

</comment></comment></comment><comment><USER14> Your script name is tracker.js which is not the best name as adblockers/privacy blockers simply block any names with the word track and many other similar names. If you name your script something else that is not blocked it would enable it to run, and be valuable to see the errors that users get when they block other js on a page.

<comment><USER15> You can host the file yourself and name it anything you wish.

</comment></comment><comment><USER16> I searched trackjs.com for minify or minified or "source map" and nothing comes up.

So my question will Trackjs work with Javascript code output by Google's Closure Compiler? I have tried Tracekit in the past and other similar Saas services for client javascript error logging and nothing seems to work with minified source produced by Closure compiler. Unfortunately, I can't do without Closure compiler and minification.

edit : typo

<comment><USER17> Rollbar.com works very well with minified JS from closure compiler. I have that setup in production. Also I find Rollbar does a better job of lumping errors together so that you can more easily scan for new errors. There is a lot of noise in JS errors and the grouping algo is just as important as each error's actual report.

</comment></comment><comment><USER18> We have used Track.js for many months to track JS errors in our production application and it is truly key to helping me and our CTO be aware of any client-facing issues that exist, recreate/fix those issues, and sleep well at night. I also know the founders personally and they are extremely skilled developers with deep expertise in Javascript and the DOM and I have no doubt they will continue to innovate and give us even more bang for our already well-worth-it buck

</comment><comment><USER19> Full disclosure, I run product at [http://airbrake.io](http://airbrake.io).

We've always had high demand for Javascript error reporting. We've been slowly building out a new notifier which address the importance of page load and capturing errors without blocking the page load. [https://github.com/airbrake/airbrake- js](https://github.com/airbrake/airbrake-js)

One of the main problems is clients / IE, not only on how they throw errors but also standards of source-map support and standardisation of how errors should be handled.

I welcome trackjs and all over javascript errors to come together to help make it better for all developers. I'm not sure on actions yet but NewRelic has started to do great work in the Node space already.

@ToddGardner! We wish you the best of luck, the app looks great.

<comment><USER20> Last time I tried to run airbrake-js, the airbrake script itself was throwing errors in IE8. The github repo says nothing of browser support. Would love to know if this is still the case.

</comment></comment><comment><USER21> I applaud this effort and it is a step in the right direction for JS app error tracking, but it is a half-measure: we need to get to the point where frontend frameworks track this by default, post back to a common server endpoint, and then that error report is emailed to the dev/admin list

<comment><USER22> That does not make any sense. I don't expect Angular, for example, to tell me when I have a syntax error. Also, things are rarely so clean in browser-land, anyway. Just because you have a framework doesn't mean there's not another parallel framework on a page, or plugins that don't need a framework, etc.

<comment><USER21> I expect a framework that runs remotely to have a way of remotely notifying me of errors. Anything less is not a full stack.

</comment></comment></comment><comment><USER23> I've been waiting for the kick in the pants to finally add js error tracking.

This looks great. At my previous company, I set up Errorception ([https://errorception.com/](https://errorception.com/)) and it was a good step, but I'm excited by the production-side logging possibilities that track js offers, and the timeline feature.

I've just now added it to my current company ([https://zoomforth.com](https://zoomforth.com)), and would be happy to report later on how it works out!

</comment><comment><AUTHOR> Wow everyone, thank you so much for your support! Your comments and ideas have been amazing and positive. We're thrilled to be making an impact and to help make the web better.

Thanks HN, you're awesome.

</comment><comment><USER24> On the one hand this looks nice, on the other hand it is a shame that something like this is needed at all. Most of the errors I see in the wild are type errors and the industry has just failed to offer a good solution when JavaScript took off. I really hope there will be a lot more adoption of technologies that solve the problem instead of treading the symptoms in the future, for example new ES6+ features, JavaScript supersets like TypeScript or trans-compilation like GWT.

</comment><comment><USER25> will check after some time ( when db error is fixed ) , looks interesting from the home page..

side note: before posting on HN, its a good practice to see how much load the site can handle .

some easy to use tools : \- [https://loader.io/](https://loader.io/) ( ref link : [https://loader.io/s/kXCLA](https://loader.io/s/kXCLA) )

\- [https://www.blitz.io/](https://www.blitz.io/)

</comment><comment><USER26> I really like the idea of a telemetry timeline to show exactly what was going on when the error happened - like a well informed stack trace.

<comment><USER8> Thanks! The idea came from the fact that even when you _do_ get a stack trace from a javascript error, it wasn't always that helpful :)

</comment></comment><comment><USER27> I just noticed this is the script link:

        /releases/1.2.2/tracker.js

Is it a good idea to have the version number in there?

As won't that mean you'll never be able to update your customers with new versions of the script?

Nice product though, looks great, easy to use.

EDIT: Seriously, this product is awesome, amazing UI, easy to use. Try it out.

<comment><USER8> We went back and forth on this. We orginally just had /current/tracker.js but lots of folks feel weird about running potentially changing scripts on their production sites :) in the end we decided it was probably best to version it and let people upgrade as they see fit. Obviously the backwards compat is a little more work for us, but we felt it was a better choice overall. (You can also bundle our script)

<comment><USER27> Yeah, saw the bundling, nice touch. Though doesn't that mean any compilation problems won't get logged? Do I gain anything if I leave it unbundled but serve it myself (1 less DNS lookup I guess?)?

Also, really nice, simple reset process.

In fact, I'm very impressed with the UI so far, it's a dream to use, excellent get started documentation and it ended up taking me very little time to find the reset.

<comment><USER8> Thanks! Despite the fact that we all come from heavy client side rendering backgrounds, you'll find the bulk of our UI is server side rendered :)

Re: compilation errors - It depends on where our script is concatenated in the bundle to an extent. For best results we recommend putting it as the first thing in the bundle.

</comment></comment></comment></comment><comment><USER28> I've been using TrackJS for several months (Oct of last year I think) on personal project and I also introduced it into the products that I develop at Pearson VUE. It has been rock solid and extremely helpful. We attempted a home grown version before switching to TrackJS and we are much happier now.

</comment><comment><USER29> Hmm I'm skeptical about the reliability of this especially on older browers.

Does it track these events basically in an order? JavaScript is single threaded in the browser so multiple reschedulings could easily hit different objects and events unrelated to each other.

Looks interesting nonetheless.

</comment><comment><USER30> Very cool. Can you pass arbitrary parameters to the tracker? For instance, could I somehow pass in the user's id, and have that show up on the page? That way if he/she gave me a call and said something went wrong, it'd be easier to pin down.

<comment><AUTHOR> You can specify the user id and the session id (these are just arbitrary strings you can set to whatever makes sense in your application)

Arbitrary key/values and filtering these values is coming soon as well.

</comment></comment><comment><USER31> Need to look into this more, I did something like this in the past with window.onerror which then set the error to our site so we could monitor javascript errors on client machines. Worked well enough, but yours looks a tad more polished than my attempt!

Good work!

</comment><comment><USER32> Seems like a souped-up version of [ErrorBoard]([https://github.com/Lapple/ErrorBoard](https://github.com/Lapple/ErrorBoard)), which is cool, but also means I can roll my own. Nice work.

</comment><comment><USER33> This is super cool. Tools that capture errors on the user's end are invaluable. In an ideal world, the user would never experience errors, but I haven't lived in that world yet. Can't wait to see how this evolves.

</comment><comment><USER34> I wish your blog post picture showed us the stack trace tab. With the screenshot you used, I don't see how that could help me debug my typical client-side error. What I usually need is a stack trace.

</comment><comment><USER35> This seems promising, however you might want to provide some interactive demo if you want more signups. And make it clearer that there's a free trial. But again, looks very good and I might use it.

</comment><comment><USER36> It says it's a 30 day trial. I looked but couldn't find any pricing on the page. Can you please let me know your pricing?

<comment><USER37> Not sure why you couldn't find pricing. They have a big button at the top of their page that says "pricing". [http://trackjs.com/pricing](http://trackjs.com/pricing)

</comment></comment><comment><USER38> How does this work for internal applications?

I looked through your site, and couldn't find any documentation without creating an account.

</comment><comment><USER39> I love this! Added it to use on [http://play.freeciv.org](http://play.freeciv.org) now.

</comment><comment><USER40> There's also rollbar.com but I like how this tracks user events to give errors more context.

</comment><comment><USER41> Wow, I'm impressed with the detailed events tracked before the error.

</comment><comment><USER42> How does this work for 3rd-party scripts?

</comment><comment><USER43> Looks very promising, I'll give it a try!

</comment><comment><USER44> Username, password and email to sign up for an account for a service that doesn't need any.. No thanks.

<comment><USER45> I don't see where they're asking for a Username. Their signup form looks bare minimum to me.</comment></comment>


Basic theory of expander graphs - <AUTHOR> http://terrytao.wordpress.com/2011/12/02/245b-notes-1-basic-theory-of-expander-graphs/ <comment><USER2> This looks like it's from a special topics course Terry is teaching at UCLA:

<http://www.math.ucla.edu/~tao/254b.1.12w/>

The course description says the course assumes a familiarity with graduate- level mathematics.

These notes in particular look more accessible than that to me, provided you are willing to stop and research definitions.

This is an especially good find for several reasons. Terry's explanations are excellent, he rarely writes at an introductory level, and expander graphs are quickly becoming a central topic in math and computer science.</comment>


A small asteroid (~5 m) will hit Sudan on 2008 Oct 07 0246 UTC - <AUTHOR> http://tech.groups.yahoo.com/group/mpml/message/21074 <comment><USER2> Poor headline. It might hit Sudanese _airspace_ , but not "Sudan" as in the land forming that country. It might not even high Sudanese airspace, as it'll burn up in the "upper atmosphere."

<comment><AUTHOR> Agreed.

 _"hit Sudan"_ is not as precise as _"hit Earth this morning, Oct. 7th, and exploded in the atmosphere over northern Sudan."_ <http://www.spaceweather.com/>

</comment></comment><comment><USER3> See this press release: <http://www.cfa.harvard.edu/press/2008/pr200819.html>

</comment><comment><USER4> For a moment I thought "~5 m" meant that it was going to be around 1/3 of the "15 m" asteroid that hit earth and caused dinosaurs to go extinct.

<comment><USER5> Explain, for us astronomically-challenged, please?

<comment><USER6> This little asteroid will be 5 m(eters) in diameter, quite a lot less than 15 m(iles) in diameter. :)

Note that if we're talking about the asteroid that created the Chicxulub crater, most references seem to have the size a bit smaller, ~6 miles in diameter. Still, that's a big rock.

<comment><USER7> Remember the story about the NASA-engineers who mixed up imperial and metric units?

<comment><USER8> The US doesn't use imperial units.

<comment><USER7> Sorry. I meant to reference the loss of the Mars Climate Orbiter (<http://lamar.colostate.edu/~hillger/unit-mixups.html#mco>).

</comment></comment></comment></comment></comment></comment><comment><AUTHOR> A little animation <http://www.astronomy.ru/forum/index.php?topic=45265.0>

Minor Planet Electronic Circular <http://cfa- www.harvard.edu/mpec/K08/K08T50.html>

</comment><comment><USER9> Anyone know if this is something of significance, or is this just going to put a little hole in the ground?

Aside: Poor (people of) Sudan. Like that country needs more issues.

<comment><AUTHOR> "It is very unlikely that any sizable fragments will survive passage through the Earth's atmosphere." <http://neo.jpl.nasa.gov/news/news159.html>

<comment><USER9> In other words, barely news.

<comment><USER10> it's the first time something like this has been predicted though. that's something.

<comment><USER9> Fair point, I missed that.

<comment><USER11> Not to mention the 1kt energy is not too shabby, even if it's far up.

</comment></comment></comment></comment></comment></comment><comment><USER12> What will the impact be?

<comment><USER13> <http://cfa-www.harvard.edu/mpec/K08/K08T50.html>

"The absolute magnitude indicates that the object will not survive passage through the atmosphere."

<comment><USER14> WE'RE ALL GOING TO DIE, WAKE UP SHEEPLE

</comment></comment></comment><comment><USER15> Excellent. A post that teaches me something about hacking and about how to become a better entrepreneur at the same time.</comment>


Facebook Working on "Facebook at Work", to Challenge LinkedIn, Google Drive - <AUTHOR> http://www.ft.com/intl/cms/s/0/db8722bc-6d10-11e4-b125-00144feabdc0.html#axzz3JGVAqlXi

<comment><USER2> An intranet Facebook would be great.</comment>


Why JavaScript is AWESOME - <AUTHOR> http://skilldrick.co.uk/2010/09/why-javascript-is-awesome/

<comment><USER2> Whats unfortunate is that the reasons they list JavaScript as a cool language are not for necessarily exotic features...we (being corporate slaves like me) are just forced to write in "engineering" languages (a very specific subset of the available languages, I might add) that don't don't support those features.

I agree, though, that JavaScript is an _amazing_ language. I love JavaScript. It took me some time to warm up to it thanks to my experience but now that I have I am absolutely in love.

One caveat though: I need a robust framework to make it useable. Unfortunately the implementation of JS (from a DOM perspective, not an actual interpreter perspective) is pretty poor out of the box. There is nothing out there saying that the features in, say, jQuery can't be baked in to the "standard DOM" (not sure what the term for that is but I think you get what I mean).

But from a features perspective JS is amazing. Would I like a job writing only JS? Hah, no -- although they exist (ask Jive Software). I think it's a tool that all web dev's should know, though, and they should know it well.</comment>


A password for the Hawaii emergency agency was hiding in a public photo - <AUTHOR> http://uk.businessinsider.com/hawaii-emergency-agency-password-discovered-in-photo-sparks-security-criticism-2018-1 <comment><USER2> I used to put fake passwords on stickies on my monitor just to see if anyone would notice.

No one did.

<comment><AUTHOR> good test!

</comment></comment><comment><USER3> The password was promptly changed to "Warningpoint3"

<comment><USER4> In 90 days it'll be Warningpoint4.

</comment></comment><comment><USER5> > these computers are likely different from the system that sent the false > missile alert

I can't speak to the particular console it was sent from, but I would place a modest wager that it's in that same room.

</comment><comment><USER6> At least it has letters and numbers ;)

</comment><comment><USER7> This hasn't been authenticated as being real. All we know is that there is an AP image and there is a post it note saying something on the monitor. We don't even know if the enhancement or anything else about it is real.

</comment><comment><USER8> Ok, if the system is an isolated system, not accessible via the open internet, but perh via VPN, is the sticker a big issue, if they have decent physical security (i.e. cleaning crew cannot get in there).

<comment><USER9> I hope they get some extra coin for keeping the place clean enough to not need janitorial services in the secure room.

</comment></comment><comment><USER10> "Pencil" Reference to wargames of course. Passwords are fundamentally broken. Don't blame the post it note nor the person making it. Blame the concept of passwords.

<comment><USER11> Passwords are not fundamentally broken.

IT departments that apply arbitrary constraints to passwords are fundamentally broken. Users that do not use password management, which allows easily creating unique, strong passwords for everything, are using a fundamentally broken workflow.</comment></comment>


Icelandic Skyr Is Coming for Greek Yogurt  - <AUTHOR> http://theatlantic.com/health/archive/2014/06/siggis-is-coming-for-chobani/373345/

<comment><USER2> Icelandic yogurt (or at least Siggi's) is great! Much "Greek yogurt" on the market is not once-extra strained milk and cultures. This impostor yogurt has added thickening agents like pectin and/or added protein to be like (what I would call) real Greek yogurt (although I think sheep's milk is the original milk for the yogurt- but like mozzarella di buffalo coming from buffalo milk but in general people in the US accept any cow's milk based mozzarella as mozzarella). I'm all about the Chobani and Fage and Siggi's and hate the impostors just after the money, riding the popularity.</comment>


Google Analytics opt-out browser extension - <AUTHOR> http://tools.google.com/dlpage/gaoptout <comment><USER2> From a site owner's perspective, I don't like this.

It's always been possible for a site owner to track certain things via access logs, I think Google should still allow for those basic metrics to be tracked via Google Analytics.

While it's still possible to track site usage via logs, I don't think Google should give end users a way to bypass the wishes of a site owner. If someone is using my site, I believe I have the right to have access to certain usage information. (Insert bit about doing it ethically)

In the past, Google Analytics has been good enough, and I've not felt the need to analyze my server logs. Now I question how popular this plug-in will become, and how it might skew even the most basic and fundamental usage stats.

By providing an all-or-nothing plug-in, Google is hurting those using Google Analytics more than it's helping to ensure people's privacy.

<comment><USER3> _don't think Google should give end users a way to bypass the wishes of a site owner_

You don't think users should have control over their own property?

 _If someone is using my site, I believe I have the right to have access to certain usage information._

You have the right to ask for that information. You have no right to compel the user to answer.

<comment><USER4> _You have the right to ask for that information. You have no right to compel the user to answer._

The user has no right to view the site owner's content. The site owner therefore has the right to make provision of analytics data a prerequisite for access to content. No one's bothered to do so because the proportion of people who opt-out is currently quite small.

<comment><USER3> _The site owner therefore has the right to make provision of analytics data a prerequisite for access to content._

Agreed. I just object to the imputation that it's wrong to provide users with the ability to not provide that data if they so choose.

</comment></comment></comment></comment><comment><USER5> As often as I think to myself how dangerous it is that I've allowed Google to have so much of my information - I'm constantly impressed by how upfront and ethical they are.

<comment><USER6> As long as Larry, Serge, and Eric are in charge, I'll trust Google fully. I just worry that their benevolent legacy won't outlive me...

<comment><USER7> I don't think I would put Eric in that list. There were some stores about him in the press.

<comment><USER8> Are you thinking of the "if you have something that you don't want anyone to know, maybe you shouldn't be doing it in the first place" quote?

If you look at the full quote [0], it's actually quite reasonable and forthright. He's explicitly warning users that search engines, including Google, are subject to inquiries from law enforcement, and thus, should not be considered secure, rather than dismissing privacy out of hand.

[0]: [http://www.schneier.com/blog/archives/2009/12/my_reaction_to...](http://www.schneier.com/blog/archives/2009/12/my_reaction_to.html)

<comment><USER7> No, I wasn't thinking of that quote but now I cannot remember the article. It was around the time Google released Buzz and I think it was he who hinted that how the users got it wrong. Am I wrong to think that it was him who said that?

<comment><USER9> No, but I also don't disagree with him. He was right for the most part. More importantly, nothing has been done to fix the problem. Everyone blamed Google, but few people have actually attempted to fix the problem of privacy, or even offer up solutions.

At the end of the day, Google has done more good for privacy then all the users screaming at them.

<comment><USER7> @jasonlotito Yes, I do agree that they are doing more for privacy than the rest.

</comment></comment></comment></comment></comment></comment></comment><comment><USER10> This is how Google builds their brand. To ensure that the insanity around facebook doesn't ever happen to them, they're handing out these tokens to the few thousand people that understand something about technology.

But if sites begin to customize themselves for you, show you JPG ads instead of Flash because you are a Mac user that never clicks ads, why would you opt out?

</comment><comment><USER11> Or just use Ghostery to opt out of Analytics and hundreds of other trackers/bugs. <http://www.ghostery.com/download>

<comment><USER12> Or Noscript and opt out of all sorts of things.

</comment></comment><comment><USER13> Or for the mildly more paranoid, block it entirely; just add the following to /etc/hosts:

      127.0.0.1 www.google-analytics.com
      127.0.0.1 ssl.google-analytics.com

<comment><USER14> Doesn't that slow down and/or break a bunch of sites?

<comment><USER15> You should get an immediate Connection Refused if there's no one listening on 80/443.

<comment><USER14> That still may break sites if the variables that ga.js defines are used outside of a try/catch.

</comment></comment></comment></comment><comment><USER16> I have all my /etc/hosts for Google Analytics pointing to localhost.

</comment><comment><USER17> While this may be a left-hand doesn't know what the right-hand is doing kind of thing, I don't think this is good.

It gets very tricky when companies try to be the arms dealers to both sides. You can't advocate privacy and provide privacy tools while at the same time promoting analytics and data-mining tools used because of a lack of privacy. Ultimately, the two sides conflict and the end result is often bad for both sides.

Case in point -- IronPort used to be a company selling spam cannons, and then they started selling anti-spam devices. They quickly realized they had to stop selling the spam cannons if they wanted to be perceived as the anti-spam vendor of choice.

</comment><comment><USER18> Presumably this will also install the Google Updater so you can have 7 updater instances humming away in your task manager at any given time...

</comment><comment><USER19> Nice. I'm going to be using this for my own low traffic sites. I visit so much that the stats get skewed in favor of FF on OSX.

<comment><USER20> If it's your site or a site you have access to the Google Analytics for, you can add a filter to exclude your IP.

<comment><USER21> ...which works if you always access your sites from the same IP. I like the idea of using a browser extension (or noscript or something like that) which stays with my computer.

</comment></comment></comment><comment><USER22> I'd really like cookie sequestration to be a standard browser feature. By sequestered, I mean that cookies be bound to the domain in the address bar as well as the URL they are served from. So I would have different versions of the Google analytics cookie for every domain I visited.

<comment><USER23> GA already works that way.

<comment><USER22> Yes, but I'm thinking of the Facebook Like beacon.

</comment></comment></comment><comment><USER24> Ugh.

</comment><comment><USER25> Waaiitaminute.. if I want to opt out from your information-gathering program I have to install something on my computer and constantly run it in perpetuity?

<brain explodes>

I can't wait until mailing lists try this: "To unsubscribe from our list, please send email every 24 hours to keepunsubscribingme@___.com. Here's a webapp to join to simplify the process." or "Would you like Sears to stop sending these coupons to your house? Please send a postcard to ___ every 30 days." Lol.

(Not saying this is a bad idea. What do I know? I'm going to keep it on my radar.)

<comment><USER9> To be fair, in a way, you opt-in.

The website owner chooses to install it on their website. You visit the website, with JS enabled. If you don't like that the website uses Google Analytics, you are free to not frequent the website anymore, or to turn of JS.

Your mailing list or coupon metaphors really aren't the same. Instead, it would be more akin to buying things from Amazon, asking Amazon them not to send advertisements, but getting made when they send you a purchase update for the purchase you made.

A real life example would be complaining to a store about being video taped while you are shopping, and the store using that data to plan a new layout based upon customer habits.

<comment><USER25> I'm aware of the implementation issues. That's why I don't dislike the idea. But they're just that, implementation issues. Look at it from the user's perspective. I'm _me_ , I'm right _here_. Stop remembering me everywhere I go. Get it done.

Imagine if you were told you'd keep getting telemarketer calls because 'it's too hard to take you out.' You wouldn't care how valid that argument is.

The prevalence of CCTV is a good analogy, yes. I understand why they need to exist, but they still creep me out. I just go through my day trying not to think about them. I suspect a lot of people do the same. This plugin creeps me out in the same way, it brings up something I'd rather ignore.</comment></comment></comment>


USAF's Missing Unmanned Combat Air Vehicles (2016) - <AUTHOR> https://www.thedrive.com/the-war-zone/3889/the-alarming-case-of-the-usafs-mysteriously-missing-unmanned-combat-air-vehicles <comment><USER2> This sounds like a worryingly bad idea on many levels.

1\. "Such a system could find, fix and finish a target without external direction by a human controller."

The fact that human-out-of-the-loop kill decisions is a bad idea should not require further elaboration.

2\. "Suddenly, a simulated threat radar activated. The pair of networked UCAVs immediately classified the threat and executed a plan to destroy it based on the position of each X-45 in relation to the target, what weapons were available, what each drone's fuel load was and the nature of the target itself. The calculations happened in a blink of an eye."

Congratulations, now all of the adversarial techniques that make state-of-the- art neural networks fall over will apply to fighter jets as well. Does the system deterministically plan to attack _everything_ it sees that looks like a threat? What about easy threats that show up first, followed by progressively more challenging / fuel-draining threats? Now instead of radar jammers, the signals guys will go back to building elaborate decoy generators.

Without a human in the loop, our current autonomous technologies are woefully inadequate for determining whether or not something smells like a trap. Our enemies are going to learn how to knock these things out of the sky with a $200 SDR and a power amp.

<comment><USER3> Not sure if the article was edited before you posted, but the author covers this. There is a human in the loop. The swarm sends all its data to the ground station, where a human gives go/no-go.

There thing that is automated is the first phase threat identification and the generation and execution of the attack plan, not the threat verification or decision to execute. Which is fine IMO.

<comment><USER4> That's always in the narrative to make you feel better. If the military gave a shit decisions about attack plans, we wouldn't have missiles.

With a plane-sized stealth drone, you can use inertia/gyro guidance to eliminate the GPS risk. Seems silly to build a stealth aircraft that has to transmit and receive instructions. Where do vehicles like this fit? You have long-range cruise missiles, cheap, long loitering drones with hellfire missiles, manned aircraft, and these unmanned fighter-jet class devices already.

A weapon like this wouldn't have super-long loitering time, but would be potentially more stealthy and more disposable than a manned aircraft. It's pretty obvious why it's secret... it's an air-defense buster, strike platform against a nation-state (vs. rabble), delivery truck for special bombs, etc or a nuclear weapon delivery truck.

<comment><USER5> > It's pretty obvious why it's secret... it's an air-defense buster, strike > platform against a nation-state (vs. rabble), delivery truck for special > bombs, etc or a nuclear weapon delivery truck.

This

</comment></comment></comment></comment><comment><USER6> This is a fascinating article that is well written and has a lot of interesting information.

However it feels like he is falling into the same trap that most of the media falls into constantly, thinking that AI & Software are easy.

If he thinks the F-35 was hard to launch with all it's software that's nothing compared to an autonomous combat swarm with all the features he's talking about. You can't rush out stuff that controls machines killing stuff.

My guess is he's more of an aviation guy than a software guy so this stuff somehow doesn't seem as hard as it is.

He also mentions the USAF has had a lot of black programs but then continues on with the thesis that they're ignoring this as opposed to continuing to develop in the black.

Also these swarms will be least effective in the kinds of operations we've been mired in. It's a lot easier to set a swarm in motion with orders to clear the sky in a WW3 scenario than it is to have them try and shoot a particular pickup truck filled with civilian-clothed possible enemy combatants in an urban area in Afghanistan.

<comment><USER7> As long as you've observed the particular pickup truck before IDing it later is actually a very solved problem (like, the exact one, not just make and model). Back when I was an intern I worked on the "old boring currently deployed legacy tech" and it was quite good (probably scary good to some people) and it was using radar signatures. I suspect that the development of that technology combined with recent visual spectrum developments (i.e. cheap good cameras) has made the tech even better.

Having the good judgement to not obliterate the truck while it's yielding for a funeral procession is the hard part to do in software.

I agree he's underestimating the software complexity. Anyone can built that crap. It takes tons of R&D man hours to refine it into something that actually works and works consistently in the real world.

<comment><USER8> I think he is talking about decision making abilities. But even stuff you mentioned are too hard to build for a real world military scenario. They have to deal with countless different objects, scenarios, and situations. Too many edge cases to cover and will take ages to adjust and it will be full of human errors.

They can build it for simple tasks. Find the best route to go there, bomb that specific target, come back and during your mission deal with a limited set of defense scenarios.

</comment></comment></comment><comment><USER9> 14) The USAF has discovered that there are insurmountable problems that have prevented the development of effective autonomous systems. Therefore they have declined to invest in technology that isn't working.

<comment><USER10> I would suggest that manned attack craft are as important to the Air Force as the Carrier is to the Navy. Neither will let go until circumstances outside of their control over Congress forces it.

<comment><USER11> The AF probably realized that in a contested environment, drones would be useless. If the Iranians can shoot down a $200M Global Hawk with homebrewed missiles, the Russians and Chinese will have no problem. And if you can't shoot them down, just jam GPS etc. That's how the Iranians captured an RQ-170.

</comment></comment></comment><comment><USER12> Former USAF here, with no knowledge of any of this. My guess is the F-35 program sucked up all the funding for UCAVs.

</comment><comment><USER13> Wow, was just reading this article after reading the one about SAPs. I don't have much of any knowledge on aerospace engineering or what the Air Force/Navy have planned for our skies, but it's still a crazy thought that they'd abandon that kind of tech. I understand the upper echelons of governments get really bureaucratic but a lot of the times their decisions are incredibly simplistic, a program like this could be abandoned just because the top rung shift focus to intelligence gathering, any platform that doesn't fit that purpose or can easily be made to fit that purpose gets the axe, despite how useful it may be in the future. All boils down to money eventually.

I'm really interested in what the "next phase" of aviation combat will be, or if there even will be a next phase. It's possible some organization would create a weapon that would physically disrupt any vehicle or object flying through a certain patch of sky - that may push us into a air-to-groud laser or smart-guided weapon age to counter those kinds of measures, and also means air vehicles will need serious intel platforms to get around them. We also may see vehicles that can transition from air to sea and retain full combative power, anything in the skies that can't float at that point goes the way of the do- do, no matter how intelligent it's systems are, so maybe the USAF is waiting until it's clear what will work for the next 50 years, while other branches invest UCAV technology.

*air-to-ground, not ground-to-air

<comment><USER14> Though I'd much prefer to have advances in the technology of diplomacy than that of war, I think having a number of semi-autonomous small drones in formation flight around a manned aircraft makes more sense than AI drones. The drone swarm could detect the attacks you describe destructively if needed, so the pilot can dodge.

</comment></comment><comment><USER15> Pardon a nitpick moment.

"Boeing's control software ... was called DICE, or Decision Mission-Control Software."

Okay, well, I see where the D and the C in the acronym comes from, but...

<comment><USER16> Decision mIssion Control softwarE

</comment></comment><comment><USER17> The article is from 2016. A lot has changed since then..

<comment><USER18> How many stealthy UCAVs are flying publicly? As far as I'm aware the answer is still 0. (Well, 1 if you count the XQ-58 Valkyrie [0], which has flown _twice_ )

0: [https://en.wikipedia.org/wiki/Kratos_XQ-58_Valkyrie](https://en.wikipedia.org/wiki/Kratos_XQ-58_Valkyrie)

<comment><USER19> I was under the impression that there are a few stealth UAVs being operated currently.The Sentinel comes to mind and I think both China and Russia have working prototypes.

[https://en.wikipedia.org/wiki/Lockheed_Martin_RQ-170_Sentine...](https://en.wikipedia.org/wiki/Lockheed_Martin_RQ-170_Sentinel)

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

[https://en.wikipedia.org/wiki/CASC_Rainbow#CH-7](https://en.wikipedia.org/wiki/CASC_Rainbow#CH-7)

<comment><USER20> The article speaks to the RQ-170, introduced 9 years before the article and is one of your links. The idea is that the Air Force abruptly pulled out of a join effort with the Navy and didn't seem to have an alternative. What happened? Does the AF have something else that is not public or did the manned aircraft program see UCAV as threat to eliminate?

</comment></comment></comment></comment><comment><USER21> The USAF is making the right call as far as I'm concerned. It is breathtakingly easy for hostile actors to manipulate the behavior of UAVs. Hell, Iran stole one by just spoofing its GPS and landing it exactly where they wanted. Giving every hostile nation and hacker the opportunity to find zero-days on a fleet of supersonic aircraft is stupidly reckless.

</comment><comment><USER22> I get the impression that the author vastly overestimates the capabilities of modern software. We don't even have reliable self-driving cars, yet they are hoping for reliable self-flying planes that can decide when and how to kill? Even the task of collecting training data for such a system would be monumental.

</comment><comment><USER23> The F-117's retirement is cited as evidence of a secret UCAV, but I was under the impression that the B-2 made it obsolete anyways.

<comment><USER24> According to the article, the B-2 is of limited availability so while it could fulfill the mission parameters, it cannot meet the demand.

<comment><USER25> The B-2s problem is that it was obsolete before it was even built. Long range strategic stealth bombing isn't really a useful mission profile in a world with ICBMs or even ship launched cruise missiles.

<comment><USER23> It lets you surprise an enemy like Libya with 80 JDAMs.

For the cost of about one of those cruise missiles ($25k/JDAM versus $1.4m Tomahawks), and a lot less likely to be intercepted by air defenses.

<comment><USER25> Yeah, but you need to add in the cost of the B2 per flight hour on top of that. It's hard to argue a cost savings with anything related to the B2 program.

<comment><USER23> $135,000/hour, which means you get 1-2 more Tomahawks in a mission. The B-2 still comes out very much on top there.

</comment></comment></comment></comment></comment></comment><comment><USER26> Isn't this article pretty much describing reprogrammable ICBM's?

</comment><comment><USER27> Isn't this the purpose of cruise missiles? Essentially a drone that flies to a target and kaboom.</comment>


HN: What's the difference between EBITDA & 'regular' profitable? - <AUTHOR>

I noticed Jim, CEO of Rev3, said that they were EBITDA profitable.
Does that mean they are profitable before paying taxes?
I know if it was another company, and they have debt and interest payments - then it could mean that they were profitable based on expenses and revenues from operations, but not including interest payments + taxes.
But given we are talking about a web based company, that likely doesn't have debt - what could he be referring to aside from taxes?
Thanks. <comment><USER2> There's depreciation and amortization as well. This could mean that Rev3 has one-time asset purchases (eg. servers, patents, TV licensing deals) that it is still writing off, and it would be profitable if it didn't have to depreciate those assets.

<comment><AUTHOR> This is something I never quite fully understood. So as they depreciate those assets over time, that goes against their profits?

Why would a company want to do this? Is it just for tax purposes?

<comment><USER2> It's for accounting purposes, so that companies are all measured by the same yardsticks. It's not that they _want_ to do this - it's that they're _required_ to, under GAAP, at least if they have public investors.

Imagine that companies were not required to amortize capital expenditures over the life of the equipment. Then imagine that you have two gigantic web companies, each big enough to require thousands of servers. Company A rents their servers from Amazon.com through EC2. Company B builds their own datacenter.

Company A's earnings are straightforward: take their revenues and then subtract out the fees they pay for hosting (and all the other stuff, like salaries, licensing, etc.) Company B, however, has this massive cash hit in the first year, and then pays _nothing_ (well, except for power, cooling, etc.) in subsequent years. If they weren't required to amortize their CapEx, Company B would look drastically worse than Company A in year 1, and then drastically better for all subsequent years, even though they do the exact same thing. Investors would be misled into investing in Company A, and then complain when Company B's earnings shot up once they no longer report their cap-ex.

Ask an accountant for more details.

<comment><AUTHOR> That is an AWESOME explanation.

Thank you. I had the gist, but I guess I was focusing on the IT in EBITDA rather than the DA - because I forgot about the massive CapEx they have to do initially.

</comment></comment></comment></comment><comment><USER3> EBITDA is a loose term. That number can be calculated many ways including top- down (starting with revenue) or bottom up (starting with net income). And analysts can fudge the number further by including/excluding certain accounts. But all in all, EBITDA stands for Earnings Before Interest Taxes Debt and Amortization. The reason EBITDA is a figure analysts look at is because it relates to "true" profit of the company without polluting it with non- operating revenues/expenses.</comment>


ZFS: The Last Word in File Systems Part 1 (2008) [video] - <AUTHOR> https://www.youtube.com/watch?v=NRoUC9P1PmA <comment><AUTHOR> Jeff Bonwick and Bill Moore presenting at the SNIA Software Developers' Conference, Sept 2008. Some timestamps:

* 00m00s Intro

* 08m45s ZFS Layering Architecture

* 25m00s Copy-on-Write Transactions

* 44m00s Data Integrity and Checksums

ZFS: The Last Word in File Systems Part 2 [1]:

* 00m00s RAID-Z: Data/Parity Distribution with dynamic stripe width

* 09m15s Resilvering/Rebuilding

* 19m55s Disk Scrubbing

* 23m10s 128-bit Pointers

* 28m33s Performance

* 33m51s Dynamic Striping

* 40m30s Variable Block Sizes

* 46m30s Integrated Flash Memory (SSD) Support

* 53m22s Hybrid Storage Pool Example

ZFS: The Last Word in File Systems Part 3 [2]:

* 00mm00s Demo of using ZFS

* [1] [https://www.youtube.com/watch?v=TwCXVp_u86o](https://www.youtube.com/watch?v=TwCXVp_u86o)

* [2] [https://www.youtube.com/watch?v=ybjdAEUfXzw](https://www.youtube.com/watch?v=ybjdAEUfXzw)</comment>


BetterYoo - Recurring Text Message Reminders - <AUTHOR> http://betteryoo.com/

<comment><AUTHOR> Hi HN, I would love your feedback on my latest web project. It is a recurring text message reminder service. Frankly, I am wondering if anyone has some insight on whether it is a viable tool. Also, how/who would be a good demographic to target marketing efforts on. Thanks for the help!</comment>


John Cleese - a lecture on Creativity - <AUTHOR> http://vimeo.com/18913413

<comment><USER2> Here are some previous submissions of this or related items:

<http://news.ycombinator.com/item?id=1604148> <\- Many comments

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

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

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

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

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

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


Kaspersky: personal data should belong to the state - <AUTHOR> https://translate.google.com/translate?hl=en&sl=auto&tl=en&u=http%3A%2F%2Ftass.ru%2Fekonomika%2F3824223 <comment><AUTHOR> Original is in Russian, but Google Translate does a good enough job.

Natalia Kaspersky, ex-CEO of Kaspersky Lab and one of, if not THE most influential person in Russian IT space, has suggested that all user tracking data, such as browsing history, location, messages, searched, should belong to the state as "users have voluntarily released it into internet"</comment>


MillionShort vs. Google - <AUTHOR> http://www.millionshortiton.com

<comment><USER2> Hmm. Well, I can always tell which side MillionShort is because it takes longer to load. Should wait until both sets of results have loaded before revealing them.

<comment><USER3> +1</comment></comment>


Show HN: Snippetnote – A note-taking app for any text and code you use often - <AUTHOR> https://www.snippetnote.com <comment><USER2> It's funny. Every week there is a new note-taking app being shown in HN. (and the usual guy raving about org.mode :) )

Many of them are similar but not equal. It really shows that there is a need for these apps but the problems they are thought to solve are unique from person to person.

I know this because I'm starting to build my own note-taking app.

</comment><comment><USER3> Liking the product alot. It would be nice if there was a way to title or tag each note so you can remember what the snippets are for and search for them later.

<comment><AUTHOR> Thanks! Good point. I should try to find a way to better organize notes while keeping the app simple.

</comment></comment><comment><USER4> Good code snippets</comment>


I simply treated others the way I would want to be treated. - <AUTHOR> http://ryanhoover.me/post/77704756875/the-building-blocks-of-community <comment><AUTHOR> Accidental community builders are my favorite.</comment>


GoldieBlox, fair use, and the cult of disruption - <AUTHOR> http://blogs.reuters.com/felix-salmon/2013/11/26/goldieblox-fair-use-and-the-cult-of-disruption/

<comment><USER2> IANAL, but the justification for fair use seems tortured here. EFF made the case for fair use in this article:

[https://www.eff.org/deeplinks/2013/11/beastie-boys- goldieblo...](https://www.eff.org/deeplinks/2013/11/beastie-boys-goldieblox- fair-use-lawsuit)

... and I think the commercial element is stronger than EFF argues for, and the fact that the video uses the ENTIRE SONG pushes factor three (amount and substantiality) in favor of the Beastie Boyz.

My first thought on seeing the commercial was "Awesome!"

My second thought was, "Did they get Beastie Boyz' permission to do this?"

I have to say, I agree with the Beastie Boyz statement in its entirety:

[http://www.billboard.com/biz/articles/news/record- labels/580...](http://www.billboard.com/biz/articles/news/record- labels/5800721/beastie-boys-issue-statement-on-girls-viral-video-of)

</comment><comment><USER3> I was really afraid when I saw this blow up. My first thought was people would just "forgive" GoldieBlox: after all, don't we all dream of a free world devoid and licensing and teaching girls they are just as powerful as boys?

But for once, I'm seeing a different trend. People really do care for Yauch's last will as an artist. And people don't think girl empowerment, though noble, should be used to trample respect and other values we hold dear as human beings.

So for once, more people are speaking with moderated words. We see both sides of the arguments, there's less "line-in-the-sand" declarations,... Maybe we could try again next time we get in a gender-related debate :)

<comment><USER4> I was of a split opinion. I think the girl empowerment thing was great, but I also respect his wish not to have his work used commercially. At the end of the day, it's fair use, but unethical, but all they need to do be be ethical and respect his last wishes is remove the obvious references to their product at the end when the TV is turned on and the product name is aired. They should just edit out that short part.</comment></comment>


Facebook introduces messenger bots - <AUTHOR> http://techcrunch.com/2016/03/17/facebooks-messenger-in-a-bot-store/ <comment><USER2> That title.</comment>


Show HN: Compare Trends on Reddit - <AUTHOR> https://redditprofile.com/compare?search=AWS,GCP%20|%20Google%20Cloud,Azure <comment><USER2> This makes the differences between similar products of varying quality/polish very visible.

For example, et's take Paladins and Overwatch. Developed/released at the same time, with similar playstyles and roles.

Paladins, although having more features and variations allowing changing playstyles, suffers from so many bugs that it's basically all you hear about. On the other hand Overwatch has somewhat less variation in playstyle and a more toxic playerbase, but is very reliable with excellent quality, and the devs fix bugs as fast as they can with a focus more on polish and gameplay than putting out tons of skins.

At a high level it seems like pro/cons, and it is difficult to gauge interest because Overwatch is much more popular/instated, but then looking at the trends: [https://redditprofile.com/compare?search=paladins,overwatch](https://redditprofile.com/compare?search=paladins,overwatch)

It becomes super clear that Overwatch has way higher sentiment. I assume this may be slightly biased as Paladins, having a smaller playerbase, probably mostly has posters who are dedicated to the game and so are more heavily influenced by bugs and QoL issues; but I don't see it being enough to justify a 100:15 ratio in relative sentiment. You can also see clear dips around the times that game-breaking bugs were discovered, or when HiRez/EvilMojo did an oopsie.

This is just an example but I figure offsetting trends in this way is going to be very powerful. It better visualizes product sentiment across competing products in a way that is mostly offset at scale from "popularity" (which makes other trend metrics i.e. Google Trends too biased to use).

</comment><comment><USER3> Interesting tool. The same articles comparing GCP and AWS are positive about both platforms?

Does anyone know how these reddit comments are scraped? Is there an API from reddit?

<comment><USER4> Reddit have a Public API, thats how all these unofficial clients work. Don't know for sure if this site is using it. (It probably is)

</comment></comment><comment><USER4> Awesome tool</comment>


Cryptocurrency Evolution - <AUTHOR> http://blog.ycombinator.com/crypto-evolution/ <comment><USER2> The linked article from Nassim Taleb is fascinating. He's discussing Lebanon vs Syria, but he could just as easily be talking about bitcoin vs the traditional financial system:

"Simply put, fragility is aversion to disorder. Things that are fragile do not like variability, volatility, stress, chaos, and random events, which cause them to either gain little or suffer. A teacup, for example, will not benefit from any form of shock. It wants peace and predictability, something that is not possible in the long run, which is why time is an enemy to the fragile. What's more, things that are fragile respond to shock in a nonlinear fashion. With humans, for example, the harm from a ten-foot fall in no way equals ten times as much harm as from a one-foot fall. In political and economic terms, a $30 drop in the price of a barrel of oil is much more than twice as harmful to Saudi Arabia as a $15 drop.

"For countries, fragility has five principal sources: a centralized governing system, an undiversified economy, excessive debt and leverage, a lack of political variability, and no history of surviving past shocks. Applying these criteria, the world map looks a lot different. Disorderly regimes come out as safer bets than commonly thought—and seemingly placid states turn out to be ticking time bombs.

<comment><USER3> I'd recommend reading Antifragile, although read it with a bit of a grain of salt. I read it for the first time earlier this year, and I was drawing all sorts of comparisons to cryptocurrencies (as well as how I should approach my professional career) while reading it.

That being said, the part that really threw the rest of the book into question for me was that Taleb is very anti-academia and spends several pages in the book claiming that academia had basically zero involvement in the development of computers, which just sounds like he'd never heard of Alan Turing, Charles Babbage, Ada Lovelace, John von Neumann, John McCarthy, and many others.

It really made me wonder how much of the rest of the book he was claiming to be an authority on could be trusted, even though most of it seemed to make sense intuitively.

</comment></comment><comment><USER4> I really don't understand the point of this article. It's quite rudimentary without much insight or new analysis.

<comment><USER5> The point is that there are still many people who don't understand or appreciate the value of cryptocurrency forks.

I think these people are holding society back. So I hope that they will read articles like this.

<comment><USER6> So serious question here. I kind of see myself as someone who doesn't understand crypto currency. At the same time, I'm also quite experienced in investing, business, spotting trends, etc.

I've read a bit on crypto currencies over the past 2 years to try and wrap my head around all of this.

Reading articles like this, it seems like the whole thing is more philosophical in nature versus utilitarian.

A currency's role is to function as some mechanism for the transfer of value from one person to another. But in order for this transfer to occur, both parties must recognize the underlying asset.

With cryptocurrency forks, it seems this doesn't seem to offer enough stability most people would transactionally want.

Other than the obvious speculative desires by the parties involved, how will crypto currencies evolve into becoming mainstream?

<comment><USER7> -People used to barter raw goods

-Then people used placeholders instead of goods to barter, like precious gems or sea shells

-Then people used gold coins

-Then people used government approved gold coins

-Then people used government approved fiat currency backed by gold

-Then people used government approved fiat currency backed by nothing

-> Now comes the fancy technology

-Then people don't even use paper anymore they use credit cards, essentially moving numbers around in files or computers

-Then people don't even use credit cards anymore they use accounts like PayPal

...but all of these are fundamentally transferring around fiat USD currency

Well the next iteration is for them to skip fiat and transfer around digital currency so no governments control you at all. Cryptocurrencies are truly global currencies, the only ones that will ever matter. There have been proposals in the past to introduce global fiat currencies, but that's an age long gone - it's too late for anyone to bother with anything but cryptocurrencies

They are decentralized, non-censorable (just make a new wallet, buy crypto in person, then use Tor), deflationary (fixed supply = rising in price over time, the opposite of fiat)

The list of benefits goes on and on. It's a foregone conclusion that cryprocurrencies are the future, it's only a matter of time. The technology is not yet mature but once someone makes a venmo-like app that the normies can use to easily utilize crypto, it's game over for every other system, period

Swiss bank account on your flash drive, swiss bank account in your BRAIN if you memorize your wallet seed phrase. The utility is indescribably large and we will have to fundamentally change our entire government and taxation system to be consumption based (sales taxes not income taxes) once this becomes mainstream, there is no stopping it

</comment></comment></comment></comment><comment><USER8> For someone who already owns cryptocurrency A, isn't there a perverse incentive to fork it into A', A'', A''', etc., because doing so multiplies the person's wealth.

I'd expect that a fork will exist if: a) it has a nontrivial chance of survival, and b) if there is an exchange mechanism for cashing out.

Another way of looking at it, what scenario creates an incentive for a fork to die once it has been created? There's no such thing as free money.

On the other hand, forking is a way of bootstrapping a new cryptocurrency variant without becoming a billionaire like Satoshi and needing to worry about would-be adopters questioning your motives.

The "exploit" of forking to generate a wealth multiplier generates a lot of wealth, just not Satoshi level wealth.

In a sense, forking is a signal of too much centralization, as those benefitting from that centralization fork to cash out on their accumulated influence.

With such a large percentage of cryptocurrency economic activity being speculation, the incentive to fork is ripe. On the other hand, if Satoshi wanted to sell of all his Bitcoin Cash and sink it, he could easily do so to protect his original creation, so perhaps we learn more about Satoshi's stewardship intent by watching what he doesn't do rather than what he does.

<comment><USER9> _isn 't there a perverse incentive to fork it into A', A'', A''', etc., because doing so multiplies the person's wealth._

As the article says, this worked once but don't expect it to work indefinitely. Arguably forks that allow new use cases (e.g. Bitcoin Cash is supposed to re-enable low-value transactions) create value while other forks (e.g. Ethereum Classic, Bitcoin Gold) should be more zero-sum.

 _what scenario creates an incentive for a fork to die once it has been created?_

Looks like the death process is low exchange volume -> delisting -> zero liquidity -> zero value. [https://medium.com/@EthereumRussian/why- cryptocurrencies-get...](https://medium.com/@EthereumRussian/why- cryptocurrencies-get-delisted-tenx-bitshares-digix-monaco- iconomi-66b32cda4c24)

</comment></comment><comment><USER10> Bitcoin is such a UX nightmare. I finally got my funds transferred to a MultiBitHD wallet, after a lot of effort. I had to pay some service $20 to accelerate my transaction because my other fee of $20 was taking weeks to go through? Now I'm trying to claim my Bitcoin Cash. How do I do this? According to the internet, I need to transfer it to a different kind of wallet first? There's a bunch to pick from, but make sure it's not a scammy wallet. Also I need to extract my private keys with some command line stuff (MultiBit doesn't use normal keys) and run some weird programs to convert them? Then I need to move the funds around again to get it working in a new kind of wallet. Also make sure to do all of this on a clean computer in case these unvetted programs are stealing your keys. Don't forget to pay an extra $40 if you want the transactions to not get stuck forever. Oh and I have to do a bunch of other steps again if I want to get Bitcoin Gold or whatever new fork is going on.

I could eventually figure it out with enough time, but how any of this is supposed to be adopted by laymen baffles me. You'd think something with this much developer support would just let you click one button and have it all done.

<comment><USER11> Raw cryptocurrency is definitely not for the layman.

Really it's for the financial processors. Personally I view the benefit of Bitcoin and its ilk to be the efficiency, transferability and accountability that comes with the blockchain. Those willing to invest time and energy can also carry raw bitcoins in their safe if they so choose, but this is a far way away from being accessible to the layman.

Think HTML. How many laypeople know HTML? Yet they get the benefit of the web thanks to all of the developers that have built services using it. Those services wouldn't be available without it.

<comment><USER12> Can you give an example? I'm having a lot of trouble following your comparison to HTML. HTML is a material which composes documents, and I don't have to understand the material to understand the value of the resulting document. What will bitcoin build that will be useful to me without needing to own bitcoin directly?

<comment><USER11> Making intra-bank transactions more efficient is one; the floor of money transfers will be both cheaper and faster. Wire transfers are expensive and can be very slow (sometimes more than a day) for example. Bitcoin being a real transaction mechanism between institutions that is cheaper than wires and faster than wires (works on Sunday!) puts pressure on the banks to either compete or adapt. Another example is enablement of micro-payments (perhaps on side-chains) where conventional money transfers don't scale well - someone, not your (artists) preferred broker, is holding your money until it aggregates up to a transferrable sum. Now there's pressure to make that sum smaller and the transfer frequency greater.

And, although not everyone needs this, for those of us that have been in the situation of doing international money transfers, they are a huge pain, unreasonably expensive, and slow too. Bitcoin puts pressure on all this, and I believe we're already seeing companies pop up that offer transfers in your preferred currency but are using Bitcoin behind the scenes to settle the transfers.

</comment></comment></comment></comment><comment><USER13> What about the argument that the only chain that deserves to be called Bitcoin is the one that is completely backwards compatible to all the versions of software dating back to the genesis block?

<comment><USER14> That chain no longer exists. Bitcoin has had several hard forks in the past that broke backwards compatibility.

<comment><USER15> It has not. You have been misinformed.

<comment><USER16> It has had forks which have produced blocks which: (1) would not have been produced by any previous nodes in the network, and (2) forced the updated software to ignore the original majority chain. If you check the software, you'll see explicit checkpoints at which the client is told to ignore certain blocks (identified by their hash).

Breaking the ability of the network to follow a valid majority chain is breaking backward compatibility. It's disingenuous to claim otherwise simply because the forked version eventually ended up with the longest chain.

<comment><USER15> Point me to the code. I think you will find it does not exist.

</comment></comment></comment></comment></comment><comment><AUTHOR> I'm happy to answer any follow-up questions.

<comment><USER17> I don't understand the long-term aim of bitcoin. It currently costs $40/transaction, that seems far beyond any reasonable idea that bitcoin could ever be useful. How is this not a ponzi scheme, help up by mining fees?

<comment><AUTHOR> One of the main use cases of Bitcoin is becoming a store of value. For that use case, transaction fees matter a lot less. If you want to store/move millions of dollars and protect them against inflation, those fees don't matter. Gold, also a store of value, has high transaction fees as well.

<comment><USER18> It's difficult to see mass adoption of Bitcoin from a purely store-of-value use case because most people don't (directly) own gold and probably don't think about hedging against inflation.

I'd argue instead that the main use case is to buy a cup of coffee with Bitcoin anywhere in the world without having to deal with fees and red tape.

So using your analogy of evolution, transaction scaling is probably going to be the biggest driver of who gets to be at the top of the crypto food chain.

<comment><USER19> Owning gold is not an effective hedge against inflation. If it was then we would see that gold returns would consistently be correlated with inflation rates, but in reality that hasn't happened. And there's no reason to expect that Bitcoin would be an effective inflation hedge either.

If you want to actually hedge against inflation then TIPS or stock indexes are usually better choices for most investors.

</comment></comment></comment></comment></comment><comment><USER20> Hack Days talks a lot about this and how Bitcoin mirrors Linux in a lot of ways @ the 59 minute mark:

[https://www.facebook.com/hackdays4all/videos/545598169119184...](https://www.facebook.com/hackdays4all/videos/545598169119184/)

<comment><USER21> I really enjoyed watching that and I'd like to join next week if I can

<comment><USER20> For sure! Come on out, we film every Sunday at ~2pm. We're at Noisebridge in SF near 18th + Mission Street.

</comment></comment></comment><comment><USER22> Oh my, if it is valid to compare crypto forks to biological evolution, then I'm left to wonder how awesome humans would have been today if all the great forks didnt get killed off by lousy first-network effects.

</comment><comment><USER23> I was a little confused by the abrupt inclusion of a quote from Nassim Taleb. Is he so well known in this space he can referenced without introduction?

<comment><AUTHOR> It has a footnote but the introduction could have been smoother

</comment></comment><comment><USER24> This is a great read!

</comment><comment><USER25> I don't have anything against bitcoin and cryptocurrencies in general, but I wish the cryptocurrency community would stop trying to co-opt the term "crypto".

It's a well-established (understatement of the century) shorthand for the term "cryptography", that no honest cryptocurrency enthusiast can claim in good faith to be ignorant of, because cryptography provides the technological foundations on which all cryptocurrencies are built.

Conflating these terms can cause undue confusion that breeds disdain for the very technology you're trying to promote. I, for one, was expecting to read an article on the history of cryptography as it evolved over the years when I clicked the link.

Despite all this, I just wanted to say the article itself was an interesting read, but you're doing yourself and the cryptocurrency community a disservice by unwittingly pulling a bait and switch like this on so many potential readers.

At the very least, please avoid using it as a shorthand in contexts intended for communication to those outside your community.

<comment><USER26> I clicked the title hoping to read something interesting about cryptography.

<comment><USER27> "Crypto-powered" is the new "AI-powered".

</comment></comment></comment><comment><USER28> I'd suggest changing the title as I thought this was related to Cryptography. Cryptocurrencies is more appropriate than just crypto.

(Note that there are a bunch of cryptographers and cryptographer wannabes (like me) on HN who are not just (or not at all) into cryptocurrencies).

<comment><USER29> Thanks! Yes, we've tacked on a "currency" to clarify.

</comment></comment><comment> loup-vaillant Crypto _currency_ evolution, dammit!</comment>