\n",
"\n",
"## Literature\n",
"\n",
"[Martian Math](https://github.com/4dsolutions/MartianMath/blob/master/mm1.ipynb) is Science Fiction, as well as a bridge to STEM topics. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"However, we look at more than science fiction. \n",
"\n",
"Based on our *The Home of Tomorrow* theme, we take seriously the curious mathematics ensconced within American Transcendentalism in the form of \"synergetic geometry\", the Concentric Hierarchy of Polyhedrons especially, which features a flagship Tetrahedron of edges one, as a unit of volume."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"Martian Base made of an A-modules Tetrahedron, protected with a Lux Perimeter\n",
"
"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Martian Math is also a new approach to some of the ideas in *Synergetics: Explorations in the Geometry of Thinking*. \n",
"\n",
"This is The School of Tomorrow after all. We teach the Bucky stuff.\n",
"\n",
"#### WORLD GAME MUSEUM\n",
"\n",
"Graphics by Richard Hawkins (see [Grunch/Synergetics/Modules](http://grunch.net/synergetics/modules.html))\n",
"\n",
"*A modules* make a Tetrahedron:\n",
"\n",
"![A module](http://grunch.net/synergetics/images/amod.gif)\n",
"\n",
"*B modules* with A modules, make an Octahedron. Tetrahedrons + Octahedrons define the space-filling IVM:\n",
"\n",
"![B module](http://grunch.net/synergetics/images/abmod.gif)\n",
"\n",
"*The MITE* (minimum tetrahedron) is a space-filling tetrahedron, but not the only one (cite Sommerville):\n",
"\n",
"![Mite](http://grunch.net/synergetics/images/mite.gif)\n",
"\n",
"*The Coupler* is an octahedral space-filler, also Unit Volume (same volume as Tetrahedron):\n",
"\n",
"![Coupler](http://grunch.net/synergetics/images/rdcubcp.gif)\n",
"\n",
"Maybe you would like to teach this curriculum it too? \n",
"\n",
"[Here are some slides](https://goo.gl/zoVYF1) you could use."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEABALDBoYFhsaGRoeHRsfIjMmJCIiHzEtLycqLjYyMDEqLS01PVBFNzhLOS0wRWFFS1NWW11bMkJlbWRYbFBZW1cBERISGRYZLxsbLVc9NT9XV1dXV11XV1dXV1dXV1dXV1dXXVddV1dXX19XV19XV11XV1dXV1dXV1dYV1dXV1ddV//AABEIAWgB4AMBIgACEQEDEQH/xAAbAAEAAQUBAAAAAAAAAAAAAAAABQECAwQGB//EAEMQAAEDAgMEBwQIBgIBBAMAAAEAAhEDEgQhMQUTQVEGIjJhcYGRM1KhwRQWQlNykrHRFSM0c+HwVGLxB0Njghckov/EABoBAQEBAQEBAQAAAAAAAAAAAAABAgMEBQb/xAAwEQEAAgEEAAQEBQMFAAAAAAAAARECAxIhMRNBUfAEFCLBMmGB0fFxkaEFI1Kx4f/aAAwDAQACEQMRAD8A8/REQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERBt7MH83yKlrRyHoonZntfIqXWoZlS0ch6JaOQ9FVFWVLRyHolo5D0VUQUtHIeiWjkPRVRBS0ch6JaOQ9FVEFLRyHolo5D0VUQUtHIeiWjkPRVRBS0ch6JaOQ9FVEFLRyHolo5D0VUQUtHIeiWjkPRVRBS0ch6JaOQ9FVEFLRyHolo5D0VUQUtHIeiWjkPRVRBS0ch6JaOQ9FVEFLRyHolo5D0VUQUtHIeiWjkPRVRBS0ch6JaOQ9FVEFLRyHolo5D0VUQUtHIeiWjkPRVRBS0ch6JaOQ9FVEFLRyHolo5D0VUQUtHIeiWjkPRVRBS0ch6JaOQ9FVEFLRyHolo5D0VUQUtHIeiWjkPRVRBS0ch6JaOQ9FVEFLRyHolo5D0VUQUtHIeiWjkPRVRBS0ch6JaOQ9FVEFLRy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",
"text/html": [
"\n",
" \n",
" "
],
"text/plain": [
""
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"YouTubeVideo(\"ACnA3YknrT0\") # https://youtu.be/ACnA3YknrT0"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEABALDBoYFhsaGBodHRsfIC0mIiIiIygnKCUlLigxMC0nLTI2PVBCNThLOS0tRmFFS1NWW1xbMkFlbWRYbFBZW1cBERISGRYZMBsbMFdCN0NXV1dXXV1dV1dXV1dXV11XXVdYXVdXV1dXV19XV11XWFdXV1dXV1dXV1dYV1dXV1dXV//AABEIAWgB4AMBIgACEQEDEQH/xAAbAAEAAgMBAQAAAAAAAAAAAAAAAQUDBAYCB//EAEsQAAIBAgIECgcGBAMGBgMAAAABAgMEBRESITFRBhMWQVRhcZGS0RQiMoGhsfAzNEJScsEjU2LhNWTxByRzgqKyFSVEg6OzQ2OT/8QAGgEBAAMBAQEAAAAAAAAAAAAAAAECAwQFBv/EADMRAAIBAgMFBwQCAgMBAAAAAAABAgMREiExE0FRcbEEMmGBkaHRIsHh8CNCM2JScvE0/9oADAMBAAIRAxEAPwD5+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD1oPcNBk2ZNmeQetBkaLFmLMgE6LGixZixAJ0WNFizIsQCdFjRYsxYgE6LGixZixAJ0WNFizFiATosaLFmLEAnQZOgxZix5BOgydBizFjyD1oMcW9wwvgTZnkHrQY0GML4EWPIPWgxoMYXwFjyD06b3DQZOF8BY8g9aDGgyML4Cx5B60GNBjC+AseQelTe4mVGSeTWsnBLWxNmeAeuLe4jQZGF8BYgE6LJ0GLMix5B60GNBjCxY8gnRZOgxZix5BOixosWYIBOixosWYIBOQyFmCATkMhYEAnRYyFmLEAZAgAEqOZAAAJyAIBOiyeLe4mzJszK2C65JYh0Wfih5kcksQ6LPxQ8zS6NLopQXXJLEOiz8UPMcksQ6LPxQ8xdEXRSAu+SOIdFn4oeY5I4h0Wfih5i6FykBd8kcQ6LLxQ8xyRxDo0/FDzF0RcpCS65I4h0WXih5jkjiHRZeKHmLoXKUgvI8EcQ57aS/5oeZHJLEOiy8UPMtdElISmXXJHEOiy8UPMckcQ6LLxQ8xdEXKUF1ySxDo0vFDzHJLEOiy8UPMm6FymBdLgliHRpeKHmOSWIdFl4oeYuibopQXXJLEOiy8UPMjkliHRZeKHmTiRFymBdcksQ6LLxQ8xySxDo0vFDzJxIXKUkueSWIdGl4oeY5JYh0aXih5jEuIuUoLrkliHRZeKHmOSWIdFl4oeYxIXKUF1ySxDosvFDzHJLEOjS8UPMYlxFylDLrkliHRpeKHmOSWIdGl4oeYxIXRSkvYXPJLEOjS8UPMcksQ6NLxQ8xiQuUqJbLnkliHRpeKHmOSWIdGl4oeZOJcRcp9JtZHll1ySxDo0vFDzHJLEOjS8UPMhyT3i5SAuuSWIdGl4oeY5I4h0aXih5lboXKbIhl1yRxDosvFDzHJHEOiy8UPMYkLlKe3JaOWWveW/JHEOiy8UPMcksQ6LLxQ8wpJEplIQXfJHEOiy8UPMckcQ6LLxQ8yt0VKQF3yRxDosvFDzHJHEOiy8UPMi6BSZEF5yRxHosvFDzI5IYj0WXih5i6BSBF3yQxDosvFDzHJDEOiy8UPMi6IKXS1ZEZF5yQxDosvFDzJ5JYhll6LLxQ8xkSUALzkfiPRZeKHmOR+I9Fl4oeZUqUhBecj8R6LLxQ8yVwQxDosvFDzIJKPIIvpcEcQz1Ws/FDzPPJDEeiy8UPMtkSynpyyaPdaab1LIteSOI9Fl4oeY5I4j0WXih5mm0+nCTiPsIJBgUIBIAIBIAIBIAIBIAIBIAIJAAAAAIBIAIJAABBIAIJAAAAAAAAAAABBIAIBIAIJAAIJAAAAAIBIAIJAAAAABBIAAAAIBIAAAABBIAIBIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBp4piVO1pOpU7Ix55PcinwLhJKrV4q5ioSnrpvLJNPZHX8HzlXJJ2No0Kk4OaWSOlBBJYxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABr3t5ChTlUqPKMfj1LrMletGnCU5tRjFZts4bGL6d1/GkmqWlo29PnnLY5Nc+Xkt5ScsKOns9Dayz0FtxmK3qlPVShra5ow5o9r89xc8LcIVSiq1OOU6S5ueC5vdt7yxwDDFa26i/tJetN/wBW73Fk0VjD6c95tV7VaqnT7scl++JznBfhBx64ms/4sVqf515nRnCYphCt7vRg+LjUelQnsUZ/lb3Z6urNdZ0mBYw66dKstC5p6pxerPL8SEJPRjtVGL/lpaPPl++xcAgk1OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHmclFNt5JLNt8yJOZvq88RrO2oNxt4P+LVX4v6Vv8Ap9sN2NadPG88ktWY61SWJVXm3CxovOUtnGNft8u3Z6wSh6Xcu6cdGhS9ShDm1c+X1rfUesZebpYbapRzy08vww26/m/7nQ2ltGjTjTgsoxWSM0rs66lTBTyyvp4LjzfQykgGp55X41hquqEqb1S2we6S+sjnaFOd1T4yDcL+29WW+aWzPr5v9TsTm8coytbiF9SXqtqNaK509Wfy96RnNbzt7NUb/j37ufDkyzwTFo3VPPLRqx1VIPbF+RZHO4nZPON/Za55aUorZUhlu35fWaLXCsSp3VJVKb/VHni9zLRe5mNWmrY4adHw+DdABYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBJoY5cOlaV5p5NQeT3N6l8WGTFXdirxa+qXVV2Vo/8AjVOaC519dm/Lfqyo4daPRWUYrUuec3v62crwaw1VdOnOtXo1clPKMslKLSafx+Jkt8I9Lup0o1q07eltnKWectmUeb/QwxPW2Z6kqNNfS5fTHN5a+fQveDNhKMZXNb7avrefNHmXv29xeFDyY/zdz4xyY/zdz4y6ulaxzVNnUk5Ofsy+BQ8mf83deMcmP83deMm8uBns6X/P2ZfHivRjUhKE1nGSaa6mUnJj/N3PjHJj/N3PjF3wChSX9/ZmHAa0rW4nY1Xmvaot86evL650ycUsp2dZ3lqm4v7ektjX5kvrfvNfFeC8o0nVp161SrBZpTlnqW3LnzMFhZU6to7iV5cpRT4xaeyS5vfzdpnnpY7bQk9rGWuTVtX+ep1dleQr0o1KbzjLvT50+s2DiuBU5U7mpSkpKNSmqkE9yeSfc/gdqaxd1c4e0UlSqOK0AALGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOe4a1H6Fxa21akYpe/P8AZHQnMcKq0fSbKE2lBTdSXZHJ/systDbs6vUXr6GvwsjGh6PKlJxrxi4LR2umo5a/rnZd8HLenTtKfFPSUlpOW+T292z3FdgVu7qvUvq0dTzjSi+aOxv5rvJwuTsruVpJ/wAKr69FvmfPH63dZmtcXE7KmdPYp5xzfjxXl8nSAgk2PNMVesqcXKXuS2tvYl1swYTeu4tqdZx0dOOeWeeWvZmZ7i3hVi4zipLrSeT36+cxYbYQtqMaNLPQjszyz9+8A2gAAQcFi1OlTv5UVUcbepOLrJbE888v36s+o6/GcRVrQlUeuWyC3yewrbHg+pWU41vtq/rzk9sZbV3fuzOaxZI7uyzVJOctHl+fLqY8QSo4rZzjqjOm6erZks8v+5HSnz+7vpRpUY1tVazrpPe4b+vYl3HfomDvcz7TTcMN+X75MkAFzlAINHFsYoWcNOtPLdFa5S7EWjFydorMG+DjLPhy+Okrig6dLNJSSbcM9mn2/WZ19CvCpBTpyUovWmnmmaVaFSl30QmmZAQSYkgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEHB8KpQqYio1JOMIRjFvLPJa5Npb9Z3pUY5gVO7jnqhWXsz/aW9FKkW1kdXZKsaVTFL/wwUeE1jCEYQm1GKSS0JakvcV+PYzZ3NH1KklVg9Km9CS9Zc2eXP5GxhF9BVPRbyjThXWpScY5VFze9/Ev/QqX8qn4UVzktTVunRnfC766rP2KSz4W27pQdaTjUy9ZKLaz6sjPyss/5kvBLyNG9t4WV9Gq4R9Hr+rJOKyhPet2/vOhVlR/lU/DElYtLkVVQVpKLs/H203FZyss/wCZLwS8hyss/wCZLwS8i09DpfyqfhQ9DpfyqfhRNpcTLFQ/4v1XwVfKuz/mS8EvIcrLP+ZLwS8iz9Co/wAqn4UU/COcKdONGjShx9d6McorUnqbIeJK9y9NUZyUVF+q+CquMbt7i9hOrJq3orOC0W9Ke9r62Fzyss/5kvBLyNzD8IpUaMKehCTS1ycU23zs84lVtbak6lWFNLmSjHOT3IhKSV7lpzo1JKMYt2yWf4OR4UXdrcuNWhJup7Mk4tZrmfadphNbjLWjN7ZU459uWs5+wwiV7UVxcU406K+zpRWWkuZvq+fYdVGKSSSSS2Jcwgndtk9qqQwRpx1Xn5Hohs1MRxKja0+MrTUVzLnk9yXOc2vTMWf4rayfjqLy+HaddOi5LE8o8fjiee2beI8JnOp6Ph8OPrbHL8EOtvn+XyMmE8GVCfpF3P0i5evOWuMX/SvrqyLXDcMo2tPi6MFFc755Pe3zmzUqRhFyk1GKWbbeSSLyrJLBSVlx3v8AeAtxOXwOhGpiGKQqRUoSlFOMlmn7RFfBbmwm62HSc6Tec7eTz7XH6z7TBwZxOjLEr7KpH+NJcXnq08nLZ3nZG1epOlUs1k0sno8kQldFTgvCCjeLKPqVV7VKWqSy25b0WxTY1wcpXT4yLdK4jrjVhqefNnv+ZXWmP17OaoYnHLPVCvFZxl+r67VzmTpRqZ0vTf5ceovbU6sHmnNSSlFpxazTTzTR6OUsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQVt7fzpSaaWWayeXM+d6zKrVjTV5FoxcnZFmDQVS4/Kvh5jTuPyL4eZXb/6v0JweKN8Ghxlx+RfDzGncflXw8xt/9X6DB4o3waGncfkXw8xxlx+RfDzG3/1foMHijfBocZcfkXw8xp3H5F8PMbf/AFfoMHijfINHTuPyL4eZ5q168IuUoxSW16vMjbpf1foMHiicXwmld09GospL2ZrbF+XUVWH4rVtaitb7/wButzSXW/3795b2F1Oq9aWjlnsyab2LuMmIWFO5punVjmuZ86e9MtCSqRxwNozw/wAdTNdOQxGyjcUJ0pbJLU9z5mV3Bq9lKErat9tQei8+ePM+v/TeaNteVcNqKhctztpPKnV/L1Py7tWzNjtN0qlLEKHraOSqZa9OD5/rq3Fr7zWNPLZN3Tzi/H86M6MGO3rRqQjODzjJJp9TMhocLVjxWqxhCU5PKMU23uSKDAaUrmvUvqiyz9WinzRWrP66xj9WVzWp2NJtaXrVmuaC5vrqNjE8Vp2cIUKMdOq0o06cdeW7P61mbeeeiOyEJRhhj3pey/PQ2cXxenaQzl605exBbZPyKzDcIqXFRXV9rl/+OlzRXNmv27zPhGCyU/Sbt8ZcS1pbVDqXX8i8JtfNlHONJYaeu9/ZeHUHP4vwmUJ+j2cPSLl80dcYfqf115GLh7eVKNkuLm4udRRbWpuOjJtfBFpgeG0LehHiIZKcU3J65SzWetnZCMIQVSed9Fy4nL4FbhvBpyqek4hPj6+1R/BDqS5/l8zoyJSSTbaSWtt7EjmrvhBVuZu3wyOnL8Vd+xDs3v61kfyV3d6LySGSLTGMco2cf4j0pv2acdcpPs/cp6eF3WItVL5ulQ2xt4vJvc5v6fYWOEcHadvLjqjde5euVWetp/07i5J2kaWVPXj8cOeotfU4bDMCt7i8xCjKGjGEo8W46nD2thvxv7rDGoXadxa7I14rOUF/Wvrtew9cG/8AEsS/XH5yOnlFNNNJp6mnsaNq9ZqeGeasui04EJGK0u6demqlKanB7Gibq1p1oOnVgpwe1NHPXXB+razdfDJ6D2zoS1wn2bvrWjdwfhFTuJOlUi6NxHVKlPU2/wCnf8zCVLLHSd17rn8k34lXUw27wxupZN17bW5UJbY/p/t3MvMHxyheQzpSykvahLVKPu3dZYnHcOLSlbwhd0c6Vy6iipQeWlqbba9xpCS7Q1Cfeej+fkjQ7EkxW09KnCT1txT70ZTjLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1MQt9OGzNr4rnX1uNsgpOCnFxe8mLad0UGH30qDUKuuk3lGW7+xfp57CruqEYzcZrOlPb1dm7Lb72YaNadnNU6rcqL9mW763dxy0ZygsM92XL8M6JxU8469fyXQEZJpNPNMk7TmIBo4xeyt6KqRjGXrwi821qnOMc14jfAIAPFarGEXKTySIbtmxqTVqKEXKTySKG4uZ3E00sqefqr8z2L4/uZvWum6lTONCOxfm+t/uRtYfT0pOo1klqguZc2rs2d5w1W6zUFo+nH4OmKVPPebdrQ4uCjte1ve+dmUEnckoqyOZu5hubaFWDp1IqUJbUzmakKmGtwqJ1rCpmnzunnzfW3qe3rDxUpqUXGSUotZNPWmiHG5tTq4MnmuH7vOc4OXao1ZWjmpU5evQn+aL15dv7pl3id9G2oTqy/CtS3vmRyWOYFUtJKvbOTpQlpZbXTe/rj9Mx399WxSrSpUItKKTlnsUueTe5bF7zPE4q287nQhWkqqf0/28vkz2d5OimoR42/uXnL/wDXF7E92/Lm59hfYLgioN1asuMuJ65TevLqj5mXB8Hp2sNXrVJe3Ue2T/ZFkXjHic1evibUNHr4/jgiCQC5yHIf7Rs3bUYrW3V2f8r8zYwnhDQo4XbVKs/W4vRUFrlJwejqXu2kcMNdbD4b7hZ9mcfM5jg3TlapXsrbj6GbWa1ypZP2kvf/AHR6dOkqlGN91/O709ijdmdHCxu8Tandt29rtjRi/Wmv639dnOdLaWlOhTVOlBQgtiR4w/EKVzTVSjNSj8U9zXMbJxVakn9LVktxZIkgx3NxClBzqSUILa28kcrWxi6xGTpYfF06OydxLV4d3z7BToyqZ6LjuDdjNwb/AMTxL9cfnI6g5KpwPnQjGrZXE43Mc83J6qme1dXvz/c2sL4UJ1PR76Ho9wtWv2JPqfN8us3rU1VeOk72S55K17cCFlqdGVuMYHRvI/xFo1F7NSOqUX285ZA5IzcHeLzLHLU8VucOap36dWhsjcRWbW5TX0+0qv8AaDfxqq1jSkpwalPOLzXMl+50uO47QoLiZR4+rNZKjFaTef5txwtTDp0a1dVacacpWs6kacXmoJvZ26mel2eGKSqtWfXxt+oo+B9Iwmela0Jb6UH/ANKNwreDss7C1/4MF3RSLI86orSa8S6AAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAw3NFVIOPPzPczVttGrTdGos8tWT3eaf7FgaF7Bwmqsd+tfW/Z3HNWWF7RefL8fJpB3+k1KdSdnNQnnKhJ+rL8vUXEZJpNPNPY0Y5RhWp5NZxkthVQnOymoyzlbyfqy54vcWT2f/Xp+C3+T/t1/JY4hYxuKfFzlJR0oy9VpPOLUltW9J+42Usltz6yITUknFpp601znivXjTi5SeSRs2krmVtxNatGnFyk8kiqpUp3ktOpnGivZj+b+3WKNGV3NVKqaor2Y/m6+z59m2zuKqpwb1bkjnbxrFLKK9zXuZLXoal29KUaNPVvy5kvJfsb9OCjFRWpJZI1MPo5J1Je1PftS+tZuFqMXnOWr9luRSb/AKokEBs3KEg1a1/Sh7U1nuWtmrLFXLPiqU5Le9SMpVoLK5jKvTjlf7lm0YLWypUU1SpxgpPN6KyzZo0cWnoqU6MnF/ijsNqjidGf4snulqIjXpy3iHaacsk9fI2ySFJPY8wbGxIAAOV4Vv8A33DlunOXdov9jPwEj/5dDrlP/uNThTL/AMxs+qFR/wDS/I2+CFaFLCqU6klGK0223kl68j0Z/wDzRXLrIpvJxDg241HcWE/R6+1xX2c+po05cNHRjKncUJK7hktCPsyb50+b4ivjVziE3Sw6LhSWqVxLV4d3z7DdteB9pCjKFSLqzn7VSXtZ747vrPMfTGKXac3uW9c/jXkORqW+A3F9NV8SllFa4W8Xkl2/WfXzHUUaMacVCEVGMVkklkkjl87zC9uld2a//pTX7r4dh0OHYlRuqfGUZqS596e5rmMe0Y5K+sd1tF8PmSjTwnG1dTahGOg4uUXppyyU9FZx69uf7mziuE0bunoVoZ7pLVKPWmYsPwSnb1FOEpPRjKEIvLKEZT05LUtevfzIxYxwhpWzVOKda4l7NKGt59e4wpKbksGpLKV1rzCH/EzubLPJS/HTWepfWrsM8sauMRk6WHri6S1Trz2rqivr3GS3wKteTVbEpZpa4W8X6sf1b39Z8wxHgw4VPSMOnxFZbYbIT6subs2dm07sdFv6rY+P9b+PzoVzLLB8Bo2ibinOq/aqz1zee3XzI57hdH/fX/VY1F3aTLPCeFClP0e8h6PcLVlLVGT6nzfWTZo8LY53tD+q2rr/AOOXmVpKpGv/ACa2fQO1si74Kyzw+2/Rl3Notii4Fyzwyh/z/wD2SLw5K6tVkvF9Sy0JBBJkSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADzOCknF609p6IANCzm6c3Slv1P637e3M3atKM4uMknF7UzWxCjnHTj7Ud27+20zW1bTgnz8/ac1L6G6T8uX4NJZ/Uiq0p2MsnnK3k9T54P67+3b7oUJXUlVrLKkvYhvW99Xz7DJwk+5Vf8Al/74m9a/ZU/0L5EqmsWHcs7F3P6cW/iZciun/HraP4Ibevq97+C6zPiFfRjkvalq1bfrmMlnQ4uCX4nrl2kT/kng3LN/ZfcovpVz3VrwgvXko9rNKpjFPPKClN9SMGI0FUuacG2k4vZ7z1Cxr0fsZxktzWRWVSq5NRWS82edOrVcmorJZcWeuOuqns0401vlt+vcSsLnP7atKXUtSIWJzhqrUZR61rRtUL+lU9maz3PUxHZydpNt+OXtkI7KbtKTb4PL2yFHDqMPZgs971v4mat7Ev0v5Hs8VvYl+l/I6MKjGyR1YYxjaKsauD/d4e/5sz1rSnP2oJ9fP3mDB/u8Pf8ANm6UpJOnFPgjOjFSpRTW5Fc8JUddKpOD7c0R/vdP8tVdzNytd04e1NLq5zSljGk8qNOVR/AykqUNHZ+HwYzjRg8nZ+Hx+D1HF0nlVhOD60blG6p1PYmn1Z6yvdG6re2404vm2v695g9CVG4opSbbbbbIVSrFq6y8cmVVWtFptXjlrk8/3gih4bXipX9GTTeVvPZvmpxRPB7g3O6oUZ3dRu3is6VGLyTT521s5+vrH+0q11W9dczdOXv1r5SIwfFbuwt6Lr0+Ns5xTjOO2mnzP+/fzH0cJuXZ0qWUtPHfp4nXvzO3oUYU4KFOKjGKySSySMhrWN/SuKaqUZqcXu5uprmZsHkyTTs9TQHP4jwbyqekWM/R6/Ol7E+qS+uw6EgtCpKDvEixyFPE8QvZStYQhbzp6q9VPPLPZorry/ui8wfAqFom6acqj9qpLXKXv5iv4P8A+I4n+un8pHRnR2idngjkrJ5eKuQgCSDkLGji2D0LyGjWhn+WS1Sj2M4TGbetYXFD0io61GMZqk/xaLjk08+1c52eNcIaFmtGT06r9mlHXJ7s9xwvC2d7UjSr3cVTjJyVOmtsVq29b1bd3Mep2LGu/wB3PXluKSOw4Cyzw2n1Smv+pv8Ac6AquC9pxFhbwayehpS7Zes/mWxwVpqdSUlvbLLQAAyJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIK+P8Ctl+CXw/0z7n1FiYLuhxkGufau0xrQclijqtPjzLxdsnoaXCT7nU7Y/96N22klRg3sUE/gVGKVtKxqRftRcVr3aa/wBPcbM6rlTpUobXGOfd+23uMtus5relbnnkaYHhS8X9jJaxdWq6ktkXkl1/2+bZYHmlTUIqK2JHo2pU8EbPXfzMpO7K26++Uex/uWRW3n3uh2MsiKXelz+yOWj3p8/sg0albDaM9sEnvjqNwGkoxlk0bShGStJXKr/w6rT+xrPskeZ3teEWqtLNNZaUewtjHc/Zz/S/kYujhX0Nroc8qCingbXT3KeyvaipRp0qTk1z8202PRLmr9pUUFuiZsF+7x7X8zeKUqWKCcm3kUoUcVOLk28llovY0aOEUY7U5vfLX8Nhuxikskkl1HoHTGEY91HVCnGGUVYFZd/fKHY/kyzKy4++0f0v5Mzr6Lmupl2jurmuph4WYbK6salOmtKospQW9p7O7M1OC+LUalCnaT9StTgoSp1Fk3ksnlnt7DoyrxnAaF4k5pxqL2akdUlu7UdlOULYZ6ceBuysvuDM6NR3GGz4qpz0vwS6urs2dhmwrhRGc+Iu4ej3C1ZS1Rk+pv67TVhil3hrUL5Ovb6lG4ita/V9Z9pbXljaYlQTejUi16tSPtR7HzdjOmbyW1zW6S/fZ5kci1JOP469wrVUzurNfiXt011/WXYdLh2JUbqnp0JqS596e5rmOapRcFiWceP7oSmU3B//ABHE/wBdP5SOjOc4P/4lif66fykbWNcJKNr/AA451a79mlDW8+bPd8zSrCU6mGKu7LoiFoW1evCnBzqSUYra28kjl6+O3N9N0cNg4088pXElkl+n6z7BQwK5vpqtiUnGG2NvB5Jfq+s+wtcRxa1w+lGDyTyyhSgtb7FzdpaMYwdorFL2Xz0Gpjwjg7QtM6s3xlbbKtU29bWezt2lDwirQxWvQt7WMqsadTOrUWqCi2k9fu8szdhh93iT07xu3ttTjQi8pS/V/fuR0tnZ06EFTowUILmXze9iclF4pPFP2X74ZAzRWSyWxEgHGWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBIAKbGrLSTyeSnt7c8/jl8DZwq3yipvXmso/p3+/wAjenBSWTSa3Mk5o9nSq7T28eJo6jccJIBB0mZW333q395ZFdiH3i37X+xYmNPvT5/ZHPS78+f2RIANjoBiufs5/pfyMpiufs5/pfyIloysu6zVwX7vHtfzIli0Fcq3cKmcpOKlo+rmoKfblk9uzPUTgv3ePa/mYZ4TOV1Gu6uqM3Jer62i4aPFZ/kz9btM6H+OPJGfZ/8AFHki1ABqbArK332n+h/uWRXVPv0P0P8AcxraLmjnr6R5rqWJJBJsdB5nBSTUkmnqaetNHNXXByrb1HXwyfFyftUZexPqW762HTkGlOrKnp6bmQ1co8K4SU68uIuIOhcLU6c9Sl+lvb2GviPBdxqO4w+p6PX2uK9ifVlzfLqLXFsGoXkNGtDNr2ZrVKPY/wBijV1eYZ6tdO6tOaqvbpr+r+/fzHTTabvRdnwej5ceTIfiUuFvEK93d06ehRqTlHj5/kyzWUdu3Xs70dbhWB21hB1G055NzrVHr6+xHL4Xwho0bzEKsVKrx0ocVGK1zfrd21FtSwe5v5KpiEnTo7Y20Hl2aT+n2GtWUpr6/oj7u3u+iIR6uMfr3c5UcMhmlqlcS1Qj2fXuN7B+DdK3lxtRutcN5yqz1vP+lc3zLa3t4UoKFOKhBbElkjIcsq2WGmrL3fN/bQtbiCQDnJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBIAK3Evtrd/wBT/YsStxX7S3/4nkbta5hTWc5JGEGlOd/Doc0Gozm3xXRGUFbLFXN5UKcpvfsQ9FuKv2lTQX5YE7ZPuK/T1LbdPuK/T1NuveU6ftSS6uc0quIzqRkqVKTjk85PUsjZoYZShr0dJ75azPcfZz/S/kRJVJLN25FZRqyTu7cvl/BUYdd1KdJfwnKnr9aO3uLGhiNKpslk9z1Mx4L93j2v5mevZU6ntQWe/YzOjGoqcXF3y3mdCNRU4uLvksn8ozgrXYVaf2NV5fllrRP/AIhUp/b0ml+aOtGu1t31boa7fD3017osStl9+X/DNuhe06nszWe56mav/rv/AGytSSkotPeiKslJRcXfNFiSQSdB0gAAAhrPaSACvs8EtaFSVWjRhCctrX7bvcb5IJbb1AABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANLErOVVR0JZSi81mVlOmqMs7ijKWv2880X4ZzzoKUsa19TmqdmjKWNa+q9DBbXNOa/hyXZs+BsGlXwulPWloy3x1GDQuaPstVY7ntJxzj3l6fBO0qQ78b+K+P/AEtDFcfZy/S/kalHFoN6NROnLdI2q006cmmmtF7OwuqkZp4WXVSE4vCzWwX7vHtfzN8r8G1W8e1/M9XGKUoas9KW6OspTnGFKLk9yM6U4woxcnbJG6Y61aEFnOSS6yv4y6rezFUo75bTJRwiCelUbqS69ncNpKXcXm8vyTtZz7kfN5fk0rmpSrNqjRcpZ+0vV7zawywqQnp1Ja9HJLPN95ZQgorJJJbkSRHs6xY5a+hWPZlixy19F+8wSAdB1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgkAGKtQhNZTin2mhUwlxz4mo4Z7U9aZaEGc6UJ6oynRhPvIqKGETcVGpUaivwxLC3sqdL2IJPftfebAIhRhDREU6FOnoiCQDU2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIB8Y5T3/SqveRyov8ApVXvAPtBJ8X5TX/SqveS+E1/0ur3k2JsfZwfF+U9/wBKq945T3/SqveLEWPtAPi/Ke/6VV7xynv+lVe8YQfaCD40uE1/0qr4iXwlvl/6ur3lsDJsfZAfGuU190qr3jlNf9Kq95GFix9mB8Z5TX/SqveOU1/0qr3k4GLH2Yg+Ncpb7pVXvJ5S33SqveMDFj7KD4zylvulVe8nlLfdKq94wMWPsoPjXKW+6VV7xylvulVe8nZsWPsoPjXKW+6VV7xylvulVe8bNix9kB8c5S33SqviHKW+6VV7ydkxY+xg+Ocpb7pVXxEcpb7pVXxEbJix9kB8cXCS+6VV8RL4S33SqviJ2TFj7ED45ylvulVe8cpb7pVXvGyYsfYwfHOUt90qr3jlLfdKq942TFj7GD45ylvulVe8cpb7pVXxEbNix9jB8c5S33SqveOUt90qr3jZsWPsYPjnKW+6VV7yOUt90qr3jZsWPsgPjnKW+6VV7yOUt90qr3jZsWPshJ8a5S33SqveOUt90qr3kYGLH2QHxzlLfdKq+IcpL7pVXvGBk4WfYwfG+U190qr4hymvulVe8YGMJ9kB8b5TX3SqveOU190qr4iMLGE+yA+N8pb7pVXvHKa+6VV8QwjCfZSD45ymvulVfERymvulVfEMIwn2QHxzlLfdKq+Icpb7pVXxDCycDPshB8c5S33SqviJ5S33SqviGFjAz7ED47ykvulVfESuEl90qr4hhZOzZ9hB8f5SX3SqviHKO+6VV8QwsbNlCEQCDM9uRDPOZOZNybnqOXOGeMwLi56B5zGYxEGTLUDxmMycSLXMieog8ZjSZOMXMmQMekxpMY0LmQlGLSY0mTjQuZCTFpMaTGNC5lBi0mNJjaIXMoMWkxpMnaIXM6RDMcKsk80yHUbebZO0jYm6MoMWmxpsbREXMoMWmyNJjaoXMwMOmxpMbRC5nisyaiSeowKo1sYdRvnG1RbErGUGHSZOm95G0RXEZAYtJjSY2iFzNmQYtJjSY2iGIzJkGLSY0mNoicRlGZi0mNJkY0MRnhlnr2CbWerYYNJjSYxonHlYyEmLSY0mRiRGJGXIg8abI0mRiQxIzZnkx6TGkxiGIygxaTGkxiGJGbIlGDTZOm94xFsaNqoo6svf2njIwcY944x7yXNNk7RGxkeoo1uNlvHGy3jEiyqxNrRJ0TV46W8cfLeMaJ2sTGADM5gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9k=",
"text/html": [
"\n",
" \n",
" "
],
"text/plain": [
""
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"YouTubeVideo(\"OBuH2eAJT6Q\") # https://youtu.be/OBuH2eAJT6Q"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Cryptography\n",
"\n",
"[RSA](https://github.com/4dsolutions/Python5/blob/master/Public%20Key%20Cryptography.ipynb) is the name of a public key cryptography algorithm we study a lot. Cryptography involves a lot of what we might call Number Theory.\n",
"\n",
"With the rise of the commercial web came the business requirement to perform secure communications, meaning encrypted communications over TCP/IP. The need for public key cryptography became obvious and widely disseminated, over the objections of those wishing to preserve \"military grade\" encryption for a chosen few.\n",
"\n",
"Subsequent to the rise of the commercial web came the crypto-currencies revolution, and blockchain strategies for decentralizing the responsibility for securing transactions. The promise of these technologies led many more people to develop [fluency around cryptography](https://bookauthority.org/books/best-cryptography-books).\n",
"\n",
"\n",
"\n",
"### Historical Sidebar\n",
"In periods marked by hostility towards specific cultures, the signature technologies of those cultures may be deprecated, pushed to the back burner. For example, [some argue](https://medium.com/@kirbyurner/operators-harbingers-of-the-zeitgeist-89fe9f4764b3) that Number Theory, pioneered by [Friedrich Gauss](http://4dsolutions.net/ocn/numeracy0.html) (1777-1855), was given a lower profile in North American curricula because of hostility towards Germanic cultures."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Computer Programming Interlude\n",
"\n",
"The code cells are usually full of Python source code, ready to run. Even if the libraries we're using are such as ```numpy``` and ```pandas```, the language we're sharing here is known as Python, named for Monty Python, the English comedy troupe.\n",
"\n",
"When you first boot into Python, in order to use it coversationally, such as in a console, or in a code cell, it probably has no knowledge of ```time``` as a topic, nor of ```datetime``` nor ```math``` -- these being the names of modules we might import.\n",
"\n",
" Expect to use the proleptic Gregorian calendar in the Standard Library, or maybe the Julian (\"when in Rome...\"). You will also have integer days from an epochal starting point as an option, with time slices down to the nanosecond in pandas. \n",
"\n",
"Seek 3rd party packages for other calendars. The Python ecosystem is well stocked."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"import time\n",
"from datetime import date\n",
"\n",
"# defining a type of object, of which we may have any number\n",
"# anyone gets to be a me\n",
"\n",
"class Me(): # used below, to encapalsupate person data\n",
" \n",
" def __init__(self, nm : str, dob : str):\n",
" self.name = nm\n",
" struct = time.strptime(dob, '%d %B %Y')\n",
" self.dob = date(*struct[:3]) \n",
"\n",
" def __repr__(self):\n",
" return \"Me('{}', '{}')\".format(\n",
" self.name, \n",
" self.dob.strftime(\"%d %B %Y\"))"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"image/jpeg": "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",
"text/html": [
"\n",
" \n",
" "
],
"text/plain": [
""
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"YouTubeVideo(\"apACNr7DC_s\") "
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"RBF Me('R. Buckminster Fuller', '12 July 1895')\n",
"CFG Me('Carl Friedrich Gauss', '30 April 1777')\n",
"WOLF Me('Stephen Wolfram', '29 August 1959')\n",
"GvR Me('Guido van Rossum', '31 January 1956')\n",
"MC Me('Marie Curie', '07 November 1867')\n",
"WD Me('Walt Disney', '05 December 1901')\n"
]
}
],
"source": [
"# all-star cast\n",
"\n",
"bucky = Me(\"R. Buckminster Fuller\", \"12 July 1895\")\n",
"gauss = Me(\"Carl Friedrich Gauss\", \"30 April 1777\" )\n",
"wolfram = Me(\"Stephen Wolfram\", \"29 August 1959\")\n",
"guido = Me(\"Guido van Rossum\", \"31 January 1956\")\n",
"curie = Me(\"Marie Curie\", \"7 November 1867\")\n",
"disney = Me(\"Walt Disney\", \"5 December 1901\")\n",
"\n",
"# suggestive of what we might store in JSON (or other format)\n",
"scenarios = {\"RBF\": bucky, \"CFG\": gauss, \"WOLF\": wolfram, \n",
" \"GvR\": guido, \"MC\": curie, \"WD\": disney} # dict with Me type values\n",
"\n",
"for person in scenarios:\n",
" print(\"{:5} {}\".format(person, scenarios[person]))"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"import json\n",
"\n",
"def to_json(obj):\n",
" return [obj.name, obj.dob.strftime(\"%d %B %Y\")]\n",
" \n",
"\n",
"with open(\"timelines.json\", \"w\") as target:\n",
" json.dump(scenarios, target, default=to_json)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's keep building that glossary..."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"# alternative syntax for adding to a Python dictionary\n",
"glossary = {}\n",
"glossary[\"HTTP\"] = \"hypertext transfer protocol\"\n",
"glossary[\"TLS\"] = \"Transport Layer Security, used to turn HTTP into HTTPS\"\n",
"glossary[\"RSA\"] = \"public key crypto algorithm, named for collaborators Rivest, Shamir, Adleman\"\n",
"glossary[\"PGP\"] = \"Pretty Good Privacy, RSA before the US patent expired, by Phil Zimmerman\""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## A Philosophy of Engineering\n",
"\n",
"At the time of this writing, the Silicon Forest continued to honor the memory of Linus Pauling by preserving his boyhood home on Hawthorne Boulevard. The organization supporting these preservation efforts was [the Institute for Science, Engineering and Public Policy](http://www.isepp.org/).\n",
"\n",
"Do engineers live by a code of ethics? Should they? ISEPP, a think tank, was looking into these questions, especially in light of Linus and Ava Helen Pauling's teachings and values.\n",
"\n",
"\n",
"\n",
"
\n",
"Terry Bristol of ISEPP, patron Doug Strain (ESI), Julian Voss Andreae (sculptor) in front of Alpha Helix\n",
"
"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Literary Sidebar\n",
"\n",
"*The School of Tomorrow* is in part inspired by the movie *The House of Tomorrow*, in turn based on [a book](https://www.nytimes.com/2010/04/04/books/review/Stace-t.html). As you explore this curriculum, [some of the connections](https://kirbyurner.medium.com/a-memo-to-trimtabbers-d94f8ef56f72?sk=a8f026893a508a806c7a0ee8aefb502c) will become clear.\n",
"\n",
"\n",
"
"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Our Tools\n",
"\n",
"By the early 21st Century, many schools were using various Jupyter Notebook like tools. One of most impressive was [SAGE](http://www.sagemath.org/), which allowed cloud computing including access to computer algebra systems.\n",
"\n",
"[The edu-sig archives](https://mail.python.org/mailman/listinfo/edu-sig) at Python.org is a good place to search for insights into how some high school and college teachers were using such tools, including of course Jupyter Notebooks.\n",
"\n",
"Jupyter Notebooks may be rendered in several ways:\n",
"\n",
"* locally through a webserver, running on localhost:8888 (most likely), no internet access required\n",
"* as read-only through a displayer program named nbviewer\n",
"* rendered as read-only on a host website such as Github\n",
"* as [interactive in the cloud](https://mybinder.org/), thanks to containerization and microservices\n",
"\n",
"Check out [this notebook in nbviewer](https://nbviewer.jupyter.org/github/4dsolutions/School_of_Tomorrow/blob/master/School_of_Tomorrow.ipynb)!\n",
"\n",
"Of the above, the first option is the most preferred, because \"interactive\" means only \"the ability to edit and run code cells\" where \"cell\" means some rectangle of code or text, such as you are reading now (if reading a Jupyter Notebook). \n",
"\n",
"If you're running Jupyter Notebook on localhost, you'll be able to start new notebooks from scratch, as well as completely overhaul the ones in your personal stash."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Our Toys\n",
"\n",
"The Oregon Curriculum Network is not a retailer or direct marketer of educational supplies. When you visit your medical doctor, you may get a prescription for a specific pill, but you buy those pills from a pharmacy not directly from the doctor. The doctor may give you free samples in some cases.\n",
"\n",
"Some of you are teachers and are planning on adapting Oregon Curriculum Network materials for your own use.\n",
"\n",
"Toys might include construction kits such as [Zometool](https://www.zometool.com/) and [Lux Blox](https://www.luxblox.com/).\n",
"\n",
"\n",
"\n",
"
\n",
"C6XTY at OCN HQS\n",
"
"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"glossary.update({\n",
"\"CSV\" : \"comma-separated values, one of the simplest data sharing formats\",\n",
"\"DOM\" : \"the Document Object Model is a tree of graph of a document in a web browser\",\n",
"\"HTML\" : \"hypertext markup language, almost an XML, defines the DOM in tandem with CSS\",\n",
"\"JavaScript\" : \"a computer language, not confined to running inside browsers but happy there\",\n",
"\"Pascal\" : \"an early computer language, later commercially available as Delphi from Borland\",\n",
"\"json\" : \"JavaScript Object Notation is a way to save data (compare with XML)\",\n",
"\"localhost\" : \"the IP address of the host computer: 127.0.0.1\",\n",
"\"port\" : \"internet services connect through IP:port addresses, JN usually on port 8888\",\n",
"\"web browser\" : \"HTTP client, sends requests, gets responses\",\n",
"\"web server\" : \"accepts and processes (or rejects) HTTP requests, sends responses\",\n",
"\"XML\" : \"a markup language using pointy brackets, reminiscent of HTML, for structured data\",\n",
"\"SGML\" : \"a parent specification behind what eventually became XML\"\n",
"})"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Python is a language of objects, where objects have type or kind, species. Depending on the species of an object, it will have varying capabilities. Dog objects bark. Car objects brake. Python is one of many computer languages we consider \"object oriented\". \n",
"\n",
"### Literary Sidebar\n",
"\n",
"HTML didn't come out of nowhere. Imagine storing all the parts for an airplane in a computer. How would you do that. JSON is one answer. XML is another. XML grew out of an older [SGML](https://en.wikipedia.org/wiki/Standard_Generalized_Markup_Language) where ML stands for \"markup language\". In HTML, we use pointy brackets as a kind of punctuation. \n",
"\n",
"The poet [Gene Fowler](https://www.amazon.com/Waking-poet-Acquiring-usually-talents/dp/0941386007) used to say we should teach HTML right along with all the rest of the language, meaning periods, commas, semi-colons and like that (grammar and punctuation). He wrote a text processor in Pascal showing the kind of thing he meant. He was [a prisoner in San Quentin](http://www.bigbridge.org/BD-GF-B.HTM) before he discovered how to \"re-genius\" himself.\n",
"\n",
"### Sharing Data\n",
"\n",
"We'll be sharing a lot of data sets in this school. We consume data produced by others, and we publish data for others to use. \n",
"\n",
"Data needs to be stored in some structured way, in files and databases. Even pictures, movies and music are data. We package up data in files and stream these files to one another over the internet or by some other means. Computer programs are also stored as data files, usually in some standard text encoding such as UTF-8.\n",
"\n",
"In the Glossary above, created in the Python language as a \"dictionary\", you will find at least three data storing and streaming formats defined: [CSV](https://en.wikipedia.org/wiki/Comma-separated_values), [JSON](https://en.wikipedia.org/wiki/JSON) and [XML](https://en.wikipedia.org/wiki/XML).\n",
"\n",
"The above data structure looks a lot like JSON by the way. Let's see that using Python's json library:"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{\"HTTP\": \"hypertext transfer protocol\", \"TLS\": \"Tr ... came XML\"}\n"
]
}
],
"source": [
"import json # Python has a huge library with hundreds of modules\n",
"send_over_web = json.dumps(glossary)\n",
"print(send_over_web[:50], \"...\", send_over_web[-10:]) # first 50 chars is enough, then the last 10."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"str"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(send_over_web) # what type of object is this? Number? String? Other kind of object? Dog?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### RECAP\n",
"\n",
"We just asked to have our ```glossary``` object turned into a string (a sequence of characters, like keyboard characters), but formatted as JSON. That ended up looking not much different from the ```glossary``` object in the first place, as defined in the code cell above.\n",
"\n",
"When a web browser asks an IP:port address for an HTTP response, by means of an HTTP request, it may get back JSON as payload. Or it may get back HTML, its bread and butter. Web browsers are all about combining the HTML + CSS in an HTTP response, and turning that into a formatted and typeset looking web page, such as you're likely looking at right now."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Lets save our JSON as a text file, for retrieval in [a next notebook](dataviz.ipynb)."
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"with open('glossary.json', 'w') as output:\n",
" json.dump(glossary, output)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Computer Programming Interlude\n",
"\n",
"Lets continue to build or sense of how to slice and dice time using a much trickier coordinate system than most. Keeping track of date and time is non-trivial. Our tools took many programmer hours to build. Keep looking for bugs. \n",
"\n",
"Remember that some concepts we seek to track, such as whether [daylight savings time](https://youtu.be/w45QkL9blG4), or standard time is in effect, may depend on datasets we have not updated recently."
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Name: R. Buckminster Fuller DOB: 1895-07-12 Centennial: 1995-07-12\n",
"Name: Carl Friedrich Gauss DOB: 1777-04-30 Centennial: 1877-04-30\n",
"Name: Stephen Wolfram DOB: 1959-08-29 Centennial: 2059-08-29\n",
"Name: Guido van Rossum DOB: 1956-01-31 Centennial: 2056-01-31\n",
"Name: Marie Curie DOB: 1867-11-07 Centennial: 1967-11-07\n",
"Name: Walt Disney DOB: 1901-12-05 Centennial: 2001-12-05\n"
]
}
],
"source": [
"from datetime import timedelta # for time deltas (needed for size deltas)\n",
"\n",
"for person in scenarios.values():\n",
" # cent = person.dob + timedelta(days=365 * 100) <-- tempting but wrong\n",
" cent = date(person.dob.year + 100, person.dob.month, person.dob.day)\n",
" print(\"Name: {:20} DOB: {} Centennial: {}\".format(\n",
" person.name, person.dob, cent))"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [],
"source": [
"# help(timedelta)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.3"
}
},
"nbformat": 4,
"nbformat_minor": 4
}