9 ms·
Why We're Building Observable
- mrkwse 6y agoI really like Observable a lot, and have made a couple of brief, messy visualisations with it (messy in terms of code at least). I hope at some point they can offer some sort of offline support. The focus on ease of sharing is great, and the volume and breadth of content has really helped me to get more proficient with d3. The inability to open and edit notebooks offline/locally is a real inconvenience, however. I have a small personal site on Netlify (with Next.js) and going forward I'm looking at hosting the sort of stuff I have on Observable there, simply as it's easier to work to when offline. The quality of the community and resources is a really valuable thing, but the need to be online is a real drawback at times.
- ontouchstart 6y agoYou can host production notebooks offline/locally or on your own SSG/CDN. Here is a project that we built last year (by its nature, it had a limited shelf life so it made no sense to have long term cloud support.) https://spike150.mocanyc.org/ https://spike150.mocanyc.org/ If you inspect the source in the browser, you will see that the notebooks are hosted on the same server. P.S. If you want online interactive notebook on your own site, I guess that is their business model either as a viral sharing of free notebooks or paid private team sharing. (I was on a team plan during the development of the project. But once the project is done, there is no need for us to continue on team plan and be interactive. I am glad that they offer support of offline production notebook.) P.P.S. If Observable Team is listening, here is a business idea for them: observable playground as a service. It would be less a technical challenge than a business development challenge.
- kowlo 6y agoIndeed having the environment offline would be great. But this doesn't seem to fit their model for profit.
- rgovostes 6y agoCoincidentally, I tinkered with my first Observable notebook last night (https://observablehq.com/@rzg/prosthaphaeresis https://observablehq.com/@rzg/prosthaphaeresis -- don't judge too harshly). One of the improvements on the computational notebook concept is that it seems to compute a data flow graph so it knows what cells to update when the data changes, without you needing to re-run cells in a particular sequence. The cells can also be out of order. The editor interface is pretty slick, and I wish it were open source so I could use it in other projects. (Mike Bostock, one of the founders, is also the creator of D3.js and the information visualization gallery bl.ocks.org. Here's my favorite: https://bl.ocks.org/mbostock/31bd072e50eaf550d79e https://bl.ocks.org/mbostock/31bd072e50eaf550d79e)
- mrkwse 6y agoThe data flow is really well implemented with Observable. The fact you don't need to go through and repeat the execution of a number of downstream cells when you make a change is really useful. Another great advantage they have is the data map on the right-hand margin. It's a good way of seeing how complex a notebook is getting as well as being a really efficient way of navigating through the data flow.
- breck 6y agoWow, never heard of Prosthaphaeresis before. So cool! Really enjoyed playing with your notebook. So concise and clear. thanks!
- billconan 6y agoAn issue of visualization on the web I don’t know how to solve is how to load large data.
- chatmasta 6y agoObservable supports direct DB connections [0], but these only work in private notebooks at the moment. At Splitgraph [1] we're building a "data delivery network" (DDN, like a CDN but for databases) that looks like a big Postgres database. It works really well with the Observable Postgres client in private notebooks -- you configure it like you would for any Postgres connection. For public notebooks, you can use our HTTP API for sending SQL queries directly to the DDN. Here's an example [2] using that SQL-over-HTTP API to plot some Covid data. [0] https://observablehq.com/@observablehq/connecting-to-databases https://observablehq.com/@observablehq/connecting-to-databas... [1] https://www.splitgraph.com https://www.splitgraph.com [2] https://observablehq.com/@mildbyte/splitgraph-ddn-oxcovid19-other-dataset-join-and-visualiza https://observablehq.com/@mildbyte/splitgraph-ddn-oxcovid19-...
- RobinL 6y agoVery much depends on how large you're talking, but check out Apache Arrow: https://observablehq.com/@theneuralbit/introduction-to-apache-arrow https://observablehq.com/@theneuralbit/introduction-to-apach... https://observablehq.com/@uwdata/arquero-and-apache-arrow https://observablehq.com/@uwdata/arquero-and-apache-arrow
- breck 6y agoI've found 10MB (gzipped) to be a good rule of them. Anything bigger, query a backend. Storing bigger things in ephemeral tab memory can be painful if you refresh browser a lot.
- brandnamehq 6y agoGreat domain. We like hq domains too :)
- petulla 6y agoMy gripe with Observable is I can't fit into a Python-based workflow. I.e., a machine learning or gpu-training worfklow. It is a nice place to create explainers, though. I almost think of it as being like a Medium alternative.
- fractionalhare 6y agoThis is also the main thing holding me back from using it. The Observable experience feels more polished than Jupyter for me.
- petulla 6y agoMy hope is eventually to be able to run it locally and integrate it into other language, like Tensorboard.
- catacombs 6y ago> My gripe with Observable is I can't fit into a Python-based workflow. Observable is for JavaScript ecosystem. I wouldn't count on them implementing anything for Python.
- hobofan 6y agoWith the growth expectations that come with the funding amount they just collected, I'd count on it. There is just so much more demand for data visualization and notebook-style projects in the Python community compared to the JS community.
- pea 6y agoFor Python, Datapane may solve your use-case (I am one of the founders). It's an open source framework for creating HTML reports from text, dataframes, plots (altair/bokeh/plotly/folium), and files. We provide a free public platform for sharing reports on the web, and you can check out some of the things our users are building here: https://datapane.com/gallery/ https://datapane.com/gallery/ It's different to something like Observable in that you import it into your existing Python environment (Colab, Jupyter, Airflow, etc.), build the reports from your assets, and push them up -- as opposed to having to do the analysis itself in our interface.
- darksaints 6y agoI really like Observable and have used it quite a bit, but I absolutely hate that it is the default documentation form for D3, because D3 is a javascript library, and Observable is not javascript. At the very least it would be nice if there was a way to take an example and press a button to get the same thing in javascript.
- carls 6y agoA lot of the code you can write does look like JS, though. You can use the libraries that may be common to a JS dev. It's not perfect, but there's enough overlap and the differences are understandable and documented[1]. Also having learned a lot of D3 by reading through Observable tutorials, I'm curious what you've seen that doesn't seem to work when you port it to JS? One thing I'm aware of is that you have to move a lot of the plotting code into the .then() method of promise when you're loading data. ------ [1] Observable's not JavaScript: https://observablehq.com/@observablehq/observables-not-javascript https://observablehq.com/@observablehq/observables-not-javas...
- macNchz 6y agoYeah I pulled out d3 for a project recently, having used it before–quite a bit at one point–but not for several years. I just wanted to browse some basic examples for the current version, to refresh my memory and familiarize myself with the current API, but the reliance on Observable drove me up the wall. Even a lot of the old examples from bl.ocks.org just redirect to Observable now. The presentation is one more layer to understand between "here's the code" and "here's what the code produces". I do generally like the notebook format for exploratory data work, but it's not at all ideal as part of a workflow for writing code that will fit into a larger application, in my experience.
- carls 6y agoI'm a big fan of Observable, having used it to prototype and learn a number of different visualizations. Note that you don't just have to use D3, but can use other visualization libraries as well (i.e. Vega-Lite, Highcharts). I also want to shout out Mike Bostock, one of the company founders (and creator of D3). I emailed him randomly to ask for some help with a d3 package and he replied the next morning. Busy creators who nevertheless still make themselves available to engaging with the community always impress me!
- jeffbee 6y agoBostock jumps into random Twitter threads to answer questions from Observable users. He's really helpful and generous.
- breck 6y agoHe responded to me too, almost a decade ago when I was first getting into the field and looking for mentors. He had some great tips too (basically which was to not do what I was doing privately emailing devs asking for mentorship and instead get involved with the public open communities on via GitHub, Stackoverflow, sharing demos, etc). Obvious advice in hindsight, but took me a while to internalize that.
- purplecats 6y agowhy is it obvious?
- deleted 6y ago[deleted]
- tlarkworthy 6y agoI am a huge fan of Observable and I think it has massive potential beyond visualizations. To me it's the holy grail of a development environment, there is no separation between development and output. There is no toolchain separating source and binary, infact, the binary is partially recomputed on changes. On top, it is forkable for others to build upon. It support comments, its reactive. When I explain it to people I say its like a combination excel + vscode + google docs + github. There is nothing like it! I been trying to see how far I can push it for non- visualization software. Turns out... pretty far.... Firebase + Stripe => https://observablehq.com/embed/@tomlarkworthy/saas-tutorial https://observablehq.com/embed/@tomlarkworthy/saas-tutorial On Demand Minecraft Servers => https://observablehq.com/@tomlarkworthy/minecraft-servers https://observablehq.com/@tomlarkworthy/minecraft-servers Zero deploy serverless cells => https://observablehq.com/@tomlarkworthy/serverside-cells https://observablehq.com/@tomlarkworthy/serverside-cells With serverless cells I can serve HTTP endpoints from a notebook! E.g. custom HTML like: https://serversidecells-ibyw6dtm4q-ey.a.run.app/notebooks/@tomlarkworthy/serverside-cells/deployments/social_link/cells/webpage https://serversidecells-ibyw6dtm4q-ey.a.run.app/notebooks/@t... is generated from a notebook! I am so productive in Observable because there is no context switch between development, using the product and debugging, it's all just one thing. Amazing, utterly amazing. I hope the Observable team can accommodate my use cases, as its clearly not what they had in mind.
- infinite8s 6y agoThat's what it's like to use Smalltalk.
- justanothersys 6y agoI also found Observable and spent a week or so rebuilding https://nopaint.art https://nopaint.art in it! I really liked how you could export a Notebook and it would pull in all the dependencies to make a SPA. I think it would be such a beautiful way to develop my software with other people. (Edit: I only built a prototype that has not been released, but I still believe it would be viable over the current game engine I'm using, especially for collaboration.)
- SamBam 6y agoI'm a little confused about what the announcement is. Are they moving out of beta?
- carls 6y agoIt's a bit buried, but if you click through the link about how today is a big day for Observable, you'll notice it links to an article announcing that they raised their Series A today: $10.5M from Sequoia and Acrew.
- ParadiseEclipse 6y agoI wonder why it's buried... the comments on this thread don't seem to be on a single topic, so it looks like most people have struggled to find the point too
- kowlo 6y agoYou can't self-host with Observable. For many, that means it's not a feasible replacement or improvement over an existing literate programming environment. It is a bit silly to downvote this for not being true, when it is factual.
- j-pb 6y agoNot true. The Observable runtime is open source, and trivial to integrate into your existing react/whatever webapp. There is also a vscode plugin that allows for live editing and rendering. It doesn't give you the ObservableHQ interface, but tbh I like working with files more. It also allows me to git everything. https://marketplace.visualstudio.com/items?itemName=GordonSmith.observable-js https://marketplace.visualstudio.com/items?itemName=GordonSm...
- kowlo 6y agoIt is true. You can't self-host the same way you can self-host the Jupyter Notebook or Jupyter Lab environment. Or has that changed? Can I work on something offline without communicating with their servers?
- j-pb 6y agoCheck the link provided. It's just running inside of vscode, with no communication to their servers whatsoever.
- kowlo 6y agoI did, it's not the same literate programming environment like I said. Are we misunderstanding each other?
- j-pb 6y ago"You can't self-host with Observable." You can self host observble, but you can't self host observablehq. Literate programming just means the combination of code and documentation/visualisation. Observablehq provides a nice inline code editor, but that's incidental to what observable is. Git can also be used with a GUI but that GUI is not essential to what git is. Simularly observable notebooks can just as well be created without the GUI, in a quite convenient way.
- anentropic 6y agoSkimming the docs... the tutorials are really nicely done but it's hard to find a clear description of what exactly is possible. Can you install libraries (from npm?) Can you build and share custom components, not just notebooks? Can you connect to a web server?
- tracyhenry 6y agoYou can install npm libraries. You can connect to DBMS servers (not sure about arbitrary web servers). I believe they offer iframes to facilitate embedding but not frontend components. Interactive vis is not very well integrated with the frontend ecosystem IMHO. Integrating a very interactive D3 vis with React, for example, can be painful.
- silentsea90 6y agoExtremely dumb question: how is this different from tableau and/or jupyter notebooks? I don't use visualizations and don't understand this space :)
- tracyhenry 6y agoTableau offers templated visualizations. You generally do not need to program to create stuff. Observable is a notebook environment where you can write JS (mostly) to create and tweak highly customized visualizations. It's similar to Jupyter on a very high level (they all have reactive cells for example), but for JS and visualizations.
- silentsea90 6y agoThat makes sense! Thank you! Some more questions: 1) Assuming the bulk of folks use jupyter notebooks for analysis, why not integrate with jupyter or use d3.js in jupyter directly? I assume there would be a learning curve for data manipulation on js where analysts/scientists would prefer python 2) Assuming that this isn't even meant for the jupyter audience, who is it meant for within a company?
- tracyhenry 6y agoI mean this is my question as well: how are they making money? As of right now Observable seems like a mix of use cases like Medium-like explanation articles, vis debugging/authoring and interactive journalism that don't seem to generate much money (ofc I can be wrong). I totally agree with you that the DS community is much much larger than the vis community. With the new funding round I think they should start doing something with DS.
- carls 6y agoIt looks like their current plan for monetization is a per user subscription fee for added features on the notebook: https://observablehq.com/teams https://observablehq.com/teams Given the marketing on the page, it also looks like it's targeted at business use cases (i.e. a bunch of data scientists who want to visualize something in d3 but also want to collaborate).
- xipho 6y agoObservable is fantastic, but as others have hinted at, IMO, I think it's trying to lock you in. I want the raw JS, in one click, so that I can build out a visualization locally, just hacking on HTML/JS. Steps to doing this are highly obfuscated when they could be a single button. Overall you can see its evolution from prior sites- someone spent a huge amount of time demonstrating cool visualizations, then tried to make it all "proprietary". Nothing wrong with that, but why not make people addicted to the service by giving them the raw drug, rather than making them hate you for dancing through hoops? Again- huge fan of access to many cool visualizations that have greatly improved what I can express visually for presentations etc., but very unhappy that I can't do this so much easier for my particular workflow. I'd love to be shown otherwise, but I've also spent a lot of time looking for answers, reading forum responses, etc., and they seem to all reflect wanting you to go through them, not along for the ride with them.
- mistidoi 6y agoI kind of thought that too, but somewhere around the start of the pandemic, I was able to quickly develop an interactive dataviz on Observable (https://observablehq.com/@mistidoi/coronavirus-tests-positives-and-deaths-by-state https://observablehq.com/@mistidoi/coronavirus-tests-positiv...) and drop it into a blog post trivially (https://relevant.healthcare/blog/2020-04-02-covid-state-visualization/ https://relevant.healthcare/blog/2020-04-02-covid-state-visu...). Beyond the work on the viz itself, it took something like 15 minutes to get it into the blog post, and it's more or less seamless. Confession though, I might have been powered by Mike Bostock fanboy juice. d3 is part of what made me fall in love with programming.
- carls 6y agoCan you share how you were able to embed the notebook into your blog post?
- RobinL 6y agoI don't think that's entirely fair. For instance, I host content on my personal website [0] that is written in using Observable, and in fact the site provides guides to allow anyone to export content[1] and embed elsewhere online. My content can be entirely under my control if I save my libraries out of the Observable API as a tarball[2]. I genuinely think the differences between Observable and 'pure' javascript are driven by the vision for a more powerful way of using javascript for rapid prototyping, rather than any attempt to make it proprietary. I think these ideas are revolutionary and Observable is one of my favourite working environments as a data scientist. I also think that Mike Bostock has shown good faith, and dedication to the open source community through decades of work, which he's always given away for free. With all that said, if ObservableHQ and its API were to disappear overnight, the lack of an editing environment would make it difficult to update existing content and so I think there is space for a offline version of the editor. As far as I understand it, nothing's stopping a third party building this. [0]https://www.robinlinacre.com/energy-usage/ https://www.robinlinacre.com/energy-usage/ [1]https://observablehq.com/@observablehq/downloading-and-embedding-notebooks https://observablehq.com/@observablehq/downloading-and-embed... [2]https://github.com/RobinL/robinl.github.io/tree/dev/tgz https://github.com/RobinL/robinl.github.io/tree/dev/tgz
- golemiprague 6y agoI might be deficient in some way but I just feel a bit dumbstruck with a lot of the visualisations and I can't make sense of them. Would rather just read a table with simple numbers. Except from very simple graphs everything else looks to me like a cognitive overload which I can't decipher.
- dgreensp 6y agoIf they added TypeScript support and made it about literate programming for code modules, I would use the heck out of it.
- RandomWorker 6y agoI love this stuff! Amazing work.