Subscribe to this blog using RSS
Tuesday 02 November 2021
October 2021 Update
I’m back
As promised, I’m back from the summer and continue to develop Type.World.
So far I’ve cleaned up my code and worked on a few loose ends that were left over from when I published Type.World 1.0 in spring, namely the messaging servers. They are responsible for the live update notifications that the app receives (if the publisher decides to use that functionality). Although I’m working in the Google Cloud ecosystem, I decided against using Google’s own Pub/Sub implementation for that, which is really simple to implement but is unfortunately limited to 10,000 topics and 10,000 subscribers per topic. So any way I put it I would have only been able to fit 10,000 combined users and subscriptions into this project, and that’s a limit I’d rather not be subjected to.
So instead I opted to implement my own messaging server using an open-source library called ZeroMQ. One such server can hold up to 65,000 users, and I can now easily scale the system up by adding servers. When I first decided to make a font installation technology, I really didn’t think I would have to spend so much time on messaging servers.
Open-Sourced The Central Server
Also, today is the day for a rather big announcement: I finally open-sourced the central server, otherwise known as https://type.world. It hosts not only the user-facing website, but also https://api.type.world that the GUI App and font publishers interface with to control and use the system, normally hidden from the user. Essentially, the type.world server is responsible for hosting the user accounts that you can create in the GUI App. It ties the room together.
It’s the last remaining part of the system that needed to be open-sourced. I held that back not just because I had to clean up my code before I could show it to the public, but also because I was simply afraid of publishing what is arguably the heartpiece of the whole operation, including the commercial part. I trust in open-source and the benefit it brings as people can spot mistakes and contribute fixes. I’m just not used to it and scared.
So without further ado, here is https://github.com/typeworld/appengine
What’s Next?
I want to create a separate platform for hosting fonts. Obviously, implementing an API Endpoint such as is required by the Type.World App is quite a hurdle for the average type shop. A very easy website where you can drop your fonts and send your clients invitations to use those fonts in the app will provide a low entry barrier to the adoption of the system.
This platform is aimed primarily at custom type projects, educational institutions, and maybe even design firms; anyone who would like to distribute fonts to a known user group in a controlled way and send font updates.
However, this will not be very suitable for normal retail type foundries. While the new platform will have its own API and you could theoretically interface with it and create a new font subscription for a new retail font customer of yours, you will have to implement that in your online shop’s code and it’s arguably not very different from implementing the whole API Endpoint while you’re at it. However, it could be a bit simpler. If that helps Type.World’s adoption, I would be happy about that.
Naturally, this new platform will be released as open-source, and I will run one instance of it myself commercially (with free entry-level tiers), while others can take the code and implement their own hosting solutions.
Type.World Map
At the end I have a small treat for you: A world map of Type.World’s usage. It shows Type.World users (by city, not by their precise location which is unknown to me), as well as servers used by Type.World and Google Cloud’s points of presence and actual internet cables. As you can see: No one is using Type.World yet. Let’s change that.
The map, obviously based on Google Maps, is rather interesting. I turned off borders and names of nation states, so it focuses on connections rather than separation. It’s quite fun to explore, often leaving a sense of uncertainty of the country you’re actually looking at.
Eventually I want to have a telcom-style control room with a wall-spanning projection of that map complete with blinking lights and sounds as users interact with the system.