all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: "Ludovic Courtès" <ludovic.courtes@inria.fr>
To: Konrad Hinsen <konrad.hinsen@fastmail.net>
Cc: Guix Devel <guix-devel@gnu.org>
Subject: Re: Towards reproducibly Jupyter notebooks with Guix-Jupyter
Date: Mon, 14 Oct 2019 09:21:21 +0200	[thread overview]
Message-ID: <875zkru70u.fsf@inria.fr> (raw)
In-Reply-To: <m1o8yjq1gr.fsf@ordinateur-de-catherine--konrad.home> (Konrad Hinsen's message of "Mon, 14 Oct 2019 08:35:00 +0200")

Hi Konrad,

Konrad Hinsen <konrad.hinsen@fastmail.net> skribis:

>> That reminds me of an interesting issue regarding
>> bitwise-reproducibility that was raised on the Reproducible Builds
>> mailing list:
>>
>>   https://lists.reproducible-builds.org/pipermail/rb-general/2019-September/001657.html
>
> We ran into this problem as well in the Reproducible Research MOOC. It's
> hard to test equality for notebooks. But we went for solution a) because
> our main goal is to teach good practices for writers of future
> notebooks, rather than patch bad practices of the past with an
> additional layer of build tools.

Yeah.

(Though printing addresses in a REPL isn’t “bad practice” IMO, it’s just
that it doesn’t mesh well with the intended use of notebooks.)

>>> It would be nice in fact to adapt the ideas behind Guix-Jupyter (and
>>> perhaps parts of the code) to Org-mode. Some integration with Emacs will
>>> be necessary to tell Org-mode to start Python etc. from the Guix
>>> environment.
>>
>> I’d love to see that happen!  I thought perhaps we could trick Alex Kost
>> or Pierre Neidhardt to hack on that, let’s see.  :-)
>
> I might also do it myself because I suspect it would be less work to
> write the required Emacs package than to explain how to live without it.
> Tutorial-driven development :-)

Would be sweet!  :-)

> What would be the best way to run code in a specific environment created
> for recorded channels? The obvious approach would be
>
>    guix pull -C channels.scm -p /tmp/temp-profile
>    /tmp/temp-profile/bin/guix environment –-pure -m manifest.scm –-
>    python script.py
>    rm -rf /tmp/temp-profile
>
> but doing that properly involves the usual messy precautions for dealing
> with temporary directories, and it's probably expensive to do the "guix
> pull" repeatedly for the same channel file just because the temporary
> profile gets deleted immediately.

At the API level, there’s ‘inferior-for-channels’ which does that +
registers a GC root + maintains a cache so that the second time you use
a given instance of Guix it’s immediately available.

> This looks like a use case for "guix inferior", but is that already
> stable enough to be talked about in public?

It’s still documented as “subject to change”.  :-)

  https://guix.gnu.org/manual/devel/en/html_node/Inferiors.html

Now, I think you can safely use it in your code, I don’t foresee any
significant change at this point.

As to whether you’d want to talk about it in the MOOC for instance, you
could, but maybe with a word of warning because the MOOC may be around
for a long time.

Thanks,
Ludo’.

  reply	other threads:[~2019-10-14  7:32 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-10  8:21 Towards reproducibly Jupyter notebooks with Guix-Jupyter Ludovic Courtès
2019-10-10  8:59 ` zimoun
2019-10-10 10:07   ` Ludovic Courtès
2019-10-10 11:02   ` Konrad Hinsen
2019-10-10 14:52     ` Ludovic Courtès
2019-10-14  6:35       ` Konrad Hinsen
2019-10-14  7:21         ` Ludovic Courtès [this message]
2019-10-14 11:45           ` Konrad Hinsen
2019-10-14 13:25             ` Ludovic Courtès
2019-10-21 12:50               ` Konrad Hinsen
2019-10-22 10:16                 ` Ludovic Courtès
2019-10-22 11:12                   ` Konrad Hinsen
2019-10-24 10:26                     ` Ludovic Courtès
2019-10-25  9:21                       ` Konrad Hinsen
2019-10-29 14:16                         ` Konrad Hinsen
2019-10-29 15:00                           ` Pierre Neidhardt
2020-02-27 14:25                             ` Pjotr Prins
2020-02-27 14:36                               ` zimoun
2020-02-27 18:11                                 ` Pjotr Prins
2020-02-27 18:20                                   ` zimoun
2020-02-27 18:43                                     ` Vincent Legoll
2020-02-27 18:49                                       ` zimoun
2020-02-27 19:38                                         ` Ricardo Wurmus
2020-02-27 19:48                                           ` zimoun
2019-10-23  9:53                   ` Konrad Hinsen
2019-10-23 10:32                     ` zimoun
2019-10-23 12:15                       ` Konrad Hinsen
2019-10-23 16:49                         ` zimoun
2019-10-24  6:20                           ` Konrad Hinsen
2019-10-24 13:23                             ` Pierre Neidhardt
2019-10-25 14:29                               ` Konrad Hinsen
2019-10-25 14:40                                 ` Pierre Neidhardt
2019-10-10 10:19 ` Roel Janssen
2019-10-10 11:59   ` Ludovic Courtès
2019-10-10 14:57   ` Ludovic Courtès

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=875zkru70u.fsf@inria.fr \
    --to=ludovic.courtes@inria.fr \
    --cc=guix-devel@gnu.org \
    --cc=konrad.hinsen@fastmail.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.