Code for an API for a mechanical computer (Brunsviga 13RK). Wrapper around a human (or possibly robot) in the loop.
Licensed under GPLv3 licence except for bootstrap and jquery components licensed under the MIT licence.
To access the brunsviga as described in the Implementation section below, please check out brunsviga.computer. 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 Central 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
region
in api/serverless.yml. - Make sure you have serverless installed:
npm install -g serverless
and 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
Video:
- How to deal with tracking and returning requests (use DynamoDB?).
- Could build a robot to work inputs and turn knob, plus OCR for readout.