https://observablehq.com/@fil/modified-stereographic-project... https://observablehq.com/@mbostock/tissots-indicatrices-on-a... https://observablehq.com/@mbostock/manipulating-flat-arrays, https://observablehq.com/@awoodruff/diy-hillshade. Oh, I thought you were talking about the Hebrew bible and a few other books because of your remark, "some written books repeatedly copied by generations of scribes have managed to survive." Although there is typically no use for this mechanism outside libraries. This code is written in the app.component.ts file. That said, we’re explicitly designing for the reactivity of the notebook environment. We did just launch a big improvement to keyboard controls this week that mirrors vim’s “Normal Mode”: I saw that. JavaScript — Observables Under The Hood. This blog is very frustrating to read. Why force an order. (Previously I was talking about e.g. > Other user interface toolkits that employ this [Observer] pattern are InterViews [LVC89], the Andrew Toolkit [P+88], and Unidraw [VL90]. That is what .subscribe is used for: to subscribe to the resulting stream and terminate the observable. If you want your code to survive the best bet is to get it inserted into Linux or something. What if we wanted to try and implement that same sort of functionality using only vanilla JavaScript? Specifically, we have gone through great pain-staking measures to make it just JavaScript and linear (while avoiding some of the pitfalls of Jupiter notebooks, like "losing state in cells"). You can read more about this specific issue here: https://blog.runkit.com/2015/09/10/time-traveling-in-node-js... 2. Media longevity is entirely compatible with mass production. 4. Sure, I could just stop repeatedly touching the object so much, but I fidget with what I'm holding. https://observablehq.com/@pstuffa/making-maps-with-nyc-open-... https://observablehq.com/@mootari/getting-artsy-with-lloyd, https://observablehq.com/@bps10/sensations-from-single-cones. Reactivity means that you wan work on any little piece of the code at any time, and you don't have to reload the page, or re-evaluate the entire notebook. Any help on where I am going wrong would be great. You know what would be nice, in a scifi universe? javascript rxjs observable. This has nothing to do with the Observable primitive. Observables are not part of the JavaScript language yet but are being proposed to be added to the language. https://observablehq.com/@benmaier/a-visually-more-appealing... https://observablehq.com/@veltman/centerline-labeling. In my Api service I have this simple getUsers function to fetch all of the users on the api. I love JupyterLab, but I think long-term it is boxed in by its design of being Python/R in the browser. My exact reaction - and the reason I clicked through, though I must say I was pleasantly surprised it was this, and not JavaScript Observables. https://epiphany.pub/post?refId=2684bc94f9fcb9ffe637ebfbeba2... for 1. epiphany is also non-linear, because I'd like to reveal the results and then explain pieces. The Markdown tagged template literal is part of the standard library, and you can define your own that work just like it. There aren't many people working on archival media because product-market fit is really elusive with a 3000-year-long feedback cycle, although Norsam at least has an available product, though at a price point that discourages mass production. So it looks like we’re doing pretty alright so far. I am not sure if it is easy (or possible) to backup / self-host the code. I like this project quite a bit, but it is unfortunately named. In what sense is an Observablehq document without the editor GUI the same document? If you create an Observable , you provide a callback function that will be called upon invoking subscribe method on the Observable object. I can not do anything with observable. public getUsers(url: string): Observable { return this._http.get(url); } It's not snobbery to say that the level of polish and sophistication present in what they put out (in terms of the reactive architecture. In React, components are just a representation of what the user interface should look like. Unlike Jupyter notebook, the code is non-linear. It’s also possible to rewrite the Observable examples in vanilla JavaScript, but it requires re-implementing all the stuff that reactivity gives you “for free”, like adding event listeners for anything that … Clicking to reveal can be simply addressed with a global Expand-All toggle. I haven't tried it myself, but there is a Javascript kernel for jupyter[1]. Observable Objects. Output: Making an Observable: In the following example, we will be making a simple observable for getting a table of 2. Typical, that 5 mins after I post, I find a solution. Your individual documents can be pretty easily exported and self-hosted. In other news, check out my new web framework, called MVC. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe... https://observablehq.com/collection/@observablehq/explorable... https://observablehq.com/@mbostock/predator-and-prey, https://observablehq.com/@kristw/boba-science, https://en.wikipedia.org/wiki/Reactive_programming. ES2015 introduced generator f… How hard can it be? My complaint isn’t that this steals SEO, it’s that this becomes less searchable because any search for “Observable JavaScript” is going to turn up RxJS/MobX or one of the other libraries that implement Observable primitive types. I am here to do and not to observe. Ultimately, that’s why each cell has content before source code — the content is always there, and the code may or may not be visible, so working with the notebook as a whole feels much more stable and less jumpy with the rendered value as primary and the source code as secondary. What would be fascinating to me is if these tools made it significantly easier to make "Explorable Explanations" (nicky case, bret victor). (3) It’s Javascript (with a few minor additions as shown in TFA), but you can use whatever javascript tagged template you want, including html, markdown, or anything else you can dream up. First Observable emits a single value on document click and immediately completes (intentionally). Observable is where people can create, collaborate, and learn with data. Here’s a sequence of sound wave primers by Dylan Freedman: https://observablehq.com/@freedmand/sounds, Mike wrote an exploration of the Lotka-Volterra equations for simulating the dynamics of populations of predators and prey: https://observablehq.com/@mbostock/predator-and-prey, Or something physical, like Jacob Rus figuring out how a chunk of metal from a machinist’s workshop can scribe out a perfect sine curve: https://observablehq.com/@jrus/sinebar, Or something fun, with Krist Wongsuphasawat’s tapioca pearl to tea level Boba Calculator: https://observablehq.com/@kristw/boba-science. Given the relative ease of micro-engraving many megabytes, though, it might make more sense as a collective project. Not observable. Observable’s not JavaScript An Observable notebook by Observable. As much I try to like this project, still, something feels clunky. YMMV. This means that Subjects are multicast, and Observables are unicast. Not entirely right. In that sense, the syntax is extensible. Things are confusing enough without this kind of nonsense. I have found this to be extremely helpful in the past year or two trying to work during my 2-year-old’s nap time. You’re still stuck reloading the whole enchilada any time you make a change. have stayed partially intact. With observable.subscribe, the given Observer is not registered as a listener in the Observable. It’s certainly possible to use the browser’s javascript console to poke around the internals of bokehjs, but observable … The Subject is another type of Observable, and it allows value to be consumed by many Observers, not like in the normal Observable just by one. Observable is not just another JavaScript sandbox. ", Edit: with regard to ReactiveX...well yeah. observable and promises are used to handle the asynchronous calls in a javascript. This class and the Observer interface have been deprecated. This code is written in the app.component.ts file. ... After this code runs we will get Observable, because the map function returns Observable. Julia or Python/numpy). It feels like I've picked up an object and it was sticky and got residue left behind on my hands each time I interact with it. Working on fundamentally reactive code in a traditional text editor is ... alright, I guess. you could download all your data. "Observable is a used for . The Rhind Papyrus survives in the 3500-year-old original, including its non-digital aspects; although it is a (digital) copy of an older book, no other ancient or medieval copies of that book or of the Rhind Papyrus itself are known. As for Observable: you could relatively quickly and straight-forwardly build yourself a mediocre version of the editor interface. One of the explicit goals is to make it easier to create explorable explanations. Mixing notes and code is such an interesting use-case. In rare cases, it can be convenient to have an observable primitive that is not owned by an object. (1 & 2a) These two features both change incentives for notebook authors: since code can be hidden in the default view authors are not afraid to use a better implementation which includes distracting technical details; in other notebook environments I have noticed authors intentionally use worse-performing but simpler implementations, and technical details often get moved to some external library, hiding the code much more deeply than just putting it in a cell with hidden source / moving the cell to the bottom of the document. It may be an awesome piece of javascript to admire and behold, but to the scientist that has decades of fortran and matlab programs he's collected over the years, it's a tall order to expect him to rewrite everything in Observable. The first thing needed is the ability to observe changes. Kinda funny how much just one guy could affect research. Running Chrome Version 71.0.3578.98 (Official Build) (64-bit) on Ubuntu 18.04. However, this API has been deprecated and removed from browsers. Here are the two ways to do it depending on your versions: Typical, that 5 mins after I post, I find a solution. handles everything nicely. So a thing like Observable, where they are similarly committed to the reactive interactive environment, without being committed to legacy languages (and in fact are willing to head down toward a reactive language which are far outnumbered by the languages akin to Python/R), could be very interesting down the line. Making your documents' interpretability conditional on the survival of a mere commercial interest is a good example of such archival sabotage, as many authors and historians have discovered, to their sorrow, in the Geocities era. On the contrary, an Observable is lazy. An object that's not fidgetable like every other of its kind is unnecessarily hostile. We can use Observables without Angular or with Angular. Oh, this is interesting — Observablehq isn't free software? https://observablehq.com/@observablehq/suggestions-and-comme... https://en.wikipedia.org/wiki/Literate_programming, https://observablehq.com/@jrus/munsell-spin, https://en.wikipedia.org/wiki/Big_O_notation, https://emil.fi/m/2019-06-15_13-17-36_siU3iwbN.png. Hah, I feel the opposite. GitHub and and a standalone page? But when business is involved, there’s no absolute guarantee. Because of this, one of the most common use-case for mergeMapis requests that should not be canceled, think writes rather than reads. It feels kinda like naming your project "Array map for JavaScript. Just TeX and Big-O notation alone would be enough to permanently enshrine him in the CS heap of fame, but the hits don't stop there! It would be great if people stopped using Matlab for new open source projects (in favor of e.g. https://observablehq.com/@freedmand/sounds https://observablehq.com/@freedmand/sounds-2. I think Jupyter has a lot of legs and will be great for many, many years ahead. I thought they were talking about Observables as in the Reactive Observables (1) from RxJS (2) et al. It is also possible to e.g. Come on, RxJS stole that (and "reactive") terms from prior work, which was arguably more interesting for anyone except web developers. Just checked out live commenting feature on Observable [1], the ability to send code suggestions and preview + merge suggestion with 1-click looks amazing. Now, the important thing is that the code half of the cell is often collapsed. What I'm talking about is editing code with Vim-like keys INSIDE the cells. It provides me with some understanding of how Vue (et al) does its thing behind the scenes + I’ve learned about the findIndex array method. Observable gets to start fresh and build a language that best enables an interactive visual notebook environment, whereas the others are great languages but that kind of notebook environment came later and must be shaped to fit the languages. Yes, it's nice that you can "observe" your code auto updating. https://observablehq.com/@larsvers/hexgrid-maps-with-d3-hexg... https://observablehq.com/@lemonnish/rotating-geometry, https://observablehq.com/@stwind/how-raymarching-works. I'll be the first, as a user, to say YES to this implementation. Allow listeners to subscribe to changes 3. for 4. The JS of course is JavaScript. That's your idea, not mine. 1. I shouldn't be surprised, that man had a lot going on. We provide a parser¹ and a runtime², and you can download a copy of any notebook compiled to a JavaScript module: Thanks for the information. We don't have a lot of information about what the next 3000 years are like, but with modern machinery it's relatively straightforward and affordable to produce sub-gigabyte-scale archives that would have easily survived short periods like the last 3000 years, even without copying. But you can do both! Here is an example of our new class in use that creates an observable, listens for changes, and logs the… Can you make cycles of cell changes? I kinda want Observable to be it's own language that can compile to JS... not saying it would be a good general purpose lang by any means, but it would be interesting to experiment with a 'first-class observable' language. It is quite likely that if the platform becomes extremely popular better archival solutions will be found. That's the reason that, for example, the older books of the Tanakh survive from that time in some form, even though they weren't carved into stone: the alphabet is a digital technology, not an analog one, enabling verbatim copying. Since we can’t use a built-in Observable, we rely on a popular Observable library called RxJS. Knuth has been doing literate programming for 35+ years, That's not true, big-O notation (also called Landau symbols) was used as early as 1894 by Paul Bachmann (. I have the sense that you're not seriously engaging with the problem, but rather looking for a quick dismissal, so you may not be interested in the following: It's relatively straightforward to micro-engrave megabytes of programs onto copper, glass, silicon, nickel, and similarly stable materials, which will easily survive for a million years. Thanks! (1) Non-linear cell order (and in particular re-running all dependent cells anytime anything gets changed) is a huge improvement vs. mathematica/matlab/jupyter notebooks. This is the first I've heard of Observable and I loved this. I don’t believe micro-engraving to be a serious long-term archival plan for individuals; if the metal plate (or whatever) gets lost, buried, melted down, ... then it doesn’t really matter what is engraved on it. > absolute guarantee that your documents will disappear. Usually that is fine, as MobX can just make the property that contains the value observable. While this is great, I'm still waiting for Observable to include a Vim-like editing environment in the cells. This membrane implementation is tailored for what we call "observable objects", which are objects with basic functionalities that do not require identity to be preserved. Especially confusing with RxJS observable as they are related to JavaScript too. I personally have a lot of faith in the Observable team’s commitment to not breaking documents published on their platform or letting them disappear. Andrew calls them "view" and "data object," respectively. In that case, you may be interested in checking out some of the fancy explorable explanations folks have been publishing: You might be interested in Idyll [1], a project that I started as part of my research at UW. With the rise of frameworks like React, we often hear about ‘application/component state.’ When the state is updated, components will re-render accordingly. I thought this would be referring to the Observable ie Observer/Subscriber pattern as a primitive in JavaScript, of which RxJS (Reactive Extensions) is the best known implementation followed closely by MobX. Being non-linear allows the author to optimize for whatever flow best matches the narrative, rather than ordering things based on arbitrary implementation-specific requirements of the programming environment. I've wasted a lot of time recently because of that, and ended up inventing some of the reactive stuff for a project from scratch, because it was less effort than trawling through pages of tutorials and advertisements for hot NPM packages. (Also, if I click on a code snippet, a highlight appears to the left of it, and then gets left behind and doesn't reset when I click outside of the code snippet!) I also would bet this is where they will go. May have to make the switch from Notion. Other groups also use the notebooks for documentation purposes. I'm happy to hear there is some consideration. Note that if order mus… It's good that you're aware of the basic aspects of the archival problem, but you're mistaken about the role of digitality — being digital makes it possible to copy documents losslessly, thus preserving them even when the original substrate is lost. I think the kernel design is fantastic. That'll encourage me to use Observable more. [closed], Regex using negative lookahead is not working properly. We pass the Observ a ble around, combining it and saving it to different variables with different combinations of operators, but at the end, an Observable is useless on its own. Is it acyclic? Observable is great, and I hope more people learn about it and try it out, but I am afraid that outside of the audience of people who already have worked with it a bit, both the title and content of this particular notebook are going to be a bit misleading and out of context. Is To-One Relationships in Realm JavaScript only for one schema? This is easily implemented by an Observableclass. Apparently it’s a deprecated Java class. This is insanely cool - I didn't know an implicit DAG notebook was on the market already. https://observablehq.com/@tophtucker/inferring-chart-type-fr... https://observablehq.com/@vorth/exploring-4d-quaternion-rota... https://observablehq.com/@sethpipho/fractal-tree, https://observablehq.com/@esperanc/sketchable-vector-fields. is free software. I get blank page without running javascript. I see it as sort of an extension of Knuth's 'literate programming' concept [1], which has existed in some form or another in many languages. Not sure how much optimization for "pure" ranking we should do nowadays. Observable’s not JavaScript An Observable notebook by Observable. I imagine someone using this mostly to embed charts and graphs alongside code a la Jupyter Notebooks. 4. All primitive values in JavaScript are immutable and hence per definition not observable. Here’s a list of some of @Fil’s favorites. The full syntax is just the "Observable JavaScript" described in the OP. I wasn’t seriously engaging because I didn’t take your comment about ancient civilizations to be especially serious. And I have also made the field optional for now to make sure. Pull and Push are two different protocols that describe how a data Producer can communicate with a data Consumer. A subscribe call is simply a way to start an "Observable execution" and deliver values or events … We can even create Observables in the Node.js platform or inside any Javascript library. Isn't the whole point of Observablehq that your computation reacts correctly to modifications? RxJS - Observable is not emitting value with .next() on first call I'm struggling a bit with RxJS. I'm going to check these out. Yes, I get that each cell in a spreadsheet is observing its neigbors. Being able to mix text, diagrams, data tables, multimedia output, interactive inputs, easily modified subroutine implementations, imports of external data and subroutine libraries, ... makes for a very expressive and reader-friendly (albeit with a bit of reading learning curve) platform for writing interactive documents and for doing research. The startup Observable is trying to echo GitHub with a free tool and platform for creating, sharing, and tweaking data visualizations. Yes it's nice that people are trying to improve upon spreadsheets as a programming model. 3. There are two ways to do this, and it depends on which version of RxJS / Angular that you are using. The whole thing is way impressive though. It would be great to have actual code edits/suggestions as review comments. The Object.observe() method was used for asynchronously observing the changes to an object. This lets readers get started reading the prose right away without needing to wait for slow operations. One of the reasons I was interested in Observable in the first place is because I’m trying to learn javascript and trying to understand the inner workings of bokehjs. https://observablehq.com/@observablehq/downloading-and-embed... https://observablehq.com/@stared/tree-of-reddit-sex-life, https://news.ycombinator.com/item?id=19640562, https://observablehq.com/@mbostock/hello-tau-prolog. Operators are the horse-power behind observables, providing an elegant, declarative solution to complex asynchronous tasks. Le Promise – import JavaScript libraries. The title is a bit click-baity since I don't think anyone would think Observable would run javascript as if it were in editable