Jdrop – JSON in the cloud
I’m excited to announce the release of Jdrop – a JSON repository in the cloud.
The motivation for Jdrop came from my recent focus on mobile and subsequent launch of bookmarklets for mobile devices (Mobile Perf and Page Resources, followed by Docsource). I like using bookmarklets because they run on all mobile browsers that support JavaScript. Finally – some visibility into mobile performance!
My enthusiasm ebbed once I started using these bookmarklets, however. The information gathered and displayed by these bookmarklets overwhelms the tiny screens on mobile devices. I’m adamant about gathering performance data on actual mobile devices. I don’t want to use emulators or UA switching from my desktop – these techniques introduce bias in the analysis (differences in cache size, connection limits, etc.). Also, they overlook the impact of mobile carrier networks.
I realized what I wanted to do was gather the data on the mobile device, but analyze that data remotely.
Bookmarklets basically perform those two steps: gather data and display data. It was pretty simple to insert a step to save the data to Jdrop. Once the data is in the cloud, it can be accessed from anywhere especially desktops with more screen real estate. The bookmarklet’s display code is easily re-used by wrapping the data in JSON and passing it back to the display code inside Jdrop’s web page. That, in a nutshell, is Jdrop.
I integrated Jdrop with my two bookmarklets: Page Resources and Docsource. And I’m ecstatic to announce that Thomas Fuchs added Jdrop to his DOM Monster bookmarklet. When you run these bookmarklets you see a new “save to Jdrop” link.
All of these bookmarklets, plus others, are in the uber Mobile Perf bookmarklet. The full set of steps are as follows:
On your mobile device:
- sign in to Jdrop
- install the Mobile Perf bookmarklet
- run Page Resources, Docsource, or DOM Monster and click “save to Jdrop”
On your desktop or laptop:
- sign in to Jdrop
- click on “My JSON” to view the data you saved
If you have or want to build a bookmarklet focused on mobile performance, I encourage you to integrate it with Jdrop. The Jdrop devdocs explain the necessary changes.
Jdrop is in alpha mode. You’ll likely find bugs or think of new features – if so please add them to the list of issues. Jdrop is open source so you can see all the code. A huge shout out to James Pearce who wrote a ton of code including oauth-php and almost all of the UI.
I gave a sneak peek of Jdrop at my workshop today at Webstock. Along with Jdrop I also demoed the new Blaze Mobile Performance Tool and pcapperf. We’ve got the beginnings of a mobile performance toolkit. I’m starting to gather more data (on my mobile devices) and analyzing that data (on my desktop) thanks to Jdrop and these other tools. I look forward to working with the mobile dev community to create more tools and use those to make a faster mobile web.
Mathias Bynens | 16-Feb-11 at 3:55 am | Permalink |
Why does Jdrop require access to my Google Contacts when connecting via a Google Account?
Steve Souders | 16-Feb-11 at 4:00 am | Permalink |
@Mathias: We’re using Oauth for authentication. Oauth to Google requires mentioning a service to authenticate with. Jdrop doesn’t actually access any of your contacts. We’re looking at OpenID instead of Oauth as a way to bypass this step. If you prefer, you can use Twitter to authenticate.
Jörn Zaefferer | 16-Feb-11 at 6:04 am | Permalink |
Hi Steve,
just tested Jdrop, works well! The results of DOM monster suggest that the tools test their own scripts and markup – DOM monster mentions a lot of inline JavaScript, but the app under test had just two short lines of inline code.
Depending on the order in which you run the tools, you’ll see the output of one tool in the output of the other.
Even the UI of the perf bookmarklet itself will leave its traces. Would be nice to make the tools aware of each other, maybe through some marker class to add to elements to ignore. Or if the tools themselves don’t do the filtering, maybe Jdrop could do that.
Regards
Jörn
Dan DeFelippi | 16-Feb-11 at 7:10 am | Permalink |
Steve,
Very cool service. I’ve been thinking about something similar but with one big difference: results show in real time. Have you contemplated using a PubSub or other communications model to show results in real time on the desktop? It would be pretty easy to throw together a basic server to do this using NodeJS.
James Pearce | 16-Feb-11 at 9:52 am | Permalink |
@Mathias As Steve says, Google requires you to specify a (Google Service) scope when asking for OAuth – when actually all we needed was a confirmed account ID to key your results off.
We have no interest in doing anything with your contacts information… we just use it to query your own profile name :-)
Hopefully a smarter OpenID implementation in due course.
Steve Souders | 16-Feb-11 at 12:25 pm | Permalink |
@Jörn: Yes, inserting the bookmarklet into the page means that bookmarklet’s resources (scripts, DOM elements) can affect the results. I’ve added this to the list of issues.
@Dan: I thought about that auto update feature. I’ll keep it on the wish list.
LungZeno | 22-Feb-11 at 5:27 am | Permalink |
Here may be bugs. It needs login to view JSON in http://jdrop.org/public
Sorry for my poor English.
Steve Souders | 04-Mar-11 at 8:06 pm | Permalink |
@LungZeno: I don’t get a login prompt when going to that URL. Please submit a bug with a full description of how to reproduce the problem: http://code.google.com/p/jdrop/issues/list
Jessica Jacobs | 16-Mar-11 at 4:10 pm | Permalink |
Steve,
Thanks so much for working on something like this! I’ve been building some ad hoc tools for assessing mobile devices after finding so little information online, but it’s really tough to do when I’m behind tight deadlines since it can be time consuming. This is a huge add to my arsenal – like a BFG. (Oh, Doom.) I’ve just been thrown into a whirlwind mobile project and I’m excited by the new terrain – although some results from testing the terrain are less than exciting, to be sure! The mobile world is bound for more entropy before anything faintly resembling stability, and we need all the tools we can get!
It doesn’t seem like any of these tools provide javascript profiling, though – I am curious about how fast it takes to run some of my functions on a mobile device. Perhaps I will try to cook something up?