

Ask HN: I've built a front/back end performance profiler, is there a market? - tonyarkles

Hello, all! I'm currently finishing up my M.Sc. thesis and am thinking
of commercializing some of the work that came out of it. I'm trying to
judge whether or not there would be a decent market for it.<p>I've developed a tool for doing multi-system profiling for web apps.
You've got some JS code for the front-end of your app, some
PHP/Python/Ruby/whatever on the back-end, and a database or two that
actually store content. Maybe you've got a more elaborate setup (async
task queues, a NoSQL document database, whatever). Your application
isn't fast enough, and you're not sure how to speed it up.<p>The tools I've developed help solve this problem. There's a Firefox
plugin and a number of backend plugins that do performance tracing and
aggregate it all together. For a given user action, you can see how
long everything involved took to serve it: which HTTP requests
happened, which Javascript code executed, and which backend code
executed, which database queries executed, etc. Once you've profiled
it, you can drill down into the specific slow parts to figure out what
to fix.<p>I've used it on a few open source projects to prove to myself that it
works and I'm just getting ready to do a few case studies with local
companies to demonstrate that it's actually industrially useful.<p>Right now it's not sufficiently polished to sell as a product, but
it's good enough that I can consult with it: bring me in for a few
days, I'll sit down with your team and help identify and fix the most
significant bottlenecks in your application.<p>So here's my question for HN: Do you think there's a market for
performance consulting like this?
======
hippo33
Tonyarkles, that sounds very cool -- do you have a beta that I can check out?
I don't care if it's not done/polished.

For what it's worth, I'd been looking for a tool like this and was excited to
read this. Previously, I'd been mostly just looking at performance on the
frontend using Firebug and whatnot, and I wanted to know if there were a way
to figure out bottlenecks on one of my sites with AJAX. I couldn't figure out
a good way to figure this out -- didn't seem to be a good tool to kinda bridge
both frontend and backend -- at least that I could find.

Not sure if there's a market, but with so many AJAX apps these days and
seemingly a lack of apps to measure performance bridging front and backend,
seems like it may be promising. Have you talked with other web apps
developers?

~~~
tonyarkles
Hopefully I'll have something more suitable for demoing in the next few weeks.
Right now it's all sitting as a huge blob in an hg repository. There were a
few performance problems that I've just finished fixing in the last 24 hours.

It sounds like your problem is exactly the problem I'm trying to solve; I
started working on it because it was a problem I was having working
industrially and couldn't find a good solution. Turns out there was a
researcher at the local university that was also interested...

I've talked to other local web developers and have had mixed results. Some
were pretty excited about it (and I'm getting ready to do some case studies
with them for my thesis), but others didn't really seem to think it was
something they needed.

~~~
hippo33
Cool --- shoot me an email when you're ready. elizabeth [at] shinyorb [dot]
com. Thanks!

------
aaronblohowiak
There is definitely a market for the consulting, not sure about the market for
the tool.

~~~
tonyarkles
That's what I'm thinking too. Most of the other tools in this space (Firebug,
XDebug, Speedtracer, etc) are all free and I don't expect people to suddenly
start paying for performance tools when everything else is open source. Since
this is thesis work, I have to publish the techniques I'm using to build this
tool (although I don't have to publish the source code).

For consulting, though, I've built up a pile of expertise over the last two
years. I've developed very strong skills for identifying and fixing
performance problems, and this tool is just a way to make my life easier.

One possible approach I've considered is to open-source the tool. This has a
few benefits and a few disadvantages:

\- Benefit: this type of tool enters the broader developer eco-system. People
start to recognize that focusing on single components is a bad way to solve
performance problems.

\- Benefit: other people can contribute to make the tool better.

\- Con: competition. If other people are using the tool, then I end up with a
fair bit more competition for the consulting services.

~~~
silverlight
I would consider open sourcing the tool then selling your time as "the"
expert. Resig's never hurting for jQuery consulting work when he wants it, I'm
sure.

I wouldn't consider open sourcing it a net negative at all. You will get it
out there, and as more "advanced" users start to use it and sing its praises,
you will have more than enough to keep yourself busy helping out those who are
too pressed for time or just have money to burn, or just can't figure it out
on their own.

By not releasing it open source, you will have a much harder time branding
yourself as a "proven" performance expert.

Compare these two "resumes":

"Original author and lead developer of the PerfPlus open source project, used
by thousands of developers worldwide to benchmark and improve their
applications."

vs.

"I'm a new college graduate with a few references and a custom tool I wrote
that's worked well in a handful of cases."

I can tell you which one I'd be more willing to hire (if I had money :-)

~~~
tonyarkles
Yeah, this is very true. Probably the route I'm going to go, just need to
finish my thesis and clean the code up beyond "academic grade" :)

~~~
aaronblohowiak
Make it easier to get installed/running rather than cleaning up the code for
its own sake. Something working and out there is superior to the alternative.

~~~
tonyarkles
Yes, sorry, that's exactly what I mean about "clean it up". No more 30-step
dance to get all the individual pieces up and running :). Right now I'm using
"screen" to launch the different pieces and keep them running, and then
restart them as I make code changes.

The download-build-use cycle is pretty brutal at the moment, but shouldn't
take all that much work to get it in better shape.

