

Show HN: Errorception - High performance JavaScript error tracking - rakeshpai

Just launched Errorception http://errorception.com/ yesterday. Errorception is a error tracking service which catches and reports in end-users' browsers as they happen.<p>I built Errorception since I couldn't didn't find any error reporting system that (a) didn't rewrite my JS, (b) didn't modify the browser runtime by overriding common functions, and (c) had a zero performance cost, especially with regards to blocking script tags.<p>Would love your thoughts.
Site: http://errorception.com/
======
bdg
Your product is for people who write code, but your sales pitch is some
vaporous hand-wavy thing. I'm writing my own guide on quality JavaScript, and
I have absolutely no idea of what your product does beyond "Group errors and
email people, also, unobtrusive!"

I imagine (based only on your comments here) this is a JavaScript file that
basically sends ajax data with `window.onerror` events from the browser.

You need a user story for customers. "Bob's website, twitter.com, sucks
because it throws thousands of errors only to suppress them by hacking in
window.onerror = function(){} so nobody gets to see them in the console and
make fun of them, why not do better and get reports of what your errors
actually look like!" Your user story needs to explain value (which I myself as
a potential customer of yours do not see, I will explain in a moment).

Also, pricing on the volume of errors doesn't feel right. Especially if I'm
using this for development. Some websites will pass even your $60 limit in a
few days, never-mind errors that happen in loops. Why not just set one price?
20-25$/month or $200/year feels right to me.

You also need to compete on something that shows value. Who are you targeting?
What errors do your customers care about? Why might I not want to use your
tool? Why does twitter suppress errors rather than fix them? Why might twitter
buy your service?

As for why you don't have my business, I see no advantage or benefit to your
product. I've implemented similar features in the past only to move onto other
things. Sending an web request (ajax or any other request type) with
window.onerror is trivial. I even optimized it to not lag out pages when we
have errors in loops through some other techniques. You haven't convinced me
why a competent JS developer needs this, when the implementation for _very
basic_ functionality is trivial. Give me a reason to buy this; a spreadsheet
of hand-wavy features doesn't answer the problems that keep me up at night.

tldr: Marketers, marketers, marketers.

~~~
sdepablos
I suppose the main advantage would be information aggregation with each error
next to the number of occurrences (I don't want to see a hundred times the
same error), the same business model as airbrake or getexceptional. I mean,
almost any developer could implement an exception logger, but I don't really
want to spend that time on a non-core feature for my business.

~~~
bdg
Sure, but that feature seems trivial to me, I can simply create a view in my
database to shake the data however I would like.

<https://gist.github.com/1438654>

I could just select * from viewGroupErrors where error=12345

The cost of this app should be less than cost of my time to make it, right now
the yearly cost is probably $50 to me.

~~~
rakeshpai
bdg, I mean no disrespect, but the matter is honestly not that trivial.
Ultimately, you are right - it does come down to getting some queries right,
but you quickly discover that it's an ongoing effort. Three months since I'm
doing this, and even now I'd be happier if I could manage duplicates better.
It's not a simple select query for sure.

------
dclaysmith
I can see some problems with your "per-exception" pricing model.

If your product works and adds value, it will result in the reduction of
exceptions. A reduction in the number of exceptions will result in web sites
requiring a smaller plan. Smaller plans will result in lower revenue. The more
useful your app is, the less money you will make (a bit of a generalization
but you get the point).

Could you not migrate to page loads? Fire off an event on every page,
regardless of whether or not there was an exception?

~~~
rakeshpai
Thanks for the feedback, Clay.

I considered that model for a really long time. But there were two problems
with it. (a) Actually just handling large amounts of hits wasn't really a huge
cost for me, and (b) I don't think the usefulness will reduce for people who
actively deploy regularly.

If people don't deploy regularly, they'll likely be happy with the free plan
anyway. :)

~~~
richardmarr
Charging per exception also adds a nice synergy to bugfixing.

------
iambot
If you're product it targeting developers, as I'm sure a "High performance
JavaScript error tracking" service would be. I would hope that the "Features"
page would be a bit more descriptive of how it works.

While I understand that you don't want to over complicate the features
section, the reality is that the people you're targeting should have more than
a basic understanding of whats happening, and you should talk to them as such.
- Unless you're targeting managers and hoping they will force this on their
developers.

Edit: I notice you have _some_ technical info in the FAQ, but my personal
opinion is that if you're targeting devs you need MOAR.

tl;dr: Give us more info.

~~~
rakeshpai
Thanks. Point taken. Do you have any specific questions in mind?

~~~
iambot
Some things off the top of my head:

What info do you report back? What format is it? Do you handle different types
of errors? And if so how do you report them? Do you plan on providing an API
for devs to retrieve this info?

That's all I can think of on the spot, I just think you know your product
better than anyone else, adn if you were trying to convince yourself to use
it, surely the 8 point feature list wouldn't cut it.

~~~
rakeshpai
Cool... thanks for this list. I'll incorporate it in the FAQs.

To answer your questions right here: The only info reported back is the three
parameters from window.onerror (error message, line number, file name), and
the page on which the error occurred. It's submitted as a regular form POST.
There's no distinction between different types of errors - everything that
window.onerror catches is posted. I do have plans for an API (and several
other features) in mind - it's still work in progress.

~~~
iambot
As an Aside: I would hope that you're sending back info on the user-agent as
well (I only say this because you've not mentioned it).

When an error is encountered it makes all the diffence that it was on a
machine running ie7 (as an example).

~~~
rakeshpai
Oh yes, of course. I'm not explicitly sending the UA string. Since I'm just
doing a client-side post, the UA string is sent as a part of the HTTP request
itself. I record this, and errors are segregated by browsers by default
automatically.

------
tudorw
Thanks, going to give it a try. One tiny typo (I think!), first line under
Sign Up For Free Trial

'No oblations.'

plural of ob·la·tion (Noun) Noun: A thing presented or offered to God or a
god. The presentation of bread and wine to God in the Eucharist.

~~~
rakeshpai
I asked the mighty Google, and couldn't find anything like that. You could be
right, of course. Do you have a link? I've even seen several others use the
term verbatim.

~~~
robterrell
I think the word you're looking for is "obligations".

~~~
rakeshpai
Ah. I even read the "oblations" as "obligations" in my head. Thanks for
pointing this out. It's fixed now.

~~~
tudorw
no problem, it's working nicely, I have a few errors to fix now, cheers :)

edit: it would be nice to see some data aggregated and fed back into the
community so that issues with some of the more popular JS packages like jquery
could be fixed :)

~~~
rakeshpai
That's a neat suggestion, though it may be hard to distinguish between
developer errors and library errors. It's definitely something to aspire for.

Great to know you are liking the service. Cheers!

~~~
tudorw
No problem, I think it might be worth looking into further, you could restrict
it to errors that recur across large numbers of accounts account then scrape
github for possible links, cloudsource to verify the connections and bang, the
world a better place, well, in a small way.

------
dolinsky
I came across <http://www.muscula.com/> over the weekend, and they seem to be
farther along with this kind of a product in terms of features (not to
discourage you, just to give you a heads up as to what else is out there).
Specifically, they've implemented a stack trace and also provide the
browser/OS data in addition to the file/line/error.

They also provide a quick overview of their architecture if anyone is curious
@ <http://www.muscula.com/architecture>

~~~
rakeshpai
I've heard about Muscula (and I'm reasonably sure they've heard about
Errorception - it's a smallish world :) ), and I'm curious to know more about
how they do what they do.

That said, the architecture isn't too different. Errorception is also built on
Node and MongoDB. I am not a fan of JSONP (GET) for writing data (POST/PUT),
mostly because I'm a stickler for HTTP semantics. Otherwise, without too much
insight into what Muscula is doing, it certainly looks like we are very
similar.

Browser/OS information is rather easy to get - it's all in the UA string.
Errorception captures that already. :)

------
endian
How, precisely, does your service interact with my code? What does an error
report look like? This should be on the front page.

Also, "How can I pay for errorception? I'm working hard on getting a simple
enough payment mechanism in place, that plays well with the laws of my land.
As you can imagine, I need to start making money soon enough, and this is my
top priority right now." doesn't inspire confidence in your product's
reliability or half-life.

~~~
rakeshpai
Thanks for pointing this out. I've fixed the FAQ to be more recent - what you
saw was from an older time. Thanks again.

------
karterk
Sorry if this comes across snarky, but please avoid using "Painless X". People
are over exposed to it, and it doesn't really convey any meaning.

~~~
rakeshpai
Haha. Thanks for this feedback. I really have to work on my (non-existing?)
marketing skill.

------
gregdetre
We've tried 2 or 3 existing Javascript error tracking systems in the past.
None of them helped much.

Performance is not the feature I care about.

On the other hand, I would be delighted to pay to get more actionable
information about our errors. It's so so hard to determine exactly where in
the code, and under what circumstances, errors in the browser happen.

~~~
rakeshpai
Hey Greg,

The challenge you have mentioned is real, and is hard to crack. I certainly
haven't solved the problem to my satisfaction yet. However, I'm rather far
along the way. A lot of errors are classified as being irrelevant (I call it
"muted", but that's a terminology thing), and the ones that are in your face
are based on relevance and frequency. This is a very rudimentary way of
deciding importance, but it's something. At least it's not a raw list of logs.

Improving the quality of "actionable information" as you put it will be the
biggest (and most interesting and fun) challenge at Errorception. It'll get
better over time.

~~~
gregdetre
That sounds promising. I'll take a look.

P.S. I'm at greg at memrise dot com if you make further progress and are
looking for beta testers.

------
colinramsay
What's the support like for mobile browsers? Debugging mobile webkit is a
pain. It'd be nice to see some screenshots on the site too.

~~~
rakeshpai
Thanks, Colin.

Currently, mobile browsers aren't supported because mobile webkit doesn't
support window.onerror. Errorception doesn't distinguish between browsers, so
whenever mobile browsers add support, I'll be ready.

~~~
tudorw
mobile support would rock my world :)

------
nashjain
I've used Errorception for one of my products and was very happy with the
service provided by the author. Thanks.

------
narad
Seems to be interesting. Do you have a demo video? Will this work in all the
browsers? Any browser restrictions?

~~~
rakeshpai
Narad, no demo video yet, but I'll see what I can do. It works in most popular
desktop browsers - any browser that supports window.onerror is supported.

------
angry-hacker
You need to provide more information how the service works, what kind of data
and how you can get etc.

~~~
rakeshpai
Thanks. I'm assuming you already looked at <http://errorception.com/faq> and
that wasn't satisfactory? I'll see how I can improve the FAQs.

------
rakeshpai
Working link: <http://errorception.com/>

------
sidcool
Clickable: <http://errorception.com/>

------
acharekar
Congrats, I have worked with errorception, found it really useful.

Thanks.

------
avlesh-singh
Cool idea! Does it give me a stacktrace of exceptions too?

~~~
rakeshpai
Nope, no stack trace at the moment. This is because the stack has unrolled by
the time window.onerror is hit. However, there might be workarounds - fake
stack traces we can build by walking the callstack in some browsers. I'm
currently working on just this. :)

------
sourav_sachin
This sounds like a really cool idea! Will give it a whirl

------
htilford
Found an IE 7 bug in less than a minute <3

------
pooja_chauhan
Wow Really cool idea...let me give it a try....any discount coupons?

------
endian
s/effect/affect/

~~~
rakeshpai
Thanks. Fixed.

