<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Juno</title>
    <description>A native Python IDE and Jupyter environment for iPad and iPhone, with local, offline Python 3.13 execution.</description>
    <link>https://juno.sh/</link>
    <atom:link href="https://juno.sh/feed.xml" rel="self" type="application/rss+xml" />
    <pubDate>Tue, 06 Oct 2026 13:44:53 +0000</pubDate>
    <lastBuildDate>Tue, 06 Oct 2026 13:44:53 +0000</lastBuildDate>
    <generator>Jekyll v3.10.0</generator>
    
    
      <item>
        <title>Juno 4.3: games, emulators and new packages</title>
        <description>&lt;p&gt;Juno 4.3 is a huuuuge update, spearheaded by &lt;em&gt;games&lt;/em&gt;—though they’re far from the only interesting thing in it! But yes, Juno now comes with pygame, together with eight complete games, three retro emulators and a working turtle graphics library (all using the same drawing backend under the hood, which is what made all of them possible at once).&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;But there’s another half to the 4.3 release: more than twenty newly bundled packages, led by two long-standing requests, Polars and DuckDB; notebooks that now open as real editable tabs inside projects (including multiple notebooks at once!); and a gorgeous (and highly customizable) Home screen.&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;page__screenshot&quot; src=&quot;/images/blog/juno-4-3/home.png&quot; srcset=&quot;/images/blog/juno-4-3/home@2x.png 2x&quot; width=&quot;1133&quot; height=&quot;744&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; alt=&quot;Juno&apos;s new Home screen on iPad, with the sidebar beside a row of Examples cards above a row of Games cards&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;games-built-with-pygame&quot;&gt;Games, built with pygame&lt;/h3&gt;

&lt;p&gt;Juno now bundles &lt;em&gt;pygame&lt;/em&gt;, so you can make games in Python with touch controls, sound and smooth full-screen graphics—and then play them on the very same device you built them on!&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;page__screenshot&quot; src=&quot;/images/blog/juno-4-3/block-land-example.png&quot; srcset=&quot;/images/blog/juno-4-3/block-land-example@2x.png 2x&quot; width=&quot;1133&quot; height=&quot;744&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; alt=&quot;The expanded Block Land card on Juno&apos;s Home screen, showing its artwork, description, and Run and View Source buttons&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Eight complete games ship in the Examples folder: &lt;em&gt;Breakout&lt;/em&gt;, a brick-breaker; &lt;em&gt;Snake&lt;/em&gt;, the arcade classic; &lt;em&gt;2048&lt;/em&gt;, a sliding-tile puzzle; &lt;em&gt;Flappy&lt;/em&gt;, a one-tap flyer and a &lt;em&gt;Flappy Bird&lt;/em&gt; clone; &lt;em&gt;Birdle&lt;/em&gt;, a word-guessing game; &lt;em&gt;Match-3&lt;/em&gt;, a gem-swap puzzle; &lt;em&gt;Solitaire&lt;/em&gt;, six card games in one; and &lt;em&gt;Block Land&lt;/em&gt;, an island-hopping platformer. Not demos or fragments—finished games you can waste countless hours playing! Which I definitely &lt;em&gt;haven’t&lt;/em&gt; done while working on them.&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;page__screenshot&quot; src=&quot;/images/blog/juno-4-3/block-land.png&quot; srcset=&quot;/images/blog/juno-4-3/block-land@2x.png 2x&quot; width=&quot;1133&quot; height=&quot;744&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; alt=&quot;Block Land running full screen in Juno, a pixel-art platformer with a coin counter and on-screen controls&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Each game is its own standalone project in the Examples folder that you can run, open and read the source of. They vary in size, too: Snake and Flappy are relatively small and read end to end in a sitting, while Solitaire, which packs six different card games into one, is a proper afternoon.&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;page__screenshot&quot; src=&quot;/images/blog/juno-4-3/solitaire.png&quot; srcset=&quot;/images/blog/juno-4-3/solitaire@2x.png 2x&quot; width=&quot;1133&quot; height=&quot;744&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; alt=&quot;Solitaire running in Juno, showing a Spider deal on a green table with Undo, New and Spider controls&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;three-emulators-written-in-python&quot;&gt;Three emulators, written in Python&lt;/h3&gt;

&lt;p&gt;Now that Juno has a drawing backend, a couple of interesting new avenues opened up—retro game console emulators, for example. Juno comes with emulators for NES, Game Boy and CHIP-8, and all three use pygame as their drawing engine. Each has a launcher and its own library of freely licensed homebrew games (twenty-five in total), so there’s something to play the moment you open it—and you can also use your own ROM files, of course.&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;page__screenshot&quot; src=&quot;/images/blog/juno-4-3/nes.png&quot; srcset=&quot;/images/blog/juno-4-3/nes@2x.png 2x&quot; width=&quot;1133&quot; height=&quot;744&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; alt=&quot;Juno&apos;s NES emulator launcher, listing homebrew games with thumbnails and credits above an on-screen D-pad and A and B buttons&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;turtle-out-of-the-box&quot;&gt;Turtle, out of the box&lt;/h3&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;import turtle&lt;/code&gt; now works on iPad and iPhone with nothing to install—no tkinter involved, since Juno wires in its own turtle backend based on pygame. The drawing appears in the same full-screen window the games use, with a Close button to step back out. A &lt;em&gt;Turtle&lt;/em&gt; starter project ships in Examples as well: twenty-five short scripts, one idea per file, ordered for reading—shapes, loops and functions, text and so on. Turtle has been the classic first program for decades, and it’s a lovely one to have on a device you can hand to a beginner.&lt;/p&gt;

&lt;h3 id=&quot;the-packages-you-asked-for&quot;&gt;The packages you asked for&lt;/h3&gt;

&lt;p&gt;Polars and DuckDB are here, both native iOS builds, both long-standing requests. So are scikit-image, Biopython, XGBoost, LightGBM, PyCryptodome, pypdfium2 and z3-solver. Underneath those sits a set of smaller but genuinely useful additions: msgpack, zstandard, brotli, sounddevice and a few others. Since they ship inside the app, there is nothing to download: they’re already in the &lt;a href=&quot;/juno-package-manager-4/&quot; target=&quot;_blank&quot;&gt;package manager&lt;/a&gt;’s list, ready to import.&lt;/p&gt;

&lt;h3 id=&quot;a-new-home-screen&quot;&gt;A new Home screen&lt;/h3&gt;

&lt;p&gt;Juno now opens on a Home screen: a launcher with sections for the bundled Examples, Games and Emulators, alongside your recent documents and projects, and your disk locations—plus quick actions for opening a document or a folder, starting a REPL session and managing packages. Sections can be reordered or hidden if the default arrangement isn’t the one you want.&lt;/p&gt;

&lt;h3 id=&quot;notebooks-in-projects&quot;&gt;Notebooks in projects&lt;/h3&gt;

&lt;p&gt;Jupyter notebooks inside a project now open as live, fully editable tabs, in place of the read-only preview they used to get. Each notebook runs its own kernel, started in the project’s folder, and you can even run several notebooks side by side now! The Object Inspector keeps track of all of it: a pinned &lt;em&gt;Project&lt;/em&gt; section first, then one collapsible section per notebook tab with a live kernel, so every notebook’s variables are visible alongside the project’s own.&lt;/p&gt;

&lt;p&gt;Learn more here: &lt;a href=&quot;/juno-python-ide/#project-tree&quot; target=&quot;_blank&quot;&gt;Working with Python scripts and projects&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;and-more&quot;&gt;And more&lt;/h3&gt;

&lt;p&gt;URLs printed to the console are tappable now, and open in a new in-app browser tab—so a script that starts a dev server prints its address and you can simply tap to open it. Preview tabs can now be expanded from projects too, audio interruptions are handled properly, and Markdown files are much easier on the eye with improved formatting and syntax highlighting. And underneath it all sits the usual long tail of stability and reliability improvements (and I’m not just saying that!).&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Juno 4.3 is out now on the &lt;a href=&quot;https://apps.apple.com/app/id1462586500&quot; target=&quot;_blank&quot;&gt;App Store&lt;/a&gt;. If a game misbehaves on your device, or one of the new packages doesn’t do what you expected, or something doesn’t look right, please reach out via the &lt;a href=&quot;https://github.com/rationalmatter/Juno-Issue-Tracker&quot; target=&quot;_blank&quot;&gt;issue tracker&lt;/a&gt; or ping me at &lt;a href=&quot;mailto:help@juno.sh&quot;&gt;help@juno.sh&lt;/a&gt;.&lt;/p&gt;
</description>
        <pubDate>Sat, 03 Oct 2026 10:00:00 +0000</pubDate>
        <link>https://juno.sh/blog/juno-4-3/</link>
        <guid isPermaLink="true">https://juno.sh/blog/juno-4-3/</guid>
        
        
      </item>
    
      <item>
        <title>Package management in Juno 4.2</title>
        <description>&lt;p&gt;Juno has had a package manager for years, and it always did a fairly simple thing: you typed a name, and it fetched that one package from PyPI. If the package needed other packages, or turned out not to run on iOS at all, you found out somewhere in the middle of the install—and then worked through the dependencies by hand, one at a time. Juno 4.2 rethinks and rebuilds everything that happens between looking for a package by name and having one you can actually import.&lt;/p&gt;

&lt;!--more--&gt;

&lt;div id=&quot;yt-facade-EqFNDYkmNmo&quot; style=&quot;position:relative;line-height:0&quot;&gt;
  &lt;a href=&quot;https://www.youtube.com/watch?v=EqFNDYkmNmo&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Play video: Install Python Packages on iPad — Juno 4.2 Package Manager&quot; style=&quot;display:block;position:relative;line-height:0;border-bottom:none;text-decoration:none&quot;&gt;
    
    
    &lt;video class=&quot;page__screenshot page__screenshot--loaded&quot; poster=&quot;/images/juno/juno-4-2-demo-video-poster.jpg&quot; width=&quot;992&quot; height=&quot;558&quot; muted=&quot;&quot; playsinline=&quot;&quot; loop=&quot;&quot; preload=&quot;none&quot; style=&quot;width:100%;height:auto&quot; aria-label=&quot;Install Python Packages on iPad — Juno 4.2 Package Manager&quot;&gt;
      &lt;source src=&quot;/videos/juno-4-2-demo.mp4&quot; type=&quot;video/mp4&quot; /&gt;
    &lt;/video&gt;
    
    
    &lt;span style=&quot;position:absolute;right:14px;bottom:14px;pointer-events:none;display:inline-flex;align-items:center;gap:7px;background:rgba(0,0,0,.62);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:#fff;font-size:13px;font-weight:600;line-height:1;padding:8px 13px;border-radius:999px&quot;&gt;
      &lt;svg viewBox=&quot;0 0 12 12&quot; width=&quot;10&quot; height=&quot;10&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M2 1l9 5-9 5z&quot; fill=&quot;#fff&quot; /&gt;&lt;/svg&gt;
      Watch full video
    &lt;/span&gt;
    
  &lt;/a&gt;
&lt;/div&gt;
&lt;script&gt;
  (function () {
    var facade = document.getElementById(&apos;yt-facade-EqFNDYkmNmo&apos;);
    if (!facade) { return; }
    var preview = facade.querySelector(&apos;video&apos;);
    var observer = null;
    if (preview &amp;&amp; !window.matchMedia(&apos;(prefers-reduced-motion: reduce)&apos;).matches &amp;&amp; &apos;IntersectionObserver&apos; in window) {
      observer = new IntersectionObserver(function (entries) {
        entries.forEach(function (entry) {
          if (entry.isIntersecting) {
            preview.play().catch(function () {});
          } else {
            preview.pause();
          }
        });
      }, { threshold: 0.4 });
      observer.observe(preview);
    }
    facade.addEventListener(&apos;click&apos;, function (event) {
      event.preventDefault();
      if (observer) { observer.disconnect(); }
      if (preview) { preview.pause(); }
      var frame = document.createElement(&apos;iframe&apos;);
      frame.src = &apos;https://www.youtube-nocookie.com/embed/EqFNDYkmNmo?autoplay=1&amp;rel=0&apos;;
      frame.title = &quot;Install Python Packages on iPad — Juno 4.2 Package Manager&quot;;
      frame.setAttribute(&apos;allow&apos;, &apos;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&apos;);
      frame.setAttribute(&apos;allowfullscreen&apos;, &apos;&apos;);
      frame.style.cssText = &apos;position:absolute;top:0;left:0;width:100%;height:100%;border:0&apos;;
      var wrapper = document.createElement(&apos;div&apos;);
      wrapper.style.cssText = &apos;position:relative;width:100%;aspect-ratio:16/9;line-height:0&apos;;
      wrapper.appendChild(frame);
      facade.parentNode.replaceChild(wrapper, facade);
    });
  }());
&lt;/script&gt;

&lt;h3 id=&quot;dependencies-worked-out-for-you&quot;&gt;Dependencies, worked out for you&lt;/h3&gt;

&lt;p&gt;Most packages need other packages, which in turn need packages of their own. Juno now resolves that whole graph before installing anything, and shows you the result as a plan: what you asked for, what comes along with it, and what is already on your device and won’t be downloaded again. Nothing is installed until you approve the plan, and you can deselect parts of it you don’t want.&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;page__screenshot&quot; src=&quot;/images/docs/package-manager-4/install-dialog-all-compatible.png&quot; srcset=&quot;/images/docs/package-manager-4/install-dialog-all-compatible@2x.png 2x&quot; width=&quot;1133&quot; height=&quot;744&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; alt=&quot;Juno&apos;s install plan for sympy, showing its mpmath dependency and a green All Compatible banner&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;a-compatibility-check-that-runs-first&quot;&gt;A compatibility check that runs first&lt;/h3&gt;

&lt;p&gt;Not everything on PyPI can run on an iPad. Pure-Python packages are fine; packages with compiled extensions need to be built for iOS, and Juno already ships copies of most industry-standard packages: NumPy, pandas, SciPy, OpenCV and the rest. Juno’s installation plan marks each package as compatible or explains why it isn’t—so you can decide what to skip, whether to go ahead with a partial install, or to abandon it altogether.&lt;/p&gt;

&lt;h3 id=&quot;projects-bring-their-own-packages&quot;&gt;Projects bring their own packages&lt;/h3&gt;

&lt;p&gt;Open a project that has a requirements file and Juno offers to set it up for you—the same resolution, the same compatibility check, in one plan covering everything the project asks for at once. Packages that ship with Juno are recognized as already available instead of being downloaded again, so a project that lists half a dozen requirements often only needs to fetch one or two.&lt;/p&gt;

&lt;h3 id=&quot;a-better-package-page&quot;&gt;A better package page&lt;/h3&gt;

&lt;p&gt;Every package now has a proper page: what it is, which version you have installed, a list of dependencies with the version conditions they were resolved against, and the project’s own README rendered in full, much as you would see it on PyPI. Packages that have a newer release available now carry an &lt;em&gt;Update Available&lt;/em&gt; badge, and you can filter the list to see which parts of your environment can be upgraded.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;The full guide is over at &lt;a href=&quot;/juno-package-manager-4/&quot; target=&quot;_blank&quot;&gt;Package management&lt;/a&gt;, and Juno 4.2 is out now on the &lt;a href=&quot;https://apps.apple.com/app/id1462586500&quot; target=&quot;_blank&quot;&gt;App Store&lt;/a&gt;. If something doesn’t resolve the way you expected, or a package you need won’t install, tell me in the &lt;a href=&quot;https://github.com/rationalmatter/Juno-Issue-Tracker&quot; target=&quot;_blank&quot;&gt;issue tracker&lt;/a&gt; or at &lt;a href=&quot;mailto:help@juno.sh&quot;&gt;help@juno.sh&lt;/a&gt;—package reports are genuinely useful, and several of them shaped this release.&lt;/p&gt;
</description>
        <pubDate>Wed, 26 Aug 2026 10:00:00 +0000</pubDate>
        <link>https://juno.sh/blog/juno-4-2-package-manager/</link>
        <guid isPermaLink="true">https://juno.sh/blog/juno-4-2-package-manager/</guid>
        
        
      </item>
    
      <item>
        <title>Juno 4</title>
        <description>&lt;p&gt;Juno 4 is here, and it is, by some distance, the biggest update I have ever shipped. It’s been almost a year in the making: nearly 1,500 commits since the last Juno 3 release, touching just about every part of the app. Juno is still what it has always been—a native, local-first Python and Jupyter environment for iPad and iPhone. There’s just a lot more of it now!&lt;/p&gt;

&lt;!--more--&gt;

&lt;div id=&quot;yt-facade-GMor7FRp4nw&quot; style=&quot;position:relative;line-height:0&quot;&gt;
  &lt;a href=&quot;https://www.youtube.com/watch?v=GMor7FRp4nw&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; aria-label=&quot;Play video: Python &amp;amp; Jupyter on iPad — Juno 4&quot; style=&quot;display:block;position:relative;line-height:0;border-bottom:none;text-decoration:none&quot;&gt;
    
    
    &lt;video class=&quot;page__screenshot page__screenshot--loaded&quot; poster=&quot;/images/juno/juno-4-demo-video-poster.jpg&quot; width=&quot;992&quot; height=&quot;558&quot; muted=&quot;&quot; playsinline=&quot;&quot; loop=&quot;&quot; preload=&quot;none&quot; style=&quot;width:100%;height:auto&quot; aria-label=&quot;Python &amp;amp; Jupyter on iPad — Juno 4&quot;&gt;
      &lt;source src=&quot;/videos/juno-4-demo.mp4&quot; type=&quot;video/mp4&quot; /&gt;
    &lt;/video&gt;
    
    
    &lt;span style=&quot;position:absolute;right:14px;bottom:14px;pointer-events:none;display:inline-flex;align-items:center;gap:7px;background:rgba(0,0,0,.62);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:#fff;font-size:13px;font-weight:600;line-height:1;padding:8px 13px;border-radius:999px&quot;&gt;
      &lt;svg viewBox=&quot;0 0 12 12&quot; width=&quot;10&quot; height=&quot;10&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M2 1l9 5-9 5z&quot; fill=&quot;#fff&quot; /&gt;&lt;/svg&gt;
      Watch full video
    &lt;/span&gt;
    
  &lt;/a&gt;
&lt;/div&gt;
&lt;script&gt;
  (function () {
    var facade = document.getElementById(&apos;yt-facade-GMor7FRp4nw&apos;);
    if (!facade) { return; }
    var preview = facade.querySelector(&apos;video&apos;);
    var observer = null;
    if (preview &amp;&amp; !window.matchMedia(&apos;(prefers-reduced-motion: reduce)&apos;).matches &amp;&amp; &apos;IntersectionObserver&apos; in window) {
      observer = new IntersectionObserver(function (entries) {
        entries.forEach(function (entry) {
          if (entry.isIntersecting) {
            preview.play().catch(function () {});
          } else {
            preview.pause();
          }
        });
      }, { threshold: 0.4 });
      observer.observe(preview);
    }
    facade.addEventListener(&apos;click&apos;, function (event) {
      event.preventDefault();
      if (observer) { observer.disconnect(); }
      if (preview) { preview.pause(); }
      var frame = document.createElement(&apos;iframe&apos;);
      frame.src = &apos;https://www.youtube-nocookie.com/embed/GMor7FRp4nw?autoplay=1&amp;rel=0&apos;;
      frame.title = &quot;Python &amp; Jupyter on iPad — Juno 4&quot;;
      frame.setAttribute(&apos;allow&apos;, &apos;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&apos;);
      frame.setAttribute(&apos;allowfullscreen&apos;, &apos;&apos;);
      frame.style.cssText = &apos;position:absolute;top:0;left:0;width:100%;height:100%;border:0&apos;;
      var wrapper = document.createElement(&apos;div&apos;);
      wrapper.style.cssText = &apos;position:relative;width:100%;aspect-ratio:16/9;line-height:0&apos;;
      wrapper.appendChild(frame);
      facade.parentNode.replaceChild(wrapper, facade);
    });
  }());
&lt;/script&gt;

&lt;h2 id=&quot;whats-new-in-juno-4&quot;&gt;What’s new in Juno 4&lt;/h2&gt;

&lt;h3 id=&quot;coding-assistant&quot;&gt;Coding Assistant&lt;/h3&gt;

&lt;p&gt;Juno now has an AI coding assistant built into notebooks, scripts and projects: you can ask questions, generate code, and review suggested changes as diffs before applying them. It’s strictly &lt;em&gt;bring your own key&lt;/em&gt;: add your OpenAI, Anthropic or Gemini API key, and requests go directly from your device to your provider, so you stay in full control of your data, usage and costs.&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;page__screenshot&quot; src=&quot;/images/docs/workspaces/notebook-workspace-ai-assistant.png&quot; srcset=&quot;/images/docs/workspaces/notebook-workspace-ai-assistant@2x.png 2x&quot; width=&quot;992&quot; height=&quot;664&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; alt=&quot;Juno AI coding assistant suggesting a reviewable notebook change beside the resulting plot&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Learn more here: &lt;a href=&quot;/juno-python-ide/#ai-assistant&quot; target=&quot;_blank&quot;&gt;AI coding assistant&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;python-313&quot;&gt;Python 3.13&lt;/h3&gt;

&lt;p&gt;The built-in environment jumped from Python 3.10 to Python 3.13, and every bundled package was rebuilt and updated along with it: NumPy, pandas, SciPy, Matplotlib, OpenCV, Scikit-learn, and a hundred more. This one alone took months of under-the-hood work, and it makes everything else in this release possible. Environment upgrades are no longer silent, either: when an update ships newer versions of packages you have installed, Juno now shows an &lt;em&gt;Update Python Environment&lt;/em&gt; screen where you pick what to upgrade and what to skip—only pinned packages that Juno itself depends on always come along.&lt;/p&gt;

&lt;h3 id=&quot;projects-repl-and-object-inspector&quot;&gt;Projects, REPL and Object Inspector&lt;/h3&gt;

&lt;p&gt;There are whole new ways to run Python in Juno 4. Open any folder as a &lt;strong&gt;project&lt;/strong&gt; and work across all its files in one place, with a file tree, editor tabs, and a run configuration Juno remembers. Explore interactively in a &lt;strong&gt;Python REPL&lt;/strong&gt;: open one standalone, or drop into it right after a script finishes to keep working with everything it defined. And browse your session’s variables, functions and imports with &lt;strong&gt;Object Inspector&lt;/strong&gt;, without sprinkling &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;print(...)&lt;/code&gt; calls through your code.&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;page__screenshot&quot; src=&quot;/images/docs/workspaces/repl-object-inspector.png&quot; srcset=&quot;/images/docs/workspaces/repl-object-inspector@2x.png 2x&quot; width=&quot;992&quot; height=&quot;664&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; alt=&quot;Juno Python 3.13 REPL beside Object Inspector showing live variables&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Learn more here: &lt;a href=&quot;/juno-python-ide/&quot; target=&quot;_blank&quot;&gt;Working with Python scripts and projects&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;python-meets-ios&quot;&gt;Python meets iOS&lt;/h3&gt;

&lt;p&gt;The new built-in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;juno&lt;/code&gt; modules let your Python code reach into iOS and device APIs: clipboard, Keychain, location, motion sensors, contacts, reminders, photos, sound, notifications, sharing, Bluetooth, native alerts and pickers, plus an Objective-C bridge to UIKit, Foundation and other frameworks. You can also run Python files and code from Shortcuts and Siri.&lt;/p&gt;

&lt;p&gt;Background execution deserves its own mention. Persistence for running scripts is vastly improved in Juno 4: long-running scripts and Jupyter sessions keep going while you’re in another app, and you can even keep a web server started from a script running in the background.&lt;/p&gt;

&lt;p&gt;Learn more here: &lt;a href=&quot;/docs/python/juno/&quot; target=&quot;_blank&quot;&gt;Juno Python API reference&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;quality-of-life-and-a-lot-of-it&quot;&gt;Quality of life, and a lot of it&lt;/h3&gt;

&lt;p&gt;Juno 4 also picks up a long list of things you’ve been asking for over the years: collapsible cells and auto-scrolling notebooks, a fully customizable keyboard toolbar, one unified editor for code and text files, an Output sidebar with Preview, Console, Browser and Object Inspector tabs you can keep side by side, a built-in browser for local web apps with page-source and console-log debugging, faster package search, and completely redesigned settings. Beneath all of that sits a very long tail of reliability fixes and polish: the kind of work that never makes for exciting release notes, but that you feel every day.&lt;/p&gt;

&lt;h3 id=&quot;free-to-edit-pro-to-run&quot;&gt;Free to edit, Pro to run&lt;/h3&gt;

&lt;p&gt;Juno 4 also changes how the app is priced, in your favor. Editing notebooks and files is now completely free. Running code is free to try across notebooks, scripts, projects and the REPL, and unlocks with a one-time Juno Pro purchase (no subscription, same as it has always been). And if you have ever purchased any version of Juno, Juno 4 is a free update: everything new is unlocked, with nothing more to buy.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Juno 4 is out now on the &lt;a href=&quot;https://apps.apple.com/app/id1462586500&quot; target=&quot;_blank&quot;&gt;App Store&lt;/a&gt;, with refreshed guides for everything mentioned above over at &lt;a href=&quot;/docs/&quot; target=&quot;_blank&quot;&gt;juno.sh/docs&lt;/a&gt;. If you run into anything odd, or there’s something you’d love to see next, tell me in the &lt;a href=&quot;https://github.com/rationalmatter/Juno-Issue-Tracker&quot; target=&quot;_blank&quot;&gt;issue tracker&lt;/a&gt; or at &lt;a href=&quot;mailto:help@juno.sh&quot;&gt;help@juno.sh&lt;/a&gt;. A lot of what’s in this release started life as one of those messages.&lt;/p&gt;
</description>
        <pubDate>Thu, 16 Jul 2026 10:00:00 +0000</pubDate>
        <link>https://juno.sh/blog/juno-4/</link>
        <guid isPermaLink="true">https://juno.sh/blog/juno-4/</guid>
        
        
      </item>
    
      <item>
        <title>Juno 3.0</title>
        <description>&lt;p&gt;Juno 3.0 marks a significant milestone in Python coding experience on iPad and iPhone! I’ve expanded beyond Jupyter notebooks, letting you work on your Python scripts in Juno, and completely revamped the app navigation to make Juno the most convenient developer toolbox for your iOS devices.&lt;/p&gt;

&lt;!--more--&gt;

&lt;h2 id=&quot;whats-new-in-juno&quot;&gt;What’s new in Juno&lt;/h2&gt;

&lt;h3 id=&quot;python-scripts&quot;&gt;Python Scripts&lt;/h3&gt;

&lt;p&gt;I’ve expanded beyond the Jupyter environment to include a full-fledged Python development environment—it’s specifically designed to make working with .py sources on your iOS devices intuitive and seamless, with as few compromises as possible. This first release already packs a bunch:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;A fast and versatile code editor;&lt;/li&gt;
  &lt;li&gt;Snappy, intelligent code completion;&lt;/li&gt;
  &lt;li&gt;A console with full terminal emulator support;&lt;/li&gt;
  &lt;li&gt;A built-in media viewer for code outputs, perfect for displaying Pillow-generated images, Matplotlib plots, Bokeh and Flask web apps, and more.&lt;/li&gt;
&lt;/ul&gt;

&lt;div style=&quot;text-align: center;&quot;&gt;
    &lt;!-- We adjust max-width and margin-left to accommodate for the screenshot shadow --&gt;
    &lt;img src=&quot;/images/blog/juno-3-0-overview-ide.png&quot; alt=&quot;Python source code editor&quot; style=&quot;margin-left: -3.5%; max-width: 107%&quot; /&gt;
&lt;/div&gt;

&lt;p&gt;Learn more about the Juno’s new Python source editor features here: &lt;a href=&quot;/juno-python-ide/&quot; target=&quot;_blank&quot;&gt;Working with Python sources&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;file-browser&quot;&gt;File Browser&lt;/h3&gt;

&lt;p&gt;Juno 3.0 also brings a whole new file navigation experience with rich document previews, featuring beautifully rendered Jupyter notebooks, syntax highlighting for source code and text-based formats, and Quick Look for most popular document types and media. Add quick access bookmarks for any file system location, or just open any document in place for preview and editing.&lt;/p&gt;

&lt;div style=&quot;text-align: center;&quot;&gt;
    &lt;!-- We adjust max-width and margin-left to accommodate for the screenshot shadow --&gt;
    &lt;img src=&quot;/images/blog/juno-3-0-overview-file-browser.png&quot; alt=&quot;Juno&apos;s file browser&quot; style=&quot;margin-left: -3.5%; max-width: 107%&quot; /&gt;
&lt;/div&gt;

&lt;p&gt;Learn more about navigating and working with the file system in Juno here: &lt;a href=&quot;/juno-file-browser/&quot; target=&quot;_blank&quot;&gt;Navigating the file system&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;text-editor&quot;&gt;Text Editor&lt;/h3&gt;

&lt;p&gt;Juno’s new file browser also lets you view and edit any files as text using a &lt;em&gt;built-in plain text editor&lt;/em&gt;. Juno’s text editor offers a lot: extensive configurations, powerful &lt;em&gt;Find and Replace&lt;/em&gt;, keyboard extension, syntax highlighting for popular formats (JSON, YAML, Markdown, XML, LaTeX, Python, R, and others), and more.&lt;/p&gt;

&lt;div style=&quot;text-align: center;&quot;&gt;
    &lt;!-- We adjust max-width and margin-left to accommodate for the screenshot shadow --&gt;
    &lt;img src=&quot;/images/blog/juno-3-0-overview-text-editor.png&quot; alt=&quot;Juno&apos;s plain text editor&quot; style=&quot;margin-left: -3.5%; max-width: 107%&quot; /&gt;
&lt;/div&gt;

&lt;p&gt;Finally, Juno 3.0 brings a whole bunch of minor and major fixes, a ton of general quality of life improvements, and several new packages too, including the most popular requests—&lt;em&gt;pyarrow&lt;/em&gt; and &lt;em&gt;h5py&lt;/em&gt; for HDF5 support.&lt;/p&gt;

&lt;h3 id=&quot;free-features&quot;&gt;Free Features&lt;/h3&gt;

&lt;p&gt;Juno 3.0 is the first release to include some &lt;em&gt;free&lt;/em&gt; features, too: Juno is now a free-to-download app, with an optional one-time purchase to unlock additional functionality—like executing code or editing files. Juno 3.0 is a free update for existing users: everyone who has ever purchased any version of Juno before the 3.0 release will get all paid features unlocked for free.&lt;/p&gt;

&lt;p&gt;Even without unlocking premium features, you can navigate and manage files and folders, view Jupyter notebooks and other supported formats with rich previews, and add quick access bookmarks for file system locations. This also makes Juno the best (and completely free) Jupyter notebook &lt;em&gt;viewer&lt;/em&gt; for iPhone and iPad!&lt;/p&gt;
</description>
        <pubDate>Sun, 03 Mar 2024 01:00:00 +0000</pubDate>
        <link>https://juno.sh/blog/juno-3-0/</link>
        <guid isPermaLink="true">https://juno.sh/blog/juno-3-0/</guid>
        
        
      </item>
    
      <item>
        <title>Tinkerstellar 2.0</title>
        <description>&lt;p&gt;Tinkerstellar 2.0 is here—it’s sleeker, more user-friendly, and comes with &lt;em&gt;a ton&lt;/em&gt; of new features and content!&lt;/p&gt;

&lt;!--more--&gt;

&lt;div style=&quot;text-align: center;&quot;&gt;
    &lt;img src=&quot;/images/blog/tinkerstellar-2-0-iphone-01.png&quot; alt=&quot;Screenshot of the Explore tab on iPhone&quot; /&gt;
    &lt;img src=&quot;/images/blog/tinkerstellar-2-0-iphone-02.png&quot; alt=&quot;Screenshot of the Web Scraping series screen on iPhone&quot; /&gt;
    &lt;img src=&quot;/images/blog/tinkerstellar-2-0-iphone-03.png&quot; alt=&quot;Screenshot of the lab page on iPhone&quot; /&gt;
&lt;/div&gt;

&lt;p&gt;First and foremost, Tinkerstellar now extends its support to the iPhone, bringing the interactive tutorials straight to your pocket. I had to rethink the entire app’s navigation to accommodate smaller screens: in addition to the general &lt;em&gt;Explore&lt;/em&gt; tab, the coding labs and series are now also organized by topics, making it easier to discover new content. The app now also features a dedicated user library, which simplifies the management of downloaded tutorials and helps keep track of your learning progress.&lt;/p&gt;

&lt;p&gt;I have reworked and expanded the existing coding labs, and added &lt;em&gt;loads&lt;/em&gt; of new content, too. Tinkerstellar tutorials now cover a variety of topics ranging from Python essentials to advanced Python applications, including networking, web scraping, data visualization, machine learning, and more!&lt;/p&gt;

&lt;div style=&quot;text-align: center;&quot;&gt;
    &lt;!-- We adjust max-width and margin-left to accommodate for the screenshot shadow --&gt;
    &lt;img src=&quot;/images/blog/tinkerstellar-2-0-ipad.png&quot; alt=&quot;Screenshot of the Explore tab on iPad&quot; style=&quot;margin-left: -3.5%; max-width: 107%&quot; /&gt;
&lt;/div&gt;

&lt;p&gt;While there is still plenty of content available completely for free, some labs and series need to be unlocked with a small, one-time fee. In line with Tinkerstellar’s philosophy of learning at your own pace, you unlock a lab or a series with a small payment that you only make once, and then own this lab or series forever—with all future content updates arriving free of charge.&lt;/p&gt;

&lt;p&gt;Finally, Tinkerstellar 2.0 introduces major changes under the hood, upgrading its internal environment to Python 3.10 and introducing significant performance and stability improvements. As before, there’s no need to configure programming environments or depend on a network connection—Tinkerstellar’s coding labs come fully equipped with everything you need, allowing you to practice with real-world data, libraries, and APIs offline, directly on your device.&lt;/p&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://apps.apple.com/app/id1567374120&quot; target=&quot;blank&quot;&gt;
    &lt;span style=&quot;display:block; height: 20px;&quot;&gt;&lt;/span&gt;
    &lt;img class=&quot;download-appstore-badge&quot; style=&quot;height: 60px;&quot; alt=&quot;Download on the App Store&quot; src=&quot;/images/download_black.svg&quot; /&gt;
&lt;/a&gt;&lt;/p&gt;
</description>
        <pubDate>Mon, 24 Jul 2023 01:00:00 +0000</pubDate>
        <link>https://juno.sh/blog/tinkerstellar-2-0/</link>
        <guid isPermaLink="true">https://juno.sh/blog/tinkerstellar-2-0/</guid>
        
        
      </item>
    
      <item>
        <title>Juno 2.0</title>
        <description>&lt;p&gt;Juno 2.0 is here—and it’s faster, sleeker and easier to use in every way! It comes with &lt;em&gt;a ton&lt;/em&gt; of new features and improvements: better notebook editor, new seamless file browser to navigate your working directory, a versatile built-in text editor, and much more.&lt;/p&gt;

&lt;!--more--&gt;

&lt;div style=&quot;text-align: center;&quot;&gt;
    &lt;!-- We adjust max-width and margin-left to accommodate for the screenshot shadow --&gt;
    &lt;img src=&quot;/images/blog/notebook-editor.png&quot; alt=&quot;Notebook editor&quot; style=&quot;margin-left: -3.5%; max-width: 107%&quot; /&gt;
&lt;/div&gt;

&lt;h3 id=&quot;whats-new-in-juno&quot;&gt;What’s new in Juno&lt;/h3&gt;

&lt;h4 id=&quot;notebook-editor&quot;&gt;Notebook editor&lt;/h4&gt;
&lt;p&gt;The notebook editing experience has been redesigned from the ground up into a highly configurable notebook &lt;em&gt;workspace&lt;/em&gt;, ready for you to customize around your personal workflow. The editor has a ton of new features: faster-loading notebooks, cell templates, better image viewer, better previews, easier text and selection manipulation, better keyboard and trackpad support, a ton of new settings, configuration and customization options, new &lt;em&gt;Find and Replace&lt;/em&gt; experience, new document management features—and a lot more! The new notebook editor absolutely shines on iPad, but will work great on iPhone, too.&lt;/p&gt;

&lt;h4 id=&quot;working-directory-browser&quot;&gt;Working directory browser&lt;/h4&gt;
&lt;p&gt;You can now seamlessly navigate, view and edit files and folders in the working directory without leaving your notebook. Juno’s working directory browser lets you manage files and directories, as well as perform other actions useful in the context of writing code and working on your notebooks: say, getting a relative path to a file or directory, or quickly editing contents of an arbitrary file as plain text.&lt;/p&gt;

&lt;h4 id=&quot;text-editor&quot;&gt;Text editor&lt;/h4&gt;
&lt;p&gt;Juno now comes with a powerful built-in text editor, which lets you view and edit any file from your working directory—with syntax highlighting, powerful Find and Replace, configurable view options, customizable toolbar and more! It is powered by &lt;a href=&quot;https://github.com/simonbs&quot; target=&quot;_blank&quot;&gt;Simon Støvring&lt;/a&gt;’s &lt;a href=&quot;https://github.com/simonbs/Runestone&quot; target=&quot;_blank&quot;&gt;Runestone&lt;/a&gt; project, and works blazingly fast.&lt;/p&gt;

&lt;p&gt;Finally, Juno 2.0 brings a whole bunch of minor and major fixes around package manager, keyboard and trackpad handling, iOS integration, text editing, and a ton of general quality of life improvements. Learn more about the new features and Juno’s new notebook editor here: &lt;a href=&quot;/juno-notebook-workspace/&quot; target=&quot;_blank&quot;&gt;Working with notebooks in Juno&lt;/a&gt;&lt;/p&gt;
</description>
        <pubDate>Mon, 21 Nov 2022 01:00:00 +0000</pubDate>
        <link>https://juno.sh/blog/juno-2-0/</link>
        <guid isPermaLink="true">https://juno.sh/blog/juno-2-0/</guid>
        
        
      </item>
    
      <item>
        <title>Say hello to Tinkerstellar 👋</title>
        <description>&lt;p&gt;I know that many of you use Juno apps to learn new things, experiment with things you already know, and even make your first steps in a new field or profession. If that’s you, then you are going to love the new app! &lt;!--more--&gt; The app is similar in concept to Apple’s own &lt;a href=&quot;https://www.apple.com/uk/swift/playgrounds/&quot; target=&quot;_blank&quot;&gt;Swift Playgrounds&lt;/a&gt;: essentially, it’s a collection of interactive tutorials on coding and computational science, where you can edit and run code examples straight away—no need to configure environments, download datasets, or rely on networking connection. I call these tutorials &lt;em&gt;labs&lt;/em&gt;, and the new app is called &lt;em&gt;Tinkerstellar&lt;/em&gt;—because you learn by tinkering with things! 😅&lt;/p&gt;

&lt;div style=&quot;text-align: center;&quot;&gt;
	&lt;div style=&quot;float: left; width: 50%; padding: 5px; margin-top: 20px; margin-bottom: 20px;&quot;&gt;
		&lt;img src=&quot;/images/blog/tinkerstellar_screenshot_1.png &quot; style=&quot;border-color: #DCDCDE; border-width: 0.5px; border-style: solid;&quot; /&gt;
	&lt;/div&gt;
	&lt;div style=&quot;float: left; width: 50%; padding: 5px; margin-top: 20px; margin-bottom: 20px;&quot;&gt;
		&lt;img src=&quot;/images/blog/tinkerstellar_screenshot_2.png &quot; style=&quot;border-color: #DCDCDE; border-width: 0.5px; border-style: solid;&quot; /&gt;
	&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Tinkerstellar is now in public beta, so feel free to join the TestFlight using the link below and play around. This first version has four labs that you can install and experiment with. They range in topics from general coding to tackling some real-world problems of computational science. Most importantly, please let me know if you find any issues, if some things don’t make sense, or if there is a feature you think is missing—open an issue in the &lt;a href=&quot;https://github.com/rationalmatter/Tinkerstellar-Issues&quot; target=&quot;_blank&quot;&gt;bug tracker&lt;/a&gt;, or reach out to &lt;a href=&quot;mailto:contact@tinkerstellar.com&quot; target=&quot;_blank&quot;&gt;contact@tinkerstellar.com&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I am looking for suggestions on what topics to cover in future labs; but even more importantly, I am looking for &lt;em&gt;educators&lt;/em&gt; who would like to collaborate and publish their tutorials in Tinkerstellar. Preparing labs is super-easy, as they are all based on (you’ve guessed it) Jupyter notebooks. Your labs will be available for free to everyone with an iPad, and everything you provide will have proper attributions and your name on it, of course.&lt;/p&gt;

&lt;div style=&quot;text-align: center;&quot;&gt;
	&lt;div style=&quot;float: left; width: 50%; padding: 5px; margin-top: 20px; margin-bottom: 20px;&quot;&gt;
		&lt;img src=&quot;/images/blog/tinkerstellar_screenshot_3.png &quot; style=&quot;border-color: #DCDCDE; border-width: 0.5px; border-style: solid;&quot; /&gt;
	&lt;/div&gt;
	&lt;div style=&quot;float: left; width: 50%; padding: 5px; margin-top: 20px; margin-bottom: 20px;&quot;&gt;
		&lt;img src=&quot;/images/blog/tinkerstellar_screenshot_4.png &quot; style=&quot;border-color: #DCDCDE; border-width: 0.5px; border-style: solid;&quot; /&gt;
	&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Tinkerstellar will be coming to App Store later this year as a free app, and all labs will be available for free, too. You can install it on your iPad right now using one of the links below:&lt;/p&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://testflight.apple.com/join/Z2vhNox7&quot; target=&quot;blank&quot;&gt;
	&lt;b&gt;https://testflight.apple.com/join/Z2vhNox7&lt;/b&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;OR&lt;/p&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;Go to &lt;a href=&quot;https://tinkerstellar.com&quot; target=&quot;blank&quot;&gt;&lt;b&gt;tinkerstellar.com&lt;/b&gt;&lt;/a&gt; and select &lt;b&gt;Join TestFlight beta&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;How did I manage to get a .com domain for the app, you might ask? With a really weird app name, that’s how.&lt;/p&gt;

&lt;h3 id=&quot;what-about-juno-apps&quot;&gt;What about Juno apps?&lt;/h3&gt;

&lt;p&gt;Juno apps are not going anywhere, of course: I have recently pushed several important updates to both, and have a few ambitious things planned for them in the near future. Juno Connect now integrates with &lt;a href=&quot;https://www.naas.ai&quot; target=&quot;_blank&quot;&gt;NAAS.ai&lt;/a&gt;, and also features somewhat experimental integrations with &lt;a href=&quot;https://gradient.paperspace.com&quot; target=&quot;_blank&quot;&gt;Paperspace Gradient&lt;/a&gt; and &lt;a href=&quot;https://aws.amazon.com/sagemaker/&quot; target=&quot;_blank&quot;&gt;AWS SageMaker&lt;/a&gt;—these integrations may not be completely seamless, but if you do use Juno Connect with SageMaker or Gradient, things should be much, much easier now. Juno’s list of supported libraries keeps growing with recent additions of LXML, Pillow, Cryptography, Cvxopt, Statsmodels, Regex and others, and will soon feature GDAL and other geospatial tools. I am also working on the new design for notebook editor in Juno, which will set it apart from the one in Juno Connect. Bokeh is not only available in Juno, but also works beautifully with a touch screen (seriously, give it a go!).&lt;/p&gt;

&lt;p&gt;I am really excited with the latest addition to the family of Juno apps, and truly, honestly hope you will find Tinkerstellar useful. 🚀&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;display:block; height: 30px;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
	&lt;img src=&quot;/images/blog/tinkerstellar_logo.png&quot; /&gt;
&lt;/div&gt;
&lt;p&gt;&lt;span style=&quot;display:block; height: 10px;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
</description>
        <pubDate>Tue, 27 Jul 2021 01:00:00 +0000</pubDate>
        <link>https://juno.sh/blog/tinkerstellar-beta/</link>
        <guid isPermaLink="true">https://juno.sh/blog/tinkerstellar-beta/</guid>
        
        
      </item>
    
      <item>
        <title>Juno 1.2 and Juno Connect 1.5</title>
        <description>&lt;p&gt;I have released a series of updates for Juno and Juno Connect apps over the last few months, bringing a lot of new things to both! The apps finally have many of the features I have been planning for a long time, and there are, of course, many more that are still planned and being worked on. Let’s take a quick look at what’s new in &lt;a href=&quot;https://apps.apple.com/app/id1462586500&quot; target=&quot;_blank&quot;&gt;Juno 1.2&lt;/a&gt; and &lt;a href=&quot;https://apps.apple.com/app/id1315744137&quot; target=&quot;_blank&quot;&gt;Juno Connect 1.5&lt;/a&gt;.&lt;/p&gt;

&lt;!--more--&gt;

&lt;h2 id=&quot;notebook-editor&quot;&gt;Notebook Editor&lt;/h2&gt;

&lt;p&gt;The first thing you are going to notice in both Juno 1.2 and Juno Connect 1.5 is the new notebook editor: it has been redesigned to deliver even better mobile experience, and now has much improved typography with full Dynamic Type support. In fact, Dynamic Type is supported throughout all the apps—so every button, caption and title will respect system font settings (including accessibility options).&lt;/p&gt;

&lt;p&gt;When Apple released their all-new Magic Keyboard for iPad earlier this year, it certainly was great news for apps like Juno. So I have immediately added trackpad support to both Juno and Juno Connect, and now the apps work beautifully with all hardware keyboards and trackpads!&lt;/p&gt;

&lt;p&gt;Notebook editor now has a number of options for exporting code output: you can export output of a cell as text via cell menu, or simply press-and-hold or drag-and-drop your code-generated plots, graphs or other images.&lt;/p&gt;

&lt;div style=&quot;text-align: center;&quot;&gt;
	&lt;div style=&quot;float: left; width: 50%; padding: 5px;&quot;&gt;
		&lt;img src=&quot;/images/blog/juno_1-2_junoconnect_1-5_dark.png &quot; style=&quot;border-color: #DCDCDE; border-width: 0.5px; border-style: solid;&quot; /&gt;
	&lt;/div&gt;
	&lt;div style=&quot;float: left; width: 50%; padding: 5px;&quot;&gt;
		&lt;img src=&quot;/images/blog/juno_1-2_junoconnect_1-5_light.png &quot; style=&quot;border-color: #DCDCDE; border-width: 0.5px; border-style: solid;&quot; /&gt;
	&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Last but not least, notebook editor now behaves much better when you work with code, too: text selection is no longer a troublesome task, and callout edit menu is more responsive and has several new much-requested actions.&lt;/p&gt;

&lt;h2 id=&quot;juno-connect&quot;&gt;Juno Connect&lt;/h2&gt;

&lt;p&gt;I have improved connectivity in Juno Connect 1.5 with several important additions: for example, you can now enable background location access to make SSH connections more persistent. I have also expanded connection configuration with a couple of new settings, including support for ECDSA and Ed25519 keys in SSH tunnels. Finally, you can now download files from your Jupyter server, and export your notebooks in whatever format your server supports.&lt;/p&gt;

&lt;h2 id=&quot;juno&quot;&gt;Juno&lt;/h2&gt;

&lt;p&gt;The toolset of libraries and packages available in Juno has expanded immensely over the last few releases: Juno 1.2 comes with &lt;strong&gt;SciPy&lt;/strong&gt;, &lt;strong&gt;Scikit-learn&lt;/strong&gt; and &lt;strong&gt;ipywidgets&lt;/strong&gt;! Frankly, this is a huge milestone for me, and I have put &lt;em&gt;a lot&lt;/em&gt; of effort into making these tools available on iOS and iPadOS. I have even included a new introductory notebook, where you can explore a sample dataset, and then build a neural network classifier—all right on your iPhone or iPad!&lt;/p&gt;

&lt;p&gt;I have also updated some of the packages that were already available, and added a cool new feature to Matplotlib: it will now automatically adjust its plotting style based on currently selected app UI theme, so that your plots look just as cool in dark mode as they do when the lights are on.&lt;/p&gt;

&lt;p&gt;Juno 1.2 has received a lot of improvements under the hood as well: for example, it now handles context restoration in a much better way. I know that a lot of you were experiencing frequent interruptions by the OS, which is very unforgiving to 3rd party apps with significant performance footprint (which Juno naturally is). Juno will now do its best to bring you back to exactly where you were, if it gets purged by the OS in background—restoring the notebook, file system permissions and even interpreter session (your imported modules and computed variables).&lt;/p&gt;

&lt;p&gt;Speaking of under the hood improvements, Juno 1.2 has been religiously optimized to be as quick and small as possible: launch times were cut in half, and Juno currently comes as a &lt;em&gt;just-over-100-Mb&lt;/em&gt; download when you install it from App Store. Which, by the way, includes a Python interpreter, entirety of Jupyter, as well as NumPy, Matplotlib, Pandas, SciPy, Scikit-learn and a few other libraries and packages!&lt;/p&gt;

&lt;p&gt;Juno 1.2 lets you easily switch your notebook’s working directory to any location on device, even if it’s in another app’s sandbox (e.g. in another app’s &lt;em&gt;Documents&lt;/em&gt; folder). I know that working with absolute paths on iOS and iPadOS can be quite involved, so having a quick way to change your &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cwd&lt;/code&gt; should  make your life a bit easier—you can now use relative paths whenever you need file system access. And, of course, Juno will remember your working directory for each notebook, and will persist file system access permissions.&lt;/p&gt;

&lt;p&gt;I have addressed a number of issues related to the package installer, too—it’s still &lt;em&gt;not&lt;/em&gt; a package manager yet, and is still “stateless” (although I am working on an improved version of it!), but it will now act a bit more clever when it comes to selecting package distributions and performing install actions. For example, it will now let you install packages where native extensions are optional and can be omitted (e.g. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;simplejson&lt;/code&gt;), whereas previously it would simply give up and force you to install those manually.&lt;/p&gt;

&lt;p&gt;As always, I have a lot of exciting things coming up very soon—so stay tuned, consider leaving a positive review on App Store, and don’t forget to tell your friends about Juno! 😉&lt;/p&gt;
</description>
        <pubDate>Mon, 27 Jul 2020 12:00:00 +0000</pubDate>
        <link>https://juno.sh/blog/juno-apps-1-2-1-5/</link>
        <guid isPermaLink="true">https://juno.sh/blog/juno-apps-1-2-1-5/</guid>
        
        
      </item>
    
      <item>
        <title>Juno and Juno Connect</title>
        <description>&lt;p&gt;&lt;a href=&quot;https://apps.apple.com/app/id1462586500&quot; target=&quot;_blank&quot;&gt;Juno 1.1&lt;/a&gt; and &lt;a href=&quot;https://apps.apple.com/app/id1315744137&quot; target=&quot;_blank&quot;&gt;Juno Connect 1.4&lt;/a&gt; are now available on the App Store, with a lot of new things! First of all, and most importantly, I now offer a suite of apps for running Jupyter on iOS: Juno, which runs notebooks locally on device, and Juno Connect, a Jupyter client (more about the change &lt;a href=&quot;/blog/juno-embedded-jupyter#what-happens-to-jupyter-client&quot;&gt;here&lt;/a&gt;).&lt;/p&gt;

&lt;!--more--&gt;

&lt;div style=&quot;text-align: center;&quot;&gt;
	&lt;img src=&quot;/images/blog/juno_embedded_jupyter.png&quot; /&gt;
&lt;/div&gt;

&lt;p&gt;Since Juno doesn’t need a remote server to run, it is more deeply integrated into iOS, allowing you to open Jupyter notebooks from other apps, and even edit them “in-place”, with all changes saved in the original location. Juno Connect, being a client, connects to a remote Jupyter server instead (or cloud-computing service, such as &lt;a href=&quot;http://cocalc.com&quot; target=&quot;_blank&quot;&gt;CoCalc&lt;/a&gt; or &lt;a href=&quot;https://notebooks.azure.com&quot; target=&quot;_blank&quot;&gt;Azure Notebooks&lt;/a&gt;), giving you access to virtually unlimited computational resources of the server you are using as a backend.&lt;/p&gt;

&lt;h2 id=&quot;pricing&quot;&gt;Pricing&lt;/h2&gt;

&lt;p&gt;Both apps are now paid apps, which you can purchase individually, or as a &lt;a href=&quot;https://apps.apple.com/app-bundle/id1481448756&quot; target=&quot;_blank&quot;&gt;discounted bundle&lt;/a&gt;. Neither app will have any in-app purchases in it, and if you have downloaded Juno Connect (the client) previously at any point, you can now use its full functionality, even if you haven’t purchased Juno Pro before (Juno Pro was the in-app purchase that previously paywall-ed some features—now decommissioned).&lt;/p&gt;

&lt;h2 id=&quot;whats-new&quot;&gt;What’s new&lt;/h2&gt;

&lt;p&gt;For &lt;a href=&quot;https://apps.apple.com/app/id1462586500&quot; target=&quot;_blank&quot;&gt;Juno&lt;/a&gt;, everything is new—this is its first public release on the App Store! It is a complete Jupyter development environment for your iPad or iPhone, letting you run notebooks locally on your iOS device using Juno’s embedded Python kernel and integrated libraries, such as NumPy, Matplotlib and Pandas. You can check out Juno’s main features &lt;a href=&quot;/&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://apps.apple.com/app/id1315744137&quot; target=&quot;_blank&quot;&gt;Juno Connect&lt;/a&gt; is a big update, too: it is still a Jupyter client, which lets you connect to a remote Jupyter server, and now it also comes with:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;New design&lt;/strong&gt;. Juno Connect uses screen space in a (hopefully) much more efficient manner now.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;SSH tunnelling&lt;/strong&gt;. You can now connect to your Jupyter servers by establishing an SSH tunnel with port forwarding—which is much easier and more secure.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Dark theme support&lt;/strong&gt;. Juno Connect now supports dark color scheme (even on iOS 12!).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Also, make sure to check out a new section on my website: &lt;a href=&quot;/docs&quot; target=&quot;_blank&quot;&gt;Docs&lt;/a&gt;. The plan is to publish various useful articles on things related to Juno apps: guides on configuring certificates, connections, etc. I hope it will be useful, and more articles and guides will be coming later.&lt;/p&gt;

&lt;h2 id=&quot;support-juno&quot;&gt;Support Juno!&lt;/h2&gt;
&lt;p&gt;I honestly hope that both Juno and Juno Connect are going to fit well into your workflow, and that you find them useful. If you like Juno apps, consider leaving a positive review on the App Store:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://apps.apple.com/app/id1462586500&quot; target=&quot;_blank&quot;&gt;Juno on App Store&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://apps.apple.com/app/id1315744137&quot; target=&quot;_blank&quot;&gt;Juno Connect on App Store&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thanks again for your support! 😉&lt;/p&gt;
</description>
        <pubDate>Thu, 26 Sep 2019 12:00:00 +0000</pubDate>
        <link>https://juno.sh/blog/juno-apps/</link>
        <guid isPermaLink="true">https://juno.sh/blog/juno-apps/</guid>
        
        
      </item>
    
      <item>
        <title>Open beta for Juno 🚀</title>
        <description>&lt;p&gt;Although Juno Connect has been designed as a remote client, running Jupyter locally on your iPhone or iPad has always been an interesting opportunity. That’s why over the last year I’ve been working on a new app, which is based on Juno Connect, but doesn’t need an external server to run: all computations happen locally, right on your iOS device. I’m pleased to announce that this app is now in open beta! 
&lt;!--more--&gt;&lt;/p&gt;

&lt;h4 id=&quot;features&quot;&gt;Features&lt;/h4&gt;

&lt;p&gt;You can edit and run notebooks using embedded &lt;strong&gt;Python&lt;/strong&gt; kernel. The app ships with &lt;strong&gt;NumPy&lt;/strong&gt; and &lt;strong&gt;Matplotlib&lt;/strong&gt; libraries pre-installed, and you can also add pure-Python modules manually, see issue tracker’s README for more info. Due to a self-contained nature of the app, it allows a much better OS integration, among other things:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Powerful notebook editor&lt;/strong&gt;. The app uses notebook editor from Juno client, with hardware keyboard support, code completion, on-screen keyboard extension and other existing features.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Works everywhere&lt;/strong&gt;. Just as the Juno client, the new app works on all devices, supporting both iPhone and iPad.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;File management&lt;/strong&gt;. The app offers a fully-functioning iOS file browser, similar to the one in Files app.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Open notebooks from anywhere&lt;/strong&gt;. The app registers itself with Jupyter notebook document type, so you can open notebooks from anywhere in iOS with a single tap.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Edit notebooks in place&lt;/strong&gt;. Whenever you open a notebook, all your changes will be saved in the original location—even when opened from another app!&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Access notebook directory&lt;/strong&gt;. By default, you can only access notebook’s directory when running notebooks in the app’s sandbox, i.e. in app’s folder on device or in iCloud. This means that you won’t be able to read or write files from code in notebook, if said notebook is in another app’s sandbox—say, when you are editing in place. However, you can now explicitly grant access to the notebook’s directory by tapping the folder-lock button and selecting the folder with your notebook. As easy as that!&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id=&quot;bug-reporting&quot;&gt;Bug reporting&lt;/h4&gt;
&lt;p&gt;Please, keep in mind that the app is still in active development, so quite a few things might not work. Please, report any requests or defects you encounter by opening an issue in tracker (you can use the link below, or go to &lt;em&gt;About -&amp;gt; Report an issue&lt;/em&gt; in the app). Also, please report any modules or packages that you would like to be pre-installed. Don’t forget to search for existing issues first, in case someone else has reported your thing already. &lt;strong&gt;Issue tracker&lt;/strong&gt; is available on GitHub:&lt;/p&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://github.com/rationalmatter/Juno-Issue-Tracker&quot; target=&quot;blank&quot;&gt;
	&lt;b&gt;https://github.com/rationalmatter/Juno-Issue-Tracker&lt;/b&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;h4 id=&quot;what-happens-to-jupyter-client&quot;&gt;What happens to Jupyter client?&lt;/h4&gt;
&lt;p&gt;In case you are wondering how it fits the Jupyter client app, which is currently available on App Store—worry not, it’s not going anywhere! Juno with embedded Jupyter will be released as a separate app some time later this year; however, the Jupyter client app will keep evolving on its own. To avoid confusion, it will be rebranded as Juno Connect in one of the next few updates (and will get a cool new icon!). Both apps will share new features whenever possible, as they are using the same notebook editor component under the hood.&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;display:block; height: 20px;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
	&lt;img src=&quot;/images/blog/juno_embedded_jupyter.png&quot; /&gt;
&lt;/div&gt;
&lt;p&gt;&lt;span style=&quot;display:block; height: 20px;&quot;&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;Thanks again for your support, and I hope you are as excited as I am about how Juno apps are moving forward! Stay tuned for more updates. 😉&lt;/p&gt;
</description>
        <pubDate>Thu, 11 Jul 2019 12:00:00 +0000</pubDate>
        <link>https://juno.sh/blog/juno-embedded-jupyter/</link>
        <guid isPermaLink="true">https://juno.sh/blog/juno-embedded-jupyter/</guid>
        
        
      </item>
    
  </channel>
</rss>
