[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)