[HN Gopher] Elixir Livebook now as a desktop app ___________________________________________________________________ Elixir Livebook now as a desktop app Author : cgarvis Score : 212 points Date : 2022-08-02 16:08 UTC (6 hours ago) (HTM) web link (news.livebook.dev) (TXT) w3m dump (news.livebook.dev) | nivertech wrote: | No support for Ubuntu? | ch4s3 wrote: | Not as a downloadable desktop app, yet. You can run it in | docker[1]. | | [1]https://github.com/livebook-dev/livebook#docker] | wawjgreen wrote: | not sure what the livebook is--the landing page is not | sufficiently clear or coherent. | kcartlidge wrote: | > _not sure what the livebook is--the landing page is not | sufficiently clear or coherent._ | | The difference between features and benefits. It's good at | telling you the features (what it does) but not so much the | benefits (why you would use it, how it can help you). | | A common issue, but more understandable in this case than most | as your average visitor to the Livebook site will likely know | they have a need for it already, rather than end up there based | on a 'random' link (like this thread). | lytedev wrote: | You're correct that it's not really captured in the prose of | the article, but the first image does inform you. | chrismccord wrote: | > Write interactive & collaborative code notebooks in Elixir | | Think Jupyter Notebooks (if you're familiar with the python | world), but collaborative and for Elixir. | CodeSgt wrote: | The headline on the landing page is "Write interactive & | collaborative code notebooks in Elixir". | | That's pretty clear and coherent to me. | varispeed wrote: | Any tips why would you want to learn Elixir or what would you use | it for? | | I tried to learn it a couple of years ago. Bought a book and | couldn't shake the impression that it was created to be complex | and hard to reason about or maybe I am wrong and it is "easy", | but has a steep learning curve? | | That being said, I looked at Go around the same time and I | clicked instantly. Easy to read, simple and yet powerful. | stu2b50 wrote: | It shines at creating highly concurrent applications with a | great deal of built in features to provide reliability and | resilience. Sounds a lot like a server, and that's what much of | the modern use for Elixir is. In particular, one area where it | shines is stateful, long-lived requests (e.g, websockets) where | many other concurrency models will either rely much more on | databases to track state or potentially get choked up. | | If nothing else it's neat to learn as one of the few somewhat | well used languages in modern times that actually adheres to | Alan Kay's original conception of OOP. | turtlebits wrote: | Was excited for this. However on my M1 mac, it launched once, and | now it won't open. Tried killing all processes and now nothing. | wojtekmach wrote: | Sorry about that! A bug report at https://github.com/livebook- | dev/livebook/issues/new would be very appreciated, especially | with relevant parts from ~/Library/Logs/Livebook.log. | turtlebits wrote: | Thanks for the log location - I killed the erlang process and | now it works - it launched in a browser window with no app | icon though? | wojtekmach wrote: | Yeah there's no app icon in the Dock because we don't have | any GUI besides the menu bar icon. | lvass wrote: | I love the concept of local Web servers as GUI substitutes, and | hope we get many more of those. Tachidesk is my favorite example. | Thanks to Phoenix Liveview, Elixir is becoming a great option in | this space. This method gives us every benefit of Electron and | almost none of the downsides. | chadrs wrote: | I have the opposite opinion. These things tend to get lost in | my tabs. | brightball wrote: | I'd be interested to see the details of how they did that. Very | cool! | Aqua_Geek wrote: | You can have a look at the code: https://GitHub.com/livebook- | dev/livebook/tree/main/app_bundl... | powersurge360 wrote: | I, too, am interested but I'm not terribly literate in elixir | yet. I am aware that you can compile executables in elixir | with a release command but I'd be curious to hear more about | (or at least be pointed to the specific spots in the code) | how the bundling was done to give you a discrete application | per platform, with app icon and everything. | | Having a script that opens a web browser pages is simple | enough, but the extra sugar on top to wrap in an app bundle | that shows up in your task bar or dock is something I am very | curious about. | | EDIT: Someone further down the thread linked to a more | specific place and that led me to the macos.ex file[1] (which | is what I was most interested in, being on macOS myself. | | It looks like at least in the case of macOS it will build the | bundle by hand, template in enough swift code to build the | application, sign and notarize a bundle, and add the compiled | elixir program in there. Pretty interesting. I guess the idea | is that you write just enough swift to manage the life cycle | of the compiled elixir application. It's an interesting | approach but it seems like it would be frustrating and | fragile. | | [1]: https://github.com/livebook- | dev/livebook/blob/355527f7e8034e... | wojtekmach wrote: | Right, so our goal was to allow configuring the bundle with | app icons etc and importantly custom URL schemes and file | types [1]. And then macOS- [2] and Windows- [3] specific | launchers capture the "open file" and "open url" events and | trigger the Elixir side of things. Another reason for | native launchers is if for any reason we couldn't start the | Elixir side, we want to let the user know that something | went wrong and point to logs. (We have that on Mac and will | have on Windows very soon.) | | [1]: https://github.com/livebook- | dev/livebook/blob/920f70817efbac... | | [2]: https://github.com/livebook- | dev/livebook/blob/920f70817efbac... | | [3]: https://github.com/livebook- | dev/livebook/blob/920f70817efbac... | powersurge360 wrote: | I know linux is a future supported platform but as far as | I'm aware, there's not a clear unified way to build | bundles in this way across linux distributions. What kind | of things are you folks considering if you don't mind my | curiosity. | wojtekmach wrote: | We don't plan to add Linux support ourselves at the | moment but we'd love a contribution. | aaaaaaaaaaab wrote: | Is it by any chance an Electron app? | ch4s3 wrote: | It uses an erlang binding for wxWidgets[1]. | | [1]https://www.wxwidgets.org/ | lvass wrote: | What for? The Livebook interface is built with Phoenix | Liveview. | ch4s3 wrote: | The window it runs in. | lvass wrote: | Is this required in some OS and not another? A comment in | this thread claims it just uses a browser tab. | ch4s3 wrote: | It's used for the desktop app, as you can see here[1]. | | [1] https://github.com/livebook- | dev/livebook/blob/355527f7e8034e... | powersurge360 wrote: | Thanks for linking this. I was interested in how it | worked but I didn't know enough elixir to get around the | codebase by myself. This entry point is very informative | for how they managed to do it. | | I just looked at the macOS part, but the tl;dr for that | is they seem to have compiled the elixir program into a | binary and wrote enough swift to manage the lifecycle of | the elixir program and signed it and notarized it and | prepared it for shipment using CLI via shell! | invocations. I didn't look at the windows way of doing | things but I imagine it's similar. | ch4s3 wrote: | No problem! The pr here[1] is also instructive, and here | is the one for windows[2]. It seems similar-ish. | | [1] https://github.com/livebook- | dev/livebook/pull/865/files | | [2] https://github.com/livebook- | dev/livebook/pull/1032/files | lytedev wrote: | Since Livebook is a web app, I would assume so. | spiderice wrote: | I just installed it and it actually doesn't use Electron. | It's basically just a local web server that runs on your | computer, and opens a browser tab in your default browser | pointing to http://localhost:60904/ | dmix wrote: | On macOS this is a great app for turning browser web apps | like these into dedicated 'apps': | | https://www.bzgapps.com/unite | | I use it with YNAB | dugmartin wrote: | Or Fluid which is free except for a few features which | cost $5 (https://fluidapp.com/) | adriancarrieres wrote: | A super cool notebook, you should give it a try even without | knowing Elixir with the tutorials coming with it :D | freedomben wrote: | No Linux download :-( | | Nevertheless it's fairly easy to install[1]. If you have docker, | you can just run the image to try it out: | docker run -p 8080:8080 -p 8081:8081 --pull always | livebook/livebook | | You may want to configure some things, so check out the | options[2].: | | If you want a "native" install, after you have elixir installed | you can use mix escript.install hex livebook | | and start it with livebook server | | Check out the readme for more configuration options[1] | | [1]: https://github.com/livebook-dev/livebook#installation | | [2]: https://github.com/livebook-dev/livebook#docker | ch4s3 wrote: | > No Linux download :-( | | They discussed it, but no one has taken it on yet. I think | Wojtek Mach(the desktop initial author) is a mac user, and they | actively wanted to provide a way for windows users to easily | try it. | wojtekmach wrote: | We don't plan to add Linux support ourselves at the moment | but we'd love if someone contributed that. As was mentioned | elsewhere it might be challenging to provide a bundle that | works across different distributions so investigating the | possible options would be an important first step. | ch4s3 wrote: | That's what I assumed was the case. Seems like a good | opportunity for the community to take on for major distros. | codeptualize wrote: | This is awesome! Starting it up from the terminal and going to | the url was not super convenient for quick tasks and scripts, | this is much better. | | Edit: one thing that would make it even nicer is if it would | remember the folder and/or recently opened notebooks. | hugobarauna wrote: | Recently opened notebooks are on the roadmap. ;) | codeptualize wrote: | Amazing! Can't wait. | redrobein wrote: | Why would you use a notebook for quick scripts though | codeptualize wrote: | I often need to inspect/transform some JSON/CSV/text/whatever | data, move around/organize a bunch files, and similar things. | I find that notebooks work great for that as you don't need | to set up an environment, you can easily collect and rerun | your scripts if you do need them again, and the output | options are great for debugging and looking at data. | powersurge360 wrote: | I know this is a Livebook love-fest, but you may also | consider setting up org-mode sometime. There's a lot to | love about org-mode but to stay on subject, you can write | your documents in a plain text syntax akin to markdown and | any of the code blocks that you add in as examples are | _executable_. And you can take the output from one and pipe | to another. | | At work, for example, we have to hit a remote API and the | secrets are stored in AWS secrets manager. I have some | documentation that has a block describing how to get the | secrets and some other documentation elsewhere describing | how to issue a post request and I can pipe the output from | one block into another and receive the output either in the | same file or put it somewhere else. | | The one downside with this extreme flexibility is I | sometimes catch myself squirreling away useful | functionality in my own notes instead of adding it in a | utility CLI or similar where it can be shared with the | team. | | If having access to a scripting language is duct tape, | piping output from one script to another in this way in a | single file is like having inter-dimensional duct tape. | bebrws wrote: | How many layers can we do!! I'm guessing elixir to JavaScript to | v8 or whatever the js vm was called in chrome. Then jit then | binary. | | Communicating over a network or one of those chrome sockets to an | elixir or erlang vm so someone else can manage your data. | | Life is good | [deleted] | lvass wrote: | Not quite, this is just your standard server side rendering for | providing a convenient GUI alongside your erlang vm. There's no | layering here, just bundling of things that are usually | distributed separately (editor and vm). | matreyes wrote: | And the interaction is handled by Phoenix LiveView (html | pushed trough websockets) | xcambar wrote: | The Elixir ecosystem is growing incredibly well. I am impressed | both from an engineering and a product perspective. | | It shows that they are playing the long game. | | I think they are achieving what I wished happen to the Clojure | ecosystem: productive, well designed, respected and popular. | Clojure missed the last step, unfortunately. | Scarbutt wrote: | Because of the Java ecosystem, in Clojure you are in much more | advantageous position than with Elixir. | kitotik wrote: | Elixir also opens you up to the entire erlang and Beam | ecosystems. Not as common as Java, I know, but still decades | of knowledge and tooling around it cutting across many | industries. | ElemenoPicuares wrote: | Seems like Beam is a more specialized tool than JVM but if | you need that sort of functionality it's phenomenal. With | things like built-in performant persistent key value stores | and cluster management I'm kind of surprised more people | haven't pushed through the "this is useful but lacks broad | adoption" barrier. | didibus wrote: | It seems making a Lisp popular is an impossible task. | | That said, I'm not sure if the data agrees with you. I think | Clojure is more popular and widely used at this time. Not sure, | but I think from what I remember of the few rankings, and just | the fact I don't know an equivalent success story to NuBank for | Elixir, I think maybe Clojure is at the moment more popular in | practice. | | But with the amazing learning material Elixir is putting out, | maybe it won't last. | stu2b50 wrote: | In terms of major companies using Elixir, Discord and | Whatsapp are built with it. Whatsapp is slowly chipping away | at its Elixir for infra homogeneity reasons with the rest of | facebook but discord is still all aboard the Elixir train. | hactar_ wrote: | WhatsApp uses mostly erlang if I recall correctly. | freedomben wrote: | I agree, and I think their move into ML is a genius move that | is going to make elixir mainstream. I'm super excited for the | future. | thejosh wrote: | I've wondered whether it's easier to add data analyst stuff | to Elixir that Python seems to have, or add features to | Python that Erlang (and by extension Elixir) provides out of | the box. | | By what I can see, if you want multiprocessing on Python in | an easier way (let's say running async), you have to use | something like ray core[0], then if you want multiple | machines you need redis(?). Elixir/Erlang supports this out | of the box. | | Explorer[1] is an interesting approach, where it uses Rust | via Rustler (Elixir library to call Rust code) and uses | Polars as its dataframe library. I think Rustler needs to be | reworked for this usecase, as it can be slow to return data. | I made initial improvements which drastically improves | encoding (https://github.com/elixir-nx/explorer/pull/282 and | https://github.com/elixir-nx/explorer/pull/286, tldr 20+ | seconds down to 3). | | [0] https://github.com/ray-project/ray [1] | https://github.com/elixir-nx/explorer | jolux wrote: | Definitely easier to add Pandas to Elixir than preemptively | scheduled green threads to Python. | throwawaymaths wrote: | Plus sane failure domains: go has had preemptively | scheduled green threads from day one but failure domains | are really not a thing in go. | didibus wrote: | Props to the Elixir community, it seems for some reason they've | attracted a lot of people who have the will, the free time and | the talent to provide amazing educational content. I've never | seen a language of this size have so much quality learning | material and tooling. | junwonapp wrote: | How is Livebook using iframes? Is each notebook cell an iframe? | throwawaymaths wrote: | It would be crazy awesome if someone could figure out how to | layer python underneath this. There is a very nice feature set in | livebook that doesn't really exist in jupyter. ___________________________________________________________________ (page generated 2022-08-02 23:00 UTC)