<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">I'm on a listserv where colleges and universities compare notes for using nbgrader, while serving Jupyter Notebooks locally, as part of the curriculum delivery architecture.</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">My way of sharing is less cloud-based in that I invite students to run the course notebooks locally, each booting to localhost:8888 using the JN server that comes with Anaconda.  Or install with pip. They're getting me live, closed circuit, and we're able to discuss the materials in real time with no central server, other than shared Github repos and a course Google Drive.  The difference is I'm not grading.  There's no requirement to turn stuff in, just optional workouts during the tutorials.  More like at a Pycon or OSCON.<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">Steve Holden was showing me JNs long before now, and I'm still far from expert.  <br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">I appreciate them for many reasons, not the least of which is supporting LaTeX.  The technology is also a meeting ground for folks from many walks of life, given how the back end kernel need no longer be only Python.  <br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">I'm able to compare Python directly with JavaScript, in the same notebook (such comparisons are worth making [1]).</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">===</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">Two exhibits:</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">This first one is from just this morning.  A Facebook friend has found a numeric pattern, and what I see is an excuse to:</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">1) practice some LaTeX</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">2) show off Python generators</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">3) show off unittest</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">4) share about "evil" eval</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">The Decimal class does not support trig, so I'm not in a position to use it as I did in the case of verifying the cited Ramanujan expression for 1/pi.<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small"><a href="https://github.com/4dsolutions/Python5/blob/master/VerifyArctan.ipynb">https://github.com/4dsolutions/Python5/blob/master/VerifyArctan.ipynb</a></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">The second:  <br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">Graphene & Quadrays is about using an obscure Vector class to create a hex grid or hex mesh, written out by Python in Scene Description Language, and changing to XYZ only at this last opportunity.  POV-Ray (free open source, <a href="http://povray.org">povray.org</a>) doesn't understand about Quadrays.  <br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">However my algorithm for generating the mesh depends on the Python set type and its ability to prevent duplicates, especially when the set members are all 4-tuples of integers.  Floating point numbers get fuzzy and create false negatives i.e. they're treated as different when they're not.  All integer coordinates do not suffer from this deficiency.  Lots more about Quadrays in my repo, or see Wikipedia.<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">[ I'm not saying XY coordinates cannot be overlaid on a grid of hexagons in clever ways.  Many people have contributed nifty hex grid algorithms.  I'm just showing another application for a coordinate system almost no one has ever heard of.  I enjoy sharing esoterica.[2] ]<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">Quadrays assign integer coordinates not only to hexagonal mesh points, but to the volume-filling equivalent FCC (=CCP) = rhombic dodecahedrons space-filling matrix.  I take that up in a connected Notebook. [3]</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small"><a href="https://github.com/4dsolutions/Python5/blob/master/GrapheneWithQrays.ipynb">https://github.com/4dsolutions/Python5/blob/master/GrapheneWithQrays.ipynb</a></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">====</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">ENDNOTES</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">[1]  <a href="https://medium.com/@kirbyurner/as-a-python-instructor-i-tend-to-recommend-a-polyglot-approach-learn-a-minimum-of-two-languages-243a0ed05eeb">https://medium.com/@kirbyurner/as-a-python-instructor-i-tend-to-recommend-a-polyglot-approach-learn-a-minimum-of-two-languages-243a0ed05eeb</a><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">[2]  <a href="https://www.redblobgames.com/grids/hexagons/">https://www.redblobgames.com/grids/hexagons/</a><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">is an authoritative website on the topic.</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">[3]  <a href="https://github.com/4dsolutions/Python5/blob/master/Generating%20the%20FCC.ipynb">https://github.com/4dsolutions/Python5/blob/master/Generating%20the%20FCC.ipynb</a><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small"><br></div></div></div></div></div></div></div>