Why I Built My Website and FigureShift

I'm certainly not the most organized fellow in the world, but I do like to keep track of what I'm doing. I'm a software developer and I accustomed to handing those tasks to a computer. I had only collected my first dozen or so typewriters when already I couldn't keep everything in my head. At that point I started making a google spreadsheet. My first spreadsheet had:
- Count
- Make/model
- Serial number
- Year
- Condition/work needed
- Parts needed
The Problems of a Spreadsheet
For a while that was fine but it quickly showed its limitations. I often am working in my shop which isn't near a computer. The most obvious tool to make changes was my phone, however, if you've used google sheets from a phone you'll know that isn't a very pleasant experience. Plus the number of columns kept increasing.
- Provenance
- Ribbon width
- Keyboard layout
- YouTube URL (if I had made a video)
- TWDB URL (if I had upload it)
Finally I started hitting some real issues. I liked to share the speadsheet with people to share my collection with them but that meant that discussions of money might not be wanted. And after I started selling a few, I wondered if I should hide to whom I had sold them, but also I wanted to remember these things for myself.
Another sharing problem bugged me: these were just spreadsheet lines, you couldn't add pictures; surely part of the fun of typewriters is how good they look! The spreadsheet was almost unmanageable at this point and it still couldn't meet my needs.
As a developer I knew I wanted a database for the data. From there it isn't a large leap to say that if I have a database and pictures, really I have a website, and with a website I can share my collection in a much friendlier way!
After a couple false starts, I started working on this project on the evenings during my family vacation. There weren't any typewriters to repair, and I stay up later than my family, so why not work on some other project? The website started taking shape.
The Website
Obviously the site has all the data I kept in my spreadsheet, but there are some additional features. For example I've implemented (but not used much yet) a tagging/categories system; I can tag all the index machines, or tag by era, or by type, or for having interesting typefaces.
While you can see most of the data, there are more features for me. I can store how much I paid for a machine, who I sold it to or who might be interested in buying it. I can keep track of people I've loaned them to and list just those machines. I can also list what metadata is missing from what machines; I have a report that tells me which machines have no pictures, no serial number, no year, etc; slowly that report will help me fill in data I haven't entered yet.
The Typewriter Database
But then I started thinking about the Typewriter Database. I have all the information and even pictures that I would would to enter into the TWDB, it is too bad I couldn't just magically enter them from my site straight into it. But of course that isn't magic either, just more code!
So I started investigating the "API" of the TWDB. As a web 1.0 site it is driven by form submission and that is perfect for a task like this. In essence you just get the application to fill in the forms and submit. But as many of you will know, the pain point of uploading to the TWDB is the picture sizing requirements. They exist for good reasons but they do impose a barrier to entry. How fun was it for me then to just be able to have the computer do the resizing for me on the way in! I felt like I had found the secret easy way to submit to the TWDB.
And once I had that I couldn't keep it to myself. The Typewriter Database is made more useful the more people submit to it. If I've lowered the barrier to entry for myself, how much better to help other people clear that barrier too! So I took that code and extracted it into a reusable library. Now I could share that library from both my site and a desktop tool that everyone could use: FigureShift.
FigureShift
With this tool my hope is that everyone can get their collection into the TWDB. Yes, it will work for people who have one or two machines to add, the resizing functions are still helpful, but my real target is people with many machines to add. Every attempt is made to automate based on what I assumed most people would do with their collection. Namely, I assumed that most people have a single directory that contains subdirectories (perhaps many levels) with finally one directory per machine and that the relative path name would contain some information about the typewriter itself. Now that doesn't have to be true, but if it is it will try to extract as much information as it can from that path.
Along with resizing the images it lets your crop and rotate them. It lets you pick which image is the cover picture, which is the type sample. You can add links, you can add text. Once you're ready mark the machine as ready to be uploaded, save it locally (which I'll discuss more later) and then let it rip! FigureShift will take all the necessary actions to create your entry and upload and attach your images and metadata.
Of course the tool has some problems to work around as well. Where to save the data? Should I make a database on your computer? What if you wanted to edit it by hand? What if you want to move the directories around? So instead I chose to write a small structured document, in a format that's both human and machine readable called YAML, in the picture directories themselves; one per machine. But then there's another problem, after resizing the images the TWDB gives them their own id, how can I keep track of that data, and the url of the gallery that was created? Well it could go into that same machine.yaml file that I wrote before, but now it would be mixed data that the user might be interested in editing and something that they would not and even should not. That is what begat the second YAML file. One is the metadata for your machine and one is the state file for information from the TWDB.
As a result once you save a gallery locally, you can move it, rename the directory, whatever you want to do. The metadata lives in those files and no longer comes from the directory name. On thing I haven't yet worked on is how to "adopt" a TWDB entry from the DB back into FigureShift. It is a hard problem but I'm working with Ted Munk (owner and operator of the TWDB) to help make it easier. For now though you can't manage an entry that you made on the TWDB from FigureShift, and if you delete those YAML files it is basically the same deal. Like I said that should become possible over time.
Finally
I hope you enjoy the site, I love to share my collection. Click around, see the videos I've made restoring machines. More are coming all the time (and I can't wait to get back to them now that this project is done). And get on uploading to the TWDB! I hope FigureShift helps you. Please let me know how it goes for you. I'd love to hear your feedback! Enjoy!