A day living in the "Singularity"
Tags: JavaScript, threejs, webdev, glitch
Published: 2020-05-03 08:39:45


Yesterday was one of those days. It was not that memorable a day but it was merely a thrilling day. Let me explain. For several hours I was in the ["singularity"](https://en.wikipedia.org/wiki/Technological_singularity). I was living and experiencing in a future I had only barely dreamed of.

> the singularity is a hypothetical future point in time at which technological growth becomes uncontrollable and irreversible, resulting in unforeseeable changes to human civilization

The objective of this post is to share aspects of this singularity with you - wherever and whenever you are. The interesting thing is that you are already in and part of the singularity. I will explain. I am a software designer and have been designing things - mostly computer programs - in 3D for decades. The programs I write have been used to design houses, furniture, math visualizations, air traffic moves, stock market moves and more. In all of these workflows, my goal is always to share with you the design I am currently working on and to do this as quickly and as easily as possible.

I am happiest when, for example: you make a comment. I bang on the keyboard for a bit and press enter.  You see the changes and make a new comment. I bang some more. The design progresses until we are both happy with it.

In the real world this is really kind of an impossible idea. You cannot look at a house and say "well, I'd like that room to be a little bit bigger" and - _presto!_ - the room becomes bigger. But we have been able to do shared real-time editing like this on the computer screen for several decades. The only issue is that you really have to be sitting right next to me and my computer. You can talk and I can edit and we can both see what's happening in real time.

The moment you are not in the same room it starts getting tricky. We can work over the internet but then you have to have the same program I am running or maybe a lot of technical expertise. These are all difficult things. The result is that there is very little 3D communication in the world as of yet. The only exception is, obviously, gaming. With gaming you can see excellent visions of ways people can communicate and collaborate online and in 3D. The only issue here is that games take huge amount of time, effort and money to design, build and deliver. 

The time and effort to do things like this just to share my design for your new bookshelf or new data viz has been way outside of normal means.

I have been able to embed 3D designs into WordPress and Blogger. But each instance has been a hand-crafted and time-consuming experience. It involves saving the design data, uploading it to a server, creating some kind of thing in the post that links to the server and adds ways of allowing the user to rotate the view and whatever. What usually happens instead is that somebody does a screen grab of the 3D thing and saves it as a jpeg and then adds the jpeg to the blog post or email or forum thread. I have been doing this kind of thing for decades. This reduction or simplification of the design has inevitably become a cause for anguish and disappointment for me whenever I share my 3D designs.

Generally I have had two unsatisfactory choices I can spend much time producing a visualization (viz) that becomes useless as soon as we make even a minor change or I can spend time and producing a number of screen captures with the hope that you will get it.

Until yesterday.

{% glitch theo-2020-04-28-population app %}

The thing you see above is definitely a 3D viz and it is appearing in a post on your browser. It takes no more effort than clicking on a link for you and countless others to view it, rotate it, zoom it, whatever.

The viz is created and maintained by me using [VS Code]( https://code.visualstudio.com/ ) - currently the most popular text editor for software programmers. 

The code is turned into a viz via [Glitch.com]( https://glitch.com/ ). Glitch supplies a [plugin or extension for VS Code]( https://marketplace.visualstudio.com/items?itemName=glitch.glitch ) that captures any and all edits on your computer, sends the edits to the Glitch server which then updates the viz. The plugin allows you to open any project you have in Glitch and start maintaining it.

The next step is get the viz from Glitch to wherever it wants to be seen - which in this cases is in this post on Dev.to. Glitch, Dev.to and other have simplified this process. In order to add the above viz, all I had to do was add the following text in the post wherever I want thrr viz to be displayed

```
  {% glitch theo-2020-04-28-population app %}
```

That little bit of text causes Dev.to post to go and read the viz data from Glitch. Any time the code in Glitch is updated the Dev.to post is updated. With the VS Code extension enabled, anytime I edit in VS Code, Glitch is updated which then in turn updates the Dev.to post.

So there I was yesterday happily editing my code in my favorite editor on a Windows machine and also seeing the updates to the Dev.to post I was working on in real time in the browser on my Chromebook computer. I did not need push any buttons, I did not need to run any scripts, I did not need to recite any magic incantations. It just worked.

Then I wanted to see what was happening in Glitch. So I opened the project on Glitch and started typing in VS Code on the Windows machine. Sure enough, the code I typed on the Windows machine appeared immediately in the Glitch project tab in the Chromebook. 

Then I started typing in the Glitch project on the Chromebook. After a while I looked over at the Windows machine. OMG, the new text was appearing there as well. The bottom line is that all the editing is bi-directional. Coding and presenting a 3D viz is now as easy and as painless as collaborating on a Google Doc.

Wait, there's more!

I was so pleased with what was happening, I thought it would a nice thing to thank the authors of the Glitch VS Code Extension. So I went to the Glitch Forum and started a thank you post: https://support.glitch.com/t/about-the-vs-code-extension-category/12451?u=theo-armour

As I was running the thank you, I thought it would be nice to explain a little bit about what I was working on. so I tried embedding a glitch viz inside of the Glitch Discourse Forum post. Discourse is a very popular Forum producer but has nothing to do with Glitch or Dev.to, so getting anything to work seemed unlikely or would take a lot of labor. That is until I dropped the embed code provided by Glitch into the Discourse post.

Bingo! The viz worked in Discourse.


```
<!-- Copy and Paste Me -->
<div class="glitch-embed-wrap" style="height: 420px; width: 100%;">
  <iframe
    src="https://glitch.com/embed/#!/embed/glitch-in-vscode-2020-05-01?path=README.md&previewSize=0"
    title="glitch-in-vscode-2020-05-01 on Glitch"
    allow="geolocation; microphone; camera; midi; vr; encrypted-media"
    style="height: 100%; width: 100%; border: 0;">
  </iframe>
</div>
```

Which looks like this

{% glitch glitch-in-vscode-2020-05-01 %}

The Read Me file contains an account of my experiences. Click the "View App" button at lower right to obtain another dose of 3D. ;-)

Even if you read the post, you will get only a part of what was going on. I could do things such as Update FireFox on Windows from my Google Phone. I could voice dictate on the Chromebook and text edit on Windows. I could have multiple windows on multiple devices all in sync. And more/

After years of waiting, my 3D world is beginning to have the no-cost, easy and powerful online tools that my 2D brethren have enjoyed for decades.

So for me yesterday was more than a singularity. Yesterday was a "triplearity".