Code for an API for a mechanical computer (Brunsviga 13RK). Wrapper around a human (or possibly robot) in the loop.
To access the brunsviga as described in the Implementation section below, please check out brunsviga.io. Note that I generally keep the Brunsviga 13RK at work, and I have a life outside of work, so don't expect a response to a web request after (Australian Eastern Standard/Daylight Time) work hours.
Here's the overall plan
- Provide human-friendly web form for submitting requests.
- Sanity check human input.
- Use AWS API gateway service to provide a REST API.
- Trigger an AWS lambda function that sends JSON via AWS SNS of operation to be run by a human.
- create s3 bucket for human operator to upload videos of calculations to (using iPhone with Transmit-iOS app),
- convert videos to mp4 and then upload, using AWS CloudFront to serve content for faster access. To do: look at AWS Elastic Transcoder for conversion (instead of Photos app on OS X).
then video link is emailed to requestor.
- Define an SNS topic called brunsviga, and subscribe the human operator's email address to that email.
- (Optional) update the
- Make sure you have serverless installed:
npm install -g serverlessand have your AWS credentials set up.
- Set up an s3 bucket holding index.html and css/, fonts/, images/ and js/, and I also recommend using CloudFront CDN. The s3 upload can be done by
aws s3 cp web s3://mybucket/ --recursive
First calculation run
- How to deal with tracking and returning requests (use DynamoDB?).
- Could build a robot to work inputs and turn knob, plus OCR for readout.