Dash
p/dash
The documentation browser for 150+ APIs
Kane Hsieh
Dash — Instant offline access to 130+ API documentation sets.
Featured
16
Replies
Ryan Hoover
Super useful. I believe @alexbaldwin mentioned he uses this when coding offline to avoid distractions.
Alex Baldwin
This is one of my secrets to getting things done. I like to shift into "offline mode" fairly often. This alleviates most of the worries of not having Stack Overflow for basic code questions.
Robert Shedd
Dash works really well - great product. @staringispolite - what do you mean by you wish it was clearer whether they had versions built in. Do you mean in terms of displaying the differences in how the APIs (and the documentation) changes between versions?
Jonathan Howard
@shedd - Let's say you work at a large company that's stuck one version back on jQuery (only 1.11/2.1 are supported) or Python (only 2.7.6 of the 2.x versions are supported) or Drupal (only 7/8 are supported). It looks to me like you're out of luck. Perhaps this makes sense to be a feature of the paid version, since smaller projects are unlikely to be stuck on older versions. (And I actually like the subtle push to upgrade)
Jonathan Howard
I see what you mean about an incomplete versioning system being potentially worse than no versions. It seems like you already have that though with Drupal, Zend, Python, etc, no? So you scrape -> CDN yourself -> download via client? (With exceptions for iOS and Mac it looks like?) More broadly than archive.org: What are the challenges involved in maintaining a product with a large web scraping component?
Jonathan Howard
Interesting! Thanks for sharing @kapeli! I have a couple thoughts: Re Implementation: You seem to have versions implemented unofficially now, via separate documentation packs. (eg It looks like Drupal 7 and 8 aren't "versions" of a master "Drupal" documentation, they're just separate top-level packs). This seems like a fine model in terms of data model and UX. Perhaps you could extend this to all version support, with older versions hidden by default. (and/or only available in the pay version). Re Sourcing: You only need to scrape older versions once right? Perhaps the Internet Archive would solve this problem. eg, this appears to be the jQuery 1.9.1 documentation https://web.archive.org/web/2013...
Jonathan Howard
Yep, I heard about this from Alex at a HackDesign feedbackathon. This is a great reminder to finally check it out. I do wish it were clearer whether they had versions built in. There's nothing worse than wrestling with a bug for an hour then realizing it's because of a difference between versions. Downloaded it to investigate: There are versions for major libraries only (iOS, Mac OS X, Rails, OpenGL... but even jQuery only has the latest). Perhaps a nice feature to grow into would be selecting which version your stack runs. In a production environment, it's not always practical to stay on the most up-to-date version.
Josh Puetz
I use Dash every day. It's awesome, thanks @kapeli!
Thomas Schranz ⛄️
Super slick, installed.
Kapeli
@staringispolite - Versions support is something I've always wanted to add, but couldn't find a way to handle it properly. For example, there's no way to provide docs for older versions of jQuery since as far as I know the jQuery docs are only available at http://api.jquery.com/, which is always for the latest version. Drupal is the same as jQuery, only the latest for major versions are supported at https://api.drupal.org/api/drupal. No one requested a Drupal 6 docset, so I thought there's no need for one. If you require a Drupal 6 docset, please let me know, as I can definitely add that. Python docsets for older versions are possible. However, I can't really set up an interface which allows installs of older versions only for some docsets and not for others, as users would complain why older versions aren't available for the APIs they want (e.g. for jQuery or Drupal). Managing the older versions of docsets would be a bit of a nightmare as well, in terms of generation and storage. TL;DR: Versions support is something I really want, but haven't figured out yet.
Kapeli
@staringispolite - Implementation: I currently provide docsets for major latest versions. The actual interface is not a problem, as I pretty much have it done (see http://cl.ly/image/1l0L2v102G1V/o which is what's coming in the next update of Dash). The main problem with implementation is explaining to users that older versions for some APIs are not possible to generate. It's sad, but in my experience it's better to not add a feature at all than to add a half-baked feature which only works in some cases. Sourcing: Not necessarily, for example if I'd figure out there's something wrong with a generation script, I'd need to regenerate docsets for all the old versions as well. The main problem with sourcing is that I currently maintain around 130 docsets, if I'd add versioning the number of docsets I'd have to maintain might get a lot larger. I don't think using the web archive is a good idea, as some APIs might have a good reason not to provide docs except for the latest version. Scraping the web archive might be challenging as well.
Kapeli
@staringispolite - The current versioning for Drupal, Zend, Python and so on is a hack. It's only for major versions. In a nutshell, I maintain a separate docset and docset feed for each major version of a popular API. This is something I can easily handle/maintain. The process looks like this: 1. Grab the docs for offline use in HTML format somehow (this can be httrack, direct download for APIs that provide their docs for download or direct generation from source using Doxygen or Sphinx or whatever). This is the hardest/most time consuming part as the docs need to be optimised for offline use, which some docs really don't like (AngularJS!). 2. Generate/scrape the docset. This is described at http://kapeli.com/docsets in more detail. 3. CDN
ez
awesome app. this is really what I need..
Doug C. Hardester
Dash combined with Alfred (alfredapp.com) is productivity at its best. Dash makes searching documentation (and forums) easier and faster than googling in-browser. Plus it's separated from the browser where results can get lost. I suggest it to every developer I know.
Sahiti Sseemaku
this is awesome!
Leon van der Grient
Awesome app. Very useful.