Biomakespace Forum

Makespace Training System (Hackathon on 14 April)

(Jenny Molloy) #1

Hi All

See message below from John Sturdy at Makespace about a system he is designing for them but which may be useful for us!

General notes and specifications are in the linked google docs and here is the message to the Makespace Google group if you’d like to respond!

It looks like the initial hackathon will be 14 April.


Having long thought that isn’t suitable for signing up to training, because of it not rolling the waitlist over to the next session on the same equipment, I followed the “do-ocracy” principle and started to think about how it should be done, and started to discuss my ideas with some of the members who are involved in keeping the space organized.

I’ve now started to produce the beginnings of a system, written in Python and using MongoDB for storage. I’m planning to slot it into the Django web framework (which I’ve not worked with before, so that’s the part I most hope someone else will pitch in with) and in a discussion some of use have just had, Amazon’s Cognito was suggested as a component for the login side. To perform the function that got me started on writing it, the system also has to look after the membership list and the equipment list, and run an event calendar.

So now the workflow for getting trained is that you log in to this system, go to the page for the equipment class you’re interested in, and press it’s “request training” button. Your profile on the system includes an indication of which days of the week, and which times of day (morning/afternoon/evening x 7), you’re typically available, and when a trainer for the equipment presses the “Create training” button that they see on their version of the equipment page, they fill in the date and time for the training, and the system looks for who has requested training on it, filters them by whether they’re available, sorts them into order of how long ago they signed up, trims the list to the number of places available, and mails invitations to those people, who can then use a link included in the invitation to confirm that they can attend. At the training, the trainer accesses a generated page with a list of trainees, and at the end of the training they indicate who has completed the training, and those people are then registered as trained. Later on, some of the machine software, such as Octoprint, may be able to check automatically from keyfobs to enable the equipment.

Many other things fit around this, such as displaying both a public calendar of events and giving users individual calendars of things they’ve signed up for. And, of course, we’re taking the GDPR into account and making sure there will be good privacy controls.

None of it is “rocket science”, and it’s not actually that big a system, and we’d like to get a basic version of it working quite soon, perhaps by the end of May. I already have some design documents, and a github repo with code stubs and some of the detailed code in it, that I’ll be ready to show people in about a week (hopefully less). (Of course, you can hunt it down before I think it’s ready to share, if you like.) In about a week I should have samples of most or all of the dynamically created display pages, and probably none of the actions that happen when you click Submit" on them, and I’ll share those for discussion. But even before then, I’d like to get more people involved in the project, both to speed up the bits I already know how to do, and to greatly speed up the bits where I’d have to do more learning specifically for the project.

So, if you’re interested, and are significantly experienced with any of Python, mongodb, pymongo, and django, please do get in touch. I think the best development plan would be to have a one-day hackathon (or perhaps just an evening meeting) soon after Easter, for me to explain the plans and for people to pick what they can best help with, then a period of a few weeks while people work on their areas of it, then a one-day (or full weekend) hackathon to integrate all the parts and perhaps add a few bells and whistles.