Þ ¥bonds€¬cell_resultsÞ Ù$ed461518-3a1b-4fe3-b54e-9d4da9707b63Š¦queuedÂ¤logs�§runningÂ¦output†¤bodyÙ<div class="markdown"><h1 id="How-to-get-globals-inside-a-module?">How to get globals inside a <code>module</code>?</h1>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ§5p+°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$ed461518-3a1b-4fe3-b54e-9d4da9707b63¹depends_on_disabled_cellsÂ§runtimeÎ å´µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$24281688-3e37-4e2c-aeea-97c46118bcb0Š¦queuedÂ¤logs�§runningÂ¦output†¤bodyÚ
<div class="markdown"><p>Julia: big disconnect between what package devs document and what the general audience needs to read.</p>
<p>Why did pandas succeed? Their documentation explains usage first, implementation/details second. Julia docs generally put math/philosophy too early.</p>
<p>Good project for new contributors might be to &quot;port scikit-learn or pandas docs to their Julia equivalents&quot;. But maybe also explain some math/philosophy as side notes. Fons and Panagiotis can meet with BE :&#41;</p>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ§5p™•°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$24281688-3e37-4e2c-aeea-97c46118bcb0¹depends_on_disabled_cellsÂ§runtimeÎ švµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$cf74d2ee-1e65-4a46-bf7d-805d968f38feŠ¦queuedÂ¤logs�§runningÂ¦output†¤bodyƒ£msgÙFcannot assign a value to imported variable workspace#3.x from module Aªstacktrace“Œªcall_short¯top-level scope§inlinedÂ£urlÀ¤path¤none®source_packageÀ¤call¯top-level scopeªlinfo_type­Core.CodeInfo¤line¤file¤none¤func¯top-level scope­parent_moduleÀ¦from_cÂŒªcall_short·eval(m::Module, e::Any)§inlinedÂ£urlÙEfile:///opt/hostedtoolcache/julia/1.12.7/x64/share/julia/base/boot.jl¤path©./boot.jl®source_package¤Core¤call·eval(m::Module, e::Any)ªlinfo_type³Core.MethodInstance¤lineÍé¤file§boot.jl¤func¤eval­parent_module¤Core¦from_cÂŒªcall_short¯macro expansion§inlinedÃ£urlÀ¤pathÙw/home/runner/work/community-call-notes/community-call-notes/2023/02-28/notes.jl#==#cf74d2ee-1e65-4a46-bf7d-805d968f38fe®source_packageÀ¤call¯macro expansionªlinfo_type§Nothing¤line¤fileÙ0notes.jl#==#cf74d2ee-1e65-4a46-bf7d-805d968f38fe¤func¯macro expansion­parent_moduleÀ¦from_cÂ«plain_errorÚ;cannot assign a value to imported variable workspace#3.x from module A
Stacktrace:
 [1] top-level scope
   @ none:1
 [2] eval(m::Module, e::Any)
   @ Core ./boot.jl:489
 [3] macro expansion
   @ ~/work/community-call-notes/community-call-notes/2023/02-28/notes.jl#==#cf74d2ee-1e65-4a46-bf7d-805d968f38fe:1 [inlined]¤mimeÙ'application/vnd.pluto.stacktrace+object¬rootassigneeÀ²last_run_timestampËAÚ§5u*Ç°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$cf74d2ee-1e65-4a46-bf7d-805d968f38fe¹depends_on_disabled_cellsÂ§runtimeÀµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÃÙ$6a6dd6ce-c9b2-49d0-9b8b-a5227a084efaŠ¦queuedÂ¤logs�§runningÂ¦output†¤body ¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚ§5p­`°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$6a6dd6ce-c9b2-49d0-9b8b-a5227a084efa¹depends_on_disabled_cellsÂ§runtimeÎ .¹µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$9bacb0aa-d684-4e07-9c71-8e4b062c85c1Š¦queuedÂ¤logs�§runningÂ¦output†¤bodyÚ`<div class="markdown"><h1 id="Rust-project?">Rust project?</h1>
<p>Are there any rust projects that future Pluto devs can work on?</p>
<h2 id="Ideas:">Ideas:</h2>
<h3 id="Code-for-a-live-collaboration-server,-similar-to-bore.pub">Code for a live collaboration server, similar to <a href="https://github.com/ekzhang/bore">bore.pub</a></h3>
<p>Paul started work on this &#40;in Go not Rust&#41;:</p>
<p>The server: <a href="https://gist.github.com/Pangoraw/c245762d78f5e0c636ef0bdd5f750c9e">https://gist.github.com/Pangoraw/c245762d78f5e0c636ef0bdd5f750c9e</a></p>
<p>The client: <a href="https://github.com/fonsp/Pluto.jl/tree/ws_proxy">https://github.com/fonsp/Pluto.jl/tree/ws_proxy</a></p>
<p>We also updated our GSOC list: <a href="https://github.com/JuliaLang/www.julialang.org/pull/1848">https://github.com/JuliaLang/www.julialang.org/pull/1848</a></p>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ§5p_J°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$9bacb0aa-d684-4e07-9c71-8e4b062c85c1¹depends_on_disabled_cellsÂ§runtimeÎ 
³µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$44bdad24-b78a-11ed-1ec6-bbe460258abbŠ¦queuedÂ¤logs�§runningÂ¦output†¤bodyÙN<div class="markdown"><h1 id="Notes-28-feb-2023">Notes 28 feb 2023</h1>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ§5p€°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$44bdad24-b78a-11ed-1ec6-bbe460258abb¹depends_on_disabled_cellsÂ§runtimeÎ Æµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$146e6a55-91db-4d5c-acd3-dbdc36a638f6Š¦queuedÂ¤logs�§runningÂ¦output†¤bodyƒ£msgÙFcannot assign a value to imported variable workspace#3.x from module Aªstacktrace“Œªcall_short¬setproperty!§inlinedÃ£urlÀ¤path²./Base_compiler.jl®source_packageÀ¤call¬setproperty!ªlinfo_type§Nothing¤lineG¤file°Base_compiler.jl¤func¬setproperty!­parent_moduleÀ¦from_cÂŒªcall_short¬setproperty!§inlinedÃ£urlÀ¤path²./Base_compiler.jl®source_packageÀ¤call¬setproperty!ªlinfo_type§Nothing¤lineE¤file°Base_compiler.jl¤func¬setproperty!­parent_moduleÀ¦from_cÂŒªcall_short¯macro expansion§inlinedÃ£urlÀ¤pathÙw/home/runner/work/community-call-notes/community-call-notes/2023/02-28/notes.jl#==#146e6a55-91db-4d5c-acd3-dbdc36a638f6®source_packageÀ¤call¯macro expansionªlinfo_type§Nothing¤line¤fileÙ0notes.jl#==#146e6a55-91db-4d5c-acd3-dbdc36a638f6¤func¯macro expansion­parent_moduleÀ¦from_cÂ«plain_errorÚScannot assign a value to imported variable workspace#3.x from module A
Stacktrace:
 [1] setproperty!
   @ ./Base_compiler.jl:71 [inlined]
 [2] setproperty!
   @ ./Base_compiler.jl:69 [inlined]
 [3] macro expansion
   @ ~/work/community-call-notes/community-call-notes/2023/02-28/notes.jl#==#146e6a55-91db-4d5c-acd3-dbdc36a638f6:1 [inlined]¤mimeÙ'application/vnd.pluto.stacktrace+object¬rootassigneeÀ²last_run_timestampËAÚ§5tÿÆë°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$146e6a55-91db-4d5c-acd3-dbdc36a638f6¹depends_on_disabled_cellsÂ§runtimeÀµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÃÙ$6288d48a-b00f-42e2-bab2-d413c45b32f0Š¦queuedÂ¤logs�§runningÂ¦output†¤body·Main.var"workspace#3".A¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚ§5tÆƒE°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$6288d48a-b00f-42e2-bab2-d413c45b32f0¹depends_on_disabled_cellsÂ§runtimeÎ x6µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$b4b7f2bf-fd34-4be5-a936-b1baa9bc1a9aŠ¦queuedÂ¤logs�§runningÂ¦output†¤body¢13¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚ§5tÈ3'°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$b4b7f2bf-fd34-4be5-a936-b1baa9bc1a9a¹depends_on_disabled_cellsÂ§runtimeÍ5Êµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$0aaea840-f6c6-41d1-b5e9-d5e6ed5bfb71Š¦queuedÂ¤logs�§runningÂ¦output†¤bodyÙO<div class="markdown"><p>Maybe this will start working in Julia 1.9?</p>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ§5p,w°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$0aaea840-f6c6-41d1-b5e9-d5e6ed5bfb71¹depends_on_disabled_cellsÂ§runtimeÎ ð•µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$3539f731-cc23-42a3-b038-e68ef067ee82Š¦queuedÂ¤logs�§runningÂ¦output†¤body ¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚ§5q¹¾4°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$3539f731-cc23-42a3-b038-e68ef067ee82¹depends_on_disabled_cellsÂ§runtimeÎ=8~µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$22913c3e-b0b0-4867-9de0-243584fa2e3dŠ¦queuedÂ¤logs�§runningÂ¦output†¤bodyÙà<div class="markdown"><h1 id="Julia-1.9">Julia 1.9</h1>
<p>Beta 4 seems much faster at precompilation that previous beta releases. We should redo the benchmarks to see if we still need to make changes here. :&#41;</p>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ§5p{J°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$22913c3e-b0b0-4867-9de0-243584fa2e3d¹depends_on_disabled_cellsÂ§runtimeÎ µµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$6204d1f2-ef72-4433-8f92-fe96938a189bŠ¦queuedÂ¤logs�§runningÂ¦output†¤body¢12¤mimeªtext/plain¬rootassignee¡x²last_run_timestampËAÚ§5t´P7°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$6204d1f2-ef72-4433-8f92-fe96938a189b¹depends_on_disabled_cellsÂ§runtimeÍ%*µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$0fab55d6-782b-417e-a5b8-9120c4016877Š¦queuedÂ¤logs�§runningÂ¦output†¤bodyÙ²<div class="markdown"><p>Topics:</p>
<ul>
<li><p>JuliaSyntax.jl</p>
</li>
<li><p>Featured notebooks</p>
</li>
<li><p>Julia 1.9</p>
</li>
<li><p>Motivations</p>
</li>
</ul>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ§5p¬£°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$0fab55d6-782b-417e-a5b8-9120c4016877¹depends_on_disabled_cellsÂ§runtimeÎ RZµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$dba7937e-77aa-434a-9722-b64fce78fd22Š¦queuedÂ¤logs�§runningÂ¦output†¤body…¦prefix¶JuliaSyntax.ParseError¨elements’’¦source’´## SourceFile ##
1 +ªtext/plain’«diagnostics’…¦prefix¶JuliaSyntax.Diagnostic¨elements‘’’…¦prefixªDiagnostic¨elements”’ªfirst_byte’¡4ªtext/plain’©last_byte’¡3ªtext/plain’¥level’¦:errorªtext/plain’§message’¸"premature end of input"ªtext/plain¤type¦struct¬prefix_shortªDiagnostic¨objectid°277755009607acd2Ù!application/vnd.pluto.tree+object¤type¥Array¬prefix_short ¨objectid¯6eb6a59b71071bdÙ!application/vnd.pluto.tree+object¤type¦struct¬prefix_shortªParseError¨objectid°ba70545fd6c87844¤mimeÙ!application/vnd.pluto.tree+object¬rootassignee¢ex²last_run_timestampËAÚ§5t¬/Z°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$dba7937e-77aa-434a-9722-b64fce78fd22¹depends_on_disabled_cellsÂ§runtimeÏ   V;ò<µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$f0f440e2-7ae8-46ed-b28c-9063d4e512fdŠ¦queuedÂ¤logs�§runningÂ¦output†¤bodyÚc<div class="markdown"><h1 id="JuliaSyntax.jl"><a href="https://github.com/JuliaLang/JuliaSyntax.jl">JuliaSyntax.jl</a></h1>
<p>Is in the process of being merged in Julia core ðŸŽ‰</p>
<p>Long time ago we talked about how to use it inside of Pluto.</p>
<p>Turns out to be quite simple&#33; It has a function <code>JuliaSyntax.parse</code> as alternative to <code>Meta.parse</code>.</p>
<h2 id="First-prototype&#33;">First prototype&#33;</h2>
<p><img src="https://user-images.githubusercontent.com/6933510/221932729-990e67b8-31c4-4d2a-b5cc-33e29aa12492.png" alt="" /></p>
<p>Will be easy to implement in Pluto because we only do parsing in the pluto server, not the notebook server. So we can just add JuliaSyntax as dependency to Pluto.</p>
<h2 id="Long-TTFP">Long TTFP</h2>
<p>First parse takes 8 seconds on binder. Needs investigation :&#41; but eventually it will be included in Julia with zero latency. Probably there is an easy fix :&#41;</p>
<h2 id="Frontend">Frontend</h2>
<p>Implemented using <a href="https://codemirror.net/examples/lint/"><code>@codemirror/lint</code></a> which looks very powerful&#33;</p>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ§5pä¨°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$f0f440e2-7ae8-46ed-b28c-9063d4e512fd¹depends_on_disabled_cellsÂ§runtimeÎ 
¹ûµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$51e5cafd-7b00-4f88-b2a1-e06dfb5cb1fdŠ¦queuedÂ¤logs�§runningÂ¦output†¤body ¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚ§5pù°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$51e5cafd-7b00-4f88-b2a1-e06dfb5cb1fd¹depends_on_disabled_cellsÂ§runtimeÎ 3Lµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂ±cell_dependenciesÞ Ù$ed461518-3a1b-4fe3-b54e-9d4da9707b63„´precedence_heuristic	§cell_idÙ$ed461518-3a1b-4fe3-b54e-9d4da9707b63´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$24281688-3e37-4e2c-aeea-97c46118bcb0„´precedence_heuristic	§cell_idÙ$24281688-3e37-4e2c-aeea-97c46118bcb0´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$cf74d2ee-1e65-4a46-bf7d-805d968f38fe„´precedence_heuristic	§cell_idÙ$cf74d2ee-1e65-4a46-bf7d-805d968f38fe´downstream_cells_map€²upstream_cells_mapƒ¤Core�¡A‘Ù$6288d48a-b00f-42e2-bab2-d413c45b32f0©Core.eval�Ù$6a6dd6ce-c9b2-49d0-9b8b-a5227a084efa„´precedence_heuristic	§cell_idÙ$6a6dd6ce-c9b2-49d0-9b8b-a5227a084efa´downstream_cells_map€²upstream_cells_map€Ù$9bacb0aa-d684-4e07-9c71-8e4b062c85c1„´precedence_heuristic	§cell_idÙ$9bacb0aa-d684-4e07-9c71-8e4b062c85c1´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$44bdad24-b78a-11ed-1ec6-bbe460258abb„´precedence_heuristic	§cell_idÙ$44bdad24-b78a-11ed-1ec6-bbe460258abb´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$146e6a55-91db-4d5c-acd3-dbdc36a638f6„´precedence_heuristic	§cell_idÙ$146e6a55-91db-4d5c-acd3-dbdc36a638f6´downstream_cells_map€²upstream_cells_map�¡A‘Ù$6288d48a-b00f-42e2-bab2-d413c45b32f0Ù$6288d48a-b00f-42e2-bab2-d413c45b32f0„´precedence_heuristic	§cell_idÙ$6288d48a-b00f-42e2-bab2-d413c45b32f0´downstream_cells_map�¡A“Ù$b4b7f2bf-fd34-4be5-a936-b1baa9bc1a9aÙ$146e6a55-91db-4d5c-acd3-dbdc36a638f6Ù$cf74d2ee-1e65-4a46-bf7d-805d968f38fe²upstream_cells_map�¡x‘Ù$6204d1f2-ef72-4433-8f92-fe96938a189bÙ$b4b7f2bf-fd34-4be5-a936-b1baa9bc1a9a„´precedence_heuristic	§cell_idÙ$b4b7f2bf-fd34-4be5-a936-b1baa9bc1a9a´downstream_cells_map€²upstream_cells_map�¡A‘Ù$6288d48a-b00f-42e2-bab2-d413c45b32f0Ù$0aaea840-f6c6-41d1-b5e9-d5e6ed5bfb71„´precedence_heuristic	§cell_idÙ$0aaea840-f6c6-41d1-b5e9-d5e6ed5bfb71´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$3539f731-cc23-42a3-b038-e68ef067ee82„´precedence_heuristic§cell_idÙ$3539f731-cc23-42a3-b038-e68ef067ee82´downstream_cells_map�«JuliaSyntax‘Ù$dba7937e-77aa-434a-9722-b64fce78fd22²upstream_cells_map€Ù$22913c3e-b0b0-4867-9de0-243584fa2e3d„´precedence_heuristic	§cell_idÙ$22913c3e-b0b0-4867-9de0-243584fa2e3d´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$6204d1f2-ef72-4433-8f92-fe96938a189b„´precedence_heuristic	§cell_idÙ$6204d1f2-ef72-4433-8f92-fe96938a189b´downstream_cells_map�¡x‘Ù$6288d48a-b00f-42e2-bab2-d413c45b32f0²upstream_cells_map€Ù$0fab55d6-782b-417e-a5b8-9120c4016877„´precedence_heuristic	§cell_idÙ$0fab55d6-782b-417e-a5b8-9120c4016877´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$dba7937e-77aa-434a-9722-b64fce78fd22„´precedence_heuristic	§cell_idÙ$dba7937e-77aa-434a-9722-b64fce78fd22´downstream_cells_map�¢ex�²upstream_cells_mapƒ«JuliaSyntax‘Ù$3539f731-cc23-42a3-b038-e68ef067ee82±JuliaSyntax.parse�¤Expr�Ù$f0f440e2-7ae8-46ed-b28c-9063d4e512fd„´precedence_heuristic	§cell_idÙ$f0f440e2-7ae8-46ed-b28c-9063d4e512fd´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$51e5cafd-7b00-4f88-b2a1-e06dfb5cb1fd„´precedence_heuristic	§cell_idÙ$51e5cafd-7b00-4f88-b2a1-e06dfb5cb1fd´downstream_cells_map€²upstream_cells_map€´cell_execution_orderÜ Ù$3539f731-cc23-42a3-b038-e68ef067ee82Ù$44bdad24-b78a-11ed-1ec6-bbe460258abbÙ$0fab55d6-782b-417e-a5b8-9120c4016877Ù$f0f440e2-7ae8-46ed-b28c-9063d4e512fdÙ$dba7937e-77aa-434a-9722-b64fce78fd22Ù$51e5cafd-7b00-4f88-b2a1-e06dfb5cb1fdÙ$ed461518-3a1b-4fe3-b54e-9d4da9707b63Ù$6204d1f2-ef72-4433-8f92-fe96938a189bÙ$6288d48a-b00f-42e2-bab2-d413c45b32f0Ù$b4b7f2bf-fd34-4be5-a936-b1baa9bc1a9aÙ$0aaea840-f6c6-41d1-b5e9-d5e6ed5bfb71Ù$146e6a55-91db-4d5c-acd3-dbdc36a638f6Ù$cf74d2ee-1e65-4a46-bf7d-805d968f38feÙ$9bacb0aa-d684-4e07-9c71-8e4b062c85c1Ù$22913c3e-b0b0-4867-9de0-243584fa2e3dÙ$24281688-3e37-4e2c-aeea-97c46118bcb0Ù$6a6dd6ce-c9b2-49d0-9b8b-a5227a084efa´last_hot_reload_timeË        ©shortpath¨notes.jl®process_status¥ready¤pathÙO/home/runner/work/community-call-notes/community-call-notes/2023/02-28/notes.jl­pluto_version¦v1.0.3®last_save_timeËAÚ§5p»Aªcell_orderÜ Ù$44bdad24-b78a-11ed-1ec6-bbe460258abbÙ$0fab55d6-782b-417e-a5b8-9120c4016877Ù$f0f440e2-7ae8-46ed-b28c-9063d4e512fdÙ$3539f731-cc23-42a3-b038-e68ef067ee82Ù$dba7937e-77aa-434a-9722-b64fce78fd22Ù$51e5cafd-7b00-4f88-b2a1-e06dfb5cb1fdÙ$ed461518-3a1b-4fe3-b54e-9d4da9707b63Ù$6204d1f2-ef72-4433-8f92-fe96938a189bÙ$6288d48a-b00f-42e2-bab2-d413c45b32f0Ù$b4b7f2bf-fd34-4be5-a936-b1baa9bc1a9aÙ$0aaea840-f6c6-41d1-b5e9-d5e6ed5bfb71Ù$146e6a55-91db-4d5c-acd3-dbdc36a638f6Ù$cf74d2ee-1e65-4a46-bf7d-805d968f38feÙ$9bacb0aa-d684-4e07-9c71-8e4b062c85c1Ù$22913c3e-b0b0-4867-9de0-243584fa2e3dÙ$24281688-3e37-4e2c-aeea-97c46118bcb0Ù$6a6dd6ce-c9b2-49d0-9b8b-a5227a084efa­julia_version§v1.12.7±published_objects€¥nbpkgŠ¯install_time_nsÏ   ;xPý¬instantiatedÃ²installed_versionsƒ«JuliaSyntax¥0.3.2Ù!__internal_julia_manifest_version¦1.12.7¸__internal_julia_version¦1.12.7°terminal_outputs‚«JuliaSyntaxÚ
[0m[1mResolving...[22m
[90m===[39m
[36m[1m     Project[22m[39m No packages added to or removed from `~/.julia/scratchspaces/c3e4b0f8-55cb-11ea-2926-15256bba5781/pkg_envs/env_czagfsrrdq/Project.toml`
[36m[1m    Manifest[22m[39m No packages added to or removed from `~/.julia/scratchspaces/c3e4b0f8-55cb-11ea-2926-15256bba5781/pkg_envs/env_czagfsrrdq/Manifest.toml`

[0m[1mInstantiating...[22m
[90m===[39m

[0m[1mPrecompiling...[22m
[90m===[39m
Waiting for notebook process to start... Done. Starting precompilation...ªnbpkg_syncÚ
[0m[1mResolving...[22m
[90m===[39m
[36m[1m     Project[22m[39m No packages added to or removed from `~/.julia/scratchspaces/c3e4b0f8-55cb-11ea-2926-15256bba5781/pkg_envs/env_czagfsrrdq/Project.toml`
[36m[1m    Manifest[22m[39m No packages added to or removed from `~/.julia/scratchspaces/c3e4b0f8-55cb-11ea-2926-15256bba5781/pkg_envs/env_czagfsrrdq/Manifest.toml`

[0m[1mInstantiating...[22m
[90m===[39m

[0m[1mPrecompiling...[22m
[90m===[39m
Waiting for notebook process to start... Done. Starting precompilation...§enabledÃ·restart_recommended_msgÀ´restart_required_msgÀ­busy_packages�¶waiting_for_permissionÂÙ,waiting_for_permission_but_probably_disabledÂ«cell_inputsÞ Ù$ed461518-3a1b-4fe3-b54e-9d4da9707b63„§cell_idÙ$ed461518-3a1b-4fe3-b54e-9d4da9707b63¤codeÙ1md"""
# How to get globals inside a `module`?
"""¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$24281688-3e37-4e2c-aeea-97c46118bcb0„§cell_idÙ$24281688-3e37-4e2c-aeea-97c46118bcb0¤codeÚ×md"""

Julia: big disconnect between what package devs document and what the general audience needs to read.

Why did pandas succeed? Their documentation explains usage first, implementation/details second. Julia docs generally put math/philosophy too early.

Good project for new contributors might be to "port scikit-learn or pandas docs to their Julia equivalents". But maybe also explain some math/philosophy as side notes. Fons and Panagiotis can meet with BE :)
"""¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$cf74d2ee-1e65-4a46-bf7d-805d968f38fe„§cell_idÙ$cf74d2ee-1e65-4a46-bf7d-805d968f38fe¤code·Core.eval(A, :(x = 99))¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$6a6dd6ce-c9b2-49d0-9b8b-a5227a084efa„§cell_idÙ$6a6dd6ce-c9b2-49d0-9b8b-a5227a084efa¤code ¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$9bacb0aa-d684-4e07-9c71-8e4b062c85c1„§cell_idÙ$9bacb0aa-d684-4e07-9c71-8e4b062c85c1¤codeÚ�md"""
# Rust project?

Are there any rust projects that future Pluto devs can work on?

## Ideas:

### Code for a live collaboration server, similar to [bore.pub](https://github.com/ekzhang/bore)

Paul started work on this (in Go not Rust):

The server:
[https://gist.github.com/Pangoraw/c245762d78f5e0c636ef0bdd5f750c9e](https://gist.github.com/Pangoraw/c245762d78f5e0c636ef0bdd5f750c9e)

The client:
[https://github.com/fonsp/Pluto.jl/tree/ws_proxy](https://github.com/fonsp/Pluto.jl/tree/ws_proxy)

We also updated our GSOC list: [https://github.com/JuliaLang/www.julialang.org/pull/1848](https://github.com/JuliaLang/www.julialang.org/pull/1848)
"""¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$44bdad24-b78a-11ed-1ec6-bbe460258abb„§cell_idÙ$44bdad24-b78a-11ed-1ec6-bbe460258abb¤code¿md"""
# Notes 28 feb 2023


"""¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$146e6a55-91db-4d5c-acd3-dbdc36a638f6„§cell_idÙ$146e6a55-91db-4d5c-acd3-dbdc36a638f6¤code¨A.x = 99¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$6288d48a-b00f-42e2-bab2-d413c45b32f0„§cell_idÙ$6288d48a-b00f-42e2-bab2-d413c45b32f0¤codeÙ module A
import ..x

z = x+1
end¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$b4b7f2bf-fd34-4be5-a936-b1baa9bc1a9a„§cell_idÙ$b4b7f2bf-fd34-4be5-a936-b1baa9bc1a9a¤code£A.z¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$0aaea840-f6c6-41d1-b5e9-d5e6ed5bfb71„§cell_idÙ$0aaea840-f6c6-41d1-b5e9-d5e6ed5bfb71¤codeÙ5md"""
Maybe this will start working in Julia 1.9?
"""¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$3539f731-cc23-42a3-b038-e68ef067ee82„§cell_idÙ$3539f731-cc23-42a3-b038-e68ef067ee82¤code±using JuliaSyntax¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$22913c3e-b0b0-4867-9de0-243584fa2e3d„§cell_idÙ$22913c3e-b0b0-4867-9de0-243584fa2e3d¤codeÙ­md"""
# Julia 1.9

Beta 4 seems much faster at precompilation that previous beta releases. We should redo the benchmarks to see if we still need to make changes here. :)
"""¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$6204d1f2-ef72-4433-8f92-fe96938a189b„§cell_idÙ$6204d1f2-ef72-4433-8f92-fe96938a189b¤code¦x = 12¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$0fab55d6-782b-417e-a5b8-9120c4016877„§cell_idÙ$0fab55d6-782b-417e-a5b8-9120c4016877¤codeÙQmd"""
Topics:
- JuliaSyntax.jl
- Featured notebooks
- Julia 1.9
- Motivations
"""¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$dba7937e-77aa-434a-9722-b64fce78fd22„§cell_idÙ$dba7937e-77aa-434a-9722-b64fce78fd22¤codeÙ9ex = try
	JuliaSyntax.parse(Expr, "1 +")
catch ex
	ex
end¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$f0f440e2-7ae8-46ed-b28c-9063d4e512fd„§cell_idÙ$f0f440e2-7ae8-46ed-b28c-9063d4e512fd¤codeÚjmd"""
# [JuliaSyntax.jl](https://github.com/JuliaLang/JuliaSyntax.jl)

Is in the process of being merged in Julia core ðŸŽ‰

Long time ago we talked about how to use it inside of Pluto.

Turns out to be quite simple! It has a function `JuliaSyntax.parse` as alternative to `Meta.parse`.

## First prototype!

![](https://user-images.githubusercontent.com/6933510/221932729-990e67b8-31c4-4d2a-b5cc-33e29aa12492.png)

Will be easy to implement in Pluto because we only do parsing in the pluto server, not the notebook server. So we can just add JuliaSyntax as dependency to Pluto.

## Long TTFP

First parse takes 8 seconds on binder. Needs investigation :) but eventually it will be included in Julia with zero latency. Probably there is an easy fix :)

## Frontend

Implemented using [`@codemirror/lint`](https://codemirror.net/examples/lint/) which looks very powerful!
"""¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$51e5cafd-7b00-4f88-b2a1-e06dfb5cb1fd„§cell_idÙ$51e5cafd-7b00-4f88-b2a1-e06dfb5cb1fd¤code ¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂ«notebook_idÙ$31579152-a99e-11f1-86c9-0dd3a1e2ea67«in_temp_dirÂ¨metadata€