After over two years of intense efforts, I am thrilled to share that the Etteilla Foundation and its website https://etteilla.org are finally live. The Etteilla Foundation is a 501(c)(3) non-profit organization dedicated to preserving and promoting the rich cultural heritage of playing cards.
Over the last two years, as side project, I created the foundation and spend my weekend and vacations writing the Foundation online bespoke infrastructure such that it will be able to house thousands of decks in a reliable and long lasting manner -- I am hoping hundred of years!
Creating the Foundation was not an easy decision as I am a private person (as many of you know this) and I did my best to stay anonymous as I built my card collection. However in the end I believe that creating the Foundation is the right thing to do as there were no good alternatives to preserve playing cards collection in perpetuity while ensuring free public unrestricted access.
This side-project is very fulfilling experience as I really feel I am doing something genuinely useful to the world which is my life long goal. The community has been very enthusiastic since the original prototype so that is very motivated and to be honest after being head-down in research for the last two decades it feel very nice to work on a well defined problem with stable data where tech is a secondary concern.
The website is still in its infancy with only a few of our most precious decks on display and a lot of information is missing. That said I feel it is ready enough to represent where the Foundation is heading and get feedback.
Technically, as I am sure a lot of you will ask, the site is written in Python / Flask, leverage a MySQL database and run on containers. We keep the frontend, API, and admin app separated but I would not call it micro-service infrastructure. We also use Cloudflare edge workers to
While the project might appears easy at first glance there are some challenges -- a) we have to serve hundred of images per pages b) Scanning / processing the collection (and hopefully future deck donations) requires dealing with hundred of decks.
We address image serving by using Cloudflare edge workers to generate images in the right size and multiple formats quickly and efficiently. It's a very bursty workload and containers are too slow to spin up for good webpage latency.
We address the deck processing by combining TensorFlow (I couldn't resist!) to recognize the cards suits / values and do OCR for the text. The images you see of the decks are programmatically generated using Blender with custom scenes and python for automations.
I am happy to write more about those things if there is interest
If the project interest you, there is a lot of cool things to do and I would love to have help -- I posted a list of potential volunteering opportunities here: https://www.linkedin.com/jobs/search/?currentJobId=3619526064&f_C=92608528&geoId=92000000&originToLandingJobPostings=3619526064
I hope you found this side project interesting and I am happy to answer any question you might have :)