<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://sandbox.umd.edu/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Gfc</id>
	<title>sandbox - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://sandbox.umd.edu/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Gfc"/>
	<link rel="alternate" type="text/html" href="https://sandbox.umd.edu/wiki/index.php/Special:Contributions/Gfc"/>
	<updated>2026-10-21T08:53:18Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://sandbox.umd.edu/wiki/index.php?title=Talk:Maker_Space_Manager_System&amp;diff=3434</id>
		<title>Talk:Maker Space Manager System</title>
		<link rel="alternate" type="text/html" href="https://sandbox.umd.edu/wiki/index.php?title=Talk:Maker_Space_Manager_System&amp;diff=3434"/>
		<updated>2026-10-16T21:06:15Z</updated>

		<summary type="html">&lt;p&gt;Gfc: /* Systems Focusing on Access Control (may include door access in addition to machine tool access / lockout) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Makerspace Management Software at UMD Sandbox Makerspace = &lt;br /&gt;
Discussion page related to software for managing the Sandbox Makerspace&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Listing of commercial or open source systems with overlapping functionality =&lt;br /&gt;
== Lists of Systems (other pages like this one)==&lt;br /&gt;
;Hackerspaces.org wishlist of software functions / features. :https://wiki.hackerspaces.org/Software_Wish_List&lt;br /&gt;
&lt;br /&gt;
;List of software from hackerspaces.org: https://wiki.hackerspaces.org/Hackerspace_Software\&lt;br /&gt;
&lt;br /&gt;
;MakerNexus notes on Access Control Systems: https://makernexuswiki.com/wiki/Access_Control_Systems&lt;br /&gt;
&lt;br /&gt;
== Individual Systems ==&lt;br /&gt;
=== Systems Focusing on Access Control (may include door access in addition to machine tool access / lockout) ===&lt;br /&gt;
&lt;br /&gt;
;Fabman software :Management software with machine control hardware devices, API, and other features. https://fabman.io/&lt;br /&gt;
&lt;br /&gt;
;Grit Automation Platform. :The Grit Automation Platform is a wireless, local-software workshop automation system designed for woodshops, metal shops, and education labs. Includes Core Features &amp;amp; Solutions for Dust Management, Tool Access Control &amp;amp; Safety, Time &amp;amp; Asset Management, Environmental &amp;amp; Energy Monitoring.&lt;br /&gt;
&lt;br /&gt;
;MakerGate (Equipment Access Control): An open-source smart power switch and safety interlock system (similar in function to Fabman) that requires authentication—such as an RFID card and PIN—to let only trained users operate workshop machinery, eliminating monthly subscription fees. &lt;br /&gt;
:https://makergate.us/&lt;br /&gt;
&lt;br /&gt;
;Nova Labs Nova Pass : https://novapass.nova-labs.org/ (active system home page)&lt;br /&gt;
::(description from Makerfaire: https://nova.makerfaire.com/maker/entry/1224/) &lt;br /&gt;
::(details:https://goo.gl/RVmtiS)&lt;br /&gt;
&lt;br /&gt;
;RATT - RFID All The Things: New Hampshire&#039;s MakeIT Labs RaspPi based RFID access control system. https://github.com/makeitlabs/ratt (video: https://www.youtube.com/watch?v=erwIPVwXUr8)&lt;br /&gt;
&lt;br /&gt;
;FATT - FOB all The Things: Ace makerspace (formerly Ace Master Toys) https://www.acemakerspace.org/fatt-project/&lt;br /&gt;
::;Ace Master Toys: Makerspace system based on Google&#039;s AuthBox system  https://github.com/google/makerspace-auth&lt;br /&gt;
::;Ace Makerspace Occupancy System: https://www.youtube.com/watch?v=kemAM8MWIN8&lt;br /&gt;
&lt;br /&gt;
;Google Makerspace Auth (aka AuthBox): https://github.com/google/makerspace-auth&lt;br /&gt;
&lt;br /&gt;
;Ithaca Generator AuthBox:&lt;br /&gt;
:* https://discuss.ithacagenerator.org/t/makerspace-authbox-on-github/565/3&lt;br /&gt;
:* https://github.com/ithacagenerator/AuthBox&lt;br /&gt;
&lt;br /&gt;
;Manchester, NH MakerAuth&lt;br /&gt;
:* https://github.com/ManchesterMakerspace/MakerAuth&lt;br /&gt;
&lt;br /&gt;
;RasPi-Lockout (designed for RIT Construct Makerspace): &lt;br /&gt;
:* https://www.youtube.com/watch?v=aoAdB13IVr0 (YouTube demo)&lt;br /&gt;
:* https://github.com/jaschawilcox/raspi-lockout (GitHub Repo)&lt;br /&gt;
&lt;br /&gt;
;Build Brighton Access Node: https://www.youtube.com/watch?v=3X64JmTpOcA&lt;br /&gt;
&lt;br /&gt;
;Open Access Control: Uses the Arduino hardware to build a robust access control and alarm system. https://code.google.com/archive/p/open-access-control/&lt;br /&gt;
&lt;br /&gt;
;tinkerAccess: The tinkerAccess system is a Raspberry Pi based access control system that can be used to prevent unauthorized users from using devices that require special training. It could also conceivably be used to control electronic lock boxes or doors. The system was originally designed and created by Matt Stallard, Ron Thomas, and Matt Peopping for TinkerMill a makerspace in Longmont, CO. It is continually being maintained and enhanced by other contributors in the community. https://github.com/TinkerMill/tinkerAccess&lt;br /&gt;
&lt;br /&gt;
;Triple Cities Makerspace ACS System: https://www.tcmakerspace.com/index.php/2019/08/19/project-profile-access-control-system-acs/&lt;br /&gt;
&lt;br /&gt;
;The MakerBarn in The Woodlands, Texas MACS System: http://koljawindeler.github.io/macs/.  &lt;br /&gt;
::* MACS UI Video: https://www.youtube.com/watch?v=zLidqAPo3Cs &lt;br /&gt;
::* An Introduction to the MACS - Makerspace Access Control System: https://www.youtube.com/watch?v=CI3xxsBM9SE&lt;br /&gt;
&lt;br /&gt;
;PITT-X Makerspace Access System: https://www.youtube.com/watch?v=2HG-vyV4yoM&lt;br /&gt;
&lt;br /&gt;
;Member Access System for Pumping Station One :https://github.com/hef/ps1auth&lt;br /&gt;
::https://github.com/bdenne2/ps1auth&lt;br /&gt;
&lt;br /&gt;
;HACCSY: Hackerspace Access Control and Check in System. Works with Seltzer CRM, running on a Raspberry Pi. https://www.instructables.com/id/HACCSY-Hackerspace-Access-Control-and-Check-in-Sys/&lt;br /&gt;
&lt;br /&gt;
:;Open Access Control Ethernet: https://github.com/zyphlar/Open_Access_Control_Ethernet&lt;br /&gt;
::;Open Source Access Control Web Interface (works with above) :https://github.com/zyphlar/Open-Source-Access-Control-Web-Interface&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;;Safety Spot :Commercial maker space management software widely used in university maker spaces. https://www.safetyspot.com/ &amp;lt;/s&amp;gt; &amp;lt;b&amp;gt;No Longer Available&amp;lt;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;(UC Berkeley) Makerpass system onepager: https://assets.pubpub.org/hpise2ck/01585588151622.pdf&lt;br /&gt;
&lt;br /&gt;
;Recursion: https://recursion.space Commercial system with free tier. Patented equipment lockout controller.&lt;br /&gt;
&lt;br /&gt;
;UT Austin FabApp/JuiceBox: FabApp is a PHP-based system for managing a makerspace (https://github.com/UTA-FabLab/fabapp). JuiceBox is a Python-based system for providing access control to power tools (https://github.com/UTA-FabLab/JuiceBox).  These and other UTA apps are on the UTA GitHub: https://github.com/UTA-FabLab&lt;br /&gt;
&lt;br /&gt;
;UT Austin Team Lockout: https://blog.uta.edu/cseseniordesign/2019/07/20/lockout/ The Maker Space Lockout System correctly gives access to Machinery only to users that have been adequately briefed on the machinery’s safety and operation. The system will be able to control access for each user according to their level of skill and expertise. Users of The Maker Space Lockout System will also become more equipped to handle and view wear and tear on machines via the data collection purge at the end of each job.&lt;br /&gt;
&lt;br /&gt;
===Not yet Categorized ===&lt;br /&gt;
:;RFIDDoorLock: https://wiki.melbournemakerspace.org/projects/RFIDDoorLock&lt;br /&gt;
&lt;br /&gt;
:;Byro :https://github.com/byro/byro&lt;br /&gt;
&lt;br /&gt;
:;HSBNE :https://github.com/hsbne/hsbneportal&lt;br /&gt;
&lt;br /&gt;
:;MetalabOS: https://github.com/Metalab/mos/&lt;br /&gt;
&lt;br /&gt;
:;NOMOS (Membership Management):  https://github.com/vhs/nomos&lt;br /&gt;
&lt;br /&gt;
:;MeMaTool: https://github.com/sim0nx/mematool&lt;br /&gt;
&lt;br /&gt;
:;RFID Tool Cabinet: https://www.youtube.com/watch?v=u-L_7pyPcvE&lt;br /&gt;
&lt;br /&gt;
=== Systems Focusing on Space Management without Access Control (may include elements of CRM, AR/AP, training management, inventory control, etc.)  ===&lt;br /&gt;
(Some of these may integrate with other Access Control Systems)&lt;br /&gt;
&lt;br /&gt;
:;WildApricot :Membership management software used by many maker spaces. https://www.wildapricot.com/&lt;br /&gt;
&lt;br /&gt;
:;Seltzer CRM: Open source CRM / membership management software created by a maker space and designed to be extensible and easily modified.  https://wiki.hackerspaces.org/Seltzer_CRM&lt;br /&gt;
&lt;br /&gt;
:;SIMPL: (Software primarily designed to manage coworking spaces with features to support maker spaces) https://smpl.io/software/makerspaces/&lt;br /&gt;
&lt;br /&gt;
:;OpenBravo (ERM/ERP) :https://www.openbravo.com/&lt;br /&gt;
&lt;br /&gt;
:;WikiSpaces :The primary goal of the WikiSpaces project is to provide a &#039;startup&#039; wiki, which is basically a MediaWiki distribution especially for hackerspaces. This distribution will provide a working, up to date, MediaWiki installation, with the commonly needed extensions installed and configured. https://wiki.hackerspaces.org/WikiSpaces&lt;br /&gt;
&lt;br /&gt;
==== Not Yet Categorized ====&lt;br /&gt;
&lt;br /&gt;
:;Scholarly article on value of information collected using Maker Lens / MakerPass access system. :  https://people.eecs.berkeley.edu/~eschoop/docs/makerlens.pdf&lt;br /&gt;
&lt;br /&gt;
= ARCHIVED ITEMS BELOW =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==ARCHIVE LabSwipe /MSM System Development History &amp;amp; 2022 Road Map ==&lt;br /&gt;
&lt;br /&gt;
===Development History===&lt;br /&gt;
Would someone on the Labswipe team add to this section?&lt;br /&gt;
&lt;br /&gt;
===Current Release===&lt;br /&gt;
&lt;br /&gt;
===Future Enhancements===&lt;br /&gt;
&lt;br /&gt;
Road Map for future enhancements.  &lt;br /&gt;
&lt;br /&gt;
==== 2021-2022 MSM Rework Outline ====&lt;br /&gt;
*Outline of desired improvements for development work from Summer 2021 to Summer 2022&lt;br /&gt;
===== 2021 =====&lt;br /&gt;
* Improvements to existing UI / core LabSwipe functionality (Fall 21) &lt;br /&gt;
** Improved editing of data entry fields&lt;br /&gt;
** Integration with UMD swipe Identity API to correctly identify new cards swiped into system and close current opportunity for student to use a created ID card with false UID.&lt;br /&gt;
** Integration with UMD swipe API to:&lt;br /&gt;
*** Identify deactivated student ID cards and &lt;br /&gt;
*** Update CardID serial number when a lost ID card is replaced with a new card.&lt;br /&gt;
&lt;br /&gt;
===== 2022 =====&lt;br /&gt;
* Integration with Canvas LMS (Spring 22)&lt;br /&gt;
** Using Canvas API, ensuring API key is well protected using a secrets manager or similar approach&lt;br /&gt;
** Implement a middle layer between MSM and Canvas to track training certifications (similar to a micro credentialing system) in a way that creates an abstraction layer between a canvas course and a training certification.&lt;br /&gt;
** See &#039;&#039;&#039;Integration with ELMS/Canvas Learning Management System&#039;&#039;&#039; below for detail&lt;br /&gt;
&lt;br /&gt;
===== Overview of Enhancements  =====&lt;br /&gt;
*Additional Enhancements not yet implemented (many not yet scheduled).&lt;br /&gt;
** Integration with a tool access control system (such as Safety Spot, The Google system used at Ace Makerspace and elsewhere, or the Nova Pass system)&lt;br /&gt;
*** See &#039;&#039;&#039;Tool Access Control&#039;&#039;&#039; below for details&lt;br /&gt;
*** This integration would require certain tools flagged in system to have a swipe card reader at the tool which verifies training before tool will operate. &lt;br /&gt;
*** While extending MSM to support tool access control, modify it as well to allow a particular makerspace to set up a two-tier implementation of MSM where initial swipe allows entry into makerspace without selecting a specific tool (but perhaps requires the selection of a studio or category of tool) and subsequent swipe was required to select a particular tool. &lt;br /&gt;
** Tool reservation / tool-in-use flagging&lt;br /&gt;
** Tool Loan (away from makerspace)&lt;br /&gt;
** Student charging system (allow students to purchase materials and tooling using student ID or credit card.&lt;br /&gt;
** Faculty charging system (allow faculty / researchers to purchase materials using KFC account #)&lt;br /&gt;
** Matching of maker skills between students and managers. &lt;br /&gt;
** Campus-wide inventory of tools at each makerspace with ability for students to search for a particular tool (similar to MIT Manus system)&lt;br /&gt;
&lt;br /&gt;
Many of these are presented in more detail below:&lt;br /&gt;
&lt;br /&gt;
==== Integration with ELMS/Canvas Learning Management System====&lt;br /&gt;
Currently Labswipe stores training accomplishments in a Google Sheet. This needs to be manually updated. A brief look at the sheet shows very few of our makerspaces are making these manual updates. &lt;br /&gt;
&lt;br /&gt;
Sandbox implemented makerspace training in ELMS/Canvas in 2019. Initially we were manually updating the Labswipe sheet from Canvas but this became very time consuming. We wrote a Canvas API query tool that re-formats the Canvas results to make the updates a bit easier. We considered automating the Labswipe sheet update process but discontinued our efforts on this when it was decided to move the Labswipe back end from google sheets to AWS.&lt;br /&gt;
&lt;br /&gt;
Adding a badging or micro-credentialing plugin to Canvas was attempted in 2019-2020. Sandbox hoped that by adding this capability to Canvas we could avoid concerns about running queries directly against the Canvas system (which contains protected information about students) While the primary benefit would be isolating us from FERPA concerns, the badging system Would also simplify our queries (especially for training completed at a different makerspace), allow us to track training not done in Canvas (such as Welding or other training requiring direct, hands-on instruction), and also provide additional ways to gamify training (for example by allowing training tiers, &#039;leveling up&#039;, etc.) Our request to add a badging plugin to Canvas was rejected by DIT. We understand that a request to add a different badging system has been made by a different department and is still under consideration. &lt;br /&gt;
    &lt;br /&gt;
*We&#039;d like future versions of Labswipe to have the capability to update training accomplishments from Canvas. &lt;br /&gt;
&lt;br /&gt;
*Ideally this update would happen every time a maker swiped in to the system. &lt;br /&gt;
&lt;br /&gt;
*The system should support tracking of training that was completed at other UMD MSI makerspaces to support the MSI plans to open up access to makerspaces across campus. For example, a maker who completed Glowforge laser training at one of the library makerspaces should be able to use the Sandbox Glowforge without additional training.&lt;br /&gt;
&lt;br /&gt;
==== Improve quantity and quality of tool usage data being gathered. ====&lt;br /&gt;
&lt;br /&gt;
Currently, the MSM system only asks each makerspace visitor which tools they will be using when they first swipe in at the front door. We&#039;ve found this arrangement results in distorted statistics as many users just select the first tool they see on the list, don&#039;t take the time to check off every tool they intend to use, and often end up using tools they hadn&#039;t intended when they first arrived. &lt;br /&gt;
&lt;br /&gt;
An improvement would be to add additional data gathering points in the makerspace. For example, by adding touch screens with swipe readers in each workshop or tool storage area we could encourage makers to log every tool they use by making the process more convenient. Another approach would be to use a mobile web app to log tool usage by scanning each tool&#039;s barcode or otherwise selecting the tool. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Several of the entries below relate to our goal of gathering more data on tool usage. &lt;br /&gt;
*For example, the safety-driven requirement to add Tool Access Control lockout devices to dangerous tools (such as chop saws and lathes) will also help us gather more detailed tool usage data for those dangerous tools. &lt;br /&gt;
*Adding an advanced tool reservation capability will add additional usage data for popular tools such as 3D printers and laser cutters. &lt;br /&gt;
*Rather than add expensive lockout devices to all tools, we discuss the possible idea of adding Tool-In-Use flagging.&lt;br /&gt;
&lt;br /&gt;
All of these work together to not only better track tool usage but also to improve the user experience and reduce frustration, increase compliance with training requirements, and ensue our compliance with campus safety rules.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Tool Access Control ====&lt;br /&gt;
&lt;br /&gt;
Once the MSM system is able to look up tool training certification information using the ELMS/Canvas APAI. we&#039;d like to add on to MSM additional hardware and software that will directly control use of certain tools that are deemed to be dangerous (such as a CNC router, milling machine, band saw, etc.) or other tools that, while not particularly dangerous, require specific knowledge to operate correctly (such as laser cutter, SLA 3D printer, etc) to avoid damaging the tool. &lt;br /&gt;
&lt;br /&gt;
* This access control system should be implemented as a separate hardware and software system connected to each tool we wish to have this added level of access control. While we envision this being implemented using commercially-available micro controllers (such as an Arduino-compatible microcontroller) or single board computers (such as a Raspberry Pi computer) any other implementation is acceptable so long as it provides a low cost per controlled machine tool.&lt;br /&gt;
&lt;br /&gt;
* This access control capability would require each maker to swipe their UMD ID before using that tool. Use of a UMD ID is preferred since all students and staff already carry this with them. Other authentication mechanism such as RFID or other ID card that works by proximity instead of requiring a physical swipe, or NFC or similar systems using a person&#039;s cell phone. For systems not using UMD ID magnetic stripe cards, the cost of additional cards, software, etc must be factored into our decision to use that system.  &lt;br /&gt;
&lt;br /&gt;
* The system would look up the makers ID in a central database, and if able to verify that the maker is trained and certified to use the tool, the system would allow use of that tool. The preferred central database would be the existing UMD ELMS/Canvas Learning Management System or a system (such as a micro credentialing or badging system) that is connected to and synchronized with the ELMS/Canvas system. Systems that provide a central database system other than ELMS / Canvas must provide an automatic mechanism to update the database using the ELMS / Canvas API.  &lt;br /&gt;
&lt;br /&gt;
* The means to allow use of the tool should be by:&lt;br /&gt;
** Switching on power through a relay or contactor controlled by the software logic &lt;br /&gt;
** Enabling a logical +5 volt signal to be read by the tool&#039;s existing controller (such as an ENABLE signal)&lt;br /&gt;
** By deactivating the tool&#039;s e-stop circuit, restoring a cabinet interlock circuit, or other mechanism by closing or opening a relay contacts. (i.e. dry contact closure)&lt;br /&gt;
** Several different approaches (ideally all of those listed above) should be provided to adapt the system to the widest variety of machine tools and their control systems.&lt;br /&gt;
* The system should provide some way to prevent the maker from walking away and leaving the tool in an operational state. Some research and discussion are needed to determine the best approach for this but a simple example would be by setting a timeout after which the system requires the user to verify they are present by pushing a button or re-swiping their ID. This capability should be settable per-tool.&lt;br /&gt;
* For tools enabled by simply applying power, the system should prevent these tools from starting up immediately on authentication to prevent unsafe situations. For example, by using a magnetic motor starter.&lt;br /&gt;
* The system should ideally store locally a list of the IDs for all makers who recently were authenticated to use the tool (or store a list of all authorized users, updated periodically) This is to permit use of the tool control system even if the central database is unavailable or if network connectivity has failed.&lt;br /&gt;
* A display on each access control station would ideally display information such as the name of the current authorized user (or last user if tool is idle), length of tool use (or countdown to expiration), connectivity check, etc.&lt;br /&gt;
&lt;br /&gt;
==== System Support for Enforcing Buddy System ====&lt;br /&gt;
&lt;br /&gt;
UMD ESSR safety rule changes require certain tools to be used with the &amp;quot;buddy system&amp;quot; In short, the &amp;quot;buddy system&amp;quot; prohibits certain dangerous tools to be used by a person alone in the workshop. Another person must be close enough to see and hear the tool being used so they can render aid and call for assistance in case of injury.&lt;br /&gt;
&lt;br /&gt;
The MSM system should provide support for enforcing the buddy system. This support could entail requiring a second person to swipe in when using certain tools. This requirement might be limited to certain times of day (for example during the evening or when staff is reduced. The requirements for buddy system support are not yet clear, this is a placeholder.&lt;br /&gt;
&lt;br /&gt;
==== Tool-In-Use Flagging ====&lt;br /&gt;
&lt;br /&gt;
An additional capability desired is the ability to flag the status of a tool as &#039;&#039;&#039;&#039;&#039;In Use&#039;&#039;&#039;&#039;&#039;, &#039;&#039;&#039;&#039;&#039;Available for Use&#039;&#039;&#039;&#039;&#039;, or other statuses such as &#039;&#039;&#039;&#039;&#039;Awaiting Repair&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;Out of Service&#039;&#039;&#039;&#039;&#039; Since demand for many tools is high and a student may be frustrated if they travel to a makerspace only to find a particular tool unavailable, it would be helpful for the system to flag tools that are not available for use because they are being used by someone else or are broken or otherwise unavailable. &lt;br /&gt;
&lt;br /&gt;
* For tools that are not in service, a makerspace staff member should be able to change the status through a web interface. &lt;br /&gt;
** The system should record a date/time stamp for when the tool was taken out of service and a date stamp for an expected return-to-service. &lt;br /&gt;
*For tools being used by a maker, the MSM system should provide a mechanism for students to quickly and easily select a tool for use. This capability should allow the use of that tool for a fixed period of time, ideally this time period would differ for different types of tools (for example, a hammer would be flagged as in-use for 1-hour intervals while a sewing machine might have longer intervals such as 3 hours.&lt;br /&gt;
** The Tool-in-Use flag feature would verify the maker has completed any necessary training.&lt;br /&gt;
** When a different maker wishes to use that tool, they would see that the tool was currently in use by another maker and would also see the time the tool is expected to be available for their use. &lt;br /&gt;
** If a tool is still being used by that maker after the check-in time has passed, the new maker would have the right to be the next to use the tool.&lt;br /&gt;
** Ideally, the system would send an SMS message or some other sort of notification that the maker&#039;s use time has expired.&lt;br /&gt;
** Some examples of quick and easy mechanisms for makers to lag that they are using a tool &lt;br /&gt;
*** A touch screen kiosk in each workshop or tool storage area.&lt;br /&gt;
*** A QR code on each tool or on the storage location for each tool. The QR code would be scanned by the maker using the tool&lt;br /&gt;
*** A mobile web app used by the maker.&lt;br /&gt;
&lt;br /&gt;
Note that the Tool-In-Use Flag Feature will provide a great deal of useful information about the relative popularity of each tool and could provide data to support the purchase of additional tools.&lt;br /&gt;
&lt;br /&gt;
==== Tool Check-Out / Check-In (for use in makerspace) ====&lt;br /&gt;
See &#039;&#039;&#039;Tool-In-Use flagging&#039;&#039;&#039; above. &#039;Check-In&#039; and &#039;Check-Out&#039; functions would be used by a student when they take a tool from storage to their work area or return it to storage. Note that Check-Out is different than Tool-Loan which entails removing a tool from the makerspace.&lt;br /&gt;
&lt;br /&gt;
==== Tool Reservation ====&lt;br /&gt;
&lt;br /&gt;
Several tools (such as laser cutters or 3D printers are popular and makers often wish to sign-up in advance for a window of time to use the tool. In the case of 3D printers, a print job could run for many hours, or even multiple days. It would be useful for MSM to allow makers to reserve time on a tool and allow other makers to see that the tool is reserved and unavailable until a given time.&lt;br /&gt;
&lt;br /&gt;
Reservations block-out for class times or maintenance windows.&lt;br /&gt;
&lt;br /&gt;
==== Manager / Staff skills matching ====&lt;br /&gt;
Provide a new capability in MSM to allow staff and volunteer managers to swipe in and out while indicating if they are working or just using the space as a maker. &lt;br /&gt;
&lt;br /&gt;
The system should provide a display of all on-duty managers and staff, displaying each manager&#039;s photo and list of each&#039;s skills / specialties. This to help makers using the space know who to best ask questions about a particular tool or technique. &lt;br /&gt;
&lt;br /&gt;
====Resale of maker materials, tooling, etc.====&lt;br /&gt;
&lt;br /&gt;
We would like to be able to resell materials such as sheet goods (plywood, MDF, acrylic, etc.) 3D printer filament, tooling (CNC router bits, milling machine tooling, etc.) This is a service to makers who don&#039;t necessarily have the ability to transport physically large materials.&lt;br /&gt;
&lt;br /&gt;
Further definition is needed to specify how payments will be taken. We don&#039;t want to accept cash and are uneasy about volunteer managers having access to maker credit/debit cards. Ideally, payments would be charged against a maker&#039;s account balance. Is it possible to use an existing student payment system such as Terrapin Express?&lt;br /&gt;
&lt;br /&gt;
=== FERPA Concerns ===&lt;br /&gt;
Since LabSwipe data is student data there may be concern that some of the data may fall under the protection of the Family Educational Rights and Privacy Act (FERPA). FERPA requires protection of &amp;quot;Personally Identifiable Information&amp;quot; (PII) from release to 3rd parties. Anyone using student PII must take steps to protect this from release, even through the action of a student working in the makerspace. FERPA exempts from the protection requirement certain &amp;quot;Directory Information&amp;quot; that is commonly used. It requires each university to identify what information is considered &amp;quot;Directory Information&amp;quot; &lt;br /&gt;
&lt;br /&gt;
UMD defines their PII and Directory Information here: https://academiccatalog.umd.edu/undergraduate/university-policies/ In July 2020 this policy defined UMD PII &amp;amp; Directory Information as:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;quot;Personally identifiable information&amp;quot; or &amp;quot;PII&amp;quot; means data or information which includes, but is not limited to:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*a student’s name;&lt;br /&gt;
*a name of a student’s parent or family member&lt;br /&gt;
*an address of a student or a student’s family; &lt;br /&gt;
*a personal identifier, such as a social security number, University Identification Number (UID), or biometric record; &lt;br /&gt;
*other indirect identifiers, such as mother’s maiden name; &lt;br /&gt;
*other information that alone, or in combination, is linked or linkable to a specific student and that would allow a reasonable person in the UMD community who does not have personal knowledge of the relevant circumstances to identify the student with reasonable certainty; or information requested by a person who UMD reasonably believes knows the identity of the student to whom the education record relates.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;quot;Directory Information&amp;quot; means information which would generally not be considered harmful or an invasion of privacy if disclosed. It includes, but is not limited to, a student’s: &lt;br /&gt;
&lt;br /&gt;
*name, &lt;br /&gt;
*address, &lt;br /&gt;
*telephone listing, &lt;br /&gt;
*e-mail address, &lt;br /&gt;
*date and place of birth, &lt;br /&gt;
*major field of study, &lt;br /&gt;
*full-time/part-time status, &lt;br /&gt;
*participation in officially recognized activities and sports, &lt;br /&gt;
*weight and height of members of athletic teams, &lt;br /&gt;
*dates of attendance, &lt;br /&gt;
*degrees and awards received, and &lt;br /&gt;
*the most recent previous educational agency or institution attended&#039;&#039;   &lt;br /&gt;
&lt;br /&gt;
Note that UID is listed as PII but not excluded as &amp;quot;Directory Information&amp;quot; as is done at other institutions, especially those that also print UID on campus ID cards.&lt;br /&gt;
&lt;br /&gt;
= Parallel Development of Sandbox Kiosk Prototype =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Kiosk System Test&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sandbox hopes to continue the development and testing of a &#039;&#039;&#039;&#039;&#039;Kiosk System&#039;&#039;&#039;&#039;&#039; in Spring 2022. The kiosk system is envisioned as a way to improve tool usage tracking and replace the tool identification signage on each studio door. Each studio would have a touch screen computer system on or near the door that displays a visual listing of tools in that studio. Makers would be asked to select the tool they wanted to use. The kiosk would verify that the maker had completed any required training on that tool. &lt;br /&gt;
&lt;br /&gt;
By asking the maker to check the tool back in, we would be able to collect additional information about usage of individual tools as well as provide remote visibility of tool availability to makers planning on visiting the makerspace. &lt;br /&gt;
&lt;br /&gt;
Eventually we envision the kiosk system having additional functionality including  tool and studio reservation, broken tool tagging, identifying tool experts, etc.&lt;br /&gt;
&lt;br /&gt;
One possible initiative we could undertake would be the development of a prototype kiosk system for use in the various studios at Sandbox. This prototype would allow us to test ideas for MSM improvements and more quickly iterate through design concepts without having to modify the core MSM system. It would provide a working prototype useful for demonstrating our needs to the MSM development team, or to demonstrate our requirements if MSI decides to invest in an externally-developed system.&lt;br /&gt;
==== Overview of Sandbox Kiosk System ====&lt;br /&gt;
The existing MSM / LabSwipe system assumes each lab will be a single room or small number of related spaces that are hierarchically flat. Sandbox is a group of six different studios, each with a different type of tool. This leads to some confusion and a slowdown each time a maker checks in. If the tools are grouped alphabetically, a maker interested in electronics might check that he plans to use a &amp;quot;multimeter&amp;quot; then have to scroll past &amp;quot;multitool&amp;quot; and 3 different &amp;quot;sander&amp;quot; entries related to woodworking, 4 different types of &amp;quot;sewing machine&amp;quot; in the crafting studio before finding &amp;quot;soldering iron&amp;quot; a few pages down. We&#039;ve re-ordered the list by studio, which has helped quite a bit but makers using the woodworking studio have to scroll down several screens to find the start of tools they may want to use. While this may be fixable with some tweaks to the existing system UI, we&#039;ve uncovered other issues that we&#039;d like to address as well.&lt;br /&gt;
&lt;br /&gt;
In a review of system usage for the fall semester, we discovered that most students select a single tool regardless of the length of their visit. A maker may swipe in and select &amp;quot;laser cutter&amp;quot; as the tool they will be using but almost never returns to the front desk if (for example) they need to use a circular saw to trim their stock to the correct size, or need to use a drill to add a couple of holes to their project, or a sander to prepare it for finishing. Individually these failures aren&#039;t important but collectively they degrade the quality of data we hope to collect on tool usage and perhaps more importantly make it more difficult for us to report other statistics such as length of visit. Also, this avoidance bypasses the very important checking of training credentials that is a critical reason for having this system in the first place. Indeed, we found that a considerable number of students would select &amp;quot;no tool, table use only&amp;quot; when that option was made available. &lt;br /&gt;
&lt;br /&gt;
To improve this situation, we&#039;d like to move tool selection part of MSM closer to the point where the tool is used. Makers would still swipe in to the space when entering, but would not be asked whaic tools they plan to use. The extreme case of this would be to equip each tool with a sensor that indicated use and requested the maker picking up the tool to authenticate and verify their certification to use that tool. This would likely be too expensive to be practical except on the most hazardous or expensive tools such as milling machines, laser cutters, etc. What we propose and would like to test using the concept of kiosks, would be moving tool check-out to each individual studio. We envision a touch-screen display at the door of each studio. While the touch screen could be a self-contatrined system such as a iPad tablet, we are more inclined to use small computers such as the RaspberryPi. &lt;br /&gt;
&lt;br /&gt;
In a perfect world this kiosk system would be connected to the card key door lock system, but we don&#039;t envision that being possible because of political limitations with the UMD card key system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Initial Requirements for Kiosk Protoype ====&lt;br /&gt;
&lt;br /&gt;
* Kiosks to run Touch-screen terminals outside each Sandbox studio (to begin with woodworking studio and prototyping studio)&lt;br /&gt;
** Kiosk will display information about each tool available in that studio including training requirements and links to training materials. &lt;br /&gt;
** Tool information and training requirements should preferably come directly from existing wiki pages to ease updating. Either display wiki pages in embedded web browser or use mediawiki API to retrieve wiki content. &lt;br /&gt;
* Information shown on kiosk would include both publicly viewable (no login required) and private information (requiring login) such as maker&#039;s training accomplishments, etc.&lt;br /&gt;
** Provide quick and simple means for each maker to log in / authenticate with the system (card swipe, phone app, NFC, etc) &lt;br /&gt;
* Subset of information from kiosk system also available via login-secured web page accessible from off campus. Initially, remote functionality to include: &lt;br /&gt;
**ability to reserve a tool for a certain period of time, with the length of time specified by the maker, provided that request is within the limits set for that particular tool, perhaps also taking into account the time of day or day of week. &lt;br /&gt;
*** For example, a laser cutter might be reservible in blocks of 30 minutes with maximum of 3 blocks&lt;br /&gt;
*** A 3d printer might be reservible in blocks of 2 hours with the maximum number of blocks varying depending of day of week and time of day. For example, a Friday afternoon reservation might allow 48 hours total time, while Monday afternoon would only allow 4 hours total.&lt;br /&gt;
*** A more common power tool such as a jigsaw or drill might be reservible in blocks of 30 minutes with a maximum of 2-4 blocks.&lt;br /&gt;
** Some mechanism should be devised to prevent makers from always reserving the maximum number of blocks of time. &lt;br /&gt;
** display calendar view for each of the reservible tools that shows free/reserved blocks for each tool &lt;br /&gt;
** display calendar view for each studio that shows free/reserved status based on the tool being reserved. This view to be used to enforce Covid-19 distancing requirements&lt;/div&gt;</summary>
		<author><name>Gfc</name></author>
	</entry>
	<entry>
		<id>https://sandbox.umd.edu/wiki/index.php?title=Talk:Maker_Space_Manager_System&amp;diff=3433</id>
		<title>Talk:Maker Space Manager System</title>
		<link rel="alternate" type="text/html" href="https://sandbox.umd.edu/wiki/index.php?title=Talk:Maker_Space_Manager_System&amp;diff=3433"/>
		<updated>2026-10-16T21:00:59Z</updated>

		<summary type="html">&lt;p&gt;Gfc: /* Systems Focusing on Access Control (may include door access in addition to machine tool access / lockout) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Makerspace Management Software at UMD Sandbox Makerspace = &lt;br /&gt;
Discussion page related to software for managing the Sandbox Makerspace&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Listing of commercial or open source systems with overlapping functionality =&lt;br /&gt;
== Lists of Systems (other pages like this one)==&lt;br /&gt;
;Hackerspaces.org wishlist of software functions / features. :https://wiki.hackerspaces.org/Software_Wish_List&lt;br /&gt;
&lt;br /&gt;
;List of software from hackerspaces.org: https://wiki.hackerspaces.org/Hackerspace_Software\&lt;br /&gt;
&lt;br /&gt;
;MakerNexus notes on Access Control Systems: https://makernexuswiki.com/wiki/Access_Control_Systems&lt;br /&gt;
&lt;br /&gt;
== Individual Systems ==&lt;br /&gt;
=== Systems Focusing on Access Control (may include door access in addition to machine tool access / lockout) ===&lt;br /&gt;
&lt;br /&gt;
;Fabman software :Management software with machine control hardware devices, API, and other features. https://fabman.io/&lt;br /&gt;
&lt;br /&gt;
;Grit Automation Platform. :The Grit Automation Platform is a wireless, local-software workshop automation system designed for woodshops, metal shops, and education labs. Includes Core Features &amp;amp; Solutions for Dust Management, Tool Access Control &amp;amp; Safety, Time &amp;amp; Asset Management, Environmental &amp;amp; Energy Monitoring.&lt;br /&gt;
&lt;br /&gt;
;MakerGate (Equipment Access Control): An open-source smart power switch and safety interlock system (similar in function to Fabman) that requires authentication—such as an RFID card and PIN—to let only trained users operate workshop machinery, eliminating monthly subscription fees. &lt;br /&gt;
&lt;br /&gt;
;Nova Labs Nova Pass : https://novapass.nova-labs.org/ (active system home page)&lt;br /&gt;
::(description from Makerfaire: https://nova.makerfaire.com/maker/entry/1224/) &lt;br /&gt;
::(details:https://goo.gl/RVmtiS)&lt;br /&gt;
&lt;br /&gt;
;RATT - RFID All The Things: New Hampshire&#039;s MakeIT Labs RaspPi based RFID access control system. https://github.com/makeitlabs/ratt (video: https://www.youtube.com/watch?v=erwIPVwXUr8)&lt;br /&gt;
&lt;br /&gt;
;FATT - FOB all The Things: Ace makerspace (formerly Ace Master Toys) https://www.acemakerspace.org/fatt-project/&lt;br /&gt;
::;Ace Master Toys: Makerspace system based on Google&#039;s AuthBox system  https://github.com/google/makerspace-auth&lt;br /&gt;
::;Ace Makerspace Occupancy System: https://www.youtube.com/watch?v=kemAM8MWIN8&lt;br /&gt;
&lt;br /&gt;
;Google Makerspace Auth (aka AuthBox): https://github.com/google/makerspace-auth&lt;br /&gt;
&lt;br /&gt;
;Ithaca Generator AuthBox:&lt;br /&gt;
:* https://discuss.ithacagenerator.org/t/makerspace-authbox-on-github/565/3&lt;br /&gt;
:* https://github.com/ithacagenerator/AuthBox&lt;br /&gt;
&lt;br /&gt;
;Manchester, NH MakerAuth&lt;br /&gt;
:* https://github.com/ManchesterMakerspace/MakerAuth&lt;br /&gt;
&lt;br /&gt;
;RasPi-Lockout (designed for RIT Construct Makerspace): &lt;br /&gt;
:* https://www.youtube.com/watch?v=aoAdB13IVr0 (YouTube demo)&lt;br /&gt;
:* https://github.com/jaschawilcox/raspi-lockout (GitHub Repo)&lt;br /&gt;
&lt;br /&gt;
;Build Brighton Access Node: https://www.youtube.com/watch?v=3X64JmTpOcA&lt;br /&gt;
&lt;br /&gt;
;Open Access Control: Uses the Arduino hardware to build a robust access control and alarm system. https://code.google.com/archive/p/open-access-control/&lt;br /&gt;
&lt;br /&gt;
;tinkerAccess: The tinkerAccess system is a Raspberry Pi based access control system that can be used to prevent unauthorized users from using devices that require special training. It could also conceivably be used to control electronic lock boxes or doors. The system was originally designed and created by Matt Stallard, Ron Thomas, and Matt Peopping for TinkerMill a makerspace in Longmont, CO. It is continually being maintained and enhanced by other contributors in the community. https://github.com/TinkerMill/tinkerAccess&lt;br /&gt;
&lt;br /&gt;
;Triple Cities Makerspace ACS System: https://www.tcmakerspace.com/index.php/2019/08/19/project-profile-access-control-system-acs/&lt;br /&gt;
&lt;br /&gt;
;The MakerBarn in The Woodlands, Texas MACS System: http://koljawindeler.github.io/macs/.  &lt;br /&gt;
::* MACS UI Video: https://www.youtube.com/watch?v=zLidqAPo3Cs &lt;br /&gt;
::* An Introduction to the MACS - Makerspace Access Control System: https://www.youtube.com/watch?v=CI3xxsBM9SE&lt;br /&gt;
&lt;br /&gt;
;PITT-X Makerspace Access System: https://www.youtube.com/watch?v=2HG-vyV4yoM&lt;br /&gt;
&lt;br /&gt;
;Member Access System for Pumping Station One :https://github.com/hef/ps1auth&lt;br /&gt;
::https://github.com/bdenne2/ps1auth&lt;br /&gt;
&lt;br /&gt;
;HACCSY: Hackerspace Access Control and Check in System. Works with Seltzer CRM, running on a Raspberry Pi. https://www.instructables.com/id/HACCSY-Hackerspace-Access-Control-and-Check-in-Sys/&lt;br /&gt;
&lt;br /&gt;
:;Open Access Control Ethernet: https://github.com/zyphlar/Open_Access_Control_Ethernet&lt;br /&gt;
::;Open Source Access Control Web Interface (works with above) :https://github.com/zyphlar/Open-Source-Access-Control-Web-Interface&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;;Safety Spot :Commercial maker space management software widely used in university maker spaces. https://www.safetyspot.com/ &amp;lt;/s&amp;gt; &amp;lt;b&amp;gt;No Longer Available&amp;lt;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;(UC Berkeley) Makerpass system onepager: https://assets.pubpub.org/hpise2ck/01585588151622.pdf&lt;br /&gt;
&lt;br /&gt;
;Recursion: https://recursion.space Commercial system with free tier. Patented equipment lockout controller.&lt;br /&gt;
&lt;br /&gt;
;UT Austin FabApp/JuiceBox: FabApp is a PHP-based system for managing a makerspace (https://github.com/UTA-FabLab/fabapp). JuiceBox is a Python-based system for providing access control to power tools (https://github.com/UTA-FabLab/JuiceBox).  These and other UTA apps are on the UTA GitHub: https://github.com/UTA-FabLab&lt;br /&gt;
&lt;br /&gt;
;UT Austin Team Lockout: https://blog.uta.edu/cseseniordesign/2019/07/20/lockout/ The Maker Space Lockout System correctly gives access to Machinery only to users that have been adequately briefed on the machinery’s safety and operation. The system will be able to control access for each user according to their level of skill and expertise. Users of The Maker Space Lockout System will also become more equipped to handle and view wear and tear on machines via the data collection purge at the end of each job.&lt;br /&gt;
&lt;br /&gt;
===Not yet Categorized ===&lt;br /&gt;
:;RFIDDoorLock: https://wiki.melbournemakerspace.org/projects/RFIDDoorLock&lt;br /&gt;
&lt;br /&gt;
:;Byro :https://github.com/byro/byro&lt;br /&gt;
&lt;br /&gt;
:;HSBNE :https://github.com/hsbne/hsbneportal&lt;br /&gt;
&lt;br /&gt;
:;MetalabOS: https://github.com/Metalab/mos/&lt;br /&gt;
&lt;br /&gt;
:;NOMOS (Membership Management):  https://github.com/vhs/nomos&lt;br /&gt;
&lt;br /&gt;
:;MeMaTool: https://github.com/sim0nx/mematool&lt;br /&gt;
&lt;br /&gt;
:;RFID Tool Cabinet: https://www.youtube.com/watch?v=u-L_7pyPcvE&lt;br /&gt;
&lt;br /&gt;
=== Systems Focusing on Space Management without Access Control (may include elements of CRM, AR/AP, training management, inventory control, etc.)  ===&lt;br /&gt;
(Some of these may integrate with other Access Control Systems)&lt;br /&gt;
&lt;br /&gt;
:;WildApricot :Membership management software used by many maker spaces. https://www.wildapricot.com/&lt;br /&gt;
&lt;br /&gt;
:;Seltzer CRM: Open source CRM / membership management software created by a maker space and designed to be extensible and easily modified.  https://wiki.hackerspaces.org/Seltzer_CRM&lt;br /&gt;
&lt;br /&gt;
:;SIMPL: (Software primarily designed to manage coworking spaces with features to support maker spaces) https://smpl.io/software/makerspaces/&lt;br /&gt;
&lt;br /&gt;
:;OpenBravo (ERM/ERP) :https://www.openbravo.com/&lt;br /&gt;
&lt;br /&gt;
:;WikiSpaces :The primary goal of the WikiSpaces project is to provide a &#039;startup&#039; wiki, which is basically a MediaWiki distribution especially for hackerspaces. This distribution will provide a working, up to date, MediaWiki installation, with the commonly needed extensions installed and configured. https://wiki.hackerspaces.org/WikiSpaces&lt;br /&gt;
&lt;br /&gt;
==== Not Yet Categorized ====&lt;br /&gt;
&lt;br /&gt;
:;Scholarly article on value of information collected using Maker Lens / MakerPass access system. :  https://people.eecs.berkeley.edu/~eschoop/docs/makerlens.pdf&lt;br /&gt;
&lt;br /&gt;
= ARCHIVED ITEMS BELOW =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==ARCHIVE LabSwipe /MSM System Development History &amp;amp; 2022 Road Map ==&lt;br /&gt;
&lt;br /&gt;
===Development History===&lt;br /&gt;
Would someone on the Labswipe team add to this section?&lt;br /&gt;
&lt;br /&gt;
===Current Release===&lt;br /&gt;
&lt;br /&gt;
===Future Enhancements===&lt;br /&gt;
&lt;br /&gt;
Road Map for future enhancements.  &lt;br /&gt;
&lt;br /&gt;
==== 2021-2022 MSM Rework Outline ====&lt;br /&gt;
*Outline of desired improvements for development work from Summer 2021 to Summer 2022&lt;br /&gt;
===== 2021 =====&lt;br /&gt;
* Improvements to existing UI / core LabSwipe functionality (Fall 21) &lt;br /&gt;
** Improved editing of data entry fields&lt;br /&gt;
** Integration with UMD swipe Identity API to correctly identify new cards swiped into system and close current opportunity for student to use a created ID card with false UID.&lt;br /&gt;
** Integration with UMD swipe API to:&lt;br /&gt;
*** Identify deactivated student ID cards and &lt;br /&gt;
*** Update CardID serial number when a lost ID card is replaced with a new card.&lt;br /&gt;
&lt;br /&gt;
===== 2022 =====&lt;br /&gt;
* Integration with Canvas LMS (Spring 22)&lt;br /&gt;
** Using Canvas API, ensuring API key is well protected using a secrets manager or similar approach&lt;br /&gt;
** Implement a middle layer between MSM and Canvas to track training certifications (similar to a micro credentialing system) in a way that creates an abstraction layer between a canvas course and a training certification.&lt;br /&gt;
** See &#039;&#039;&#039;Integration with ELMS/Canvas Learning Management System&#039;&#039;&#039; below for detail&lt;br /&gt;
&lt;br /&gt;
===== Overview of Enhancements  =====&lt;br /&gt;
*Additional Enhancements not yet implemented (many not yet scheduled).&lt;br /&gt;
** Integration with a tool access control system (such as Safety Spot, The Google system used at Ace Makerspace and elsewhere, or the Nova Pass system)&lt;br /&gt;
*** See &#039;&#039;&#039;Tool Access Control&#039;&#039;&#039; below for details&lt;br /&gt;
*** This integration would require certain tools flagged in system to have a swipe card reader at the tool which verifies training before tool will operate. &lt;br /&gt;
*** While extending MSM to support tool access control, modify it as well to allow a particular makerspace to set up a two-tier implementation of MSM where initial swipe allows entry into makerspace without selecting a specific tool (but perhaps requires the selection of a studio or category of tool) and subsequent swipe was required to select a particular tool. &lt;br /&gt;
** Tool reservation / tool-in-use flagging&lt;br /&gt;
** Tool Loan (away from makerspace)&lt;br /&gt;
** Student charging system (allow students to purchase materials and tooling using student ID or credit card.&lt;br /&gt;
** Faculty charging system (allow faculty / researchers to purchase materials using KFC account #)&lt;br /&gt;
** Matching of maker skills between students and managers. &lt;br /&gt;
** Campus-wide inventory of tools at each makerspace with ability for students to search for a particular tool (similar to MIT Manus system)&lt;br /&gt;
&lt;br /&gt;
Many of these are presented in more detail below:&lt;br /&gt;
&lt;br /&gt;
==== Integration with ELMS/Canvas Learning Management System====&lt;br /&gt;
Currently Labswipe stores training accomplishments in a Google Sheet. This needs to be manually updated. A brief look at the sheet shows very few of our makerspaces are making these manual updates. &lt;br /&gt;
&lt;br /&gt;
Sandbox implemented makerspace training in ELMS/Canvas in 2019. Initially we were manually updating the Labswipe sheet from Canvas but this became very time consuming. We wrote a Canvas API query tool that re-formats the Canvas results to make the updates a bit easier. We considered automating the Labswipe sheet update process but discontinued our efforts on this when it was decided to move the Labswipe back end from google sheets to AWS.&lt;br /&gt;
&lt;br /&gt;
Adding a badging or micro-credentialing plugin to Canvas was attempted in 2019-2020. Sandbox hoped that by adding this capability to Canvas we could avoid concerns about running queries directly against the Canvas system (which contains protected information about students) While the primary benefit would be isolating us from FERPA concerns, the badging system Would also simplify our queries (especially for training completed at a different makerspace), allow us to track training not done in Canvas (such as Welding or other training requiring direct, hands-on instruction), and also provide additional ways to gamify training (for example by allowing training tiers, &#039;leveling up&#039;, etc.) Our request to add a badging plugin to Canvas was rejected by DIT. We understand that a request to add a different badging system has been made by a different department and is still under consideration. &lt;br /&gt;
    &lt;br /&gt;
*We&#039;d like future versions of Labswipe to have the capability to update training accomplishments from Canvas. &lt;br /&gt;
&lt;br /&gt;
*Ideally this update would happen every time a maker swiped in to the system. &lt;br /&gt;
&lt;br /&gt;
*The system should support tracking of training that was completed at other UMD MSI makerspaces to support the MSI plans to open up access to makerspaces across campus. For example, a maker who completed Glowforge laser training at one of the library makerspaces should be able to use the Sandbox Glowforge without additional training.&lt;br /&gt;
&lt;br /&gt;
==== Improve quantity and quality of tool usage data being gathered. ====&lt;br /&gt;
&lt;br /&gt;
Currently, the MSM system only asks each makerspace visitor which tools they will be using when they first swipe in at the front door. We&#039;ve found this arrangement results in distorted statistics as many users just select the first tool they see on the list, don&#039;t take the time to check off every tool they intend to use, and often end up using tools they hadn&#039;t intended when they first arrived. &lt;br /&gt;
&lt;br /&gt;
An improvement would be to add additional data gathering points in the makerspace. For example, by adding touch screens with swipe readers in each workshop or tool storage area we could encourage makers to log every tool they use by making the process more convenient. Another approach would be to use a mobile web app to log tool usage by scanning each tool&#039;s barcode or otherwise selecting the tool. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Several of the entries below relate to our goal of gathering more data on tool usage. &lt;br /&gt;
*For example, the safety-driven requirement to add Tool Access Control lockout devices to dangerous tools (such as chop saws and lathes) will also help us gather more detailed tool usage data for those dangerous tools. &lt;br /&gt;
*Adding an advanced tool reservation capability will add additional usage data for popular tools such as 3D printers and laser cutters. &lt;br /&gt;
*Rather than add expensive lockout devices to all tools, we discuss the possible idea of adding Tool-In-Use flagging.&lt;br /&gt;
&lt;br /&gt;
All of these work together to not only better track tool usage but also to improve the user experience and reduce frustration, increase compliance with training requirements, and ensue our compliance with campus safety rules.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Tool Access Control ====&lt;br /&gt;
&lt;br /&gt;
Once the MSM system is able to look up tool training certification information using the ELMS/Canvas APAI. we&#039;d like to add on to MSM additional hardware and software that will directly control use of certain tools that are deemed to be dangerous (such as a CNC router, milling machine, band saw, etc.) or other tools that, while not particularly dangerous, require specific knowledge to operate correctly (such as laser cutter, SLA 3D printer, etc) to avoid damaging the tool. &lt;br /&gt;
&lt;br /&gt;
* This access control system should be implemented as a separate hardware and software system connected to each tool we wish to have this added level of access control. While we envision this being implemented using commercially-available micro controllers (such as an Arduino-compatible microcontroller) or single board computers (such as a Raspberry Pi computer) any other implementation is acceptable so long as it provides a low cost per controlled machine tool.&lt;br /&gt;
&lt;br /&gt;
* This access control capability would require each maker to swipe their UMD ID before using that tool. Use of a UMD ID is preferred since all students and staff already carry this with them. Other authentication mechanism such as RFID or other ID card that works by proximity instead of requiring a physical swipe, or NFC or similar systems using a person&#039;s cell phone. For systems not using UMD ID magnetic stripe cards, the cost of additional cards, software, etc must be factored into our decision to use that system.  &lt;br /&gt;
&lt;br /&gt;
* The system would look up the makers ID in a central database, and if able to verify that the maker is trained and certified to use the tool, the system would allow use of that tool. The preferred central database would be the existing UMD ELMS/Canvas Learning Management System or a system (such as a micro credentialing or badging system) that is connected to and synchronized with the ELMS/Canvas system. Systems that provide a central database system other than ELMS / Canvas must provide an automatic mechanism to update the database using the ELMS / Canvas API.  &lt;br /&gt;
&lt;br /&gt;
* The means to allow use of the tool should be by:&lt;br /&gt;
** Switching on power through a relay or contactor controlled by the software logic &lt;br /&gt;
** Enabling a logical +5 volt signal to be read by the tool&#039;s existing controller (such as an ENABLE signal)&lt;br /&gt;
** By deactivating the tool&#039;s e-stop circuit, restoring a cabinet interlock circuit, or other mechanism by closing or opening a relay contacts. (i.e. dry contact closure)&lt;br /&gt;
** Several different approaches (ideally all of those listed above) should be provided to adapt the system to the widest variety of machine tools and their control systems.&lt;br /&gt;
* The system should provide some way to prevent the maker from walking away and leaving the tool in an operational state. Some research and discussion are needed to determine the best approach for this but a simple example would be by setting a timeout after which the system requires the user to verify they are present by pushing a button or re-swiping their ID. This capability should be settable per-tool.&lt;br /&gt;
* For tools enabled by simply applying power, the system should prevent these tools from starting up immediately on authentication to prevent unsafe situations. For example, by using a magnetic motor starter.&lt;br /&gt;
* The system should ideally store locally a list of the IDs for all makers who recently were authenticated to use the tool (or store a list of all authorized users, updated periodically) This is to permit use of the tool control system even if the central database is unavailable or if network connectivity has failed.&lt;br /&gt;
* A display on each access control station would ideally display information such as the name of the current authorized user (or last user if tool is idle), length of tool use (or countdown to expiration), connectivity check, etc.&lt;br /&gt;
&lt;br /&gt;
==== System Support for Enforcing Buddy System ====&lt;br /&gt;
&lt;br /&gt;
UMD ESSR safety rule changes require certain tools to be used with the &amp;quot;buddy system&amp;quot; In short, the &amp;quot;buddy system&amp;quot; prohibits certain dangerous tools to be used by a person alone in the workshop. Another person must be close enough to see and hear the tool being used so they can render aid and call for assistance in case of injury.&lt;br /&gt;
&lt;br /&gt;
The MSM system should provide support for enforcing the buddy system. This support could entail requiring a second person to swipe in when using certain tools. This requirement might be limited to certain times of day (for example during the evening or when staff is reduced. The requirements for buddy system support are not yet clear, this is a placeholder.&lt;br /&gt;
&lt;br /&gt;
==== Tool-In-Use Flagging ====&lt;br /&gt;
&lt;br /&gt;
An additional capability desired is the ability to flag the status of a tool as &#039;&#039;&#039;&#039;&#039;In Use&#039;&#039;&#039;&#039;&#039;, &#039;&#039;&#039;&#039;&#039;Available for Use&#039;&#039;&#039;&#039;&#039;, or other statuses such as &#039;&#039;&#039;&#039;&#039;Awaiting Repair&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;Out of Service&#039;&#039;&#039;&#039;&#039; Since demand for many tools is high and a student may be frustrated if they travel to a makerspace only to find a particular tool unavailable, it would be helpful for the system to flag tools that are not available for use because they are being used by someone else or are broken or otherwise unavailable. &lt;br /&gt;
&lt;br /&gt;
* For tools that are not in service, a makerspace staff member should be able to change the status through a web interface. &lt;br /&gt;
** The system should record a date/time stamp for when the tool was taken out of service and a date stamp for an expected return-to-service. &lt;br /&gt;
*For tools being used by a maker, the MSM system should provide a mechanism for students to quickly and easily select a tool for use. This capability should allow the use of that tool for a fixed period of time, ideally this time period would differ for different types of tools (for example, a hammer would be flagged as in-use for 1-hour intervals while a sewing machine might have longer intervals such as 3 hours.&lt;br /&gt;
** The Tool-in-Use flag feature would verify the maker has completed any necessary training.&lt;br /&gt;
** When a different maker wishes to use that tool, they would see that the tool was currently in use by another maker and would also see the time the tool is expected to be available for their use. &lt;br /&gt;
** If a tool is still being used by that maker after the check-in time has passed, the new maker would have the right to be the next to use the tool.&lt;br /&gt;
** Ideally, the system would send an SMS message or some other sort of notification that the maker&#039;s use time has expired.&lt;br /&gt;
** Some examples of quick and easy mechanisms for makers to lag that they are using a tool &lt;br /&gt;
*** A touch screen kiosk in each workshop or tool storage area.&lt;br /&gt;
*** A QR code on each tool or on the storage location for each tool. The QR code would be scanned by the maker using the tool&lt;br /&gt;
*** A mobile web app used by the maker.&lt;br /&gt;
&lt;br /&gt;
Note that the Tool-In-Use Flag Feature will provide a great deal of useful information about the relative popularity of each tool and could provide data to support the purchase of additional tools.&lt;br /&gt;
&lt;br /&gt;
==== Tool Check-Out / Check-In (for use in makerspace) ====&lt;br /&gt;
See &#039;&#039;&#039;Tool-In-Use flagging&#039;&#039;&#039; above. &#039;Check-In&#039; and &#039;Check-Out&#039; functions would be used by a student when they take a tool from storage to their work area or return it to storage. Note that Check-Out is different than Tool-Loan which entails removing a tool from the makerspace.&lt;br /&gt;
&lt;br /&gt;
==== Tool Reservation ====&lt;br /&gt;
&lt;br /&gt;
Several tools (such as laser cutters or 3D printers are popular and makers often wish to sign-up in advance for a window of time to use the tool. In the case of 3D printers, a print job could run for many hours, or even multiple days. It would be useful for MSM to allow makers to reserve time on a tool and allow other makers to see that the tool is reserved and unavailable until a given time.&lt;br /&gt;
&lt;br /&gt;
Reservations block-out for class times or maintenance windows.&lt;br /&gt;
&lt;br /&gt;
==== Manager / Staff skills matching ====&lt;br /&gt;
Provide a new capability in MSM to allow staff and volunteer managers to swipe in and out while indicating if they are working or just using the space as a maker. &lt;br /&gt;
&lt;br /&gt;
The system should provide a display of all on-duty managers and staff, displaying each manager&#039;s photo and list of each&#039;s skills / specialties. This to help makers using the space know who to best ask questions about a particular tool or technique. &lt;br /&gt;
&lt;br /&gt;
====Resale of maker materials, tooling, etc.====&lt;br /&gt;
&lt;br /&gt;
We would like to be able to resell materials such as sheet goods (plywood, MDF, acrylic, etc.) 3D printer filament, tooling (CNC router bits, milling machine tooling, etc.) This is a service to makers who don&#039;t necessarily have the ability to transport physically large materials.&lt;br /&gt;
&lt;br /&gt;
Further definition is needed to specify how payments will be taken. We don&#039;t want to accept cash and are uneasy about volunteer managers having access to maker credit/debit cards. Ideally, payments would be charged against a maker&#039;s account balance. Is it possible to use an existing student payment system such as Terrapin Express?&lt;br /&gt;
&lt;br /&gt;
=== FERPA Concerns ===&lt;br /&gt;
Since LabSwipe data is student data there may be concern that some of the data may fall under the protection of the Family Educational Rights and Privacy Act (FERPA). FERPA requires protection of &amp;quot;Personally Identifiable Information&amp;quot; (PII) from release to 3rd parties. Anyone using student PII must take steps to protect this from release, even through the action of a student working in the makerspace. FERPA exempts from the protection requirement certain &amp;quot;Directory Information&amp;quot; that is commonly used. It requires each university to identify what information is considered &amp;quot;Directory Information&amp;quot; &lt;br /&gt;
&lt;br /&gt;
UMD defines their PII and Directory Information here: https://academiccatalog.umd.edu/undergraduate/university-policies/ In July 2020 this policy defined UMD PII &amp;amp; Directory Information as:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;quot;Personally identifiable information&amp;quot; or &amp;quot;PII&amp;quot; means data or information which includes, but is not limited to:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*a student’s name;&lt;br /&gt;
*a name of a student’s parent or family member&lt;br /&gt;
*an address of a student or a student’s family; &lt;br /&gt;
*a personal identifier, such as a social security number, University Identification Number (UID), or biometric record; &lt;br /&gt;
*other indirect identifiers, such as mother’s maiden name; &lt;br /&gt;
*other information that alone, or in combination, is linked or linkable to a specific student and that would allow a reasonable person in the UMD community who does not have personal knowledge of the relevant circumstances to identify the student with reasonable certainty; or information requested by a person who UMD reasonably believes knows the identity of the student to whom the education record relates.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;quot;Directory Information&amp;quot; means information which would generally not be considered harmful or an invasion of privacy if disclosed. It includes, but is not limited to, a student’s: &lt;br /&gt;
&lt;br /&gt;
*name, &lt;br /&gt;
*address, &lt;br /&gt;
*telephone listing, &lt;br /&gt;
*e-mail address, &lt;br /&gt;
*date and place of birth, &lt;br /&gt;
*major field of study, &lt;br /&gt;
*full-time/part-time status, &lt;br /&gt;
*participation in officially recognized activities and sports, &lt;br /&gt;
*weight and height of members of athletic teams, &lt;br /&gt;
*dates of attendance, &lt;br /&gt;
*degrees and awards received, and &lt;br /&gt;
*the most recent previous educational agency or institution attended&#039;&#039;   &lt;br /&gt;
&lt;br /&gt;
Note that UID is listed as PII but not excluded as &amp;quot;Directory Information&amp;quot; as is done at other institutions, especially those that also print UID on campus ID cards.&lt;br /&gt;
&lt;br /&gt;
= Parallel Development of Sandbox Kiosk Prototype =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Kiosk System Test&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sandbox hopes to continue the development and testing of a &#039;&#039;&#039;&#039;&#039;Kiosk System&#039;&#039;&#039;&#039;&#039; in Spring 2022. The kiosk system is envisioned as a way to improve tool usage tracking and replace the tool identification signage on each studio door. Each studio would have a touch screen computer system on or near the door that displays a visual listing of tools in that studio. Makers would be asked to select the tool they wanted to use. The kiosk would verify that the maker had completed any required training on that tool. &lt;br /&gt;
&lt;br /&gt;
By asking the maker to check the tool back in, we would be able to collect additional information about usage of individual tools as well as provide remote visibility of tool availability to makers planning on visiting the makerspace. &lt;br /&gt;
&lt;br /&gt;
Eventually we envision the kiosk system having additional functionality including  tool and studio reservation, broken tool tagging, identifying tool experts, etc.&lt;br /&gt;
&lt;br /&gt;
One possible initiative we could undertake would be the development of a prototype kiosk system for use in the various studios at Sandbox. This prototype would allow us to test ideas for MSM improvements and more quickly iterate through design concepts without having to modify the core MSM system. It would provide a working prototype useful for demonstrating our needs to the MSM development team, or to demonstrate our requirements if MSI decides to invest in an externally-developed system.&lt;br /&gt;
==== Overview of Sandbox Kiosk System ====&lt;br /&gt;
The existing MSM / LabSwipe system assumes each lab will be a single room or small number of related spaces that are hierarchically flat. Sandbox is a group of six different studios, each with a different type of tool. This leads to some confusion and a slowdown each time a maker checks in. If the tools are grouped alphabetically, a maker interested in electronics might check that he plans to use a &amp;quot;multimeter&amp;quot; then have to scroll past &amp;quot;multitool&amp;quot; and 3 different &amp;quot;sander&amp;quot; entries related to woodworking, 4 different types of &amp;quot;sewing machine&amp;quot; in the crafting studio before finding &amp;quot;soldering iron&amp;quot; a few pages down. We&#039;ve re-ordered the list by studio, which has helped quite a bit but makers using the woodworking studio have to scroll down several screens to find the start of tools they may want to use. While this may be fixable with some tweaks to the existing system UI, we&#039;ve uncovered other issues that we&#039;d like to address as well.&lt;br /&gt;
&lt;br /&gt;
In a review of system usage for the fall semester, we discovered that most students select a single tool regardless of the length of their visit. A maker may swipe in and select &amp;quot;laser cutter&amp;quot; as the tool they will be using but almost never returns to the front desk if (for example) they need to use a circular saw to trim their stock to the correct size, or need to use a drill to add a couple of holes to their project, or a sander to prepare it for finishing. Individually these failures aren&#039;t important but collectively they degrade the quality of data we hope to collect on tool usage and perhaps more importantly make it more difficult for us to report other statistics such as length of visit. Also, this avoidance bypasses the very important checking of training credentials that is a critical reason for having this system in the first place. Indeed, we found that a considerable number of students would select &amp;quot;no tool, table use only&amp;quot; when that option was made available. &lt;br /&gt;
&lt;br /&gt;
To improve this situation, we&#039;d like to move tool selection part of MSM closer to the point where the tool is used. Makers would still swipe in to the space when entering, but would not be asked whaic tools they plan to use. The extreme case of this would be to equip each tool with a sensor that indicated use and requested the maker picking up the tool to authenticate and verify their certification to use that tool. This would likely be too expensive to be practical except on the most hazardous or expensive tools such as milling machines, laser cutters, etc. What we propose and would like to test using the concept of kiosks, would be moving tool check-out to each individual studio. We envision a touch-screen display at the door of each studio. While the touch screen could be a self-contatrined system such as a iPad tablet, we are more inclined to use small computers such as the RaspberryPi. &lt;br /&gt;
&lt;br /&gt;
In a perfect world this kiosk system would be connected to the card key door lock system, but we don&#039;t envision that being possible because of political limitations with the UMD card key system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Initial Requirements for Kiosk Protoype ====&lt;br /&gt;
&lt;br /&gt;
* Kiosks to run Touch-screen terminals outside each Sandbox studio (to begin with woodworking studio and prototyping studio)&lt;br /&gt;
** Kiosk will display information about each tool available in that studio including training requirements and links to training materials. &lt;br /&gt;
** Tool information and training requirements should preferably come directly from existing wiki pages to ease updating. Either display wiki pages in embedded web browser or use mediawiki API to retrieve wiki content. &lt;br /&gt;
* Information shown on kiosk would include both publicly viewable (no login required) and private information (requiring login) such as maker&#039;s training accomplishments, etc.&lt;br /&gt;
** Provide quick and simple means for each maker to log in / authenticate with the system (card swipe, phone app, NFC, etc) &lt;br /&gt;
* Subset of information from kiosk system also available via login-secured web page accessible from off campus. Initially, remote functionality to include: &lt;br /&gt;
**ability to reserve a tool for a certain period of time, with the length of time specified by the maker, provided that request is within the limits set for that particular tool, perhaps also taking into account the time of day or day of week. &lt;br /&gt;
*** For example, a laser cutter might be reservible in blocks of 30 minutes with maximum of 3 blocks&lt;br /&gt;
*** A 3d printer might be reservible in blocks of 2 hours with the maximum number of blocks varying depending of day of week and time of day. For example, a Friday afternoon reservation might allow 48 hours total time, while Monday afternoon would only allow 4 hours total.&lt;br /&gt;
*** A more common power tool such as a jigsaw or drill might be reservible in blocks of 30 minutes with a maximum of 2-4 blocks.&lt;br /&gt;
** Some mechanism should be devised to prevent makers from always reserving the maximum number of blocks of time. &lt;br /&gt;
** display calendar view for each of the reservible tools that shows free/reserved blocks for each tool &lt;br /&gt;
** display calendar view for each studio that shows free/reserved status based on the tool being reserved. This view to be used to enforce Covid-19 distancing requirements&lt;/div&gt;</summary>
		<author><name>Gfc</name></author>
	</entry>
	<entry>
		<id>https://sandbox.umd.edu/wiki/index.php?title=Talk:Maker_Space_Manager_System&amp;diff=3432</id>
		<title>Talk:Maker Space Manager System</title>
		<link rel="alternate" type="text/html" href="https://sandbox.umd.edu/wiki/index.php?title=Talk:Maker_Space_Manager_System&amp;diff=3432"/>
		<updated>2026-10-16T21:00:51Z</updated>

		<summary type="html">&lt;p&gt;Gfc: /* Individual Systems */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Makerspace Management Software at UMD Sandbox Makerspace = &lt;br /&gt;
Discussion page related to software for managing the Sandbox Makerspace&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Listing of commercial or open source systems with overlapping functionality =&lt;br /&gt;
== Lists of Systems (other pages like this one)==&lt;br /&gt;
;Hackerspaces.org wishlist of software functions / features. :https://wiki.hackerspaces.org/Software_Wish_List&lt;br /&gt;
&lt;br /&gt;
;List of software from hackerspaces.org: https://wiki.hackerspaces.org/Hackerspace_Software\&lt;br /&gt;
&lt;br /&gt;
;MakerNexus notes on Access Control Systems: https://makernexuswiki.com/wiki/Access_Control_Systems&lt;br /&gt;
&lt;br /&gt;
== Individual Systems ==&lt;br /&gt;
=== Systems Focusing on Access Control (may include door access in addition to machine tool access / lockout) ===&lt;br /&gt;
&lt;br /&gt;
;Fabman software :Management software with machine control hardware devices, API, and other features. https://fabman.io/&lt;br /&gt;
&lt;br /&gt;
;Grit Automation Platform. :The Grit Automation Platform is a wireless, local-software workshop automation system designed for woodshops, metal shops, and education labs. Includes Core Features &amp;amp; Solutions for Dust Management, Tool Access Control &amp;amp; Safety, Time &amp;amp; Asset Management, Environmental &amp;amp; Energy Monitoring.&lt;br /&gt;
&lt;br /&gt;
;MakerGate (Equipment Access Control): An open-source smart power switch and safety interlock system (similar in function to Fabman) that requires authentication—such as an RFID card and PIN—to let only trained users operate workshop machinery, eliminating monthly subscription fees. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Nova Labs Nova Pass : https://novapass.nova-labs.org/ (active system home page)&lt;br /&gt;
::(description from Makerfaire: https://nova.makerfaire.com/maker/entry/1224/) &lt;br /&gt;
::(details:https://goo.gl/RVmtiS)&lt;br /&gt;
&lt;br /&gt;
;RATT - RFID All The Things: New Hampshire&#039;s MakeIT Labs RaspPi based RFID access control system. https://github.com/makeitlabs/ratt (video: https://www.youtube.com/watch?v=erwIPVwXUr8)&lt;br /&gt;
&lt;br /&gt;
;FATT - FOB all The Things: Ace makerspace (formerly Ace Master Toys) https://www.acemakerspace.org/fatt-project/&lt;br /&gt;
::;Ace Master Toys: Makerspace system based on Google&#039;s AuthBox system  https://github.com/google/makerspace-auth&lt;br /&gt;
::;Ace Makerspace Occupancy System: https://www.youtube.com/watch?v=kemAM8MWIN8&lt;br /&gt;
&lt;br /&gt;
;Google Makerspace Auth (aka AuthBox): https://github.com/google/makerspace-auth&lt;br /&gt;
&lt;br /&gt;
;Ithaca Generator AuthBox:&lt;br /&gt;
:* https://discuss.ithacagenerator.org/t/makerspace-authbox-on-github/565/3&lt;br /&gt;
:* https://github.com/ithacagenerator/AuthBox&lt;br /&gt;
&lt;br /&gt;
;Manchester, NH MakerAuth&lt;br /&gt;
:* https://github.com/ManchesterMakerspace/MakerAuth&lt;br /&gt;
&lt;br /&gt;
;RasPi-Lockout (designed for RIT Construct Makerspace): &lt;br /&gt;
:* https://www.youtube.com/watch?v=aoAdB13IVr0 (YouTube demo)&lt;br /&gt;
:* https://github.com/jaschawilcox/raspi-lockout (GitHub Repo)&lt;br /&gt;
&lt;br /&gt;
;Build Brighton Access Node: https://www.youtube.com/watch?v=3X64JmTpOcA&lt;br /&gt;
&lt;br /&gt;
;Open Access Control: Uses the Arduino hardware to build a robust access control and alarm system. https://code.google.com/archive/p/open-access-control/&lt;br /&gt;
&lt;br /&gt;
;tinkerAccess: The tinkerAccess system is a Raspberry Pi based access control system that can be used to prevent unauthorized users from using devices that require special training. It could also conceivably be used to control electronic lock boxes or doors. The system was originally designed and created by Matt Stallard, Ron Thomas, and Matt Peopping for TinkerMill a makerspace in Longmont, CO. It is continually being maintained and enhanced by other contributors in the community. https://github.com/TinkerMill/tinkerAccess&lt;br /&gt;
&lt;br /&gt;
;Triple Cities Makerspace ACS System: https://www.tcmakerspace.com/index.php/2019/08/19/project-profile-access-control-system-acs/&lt;br /&gt;
&lt;br /&gt;
;The MakerBarn in The Woodlands, Texas MACS System: http://koljawindeler.github.io/macs/.  &lt;br /&gt;
::* MACS UI Video: https://www.youtube.com/watch?v=zLidqAPo3Cs &lt;br /&gt;
::* An Introduction to the MACS - Makerspace Access Control System: https://www.youtube.com/watch?v=CI3xxsBM9SE&lt;br /&gt;
&lt;br /&gt;
;PITT-X Makerspace Access System: https://www.youtube.com/watch?v=2HG-vyV4yoM&lt;br /&gt;
&lt;br /&gt;
;Member Access System for Pumping Station One :https://github.com/hef/ps1auth&lt;br /&gt;
::https://github.com/bdenne2/ps1auth&lt;br /&gt;
&lt;br /&gt;
;HACCSY: Hackerspace Access Control and Check in System. Works with Seltzer CRM, running on a Raspberry Pi. https://www.instructables.com/id/HACCSY-Hackerspace-Access-Control-and-Check-in-Sys/&lt;br /&gt;
&lt;br /&gt;
:;Open Access Control Ethernet: https://github.com/zyphlar/Open_Access_Control_Ethernet&lt;br /&gt;
::;Open Source Access Control Web Interface (works with above) :https://github.com/zyphlar/Open-Source-Access-Control-Web-Interface&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;;Safety Spot :Commercial maker space management software widely used in university maker spaces. https://www.safetyspot.com/ &amp;lt;/s&amp;gt; &amp;lt;b&amp;gt;No Longer Available&amp;lt;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;(UC Berkeley) Makerpass system onepager: https://assets.pubpub.org/hpise2ck/01585588151622.pdf&lt;br /&gt;
&lt;br /&gt;
;Recursion: https://recursion.space Commercial system with free tier. Patented equipment lockout controller.&lt;br /&gt;
&lt;br /&gt;
;UT Austin FabApp/JuiceBox: FabApp is a PHP-based system for managing a makerspace (https://github.com/UTA-FabLab/fabapp). JuiceBox is a Python-based system for providing access control to power tools (https://github.com/UTA-FabLab/JuiceBox).  These and other UTA apps are on the UTA GitHub: https://github.com/UTA-FabLab&lt;br /&gt;
&lt;br /&gt;
;UT Austin Team Lockout: https://blog.uta.edu/cseseniordesign/2019/07/20/lockout/ The Maker Space Lockout System correctly gives access to Machinery only to users that have been adequately briefed on the machinery’s safety and operation. The system will be able to control access for each user according to their level of skill and expertise. Users of The Maker Space Lockout System will also become more equipped to handle and view wear and tear on machines via the data collection purge at the end of each job.&lt;br /&gt;
&lt;br /&gt;
===Not yet Categorized ===&lt;br /&gt;
:;RFIDDoorLock: https://wiki.melbournemakerspace.org/projects/RFIDDoorLock&lt;br /&gt;
&lt;br /&gt;
:;Byro :https://github.com/byro/byro&lt;br /&gt;
&lt;br /&gt;
:;HSBNE :https://github.com/hsbne/hsbneportal&lt;br /&gt;
&lt;br /&gt;
:;MetalabOS: https://github.com/Metalab/mos/&lt;br /&gt;
&lt;br /&gt;
:;NOMOS (Membership Management):  https://github.com/vhs/nomos&lt;br /&gt;
&lt;br /&gt;
:;MeMaTool: https://github.com/sim0nx/mematool&lt;br /&gt;
&lt;br /&gt;
:;RFID Tool Cabinet: https://www.youtube.com/watch?v=u-L_7pyPcvE&lt;br /&gt;
&lt;br /&gt;
=== Systems Focusing on Space Management without Access Control (may include elements of CRM, AR/AP, training management, inventory control, etc.)  ===&lt;br /&gt;
(Some of these may integrate with other Access Control Systems)&lt;br /&gt;
&lt;br /&gt;
:;WildApricot :Membership management software used by many maker spaces. https://www.wildapricot.com/&lt;br /&gt;
&lt;br /&gt;
:;Seltzer CRM: Open source CRM / membership management software created by a maker space and designed to be extensible and easily modified.  https://wiki.hackerspaces.org/Seltzer_CRM&lt;br /&gt;
&lt;br /&gt;
:;SIMPL: (Software primarily designed to manage coworking spaces with features to support maker spaces) https://smpl.io/software/makerspaces/&lt;br /&gt;
&lt;br /&gt;
:;OpenBravo (ERM/ERP) :https://www.openbravo.com/&lt;br /&gt;
&lt;br /&gt;
:;WikiSpaces :The primary goal of the WikiSpaces project is to provide a &#039;startup&#039; wiki, which is basically a MediaWiki distribution especially for hackerspaces. This distribution will provide a working, up to date, MediaWiki installation, with the commonly needed extensions installed and configured. https://wiki.hackerspaces.org/WikiSpaces&lt;br /&gt;
&lt;br /&gt;
==== Not Yet Categorized ====&lt;br /&gt;
&lt;br /&gt;
:;Scholarly article on value of information collected using Maker Lens / MakerPass access system. :  https://people.eecs.berkeley.edu/~eschoop/docs/makerlens.pdf&lt;br /&gt;
&lt;br /&gt;
= ARCHIVED ITEMS BELOW =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==ARCHIVE LabSwipe /MSM System Development History &amp;amp; 2022 Road Map ==&lt;br /&gt;
&lt;br /&gt;
===Development History===&lt;br /&gt;
Would someone on the Labswipe team add to this section?&lt;br /&gt;
&lt;br /&gt;
===Current Release===&lt;br /&gt;
&lt;br /&gt;
===Future Enhancements===&lt;br /&gt;
&lt;br /&gt;
Road Map for future enhancements.  &lt;br /&gt;
&lt;br /&gt;
==== 2021-2022 MSM Rework Outline ====&lt;br /&gt;
*Outline of desired improvements for development work from Summer 2021 to Summer 2022&lt;br /&gt;
===== 2021 =====&lt;br /&gt;
* Improvements to existing UI / core LabSwipe functionality (Fall 21) &lt;br /&gt;
** Improved editing of data entry fields&lt;br /&gt;
** Integration with UMD swipe Identity API to correctly identify new cards swiped into system and close current opportunity for student to use a created ID card with false UID.&lt;br /&gt;
** Integration with UMD swipe API to:&lt;br /&gt;
*** Identify deactivated student ID cards and &lt;br /&gt;
*** Update CardID serial number when a lost ID card is replaced with a new card.&lt;br /&gt;
&lt;br /&gt;
===== 2022 =====&lt;br /&gt;
* Integration with Canvas LMS (Spring 22)&lt;br /&gt;
** Using Canvas API, ensuring API key is well protected using a secrets manager or similar approach&lt;br /&gt;
** Implement a middle layer between MSM and Canvas to track training certifications (similar to a micro credentialing system) in a way that creates an abstraction layer between a canvas course and a training certification.&lt;br /&gt;
** See &#039;&#039;&#039;Integration with ELMS/Canvas Learning Management System&#039;&#039;&#039; below for detail&lt;br /&gt;
&lt;br /&gt;
===== Overview of Enhancements  =====&lt;br /&gt;
*Additional Enhancements not yet implemented (many not yet scheduled).&lt;br /&gt;
** Integration with a tool access control system (such as Safety Spot, The Google system used at Ace Makerspace and elsewhere, or the Nova Pass system)&lt;br /&gt;
*** See &#039;&#039;&#039;Tool Access Control&#039;&#039;&#039; below for details&lt;br /&gt;
*** This integration would require certain tools flagged in system to have a swipe card reader at the tool which verifies training before tool will operate. &lt;br /&gt;
*** While extending MSM to support tool access control, modify it as well to allow a particular makerspace to set up a two-tier implementation of MSM where initial swipe allows entry into makerspace without selecting a specific tool (but perhaps requires the selection of a studio or category of tool) and subsequent swipe was required to select a particular tool. &lt;br /&gt;
** Tool reservation / tool-in-use flagging&lt;br /&gt;
** Tool Loan (away from makerspace)&lt;br /&gt;
** Student charging system (allow students to purchase materials and tooling using student ID or credit card.&lt;br /&gt;
** Faculty charging system (allow faculty / researchers to purchase materials using KFC account #)&lt;br /&gt;
** Matching of maker skills between students and managers. &lt;br /&gt;
** Campus-wide inventory of tools at each makerspace with ability for students to search for a particular tool (similar to MIT Manus system)&lt;br /&gt;
&lt;br /&gt;
Many of these are presented in more detail below:&lt;br /&gt;
&lt;br /&gt;
==== Integration with ELMS/Canvas Learning Management System====&lt;br /&gt;
Currently Labswipe stores training accomplishments in a Google Sheet. This needs to be manually updated. A brief look at the sheet shows very few of our makerspaces are making these manual updates. &lt;br /&gt;
&lt;br /&gt;
Sandbox implemented makerspace training in ELMS/Canvas in 2019. Initially we were manually updating the Labswipe sheet from Canvas but this became very time consuming. We wrote a Canvas API query tool that re-formats the Canvas results to make the updates a bit easier. We considered automating the Labswipe sheet update process but discontinued our efforts on this when it was decided to move the Labswipe back end from google sheets to AWS.&lt;br /&gt;
&lt;br /&gt;
Adding a badging or micro-credentialing plugin to Canvas was attempted in 2019-2020. Sandbox hoped that by adding this capability to Canvas we could avoid concerns about running queries directly against the Canvas system (which contains protected information about students) While the primary benefit would be isolating us from FERPA concerns, the badging system Would also simplify our queries (especially for training completed at a different makerspace), allow us to track training not done in Canvas (such as Welding or other training requiring direct, hands-on instruction), and also provide additional ways to gamify training (for example by allowing training tiers, &#039;leveling up&#039;, etc.) Our request to add a badging plugin to Canvas was rejected by DIT. We understand that a request to add a different badging system has been made by a different department and is still under consideration. &lt;br /&gt;
    &lt;br /&gt;
*We&#039;d like future versions of Labswipe to have the capability to update training accomplishments from Canvas. &lt;br /&gt;
&lt;br /&gt;
*Ideally this update would happen every time a maker swiped in to the system. &lt;br /&gt;
&lt;br /&gt;
*The system should support tracking of training that was completed at other UMD MSI makerspaces to support the MSI plans to open up access to makerspaces across campus. For example, a maker who completed Glowforge laser training at one of the library makerspaces should be able to use the Sandbox Glowforge without additional training.&lt;br /&gt;
&lt;br /&gt;
==== Improve quantity and quality of tool usage data being gathered. ====&lt;br /&gt;
&lt;br /&gt;
Currently, the MSM system only asks each makerspace visitor which tools they will be using when they first swipe in at the front door. We&#039;ve found this arrangement results in distorted statistics as many users just select the first tool they see on the list, don&#039;t take the time to check off every tool they intend to use, and often end up using tools they hadn&#039;t intended when they first arrived. &lt;br /&gt;
&lt;br /&gt;
An improvement would be to add additional data gathering points in the makerspace. For example, by adding touch screens with swipe readers in each workshop or tool storage area we could encourage makers to log every tool they use by making the process more convenient. Another approach would be to use a mobile web app to log tool usage by scanning each tool&#039;s barcode or otherwise selecting the tool. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Several of the entries below relate to our goal of gathering more data on tool usage. &lt;br /&gt;
*For example, the safety-driven requirement to add Tool Access Control lockout devices to dangerous tools (such as chop saws and lathes) will also help us gather more detailed tool usage data for those dangerous tools. &lt;br /&gt;
*Adding an advanced tool reservation capability will add additional usage data for popular tools such as 3D printers and laser cutters. &lt;br /&gt;
*Rather than add expensive lockout devices to all tools, we discuss the possible idea of adding Tool-In-Use flagging.&lt;br /&gt;
&lt;br /&gt;
All of these work together to not only better track tool usage but also to improve the user experience and reduce frustration, increase compliance with training requirements, and ensue our compliance with campus safety rules.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Tool Access Control ====&lt;br /&gt;
&lt;br /&gt;
Once the MSM system is able to look up tool training certification information using the ELMS/Canvas APAI. we&#039;d like to add on to MSM additional hardware and software that will directly control use of certain tools that are deemed to be dangerous (such as a CNC router, milling machine, band saw, etc.) or other tools that, while not particularly dangerous, require specific knowledge to operate correctly (such as laser cutter, SLA 3D printer, etc) to avoid damaging the tool. &lt;br /&gt;
&lt;br /&gt;
* This access control system should be implemented as a separate hardware and software system connected to each tool we wish to have this added level of access control. While we envision this being implemented using commercially-available micro controllers (such as an Arduino-compatible microcontroller) or single board computers (such as a Raspberry Pi computer) any other implementation is acceptable so long as it provides a low cost per controlled machine tool.&lt;br /&gt;
&lt;br /&gt;
* This access control capability would require each maker to swipe their UMD ID before using that tool. Use of a UMD ID is preferred since all students and staff already carry this with them. Other authentication mechanism such as RFID or other ID card that works by proximity instead of requiring a physical swipe, or NFC or similar systems using a person&#039;s cell phone. For systems not using UMD ID magnetic stripe cards, the cost of additional cards, software, etc must be factored into our decision to use that system.  &lt;br /&gt;
&lt;br /&gt;
* The system would look up the makers ID in a central database, and if able to verify that the maker is trained and certified to use the tool, the system would allow use of that tool. The preferred central database would be the existing UMD ELMS/Canvas Learning Management System or a system (such as a micro credentialing or badging system) that is connected to and synchronized with the ELMS/Canvas system. Systems that provide a central database system other than ELMS / Canvas must provide an automatic mechanism to update the database using the ELMS / Canvas API.  &lt;br /&gt;
&lt;br /&gt;
* The means to allow use of the tool should be by:&lt;br /&gt;
** Switching on power through a relay or contactor controlled by the software logic &lt;br /&gt;
** Enabling a logical +5 volt signal to be read by the tool&#039;s existing controller (such as an ENABLE signal)&lt;br /&gt;
** By deactivating the tool&#039;s e-stop circuit, restoring a cabinet interlock circuit, or other mechanism by closing or opening a relay contacts. (i.e. dry contact closure)&lt;br /&gt;
** Several different approaches (ideally all of those listed above) should be provided to adapt the system to the widest variety of machine tools and their control systems.&lt;br /&gt;
* The system should provide some way to prevent the maker from walking away and leaving the tool in an operational state. Some research and discussion are needed to determine the best approach for this but a simple example would be by setting a timeout after which the system requires the user to verify they are present by pushing a button or re-swiping their ID. This capability should be settable per-tool.&lt;br /&gt;
* For tools enabled by simply applying power, the system should prevent these tools from starting up immediately on authentication to prevent unsafe situations. For example, by using a magnetic motor starter.&lt;br /&gt;
* The system should ideally store locally a list of the IDs for all makers who recently were authenticated to use the tool (or store a list of all authorized users, updated periodically) This is to permit use of the tool control system even if the central database is unavailable or if network connectivity has failed.&lt;br /&gt;
* A display on each access control station would ideally display information such as the name of the current authorized user (or last user if tool is idle), length of tool use (or countdown to expiration), connectivity check, etc.&lt;br /&gt;
&lt;br /&gt;
==== System Support for Enforcing Buddy System ====&lt;br /&gt;
&lt;br /&gt;
UMD ESSR safety rule changes require certain tools to be used with the &amp;quot;buddy system&amp;quot; In short, the &amp;quot;buddy system&amp;quot; prohibits certain dangerous tools to be used by a person alone in the workshop. Another person must be close enough to see and hear the tool being used so they can render aid and call for assistance in case of injury.&lt;br /&gt;
&lt;br /&gt;
The MSM system should provide support for enforcing the buddy system. This support could entail requiring a second person to swipe in when using certain tools. This requirement might be limited to certain times of day (for example during the evening or when staff is reduced. The requirements for buddy system support are not yet clear, this is a placeholder.&lt;br /&gt;
&lt;br /&gt;
==== Tool-In-Use Flagging ====&lt;br /&gt;
&lt;br /&gt;
An additional capability desired is the ability to flag the status of a tool as &#039;&#039;&#039;&#039;&#039;In Use&#039;&#039;&#039;&#039;&#039;, &#039;&#039;&#039;&#039;&#039;Available for Use&#039;&#039;&#039;&#039;&#039;, or other statuses such as &#039;&#039;&#039;&#039;&#039;Awaiting Repair&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;Out of Service&#039;&#039;&#039;&#039;&#039; Since demand for many tools is high and a student may be frustrated if they travel to a makerspace only to find a particular tool unavailable, it would be helpful for the system to flag tools that are not available for use because they are being used by someone else or are broken or otherwise unavailable. &lt;br /&gt;
&lt;br /&gt;
* For tools that are not in service, a makerspace staff member should be able to change the status through a web interface. &lt;br /&gt;
** The system should record a date/time stamp for when the tool was taken out of service and a date stamp for an expected return-to-service. &lt;br /&gt;
*For tools being used by a maker, the MSM system should provide a mechanism for students to quickly and easily select a tool for use. This capability should allow the use of that tool for a fixed period of time, ideally this time period would differ for different types of tools (for example, a hammer would be flagged as in-use for 1-hour intervals while a sewing machine might have longer intervals such as 3 hours.&lt;br /&gt;
** The Tool-in-Use flag feature would verify the maker has completed any necessary training.&lt;br /&gt;
** When a different maker wishes to use that tool, they would see that the tool was currently in use by another maker and would also see the time the tool is expected to be available for their use. &lt;br /&gt;
** If a tool is still being used by that maker after the check-in time has passed, the new maker would have the right to be the next to use the tool.&lt;br /&gt;
** Ideally, the system would send an SMS message or some other sort of notification that the maker&#039;s use time has expired.&lt;br /&gt;
** Some examples of quick and easy mechanisms for makers to lag that they are using a tool &lt;br /&gt;
*** A touch screen kiosk in each workshop or tool storage area.&lt;br /&gt;
*** A QR code on each tool or on the storage location for each tool. The QR code would be scanned by the maker using the tool&lt;br /&gt;
*** A mobile web app used by the maker.&lt;br /&gt;
&lt;br /&gt;
Note that the Tool-In-Use Flag Feature will provide a great deal of useful information about the relative popularity of each tool and could provide data to support the purchase of additional tools.&lt;br /&gt;
&lt;br /&gt;
==== Tool Check-Out / Check-In (for use in makerspace) ====&lt;br /&gt;
See &#039;&#039;&#039;Tool-In-Use flagging&#039;&#039;&#039; above. &#039;Check-In&#039; and &#039;Check-Out&#039; functions would be used by a student when they take a tool from storage to their work area or return it to storage. Note that Check-Out is different than Tool-Loan which entails removing a tool from the makerspace.&lt;br /&gt;
&lt;br /&gt;
==== Tool Reservation ====&lt;br /&gt;
&lt;br /&gt;
Several tools (such as laser cutters or 3D printers are popular and makers often wish to sign-up in advance for a window of time to use the tool. In the case of 3D printers, a print job could run for many hours, or even multiple days. It would be useful for MSM to allow makers to reserve time on a tool and allow other makers to see that the tool is reserved and unavailable until a given time.&lt;br /&gt;
&lt;br /&gt;
Reservations block-out for class times or maintenance windows.&lt;br /&gt;
&lt;br /&gt;
==== Manager / Staff skills matching ====&lt;br /&gt;
Provide a new capability in MSM to allow staff and volunteer managers to swipe in and out while indicating if they are working or just using the space as a maker. &lt;br /&gt;
&lt;br /&gt;
The system should provide a display of all on-duty managers and staff, displaying each manager&#039;s photo and list of each&#039;s skills / specialties. This to help makers using the space know who to best ask questions about a particular tool or technique. &lt;br /&gt;
&lt;br /&gt;
====Resale of maker materials, tooling, etc.====&lt;br /&gt;
&lt;br /&gt;
We would like to be able to resell materials such as sheet goods (plywood, MDF, acrylic, etc.) 3D printer filament, tooling (CNC router bits, milling machine tooling, etc.) This is a service to makers who don&#039;t necessarily have the ability to transport physically large materials.&lt;br /&gt;
&lt;br /&gt;
Further definition is needed to specify how payments will be taken. We don&#039;t want to accept cash and are uneasy about volunteer managers having access to maker credit/debit cards. Ideally, payments would be charged against a maker&#039;s account balance. Is it possible to use an existing student payment system such as Terrapin Express?&lt;br /&gt;
&lt;br /&gt;
=== FERPA Concerns ===&lt;br /&gt;
Since LabSwipe data is student data there may be concern that some of the data may fall under the protection of the Family Educational Rights and Privacy Act (FERPA). FERPA requires protection of &amp;quot;Personally Identifiable Information&amp;quot; (PII) from release to 3rd parties. Anyone using student PII must take steps to protect this from release, even through the action of a student working in the makerspace. FERPA exempts from the protection requirement certain &amp;quot;Directory Information&amp;quot; that is commonly used. It requires each university to identify what information is considered &amp;quot;Directory Information&amp;quot; &lt;br /&gt;
&lt;br /&gt;
UMD defines their PII and Directory Information here: https://academiccatalog.umd.edu/undergraduate/university-policies/ In July 2020 this policy defined UMD PII &amp;amp; Directory Information as:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;quot;Personally identifiable information&amp;quot; or &amp;quot;PII&amp;quot; means data or information which includes, but is not limited to:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*a student’s name;&lt;br /&gt;
*a name of a student’s parent or family member&lt;br /&gt;
*an address of a student or a student’s family; &lt;br /&gt;
*a personal identifier, such as a social security number, University Identification Number (UID), or biometric record; &lt;br /&gt;
*other indirect identifiers, such as mother’s maiden name; &lt;br /&gt;
*other information that alone, or in combination, is linked or linkable to a specific student and that would allow a reasonable person in the UMD community who does not have personal knowledge of the relevant circumstances to identify the student with reasonable certainty; or information requested by a person who UMD reasonably believes knows the identity of the student to whom the education record relates.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;quot;Directory Information&amp;quot; means information which would generally not be considered harmful or an invasion of privacy if disclosed. It includes, but is not limited to, a student’s: &lt;br /&gt;
&lt;br /&gt;
*name, &lt;br /&gt;
*address, &lt;br /&gt;
*telephone listing, &lt;br /&gt;
*e-mail address, &lt;br /&gt;
*date and place of birth, &lt;br /&gt;
*major field of study, &lt;br /&gt;
*full-time/part-time status, &lt;br /&gt;
*participation in officially recognized activities and sports, &lt;br /&gt;
*weight and height of members of athletic teams, &lt;br /&gt;
*dates of attendance, &lt;br /&gt;
*degrees and awards received, and &lt;br /&gt;
*the most recent previous educational agency or institution attended&#039;&#039;   &lt;br /&gt;
&lt;br /&gt;
Note that UID is listed as PII but not excluded as &amp;quot;Directory Information&amp;quot; as is done at other institutions, especially those that also print UID on campus ID cards.&lt;br /&gt;
&lt;br /&gt;
= Parallel Development of Sandbox Kiosk Prototype =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Kiosk System Test&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sandbox hopes to continue the development and testing of a &#039;&#039;&#039;&#039;&#039;Kiosk System&#039;&#039;&#039;&#039;&#039; in Spring 2022. The kiosk system is envisioned as a way to improve tool usage tracking and replace the tool identification signage on each studio door. Each studio would have a touch screen computer system on or near the door that displays a visual listing of tools in that studio. Makers would be asked to select the tool they wanted to use. The kiosk would verify that the maker had completed any required training on that tool. &lt;br /&gt;
&lt;br /&gt;
By asking the maker to check the tool back in, we would be able to collect additional information about usage of individual tools as well as provide remote visibility of tool availability to makers planning on visiting the makerspace. &lt;br /&gt;
&lt;br /&gt;
Eventually we envision the kiosk system having additional functionality including  tool and studio reservation, broken tool tagging, identifying tool experts, etc.&lt;br /&gt;
&lt;br /&gt;
One possible initiative we could undertake would be the development of a prototype kiosk system for use in the various studios at Sandbox. This prototype would allow us to test ideas for MSM improvements and more quickly iterate through design concepts without having to modify the core MSM system. It would provide a working prototype useful for demonstrating our needs to the MSM development team, or to demonstrate our requirements if MSI decides to invest in an externally-developed system.&lt;br /&gt;
==== Overview of Sandbox Kiosk System ====&lt;br /&gt;
The existing MSM / LabSwipe system assumes each lab will be a single room or small number of related spaces that are hierarchically flat. Sandbox is a group of six different studios, each with a different type of tool. This leads to some confusion and a slowdown each time a maker checks in. If the tools are grouped alphabetically, a maker interested in electronics might check that he plans to use a &amp;quot;multimeter&amp;quot; then have to scroll past &amp;quot;multitool&amp;quot; and 3 different &amp;quot;sander&amp;quot; entries related to woodworking, 4 different types of &amp;quot;sewing machine&amp;quot; in the crafting studio before finding &amp;quot;soldering iron&amp;quot; a few pages down. We&#039;ve re-ordered the list by studio, which has helped quite a bit but makers using the woodworking studio have to scroll down several screens to find the start of tools they may want to use. While this may be fixable with some tweaks to the existing system UI, we&#039;ve uncovered other issues that we&#039;d like to address as well.&lt;br /&gt;
&lt;br /&gt;
In a review of system usage for the fall semester, we discovered that most students select a single tool regardless of the length of their visit. A maker may swipe in and select &amp;quot;laser cutter&amp;quot; as the tool they will be using but almost never returns to the front desk if (for example) they need to use a circular saw to trim their stock to the correct size, or need to use a drill to add a couple of holes to their project, or a sander to prepare it for finishing. Individually these failures aren&#039;t important but collectively they degrade the quality of data we hope to collect on tool usage and perhaps more importantly make it more difficult for us to report other statistics such as length of visit. Also, this avoidance bypasses the very important checking of training credentials that is a critical reason for having this system in the first place. Indeed, we found that a considerable number of students would select &amp;quot;no tool, table use only&amp;quot; when that option was made available. &lt;br /&gt;
&lt;br /&gt;
To improve this situation, we&#039;d like to move tool selection part of MSM closer to the point where the tool is used. Makers would still swipe in to the space when entering, but would not be asked whaic tools they plan to use. The extreme case of this would be to equip each tool with a sensor that indicated use and requested the maker picking up the tool to authenticate and verify their certification to use that tool. This would likely be too expensive to be practical except on the most hazardous or expensive tools such as milling machines, laser cutters, etc. What we propose and would like to test using the concept of kiosks, would be moving tool check-out to each individual studio. We envision a touch-screen display at the door of each studio. While the touch screen could be a self-contatrined system such as a iPad tablet, we are more inclined to use small computers such as the RaspberryPi. &lt;br /&gt;
&lt;br /&gt;
In a perfect world this kiosk system would be connected to the card key door lock system, but we don&#039;t envision that being possible because of political limitations with the UMD card key system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Initial Requirements for Kiosk Protoype ====&lt;br /&gt;
&lt;br /&gt;
* Kiosks to run Touch-screen terminals outside each Sandbox studio (to begin with woodworking studio and prototyping studio)&lt;br /&gt;
** Kiosk will display information about each tool available in that studio including training requirements and links to training materials. &lt;br /&gt;
** Tool information and training requirements should preferably come directly from existing wiki pages to ease updating. Either display wiki pages in embedded web browser or use mediawiki API to retrieve wiki content. &lt;br /&gt;
* Information shown on kiosk would include both publicly viewable (no login required) and private information (requiring login) such as maker&#039;s training accomplishments, etc.&lt;br /&gt;
** Provide quick and simple means for each maker to log in / authenticate with the system (card swipe, phone app, NFC, etc) &lt;br /&gt;
* Subset of information from kiosk system also available via login-secured web page accessible from off campus. Initially, remote functionality to include: &lt;br /&gt;
**ability to reserve a tool for a certain period of time, with the length of time specified by the maker, provided that request is within the limits set for that particular tool, perhaps also taking into account the time of day or day of week. &lt;br /&gt;
*** For example, a laser cutter might be reservible in blocks of 30 minutes with maximum of 3 blocks&lt;br /&gt;
*** A 3d printer might be reservible in blocks of 2 hours with the maximum number of blocks varying depending of day of week and time of day. For example, a Friday afternoon reservation might allow 48 hours total time, while Monday afternoon would only allow 4 hours total.&lt;br /&gt;
*** A more common power tool such as a jigsaw or drill might be reservible in blocks of 30 minutes with a maximum of 2-4 blocks.&lt;br /&gt;
** Some mechanism should be devised to prevent makers from always reserving the maximum number of blocks of time. &lt;br /&gt;
** display calendar view for each of the reservible tools that shows free/reserved blocks for each tool &lt;br /&gt;
** display calendar view for each studio that shows free/reserved status based on the tool being reserved. This view to be used to enforce Covid-19 distancing requirements&lt;/div&gt;</summary>
		<author><name>Gfc</name></author>
	</entry>
	<entry>
		<id>https://sandbox.umd.edu/wiki/index.php?title=Talk:Maker_Space_Manager_System&amp;diff=3431</id>
		<title>Talk:Maker Space Manager System</title>
		<link rel="alternate" type="text/html" href="https://sandbox.umd.edu/wiki/index.php?title=Talk:Maker_Space_Manager_System&amp;diff=3431"/>
		<updated>2026-10-16T20:58:11Z</updated>

		<summary type="html">&lt;p&gt;Gfc: /* Listing of commercial or open source systems with overlapping functionality */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Makerspace Management Software at UMD Sandbox Makerspace = &lt;br /&gt;
Discussion page related to software for managing the Sandbox Makerspace&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Listing of commercial or open source systems with overlapping functionality =&lt;br /&gt;
== Lists of Systems (other pages like this one)==&lt;br /&gt;
;Hackerspaces.org wishlist of software functions / features. :https://wiki.hackerspaces.org/Software_Wish_List&lt;br /&gt;
&lt;br /&gt;
;List of software from hackerspaces.org: https://wiki.hackerspaces.org/Hackerspace_Software\&lt;br /&gt;
&lt;br /&gt;
;MakerNexus notes on Access Control Systems: https://makernexuswiki.com/wiki/Access_Control_Systems&lt;br /&gt;
&lt;br /&gt;
== Individual Systems ==&lt;br /&gt;
=== Systems Focusing on Access Control (may include door access in addition to machine tool access / lockout) ===&lt;br /&gt;
&lt;br /&gt;
;Fabman software :Management software with machine control hardware devices, API, and other features. https://fabman.io/&lt;br /&gt;
&lt;br /&gt;
;Grit Automation Platform. :The Grit Automation Platform is a wireless, local-software workshop automation system designed for woodshops, metal shops, and education labs. Includes Core Features &amp;amp; Solutions for Dust Management, Tool Access Control &amp;amp; Safety, Time &amp;amp; Asset Management, Environmental &amp;amp; Energy Monitoring.&lt;br /&gt;
&lt;br /&gt;
;MakerGate (Equipment Access Control): An open-source smart power switch and safety interlock system (similar in function to Fabman) that requires authentication—such as an RFID card and PIN—to let only trained users operate workshop machinery, eliminating monthly subscription fees. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:;Nova Labs Nova Pass : https://novapass.nova-labs.org/ (active system home page)&lt;br /&gt;
::(description from Makerfaire: https://nova.makerfaire.com/maker/entry/1224/) &lt;br /&gt;
::(details:https://goo.gl/RVmtiS)&lt;br /&gt;
&lt;br /&gt;
:;RATT - RFID All The Things: New Hampshire&#039;s MakeIT Labs RaspPi based RFID access control system. https://github.com/makeitlabs/ratt (video: https://www.youtube.com/watch?v=erwIPVwXUr8)&lt;br /&gt;
&lt;br /&gt;
:;FATT - FOB all The Things: Ace makerspace (formerly Ace Master Toys) https://www.acemakerspace.org/fatt-project/&lt;br /&gt;
::;Ace Master Toys: Makerspace system based on Google&#039;s AuthBox system  https://github.com/google/makerspace-auth&lt;br /&gt;
::;Ace Makerspace Occupancy System: https://www.youtube.com/watch?v=kemAM8MWIN8&lt;br /&gt;
&lt;br /&gt;
:;Google Makerspace Auth (aka AuthBox): https://github.com/google/makerspace-auth&lt;br /&gt;
&lt;br /&gt;
:;Ithaca Generator AuthBox&lt;br /&gt;
:* https://discuss.ithacagenerator.org/t/makerspace-authbox-on-github/565/3&lt;br /&gt;
:* https://github.com/ithacagenerator/AuthBox&lt;br /&gt;
&lt;br /&gt;
:;Manchester, NH MakerAuth&lt;br /&gt;
:* https://github.com/ManchesterMakerspace/MakerAuth&lt;br /&gt;
&lt;br /&gt;
:;RasPi-Lockout (designed for RIT Construct Makerspace): &lt;br /&gt;
:* https://www.youtube.com/watch?v=aoAdB13IVr0 (YouTube demo)&lt;br /&gt;
:* https://github.com/jaschawilcox/raspi-lockout (GitHub Repo)&lt;br /&gt;
&lt;br /&gt;
:;Build Brighton Access Node: https://www.youtube.com/watch?v=3X64JmTpOcA&lt;br /&gt;
&lt;br /&gt;
:;Open Access Control: Uses the Arduino hardware to build a robust access control and alarm system. https://code.google.com/archive/p/open-access-control/&lt;br /&gt;
&lt;br /&gt;
:;tinkerAccess: The tinkerAccess system is a Raspberry Pi based access control system that can be used to prevent unauthorized users from using devices that require special training. It could also conceivably be used to control electronic lock boxes or doors. The system was originally designed and created by Matt Stallard, Ron Thomas, and Matt Peopping for TinkerMill a makerspace in Longmont, CO. It is continually being maintained and enhanced by other contributors in the community. https://github.com/TinkerMill/tinkerAccess&lt;br /&gt;
&lt;br /&gt;
:;Triple Cities Makerspace ACS System: https://www.tcmakerspace.com/index.php/2019/08/19/project-profile-access-control-system-acs/&lt;br /&gt;
&lt;br /&gt;
:;The MakerBarn in The Woodlands, Texas MACS System: http://koljawindeler.github.io/macs/.  &lt;br /&gt;
::* MACS UI Video: https://www.youtube.com/watch?v=zLidqAPo3Cs &lt;br /&gt;
::* An Introduction to the MACS - Makerspace Access Control System: https://www.youtube.com/watch?v=CI3xxsBM9SE&lt;br /&gt;
&lt;br /&gt;
:;PITT-X Makerspace Access System: https://www.youtube.com/watch?v=2HG-vyV4yoM&lt;br /&gt;
&lt;br /&gt;
:;Member Access System for Pumping Station One :https://github.com/hef/ps1auth&lt;br /&gt;
::https://github.com/bdenne2/ps1auth&lt;br /&gt;
&lt;br /&gt;
:;HACCSY: Hackerspace Access Control and Check in System. Works with Seltzer CRM, running on a Raspberry Pi. https://www.instructables.com/id/HACCSY-Hackerspace-Access-Control-and-Check-in-Sys/&lt;br /&gt;
&lt;br /&gt;
:;Open Access Control Ethernet: https://github.com/zyphlar/Open_Access_Control_Ethernet&lt;br /&gt;
::;Open Source Access Control Web Interface (works with above) :https://github.com/zyphlar/Open-Source-Access-Control-Web-Interface&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;;Safety Spot :Commercial maker space management software widely used in university maker spaces. https://www.safetyspot.com/ &amp;lt;/s&amp;gt; &amp;lt;b&amp;gt;No Longer Available&amp;lt;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;(UC Berkeley) Makerpass system onepager: https://assets.pubpub.org/hpise2ck/01585588151622.pdf&lt;br /&gt;
&lt;br /&gt;
;Recursion: https://recursion.space Commercial system with free tier. Patented equipment lockout controller.&lt;br /&gt;
&lt;br /&gt;
;UT Austin FabApp/JuiceBox: FabApp is a PHP-based system for managing a makerspace (https://github.com/UTA-FabLab/fabapp). JuiceBox is a Python-based system for providing access control to power tools (https://github.com/UTA-FabLab/JuiceBox).  These and other UTA apps are on the UTA GitHub: https://github.com/UTA-FabLab&lt;br /&gt;
&lt;br /&gt;
;UT Austin Team Lockout: https://blog.uta.edu/cseseniordesign/2019/07/20/lockout/ The Maker Space Lockout System correctly gives access to Machinery only to users that have been adequately briefed on the machinery’s safety and operation. The system will be able to control access for each user according to their level of skill and expertise. Users of The Maker Space Lockout System will also become more equipped to handle and view wear and tear on machines via the data collection purge at the end of each job.&lt;br /&gt;
&lt;br /&gt;
===Not yet Categorized ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:;RFIDDoorLock: https://wiki.melbournemakerspace.org/projects/RFIDDoorLock&lt;br /&gt;
&lt;br /&gt;
:;Byro :https://github.com/byro/byro&lt;br /&gt;
&lt;br /&gt;
:;HSBNE :https://github.com/hsbne/hsbneportal&lt;br /&gt;
&lt;br /&gt;
:;MetalabOS: https://github.com/Metalab/mos/&lt;br /&gt;
&lt;br /&gt;
:;NOMOS (Membership Management):  https://github.com/vhs/nomos&lt;br /&gt;
&lt;br /&gt;
:;MeMaTool: https://github.com/sim0nx/mematool&lt;br /&gt;
&lt;br /&gt;
:;RFID Tool Cabinet: https://www.youtube.com/watch?v=u-L_7pyPcvE&lt;br /&gt;
&lt;br /&gt;
=== Systems Focusing on Space Management without Access Control (may include elements of CRM, AR/AP, training management, inventory control, etc.)  ===&lt;br /&gt;
(Some of these may integrate with other Access Control Systems)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:;WildApricot :Membership management software used by many maker spaces. https://www.wildapricot.com/&lt;br /&gt;
&lt;br /&gt;
:;Seltzer CRM: Open source CRM / membership management software created by a maker space and designed to be extensible and easily modified.  https://wiki.hackerspaces.org/Seltzer_CRM&lt;br /&gt;
&lt;br /&gt;
:;SIMPL: (Software primarily designed to manage coworking spaces with features to support maker spaces) https://smpl.io/software/makerspaces/&lt;br /&gt;
&lt;br /&gt;
:;OpenBravo (ERM/ERP) :https://www.openbravo.com/&lt;br /&gt;
&lt;br /&gt;
:;WikiSpaces :The primary goal of the WikiSpaces project is to provide a &#039;startup&#039; wiki, which is basically a MediaWiki distribution especially for hackerspaces. This distribution will provide a working, up to date, MediaWiki installation, with the commonly needed extensions installed and configured. https://wiki.hackerspaces.org/WikiSpaces&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Not Yet Categorized ====&lt;br /&gt;
&lt;br /&gt;
:;Scholarly article on value of information collected using Maker Lens / MakerPass access system. :  https://people.eecs.berkeley.edu/~eschoop/docs/makerlens.pdf&lt;br /&gt;
&lt;br /&gt;
= ARCHIVED ITEMS BELOW =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==ARCHIVE LabSwipe /MSM System Development History &amp;amp; 2022 Road Map ==&lt;br /&gt;
&lt;br /&gt;
===Development History===&lt;br /&gt;
Would someone on the Labswipe team add to this section?&lt;br /&gt;
&lt;br /&gt;
===Current Release===&lt;br /&gt;
&lt;br /&gt;
===Future Enhancements===&lt;br /&gt;
&lt;br /&gt;
Road Map for future enhancements.  &lt;br /&gt;
&lt;br /&gt;
==== 2021-2022 MSM Rework Outline ====&lt;br /&gt;
*Outline of desired improvements for development work from Summer 2021 to Summer 2022&lt;br /&gt;
===== 2021 =====&lt;br /&gt;
* Improvements to existing UI / core LabSwipe functionality (Fall 21) &lt;br /&gt;
** Improved editing of data entry fields&lt;br /&gt;
** Integration with UMD swipe Identity API to correctly identify new cards swiped into system and close current opportunity for student to use a created ID card with false UID.&lt;br /&gt;
** Integration with UMD swipe API to:&lt;br /&gt;
*** Identify deactivated student ID cards and &lt;br /&gt;
*** Update CardID serial number when a lost ID card is replaced with a new card.&lt;br /&gt;
&lt;br /&gt;
===== 2022 =====&lt;br /&gt;
* Integration with Canvas LMS (Spring 22)&lt;br /&gt;
** Using Canvas API, ensuring API key is well protected using a secrets manager or similar approach&lt;br /&gt;
** Implement a middle layer between MSM and Canvas to track training certifications (similar to a micro credentialing system) in a way that creates an abstraction layer between a canvas course and a training certification.&lt;br /&gt;
** See &#039;&#039;&#039;Integration with ELMS/Canvas Learning Management System&#039;&#039;&#039; below for detail&lt;br /&gt;
&lt;br /&gt;
===== Overview of Enhancements  =====&lt;br /&gt;
*Additional Enhancements not yet implemented (many not yet scheduled).&lt;br /&gt;
** Integration with a tool access control system (such as Safety Spot, The Google system used at Ace Makerspace and elsewhere, or the Nova Pass system)&lt;br /&gt;
*** See &#039;&#039;&#039;Tool Access Control&#039;&#039;&#039; below for details&lt;br /&gt;
*** This integration would require certain tools flagged in system to have a swipe card reader at the tool which verifies training before tool will operate. &lt;br /&gt;
*** While extending MSM to support tool access control, modify it as well to allow a particular makerspace to set up a two-tier implementation of MSM where initial swipe allows entry into makerspace without selecting a specific tool (but perhaps requires the selection of a studio or category of tool) and subsequent swipe was required to select a particular tool. &lt;br /&gt;
** Tool reservation / tool-in-use flagging&lt;br /&gt;
** Tool Loan (away from makerspace)&lt;br /&gt;
** Student charging system (allow students to purchase materials and tooling using student ID or credit card.&lt;br /&gt;
** Faculty charging system (allow faculty / researchers to purchase materials using KFC account #)&lt;br /&gt;
** Matching of maker skills between students and managers. &lt;br /&gt;
** Campus-wide inventory of tools at each makerspace with ability for students to search for a particular tool (similar to MIT Manus system)&lt;br /&gt;
&lt;br /&gt;
Many of these are presented in more detail below:&lt;br /&gt;
&lt;br /&gt;
==== Integration with ELMS/Canvas Learning Management System====&lt;br /&gt;
Currently Labswipe stores training accomplishments in a Google Sheet. This needs to be manually updated. A brief look at the sheet shows very few of our makerspaces are making these manual updates. &lt;br /&gt;
&lt;br /&gt;
Sandbox implemented makerspace training in ELMS/Canvas in 2019. Initially we were manually updating the Labswipe sheet from Canvas but this became very time consuming. We wrote a Canvas API query tool that re-formats the Canvas results to make the updates a bit easier. We considered automating the Labswipe sheet update process but discontinued our efforts on this when it was decided to move the Labswipe back end from google sheets to AWS.&lt;br /&gt;
&lt;br /&gt;
Adding a badging or micro-credentialing plugin to Canvas was attempted in 2019-2020. Sandbox hoped that by adding this capability to Canvas we could avoid concerns about running queries directly against the Canvas system (which contains protected information about students) While the primary benefit would be isolating us from FERPA concerns, the badging system Would also simplify our queries (especially for training completed at a different makerspace), allow us to track training not done in Canvas (such as Welding or other training requiring direct, hands-on instruction), and also provide additional ways to gamify training (for example by allowing training tiers, &#039;leveling up&#039;, etc.) Our request to add a badging plugin to Canvas was rejected by DIT. We understand that a request to add a different badging system has been made by a different department and is still under consideration. &lt;br /&gt;
    &lt;br /&gt;
*We&#039;d like future versions of Labswipe to have the capability to update training accomplishments from Canvas. &lt;br /&gt;
&lt;br /&gt;
*Ideally this update would happen every time a maker swiped in to the system. &lt;br /&gt;
&lt;br /&gt;
*The system should support tracking of training that was completed at other UMD MSI makerspaces to support the MSI plans to open up access to makerspaces across campus. For example, a maker who completed Glowforge laser training at one of the library makerspaces should be able to use the Sandbox Glowforge without additional training.&lt;br /&gt;
&lt;br /&gt;
==== Improve quantity and quality of tool usage data being gathered. ====&lt;br /&gt;
&lt;br /&gt;
Currently, the MSM system only asks each makerspace visitor which tools they will be using when they first swipe in at the front door. We&#039;ve found this arrangement results in distorted statistics as many users just select the first tool they see on the list, don&#039;t take the time to check off every tool they intend to use, and often end up using tools they hadn&#039;t intended when they first arrived. &lt;br /&gt;
&lt;br /&gt;
An improvement would be to add additional data gathering points in the makerspace. For example, by adding touch screens with swipe readers in each workshop or tool storage area we could encourage makers to log every tool they use by making the process more convenient. Another approach would be to use a mobile web app to log tool usage by scanning each tool&#039;s barcode or otherwise selecting the tool. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Several of the entries below relate to our goal of gathering more data on tool usage. &lt;br /&gt;
*For example, the safety-driven requirement to add Tool Access Control lockout devices to dangerous tools (such as chop saws and lathes) will also help us gather more detailed tool usage data for those dangerous tools. &lt;br /&gt;
*Adding an advanced tool reservation capability will add additional usage data for popular tools such as 3D printers and laser cutters. &lt;br /&gt;
*Rather than add expensive lockout devices to all tools, we discuss the possible idea of adding Tool-In-Use flagging.&lt;br /&gt;
&lt;br /&gt;
All of these work together to not only better track tool usage but also to improve the user experience and reduce frustration, increase compliance with training requirements, and ensue our compliance with campus safety rules.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Tool Access Control ====&lt;br /&gt;
&lt;br /&gt;
Once the MSM system is able to look up tool training certification information using the ELMS/Canvas APAI. we&#039;d like to add on to MSM additional hardware and software that will directly control use of certain tools that are deemed to be dangerous (such as a CNC router, milling machine, band saw, etc.) or other tools that, while not particularly dangerous, require specific knowledge to operate correctly (such as laser cutter, SLA 3D printer, etc) to avoid damaging the tool. &lt;br /&gt;
&lt;br /&gt;
* This access control system should be implemented as a separate hardware and software system connected to each tool we wish to have this added level of access control. While we envision this being implemented using commercially-available micro controllers (such as an Arduino-compatible microcontroller) or single board computers (such as a Raspberry Pi computer) any other implementation is acceptable so long as it provides a low cost per controlled machine tool.&lt;br /&gt;
&lt;br /&gt;
* This access control capability would require each maker to swipe their UMD ID before using that tool. Use of a UMD ID is preferred since all students and staff already carry this with them. Other authentication mechanism such as RFID or other ID card that works by proximity instead of requiring a physical swipe, or NFC or similar systems using a person&#039;s cell phone. For systems not using UMD ID magnetic stripe cards, the cost of additional cards, software, etc must be factored into our decision to use that system.  &lt;br /&gt;
&lt;br /&gt;
* The system would look up the makers ID in a central database, and if able to verify that the maker is trained and certified to use the tool, the system would allow use of that tool. The preferred central database would be the existing UMD ELMS/Canvas Learning Management System or a system (such as a micro credentialing or badging system) that is connected to and synchronized with the ELMS/Canvas system. Systems that provide a central database system other than ELMS / Canvas must provide an automatic mechanism to update the database using the ELMS / Canvas API.  &lt;br /&gt;
&lt;br /&gt;
* The means to allow use of the tool should be by:&lt;br /&gt;
** Switching on power through a relay or contactor controlled by the software logic &lt;br /&gt;
** Enabling a logical +5 volt signal to be read by the tool&#039;s existing controller (such as an ENABLE signal)&lt;br /&gt;
** By deactivating the tool&#039;s e-stop circuit, restoring a cabinet interlock circuit, or other mechanism by closing or opening a relay contacts. (i.e. dry contact closure)&lt;br /&gt;
** Several different approaches (ideally all of those listed above) should be provided to adapt the system to the widest variety of machine tools and their control systems.&lt;br /&gt;
* The system should provide some way to prevent the maker from walking away and leaving the tool in an operational state. Some research and discussion are needed to determine the best approach for this but a simple example would be by setting a timeout after which the system requires the user to verify they are present by pushing a button or re-swiping their ID. This capability should be settable per-tool.&lt;br /&gt;
* For tools enabled by simply applying power, the system should prevent these tools from starting up immediately on authentication to prevent unsafe situations. For example, by using a magnetic motor starter.&lt;br /&gt;
* The system should ideally store locally a list of the IDs for all makers who recently were authenticated to use the tool (or store a list of all authorized users, updated periodically) This is to permit use of the tool control system even if the central database is unavailable or if network connectivity has failed.&lt;br /&gt;
* A display on each access control station would ideally display information such as the name of the current authorized user (or last user if tool is idle), length of tool use (or countdown to expiration), connectivity check, etc.&lt;br /&gt;
&lt;br /&gt;
==== System Support for Enforcing Buddy System ====&lt;br /&gt;
&lt;br /&gt;
UMD ESSR safety rule changes require certain tools to be used with the &amp;quot;buddy system&amp;quot; In short, the &amp;quot;buddy system&amp;quot; prohibits certain dangerous tools to be used by a person alone in the workshop. Another person must be close enough to see and hear the tool being used so they can render aid and call for assistance in case of injury.&lt;br /&gt;
&lt;br /&gt;
The MSM system should provide support for enforcing the buddy system. This support could entail requiring a second person to swipe in when using certain tools. This requirement might be limited to certain times of day (for example during the evening or when staff is reduced. The requirements for buddy system support are not yet clear, this is a placeholder.&lt;br /&gt;
&lt;br /&gt;
==== Tool-In-Use Flagging ====&lt;br /&gt;
&lt;br /&gt;
An additional capability desired is the ability to flag the status of a tool as &#039;&#039;&#039;&#039;&#039;In Use&#039;&#039;&#039;&#039;&#039;, &#039;&#039;&#039;&#039;&#039;Available for Use&#039;&#039;&#039;&#039;&#039;, or other statuses such as &#039;&#039;&#039;&#039;&#039;Awaiting Repair&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;Out of Service&#039;&#039;&#039;&#039;&#039; Since demand for many tools is high and a student may be frustrated if they travel to a makerspace only to find a particular tool unavailable, it would be helpful for the system to flag tools that are not available for use because they are being used by someone else or are broken or otherwise unavailable. &lt;br /&gt;
&lt;br /&gt;
* For tools that are not in service, a makerspace staff member should be able to change the status through a web interface. &lt;br /&gt;
** The system should record a date/time stamp for when the tool was taken out of service and a date stamp for an expected return-to-service. &lt;br /&gt;
*For tools being used by a maker, the MSM system should provide a mechanism for students to quickly and easily select a tool for use. This capability should allow the use of that tool for a fixed period of time, ideally this time period would differ for different types of tools (for example, a hammer would be flagged as in-use for 1-hour intervals while a sewing machine might have longer intervals such as 3 hours.&lt;br /&gt;
** The Tool-in-Use flag feature would verify the maker has completed any necessary training.&lt;br /&gt;
** When a different maker wishes to use that tool, they would see that the tool was currently in use by another maker and would also see the time the tool is expected to be available for their use. &lt;br /&gt;
** If a tool is still being used by that maker after the check-in time has passed, the new maker would have the right to be the next to use the tool.&lt;br /&gt;
** Ideally, the system would send an SMS message or some other sort of notification that the maker&#039;s use time has expired.&lt;br /&gt;
** Some examples of quick and easy mechanisms for makers to lag that they are using a tool &lt;br /&gt;
*** A touch screen kiosk in each workshop or tool storage area.&lt;br /&gt;
*** A QR code on each tool or on the storage location for each tool. The QR code would be scanned by the maker using the tool&lt;br /&gt;
*** A mobile web app used by the maker.&lt;br /&gt;
&lt;br /&gt;
Note that the Tool-In-Use Flag Feature will provide a great deal of useful information about the relative popularity of each tool and could provide data to support the purchase of additional tools.&lt;br /&gt;
&lt;br /&gt;
==== Tool Check-Out / Check-In (for use in makerspace) ====&lt;br /&gt;
See &#039;&#039;&#039;Tool-In-Use flagging&#039;&#039;&#039; above. &#039;Check-In&#039; and &#039;Check-Out&#039; functions would be used by a student when they take a tool from storage to their work area or return it to storage. Note that Check-Out is different than Tool-Loan which entails removing a tool from the makerspace.&lt;br /&gt;
&lt;br /&gt;
==== Tool Reservation ====&lt;br /&gt;
&lt;br /&gt;
Several tools (such as laser cutters or 3D printers are popular and makers often wish to sign-up in advance for a window of time to use the tool. In the case of 3D printers, a print job could run for many hours, or even multiple days. It would be useful for MSM to allow makers to reserve time on a tool and allow other makers to see that the tool is reserved and unavailable until a given time.&lt;br /&gt;
&lt;br /&gt;
Reservations block-out for class times or maintenance windows.&lt;br /&gt;
&lt;br /&gt;
==== Manager / Staff skills matching ====&lt;br /&gt;
Provide a new capability in MSM to allow staff and volunteer managers to swipe in and out while indicating if they are working or just using the space as a maker. &lt;br /&gt;
&lt;br /&gt;
The system should provide a display of all on-duty managers and staff, displaying each manager&#039;s photo and list of each&#039;s skills / specialties. This to help makers using the space know who to best ask questions about a particular tool or technique. &lt;br /&gt;
&lt;br /&gt;
====Resale of maker materials, tooling, etc.====&lt;br /&gt;
&lt;br /&gt;
We would like to be able to resell materials such as sheet goods (plywood, MDF, acrylic, etc.) 3D printer filament, tooling (CNC router bits, milling machine tooling, etc.) This is a service to makers who don&#039;t necessarily have the ability to transport physically large materials.&lt;br /&gt;
&lt;br /&gt;
Further definition is needed to specify how payments will be taken. We don&#039;t want to accept cash and are uneasy about volunteer managers having access to maker credit/debit cards. Ideally, payments would be charged against a maker&#039;s account balance. Is it possible to use an existing student payment system such as Terrapin Express?&lt;br /&gt;
&lt;br /&gt;
=== FERPA Concerns ===&lt;br /&gt;
Since LabSwipe data is student data there may be concern that some of the data may fall under the protection of the Family Educational Rights and Privacy Act (FERPA). FERPA requires protection of &amp;quot;Personally Identifiable Information&amp;quot; (PII) from release to 3rd parties. Anyone using student PII must take steps to protect this from release, even through the action of a student working in the makerspace. FERPA exempts from the protection requirement certain &amp;quot;Directory Information&amp;quot; that is commonly used. It requires each university to identify what information is considered &amp;quot;Directory Information&amp;quot; &lt;br /&gt;
&lt;br /&gt;
UMD defines their PII and Directory Information here: https://academiccatalog.umd.edu/undergraduate/university-policies/ In July 2020 this policy defined UMD PII &amp;amp; Directory Information as:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;quot;Personally identifiable information&amp;quot; or &amp;quot;PII&amp;quot; means data or information which includes, but is not limited to:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*a student’s name;&lt;br /&gt;
*a name of a student’s parent or family member&lt;br /&gt;
*an address of a student or a student’s family; &lt;br /&gt;
*a personal identifier, such as a social security number, University Identification Number (UID), or biometric record; &lt;br /&gt;
*other indirect identifiers, such as mother’s maiden name; &lt;br /&gt;
*other information that alone, or in combination, is linked or linkable to a specific student and that would allow a reasonable person in the UMD community who does not have personal knowledge of the relevant circumstances to identify the student with reasonable certainty; or information requested by a person who UMD reasonably believes knows the identity of the student to whom the education record relates.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;quot;Directory Information&amp;quot; means information which would generally not be considered harmful or an invasion of privacy if disclosed. It includes, but is not limited to, a student’s: &lt;br /&gt;
&lt;br /&gt;
*name, &lt;br /&gt;
*address, &lt;br /&gt;
*telephone listing, &lt;br /&gt;
*e-mail address, &lt;br /&gt;
*date and place of birth, &lt;br /&gt;
*major field of study, &lt;br /&gt;
*full-time/part-time status, &lt;br /&gt;
*participation in officially recognized activities and sports, &lt;br /&gt;
*weight and height of members of athletic teams, &lt;br /&gt;
*dates of attendance, &lt;br /&gt;
*degrees and awards received, and &lt;br /&gt;
*the most recent previous educational agency or institution attended&#039;&#039;   &lt;br /&gt;
&lt;br /&gt;
Note that UID is listed as PII but not excluded as &amp;quot;Directory Information&amp;quot; as is done at other institutions, especially those that also print UID on campus ID cards.&lt;br /&gt;
&lt;br /&gt;
= Parallel Development of Sandbox Kiosk Prototype =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Kiosk System Test&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sandbox hopes to continue the development and testing of a &#039;&#039;&#039;&#039;&#039;Kiosk System&#039;&#039;&#039;&#039;&#039; in Spring 2022. The kiosk system is envisioned as a way to improve tool usage tracking and replace the tool identification signage on each studio door. Each studio would have a touch screen computer system on or near the door that displays a visual listing of tools in that studio. Makers would be asked to select the tool they wanted to use. The kiosk would verify that the maker had completed any required training on that tool. &lt;br /&gt;
&lt;br /&gt;
By asking the maker to check the tool back in, we would be able to collect additional information about usage of individual tools as well as provide remote visibility of tool availability to makers planning on visiting the makerspace. &lt;br /&gt;
&lt;br /&gt;
Eventually we envision the kiosk system having additional functionality including  tool and studio reservation, broken tool tagging, identifying tool experts, etc.&lt;br /&gt;
&lt;br /&gt;
One possible initiative we could undertake would be the development of a prototype kiosk system for use in the various studios at Sandbox. This prototype would allow us to test ideas for MSM improvements and more quickly iterate through design concepts without having to modify the core MSM system. It would provide a working prototype useful for demonstrating our needs to the MSM development team, or to demonstrate our requirements if MSI decides to invest in an externally-developed system.&lt;br /&gt;
==== Overview of Sandbox Kiosk System ====&lt;br /&gt;
The existing MSM / LabSwipe system assumes each lab will be a single room or small number of related spaces that are hierarchically flat. Sandbox is a group of six different studios, each with a different type of tool. This leads to some confusion and a slowdown each time a maker checks in. If the tools are grouped alphabetically, a maker interested in electronics might check that he plans to use a &amp;quot;multimeter&amp;quot; then have to scroll past &amp;quot;multitool&amp;quot; and 3 different &amp;quot;sander&amp;quot; entries related to woodworking, 4 different types of &amp;quot;sewing machine&amp;quot; in the crafting studio before finding &amp;quot;soldering iron&amp;quot; a few pages down. We&#039;ve re-ordered the list by studio, which has helped quite a bit but makers using the woodworking studio have to scroll down several screens to find the start of tools they may want to use. While this may be fixable with some tweaks to the existing system UI, we&#039;ve uncovered other issues that we&#039;d like to address as well.&lt;br /&gt;
&lt;br /&gt;
In a review of system usage for the fall semester, we discovered that most students select a single tool regardless of the length of their visit. A maker may swipe in and select &amp;quot;laser cutter&amp;quot; as the tool they will be using but almost never returns to the front desk if (for example) they need to use a circular saw to trim their stock to the correct size, or need to use a drill to add a couple of holes to their project, or a sander to prepare it for finishing. Individually these failures aren&#039;t important but collectively they degrade the quality of data we hope to collect on tool usage and perhaps more importantly make it more difficult for us to report other statistics such as length of visit. Also, this avoidance bypasses the very important checking of training credentials that is a critical reason for having this system in the first place. Indeed, we found that a considerable number of students would select &amp;quot;no tool, table use only&amp;quot; when that option was made available. &lt;br /&gt;
&lt;br /&gt;
To improve this situation, we&#039;d like to move tool selection part of MSM closer to the point where the tool is used. Makers would still swipe in to the space when entering, but would not be asked whaic tools they plan to use. The extreme case of this would be to equip each tool with a sensor that indicated use and requested the maker picking up the tool to authenticate and verify their certification to use that tool. This would likely be too expensive to be practical except on the most hazardous or expensive tools such as milling machines, laser cutters, etc. What we propose and would like to test using the concept of kiosks, would be moving tool check-out to each individual studio. We envision a touch-screen display at the door of each studio. While the touch screen could be a self-contatrined system such as a iPad tablet, we are more inclined to use small computers such as the RaspberryPi. &lt;br /&gt;
&lt;br /&gt;
In a perfect world this kiosk system would be connected to the card key door lock system, but we don&#039;t envision that being possible because of political limitations with the UMD card key system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Initial Requirements for Kiosk Protoype ====&lt;br /&gt;
&lt;br /&gt;
* Kiosks to run Touch-screen terminals outside each Sandbox studio (to begin with woodworking studio and prototyping studio)&lt;br /&gt;
** Kiosk will display information about each tool available in that studio including training requirements and links to training materials. &lt;br /&gt;
** Tool information and training requirements should preferably come directly from existing wiki pages to ease updating. Either display wiki pages in embedded web browser or use mediawiki API to retrieve wiki content. &lt;br /&gt;
* Information shown on kiosk would include both publicly viewable (no login required) and private information (requiring login) such as maker&#039;s training accomplishments, etc.&lt;br /&gt;
** Provide quick and simple means for each maker to log in / authenticate with the system (card swipe, phone app, NFC, etc) &lt;br /&gt;
* Subset of information from kiosk system also available via login-secured web page accessible from off campus. Initially, remote functionality to include: &lt;br /&gt;
**ability to reserve a tool for a certain period of time, with the length of time specified by the maker, provided that request is within the limits set for that particular tool, perhaps also taking into account the time of day or day of week. &lt;br /&gt;
*** For example, a laser cutter might be reservible in blocks of 30 minutes with maximum of 3 blocks&lt;br /&gt;
*** A 3d printer might be reservible in blocks of 2 hours with the maximum number of blocks varying depending of day of week and time of day. For example, a Friday afternoon reservation might allow 48 hours total time, while Monday afternoon would only allow 4 hours total.&lt;br /&gt;
*** A more common power tool such as a jigsaw or drill might be reservible in blocks of 30 minutes with a maximum of 2-4 blocks.&lt;br /&gt;
** Some mechanism should be devised to prevent makers from always reserving the maximum number of blocks of time. &lt;br /&gt;
** display calendar view for each of the reservible tools that shows free/reserved blocks for each tool &lt;br /&gt;
** display calendar view for each studio that shows free/reserved status based on the tool being reserved. This view to be used to enforce Covid-19 distancing requirements&lt;/div&gt;</summary>
		<author><name>Gfc</name></author>
	</entry>
	<entry>
		<id>https://sandbox.umd.edu/wiki/index.php?title=Talk:Maker_Space_Manager_System&amp;diff=3430</id>
		<title>Talk:Maker Space Manager System</title>
		<link rel="alternate" type="text/html" href="https://sandbox.umd.edu/wiki/index.php?title=Talk:Maker_Space_Manager_System&amp;diff=3430"/>
		<updated>2026-10-16T18:37:47Z</updated>

		<summary type="html">&lt;p&gt;Gfc: /* Systems Combining Access Control and Space Management (may include elements of CRM, AR/AP, training management, inventory control, etc.) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Makerspace Management Software at UMD Sandbox Makerspace = &lt;br /&gt;
Discussion page related to software for managing the Sandbox Makerspace&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Listing of commercial or open source systems with overlapping functionality =&lt;br /&gt;
== Lists of Systems (other pages like this one)==&lt;br /&gt;
;Hackerspaces.org wishlist of software functions / features. :https://wiki.hackerspaces.org/Software_Wish_List&lt;br /&gt;
&lt;br /&gt;
;List of software from hackerspaces.org: https://wiki.hackerspaces.org/Hackerspace_Software\&lt;br /&gt;
&lt;br /&gt;
;MakerNexus notes on Access Control Systems: https://makernexuswiki.com/wiki/Access_Control_Systems&lt;br /&gt;
&lt;br /&gt;
== Individual Systems ==&lt;br /&gt;
=== Systems Focusing on Access Control (may include door access in addition to machine tool access / lockout) ===&lt;br /&gt;
(see also &#039;&#039;Systems Combining Access Control and Space Management&#039;&#039; below)&lt;br /&gt;
&lt;br /&gt;
:;Nova Labs Nova Pass : https://novapass.nova-labs.org/ (active system home page)&lt;br /&gt;
::(description from Makerfaire: https://nova.makerfaire.com/maker/entry/1224/) &lt;br /&gt;
::(details:https://goo.gl/RVmtiS)&lt;br /&gt;
&lt;br /&gt;
:;RATT - RFID All The Things: New Hampshire&#039;s MakeIT Labs RaspPi based RFID access control system. https://github.com/makeitlabs/ratt (video: https://www.youtube.com/watch?v=erwIPVwXUr8)&lt;br /&gt;
&lt;br /&gt;
:;FATT - FOB all The Things: Ace makerspace (formerly Ace Master Toys) https://www.acemakerspace.org/fatt-project/&lt;br /&gt;
::;Ace Master Toys: Makerspace system based on Google&#039;s AuthBox system  https://github.com/google/makerspace-auth&lt;br /&gt;
::;Ace Makerspace Occupancy System: https://www.youtube.com/watch?v=kemAM8MWIN8&lt;br /&gt;
&lt;br /&gt;
:;Google Makerspace Auth (aka AuthBox): https://github.com/google/makerspace-auth&lt;br /&gt;
&lt;br /&gt;
:;Ithaca Generator AuthBox&lt;br /&gt;
:* https://discuss.ithacagenerator.org/t/makerspace-authbox-on-github/565/3&lt;br /&gt;
:* https://github.com/ithacagenerator/AuthBox&lt;br /&gt;
&lt;br /&gt;
:;Manchester, NH MakerAuth&lt;br /&gt;
:* https://github.com/ManchesterMakerspace/MakerAuth&lt;br /&gt;
&lt;br /&gt;
:;RasPi-Lockout (designed for RIT Construct Makerspace): &lt;br /&gt;
:* https://www.youtube.com/watch?v=aoAdB13IVr0 (YouTube demo)&lt;br /&gt;
:* https://github.com/jaschawilcox/raspi-lockout (GitHub Repo)&lt;br /&gt;
&lt;br /&gt;
:;Build Brighton Access Node: https://www.youtube.com/watch?v=3X64JmTpOcA&lt;br /&gt;
&lt;br /&gt;
:;Open Access Control: Uses the Arduino hardware to build a robust access control and alarm system. https://code.google.com/archive/p/open-access-control/&lt;br /&gt;
&lt;br /&gt;
:;tinkerAccess: The tinkerAccess system is a Raspberry Pi based access control system that can be used to prevent unauthorized users from using devices that require special training. It could also conceivably be used to control electronic lock boxes or doors. The system was originally designed and created by Matt Stallard, Ron Thomas, and Matt Peopping for TinkerMill a makerspace in Longmont, CO. It is continually being maintained and enhanced by other contributors in the community. https://github.com/TinkerMill/tinkerAccess&lt;br /&gt;
&lt;br /&gt;
:;Triple Cities Makerspace ACS System: https://www.tcmakerspace.com/index.php/2019/08/19/project-profile-access-control-system-acs/&lt;br /&gt;
&lt;br /&gt;
:;The MakerBarn in The Woodlands, Texas MACS System: http://koljawindeler.github.io/macs/.  &lt;br /&gt;
::* MACS UI Video: https://www.youtube.com/watch?v=zLidqAPo3Cs &lt;br /&gt;
::* An Introduction to the MACS - Makerspace Access Control System: https://www.youtube.com/watch?v=CI3xxsBM9SE&lt;br /&gt;
&lt;br /&gt;
:;PITT-X Makerspace Access System: https://www.youtube.com/watch?v=2HG-vyV4yoM&lt;br /&gt;
&lt;br /&gt;
:;Member Access System for Pumping Station One :https://github.com/hef/ps1auth&lt;br /&gt;
::https://github.com/bdenne2/ps1auth&lt;br /&gt;
&lt;br /&gt;
:;HACCSY: Hackerspace Access Control and Check in System. Works with Seltzer CRM, running on a Raspberry Pi. https://www.instructables.com/id/HACCSY-Hackerspace-Access-Control-and-Check-in-Sys/&lt;br /&gt;
&lt;br /&gt;
:;Open Access Control Ethernet: https://github.com/zyphlar/Open_Access_Control_Ethernet&lt;br /&gt;
::;Open Source Access Control Web Interface (works with above) :https://github.com/zyphlar/Open-Source-Access-Control-Web-Interface&lt;br /&gt;
&lt;br /&gt;
=== Systems Combining Access Control and Space Management (may include elements of CRM, AR/AP, training management, inventory control, etc.)  ===&lt;br /&gt;
&lt;br /&gt;
;Fabman software :Management software with machine control hardware devices, API, and other features. https://fabman.io/&lt;br /&gt;
&lt;br /&gt;
;Grit Automation Platform. :The Grit Automation Platform is a wireless, local-software workshop automation system designed for woodshops, metal shops, and education labs. Includes Core Features &amp;amp; Solutions for Dust Management, Tool Access Control &amp;amp; Safety, Time &amp;amp; Asset Management, Environmental &amp;amp; Energy Monitoring.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;;Safety Spot :Commercial maker space management software widely used in university maker spaces. https://www.safetyspot.com/ &amp;lt;/s&amp;gt; &amp;lt;b&amp;gt;No Longer Available&amp;lt;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;(UC Berkeley) Makerpass system onepager: https://assets.pubpub.org/hpise2ck/01585588151622.pdf&lt;br /&gt;
&lt;br /&gt;
;Recursion: https://recursion.space Commercial system with free tier. Patented equipment lockout controller.&lt;br /&gt;
&lt;br /&gt;
;UT Austin FabApp/JuiceBox: FabApp is a PHP-based system for managing a makerspace (https://github.com/UTA-FabLab/fabapp). JuiceBox is a Python-based system for providing access control to power tools (https://github.com/UTA-FabLab/JuiceBox).  These and other UTA apps are on the UTA GitHub: https://github.com/UTA-FabLab&lt;br /&gt;
&lt;br /&gt;
;UT Austin Team Lockout: https://blog.uta.edu/cseseniordesign/2019/07/20/lockout/ The Maker Space Lockout System correctly gives access to Machinery only to users that have been adequately briefed on the machinery’s safety and operation. The system will be able to control access for each user according to their level of skill and expertise. Users of The Maker Space Lockout System will also become more equipped to handle and view wear and tear on machines via the data collection purge at the end of each job.&lt;br /&gt;
&lt;br /&gt;
===Not yet Categorized ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:;RFIDDoorLock: https://wiki.melbournemakerspace.org/projects/RFIDDoorLock&lt;br /&gt;
&lt;br /&gt;
:;Byro :https://github.com/byro/byro&lt;br /&gt;
&lt;br /&gt;
:;HSBNE :https://github.com/hsbne/hsbneportal&lt;br /&gt;
&lt;br /&gt;
:;MetalabOS: https://github.com/Metalab/mos/&lt;br /&gt;
&lt;br /&gt;
:;NOMOS (Membership Management):  https://github.com/vhs/nomos&lt;br /&gt;
&lt;br /&gt;
:;MeMaTool: https://github.com/sim0nx/mematool&lt;br /&gt;
&lt;br /&gt;
:;RFID Tool Cabinet: https://www.youtube.com/watch?v=u-L_7pyPcvE&lt;br /&gt;
&lt;br /&gt;
=== Systems Focusing on Space Management without Access Control (may include elements of CRM, AR/AP, training management, inventory control, etc.)  ===&lt;br /&gt;
(Some of these may integrate with other Access Control Systems)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:;WildApricot :Membership management software used by many maker spaces. https://www.wildapricot.com/&lt;br /&gt;
&lt;br /&gt;
:;Seltzer CRM: Open source CRM / membership management software created by a maker space and designed to be extensible and easily modified.  https://wiki.hackerspaces.org/Seltzer_CRM&lt;br /&gt;
&lt;br /&gt;
:;SIMPL: (Software primarily designed to manage coworking spaces with features to support maker spaces) https://smpl.io/software/makerspaces/&lt;br /&gt;
&lt;br /&gt;
:;OpenBravo (ERM/ERP) :https://www.openbravo.com/&lt;br /&gt;
&lt;br /&gt;
:;WikiSpaces :The primary goal of the WikiSpaces project is to provide a &#039;startup&#039; wiki, which is basically a MediaWiki distribution especially for hackerspaces. This distribution will provide a working, up to date, MediaWiki installation, with the commonly needed extensions installed and configured. https://wiki.hackerspaces.org/WikiSpaces&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Not Yet Categorized ====&lt;br /&gt;
&lt;br /&gt;
:;Scholarly article on value of information collected using Maker Lens / MakerPass access system. :  https://people.eecs.berkeley.edu/~eschoop/docs/makerlens.pdf&lt;br /&gt;
&lt;br /&gt;
= ARCHIVED ITEMS BELOW =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==ARCHIVE LabSwipe /MSM System Development History &amp;amp; 2022 Road Map ==&lt;br /&gt;
&lt;br /&gt;
===Development History===&lt;br /&gt;
Would someone on the Labswipe team add to this section?&lt;br /&gt;
&lt;br /&gt;
===Current Release===&lt;br /&gt;
&lt;br /&gt;
===Future Enhancements===&lt;br /&gt;
&lt;br /&gt;
Road Map for future enhancements.  &lt;br /&gt;
&lt;br /&gt;
==== 2021-2022 MSM Rework Outline ====&lt;br /&gt;
*Outline of desired improvements for development work from Summer 2021 to Summer 2022&lt;br /&gt;
===== 2021 =====&lt;br /&gt;
* Improvements to existing UI / core LabSwipe functionality (Fall 21) &lt;br /&gt;
** Improved editing of data entry fields&lt;br /&gt;
** Integration with UMD swipe Identity API to correctly identify new cards swiped into system and close current opportunity for student to use a created ID card with false UID.&lt;br /&gt;
** Integration with UMD swipe API to:&lt;br /&gt;
*** Identify deactivated student ID cards and &lt;br /&gt;
*** Update CardID serial number when a lost ID card is replaced with a new card.&lt;br /&gt;
&lt;br /&gt;
===== 2022 =====&lt;br /&gt;
* Integration with Canvas LMS (Spring 22)&lt;br /&gt;
** Using Canvas API, ensuring API key is well protected using a secrets manager or similar approach&lt;br /&gt;
** Implement a middle layer between MSM and Canvas to track training certifications (similar to a micro credentialing system) in a way that creates an abstraction layer between a canvas course and a training certification.&lt;br /&gt;
** See &#039;&#039;&#039;Integration with ELMS/Canvas Learning Management System&#039;&#039;&#039; below for detail&lt;br /&gt;
&lt;br /&gt;
===== Overview of Enhancements  =====&lt;br /&gt;
*Additional Enhancements not yet implemented (many not yet scheduled).&lt;br /&gt;
** Integration with a tool access control system (such as Safety Spot, The Google system used at Ace Makerspace and elsewhere, or the Nova Pass system)&lt;br /&gt;
*** See &#039;&#039;&#039;Tool Access Control&#039;&#039;&#039; below for details&lt;br /&gt;
*** This integration would require certain tools flagged in system to have a swipe card reader at the tool which verifies training before tool will operate. &lt;br /&gt;
*** While extending MSM to support tool access control, modify it as well to allow a particular makerspace to set up a two-tier implementation of MSM where initial swipe allows entry into makerspace without selecting a specific tool (but perhaps requires the selection of a studio or category of tool) and subsequent swipe was required to select a particular tool. &lt;br /&gt;
** Tool reservation / tool-in-use flagging&lt;br /&gt;
** Tool Loan (away from makerspace)&lt;br /&gt;
** Student charging system (allow students to purchase materials and tooling using student ID or credit card.&lt;br /&gt;
** Faculty charging system (allow faculty / researchers to purchase materials using KFC account #)&lt;br /&gt;
** Matching of maker skills between students and managers. &lt;br /&gt;
** Campus-wide inventory of tools at each makerspace with ability for students to search for a particular tool (similar to MIT Manus system)&lt;br /&gt;
&lt;br /&gt;
Many of these are presented in more detail below:&lt;br /&gt;
&lt;br /&gt;
==== Integration with ELMS/Canvas Learning Management System====&lt;br /&gt;
Currently Labswipe stores training accomplishments in a Google Sheet. This needs to be manually updated. A brief look at the sheet shows very few of our makerspaces are making these manual updates. &lt;br /&gt;
&lt;br /&gt;
Sandbox implemented makerspace training in ELMS/Canvas in 2019. Initially we were manually updating the Labswipe sheet from Canvas but this became very time consuming. We wrote a Canvas API query tool that re-formats the Canvas results to make the updates a bit easier. We considered automating the Labswipe sheet update process but discontinued our efforts on this when it was decided to move the Labswipe back end from google sheets to AWS.&lt;br /&gt;
&lt;br /&gt;
Adding a badging or micro-credentialing plugin to Canvas was attempted in 2019-2020. Sandbox hoped that by adding this capability to Canvas we could avoid concerns about running queries directly against the Canvas system (which contains protected information about students) While the primary benefit would be isolating us from FERPA concerns, the badging system Would also simplify our queries (especially for training completed at a different makerspace), allow us to track training not done in Canvas (such as Welding or other training requiring direct, hands-on instruction), and also provide additional ways to gamify training (for example by allowing training tiers, &#039;leveling up&#039;, etc.) Our request to add a badging plugin to Canvas was rejected by DIT. We understand that a request to add a different badging system has been made by a different department and is still under consideration. &lt;br /&gt;
    &lt;br /&gt;
*We&#039;d like future versions of Labswipe to have the capability to update training accomplishments from Canvas. &lt;br /&gt;
&lt;br /&gt;
*Ideally this update would happen every time a maker swiped in to the system. &lt;br /&gt;
&lt;br /&gt;
*The system should support tracking of training that was completed at other UMD MSI makerspaces to support the MSI plans to open up access to makerspaces across campus. For example, a maker who completed Glowforge laser training at one of the library makerspaces should be able to use the Sandbox Glowforge without additional training.&lt;br /&gt;
&lt;br /&gt;
==== Improve quantity and quality of tool usage data being gathered. ====&lt;br /&gt;
&lt;br /&gt;
Currently, the MSM system only asks each makerspace visitor which tools they will be using when they first swipe in at the front door. We&#039;ve found this arrangement results in distorted statistics as many users just select the first tool they see on the list, don&#039;t take the time to check off every tool they intend to use, and often end up using tools they hadn&#039;t intended when they first arrived. &lt;br /&gt;
&lt;br /&gt;
An improvement would be to add additional data gathering points in the makerspace. For example, by adding touch screens with swipe readers in each workshop or tool storage area we could encourage makers to log every tool they use by making the process more convenient. Another approach would be to use a mobile web app to log tool usage by scanning each tool&#039;s barcode or otherwise selecting the tool. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Several of the entries below relate to our goal of gathering more data on tool usage. &lt;br /&gt;
*For example, the safety-driven requirement to add Tool Access Control lockout devices to dangerous tools (such as chop saws and lathes) will also help us gather more detailed tool usage data for those dangerous tools. &lt;br /&gt;
*Adding an advanced tool reservation capability will add additional usage data for popular tools such as 3D printers and laser cutters. &lt;br /&gt;
*Rather than add expensive lockout devices to all tools, we discuss the possible idea of adding Tool-In-Use flagging.&lt;br /&gt;
&lt;br /&gt;
All of these work together to not only better track tool usage but also to improve the user experience and reduce frustration, increase compliance with training requirements, and ensue our compliance with campus safety rules.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Tool Access Control ====&lt;br /&gt;
&lt;br /&gt;
Once the MSM system is able to look up tool training certification information using the ELMS/Canvas APAI. we&#039;d like to add on to MSM additional hardware and software that will directly control use of certain tools that are deemed to be dangerous (such as a CNC router, milling machine, band saw, etc.) or other tools that, while not particularly dangerous, require specific knowledge to operate correctly (such as laser cutter, SLA 3D printer, etc) to avoid damaging the tool. &lt;br /&gt;
&lt;br /&gt;
* This access control system should be implemented as a separate hardware and software system connected to each tool we wish to have this added level of access control. While we envision this being implemented using commercially-available micro controllers (such as an Arduino-compatible microcontroller) or single board computers (such as a Raspberry Pi computer) any other implementation is acceptable so long as it provides a low cost per controlled machine tool.&lt;br /&gt;
&lt;br /&gt;
* This access control capability would require each maker to swipe their UMD ID before using that tool. Use of a UMD ID is preferred since all students and staff already carry this with them. Other authentication mechanism such as RFID or other ID card that works by proximity instead of requiring a physical swipe, or NFC or similar systems using a person&#039;s cell phone. For systems not using UMD ID magnetic stripe cards, the cost of additional cards, software, etc must be factored into our decision to use that system.  &lt;br /&gt;
&lt;br /&gt;
* The system would look up the makers ID in a central database, and if able to verify that the maker is trained and certified to use the tool, the system would allow use of that tool. The preferred central database would be the existing UMD ELMS/Canvas Learning Management System or a system (such as a micro credentialing or badging system) that is connected to and synchronized with the ELMS/Canvas system. Systems that provide a central database system other than ELMS / Canvas must provide an automatic mechanism to update the database using the ELMS / Canvas API.  &lt;br /&gt;
&lt;br /&gt;
* The means to allow use of the tool should be by:&lt;br /&gt;
** Switching on power through a relay or contactor controlled by the software logic &lt;br /&gt;
** Enabling a logical +5 volt signal to be read by the tool&#039;s existing controller (such as an ENABLE signal)&lt;br /&gt;
** By deactivating the tool&#039;s e-stop circuit, restoring a cabinet interlock circuit, or other mechanism by closing or opening a relay contacts. (i.e. dry contact closure)&lt;br /&gt;
** Several different approaches (ideally all of those listed above) should be provided to adapt the system to the widest variety of machine tools and their control systems.&lt;br /&gt;
* The system should provide some way to prevent the maker from walking away and leaving the tool in an operational state. Some research and discussion are needed to determine the best approach for this but a simple example would be by setting a timeout after which the system requires the user to verify they are present by pushing a button or re-swiping their ID. This capability should be settable per-tool.&lt;br /&gt;
* For tools enabled by simply applying power, the system should prevent these tools from starting up immediately on authentication to prevent unsafe situations. For example, by using a magnetic motor starter.&lt;br /&gt;
* The system should ideally store locally a list of the IDs for all makers who recently were authenticated to use the tool (or store a list of all authorized users, updated periodically) This is to permit use of the tool control system even if the central database is unavailable or if network connectivity has failed.&lt;br /&gt;
* A display on each access control station would ideally display information such as the name of the current authorized user (or last user if tool is idle), length of tool use (or countdown to expiration), connectivity check, etc.&lt;br /&gt;
&lt;br /&gt;
==== System Support for Enforcing Buddy System ====&lt;br /&gt;
&lt;br /&gt;
UMD ESSR safety rule changes require certain tools to be used with the &amp;quot;buddy system&amp;quot; In short, the &amp;quot;buddy system&amp;quot; prohibits certain dangerous tools to be used by a person alone in the workshop. Another person must be close enough to see and hear the tool being used so they can render aid and call for assistance in case of injury.&lt;br /&gt;
&lt;br /&gt;
The MSM system should provide support for enforcing the buddy system. This support could entail requiring a second person to swipe in when using certain tools. This requirement might be limited to certain times of day (for example during the evening or when staff is reduced. The requirements for buddy system support are not yet clear, this is a placeholder.&lt;br /&gt;
&lt;br /&gt;
==== Tool-In-Use Flagging ====&lt;br /&gt;
&lt;br /&gt;
An additional capability desired is the ability to flag the status of a tool as &#039;&#039;&#039;&#039;&#039;In Use&#039;&#039;&#039;&#039;&#039;, &#039;&#039;&#039;&#039;&#039;Available for Use&#039;&#039;&#039;&#039;&#039;, or other statuses such as &#039;&#039;&#039;&#039;&#039;Awaiting Repair&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;Out of Service&#039;&#039;&#039;&#039;&#039; Since demand for many tools is high and a student may be frustrated if they travel to a makerspace only to find a particular tool unavailable, it would be helpful for the system to flag tools that are not available for use because they are being used by someone else or are broken or otherwise unavailable. &lt;br /&gt;
&lt;br /&gt;
* For tools that are not in service, a makerspace staff member should be able to change the status through a web interface. &lt;br /&gt;
** The system should record a date/time stamp for when the tool was taken out of service and a date stamp for an expected return-to-service. &lt;br /&gt;
*For tools being used by a maker, the MSM system should provide a mechanism for students to quickly and easily select a tool for use. This capability should allow the use of that tool for a fixed period of time, ideally this time period would differ for different types of tools (for example, a hammer would be flagged as in-use for 1-hour intervals while a sewing machine might have longer intervals such as 3 hours.&lt;br /&gt;
** The Tool-in-Use flag feature would verify the maker has completed any necessary training.&lt;br /&gt;
** When a different maker wishes to use that tool, they would see that the tool was currently in use by another maker and would also see the time the tool is expected to be available for their use. &lt;br /&gt;
** If a tool is still being used by that maker after the check-in time has passed, the new maker would have the right to be the next to use the tool.&lt;br /&gt;
** Ideally, the system would send an SMS message or some other sort of notification that the maker&#039;s use time has expired.&lt;br /&gt;
** Some examples of quick and easy mechanisms for makers to lag that they are using a tool &lt;br /&gt;
*** A touch screen kiosk in each workshop or tool storage area.&lt;br /&gt;
*** A QR code on each tool or on the storage location for each tool. The QR code would be scanned by the maker using the tool&lt;br /&gt;
*** A mobile web app used by the maker.&lt;br /&gt;
&lt;br /&gt;
Note that the Tool-In-Use Flag Feature will provide a great deal of useful information about the relative popularity of each tool and could provide data to support the purchase of additional tools.&lt;br /&gt;
&lt;br /&gt;
==== Tool Check-Out / Check-In (for use in makerspace) ====&lt;br /&gt;
See &#039;&#039;&#039;Tool-In-Use flagging&#039;&#039;&#039; above. &#039;Check-In&#039; and &#039;Check-Out&#039; functions would be used by a student when they take a tool from storage to their work area or return it to storage. Note that Check-Out is different than Tool-Loan which entails removing a tool from the makerspace.&lt;br /&gt;
&lt;br /&gt;
==== Tool Reservation ====&lt;br /&gt;
&lt;br /&gt;
Several tools (such as laser cutters or 3D printers are popular and makers often wish to sign-up in advance for a window of time to use the tool. In the case of 3D printers, a print job could run for many hours, or even multiple days. It would be useful for MSM to allow makers to reserve time on a tool and allow other makers to see that the tool is reserved and unavailable until a given time.&lt;br /&gt;
&lt;br /&gt;
Reservations block-out for class times or maintenance windows.&lt;br /&gt;
&lt;br /&gt;
==== Manager / Staff skills matching ====&lt;br /&gt;
Provide a new capability in MSM to allow staff and volunteer managers to swipe in and out while indicating if they are working or just using the space as a maker. &lt;br /&gt;
&lt;br /&gt;
The system should provide a display of all on-duty managers and staff, displaying each manager&#039;s photo and list of each&#039;s skills / specialties. This to help makers using the space know who to best ask questions about a particular tool or technique. &lt;br /&gt;
&lt;br /&gt;
====Resale of maker materials, tooling, etc.====&lt;br /&gt;
&lt;br /&gt;
We would like to be able to resell materials such as sheet goods (plywood, MDF, acrylic, etc.) 3D printer filament, tooling (CNC router bits, milling machine tooling, etc.) This is a service to makers who don&#039;t necessarily have the ability to transport physically large materials.&lt;br /&gt;
&lt;br /&gt;
Further definition is needed to specify how payments will be taken. We don&#039;t want to accept cash and are uneasy about volunteer managers having access to maker credit/debit cards. Ideally, payments would be charged against a maker&#039;s account balance. Is it possible to use an existing student payment system such as Terrapin Express?&lt;br /&gt;
&lt;br /&gt;
=== FERPA Concerns ===&lt;br /&gt;
Since LabSwipe data is student data there may be concern that some of the data may fall under the protection of the Family Educational Rights and Privacy Act (FERPA). FERPA requires protection of &amp;quot;Personally Identifiable Information&amp;quot; (PII) from release to 3rd parties. Anyone using student PII must take steps to protect this from release, even through the action of a student working in the makerspace. FERPA exempts from the protection requirement certain &amp;quot;Directory Information&amp;quot; that is commonly used. It requires each university to identify what information is considered &amp;quot;Directory Information&amp;quot; &lt;br /&gt;
&lt;br /&gt;
UMD defines their PII and Directory Information here: https://academiccatalog.umd.edu/undergraduate/university-policies/ In July 2020 this policy defined UMD PII &amp;amp; Directory Information as:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;quot;Personally identifiable information&amp;quot; or &amp;quot;PII&amp;quot; means data or information which includes, but is not limited to:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*a student’s name;&lt;br /&gt;
*a name of a student’s parent or family member&lt;br /&gt;
*an address of a student or a student’s family; &lt;br /&gt;
*a personal identifier, such as a social security number, University Identification Number (UID), or biometric record; &lt;br /&gt;
*other indirect identifiers, such as mother’s maiden name; &lt;br /&gt;
*other information that alone, or in combination, is linked or linkable to a specific student and that would allow a reasonable person in the UMD community who does not have personal knowledge of the relevant circumstances to identify the student with reasonable certainty; or information requested by a person who UMD reasonably believes knows the identity of the student to whom the education record relates.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;quot;Directory Information&amp;quot; means information which would generally not be considered harmful or an invasion of privacy if disclosed. It includes, but is not limited to, a student’s: &lt;br /&gt;
&lt;br /&gt;
*name, &lt;br /&gt;
*address, &lt;br /&gt;
*telephone listing, &lt;br /&gt;
*e-mail address, &lt;br /&gt;
*date and place of birth, &lt;br /&gt;
*major field of study, &lt;br /&gt;
*full-time/part-time status, &lt;br /&gt;
*participation in officially recognized activities and sports, &lt;br /&gt;
*weight and height of members of athletic teams, &lt;br /&gt;
*dates of attendance, &lt;br /&gt;
*degrees and awards received, and &lt;br /&gt;
*the most recent previous educational agency or institution attended&#039;&#039;   &lt;br /&gt;
&lt;br /&gt;
Note that UID is listed as PII but not excluded as &amp;quot;Directory Information&amp;quot; as is done at other institutions, especially those that also print UID on campus ID cards.&lt;br /&gt;
&lt;br /&gt;
= Parallel Development of Sandbox Kiosk Prototype =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Kiosk System Test&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sandbox hopes to continue the development and testing of a &#039;&#039;&#039;&#039;&#039;Kiosk System&#039;&#039;&#039;&#039;&#039; in Spring 2022. The kiosk system is envisioned as a way to improve tool usage tracking and replace the tool identification signage on each studio door. Each studio would have a touch screen computer system on or near the door that displays a visual listing of tools in that studio. Makers would be asked to select the tool they wanted to use. The kiosk would verify that the maker had completed any required training on that tool. &lt;br /&gt;
&lt;br /&gt;
By asking the maker to check the tool back in, we would be able to collect additional information about usage of individual tools as well as provide remote visibility of tool availability to makers planning on visiting the makerspace. &lt;br /&gt;
&lt;br /&gt;
Eventually we envision the kiosk system having additional functionality including  tool and studio reservation, broken tool tagging, identifying tool experts, etc.&lt;br /&gt;
&lt;br /&gt;
One possible initiative we could undertake would be the development of a prototype kiosk system for use in the various studios at Sandbox. This prototype would allow us to test ideas for MSM improvements and more quickly iterate through design concepts without having to modify the core MSM system. It would provide a working prototype useful for demonstrating our needs to the MSM development team, or to demonstrate our requirements if MSI decides to invest in an externally-developed system.&lt;br /&gt;
==== Overview of Sandbox Kiosk System ====&lt;br /&gt;
The existing MSM / LabSwipe system assumes each lab will be a single room or small number of related spaces that are hierarchically flat. Sandbox is a group of six different studios, each with a different type of tool. This leads to some confusion and a slowdown each time a maker checks in. If the tools are grouped alphabetically, a maker interested in electronics might check that he plans to use a &amp;quot;multimeter&amp;quot; then have to scroll past &amp;quot;multitool&amp;quot; and 3 different &amp;quot;sander&amp;quot; entries related to woodworking, 4 different types of &amp;quot;sewing machine&amp;quot; in the crafting studio before finding &amp;quot;soldering iron&amp;quot; a few pages down. We&#039;ve re-ordered the list by studio, which has helped quite a bit but makers using the woodworking studio have to scroll down several screens to find the start of tools they may want to use. While this may be fixable with some tweaks to the existing system UI, we&#039;ve uncovered other issues that we&#039;d like to address as well.&lt;br /&gt;
&lt;br /&gt;
In a review of system usage for the fall semester, we discovered that most students select a single tool regardless of the length of their visit. A maker may swipe in and select &amp;quot;laser cutter&amp;quot; as the tool they will be using but almost never returns to the front desk if (for example) they need to use a circular saw to trim their stock to the correct size, or need to use a drill to add a couple of holes to their project, or a sander to prepare it for finishing. Individually these failures aren&#039;t important but collectively they degrade the quality of data we hope to collect on tool usage and perhaps more importantly make it more difficult for us to report other statistics such as length of visit. Also, this avoidance bypasses the very important checking of training credentials that is a critical reason for having this system in the first place. Indeed, we found that a considerable number of students would select &amp;quot;no tool, table use only&amp;quot; when that option was made available. &lt;br /&gt;
&lt;br /&gt;
To improve this situation, we&#039;d like to move tool selection part of MSM closer to the point where the tool is used. Makers would still swipe in to the space when entering, but would not be asked whaic tools they plan to use. The extreme case of this would be to equip each tool with a sensor that indicated use and requested the maker picking up the tool to authenticate and verify their certification to use that tool. This would likely be too expensive to be practical except on the most hazardous or expensive tools such as milling machines, laser cutters, etc. What we propose and would like to test using the concept of kiosks, would be moving tool check-out to each individual studio. We envision a touch-screen display at the door of each studio. While the touch screen could be a self-contatrined system such as a iPad tablet, we are more inclined to use small computers such as the RaspberryPi. &lt;br /&gt;
&lt;br /&gt;
In a perfect world this kiosk system would be connected to the card key door lock system, but we don&#039;t envision that being possible because of political limitations with the UMD card key system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Initial Requirements for Kiosk Protoype ====&lt;br /&gt;
&lt;br /&gt;
* Kiosks to run Touch-screen terminals outside each Sandbox studio (to begin with woodworking studio and prototyping studio)&lt;br /&gt;
** Kiosk will display information about each tool available in that studio including training requirements and links to training materials. &lt;br /&gt;
** Tool information and training requirements should preferably come directly from existing wiki pages to ease updating. Either display wiki pages in embedded web browser or use mediawiki API to retrieve wiki content. &lt;br /&gt;
* Information shown on kiosk would include both publicly viewable (no login required) and private information (requiring login) such as maker&#039;s training accomplishments, etc.&lt;br /&gt;
** Provide quick and simple means for each maker to log in / authenticate with the system (card swipe, phone app, NFC, etc) &lt;br /&gt;
* Subset of information from kiosk system also available via login-secured web page accessible from off campus. Initially, remote functionality to include: &lt;br /&gt;
**ability to reserve a tool for a certain period of time, with the length of time specified by the maker, provided that request is within the limits set for that particular tool, perhaps also taking into account the time of day or day of week. &lt;br /&gt;
*** For example, a laser cutter might be reservible in blocks of 30 minutes with maximum of 3 blocks&lt;br /&gt;
*** A 3d printer might be reservible in blocks of 2 hours with the maximum number of blocks varying depending of day of week and time of day. For example, a Friday afternoon reservation might allow 48 hours total time, while Monday afternoon would only allow 4 hours total.&lt;br /&gt;
*** A more common power tool such as a jigsaw or drill might be reservible in blocks of 30 minutes with a maximum of 2-4 blocks.&lt;br /&gt;
** Some mechanism should be devised to prevent makers from always reserving the maximum number of blocks of time. &lt;br /&gt;
** display calendar view for each of the reservible tools that shows free/reserved blocks for each tool &lt;br /&gt;
** display calendar view for each studio that shows free/reserved status based on the tool being reserved. This view to be used to enforce Covid-19 distancing requirements&lt;/div&gt;</summary>
		<author><name>Gfc</name></author>
	</entry>
	<entry>
		<id>https://sandbox.umd.edu/wiki/index.php?title=Talk:Maker_Space_Manager_System&amp;diff=3429</id>
		<title>Talk:Maker Space Manager System</title>
		<link rel="alternate" type="text/html" href="https://sandbox.umd.edu/wiki/index.php?title=Talk:Maker_Space_Manager_System&amp;diff=3429"/>
		<updated>2026-10-16T18:35:02Z</updated>

		<summary type="html">&lt;p&gt;Gfc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Makerspace Management Software at UMD Sandbox Makerspace = &lt;br /&gt;
Discussion page related to software for managing the Sandbox Makerspace&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Listing of commercial or open source systems with overlapping functionality =&lt;br /&gt;
== Lists of Systems (other pages like this one)==&lt;br /&gt;
;Hackerspaces.org wishlist of software functions / features. :https://wiki.hackerspaces.org/Software_Wish_List&lt;br /&gt;
&lt;br /&gt;
;List of software from hackerspaces.org: https://wiki.hackerspaces.org/Hackerspace_Software\&lt;br /&gt;
&lt;br /&gt;
;MakerNexus notes on Access Control Systems: https://makernexuswiki.com/wiki/Access_Control_Systems&lt;br /&gt;
&lt;br /&gt;
== Individual Systems ==&lt;br /&gt;
=== Systems Focusing on Access Control (may include door access in addition to machine tool access / lockout) ===&lt;br /&gt;
(see also &#039;&#039;Systems Combining Access Control and Space Management&#039;&#039; below)&lt;br /&gt;
&lt;br /&gt;
:;Nova Labs Nova Pass : https://novapass.nova-labs.org/ (active system home page)&lt;br /&gt;
::(description from Makerfaire: https://nova.makerfaire.com/maker/entry/1224/) &lt;br /&gt;
::(details:https://goo.gl/RVmtiS)&lt;br /&gt;
&lt;br /&gt;
:;RATT - RFID All The Things: New Hampshire&#039;s MakeIT Labs RaspPi based RFID access control system. https://github.com/makeitlabs/ratt (video: https://www.youtube.com/watch?v=erwIPVwXUr8)&lt;br /&gt;
&lt;br /&gt;
:;FATT - FOB all The Things: Ace makerspace (formerly Ace Master Toys) https://www.acemakerspace.org/fatt-project/&lt;br /&gt;
::;Ace Master Toys: Makerspace system based on Google&#039;s AuthBox system  https://github.com/google/makerspace-auth&lt;br /&gt;
::;Ace Makerspace Occupancy System: https://www.youtube.com/watch?v=kemAM8MWIN8&lt;br /&gt;
&lt;br /&gt;
:;Google Makerspace Auth (aka AuthBox): https://github.com/google/makerspace-auth&lt;br /&gt;
&lt;br /&gt;
:;Ithaca Generator AuthBox&lt;br /&gt;
:* https://discuss.ithacagenerator.org/t/makerspace-authbox-on-github/565/3&lt;br /&gt;
:* https://github.com/ithacagenerator/AuthBox&lt;br /&gt;
&lt;br /&gt;
:;Manchester, NH MakerAuth&lt;br /&gt;
:* https://github.com/ManchesterMakerspace/MakerAuth&lt;br /&gt;
&lt;br /&gt;
:;RasPi-Lockout (designed for RIT Construct Makerspace): &lt;br /&gt;
:* https://www.youtube.com/watch?v=aoAdB13IVr0 (YouTube demo)&lt;br /&gt;
:* https://github.com/jaschawilcox/raspi-lockout (GitHub Repo)&lt;br /&gt;
&lt;br /&gt;
:;Build Brighton Access Node: https://www.youtube.com/watch?v=3X64JmTpOcA&lt;br /&gt;
&lt;br /&gt;
:;Open Access Control: Uses the Arduino hardware to build a robust access control and alarm system. https://code.google.com/archive/p/open-access-control/&lt;br /&gt;
&lt;br /&gt;
:;tinkerAccess: The tinkerAccess system is a Raspberry Pi based access control system that can be used to prevent unauthorized users from using devices that require special training. It could also conceivably be used to control electronic lock boxes or doors. The system was originally designed and created by Matt Stallard, Ron Thomas, and Matt Peopping for TinkerMill a makerspace in Longmont, CO. It is continually being maintained and enhanced by other contributors in the community. https://github.com/TinkerMill/tinkerAccess&lt;br /&gt;
&lt;br /&gt;
:;Triple Cities Makerspace ACS System: https://www.tcmakerspace.com/index.php/2019/08/19/project-profile-access-control-system-acs/&lt;br /&gt;
&lt;br /&gt;
:;The MakerBarn in The Woodlands, Texas MACS System: http://koljawindeler.github.io/macs/.  &lt;br /&gt;
::* MACS UI Video: https://www.youtube.com/watch?v=zLidqAPo3Cs &lt;br /&gt;
::* An Introduction to the MACS - Makerspace Access Control System: https://www.youtube.com/watch?v=CI3xxsBM9SE&lt;br /&gt;
&lt;br /&gt;
:;PITT-X Makerspace Access System: https://www.youtube.com/watch?v=2HG-vyV4yoM&lt;br /&gt;
&lt;br /&gt;
:;Member Access System for Pumping Station One :https://github.com/hef/ps1auth&lt;br /&gt;
::https://github.com/bdenne2/ps1auth&lt;br /&gt;
&lt;br /&gt;
:;HACCSY: Hackerspace Access Control and Check in System. Works with Seltzer CRM, running on a Raspberry Pi. https://www.instructables.com/id/HACCSY-Hackerspace-Access-Control-and-Check-in-Sys/&lt;br /&gt;
&lt;br /&gt;
:;Open Access Control Ethernet: https://github.com/zyphlar/Open_Access_Control_Ethernet&lt;br /&gt;
::;Open Source Access Control Web Interface (works with above) :https://github.com/zyphlar/Open-Source-Access-Control-Web-Interface&lt;br /&gt;
&lt;br /&gt;
=== Systems Combining Access Control and Space Management (may include elements of CRM, AR/AP, training management, inventory control, etc.)  ===&lt;br /&gt;
&lt;br /&gt;
;Fabman software :Management software with machine control hardware devices, API, and other features. https://fabman.io/&lt;br /&gt;
&lt;br /&gt;
;Grit Automation Platform. :The Grit Automation Platform is a wireless, local-software workshop automation system designed for woodshops, metal shops, and education labs. Includes Core Features &amp;amp; Solutions for Dust Management, Tool Access Control &amp;amp; Safety, Time &amp;amp; Asset Management, Environmental &amp;amp; Energy Monitoring.&lt;br /&gt;
&lt;br /&gt;
;Safety Spot :Commercial maker space management software widely used in university maker spaces. https://www.safetyspot.com/ &lt;br /&gt;
&lt;br /&gt;
;(UC Berkeley) Makerpass system onepager: https://assets.pubpub.org/hpise2ck/01585588151622.pdf&lt;br /&gt;
&lt;br /&gt;
;Recursion: https://recursion.space Commercial system with free tier. Patented equipment lockout controller.&lt;br /&gt;
&lt;br /&gt;
;UT Austin FabApp/JuiceBox: FabApp is a PHP-based system for managing a makerspace (https://github.com/UTA-FabLab/fabapp). JuiceBox is a Python-based system for providing access control to power tools (https://github.com/UTA-FabLab/JuiceBox).  These and other UTA apps are on the UTA GitHub: https://github.com/UTA-FabLab&lt;br /&gt;
&lt;br /&gt;
;UT Austin Team Lockout: https://blog.uta.edu/cseseniordesign/2019/07/20/lockout/ The Maker Space Lockout System correctly gives access to Machinery only to users that have been adequately briefed on the machinery’s safety and operation. The system will be able to control access for each user according to their level of skill and expertise. Users of The Maker Space Lockout System will also become more equipped to handle and view wear and tear on machines via the data collection purge at the end of each job.&lt;br /&gt;
&lt;br /&gt;
===Not yet Categorized ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:;RFIDDoorLock: https://wiki.melbournemakerspace.org/projects/RFIDDoorLock&lt;br /&gt;
&lt;br /&gt;
:;Byro :https://github.com/byro/byro&lt;br /&gt;
&lt;br /&gt;
:;HSBNE :https://github.com/hsbne/hsbneportal&lt;br /&gt;
&lt;br /&gt;
:;MetalabOS: https://github.com/Metalab/mos/&lt;br /&gt;
&lt;br /&gt;
:;NOMOS (Membership Management):  https://github.com/vhs/nomos&lt;br /&gt;
&lt;br /&gt;
:;MeMaTool: https://github.com/sim0nx/mematool&lt;br /&gt;
&lt;br /&gt;
:;RFID Tool Cabinet: https://www.youtube.com/watch?v=u-L_7pyPcvE&lt;br /&gt;
&lt;br /&gt;
=== Systems Focusing on Space Management without Access Control (may include elements of CRM, AR/AP, training management, inventory control, etc.)  ===&lt;br /&gt;
(Some of these may integrate with other Access Control Systems)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:;WildApricot :Membership management software used by many maker spaces. https://www.wildapricot.com/&lt;br /&gt;
&lt;br /&gt;
:;Seltzer CRM: Open source CRM / membership management software created by a maker space and designed to be extensible and easily modified.  https://wiki.hackerspaces.org/Seltzer_CRM&lt;br /&gt;
&lt;br /&gt;
:;SIMPL: (Software primarily designed to manage coworking spaces with features to support maker spaces) https://smpl.io/software/makerspaces/&lt;br /&gt;
&lt;br /&gt;
:;OpenBravo (ERM/ERP) :https://www.openbravo.com/&lt;br /&gt;
&lt;br /&gt;
:;WikiSpaces :The primary goal of the WikiSpaces project is to provide a &#039;startup&#039; wiki, which is basically a MediaWiki distribution especially for hackerspaces. This distribution will provide a working, up to date, MediaWiki installation, with the commonly needed extensions installed and configured. https://wiki.hackerspaces.org/WikiSpaces&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Not Yet Categorized ====&lt;br /&gt;
&lt;br /&gt;
:;Scholarly article on value of information collected using Maker Lens / MakerPass access system. :  https://people.eecs.berkeley.edu/~eschoop/docs/makerlens.pdf&lt;br /&gt;
&lt;br /&gt;
= ARCHIVED ITEMS BELOW =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==ARCHIVE LabSwipe /MSM System Development History &amp;amp; 2022 Road Map ==&lt;br /&gt;
&lt;br /&gt;
===Development History===&lt;br /&gt;
Would someone on the Labswipe team add to this section?&lt;br /&gt;
&lt;br /&gt;
===Current Release===&lt;br /&gt;
&lt;br /&gt;
===Future Enhancements===&lt;br /&gt;
&lt;br /&gt;
Road Map for future enhancements.  &lt;br /&gt;
&lt;br /&gt;
==== 2021-2022 MSM Rework Outline ====&lt;br /&gt;
*Outline of desired improvements for development work from Summer 2021 to Summer 2022&lt;br /&gt;
===== 2021 =====&lt;br /&gt;
* Improvements to existing UI / core LabSwipe functionality (Fall 21) &lt;br /&gt;
** Improved editing of data entry fields&lt;br /&gt;
** Integration with UMD swipe Identity API to correctly identify new cards swiped into system and close current opportunity for student to use a created ID card with false UID.&lt;br /&gt;
** Integration with UMD swipe API to:&lt;br /&gt;
*** Identify deactivated student ID cards and &lt;br /&gt;
*** Update CardID serial number when a lost ID card is replaced with a new card.&lt;br /&gt;
&lt;br /&gt;
===== 2022 =====&lt;br /&gt;
* Integration with Canvas LMS (Spring 22)&lt;br /&gt;
** Using Canvas API, ensuring API key is well protected using a secrets manager or similar approach&lt;br /&gt;
** Implement a middle layer between MSM and Canvas to track training certifications (similar to a micro credentialing system) in a way that creates an abstraction layer between a canvas course and a training certification.&lt;br /&gt;
** See &#039;&#039;&#039;Integration with ELMS/Canvas Learning Management System&#039;&#039;&#039; below for detail&lt;br /&gt;
&lt;br /&gt;
===== Overview of Enhancements  =====&lt;br /&gt;
*Additional Enhancements not yet implemented (many not yet scheduled).&lt;br /&gt;
** Integration with a tool access control system (such as Safety Spot, The Google system used at Ace Makerspace and elsewhere, or the Nova Pass system)&lt;br /&gt;
*** See &#039;&#039;&#039;Tool Access Control&#039;&#039;&#039; below for details&lt;br /&gt;
*** This integration would require certain tools flagged in system to have a swipe card reader at the tool which verifies training before tool will operate. &lt;br /&gt;
*** While extending MSM to support tool access control, modify it as well to allow a particular makerspace to set up a two-tier implementation of MSM where initial swipe allows entry into makerspace without selecting a specific tool (but perhaps requires the selection of a studio or category of tool) and subsequent swipe was required to select a particular tool. &lt;br /&gt;
** Tool reservation / tool-in-use flagging&lt;br /&gt;
** Tool Loan (away from makerspace)&lt;br /&gt;
** Student charging system (allow students to purchase materials and tooling using student ID or credit card.&lt;br /&gt;
** Faculty charging system (allow faculty / researchers to purchase materials using KFC account #)&lt;br /&gt;
** Matching of maker skills between students and managers. &lt;br /&gt;
** Campus-wide inventory of tools at each makerspace with ability for students to search for a particular tool (similar to MIT Manus system)&lt;br /&gt;
&lt;br /&gt;
Many of these are presented in more detail below:&lt;br /&gt;
&lt;br /&gt;
==== Integration with ELMS/Canvas Learning Management System====&lt;br /&gt;
Currently Labswipe stores training accomplishments in a Google Sheet. This needs to be manually updated. A brief look at the sheet shows very few of our makerspaces are making these manual updates. &lt;br /&gt;
&lt;br /&gt;
Sandbox implemented makerspace training in ELMS/Canvas in 2019. Initially we were manually updating the Labswipe sheet from Canvas but this became very time consuming. We wrote a Canvas API query tool that re-formats the Canvas results to make the updates a bit easier. We considered automating the Labswipe sheet update process but discontinued our efforts on this when it was decided to move the Labswipe back end from google sheets to AWS.&lt;br /&gt;
&lt;br /&gt;
Adding a badging or micro-credentialing plugin to Canvas was attempted in 2019-2020. Sandbox hoped that by adding this capability to Canvas we could avoid concerns about running queries directly against the Canvas system (which contains protected information about students) While the primary benefit would be isolating us from FERPA concerns, the badging system Would also simplify our queries (especially for training completed at a different makerspace), allow us to track training not done in Canvas (such as Welding or other training requiring direct, hands-on instruction), and also provide additional ways to gamify training (for example by allowing training tiers, &#039;leveling up&#039;, etc.) Our request to add a badging plugin to Canvas was rejected by DIT. We understand that a request to add a different badging system has been made by a different department and is still under consideration. &lt;br /&gt;
    &lt;br /&gt;
*We&#039;d like future versions of Labswipe to have the capability to update training accomplishments from Canvas. &lt;br /&gt;
&lt;br /&gt;
*Ideally this update would happen every time a maker swiped in to the system. &lt;br /&gt;
&lt;br /&gt;
*The system should support tracking of training that was completed at other UMD MSI makerspaces to support the MSI plans to open up access to makerspaces across campus. For example, a maker who completed Glowforge laser training at one of the library makerspaces should be able to use the Sandbox Glowforge without additional training.&lt;br /&gt;
&lt;br /&gt;
==== Improve quantity and quality of tool usage data being gathered. ====&lt;br /&gt;
&lt;br /&gt;
Currently, the MSM system only asks each makerspace visitor which tools they will be using when they first swipe in at the front door. We&#039;ve found this arrangement results in distorted statistics as many users just select the first tool they see on the list, don&#039;t take the time to check off every tool they intend to use, and often end up using tools they hadn&#039;t intended when they first arrived. &lt;br /&gt;
&lt;br /&gt;
An improvement would be to add additional data gathering points in the makerspace. For example, by adding touch screens with swipe readers in each workshop or tool storage area we could encourage makers to log every tool they use by making the process more convenient. Another approach would be to use a mobile web app to log tool usage by scanning each tool&#039;s barcode or otherwise selecting the tool. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Several of the entries below relate to our goal of gathering more data on tool usage. &lt;br /&gt;
*For example, the safety-driven requirement to add Tool Access Control lockout devices to dangerous tools (such as chop saws and lathes) will also help us gather more detailed tool usage data for those dangerous tools. &lt;br /&gt;
*Adding an advanced tool reservation capability will add additional usage data for popular tools such as 3D printers and laser cutters. &lt;br /&gt;
*Rather than add expensive lockout devices to all tools, we discuss the possible idea of adding Tool-In-Use flagging.&lt;br /&gt;
&lt;br /&gt;
All of these work together to not only better track tool usage but also to improve the user experience and reduce frustration, increase compliance with training requirements, and ensue our compliance with campus safety rules.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Tool Access Control ====&lt;br /&gt;
&lt;br /&gt;
Once the MSM system is able to look up tool training certification information using the ELMS/Canvas APAI. we&#039;d like to add on to MSM additional hardware and software that will directly control use of certain tools that are deemed to be dangerous (such as a CNC router, milling machine, band saw, etc.) or other tools that, while not particularly dangerous, require specific knowledge to operate correctly (such as laser cutter, SLA 3D printer, etc) to avoid damaging the tool. &lt;br /&gt;
&lt;br /&gt;
* This access control system should be implemented as a separate hardware and software system connected to each tool we wish to have this added level of access control. While we envision this being implemented using commercially-available micro controllers (such as an Arduino-compatible microcontroller) or single board computers (such as a Raspberry Pi computer) any other implementation is acceptable so long as it provides a low cost per controlled machine tool.&lt;br /&gt;
&lt;br /&gt;
* This access control capability would require each maker to swipe their UMD ID before using that tool. Use of a UMD ID is preferred since all students and staff already carry this with them. Other authentication mechanism such as RFID or other ID card that works by proximity instead of requiring a physical swipe, or NFC or similar systems using a person&#039;s cell phone. For systems not using UMD ID magnetic stripe cards, the cost of additional cards, software, etc must be factored into our decision to use that system.  &lt;br /&gt;
&lt;br /&gt;
* The system would look up the makers ID in a central database, and if able to verify that the maker is trained and certified to use the tool, the system would allow use of that tool. The preferred central database would be the existing UMD ELMS/Canvas Learning Management System or a system (such as a micro credentialing or badging system) that is connected to and synchronized with the ELMS/Canvas system. Systems that provide a central database system other than ELMS / Canvas must provide an automatic mechanism to update the database using the ELMS / Canvas API.  &lt;br /&gt;
&lt;br /&gt;
* The means to allow use of the tool should be by:&lt;br /&gt;
** Switching on power through a relay or contactor controlled by the software logic &lt;br /&gt;
** Enabling a logical +5 volt signal to be read by the tool&#039;s existing controller (such as an ENABLE signal)&lt;br /&gt;
** By deactivating the tool&#039;s e-stop circuit, restoring a cabinet interlock circuit, or other mechanism by closing or opening a relay contacts. (i.e. dry contact closure)&lt;br /&gt;
** Several different approaches (ideally all of those listed above) should be provided to adapt the system to the widest variety of machine tools and their control systems.&lt;br /&gt;
* The system should provide some way to prevent the maker from walking away and leaving the tool in an operational state. Some research and discussion are needed to determine the best approach for this but a simple example would be by setting a timeout after which the system requires the user to verify they are present by pushing a button or re-swiping their ID. This capability should be settable per-tool.&lt;br /&gt;
* For tools enabled by simply applying power, the system should prevent these tools from starting up immediately on authentication to prevent unsafe situations. For example, by using a magnetic motor starter.&lt;br /&gt;
* The system should ideally store locally a list of the IDs for all makers who recently were authenticated to use the tool (or store a list of all authorized users, updated periodically) This is to permit use of the tool control system even if the central database is unavailable or if network connectivity has failed.&lt;br /&gt;
* A display on each access control station would ideally display information such as the name of the current authorized user (or last user if tool is idle), length of tool use (or countdown to expiration), connectivity check, etc.&lt;br /&gt;
&lt;br /&gt;
==== System Support for Enforcing Buddy System ====&lt;br /&gt;
&lt;br /&gt;
UMD ESSR safety rule changes require certain tools to be used with the &amp;quot;buddy system&amp;quot; In short, the &amp;quot;buddy system&amp;quot; prohibits certain dangerous tools to be used by a person alone in the workshop. Another person must be close enough to see and hear the tool being used so they can render aid and call for assistance in case of injury.&lt;br /&gt;
&lt;br /&gt;
The MSM system should provide support for enforcing the buddy system. This support could entail requiring a second person to swipe in when using certain tools. This requirement might be limited to certain times of day (for example during the evening or when staff is reduced. The requirements for buddy system support are not yet clear, this is a placeholder.&lt;br /&gt;
&lt;br /&gt;
==== Tool-In-Use Flagging ====&lt;br /&gt;
&lt;br /&gt;
An additional capability desired is the ability to flag the status of a tool as &#039;&#039;&#039;&#039;&#039;In Use&#039;&#039;&#039;&#039;&#039;, &#039;&#039;&#039;&#039;&#039;Available for Use&#039;&#039;&#039;&#039;&#039;, or other statuses such as &#039;&#039;&#039;&#039;&#039;Awaiting Repair&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;Out of Service&#039;&#039;&#039;&#039;&#039; Since demand for many tools is high and a student may be frustrated if they travel to a makerspace only to find a particular tool unavailable, it would be helpful for the system to flag tools that are not available for use because they are being used by someone else or are broken or otherwise unavailable. &lt;br /&gt;
&lt;br /&gt;
* For tools that are not in service, a makerspace staff member should be able to change the status through a web interface. &lt;br /&gt;
** The system should record a date/time stamp for when the tool was taken out of service and a date stamp for an expected return-to-service. &lt;br /&gt;
*For tools being used by a maker, the MSM system should provide a mechanism for students to quickly and easily select a tool for use. This capability should allow the use of that tool for a fixed period of time, ideally this time period would differ for different types of tools (for example, a hammer would be flagged as in-use for 1-hour intervals while a sewing machine might have longer intervals such as 3 hours.&lt;br /&gt;
** The Tool-in-Use flag feature would verify the maker has completed any necessary training.&lt;br /&gt;
** When a different maker wishes to use that tool, they would see that the tool was currently in use by another maker and would also see the time the tool is expected to be available for their use. &lt;br /&gt;
** If a tool is still being used by that maker after the check-in time has passed, the new maker would have the right to be the next to use the tool.&lt;br /&gt;
** Ideally, the system would send an SMS message or some other sort of notification that the maker&#039;s use time has expired.&lt;br /&gt;
** Some examples of quick and easy mechanisms for makers to lag that they are using a tool &lt;br /&gt;
*** A touch screen kiosk in each workshop or tool storage area.&lt;br /&gt;
*** A QR code on each tool or on the storage location for each tool. The QR code would be scanned by the maker using the tool&lt;br /&gt;
*** A mobile web app used by the maker.&lt;br /&gt;
&lt;br /&gt;
Note that the Tool-In-Use Flag Feature will provide a great deal of useful information about the relative popularity of each tool and could provide data to support the purchase of additional tools.&lt;br /&gt;
&lt;br /&gt;
==== Tool Check-Out / Check-In (for use in makerspace) ====&lt;br /&gt;
See &#039;&#039;&#039;Tool-In-Use flagging&#039;&#039;&#039; above. &#039;Check-In&#039; and &#039;Check-Out&#039; functions would be used by a student when they take a tool from storage to their work area or return it to storage. Note that Check-Out is different than Tool-Loan which entails removing a tool from the makerspace.&lt;br /&gt;
&lt;br /&gt;
==== Tool Reservation ====&lt;br /&gt;
&lt;br /&gt;
Several tools (such as laser cutters or 3D printers are popular and makers often wish to sign-up in advance for a window of time to use the tool. In the case of 3D printers, a print job could run for many hours, or even multiple days. It would be useful for MSM to allow makers to reserve time on a tool and allow other makers to see that the tool is reserved and unavailable until a given time.&lt;br /&gt;
&lt;br /&gt;
Reservations block-out for class times or maintenance windows.&lt;br /&gt;
&lt;br /&gt;
==== Manager / Staff skills matching ====&lt;br /&gt;
Provide a new capability in MSM to allow staff and volunteer managers to swipe in and out while indicating if they are working or just using the space as a maker. &lt;br /&gt;
&lt;br /&gt;
The system should provide a display of all on-duty managers and staff, displaying each manager&#039;s photo and list of each&#039;s skills / specialties. This to help makers using the space know who to best ask questions about a particular tool or technique. &lt;br /&gt;
&lt;br /&gt;
====Resale of maker materials, tooling, etc.====&lt;br /&gt;
&lt;br /&gt;
We would like to be able to resell materials such as sheet goods (plywood, MDF, acrylic, etc.) 3D printer filament, tooling (CNC router bits, milling machine tooling, etc.) This is a service to makers who don&#039;t necessarily have the ability to transport physically large materials.&lt;br /&gt;
&lt;br /&gt;
Further definition is needed to specify how payments will be taken. We don&#039;t want to accept cash and are uneasy about volunteer managers having access to maker credit/debit cards. Ideally, payments would be charged against a maker&#039;s account balance. Is it possible to use an existing student payment system such as Terrapin Express?&lt;br /&gt;
&lt;br /&gt;
=== FERPA Concerns ===&lt;br /&gt;
Since LabSwipe data is student data there may be concern that some of the data may fall under the protection of the Family Educational Rights and Privacy Act (FERPA). FERPA requires protection of &amp;quot;Personally Identifiable Information&amp;quot; (PII) from release to 3rd parties. Anyone using student PII must take steps to protect this from release, even through the action of a student working in the makerspace. FERPA exempts from the protection requirement certain &amp;quot;Directory Information&amp;quot; that is commonly used. It requires each university to identify what information is considered &amp;quot;Directory Information&amp;quot; &lt;br /&gt;
&lt;br /&gt;
UMD defines their PII and Directory Information here: https://academiccatalog.umd.edu/undergraduate/university-policies/ In July 2020 this policy defined UMD PII &amp;amp; Directory Information as:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;quot;Personally identifiable information&amp;quot; or &amp;quot;PII&amp;quot; means data or information which includes, but is not limited to:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*a student’s name;&lt;br /&gt;
*a name of a student’s parent or family member&lt;br /&gt;
*an address of a student or a student’s family; &lt;br /&gt;
*a personal identifier, such as a social security number, University Identification Number (UID), or biometric record; &lt;br /&gt;
*other indirect identifiers, such as mother’s maiden name; &lt;br /&gt;
*other information that alone, or in combination, is linked or linkable to a specific student and that would allow a reasonable person in the UMD community who does not have personal knowledge of the relevant circumstances to identify the student with reasonable certainty; or information requested by a person who UMD reasonably believes knows the identity of the student to whom the education record relates.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;quot;Directory Information&amp;quot; means information which would generally not be considered harmful or an invasion of privacy if disclosed. It includes, but is not limited to, a student’s: &lt;br /&gt;
&lt;br /&gt;
*name, &lt;br /&gt;
*address, &lt;br /&gt;
*telephone listing, &lt;br /&gt;
*e-mail address, &lt;br /&gt;
*date and place of birth, &lt;br /&gt;
*major field of study, &lt;br /&gt;
*full-time/part-time status, &lt;br /&gt;
*participation in officially recognized activities and sports, &lt;br /&gt;
*weight and height of members of athletic teams, &lt;br /&gt;
*dates of attendance, &lt;br /&gt;
*degrees and awards received, and &lt;br /&gt;
*the most recent previous educational agency or institution attended&#039;&#039;   &lt;br /&gt;
&lt;br /&gt;
Note that UID is listed as PII but not excluded as &amp;quot;Directory Information&amp;quot; as is done at other institutions, especially those that also print UID on campus ID cards.&lt;br /&gt;
&lt;br /&gt;
= Parallel Development of Sandbox Kiosk Prototype =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Kiosk System Test&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sandbox hopes to continue the development and testing of a &#039;&#039;&#039;&#039;&#039;Kiosk System&#039;&#039;&#039;&#039;&#039; in Spring 2022. The kiosk system is envisioned as a way to improve tool usage tracking and replace the tool identification signage on each studio door. Each studio would have a touch screen computer system on or near the door that displays a visual listing of tools in that studio. Makers would be asked to select the tool they wanted to use. The kiosk would verify that the maker had completed any required training on that tool. &lt;br /&gt;
&lt;br /&gt;
By asking the maker to check the tool back in, we would be able to collect additional information about usage of individual tools as well as provide remote visibility of tool availability to makers planning on visiting the makerspace. &lt;br /&gt;
&lt;br /&gt;
Eventually we envision the kiosk system having additional functionality including  tool and studio reservation, broken tool tagging, identifying tool experts, etc.&lt;br /&gt;
&lt;br /&gt;
One possible initiative we could undertake would be the development of a prototype kiosk system for use in the various studios at Sandbox. This prototype would allow us to test ideas for MSM improvements and more quickly iterate through design concepts without having to modify the core MSM system. It would provide a working prototype useful for demonstrating our needs to the MSM development team, or to demonstrate our requirements if MSI decides to invest in an externally-developed system.&lt;br /&gt;
==== Overview of Sandbox Kiosk System ====&lt;br /&gt;
The existing MSM / LabSwipe system assumes each lab will be a single room or small number of related spaces that are hierarchically flat. Sandbox is a group of six different studios, each with a different type of tool. This leads to some confusion and a slowdown each time a maker checks in. If the tools are grouped alphabetically, a maker interested in electronics might check that he plans to use a &amp;quot;multimeter&amp;quot; then have to scroll past &amp;quot;multitool&amp;quot; and 3 different &amp;quot;sander&amp;quot; entries related to woodworking, 4 different types of &amp;quot;sewing machine&amp;quot; in the crafting studio before finding &amp;quot;soldering iron&amp;quot; a few pages down. We&#039;ve re-ordered the list by studio, which has helped quite a bit but makers using the woodworking studio have to scroll down several screens to find the start of tools they may want to use. While this may be fixable with some tweaks to the existing system UI, we&#039;ve uncovered other issues that we&#039;d like to address as well.&lt;br /&gt;
&lt;br /&gt;
In a review of system usage for the fall semester, we discovered that most students select a single tool regardless of the length of their visit. A maker may swipe in and select &amp;quot;laser cutter&amp;quot; as the tool they will be using but almost never returns to the front desk if (for example) they need to use a circular saw to trim their stock to the correct size, or need to use a drill to add a couple of holes to their project, or a sander to prepare it for finishing. Individually these failures aren&#039;t important but collectively they degrade the quality of data we hope to collect on tool usage and perhaps more importantly make it more difficult for us to report other statistics such as length of visit. Also, this avoidance bypasses the very important checking of training credentials that is a critical reason for having this system in the first place. Indeed, we found that a considerable number of students would select &amp;quot;no tool, table use only&amp;quot; when that option was made available. &lt;br /&gt;
&lt;br /&gt;
To improve this situation, we&#039;d like to move tool selection part of MSM closer to the point where the tool is used. Makers would still swipe in to the space when entering, but would not be asked whaic tools they plan to use. The extreme case of this would be to equip each tool with a sensor that indicated use and requested the maker picking up the tool to authenticate and verify their certification to use that tool. This would likely be too expensive to be practical except on the most hazardous or expensive tools such as milling machines, laser cutters, etc. What we propose and would like to test using the concept of kiosks, would be moving tool check-out to each individual studio. We envision a touch-screen display at the door of each studio. While the touch screen could be a self-contatrined system such as a iPad tablet, we are more inclined to use small computers such as the RaspberryPi. &lt;br /&gt;
&lt;br /&gt;
In a perfect world this kiosk system would be connected to the card key door lock system, but we don&#039;t envision that being possible because of political limitations with the UMD card key system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Initial Requirements for Kiosk Protoype ====&lt;br /&gt;
&lt;br /&gt;
* Kiosks to run Touch-screen terminals outside each Sandbox studio (to begin with woodworking studio and prototyping studio)&lt;br /&gt;
** Kiosk will display information about each tool available in that studio including training requirements and links to training materials. &lt;br /&gt;
** Tool information and training requirements should preferably come directly from existing wiki pages to ease updating. Either display wiki pages in embedded web browser or use mediawiki API to retrieve wiki content. &lt;br /&gt;
* Information shown on kiosk would include both publicly viewable (no login required) and private information (requiring login) such as maker&#039;s training accomplishments, etc.&lt;br /&gt;
** Provide quick and simple means for each maker to log in / authenticate with the system (card swipe, phone app, NFC, etc) &lt;br /&gt;
* Subset of information from kiosk system also available via login-secured web page accessible from off campus. Initially, remote functionality to include: &lt;br /&gt;
**ability to reserve a tool for a certain period of time, with the length of time specified by the maker, provided that request is within the limits set for that particular tool, perhaps also taking into account the time of day or day of week. &lt;br /&gt;
*** For example, a laser cutter might be reservible in blocks of 30 minutes with maximum of 3 blocks&lt;br /&gt;
*** A 3d printer might be reservible in blocks of 2 hours with the maximum number of blocks varying depending of day of week and time of day. For example, a Friday afternoon reservation might allow 48 hours total time, while Monday afternoon would only allow 4 hours total.&lt;br /&gt;
*** A more common power tool such as a jigsaw or drill might be reservible in blocks of 30 minutes with a maximum of 2-4 blocks.&lt;br /&gt;
** Some mechanism should be devised to prevent makers from always reserving the maximum number of blocks of time. &lt;br /&gt;
** display calendar view for each of the reservible tools that shows free/reserved blocks for each tool &lt;br /&gt;
** display calendar view for each studio that shows free/reserved status based on the tool being reserved. This view to be used to enforce Covid-19 distancing requirements&lt;/div&gt;</summary>
		<author><name>Gfc</name></author>
	</entry>
	<entry>
		<id>https://sandbox.umd.edu/wiki/index.php?title=Talk:Maker_Space_Manager_System&amp;diff=3428</id>
		<title>Talk:Maker Space Manager System</title>
		<link rel="alternate" type="text/html" href="https://sandbox.umd.edu/wiki/index.php?title=Talk:Maker_Space_Manager_System&amp;diff=3428"/>
		<updated>2026-10-16T18:29:12Z</updated>

		<summary type="html">&lt;p&gt;Gfc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Makerspace Management Software at UMD Sandbox Makerspace = &lt;br /&gt;
Discussion page related to software for managing the Sandbox Makerspace&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Listing of commercial or open source systems with overlapping functionality =&lt;br /&gt;
== Lists of Systems (other pages like this one)==&lt;br /&gt;
;Hackerspaces.org wishlist of software functions / features. :https://wiki.hackerspaces.org/Software_Wish_List&lt;br /&gt;
&lt;br /&gt;
;List of software from hackerspaces.org: https://wiki.hackerspaces.org/Hackerspace_Software\&lt;br /&gt;
&lt;br /&gt;
;MakerNexus notes on Access Control Systems: https://makernexuswiki.com/wiki/Access_Control_Systems&lt;br /&gt;
&lt;br /&gt;
== Individual Systems ==&lt;br /&gt;
=== Systems Focusing on Access Control (may include door access in addition to machine tool access / lockout) ===&lt;br /&gt;
(see also &#039;&#039;Systems Combining Access Control and Space Management&#039;&#039; below)&lt;br /&gt;
&lt;br /&gt;
:;Nova Labs Nova Pass : https://novapass.nova-labs.org/ (active system home page)&lt;br /&gt;
::(description from Makerfaire: https://nova.makerfaire.com/maker/entry/1224/) &lt;br /&gt;
::(details:https://goo.gl/RVmtiS)&lt;br /&gt;
&lt;br /&gt;
:;RATT - RFID All The Things: New Hampshire&#039;s MakeIT Labs RaspPi based RFID access control system. https://github.com/makeitlabs/ratt (video: https://www.youtube.com/watch?v=erwIPVwXUr8)&lt;br /&gt;
&lt;br /&gt;
:;FATT - FOB all The Things: Ace makerspace (formerly Ace Master Toys) https://www.acemakerspace.org/fatt-project/&lt;br /&gt;
::;Ace Master Toys: Makerspace system based on Google&#039;s AuthBox system  https://github.com/google/makerspace-auth&lt;br /&gt;
::;Ace Makerspace Occupancy System: https://www.youtube.com/watch?v=kemAM8MWIN8&lt;br /&gt;
&lt;br /&gt;
:;Google Makerspace Auth (aka AuthBox): https://github.com/google/makerspace-auth&lt;br /&gt;
&lt;br /&gt;
:;Ithaca Generator AuthBox&lt;br /&gt;
:* https://discuss.ithacagenerator.org/t/makerspace-authbox-on-github/565/3&lt;br /&gt;
:* https://github.com/ithacagenerator/AuthBox&lt;br /&gt;
&lt;br /&gt;
:;Manchester, NH MakerAuth&lt;br /&gt;
:* https://github.com/ManchesterMakerspace/MakerAuth&lt;br /&gt;
&lt;br /&gt;
:;RasPi-Lockout (designed for RIT Construct Makerspace): &lt;br /&gt;
:* https://www.youtube.com/watch?v=aoAdB13IVr0 (YouTube demo)&lt;br /&gt;
:* https://github.com/jaschawilcox/raspi-lockout (GitHub Repo)&lt;br /&gt;
&lt;br /&gt;
:;Build Brighton Access Node: https://www.youtube.com/watch?v=3X64JmTpOcA&lt;br /&gt;
&lt;br /&gt;
:;Open Access Control: Uses the Arduino hardware to build a robust access control and alarm system. https://code.google.com/archive/p/open-access-control/&lt;br /&gt;
&lt;br /&gt;
:;tinkerAccess: The tinkerAccess system is a Raspberry Pi based access control system that can be used to prevent unauthorized users from using devices that require special training. It could also conceivably be used to control electronic lock boxes or doors. The system was originally designed and created by Matt Stallard, Ron Thomas, and Matt Peopping for TinkerMill a makerspace in Longmont, CO. It is continually being maintained and enhanced by other contributors in the community. https://github.com/TinkerMill/tinkerAccess&lt;br /&gt;
&lt;br /&gt;
:;Triple Cities Makerspace ACS System: https://www.tcmakerspace.com/index.php/2019/08/19/project-profile-access-control-system-acs/&lt;br /&gt;
&lt;br /&gt;
:;The MakerBarn in The Woodlands, Texas MACS System: http://koljawindeler.github.io/macs/.  &lt;br /&gt;
::* MACS UI Video: https://www.youtube.com/watch?v=zLidqAPo3Cs &lt;br /&gt;
::* An Introduction to the MACS - Makerspace Access Control System: https://www.youtube.com/watch?v=CI3xxsBM9SE&lt;br /&gt;
&lt;br /&gt;
:;PITT-X Makerspace Access System: https://www.youtube.com/watch?v=2HG-vyV4yoM&lt;br /&gt;
&lt;br /&gt;
:;Member Access System for Pumping Station One :https://github.com/hef/ps1auth&lt;br /&gt;
::https://github.com/bdenne2/ps1auth&lt;br /&gt;
&lt;br /&gt;
:;HACCSY: Hackerspace Access Control and Check in System. Works with Seltzer CRM, running on a Raspberry Pi. https://www.instructables.com/id/HACCSY-Hackerspace-Access-Control-and-Check-in-Sys/&lt;br /&gt;
&lt;br /&gt;
:;Open Access Control Ethernet: https://github.com/zyphlar/Open_Access_Control_Ethernet&lt;br /&gt;
::;Open Source Access Control Web Interface (works with above) :https://github.com/zyphlar/Open-Source-Access-Control-Web-Interface&lt;br /&gt;
&lt;br /&gt;
=== Systems Combining Access Control and Space Management (may include elements of CRM, AR/AP, training management, inventory control, etc.)  ===&lt;br /&gt;
&lt;br /&gt;
;Safety Spot :Commercial maker space management software widely used in university maker spaces. https://www.safetyspot.com/ &lt;br /&gt;
&lt;br /&gt;
;(UC Berkeley) Makerpass system onepager: https://assets.pubpub.org/hpise2ck/01585588151622.pdf&lt;br /&gt;
&lt;br /&gt;
;Recursion: https://recursion.space Commercial system with free tier. Patented equipment lockout controller.&lt;br /&gt;
&lt;br /&gt;
;UT Austin FabApp/JuiceBox: FabApp is a PHP-based system for managing a makerspace (https://github.com/UTA-FabLab/fabapp). JuiceBox is a Python-based system for providing access control to power tools (https://github.com/UTA-FabLab/JuiceBox).  These and other UTA apps are on the UTA GitHub: https://github.com/UTA-FabLab&lt;br /&gt;
&lt;br /&gt;
;UT Austin Team Lockout: https://blog.uta.edu/cseseniordesign/2019/07/20/lockout/ The Maker Space Lockout System correctly gives access to Machinery only to users that have been adequately briefed on the machinery’s safety and operation. The system will be able to control access for each user according to their level of skill and expertise. Users of The Maker Space Lockout System will also become more equipped to handle and view wear and tear on machines via the data collection purge at the end of each job.&lt;br /&gt;
&lt;br /&gt;
===Not yet Categorized ===&lt;br /&gt;
&lt;br /&gt;
:;Fabman software :Management software with machine control hardware devices, API, and other features. https://fabman.io/&lt;br /&gt;
&lt;br /&gt;
:;RFIDDoorLock: https://wiki.melbournemakerspace.org/projects/RFIDDoorLock&lt;br /&gt;
&lt;br /&gt;
:;Byro :https://github.com/byro/byro&lt;br /&gt;
&lt;br /&gt;
:;HSBNE :https://github.com/hsbne/hsbneportal&lt;br /&gt;
&lt;br /&gt;
:;MetalabOS: https://github.com/Metalab/mos/&lt;br /&gt;
&lt;br /&gt;
:;NOMOS (Membership Management):  https://github.com/vhs/nomos&lt;br /&gt;
&lt;br /&gt;
:;MeMaTool: https://github.com/sim0nx/mematool&lt;br /&gt;
&lt;br /&gt;
:;RFID Tool Cabinet: https://www.youtube.com/watch?v=u-L_7pyPcvE&lt;br /&gt;
&lt;br /&gt;
=== Systems Focusing on Space Management without Access Control (may include elements of CRM, AR/AP, training management, inventory control, etc.)  ===&lt;br /&gt;
(Some of these may integrate with other Access Control Systems)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:;WildApricot :Membership management software used by many maker spaces. https://www.wildapricot.com/&lt;br /&gt;
&lt;br /&gt;
:;Seltzer CRM: Open source CRM / membership management software created by a maker space and designed to be extensible and easily modified.  https://wiki.hackerspaces.org/Seltzer_CRM&lt;br /&gt;
&lt;br /&gt;
:;SIMPL: (Software primarily designed to manage coworking spaces with features to support maker spaces) https://smpl.io/software/makerspaces/&lt;br /&gt;
&lt;br /&gt;
:;OpenBravo (ERM/ERP) :https://www.openbravo.com/&lt;br /&gt;
&lt;br /&gt;
:;WikiSpaces :The primary goal of the WikiSpaces project is to provide a &#039;startup&#039; wiki, which is basically a MediaWiki distribution especially for hackerspaces. This distribution will provide a working, up to date, MediaWiki installation, with the commonly needed extensions installed and configured. https://wiki.hackerspaces.org/WikiSpaces&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Not Yet Categorized ====&lt;br /&gt;
&lt;br /&gt;
:;Scholarly article on value of information collected using Maker Lens / MakerPass access system. :  https://people.eecs.berkeley.edu/~eschoop/docs/makerlens.pdf&lt;br /&gt;
&lt;br /&gt;
= ARCHIVED ITEMS BELOW =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==ARCHIVE LabSwipe /MSM System Development History &amp;amp; 2022 Road Map ==&lt;br /&gt;
&lt;br /&gt;
===Development History===&lt;br /&gt;
Would someone on the Labswipe team add to this section?&lt;br /&gt;
&lt;br /&gt;
===Current Release===&lt;br /&gt;
&lt;br /&gt;
===Future Enhancements===&lt;br /&gt;
&lt;br /&gt;
Road Map for future enhancements.  &lt;br /&gt;
&lt;br /&gt;
==== 2021-2022 MSM Rework Outline ====&lt;br /&gt;
*Outline of desired improvements for development work from Summer 2021 to Summer 2022&lt;br /&gt;
===== 2021 =====&lt;br /&gt;
* Improvements to existing UI / core LabSwipe functionality (Fall 21) &lt;br /&gt;
** Improved editing of data entry fields&lt;br /&gt;
** Integration with UMD swipe Identity API to correctly identify new cards swiped into system and close current opportunity for student to use a created ID card with false UID.&lt;br /&gt;
** Integration with UMD swipe API to:&lt;br /&gt;
*** Identify deactivated student ID cards and &lt;br /&gt;
*** Update CardID serial number when a lost ID card is replaced with a new card.&lt;br /&gt;
&lt;br /&gt;
===== 2022 =====&lt;br /&gt;
* Integration with Canvas LMS (Spring 22)&lt;br /&gt;
** Using Canvas API, ensuring API key is well protected using a secrets manager or similar approach&lt;br /&gt;
** Implement a middle layer between MSM and Canvas to track training certifications (similar to a micro credentialing system) in a way that creates an abstraction layer between a canvas course and a training certification.&lt;br /&gt;
** See &#039;&#039;&#039;Integration with ELMS/Canvas Learning Management System&#039;&#039;&#039; below for detail&lt;br /&gt;
&lt;br /&gt;
===== Overview of Enhancements  =====&lt;br /&gt;
*Additional Enhancements not yet implemented (many not yet scheduled).&lt;br /&gt;
** Integration with a tool access control system (such as Safety Spot, The Google system used at Ace Makerspace and elsewhere, or the Nova Pass system)&lt;br /&gt;
*** See &#039;&#039;&#039;Tool Access Control&#039;&#039;&#039; below for details&lt;br /&gt;
*** This integration would require certain tools flagged in system to have a swipe card reader at the tool which verifies training before tool will operate. &lt;br /&gt;
*** While extending MSM to support tool access control, modify it as well to allow a particular makerspace to set up a two-tier implementation of MSM where initial swipe allows entry into makerspace without selecting a specific tool (but perhaps requires the selection of a studio or category of tool) and subsequent swipe was required to select a particular tool. &lt;br /&gt;
** Tool reservation / tool-in-use flagging&lt;br /&gt;
** Tool Loan (away from makerspace)&lt;br /&gt;
** Student charging system (allow students to purchase materials and tooling using student ID or credit card.&lt;br /&gt;
** Faculty charging system (allow faculty / researchers to purchase materials using KFC account #)&lt;br /&gt;
** Matching of maker skills between students and managers. &lt;br /&gt;
** Campus-wide inventory of tools at each makerspace with ability for students to search for a particular tool (similar to MIT Manus system)&lt;br /&gt;
&lt;br /&gt;
Many of these are presented in more detail below:&lt;br /&gt;
&lt;br /&gt;
==== Integration with ELMS/Canvas Learning Management System====&lt;br /&gt;
Currently Labswipe stores training accomplishments in a Google Sheet. This needs to be manually updated. A brief look at the sheet shows very few of our makerspaces are making these manual updates. &lt;br /&gt;
&lt;br /&gt;
Sandbox implemented makerspace training in ELMS/Canvas in 2019. Initially we were manually updating the Labswipe sheet from Canvas but this became very time consuming. We wrote a Canvas API query tool that re-formats the Canvas results to make the updates a bit easier. We considered automating the Labswipe sheet update process but discontinued our efforts on this when it was decided to move the Labswipe back end from google sheets to AWS.&lt;br /&gt;
&lt;br /&gt;
Adding a badging or micro-credentialing plugin to Canvas was attempted in 2019-2020. Sandbox hoped that by adding this capability to Canvas we could avoid concerns about running queries directly against the Canvas system (which contains protected information about students) While the primary benefit would be isolating us from FERPA concerns, the badging system Would also simplify our queries (especially for training completed at a different makerspace), allow us to track training not done in Canvas (such as Welding or other training requiring direct, hands-on instruction), and also provide additional ways to gamify training (for example by allowing training tiers, &#039;leveling up&#039;, etc.) Our request to add a badging plugin to Canvas was rejected by DIT. We understand that a request to add a different badging system has been made by a different department and is still under consideration. &lt;br /&gt;
    &lt;br /&gt;
*We&#039;d like future versions of Labswipe to have the capability to update training accomplishments from Canvas. &lt;br /&gt;
&lt;br /&gt;
*Ideally this update would happen every time a maker swiped in to the system. &lt;br /&gt;
&lt;br /&gt;
*The system should support tracking of training that was completed at other UMD MSI makerspaces to support the MSI plans to open up access to makerspaces across campus. For example, a maker who completed Glowforge laser training at one of the library makerspaces should be able to use the Sandbox Glowforge without additional training.&lt;br /&gt;
&lt;br /&gt;
==== Improve quantity and quality of tool usage data being gathered. ====&lt;br /&gt;
&lt;br /&gt;
Currently, the MSM system only asks each makerspace visitor which tools they will be using when they first swipe in at the front door. We&#039;ve found this arrangement results in distorted statistics as many users just select the first tool they see on the list, don&#039;t take the time to check off every tool they intend to use, and often end up using tools they hadn&#039;t intended when they first arrived. &lt;br /&gt;
&lt;br /&gt;
An improvement would be to add additional data gathering points in the makerspace. For example, by adding touch screens with swipe readers in each workshop or tool storage area we could encourage makers to log every tool they use by making the process more convenient. Another approach would be to use a mobile web app to log tool usage by scanning each tool&#039;s barcode or otherwise selecting the tool. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Several of the entries below relate to our goal of gathering more data on tool usage. &lt;br /&gt;
*For example, the safety-driven requirement to add Tool Access Control lockout devices to dangerous tools (such as chop saws and lathes) will also help us gather more detailed tool usage data for those dangerous tools. &lt;br /&gt;
*Adding an advanced tool reservation capability will add additional usage data for popular tools such as 3D printers and laser cutters. &lt;br /&gt;
*Rather than add expensive lockout devices to all tools, we discuss the possible idea of adding Tool-In-Use flagging.&lt;br /&gt;
&lt;br /&gt;
All of these work together to not only better track tool usage but also to improve the user experience and reduce frustration, increase compliance with training requirements, and ensue our compliance with campus safety rules.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Tool Access Control ====&lt;br /&gt;
&lt;br /&gt;
Once the MSM system is able to look up tool training certification information using the ELMS/Canvas APAI. we&#039;d like to add on to MSM additional hardware and software that will directly control use of certain tools that are deemed to be dangerous (such as a CNC router, milling machine, band saw, etc.) or other tools that, while not particularly dangerous, require specific knowledge to operate correctly (such as laser cutter, SLA 3D printer, etc) to avoid damaging the tool. &lt;br /&gt;
&lt;br /&gt;
* This access control system should be implemented as a separate hardware and software system connected to each tool we wish to have this added level of access control. While we envision this being implemented using commercially-available micro controllers (such as an Arduino-compatible microcontroller) or single board computers (such as a Raspberry Pi computer) any other implementation is acceptable so long as it provides a low cost per controlled machine tool.&lt;br /&gt;
&lt;br /&gt;
* This access control capability would require each maker to swipe their UMD ID before using that tool. Use of a UMD ID is preferred since all students and staff already carry this with them. Other authentication mechanism such as RFID or other ID card that works by proximity instead of requiring a physical swipe, or NFC or similar systems using a person&#039;s cell phone. For systems not using UMD ID magnetic stripe cards, the cost of additional cards, software, etc must be factored into our decision to use that system.  &lt;br /&gt;
&lt;br /&gt;
* The system would look up the makers ID in a central database, and if able to verify that the maker is trained and certified to use the tool, the system would allow use of that tool. The preferred central database would be the existing UMD ELMS/Canvas Learning Management System or a system (such as a micro credentialing or badging system) that is connected to and synchronized with the ELMS/Canvas system. Systems that provide a central database system other than ELMS / Canvas must provide an automatic mechanism to update the database using the ELMS / Canvas API.  &lt;br /&gt;
&lt;br /&gt;
* The means to allow use of the tool should be by:&lt;br /&gt;
** Switching on power through a relay or contactor controlled by the software logic &lt;br /&gt;
** Enabling a logical +5 volt signal to be read by the tool&#039;s existing controller (such as an ENABLE signal)&lt;br /&gt;
** By deactivating the tool&#039;s e-stop circuit, restoring a cabinet interlock circuit, or other mechanism by closing or opening a relay contacts. (i.e. dry contact closure)&lt;br /&gt;
** Several different approaches (ideally all of those listed above) should be provided to adapt the system to the widest variety of machine tools and their control systems.&lt;br /&gt;
* The system should provide some way to prevent the maker from walking away and leaving the tool in an operational state. Some research and discussion are needed to determine the best approach for this but a simple example would be by setting a timeout after which the system requires the user to verify they are present by pushing a button or re-swiping their ID. This capability should be settable per-tool.&lt;br /&gt;
* For tools enabled by simply applying power, the system should prevent these tools from starting up immediately on authentication to prevent unsafe situations. For example, by using a magnetic motor starter.&lt;br /&gt;
* The system should ideally store locally a list of the IDs for all makers who recently were authenticated to use the tool (or store a list of all authorized users, updated periodically) This is to permit use of the tool control system even if the central database is unavailable or if network connectivity has failed.&lt;br /&gt;
* A display on each access control station would ideally display information such as the name of the current authorized user (or last user if tool is idle), length of tool use (or countdown to expiration), connectivity check, etc.&lt;br /&gt;
&lt;br /&gt;
==== System Support for Enforcing Buddy System ====&lt;br /&gt;
&lt;br /&gt;
UMD ESSR safety rule changes require certain tools to be used with the &amp;quot;buddy system&amp;quot; In short, the &amp;quot;buddy system&amp;quot; prohibits certain dangerous tools to be used by a person alone in the workshop. Another person must be close enough to see and hear the tool being used so they can render aid and call for assistance in case of injury.&lt;br /&gt;
&lt;br /&gt;
The MSM system should provide support for enforcing the buddy system. This support could entail requiring a second person to swipe in when using certain tools. This requirement might be limited to certain times of day (for example during the evening or when staff is reduced. The requirements for buddy system support are not yet clear, this is a placeholder.&lt;br /&gt;
&lt;br /&gt;
==== Tool-In-Use Flagging ====&lt;br /&gt;
&lt;br /&gt;
An additional capability desired is the ability to flag the status of a tool as &#039;&#039;&#039;&#039;&#039;In Use&#039;&#039;&#039;&#039;&#039;, &#039;&#039;&#039;&#039;&#039;Available for Use&#039;&#039;&#039;&#039;&#039;, or other statuses such as &#039;&#039;&#039;&#039;&#039;Awaiting Repair&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;Out of Service&#039;&#039;&#039;&#039;&#039; Since demand for many tools is high and a student may be frustrated if they travel to a makerspace only to find a particular tool unavailable, it would be helpful for the system to flag tools that are not available for use because they are being used by someone else or are broken or otherwise unavailable. &lt;br /&gt;
&lt;br /&gt;
* For tools that are not in service, a makerspace staff member should be able to change the status through a web interface. &lt;br /&gt;
** The system should record a date/time stamp for when the tool was taken out of service and a date stamp for an expected return-to-service. &lt;br /&gt;
*For tools being used by a maker, the MSM system should provide a mechanism for students to quickly and easily select a tool for use. This capability should allow the use of that tool for a fixed period of time, ideally this time period would differ for different types of tools (for example, a hammer would be flagged as in-use for 1-hour intervals while a sewing machine might have longer intervals such as 3 hours.&lt;br /&gt;
** The Tool-in-Use flag feature would verify the maker has completed any necessary training.&lt;br /&gt;
** When a different maker wishes to use that tool, they would see that the tool was currently in use by another maker and would also see the time the tool is expected to be available for their use. &lt;br /&gt;
** If a tool is still being used by that maker after the check-in time has passed, the new maker would have the right to be the next to use the tool.&lt;br /&gt;
** Ideally, the system would send an SMS message or some other sort of notification that the maker&#039;s use time has expired.&lt;br /&gt;
** Some examples of quick and easy mechanisms for makers to lag that they are using a tool &lt;br /&gt;
*** A touch screen kiosk in each workshop or tool storage area.&lt;br /&gt;
*** A QR code on each tool or on the storage location for each tool. The QR code would be scanned by the maker using the tool&lt;br /&gt;
*** A mobile web app used by the maker.&lt;br /&gt;
&lt;br /&gt;
Note that the Tool-In-Use Flag Feature will provide a great deal of useful information about the relative popularity of each tool and could provide data to support the purchase of additional tools.&lt;br /&gt;
&lt;br /&gt;
==== Tool Check-Out / Check-In (for use in makerspace) ====&lt;br /&gt;
See &#039;&#039;&#039;Tool-In-Use flagging&#039;&#039;&#039; above. &#039;Check-In&#039; and &#039;Check-Out&#039; functions would be used by a student when they take a tool from storage to their work area or return it to storage. Note that Check-Out is different than Tool-Loan which entails removing a tool from the makerspace.&lt;br /&gt;
&lt;br /&gt;
==== Tool Reservation ====&lt;br /&gt;
&lt;br /&gt;
Several tools (such as laser cutters or 3D printers are popular and makers often wish to sign-up in advance for a window of time to use the tool. In the case of 3D printers, a print job could run for many hours, or even multiple days. It would be useful for MSM to allow makers to reserve time on a tool and allow other makers to see that the tool is reserved and unavailable until a given time.&lt;br /&gt;
&lt;br /&gt;
Reservations block-out for class times or maintenance windows.&lt;br /&gt;
&lt;br /&gt;
==== Manager / Staff skills matching ====&lt;br /&gt;
Provide a new capability in MSM to allow staff and volunteer managers to swipe in and out while indicating if they are working or just using the space as a maker. &lt;br /&gt;
&lt;br /&gt;
The system should provide a display of all on-duty managers and staff, displaying each manager&#039;s photo and list of each&#039;s skills / specialties. This to help makers using the space know who to best ask questions about a particular tool or technique. &lt;br /&gt;
&lt;br /&gt;
====Resale of maker materials, tooling, etc.====&lt;br /&gt;
&lt;br /&gt;
We would like to be able to resell materials such as sheet goods (plywood, MDF, acrylic, etc.) 3D printer filament, tooling (CNC router bits, milling machine tooling, etc.) This is a service to makers who don&#039;t necessarily have the ability to transport physically large materials.&lt;br /&gt;
&lt;br /&gt;
Further definition is needed to specify how payments will be taken. We don&#039;t want to accept cash and are uneasy about volunteer managers having access to maker credit/debit cards. Ideally, payments would be charged against a maker&#039;s account balance. Is it possible to use an existing student payment system such as Terrapin Express?&lt;br /&gt;
&lt;br /&gt;
=== FERPA Concerns ===&lt;br /&gt;
Since LabSwipe data is student data there may be concern that some of the data may fall under the protection of the Family Educational Rights and Privacy Act (FERPA). FERPA requires protection of &amp;quot;Personally Identifiable Information&amp;quot; (PII) from release to 3rd parties. Anyone using student PII must take steps to protect this from release, even through the action of a student working in the makerspace. FERPA exempts from the protection requirement certain &amp;quot;Directory Information&amp;quot; that is commonly used. It requires each university to identify what information is considered &amp;quot;Directory Information&amp;quot; &lt;br /&gt;
&lt;br /&gt;
UMD defines their PII and Directory Information here: https://academiccatalog.umd.edu/undergraduate/university-policies/ In July 2020 this policy defined UMD PII &amp;amp; Directory Information as:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;quot;Personally identifiable information&amp;quot; or &amp;quot;PII&amp;quot; means data or information which includes, but is not limited to:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*a student’s name;&lt;br /&gt;
*a name of a student’s parent or family member&lt;br /&gt;
*an address of a student or a student’s family; &lt;br /&gt;
*a personal identifier, such as a social security number, University Identification Number (UID), or biometric record; &lt;br /&gt;
*other indirect identifiers, such as mother’s maiden name; &lt;br /&gt;
*other information that alone, or in combination, is linked or linkable to a specific student and that would allow a reasonable person in the UMD community who does not have personal knowledge of the relevant circumstances to identify the student with reasonable certainty; or information requested by a person who UMD reasonably believes knows the identity of the student to whom the education record relates.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;quot;Directory Information&amp;quot; means information which would generally not be considered harmful or an invasion of privacy if disclosed. It includes, but is not limited to, a student’s: &lt;br /&gt;
&lt;br /&gt;
*name, &lt;br /&gt;
*address, &lt;br /&gt;
*telephone listing, &lt;br /&gt;
*e-mail address, &lt;br /&gt;
*date and place of birth, &lt;br /&gt;
*major field of study, &lt;br /&gt;
*full-time/part-time status, &lt;br /&gt;
*participation in officially recognized activities and sports, &lt;br /&gt;
*weight and height of members of athletic teams, &lt;br /&gt;
*dates of attendance, &lt;br /&gt;
*degrees and awards received, and &lt;br /&gt;
*the most recent previous educational agency or institution attended&#039;&#039;   &lt;br /&gt;
&lt;br /&gt;
Note that UID is listed as PII but not excluded as &amp;quot;Directory Information&amp;quot; as is done at other institutions, especially those that also print UID on campus ID cards.&lt;br /&gt;
&lt;br /&gt;
= Parallel Development of Sandbox Kiosk Prototype =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Kiosk System Test&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sandbox hopes to continue the development and testing of a &#039;&#039;&#039;&#039;&#039;Kiosk System&#039;&#039;&#039;&#039;&#039; in Spring 2022. The kiosk system is envisioned as a way to improve tool usage tracking and replace the tool identification signage on each studio door. Each studio would have a touch screen computer system on or near the door that displays a visual listing of tools in that studio. Makers would be asked to select the tool they wanted to use. The kiosk would verify that the maker had completed any required training on that tool. &lt;br /&gt;
&lt;br /&gt;
By asking the maker to check the tool back in, we would be able to collect additional information about usage of individual tools as well as provide remote visibility of tool availability to makers planning on visiting the makerspace. &lt;br /&gt;
&lt;br /&gt;
Eventually we envision the kiosk system having additional functionality including  tool and studio reservation, broken tool tagging, identifying tool experts, etc.&lt;br /&gt;
&lt;br /&gt;
One possible initiative we could undertake would be the development of a prototype kiosk system for use in the various studios at Sandbox. This prototype would allow us to test ideas for MSM improvements and more quickly iterate through design concepts without having to modify the core MSM system. It would provide a working prototype useful for demonstrating our needs to the MSM development team, or to demonstrate our requirements if MSI decides to invest in an externally-developed system.&lt;br /&gt;
==== Overview of Sandbox Kiosk System ====&lt;br /&gt;
The existing MSM / LabSwipe system assumes each lab will be a single room or small number of related spaces that are hierarchically flat. Sandbox is a group of six different studios, each with a different type of tool. This leads to some confusion and a slowdown each time a maker checks in. If the tools are grouped alphabetically, a maker interested in electronics might check that he plans to use a &amp;quot;multimeter&amp;quot; then have to scroll past &amp;quot;multitool&amp;quot; and 3 different &amp;quot;sander&amp;quot; entries related to woodworking, 4 different types of &amp;quot;sewing machine&amp;quot; in the crafting studio before finding &amp;quot;soldering iron&amp;quot; a few pages down. We&#039;ve re-ordered the list by studio, which has helped quite a bit but makers using the woodworking studio have to scroll down several screens to find the start of tools they may want to use. While this may be fixable with some tweaks to the existing system UI, we&#039;ve uncovered other issues that we&#039;d like to address as well.&lt;br /&gt;
&lt;br /&gt;
In a review of system usage for the fall semester, we discovered that most students select a single tool regardless of the length of their visit. A maker may swipe in and select &amp;quot;laser cutter&amp;quot; as the tool they will be using but almost never returns to the front desk if (for example) they need to use a circular saw to trim their stock to the correct size, or need to use a drill to add a couple of holes to their project, or a sander to prepare it for finishing. Individually these failures aren&#039;t important but collectively they degrade the quality of data we hope to collect on tool usage and perhaps more importantly make it more difficult for us to report other statistics such as length of visit. Also, this avoidance bypasses the very important checking of training credentials that is a critical reason for having this system in the first place. Indeed, we found that a considerable number of students would select &amp;quot;no tool, table use only&amp;quot; when that option was made available. &lt;br /&gt;
&lt;br /&gt;
To improve this situation, we&#039;d like to move tool selection part of MSM closer to the point where the tool is used. Makers would still swipe in to the space when entering, but would not be asked whaic tools they plan to use. The extreme case of this would be to equip each tool with a sensor that indicated use and requested the maker picking up the tool to authenticate and verify their certification to use that tool. This would likely be too expensive to be practical except on the most hazardous or expensive tools such as milling machines, laser cutters, etc. What we propose and would like to test using the concept of kiosks, would be moving tool check-out to each individual studio. We envision a touch-screen display at the door of each studio. While the touch screen could be a self-contatrined system such as a iPad tablet, we are more inclined to use small computers such as the RaspberryPi. &lt;br /&gt;
&lt;br /&gt;
In a perfect world this kiosk system would be connected to the card key door lock system, but we don&#039;t envision that being possible because of political limitations with the UMD card key system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Initial Requirements for Kiosk Protoype ====&lt;br /&gt;
&lt;br /&gt;
* Kiosks to run Touch-screen terminals outside each Sandbox studio (to begin with woodworking studio and prototyping studio)&lt;br /&gt;
** Kiosk will display information about each tool available in that studio including training requirements and links to training materials. &lt;br /&gt;
** Tool information and training requirements should preferably come directly from existing wiki pages to ease updating. Either display wiki pages in embedded web browser or use mediawiki API to retrieve wiki content. &lt;br /&gt;
* Information shown on kiosk would include both publicly viewable (no login required) and private information (requiring login) such as maker&#039;s training accomplishments, etc.&lt;br /&gt;
** Provide quick and simple means for each maker to log in / authenticate with the system (card swipe, phone app, NFC, etc) &lt;br /&gt;
* Subset of information from kiosk system also available via login-secured web page accessible from off campus. Initially, remote functionality to include: &lt;br /&gt;
**ability to reserve a tool for a certain period of time, with the length of time specified by the maker, provided that request is within the limits set for that particular tool, perhaps also taking into account the time of day or day of week. &lt;br /&gt;
*** For example, a laser cutter might be reservible in blocks of 30 minutes with maximum of 3 blocks&lt;br /&gt;
*** A 3d printer might be reservible in blocks of 2 hours with the maximum number of blocks varying depending of day of week and time of day. For example, a Friday afternoon reservation might allow 48 hours total time, while Monday afternoon would only allow 4 hours total.&lt;br /&gt;
*** A more common power tool such as a jigsaw or drill might be reservible in blocks of 30 minutes with a maximum of 2-4 blocks.&lt;br /&gt;
** Some mechanism should be devised to prevent makers from always reserving the maximum number of blocks of time. &lt;br /&gt;
** display calendar view for each of the reservible tools that shows free/reserved blocks for each tool &lt;br /&gt;
** display calendar view for each studio that shows free/reserved status based on the tool being reserved. This view to be used to enforce Covid-19 distancing requirements&lt;/div&gt;</summary>
		<author><name>Gfc</name></author>
	</entry>
	<entry>
		<id>https://sandbox.umd.edu/wiki/index.php?title=Talk:Maker_Space_Manager_System&amp;diff=3427</id>
		<title>Talk:Maker Space Manager System</title>
		<link rel="alternate" type="text/html" href="https://sandbox.umd.edu/wiki/index.php?title=Talk:Maker_Space_Manager_System&amp;diff=3427"/>
		<updated>2026-10-16T18:27:59Z</updated>

		<summary type="html">&lt;p&gt;Gfc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Makerspace Management Software at UMD Sandbox Makerspace = &lt;br /&gt;
Discussion page related to software for managing the Sandbox Makerspace&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==ARCHIVE LabSwipe /MSM System Development History &amp;amp; 2022 Road Map ==&lt;br /&gt;
&lt;br /&gt;
===Development History===&lt;br /&gt;
Would someone on the Labswipe team add to this section?&lt;br /&gt;
&lt;br /&gt;
===Current Release===&lt;br /&gt;
&lt;br /&gt;
===Future Enhancements===&lt;br /&gt;
&lt;br /&gt;
Road Map for future enhancements.  &lt;br /&gt;
&lt;br /&gt;
==== 2021-2022 MSM Rework Outline ====&lt;br /&gt;
*Outline of desired improvements for development work from Summer 2021 to Summer 2022&lt;br /&gt;
===== 2021 =====&lt;br /&gt;
* Improvements to existing UI / core LabSwipe functionality (Fall 21) &lt;br /&gt;
** Improved editing of data entry fields&lt;br /&gt;
** Integration with UMD swipe Identity API to correctly identify new cards swiped into system and close current opportunity for student to use a created ID card with false UID.&lt;br /&gt;
** Integration with UMD swipe API to:&lt;br /&gt;
*** Identify deactivated student ID cards and &lt;br /&gt;
*** Update CardID serial number when a lost ID card is replaced with a new card.&lt;br /&gt;
&lt;br /&gt;
===== 2022 =====&lt;br /&gt;
* Integration with Canvas LMS (Spring 22)&lt;br /&gt;
** Using Canvas API, ensuring API key is well protected using a secrets manager or similar approach&lt;br /&gt;
** Implement a middle layer between MSM and Canvas to track training certifications (similar to a micro credentialing system) in a way that creates an abstraction layer between a canvas course and a training certification.&lt;br /&gt;
** See &#039;&#039;&#039;Integration with ELMS/Canvas Learning Management System&#039;&#039;&#039; below for detail&lt;br /&gt;
&lt;br /&gt;
===== Overview of Enhancements  =====&lt;br /&gt;
*Additional Enhancements not yet implemented (many not yet scheduled).&lt;br /&gt;
** Integration with a tool access control system (such as Safety Spot, The Google system used at Ace Makerspace and elsewhere, or the Nova Pass system)&lt;br /&gt;
*** See &#039;&#039;&#039;Tool Access Control&#039;&#039;&#039; below for details&lt;br /&gt;
*** This integration would require certain tools flagged in system to have a swipe card reader at the tool which verifies training before tool will operate. &lt;br /&gt;
*** While extending MSM to support tool access control, modify it as well to allow a particular makerspace to set up a two-tier implementation of MSM where initial swipe allows entry into makerspace without selecting a specific tool (but perhaps requires the selection of a studio or category of tool) and subsequent swipe was required to select a particular tool. &lt;br /&gt;
** Tool reservation / tool-in-use flagging&lt;br /&gt;
** Tool Loan (away from makerspace)&lt;br /&gt;
** Student charging system (allow students to purchase materials and tooling using student ID or credit card.&lt;br /&gt;
** Faculty charging system (allow faculty / researchers to purchase materials using KFC account #)&lt;br /&gt;
** Matching of maker skills between students and managers. &lt;br /&gt;
** Campus-wide inventory of tools at each makerspace with ability for students to search for a particular tool (similar to MIT Manus system)&lt;br /&gt;
&lt;br /&gt;
Many of these are presented in more detail below:&lt;br /&gt;
&lt;br /&gt;
==== Integration with ELMS/Canvas Learning Management System====&lt;br /&gt;
Currently Labswipe stores training accomplishments in a Google Sheet. This needs to be manually updated. A brief look at the sheet shows very few of our makerspaces are making these manual updates. &lt;br /&gt;
&lt;br /&gt;
Sandbox implemented makerspace training in ELMS/Canvas in 2019. Initially we were manually updating the Labswipe sheet from Canvas but this became very time consuming. We wrote a Canvas API query tool that re-formats the Canvas results to make the updates a bit easier. We considered automating the Labswipe sheet update process but discontinued our efforts on this when it was decided to move the Labswipe back end from google sheets to AWS.&lt;br /&gt;
&lt;br /&gt;
Adding a badging or micro-credentialing plugin to Canvas was attempted in 2019-2020. Sandbox hoped that by adding this capability to Canvas we could avoid concerns about running queries directly against the Canvas system (which contains protected information about students) While the primary benefit would be isolating us from FERPA concerns, the badging system Would also simplify our queries (especially for training completed at a different makerspace), allow us to track training not done in Canvas (such as Welding or other training requiring direct, hands-on instruction), and also provide additional ways to gamify training (for example by allowing training tiers, &#039;leveling up&#039;, etc.) Our request to add a badging plugin to Canvas was rejected by DIT. We understand that a request to add a different badging system has been made by a different department and is still under consideration. &lt;br /&gt;
    &lt;br /&gt;
*We&#039;d like future versions of Labswipe to have the capability to update training accomplishments from Canvas. &lt;br /&gt;
&lt;br /&gt;
*Ideally this update would happen every time a maker swiped in to the system. &lt;br /&gt;
&lt;br /&gt;
*The system should support tracking of training that was completed at other UMD MSI makerspaces to support the MSI plans to open up access to makerspaces across campus. For example, a maker who completed Glowforge laser training at one of the library makerspaces should be able to use the Sandbox Glowforge without additional training.&lt;br /&gt;
&lt;br /&gt;
==== Improve quantity and quality of tool usage data being gathered. ====&lt;br /&gt;
&lt;br /&gt;
Currently, the MSM system only asks each makerspace visitor which tools they will be using when they first swipe in at the front door. We&#039;ve found this arrangement results in distorted statistics as many users just select the first tool they see on the list, don&#039;t take the time to check off every tool they intend to use, and often end up using tools they hadn&#039;t intended when they first arrived. &lt;br /&gt;
&lt;br /&gt;
An improvement would be to add additional data gathering points in the makerspace. For example, by adding touch screens with swipe readers in each workshop or tool storage area we could encourage makers to log every tool they use by making the process more convenient. Another approach would be to use a mobile web app to log tool usage by scanning each tool&#039;s barcode or otherwise selecting the tool. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Several of the entries below relate to our goal of gathering more data on tool usage. &lt;br /&gt;
*For example, the safety-driven requirement to add Tool Access Control lockout devices to dangerous tools (such as chop saws and lathes) will also help us gather more detailed tool usage data for those dangerous tools. &lt;br /&gt;
*Adding an advanced tool reservation capability will add additional usage data for popular tools such as 3D printers and laser cutters. &lt;br /&gt;
*Rather than add expensive lockout devices to all tools, we discuss the possible idea of adding Tool-In-Use flagging.&lt;br /&gt;
&lt;br /&gt;
All of these work together to not only better track tool usage but also to improve the user experience and reduce frustration, increase compliance with training requirements, and ensue our compliance with campus safety rules.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Tool Access Control ====&lt;br /&gt;
&lt;br /&gt;
Once the MSM system is able to look up tool training certification information using the ELMS/Canvas APAI. we&#039;d like to add on to MSM additional hardware and software that will directly control use of certain tools that are deemed to be dangerous (such as a CNC router, milling machine, band saw, etc.) or other tools that, while not particularly dangerous, require specific knowledge to operate correctly (such as laser cutter, SLA 3D printer, etc) to avoid damaging the tool. &lt;br /&gt;
&lt;br /&gt;
* This access control system should be implemented as a separate hardware and software system connected to each tool we wish to have this added level of access control. While we envision this being implemented using commercially-available micro controllers (such as an Arduino-compatible microcontroller) or single board computers (such as a Raspberry Pi computer) any other implementation is acceptable so long as it provides a low cost per controlled machine tool.&lt;br /&gt;
&lt;br /&gt;
* This access control capability would require each maker to swipe their UMD ID before using that tool. Use of a UMD ID is preferred since all students and staff already carry this with them. Other authentication mechanism such as RFID or other ID card that works by proximity instead of requiring a physical swipe, or NFC or similar systems using a person&#039;s cell phone. For systems not using UMD ID magnetic stripe cards, the cost of additional cards, software, etc must be factored into our decision to use that system.  &lt;br /&gt;
&lt;br /&gt;
* The system would look up the makers ID in a central database, and if able to verify that the maker is trained and certified to use the tool, the system would allow use of that tool. The preferred central database would be the existing UMD ELMS/Canvas Learning Management System or a system (such as a micro credentialing or badging system) that is connected to and synchronized with the ELMS/Canvas system. Systems that provide a central database system other than ELMS / Canvas must provide an automatic mechanism to update the database using the ELMS / Canvas API.  &lt;br /&gt;
&lt;br /&gt;
* The means to allow use of the tool should be by:&lt;br /&gt;
** Switching on power through a relay or contactor controlled by the software logic &lt;br /&gt;
** Enabling a logical +5 volt signal to be read by the tool&#039;s existing controller (such as an ENABLE signal)&lt;br /&gt;
** By deactivating the tool&#039;s e-stop circuit, restoring a cabinet interlock circuit, or other mechanism by closing or opening a relay contacts. (i.e. dry contact closure)&lt;br /&gt;
** Several different approaches (ideally all of those listed above) should be provided to adapt the system to the widest variety of machine tools and their control systems.&lt;br /&gt;
* The system should provide some way to prevent the maker from walking away and leaving the tool in an operational state. Some research and discussion are needed to determine the best approach for this but a simple example would be by setting a timeout after which the system requires the user to verify they are present by pushing a button or re-swiping their ID. This capability should be settable per-tool.&lt;br /&gt;
* For tools enabled by simply applying power, the system should prevent these tools from starting up immediately on authentication to prevent unsafe situations. For example, by using a magnetic motor starter.&lt;br /&gt;
* The system should ideally store locally a list of the IDs for all makers who recently were authenticated to use the tool (or store a list of all authorized users, updated periodically) This is to permit use of the tool control system even if the central database is unavailable or if network connectivity has failed.&lt;br /&gt;
* A display on each access control station would ideally display information such as the name of the current authorized user (or last user if tool is idle), length of tool use (or countdown to expiration), connectivity check, etc.&lt;br /&gt;
&lt;br /&gt;
==== System Support for Enforcing Buddy System ====&lt;br /&gt;
&lt;br /&gt;
UMD ESSR safety rule changes require certain tools to be used with the &amp;quot;buddy system&amp;quot; In short, the &amp;quot;buddy system&amp;quot; prohibits certain dangerous tools to be used by a person alone in the workshop. Another person must be close enough to see and hear the tool being used so they can render aid and call for assistance in case of injury.&lt;br /&gt;
&lt;br /&gt;
The MSM system should provide support for enforcing the buddy system. This support could entail requiring a second person to swipe in when using certain tools. This requirement might be limited to certain times of day (for example during the evening or when staff is reduced. The requirements for buddy system support are not yet clear, this is a placeholder.&lt;br /&gt;
&lt;br /&gt;
==== Tool-In-Use Flagging ====&lt;br /&gt;
&lt;br /&gt;
An additional capability desired is the ability to flag the status of a tool as &#039;&#039;&#039;&#039;&#039;In Use&#039;&#039;&#039;&#039;&#039;, &#039;&#039;&#039;&#039;&#039;Available for Use&#039;&#039;&#039;&#039;&#039;, or other statuses such as &#039;&#039;&#039;&#039;&#039;Awaiting Repair&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;Out of Service&#039;&#039;&#039;&#039;&#039; Since demand for many tools is high and a student may be frustrated if they travel to a makerspace only to find a particular tool unavailable, it would be helpful for the system to flag tools that are not available for use because they are being used by someone else or are broken or otherwise unavailable. &lt;br /&gt;
&lt;br /&gt;
* For tools that are not in service, a makerspace staff member should be able to change the status through a web interface. &lt;br /&gt;
** The system should record a date/time stamp for when the tool was taken out of service and a date stamp for an expected return-to-service. &lt;br /&gt;
*For tools being used by a maker, the MSM system should provide a mechanism for students to quickly and easily select a tool for use. This capability should allow the use of that tool for a fixed period of time, ideally this time period would differ for different types of tools (for example, a hammer would be flagged as in-use for 1-hour intervals while a sewing machine might have longer intervals such as 3 hours.&lt;br /&gt;
** The Tool-in-Use flag feature would verify the maker has completed any necessary training.&lt;br /&gt;
** When a different maker wishes to use that tool, they would see that the tool was currently in use by another maker and would also see the time the tool is expected to be available for their use. &lt;br /&gt;
** If a tool is still being used by that maker after the check-in time has passed, the new maker would have the right to be the next to use the tool.&lt;br /&gt;
** Ideally, the system would send an SMS message or some other sort of notification that the maker&#039;s use time has expired.&lt;br /&gt;
** Some examples of quick and easy mechanisms for makers to lag that they are using a tool &lt;br /&gt;
*** A touch screen kiosk in each workshop or tool storage area.&lt;br /&gt;
*** A QR code on each tool or on the storage location for each tool. The QR code would be scanned by the maker using the tool&lt;br /&gt;
*** A mobile web app used by the maker.&lt;br /&gt;
&lt;br /&gt;
Note that the Tool-In-Use Flag Feature will provide a great deal of useful information about the relative popularity of each tool and could provide data to support the purchase of additional tools.&lt;br /&gt;
&lt;br /&gt;
==== Tool Check-Out / Check-In (for use in makerspace) ====&lt;br /&gt;
See &#039;&#039;&#039;Tool-In-Use flagging&#039;&#039;&#039; above. &#039;Check-In&#039; and &#039;Check-Out&#039; functions would be used by a student when they take a tool from storage to their work area or return it to storage. Note that Check-Out is different than Tool-Loan which entails removing a tool from the makerspace.&lt;br /&gt;
&lt;br /&gt;
==== Tool Reservation ====&lt;br /&gt;
&lt;br /&gt;
Several tools (such as laser cutters or 3D printers are popular and makers often wish to sign-up in advance for a window of time to use the tool. In the case of 3D printers, a print job could run for many hours, or even multiple days. It would be useful for MSM to allow makers to reserve time on a tool and allow other makers to see that the tool is reserved and unavailable until a given time.&lt;br /&gt;
&lt;br /&gt;
Reservations block-out for class times or maintenance windows.&lt;br /&gt;
&lt;br /&gt;
==== Manager / Staff skills matching ====&lt;br /&gt;
Provide a new capability in MSM to allow staff and volunteer managers to swipe in and out while indicating if they are working or just using the space as a maker. &lt;br /&gt;
&lt;br /&gt;
The system should provide a display of all on-duty managers and staff, displaying each manager&#039;s photo and list of each&#039;s skills / specialties. This to help makers using the space know who to best ask questions about a particular tool or technique. &lt;br /&gt;
&lt;br /&gt;
====Resale of maker materials, tooling, etc.====&lt;br /&gt;
&lt;br /&gt;
We would like to be able to resell materials such as sheet goods (plywood, MDF, acrylic, etc.) 3D printer filament, tooling (CNC router bits, milling machine tooling, etc.) This is a service to makers who don&#039;t necessarily have the ability to transport physically large materials.&lt;br /&gt;
&lt;br /&gt;
Further definition is needed to specify how payments will be taken. We don&#039;t want to accept cash and are uneasy about volunteer managers having access to maker credit/debit cards. Ideally, payments would be charged against a maker&#039;s account balance. Is it possible to use an existing student payment system such as Terrapin Express?&lt;br /&gt;
&lt;br /&gt;
=== FERPA Concerns ===&lt;br /&gt;
Since LabSwipe data is student data there may be concern that some of the data may fall under the protection of the Family Educational Rights and Privacy Act (FERPA). FERPA requires protection of &amp;quot;Personally Identifiable Information&amp;quot; (PII) from release to 3rd parties. Anyone using student PII must take steps to protect this from release, even through the action of a student working in the makerspace. FERPA exempts from the protection requirement certain &amp;quot;Directory Information&amp;quot; that is commonly used. It requires each university to identify what information is considered &amp;quot;Directory Information&amp;quot; &lt;br /&gt;
&lt;br /&gt;
UMD defines their PII and Directory Information here: https://academiccatalog.umd.edu/undergraduate/university-policies/ In July 2020 this policy defined UMD PII &amp;amp; Directory Information as:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;quot;Personally identifiable information&amp;quot; or &amp;quot;PII&amp;quot; means data or information which includes, but is not limited to:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*a student’s name;&lt;br /&gt;
*a name of a student’s parent or family member&lt;br /&gt;
*an address of a student or a student’s family; &lt;br /&gt;
*a personal identifier, such as a social security number, University Identification Number (UID), or biometric record; &lt;br /&gt;
*other indirect identifiers, such as mother’s maiden name; &lt;br /&gt;
*other information that alone, or in combination, is linked or linkable to a specific student and that would allow a reasonable person in the UMD community who does not have personal knowledge of the relevant circumstances to identify the student with reasonable certainty; or information requested by a person who UMD reasonably believes knows the identity of the student to whom the education record relates.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;quot;Directory Information&amp;quot; means information which would generally not be considered harmful or an invasion of privacy if disclosed. It includes, but is not limited to, a student’s: &lt;br /&gt;
&lt;br /&gt;
*name, &lt;br /&gt;
*address, &lt;br /&gt;
*telephone listing, &lt;br /&gt;
*e-mail address, &lt;br /&gt;
*date and place of birth, &lt;br /&gt;
*major field of study, &lt;br /&gt;
*full-time/part-time status, &lt;br /&gt;
*participation in officially recognized activities and sports, &lt;br /&gt;
*weight and height of members of athletic teams, &lt;br /&gt;
*dates of attendance, &lt;br /&gt;
*degrees and awards received, and &lt;br /&gt;
*the most recent previous educational agency or institution attended&#039;&#039;   &lt;br /&gt;
&lt;br /&gt;
Note that UID is listed as PII but not excluded as &amp;quot;Directory Information&amp;quot; as is done at other institutions, especially those that also print UID on campus ID cards.&lt;br /&gt;
&lt;br /&gt;
= Parallel Development of Sandbox Kiosk Prototype =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Kiosk System Test&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sandbox hopes to continue the development and testing of a &#039;&#039;&#039;&#039;&#039;Kiosk System&#039;&#039;&#039;&#039;&#039; in Spring 2022. The kiosk system is envisioned as a way to improve tool usage tracking and replace the tool identification signage on each studio door. Each studio would have a touch screen computer system on or near the door that displays a visual listing of tools in that studio. Makers would be asked to select the tool they wanted to use. The kiosk would verify that the maker had completed any required training on that tool. &lt;br /&gt;
&lt;br /&gt;
By asking the maker to check the tool back in, we would be able to collect additional information about usage of individual tools as well as provide remote visibility of tool availability to makers planning on visiting the makerspace. &lt;br /&gt;
&lt;br /&gt;
Eventually we envision the kiosk system having additional functionality including  tool and studio reservation, broken tool tagging, identifying tool experts, etc.&lt;br /&gt;
&lt;br /&gt;
One possible initiative we could undertake would be the development of a prototype kiosk system for use in the various studios at Sandbox. This prototype would allow us to test ideas for MSM improvements and more quickly iterate through design concepts without having to modify the core MSM system. It would provide a working prototype useful for demonstrating our needs to the MSM development team, or to demonstrate our requirements if MSI decides to invest in an externally-developed system.&lt;br /&gt;
==== Overview of Sandbox Kiosk System ====&lt;br /&gt;
The existing MSM / LabSwipe system assumes each lab will be a single room or small number of related spaces that are hierarchically flat. Sandbox is a group of six different studios, each with a different type of tool. This leads to some confusion and a slowdown each time a maker checks in. If the tools are grouped alphabetically, a maker interested in electronics might check that he plans to use a &amp;quot;multimeter&amp;quot; then have to scroll past &amp;quot;multitool&amp;quot; and 3 different &amp;quot;sander&amp;quot; entries related to woodworking, 4 different types of &amp;quot;sewing machine&amp;quot; in the crafting studio before finding &amp;quot;soldering iron&amp;quot; a few pages down. We&#039;ve re-ordered the list by studio, which has helped quite a bit but makers using the woodworking studio have to scroll down several screens to find the start of tools they may want to use. While this may be fixable with some tweaks to the existing system UI, we&#039;ve uncovered other issues that we&#039;d like to address as well.&lt;br /&gt;
&lt;br /&gt;
In a review of system usage for the fall semester, we discovered that most students select a single tool regardless of the length of their visit. A maker may swipe in and select &amp;quot;laser cutter&amp;quot; as the tool they will be using but almost never returns to the front desk if (for example) they need to use a circular saw to trim their stock to the correct size, or need to use a drill to add a couple of holes to their project, or a sander to prepare it for finishing. Individually these failures aren&#039;t important but collectively they degrade the quality of data we hope to collect on tool usage and perhaps more importantly make it more difficult for us to report other statistics such as length of visit. Also, this avoidance bypasses the very important checking of training credentials that is a critical reason for having this system in the first place. Indeed, we found that a considerable number of students would select &amp;quot;no tool, table use only&amp;quot; when that option was made available. &lt;br /&gt;
&lt;br /&gt;
To improve this situation, we&#039;d like to move tool selection part of MSM closer to the point where the tool is used. Makers would still swipe in to the space when entering, but would not be asked whaic tools they plan to use. The extreme case of this would be to equip each tool with a sensor that indicated use and requested the maker picking up the tool to authenticate and verify their certification to use that tool. This would likely be too expensive to be practical except on the most hazardous or expensive tools such as milling machines, laser cutters, etc. What we propose and would like to test using the concept of kiosks, would be moving tool check-out to each individual studio. We envision a touch-screen display at the door of each studio. While the touch screen could be a self-contatrined system such as a iPad tablet, we are more inclined to use small computers such as the RaspberryPi. &lt;br /&gt;
&lt;br /&gt;
In a perfect world this kiosk system would be connected to the card key door lock system, but we don&#039;t envision that being possible because of political limitations with the UMD card key system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Initial Requirements for Kiosk Protoype ====&lt;br /&gt;
&lt;br /&gt;
* Kiosks to run Touch-screen terminals outside each Sandbox studio (to begin with woodworking studio and prototyping studio)&lt;br /&gt;
** Kiosk will display information about each tool available in that studio including training requirements and links to training materials. &lt;br /&gt;
** Tool information and training requirements should preferably come directly from existing wiki pages to ease updating. Either display wiki pages in embedded web browser or use mediawiki API to retrieve wiki content. &lt;br /&gt;
* Information shown on kiosk would include both publicly viewable (no login required) and private information (requiring login) such as maker&#039;s training accomplishments, etc.&lt;br /&gt;
** Provide quick and simple means for each maker to log in / authenticate with the system (card swipe, phone app, NFC, etc) &lt;br /&gt;
* Subset of information from kiosk system also available via login-secured web page accessible from off campus. Initially, remote functionality to include: &lt;br /&gt;
**ability to reserve a tool for a certain period of time, with the length of time specified by the maker, provided that request is within the limits set for that particular tool, perhaps also taking into account the time of day or day of week. &lt;br /&gt;
*** For example, a laser cutter might be reservible in blocks of 30 minutes with maximum of 3 blocks&lt;br /&gt;
*** A 3d printer might be reservible in blocks of 2 hours with the maximum number of blocks varying depending of day of week and time of day. For example, a Friday afternoon reservation might allow 48 hours total time, while Monday afternoon would only allow 4 hours total.&lt;br /&gt;
*** A more common power tool such as a jigsaw or drill might be reservible in blocks of 30 minutes with a maximum of 2-4 blocks.&lt;br /&gt;
** Some mechanism should be devised to prevent makers from always reserving the maximum number of blocks of time. &lt;br /&gt;
** display calendar view for each of the reservible tools that shows free/reserved blocks for each tool &lt;br /&gt;
** display calendar view for each studio that shows free/reserved status based on the tool being reserved. This view to be used to enforce Covid-19 distancing requirements&lt;br /&gt;
&lt;br /&gt;
= Listing of commercial or open source systems with overlapping functionality =&lt;br /&gt;
== Lists of Systems (other pages like this one)==&lt;br /&gt;
;Hackerspaces.org wishlist of software functions / features. :https://wiki.hackerspaces.org/Software_Wish_List&lt;br /&gt;
&lt;br /&gt;
;List of software from hackerspaces.org: https://wiki.hackerspaces.org/Hackerspace_Software\&lt;br /&gt;
&lt;br /&gt;
;MakerNexus notes on Access Control Systems: https://makernexuswiki.com/wiki/Access_Control_Systems&lt;br /&gt;
&lt;br /&gt;
== Individual Systems ==&lt;br /&gt;
=== Systems Focusing on Access Control (may include door access in addition to machine tool access / lockout) ===&lt;br /&gt;
(see also &#039;&#039;Systems Combining Access Control and Space Management&#039;&#039; below)&lt;br /&gt;
&lt;br /&gt;
:;Nova Labs Nova Pass : https://novapass.nova-labs.org/ (active system home page)&lt;br /&gt;
::(description from Makerfaire: https://nova.makerfaire.com/maker/entry/1224/) &lt;br /&gt;
::(details:https://goo.gl/RVmtiS)&lt;br /&gt;
&lt;br /&gt;
:;RATT - RFID All The Things: New Hampshire&#039;s MakeIT Labs RaspPi based RFID access control system. https://github.com/makeitlabs/ratt (video: https://www.youtube.com/watch?v=erwIPVwXUr8)&lt;br /&gt;
&lt;br /&gt;
:;FATT - FOB all The Things: Ace makerspace (formerly Ace Master Toys) https://www.acemakerspace.org/fatt-project/&lt;br /&gt;
::;Ace Master Toys: Makerspace system based on Google&#039;s AuthBox system  https://github.com/google/makerspace-auth&lt;br /&gt;
::;Ace Makerspace Occupancy System: https://www.youtube.com/watch?v=kemAM8MWIN8&lt;br /&gt;
&lt;br /&gt;
:;Google Makerspace Auth (aka AuthBox): https://github.com/google/makerspace-auth&lt;br /&gt;
&lt;br /&gt;
:;Ithaca Generator AuthBox&lt;br /&gt;
:* https://discuss.ithacagenerator.org/t/makerspace-authbox-on-github/565/3&lt;br /&gt;
:* https://github.com/ithacagenerator/AuthBox&lt;br /&gt;
&lt;br /&gt;
:;Manchester, NH MakerAuth&lt;br /&gt;
:* https://github.com/ManchesterMakerspace/MakerAuth&lt;br /&gt;
&lt;br /&gt;
:;RasPi-Lockout (designed for RIT Construct Makerspace): &lt;br /&gt;
:* https://www.youtube.com/watch?v=aoAdB13IVr0 (YouTube demo)&lt;br /&gt;
:* https://github.com/jaschawilcox/raspi-lockout (GitHub Repo)&lt;br /&gt;
&lt;br /&gt;
:;Build Brighton Access Node: https://www.youtube.com/watch?v=3X64JmTpOcA&lt;br /&gt;
&lt;br /&gt;
:;Open Access Control: Uses the Arduino hardware to build a robust access control and alarm system. https://code.google.com/archive/p/open-access-control/&lt;br /&gt;
&lt;br /&gt;
:;tinkerAccess: The tinkerAccess system is a Raspberry Pi based access control system that can be used to prevent unauthorized users from using devices that require special training. It could also conceivably be used to control electronic lock boxes or doors. The system was originally designed and created by Matt Stallard, Ron Thomas, and Matt Peopping for TinkerMill a makerspace in Longmont, CO. It is continually being maintained and enhanced by other contributors in the community. https://github.com/TinkerMill/tinkerAccess&lt;br /&gt;
&lt;br /&gt;
:;Triple Cities Makerspace ACS System: https://www.tcmakerspace.com/index.php/2019/08/19/project-profile-access-control-system-acs/&lt;br /&gt;
&lt;br /&gt;
:;The MakerBarn in The Woodlands, Texas MACS System: http://koljawindeler.github.io/macs/.  &lt;br /&gt;
::* MACS UI Video: https://www.youtube.com/watch?v=zLidqAPo3Cs &lt;br /&gt;
::* An Introduction to the MACS - Makerspace Access Control System: https://www.youtube.com/watch?v=CI3xxsBM9SE&lt;br /&gt;
&lt;br /&gt;
:;PITT-X Makerspace Access System: https://www.youtube.com/watch?v=2HG-vyV4yoM&lt;br /&gt;
&lt;br /&gt;
:;Member Access System for Pumping Station One :https://github.com/hef/ps1auth&lt;br /&gt;
::https://github.com/bdenne2/ps1auth&lt;br /&gt;
&lt;br /&gt;
:;HACCSY: Hackerspace Access Control and Check in System. Works with Seltzer CRM, running on a Raspberry Pi. https://www.instructables.com/id/HACCSY-Hackerspace-Access-Control-and-Check-in-Sys/&lt;br /&gt;
&lt;br /&gt;
:;Open Access Control Ethernet: https://github.com/zyphlar/Open_Access_Control_Ethernet&lt;br /&gt;
::;Open Source Access Control Web Interface (works with above) :https://github.com/zyphlar/Open-Source-Access-Control-Web-Interface&lt;br /&gt;
&lt;br /&gt;
=== Systems Combining Access Control and Space Management (may include elements of CRM, AR/AP, training management, inventory control, etc.)  ===&lt;br /&gt;
&lt;br /&gt;
;Safety Spot :Commercial maker space management software widely used in university maker spaces. https://www.safetyspot.com/ &lt;br /&gt;
&lt;br /&gt;
;(UC Berkeley) Makerpass system onepager: https://assets.pubpub.org/hpise2ck/01585588151622.pdf&lt;br /&gt;
&lt;br /&gt;
;Recursion: https://recursion.space Commercial system with free tier. Patented equipment lockout controller.&lt;br /&gt;
&lt;br /&gt;
;UT Austin FabApp/JuiceBox: FabApp is a PHP-based system for managing a makerspace (https://github.com/UTA-FabLab/fabapp). JuiceBox is a Python-based system for providing access control to power tools (https://github.com/UTA-FabLab/JuiceBox).  These and other UTA apps are on the UTA GitHub: https://github.com/UTA-FabLab&lt;br /&gt;
&lt;br /&gt;
;UT Austin Team Lockout: https://blog.uta.edu/cseseniordesign/2019/07/20/lockout/ The Maker Space Lockout System correctly gives access to Machinery only to users that have been adequately briefed on the machinery’s safety and operation. The system will be able to control access for each user according to their level of skill and expertise. Users of The Maker Space Lockout System will also become more equipped to handle and view wear and tear on machines via the data collection purge at the end of each job.&lt;br /&gt;
&lt;br /&gt;
===Not yet Categorized ===&lt;br /&gt;
&lt;br /&gt;
:;Fabman software :Management software with machine control hardware devices, API, and other features. https://fabman.io/&lt;br /&gt;
&lt;br /&gt;
:;RFIDDoorLock: https://wiki.melbournemakerspace.org/projects/RFIDDoorLock&lt;br /&gt;
&lt;br /&gt;
:;Byro :https://github.com/byro/byro&lt;br /&gt;
&lt;br /&gt;
:;HSBNE :https://github.com/hsbne/hsbneportal&lt;br /&gt;
&lt;br /&gt;
:;MetalabOS: https://github.com/Metalab/mos/&lt;br /&gt;
&lt;br /&gt;
:;NOMOS (Membership Management):  https://github.com/vhs/nomos&lt;br /&gt;
&lt;br /&gt;
:;MeMaTool: https://github.com/sim0nx/mematool&lt;br /&gt;
&lt;br /&gt;
:;RFID Tool Cabinet: https://www.youtube.com/watch?v=u-L_7pyPcvE&lt;br /&gt;
&lt;br /&gt;
=== Systems Focusing on Space Management without Access Control (may include elements of CRM, AR/AP, training management, inventory control, etc.)  ===&lt;br /&gt;
(Some of these may integrate with other Access Control Systems)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:;WildApricot :Membership management software used by many maker spaces. https://www.wildapricot.com/&lt;br /&gt;
&lt;br /&gt;
:;Seltzer CRM: Open source CRM / membership management software created by a maker space and designed to be extensible and easily modified.  https://wiki.hackerspaces.org/Seltzer_CRM&lt;br /&gt;
&lt;br /&gt;
:;SIMPL: (Software primarily designed to manage coworking spaces with features to support maker spaces) https://smpl.io/software/makerspaces/&lt;br /&gt;
&lt;br /&gt;
:;OpenBravo (ERM/ERP) :https://www.openbravo.com/&lt;br /&gt;
&lt;br /&gt;
:;WikiSpaces :The primary goal of the WikiSpaces project is to provide a &#039;startup&#039; wiki, which is basically a MediaWiki distribution especially for hackerspaces. This distribution will provide a working, up to date, MediaWiki installation, with the commonly needed extensions installed and configured. https://wiki.hackerspaces.org/WikiSpaces&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Not Yet Categorized ====&lt;br /&gt;
&lt;br /&gt;
:;Scholarly article on value of information collected using Maker Lens / MakerPass access system. :  https://people.eecs.berkeley.edu/~eschoop/docs/makerlens.pdf&lt;/div&gt;</summary>
		<author><name>Gfc</name></author>
	</entry>
	<entry>
		<id>https://sandbox.umd.edu/wiki/index.php?title=Talk:Maker_Space_Manager_System&amp;diff=3426</id>
		<title>Talk:Maker Space Manager System</title>
		<link rel="alternate" type="text/html" href="https://sandbox.umd.edu/wiki/index.php?title=Talk:Maker_Space_Manager_System&amp;diff=3426"/>
		<updated>2026-10-16T18:26:36Z</updated>

		<summary type="html">&lt;p&gt;Gfc: /* Parallel Development of Sandbox Kiosk Prototype */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==ARCHIVE LabSwipe /MSM System Development History &amp;amp; 2022 Road Map ==&lt;br /&gt;
&lt;br /&gt;
===Development History===&lt;br /&gt;
Would someone on the Labswipe team add to this section?&lt;br /&gt;
&lt;br /&gt;
===Current Release===&lt;br /&gt;
&lt;br /&gt;
===Future Enhancements===&lt;br /&gt;
&lt;br /&gt;
Road Map for future enhancements.  &lt;br /&gt;
&lt;br /&gt;
==== 2021-2022 MSM Rework Outline ====&lt;br /&gt;
*Outline of desired improvements for development work from Summer 2021 to Summer 2022&lt;br /&gt;
===== 2021 =====&lt;br /&gt;
* Improvements to existing UI / core LabSwipe functionality (Fall 21) &lt;br /&gt;
** Improved editing of data entry fields&lt;br /&gt;
** Integration with UMD swipe Identity API to correctly identify new cards swiped into system and close current opportunity for student to use a created ID card with false UID.&lt;br /&gt;
** Integration with UMD swipe API to:&lt;br /&gt;
*** Identify deactivated student ID cards and &lt;br /&gt;
*** Update CardID serial number when a lost ID card is replaced with a new card.&lt;br /&gt;
&lt;br /&gt;
===== 2022 =====&lt;br /&gt;
* Integration with Canvas LMS (Spring 22)&lt;br /&gt;
** Using Canvas API, ensuring API key is well protected using a secrets manager or similar approach&lt;br /&gt;
** Implement a middle layer between MSM and Canvas to track training certifications (similar to a micro credentialing system) in a way that creates an abstraction layer between a canvas course and a training certification.&lt;br /&gt;
** See &#039;&#039;&#039;Integration with ELMS/Canvas Learning Management System&#039;&#039;&#039; below for detail&lt;br /&gt;
&lt;br /&gt;
===== Overview of Enhancements  =====&lt;br /&gt;
*Additional Enhancements not yet implemented (many not yet scheduled).&lt;br /&gt;
** Integration with a tool access control system (such as Safety Spot, The Google system used at Ace Makerspace and elsewhere, or the Nova Pass system)&lt;br /&gt;
*** See &#039;&#039;&#039;Tool Access Control&#039;&#039;&#039; below for details&lt;br /&gt;
*** This integration would require certain tools flagged in system to have a swipe card reader at the tool which verifies training before tool will operate. &lt;br /&gt;
*** While extending MSM to support tool access control, modify it as well to allow a particular makerspace to set up a two-tier implementation of MSM where initial swipe allows entry into makerspace without selecting a specific tool (but perhaps requires the selection of a studio or category of tool) and subsequent swipe was required to select a particular tool. &lt;br /&gt;
** Tool reservation / tool-in-use flagging&lt;br /&gt;
** Tool Loan (away from makerspace)&lt;br /&gt;
** Student charging system (allow students to purchase materials and tooling using student ID or credit card.&lt;br /&gt;
** Faculty charging system (allow faculty / researchers to purchase materials using KFC account #)&lt;br /&gt;
** Matching of maker skills between students and managers. &lt;br /&gt;
** Campus-wide inventory of tools at each makerspace with ability for students to search for a particular tool (similar to MIT Manus system)&lt;br /&gt;
&lt;br /&gt;
Many of these are presented in more detail below:&lt;br /&gt;
&lt;br /&gt;
==== Integration with ELMS/Canvas Learning Management System====&lt;br /&gt;
Currently Labswipe stores training accomplishments in a Google Sheet. This needs to be manually updated. A brief look at the sheet shows very few of our makerspaces are making these manual updates. &lt;br /&gt;
&lt;br /&gt;
Sandbox implemented makerspace training in ELMS/Canvas in 2019. Initially we were manually updating the Labswipe sheet from Canvas but this became very time consuming. We wrote a Canvas API query tool that re-formats the Canvas results to make the updates a bit easier. We considered automating the Labswipe sheet update process but discontinued our efforts on this when it was decided to move the Labswipe back end from google sheets to AWS.&lt;br /&gt;
&lt;br /&gt;
Adding a badging or micro-credentialing plugin to Canvas was attempted in 2019-2020. Sandbox hoped that by adding this capability to Canvas we could avoid concerns about running queries directly against the Canvas system (which contains protected information about students) While the primary benefit would be isolating us from FERPA concerns, the badging system Would also simplify our queries (especially for training completed at a different makerspace), allow us to track training not done in Canvas (such as Welding or other training requiring direct, hands-on instruction), and also provide additional ways to gamify training (for example by allowing training tiers, &#039;leveling up&#039;, etc.) Our request to add a badging plugin to Canvas was rejected by DIT. We understand that a request to add a different badging system has been made by a different department and is still under consideration. &lt;br /&gt;
    &lt;br /&gt;
*We&#039;d like future versions of Labswipe to have the capability to update training accomplishments from Canvas. &lt;br /&gt;
&lt;br /&gt;
*Ideally this update would happen every time a maker swiped in to the system. &lt;br /&gt;
&lt;br /&gt;
*The system should support tracking of training that was completed at other UMD MSI makerspaces to support the MSI plans to open up access to makerspaces across campus. For example, a maker who completed Glowforge laser training at one of the library makerspaces should be able to use the Sandbox Glowforge without additional training.&lt;br /&gt;
&lt;br /&gt;
==== Improve quantity and quality of tool usage data being gathered. ====&lt;br /&gt;
&lt;br /&gt;
Currently, the MSM system only asks each makerspace visitor which tools they will be using when they first swipe in at the front door. We&#039;ve found this arrangement results in distorted statistics as many users just select the first tool they see on the list, don&#039;t take the time to check off every tool they intend to use, and often end up using tools they hadn&#039;t intended when they first arrived. &lt;br /&gt;
&lt;br /&gt;
An improvement would be to add additional data gathering points in the makerspace. For example, by adding touch screens with swipe readers in each workshop or tool storage area we could encourage makers to log every tool they use by making the process more convenient. Another approach would be to use a mobile web app to log tool usage by scanning each tool&#039;s barcode or otherwise selecting the tool. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Several of the entries below relate to our goal of gathering more data on tool usage. &lt;br /&gt;
*For example, the safety-driven requirement to add Tool Access Control lockout devices to dangerous tools (such as chop saws and lathes) will also help us gather more detailed tool usage data for those dangerous tools. &lt;br /&gt;
*Adding an advanced tool reservation capability will add additional usage data for popular tools such as 3D printers and laser cutters. &lt;br /&gt;
*Rather than add expensive lockout devices to all tools, we discuss the possible idea of adding Tool-In-Use flagging.&lt;br /&gt;
&lt;br /&gt;
All of these work together to not only better track tool usage but also to improve the user experience and reduce frustration, increase compliance with training requirements, and ensue our compliance with campus safety rules.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Tool Access Control ====&lt;br /&gt;
&lt;br /&gt;
Once the MSM system is able to look up tool training certification information using the ELMS/Canvas APAI. we&#039;d like to add on to MSM additional hardware and software that will directly control use of certain tools that are deemed to be dangerous (such as a CNC router, milling machine, band saw, etc.) or other tools that, while not particularly dangerous, require specific knowledge to operate correctly (such as laser cutter, SLA 3D printer, etc) to avoid damaging the tool. &lt;br /&gt;
&lt;br /&gt;
* This access control system should be implemented as a separate hardware and software system connected to each tool we wish to have this added level of access control. While we envision this being implemented using commercially-available micro controllers (such as an Arduino-compatible microcontroller) or single board computers (such as a Raspberry Pi computer) any other implementation is acceptable so long as it provides a low cost per controlled machine tool.&lt;br /&gt;
&lt;br /&gt;
* This access control capability would require each maker to swipe their UMD ID before using that tool. Use of a UMD ID is preferred since all students and staff already carry this with them. Other authentication mechanism such as RFID or other ID card that works by proximity instead of requiring a physical swipe, or NFC or similar systems using a person&#039;s cell phone. For systems not using UMD ID magnetic stripe cards, the cost of additional cards, software, etc must be factored into our decision to use that system.  &lt;br /&gt;
&lt;br /&gt;
* The system would look up the makers ID in a central database, and if able to verify that the maker is trained and certified to use the tool, the system would allow use of that tool. The preferred central database would be the existing UMD ELMS/Canvas Learning Management System or a system (such as a micro credentialing or badging system) that is connected to and synchronized with the ELMS/Canvas system. Systems that provide a central database system other than ELMS / Canvas must provide an automatic mechanism to update the database using the ELMS / Canvas API.  &lt;br /&gt;
&lt;br /&gt;
* The means to allow use of the tool should be by:&lt;br /&gt;
** Switching on power through a relay or contactor controlled by the software logic &lt;br /&gt;
** Enabling a logical +5 volt signal to be read by the tool&#039;s existing controller (such as an ENABLE signal)&lt;br /&gt;
** By deactivating the tool&#039;s e-stop circuit, restoring a cabinet interlock circuit, or other mechanism by closing or opening a relay contacts. (i.e. dry contact closure)&lt;br /&gt;
** Several different approaches (ideally all of those listed above) should be provided to adapt the system to the widest variety of machine tools and their control systems.&lt;br /&gt;
* The system should provide some way to prevent the maker from walking away and leaving the tool in an operational state. Some research and discussion are needed to determine the best approach for this but a simple example would be by setting a timeout after which the system requires the user to verify they are present by pushing a button or re-swiping their ID. This capability should be settable per-tool.&lt;br /&gt;
* For tools enabled by simply applying power, the system should prevent these tools from starting up immediately on authentication to prevent unsafe situations. For example, by using a magnetic motor starter.&lt;br /&gt;
* The system should ideally store locally a list of the IDs for all makers who recently were authenticated to use the tool (or store a list of all authorized users, updated periodically) This is to permit use of the tool control system even if the central database is unavailable or if network connectivity has failed.&lt;br /&gt;
* A display on each access control station would ideally display information such as the name of the current authorized user (or last user if tool is idle), length of tool use (or countdown to expiration), connectivity check, etc.&lt;br /&gt;
&lt;br /&gt;
==== System Support for Enforcing Buddy System ====&lt;br /&gt;
&lt;br /&gt;
UMD ESSR safety rule changes require certain tools to be used with the &amp;quot;buddy system&amp;quot; In short, the &amp;quot;buddy system&amp;quot; prohibits certain dangerous tools to be used by a person alone in the workshop. Another person must be close enough to see and hear the tool being used so they can render aid and call for assistance in case of injury.&lt;br /&gt;
&lt;br /&gt;
The MSM system should provide support for enforcing the buddy system. This support could entail requiring a second person to swipe in when using certain tools. This requirement might be limited to certain times of day (for example during the evening or when staff is reduced. The requirements for buddy system support are not yet clear, this is a placeholder.&lt;br /&gt;
&lt;br /&gt;
==== Tool-In-Use Flagging ====&lt;br /&gt;
&lt;br /&gt;
An additional capability desired is the ability to flag the status of a tool as &#039;&#039;&#039;&#039;&#039;In Use&#039;&#039;&#039;&#039;&#039;, &#039;&#039;&#039;&#039;&#039;Available for Use&#039;&#039;&#039;&#039;&#039;, or other statuses such as &#039;&#039;&#039;&#039;&#039;Awaiting Repair&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;Out of Service&#039;&#039;&#039;&#039;&#039; Since demand for many tools is high and a student may be frustrated if they travel to a makerspace only to find a particular tool unavailable, it would be helpful for the system to flag tools that are not available for use because they are being used by someone else or are broken or otherwise unavailable. &lt;br /&gt;
&lt;br /&gt;
* For tools that are not in service, a makerspace staff member should be able to change the status through a web interface. &lt;br /&gt;
** The system should record a date/time stamp for when the tool was taken out of service and a date stamp for an expected return-to-service. &lt;br /&gt;
*For tools being used by a maker, the MSM system should provide a mechanism for students to quickly and easily select a tool for use. This capability should allow the use of that tool for a fixed period of time, ideally this time period would differ for different types of tools (for example, a hammer would be flagged as in-use for 1-hour intervals while a sewing machine might have longer intervals such as 3 hours.&lt;br /&gt;
** The Tool-in-Use flag feature would verify the maker has completed any necessary training.&lt;br /&gt;
** When a different maker wishes to use that tool, they would see that the tool was currently in use by another maker and would also see the time the tool is expected to be available for their use. &lt;br /&gt;
** If a tool is still being used by that maker after the check-in time has passed, the new maker would have the right to be the next to use the tool.&lt;br /&gt;
** Ideally, the system would send an SMS message or some other sort of notification that the maker&#039;s use time has expired.&lt;br /&gt;
** Some examples of quick and easy mechanisms for makers to lag that they are using a tool &lt;br /&gt;
*** A touch screen kiosk in each workshop or tool storage area.&lt;br /&gt;
*** A QR code on each tool or on the storage location for each tool. The QR code would be scanned by the maker using the tool&lt;br /&gt;
*** A mobile web app used by the maker.&lt;br /&gt;
&lt;br /&gt;
Note that the Tool-In-Use Flag Feature will provide a great deal of useful information about the relative popularity of each tool and could provide data to support the purchase of additional tools.&lt;br /&gt;
&lt;br /&gt;
==== Tool Check-Out / Check-In (for use in makerspace) ====&lt;br /&gt;
See &#039;&#039;&#039;Tool-In-Use flagging&#039;&#039;&#039; above. &#039;Check-In&#039; and &#039;Check-Out&#039; functions would be used by a student when they take a tool from storage to their work area or return it to storage. Note that Check-Out is different than Tool-Loan which entails removing a tool from the makerspace.&lt;br /&gt;
&lt;br /&gt;
==== Tool Reservation ====&lt;br /&gt;
&lt;br /&gt;
Several tools (such as laser cutters or 3D printers are popular and makers often wish to sign-up in advance for a window of time to use the tool. In the case of 3D printers, a print job could run for many hours, or even multiple days. It would be useful for MSM to allow makers to reserve time on a tool and allow other makers to see that the tool is reserved and unavailable until a given time.&lt;br /&gt;
&lt;br /&gt;
Reservations block-out for class times or maintenance windows.&lt;br /&gt;
&lt;br /&gt;
==== Manager / Staff skills matching ====&lt;br /&gt;
Provide a new capability in MSM to allow staff and volunteer managers to swipe in and out while indicating if they are working or just using the space as a maker. &lt;br /&gt;
&lt;br /&gt;
The system should provide a display of all on-duty managers and staff, displaying each manager&#039;s photo and list of each&#039;s skills / specialties. This to help makers using the space know who to best ask questions about a particular tool or technique. &lt;br /&gt;
&lt;br /&gt;
====Resale of maker materials, tooling, etc.====&lt;br /&gt;
&lt;br /&gt;
We would like to be able to resell materials such as sheet goods (plywood, MDF, acrylic, etc.) 3D printer filament, tooling (CNC router bits, milling machine tooling, etc.) This is a service to makers who don&#039;t necessarily have the ability to transport physically large materials.&lt;br /&gt;
&lt;br /&gt;
Further definition is needed to specify how payments will be taken. We don&#039;t want to accept cash and are uneasy about volunteer managers having access to maker credit/debit cards. Ideally, payments would be charged against a maker&#039;s account balance. Is it possible to use an existing student payment system such as Terrapin Express?&lt;br /&gt;
&lt;br /&gt;
=== FERPA Concerns ===&lt;br /&gt;
Since LabSwipe data is student data there may be concern that some of the data may fall under the protection of the Family Educational Rights and Privacy Act (FERPA). FERPA requires protection of &amp;quot;Personally Identifiable Information&amp;quot; (PII) from release to 3rd parties. Anyone using student PII must take steps to protect this from release, even through the action of a student working in the makerspace. FERPA exempts from the protection requirement certain &amp;quot;Directory Information&amp;quot; that is commonly used. It requires each university to identify what information is considered &amp;quot;Directory Information&amp;quot; &lt;br /&gt;
&lt;br /&gt;
UMD defines their PII and Directory Information here: https://academiccatalog.umd.edu/undergraduate/university-policies/ In July 2020 this policy defined UMD PII &amp;amp; Directory Information as:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;quot;Personally identifiable information&amp;quot; or &amp;quot;PII&amp;quot; means data or information which includes, but is not limited to:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*a student’s name;&lt;br /&gt;
*a name of a student’s parent or family member&lt;br /&gt;
*an address of a student or a student’s family; &lt;br /&gt;
*a personal identifier, such as a social security number, University Identification Number (UID), or biometric record; &lt;br /&gt;
*other indirect identifiers, such as mother’s maiden name; &lt;br /&gt;
*other information that alone, or in combination, is linked or linkable to a specific student and that would allow a reasonable person in the UMD community who does not have personal knowledge of the relevant circumstances to identify the student with reasonable certainty; or information requested by a person who UMD reasonably believes knows the identity of the student to whom the education record relates.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;quot;Directory Information&amp;quot; means information which would generally not be considered harmful or an invasion of privacy if disclosed. It includes, but is not limited to, a student’s: &lt;br /&gt;
&lt;br /&gt;
*name, &lt;br /&gt;
*address, &lt;br /&gt;
*telephone listing, &lt;br /&gt;
*e-mail address, &lt;br /&gt;
*date and place of birth, &lt;br /&gt;
*major field of study, &lt;br /&gt;
*full-time/part-time status, &lt;br /&gt;
*participation in officially recognized activities and sports, &lt;br /&gt;
*weight and height of members of athletic teams, &lt;br /&gt;
*dates of attendance, &lt;br /&gt;
*degrees and awards received, and &lt;br /&gt;
*the most recent previous educational agency or institution attended&#039;&#039;   &lt;br /&gt;
&lt;br /&gt;
Note that UID is listed as PII but not excluded as &amp;quot;Directory Information&amp;quot; as is done at other institutions, especially those that also print UID on campus ID cards.&lt;br /&gt;
&lt;br /&gt;
= Parallel Development of Sandbox Kiosk Prototype =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Kiosk System Test&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sandbox hopes to continue the development and testing of a &#039;&#039;&#039;&#039;&#039;Kiosk System&#039;&#039;&#039;&#039;&#039; in Spring 2022. The kiosk system is envisioned as a way to improve tool usage tracking and replace the tool identification signage on each studio door. Each studio would have a touch screen computer system on or near the door that displays a visual listing of tools in that studio. Makers would be asked to select the tool they wanted to use. The kiosk would verify that the maker had completed any required training on that tool. &lt;br /&gt;
&lt;br /&gt;
By asking the maker to check the tool back in, we would be able to collect additional information about usage of individual tools as well as provide remote visibility of tool availability to makers planning on visiting the makerspace. &lt;br /&gt;
&lt;br /&gt;
Eventually we envision the kiosk system having additional functionality including  tool and studio reservation, broken tool tagging, identifying tool experts, etc.&lt;br /&gt;
&lt;br /&gt;
One possible initiative we could undertake would be the development of a prototype kiosk system for use in the various studios at Sandbox. This prototype would allow us to test ideas for MSM improvements and more quickly iterate through design concepts without having to modify the core MSM system. It would provide a working prototype useful for demonstrating our needs to the MSM development team, or to demonstrate our requirements if MSI decides to invest in an externally-developed system.&lt;br /&gt;
==== Overview of Sandbox Kiosk System ====&lt;br /&gt;
The existing MSM / LabSwipe system assumes each lab will be a single room or small number of related spaces that are hierarchically flat. Sandbox is a group of six different studios, each with a different type of tool. This leads to some confusion and a slowdown each time a maker checks in. If the tools are grouped alphabetically, a maker interested in electronics might check that he plans to use a &amp;quot;multimeter&amp;quot; then have to scroll past &amp;quot;multitool&amp;quot; and 3 different &amp;quot;sander&amp;quot; entries related to woodworking, 4 different types of &amp;quot;sewing machine&amp;quot; in the crafting studio before finding &amp;quot;soldering iron&amp;quot; a few pages down. We&#039;ve re-ordered the list by studio, which has helped quite a bit but makers using the woodworking studio have to scroll down several screens to find the start of tools they may want to use. While this may be fixable with some tweaks to the existing system UI, we&#039;ve uncovered other issues that we&#039;d like to address as well.&lt;br /&gt;
&lt;br /&gt;
In a review of system usage for the fall semester, we discovered that most students select a single tool regardless of the length of their visit. A maker may swipe in and select &amp;quot;laser cutter&amp;quot; as the tool they will be using but almost never returns to the front desk if (for example) they need to use a circular saw to trim their stock to the correct size, or need to use a drill to add a couple of holes to their project, or a sander to prepare it for finishing. Individually these failures aren&#039;t important but collectively they degrade the quality of data we hope to collect on tool usage and perhaps more importantly make it more difficult for us to report other statistics such as length of visit. Also, this avoidance bypasses the very important checking of training credentials that is a critical reason for having this system in the first place. Indeed, we found that a considerable number of students would select &amp;quot;no tool, table use only&amp;quot; when that option was made available. &lt;br /&gt;
&lt;br /&gt;
To improve this situation, we&#039;d like to move tool selection part of MSM closer to the point where the tool is used. Makers would still swipe in to the space when entering, but would not be asked whaic tools they plan to use. The extreme case of this would be to equip each tool with a sensor that indicated use and requested the maker picking up the tool to authenticate and verify their certification to use that tool. This would likely be too expensive to be practical except on the most hazardous or expensive tools such as milling machines, laser cutters, etc. What we propose and would like to test using the concept of kiosks, would be moving tool check-out to each individual studio. We envision a touch-screen display at the door of each studio. While the touch screen could be a self-contatrined system such as a iPad tablet, we are more inclined to use small computers such as the RaspberryPi. &lt;br /&gt;
&lt;br /&gt;
In a perfect world this kiosk system would be connected to the card key door lock system, but we don&#039;t envision that being possible because of political limitations with the UMD card key system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Initial Requirements for Kiosk Protoype ====&lt;br /&gt;
&lt;br /&gt;
* Kiosks to run Touch-screen terminals outside each Sandbox studio (to begin with woodworking studio and prototyping studio)&lt;br /&gt;
** Kiosk will display information about each tool available in that studio including training requirements and links to training materials. &lt;br /&gt;
** Tool information and training requirements should preferably come directly from existing wiki pages to ease updating. Either display wiki pages in embedded web browser or use mediawiki API to retrieve wiki content. &lt;br /&gt;
* Information shown on kiosk would include both publicly viewable (no login required) and private information (requiring login) such as maker&#039;s training accomplishments, etc.&lt;br /&gt;
** Provide quick and simple means for each maker to log in / authenticate with the system (card swipe, phone app, NFC, etc) &lt;br /&gt;
* Subset of information from kiosk system also available via login-secured web page accessible from off campus. Initially, remote functionality to include: &lt;br /&gt;
**ability to reserve a tool for a certain period of time, with the length of time specified by the maker, provided that request is within the limits set for that particular tool, perhaps also taking into account the time of day or day of week. &lt;br /&gt;
*** For example, a laser cutter might be reservible in blocks of 30 minutes with maximum of 3 blocks&lt;br /&gt;
*** A 3d printer might be reservible in blocks of 2 hours with the maximum number of blocks varying depending of day of week and time of day. For example, a Friday afternoon reservation might allow 48 hours total time, while Monday afternoon would only allow 4 hours total.&lt;br /&gt;
*** A more common power tool such as a jigsaw or drill might be reservible in blocks of 30 minutes with a maximum of 2-4 blocks.&lt;br /&gt;
** Some mechanism should be devised to prevent makers from always reserving the maximum number of blocks of time. &lt;br /&gt;
** display calendar view for each of the reservible tools that shows free/reserved blocks for each tool &lt;br /&gt;
** display calendar view for each studio that shows free/reserved status based on the tool being reserved. This view to be used to enforce Covid-19 distancing requirements&lt;br /&gt;
&lt;br /&gt;
= Listing of commercial or open source systems with overlapping functionality =&lt;br /&gt;
== Lists of Systems (other pages like this one)==&lt;br /&gt;
;Hackerspaces.org wishlist of software functions / features. :https://wiki.hackerspaces.org/Software_Wish_List&lt;br /&gt;
&lt;br /&gt;
;List of software from hackerspaces.org: https://wiki.hackerspaces.org/Hackerspace_Software\&lt;br /&gt;
&lt;br /&gt;
;MakerNexus notes on Access Control Systems: https://makernexuswiki.com/wiki/Access_Control_Systems&lt;br /&gt;
&lt;br /&gt;
== Individual Systems ==&lt;br /&gt;
=== Systems Focusing on Access Control (may include door access in addition to machine tool access / lockout) ===&lt;br /&gt;
(see also &#039;&#039;Systems Combining Access Control and Space Management&#039;&#039; below)&lt;br /&gt;
&lt;br /&gt;
:;Nova Labs Nova Pass : https://novapass.nova-labs.org/ (active system home page)&lt;br /&gt;
::(description from Makerfaire: https://nova.makerfaire.com/maker/entry/1224/) &lt;br /&gt;
::(details:https://goo.gl/RVmtiS)&lt;br /&gt;
&lt;br /&gt;
:;RATT - RFID All The Things: New Hampshire&#039;s MakeIT Labs RaspPi based RFID access control system. https://github.com/makeitlabs/ratt (video: https://www.youtube.com/watch?v=erwIPVwXUr8)&lt;br /&gt;
&lt;br /&gt;
:;FATT - FOB all The Things: Ace makerspace (formerly Ace Master Toys) https://www.acemakerspace.org/fatt-project/&lt;br /&gt;
::;Ace Master Toys: Makerspace system based on Google&#039;s AuthBox system  https://github.com/google/makerspace-auth&lt;br /&gt;
::;Ace Makerspace Occupancy System: https://www.youtube.com/watch?v=kemAM8MWIN8&lt;br /&gt;
&lt;br /&gt;
:;Google Makerspace Auth (aka AuthBox): https://github.com/google/makerspace-auth&lt;br /&gt;
&lt;br /&gt;
:;Ithaca Generator AuthBox&lt;br /&gt;
:* https://discuss.ithacagenerator.org/t/makerspace-authbox-on-github/565/3&lt;br /&gt;
:* https://github.com/ithacagenerator/AuthBox&lt;br /&gt;
&lt;br /&gt;
:;Manchester, NH MakerAuth&lt;br /&gt;
:* https://github.com/ManchesterMakerspace/MakerAuth&lt;br /&gt;
&lt;br /&gt;
:;RasPi-Lockout (designed for RIT Construct Makerspace): &lt;br /&gt;
:* https://www.youtube.com/watch?v=aoAdB13IVr0 (YouTube demo)&lt;br /&gt;
:* https://github.com/jaschawilcox/raspi-lockout (GitHub Repo)&lt;br /&gt;
&lt;br /&gt;
:;Build Brighton Access Node: https://www.youtube.com/watch?v=3X64JmTpOcA&lt;br /&gt;
&lt;br /&gt;
:;Open Access Control: Uses the Arduino hardware to build a robust access control and alarm system. https://code.google.com/archive/p/open-access-control/&lt;br /&gt;
&lt;br /&gt;
:;tinkerAccess: The tinkerAccess system is a Raspberry Pi based access control system that can be used to prevent unauthorized users from using devices that require special training. It could also conceivably be used to control electronic lock boxes or doors. The system was originally designed and created by Matt Stallard, Ron Thomas, and Matt Peopping for TinkerMill a makerspace in Longmont, CO. It is continually being maintained and enhanced by other contributors in the community. https://github.com/TinkerMill/tinkerAccess&lt;br /&gt;
&lt;br /&gt;
:;Triple Cities Makerspace ACS System: https://www.tcmakerspace.com/index.php/2019/08/19/project-profile-access-control-system-acs/&lt;br /&gt;
&lt;br /&gt;
:;The MakerBarn in The Woodlands, Texas MACS System: http://koljawindeler.github.io/macs/.  &lt;br /&gt;
::* MACS UI Video: https://www.youtube.com/watch?v=zLidqAPo3Cs &lt;br /&gt;
::* An Introduction to the MACS - Makerspace Access Control System: https://www.youtube.com/watch?v=CI3xxsBM9SE&lt;br /&gt;
&lt;br /&gt;
:;PITT-X Makerspace Access System: https://www.youtube.com/watch?v=2HG-vyV4yoM&lt;br /&gt;
&lt;br /&gt;
:;Member Access System for Pumping Station One :https://github.com/hef/ps1auth&lt;br /&gt;
::https://github.com/bdenne2/ps1auth&lt;br /&gt;
&lt;br /&gt;
:;HACCSY: Hackerspace Access Control and Check in System. Works with Seltzer CRM, running on a Raspberry Pi. https://www.instructables.com/id/HACCSY-Hackerspace-Access-Control-and-Check-in-Sys/&lt;br /&gt;
&lt;br /&gt;
:;Open Access Control Ethernet: https://github.com/zyphlar/Open_Access_Control_Ethernet&lt;br /&gt;
::;Open Source Access Control Web Interface (works with above) :https://github.com/zyphlar/Open-Source-Access-Control-Web-Interface&lt;br /&gt;
&lt;br /&gt;
=== Systems Combining Access Control and Space Management (may include elements of CRM, AR/AP, training management, inventory control, etc.)  ===&lt;br /&gt;
&lt;br /&gt;
;Safety Spot :Commercial maker space management software widely used in university maker spaces. https://www.safetyspot.com/ &lt;br /&gt;
&lt;br /&gt;
;(UC Berkeley) Makerpass system onepager: https://assets.pubpub.org/hpise2ck/01585588151622.pdf&lt;br /&gt;
&lt;br /&gt;
;Recursion: https://recursion.space Commercial system with free tier. Patented equipment lockout controller.&lt;br /&gt;
&lt;br /&gt;
;UT Austin FabApp/JuiceBox: FabApp is a PHP-based system for managing a makerspace (https://github.com/UTA-FabLab/fabapp). JuiceBox is a Python-based system for providing access control to power tools (https://github.com/UTA-FabLab/JuiceBox).  These and other UTA apps are on the UTA GitHub: https://github.com/UTA-FabLab&lt;br /&gt;
&lt;br /&gt;
;UT Austin Team Lockout: https://blog.uta.edu/cseseniordesign/2019/07/20/lockout/ The Maker Space Lockout System correctly gives access to Machinery only to users that have been adequately briefed on the machinery’s safety and operation. The system will be able to control access for each user according to their level of skill and expertise. Users of The Maker Space Lockout System will also become more equipped to handle and view wear and tear on machines via the data collection purge at the end of each job.&lt;br /&gt;
&lt;br /&gt;
===Not yet Categorized ===&lt;br /&gt;
&lt;br /&gt;
:;Fabman software :Management software with machine control hardware devices, API, and other features. https://fabman.io/&lt;br /&gt;
&lt;br /&gt;
:;RFIDDoorLock: https://wiki.melbournemakerspace.org/projects/RFIDDoorLock&lt;br /&gt;
&lt;br /&gt;
:;Byro :https://github.com/byro/byro&lt;br /&gt;
&lt;br /&gt;
:;HSBNE :https://github.com/hsbne/hsbneportal&lt;br /&gt;
&lt;br /&gt;
:;MetalabOS: https://github.com/Metalab/mos/&lt;br /&gt;
&lt;br /&gt;
:;NOMOS (Membership Management):  https://github.com/vhs/nomos&lt;br /&gt;
&lt;br /&gt;
:;MeMaTool: https://github.com/sim0nx/mematool&lt;br /&gt;
&lt;br /&gt;
:;RFID Tool Cabinet: https://www.youtube.com/watch?v=u-L_7pyPcvE&lt;br /&gt;
&lt;br /&gt;
=== Systems Focusing on Space Management without Access Control (may include elements of CRM, AR/AP, training management, inventory control, etc.)  ===&lt;br /&gt;
(Some of these may integrate with other Access Control Systems)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:;WildApricot :Membership management software used by many maker spaces. https://www.wildapricot.com/&lt;br /&gt;
&lt;br /&gt;
:;Seltzer CRM: Open source CRM / membership management software created by a maker space and designed to be extensible and easily modified.  https://wiki.hackerspaces.org/Seltzer_CRM&lt;br /&gt;
&lt;br /&gt;
:;SIMPL: (Software primarily designed to manage coworking spaces with features to support maker spaces) https://smpl.io/software/makerspaces/&lt;br /&gt;
&lt;br /&gt;
:;OpenBravo (ERM/ERP) :https://www.openbravo.com/&lt;br /&gt;
&lt;br /&gt;
:;WikiSpaces :The primary goal of the WikiSpaces project is to provide a &#039;startup&#039; wiki, which is basically a MediaWiki distribution especially for hackerspaces. This distribution will provide a working, up to date, MediaWiki installation, with the commonly needed extensions installed and configured. https://wiki.hackerspaces.org/WikiSpaces&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Not Yet Categorized ====&lt;br /&gt;
&lt;br /&gt;
:;Scholarly article on value of information collected using Maker Lens / MakerPass access system. :  https://people.eecs.berkeley.edu/~eschoop/docs/makerlens.pdf&lt;/div&gt;</summary>
		<author><name>Gfc</name></author>
	</entry>
	<entry>
		<id>https://sandbox.umd.edu/wiki/index.php?title=Talk:Maker_Space_Manager_System&amp;diff=3425</id>
		<title>Talk:Maker Space Manager System</title>
		<link rel="alternate" type="text/html" href="https://sandbox.umd.edu/wiki/index.php?title=Talk:Maker_Space_Manager_System&amp;diff=3425"/>
		<updated>2026-10-16T18:25:58Z</updated>

		<summary type="html">&lt;p&gt;Gfc: /* LabSwipe /MSM System Development History &amp;amp; Future Road Map */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==ARCHIVE LabSwipe /MSM System Development History &amp;amp; 2022 Road Map ==&lt;br /&gt;
&lt;br /&gt;
===Development History===&lt;br /&gt;
Would someone on the Labswipe team add to this section?&lt;br /&gt;
&lt;br /&gt;
===Current Release===&lt;br /&gt;
&lt;br /&gt;
===Future Enhancements===&lt;br /&gt;
&lt;br /&gt;
Road Map for future enhancements.  &lt;br /&gt;
&lt;br /&gt;
==== 2021-2022 MSM Rework Outline ====&lt;br /&gt;
*Outline of desired improvements for development work from Summer 2021 to Summer 2022&lt;br /&gt;
===== 2021 =====&lt;br /&gt;
* Improvements to existing UI / core LabSwipe functionality (Fall 21) &lt;br /&gt;
** Improved editing of data entry fields&lt;br /&gt;
** Integration with UMD swipe Identity API to correctly identify new cards swiped into system and close current opportunity for student to use a created ID card with false UID.&lt;br /&gt;
** Integration with UMD swipe API to:&lt;br /&gt;
*** Identify deactivated student ID cards and &lt;br /&gt;
*** Update CardID serial number when a lost ID card is replaced with a new card.&lt;br /&gt;
&lt;br /&gt;
===== 2022 =====&lt;br /&gt;
* Integration with Canvas LMS (Spring 22)&lt;br /&gt;
** Using Canvas API, ensuring API key is well protected using a secrets manager or similar approach&lt;br /&gt;
** Implement a middle layer between MSM and Canvas to track training certifications (similar to a micro credentialing system) in a way that creates an abstraction layer between a canvas course and a training certification.&lt;br /&gt;
** See &#039;&#039;&#039;Integration with ELMS/Canvas Learning Management System&#039;&#039;&#039; below for detail&lt;br /&gt;
&lt;br /&gt;
===== Overview of Enhancements  =====&lt;br /&gt;
*Additional Enhancements not yet implemented (many not yet scheduled).&lt;br /&gt;
** Integration with a tool access control system (such as Safety Spot, The Google system used at Ace Makerspace and elsewhere, or the Nova Pass system)&lt;br /&gt;
*** See &#039;&#039;&#039;Tool Access Control&#039;&#039;&#039; below for details&lt;br /&gt;
*** This integration would require certain tools flagged in system to have a swipe card reader at the tool which verifies training before tool will operate. &lt;br /&gt;
*** While extending MSM to support tool access control, modify it as well to allow a particular makerspace to set up a two-tier implementation of MSM where initial swipe allows entry into makerspace without selecting a specific tool (but perhaps requires the selection of a studio or category of tool) and subsequent swipe was required to select a particular tool. &lt;br /&gt;
** Tool reservation / tool-in-use flagging&lt;br /&gt;
** Tool Loan (away from makerspace)&lt;br /&gt;
** Student charging system (allow students to purchase materials and tooling using student ID or credit card.&lt;br /&gt;
** Faculty charging system (allow faculty / researchers to purchase materials using KFC account #)&lt;br /&gt;
** Matching of maker skills between students and managers. &lt;br /&gt;
** Campus-wide inventory of tools at each makerspace with ability for students to search for a particular tool (similar to MIT Manus system)&lt;br /&gt;
&lt;br /&gt;
Many of these are presented in more detail below:&lt;br /&gt;
&lt;br /&gt;
==== Integration with ELMS/Canvas Learning Management System====&lt;br /&gt;
Currently Labswipe stores training accomplishments in a Google Sheet. This needs to be manually updated. A brief look at the sheet shows very few of our makerspaces are making these manual updates. &lt;br /&gt;
&lt;br /&gt;
Sandbox implemented makerspace training in ELMS/Canvas in 2019. Initially we were manually updating the Labswipe sheet from Canvas but this became very time consuming. We wrote a Canvas API query tool that re-formats the Canvas results to make the updates a bit easier. We considered automating the Labswipe sheet update process but discontinued our efforts on this when it was decided to move the Labswipe back end from google sheets to AWS.&lt;br /&gt;
&lt;br /&gt;
Adding a badging or micro-credentialing plugin to Canvas was attempted in 2019-2020. Sandbox hoped that by adding this capability to Canvas we could avoid concerns about running queries directly against the Canvas system (which contains protected information about students) While the primary benefit would be isolating us from FERPA concerns, the badging system Would also simplify our queries (especially for training completed at a different makerspace), allow us to track training not done in Canvas (such as Welding or other training requiring direct, hands-on instruction), and also provide additional ways to gamify training (for example by allowing training tiers, &#039;leveling up&#039;, etc.) Our request to add a badging plugin to Canvas was rejected by DIT. We understand that a request to add a different badging system has been made by a different department and is still under consideration. &lt;br /&gt;
    &lt;br /&gt;
*We&#039;d like future versions of Labswipe to have the capability to update training accomplishments from Canvas. &lt;br /&gt;
&lt;br /&gt;
*Ideally this update would happen every time a maker swiped in to the system. &lt;br /&gt;
&lt;br /&gt;
*The system should support tracking of training that was completed at other UMD MSI makerspaces to support the MSI plans to open up access to makerspaces across campus. For example, a maker who completed Glowforge laser training at one of the library makerspaces should be able to use the Sandbox Glowforge without additional training.&lt;br /&gt;
&lt;br /&gt;
==== Improve quantity and quality of tool usage data being gathered. ====&lt;br /&gt;
&lt;br /&gt;
Currently, the MSM system only asks each makerspace visitor which tools they will be using when they first swipe in at the front door. We&#039;ve found this arrangement results in distorted statistics as many users just select the first tool they see on the list, don&#039;t take the time to check off every tool they intend to use, and often end up using tools they hadn&#039;t intended when they first arrived. &lt;br /&gt;
&lt;br /&gt;
An improvement would be to add additional data gathering points in the makerspace. For example, by adding touch screens with swipe readers in each workshop or tool storage area we could encourage makers to log every tool they use by making the process more convenient. Another approach would be to use a mobile web app to log tool usage by scanning each tool&#039;s barcode or otherwise selecting the tool. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Several of the entries below relate to our goal of gathering more data on tool usage. &lt;br /&gt;
*For example, the safety-driven requirement to add Tool Access Control lockout devices to dangerous tools (such as chop saws and lathes) will also help us gather more detailed tool usage data for those dangerous tools. &lt;br /&gt;
*Adding an advanced tool reservation capability will add additional usage data for popular tools such as 3D printers and laser cutters. &lt;br /&gt;
*Rather than add expensive lockout devices to all tools, we discuss the possible idea of adding Tool-In-Use flagging.&lt;br /&gt;
&lt;br /&gt;
All of these work together to not only better track tool usage but also to improve the user experience and reduce frustration, increase compliance with training requirements, and ensue our compliance with campus safety rules.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Tool Access Control ====&lt;br /&gt;
&lt;br /&gt;
Once the MSM system is able to look up tool training certification information using the ELMS/Canvas APAI. we&#039;d like to add on to MSM additional hardware and software that will directly control use of certain tools that are deemed to be dangerous (such as a CNC router, milling machine, band saw, etc.) or other tools that, while not particularly dangerous, require specific knowledge to operate correctly (such as laser cutter, SLA 3D printer, etc) to avoid damaging the tool. &lt;br /&gt;
&lt;br /&gt;
* This access control system should be implemented as a separate hardware and software system connected to each tool we wish to have this added level of access control. While we envision this being implemented using commercially-available micro controllers (such as an Arduino-compatible microcontroller) or single board computers (such as a Raspberry Pi computer) any other implementation is acceptable so long as it provides a low cost per controlled machine tool.&lt;br /&gt;
&lt;br /&gt;
* This access control capability would require each maker to swipe their UMD ID before using that tool. Use of a UMD ID is preferred since all students and staff already carry this with them. Other authentication mechanism such as RFID or other ID card that works by proximity instead of requiring a physical swipe, or NFC or similar systems using a person&#039;s cell phone. For systems not using UMD ID magnetic stripe cards, the cost of additional cards, software, etc must be factored into our decision to use that system.  &lt;br /&gt;
&lt;br /&gt;
* The system would look up the makers ID in a central database, and if able to verify that the maker is trained and certified to use the tool, the system would allow use of that tool. The preferred central database would be the existing UMD ELMS/Canvas Learning Management System or a system (such as a micro credentialing or badging system) that is connected to and synchronized with the ELMS/Canvas system. Systems that provide a central database system other than ELMS / Canvas must provide an automatic mechanism to update the database using the ELMS / Canvas API.  &lt;br /&gt;
&lt;br /&gt;
* The means to allow use of the tool should be by:&lt;br /&gt;
** Switching on power through a relay or contactor controlled by the software logic &lt;br /&gt;
** Enabling a logical +5 volt signal to be read by the tool&#039;s existing controller (such as an ENABLE signal)&lt;br /&gt;
** By deactivating the tool&#039;s e-stop circuit, restoring a cabinet interlock circuit, or other mechanism by closing or opening a relay contacts. (i.e. dry contact closure)&lt;br /&gt;
** Several different approaches (ideally all of those listed above) should be provided to adapt the system to the widest variety of machine tools and their control systems.&lt;br /&gt;
* The system should provide some way to prevent the maker from walking away and leaving the tool in an operational state. Some research and discussion are needed to determine the best approach for this but a simple example would be by setting a timeout after which the system requires the user to verify they are present by pushing a button or re-swiping their ID. This capability should be settable per-tool.&lt;br /&gt;
* For tools enabled by simply applying power, the system should prevent these tools from starting up immediately on authentication to prevent unsafe situations. For example, by using a magnetic motor starter.&lt;br /&gt;
* The system should ideally store locally a list of the IDs for all makers who recently were authenticated to use the tool (or store a list of all authorized users, updated periodically) This is to permit use of the tool control system even if the central database is unavailable or if network connectivity has failed.&lt;br /&gt;
* A display on each access control station would ideally display information such as the name of the current authorized user (or last user if tool is idle), length of tool use (or countdown to expiration), connectivity check, etc.&lt;br /&gt;
&lt;br /&gt;
==== System Support for Enforcing Buddy System ====&lt;br /&gt;
&lt;br /&gt;
UMD ESSR safety rule changes require certain tools to be used with the &amp;quot;buddy system&amp;quot; In short, the &amp;quot;buddy system&amp;quot; prohibits certain dangerous tools to be used by a person alone in the workshop. Another person must be close enough to see and hear the tool being used so they can render aid and call for assistance in case of injury.&lt;br /&gt;
&lt;br /&gt;
The MSM system should provide support for enforcing the buddy system. This support could entail requiring a second person to swipe in when using certain tools. This requirement might be limited to certain times of day (for example during the evening or when staff is reduced. The requirements for buddy system support are not yet clear, this is a placeholder.&lt;br /&gt;
&lt;br /&gt;
==== Tool-In-Use Flagging ====&lt;br /&gt;
&lt;br /&gt;
An additional capability desired is the ability to flag the status of a tool as &#039;&#039;&#039;&#039;&#039;In Use&#039;&#039;&#039;&#039;&#039;, &#039;&#039;&#039;&#039;&#039;Available for Use&#039;&#039;&#039;&#039;&#039;, or other statuses such as &#039;&#039;&#039;&#039;&#039;Awaiting Repair&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;Out of Service&#039;&#039;&#039;&#039;&#039; Since demand for many tools is high and a student may be frustrated if they travel to a makerspace only to find a particular tool unavailable, it would be helpful for the system to flag tools that are not available for use because they are being used by someone else or are broken or otherwise unavailable. &lt;br /&gt;
&lt;br /&gt;
* For tools that are not in service, a makerspace staff member should be able to change the status through a web interface. &lt;br /&gt;
** The system should record a date/time stamp for when the tool was taken out of service and a date stamp for an expected return-to-service. &lt;br /&gt;
*For tools being used by a maker, the MSM system should provide a mechanism for students to quickly and easily select a tool for use. This capability should allow the use of that tool for a fixed period of time, ideally this time period would differ for different types of tools (for example, a hammer would be flagged as in-use for 1-hour intervals while a sewing machine might have longer intervals such as 3 hours.&lt;br /&gt;
** The Tool-in-Use flag feature would verify the maker has completed any necessary training.&lt;br /&gt;
** When a different maker wishes to use that tool, they would see that the tool was currently in use by another maker and would also see the time the tool is expected to be available for their use. &lt;br /&gt;
** If a tool is still being used by that maker after the check-in time has passed, the new maker would have the right to be the next to use the tool.&lt;br /&gt;
** Ideally, the system would send an SMS message or some other sort of notification that the maker&#039;s use time has expired.&lt;br /&gt;
** Some examples of quick and easy mechanisms for makers to lag that they are using a tool &lt;br /&gt;
*** A touch screen kiosk in each workshop or tool storage area.&lt;br /&gt;
*** A QR code on each tool or on the storage location for each tool. The QR code would be scanned by the maker using the tool&lt;br /&gt;
*** A mobile web app used by the maker.&lt;br /&gt;
&lt;br /&gt;
Note that the Tool-In-Use Flag Feature will provide a great deal of useful information about the relative popularity of each tool and could provide data to support the purchase of additional tools.&lt;br /&gt;
&lt;br /&gt;
==== Tool Check-Out / Check-In (for use in makerspace) ====&lt;br /&gt;
See &#039;&#039;&#039;Tool-In-Use flagging&#039;&#039;&#039; above. &#039;Check-In&#039; and &#039;Check-Out&#039; functions would be used by a student when they take a tool from storage to their work area or return it to storage. Note that Check-Out is different than Tool-Loan which entails removing a tool from the makerspace.&lt;br /&gt;
&lt;br /&gt;
==== Tool Reservation ====&lt;br /&gt;
&lt;br /&gt;
Several tools (such as laser cutters or 3D printers are popular and makers often wish to sign-up in advance for a window of time to use the tool. In the case of 3D printers, a print job could run for many hours, or even multiple days. It would be useful for MSM to allow makers to reserve time on a tool and allow other makers to see that the tool is reserved and unavailable until a given time.&lt;br /&gt;
&lt;br /&gt;
Reservations block-out for class times or maintenance windows.&lt;br /&gt;
&lt;br /&gt;
==== Manager / Staff skills matching ====&lt;br /&gt;
Provide a new capability in MSM to allow staff and volunteer managers to swipe in and out while indicating if they are working or just using the space as a maker. &lt;br /&gt;
&lt;br /&gt;
The system should provide a display of all on-duty managers and staff, displaying each manager&#039;s photo and list of each&#039;s skills / specialties. This to help makers using the space know who to best ask questions about a particular tool or technique. &lt;br /&gt;
&lt;br /&gt;
====Resale of maker materials, tooling, etc.====&lt;br /&gt;
&lt;br /&gt;
We would like to be able to resell materials such as sheet goods (plywood, MDF, acrylic, etc.) 3D printer filament, tooling (CNC router bits, milling machine tooling, etc.) This is a service to makers who don&#039;t necessarily have the ability to transport physically large materials.&lt;br /&gt;
&lt;br /&gt;
Further definition is needed to specify how payments will be taken. We don&#039;t want to accept cash and are uneasy about volunteer managers having access to maker credit/debit cards. Ideally, payments would be charged against a maker&#039;s account balance. Is it possible to use an existing student payment system such as Terrapin Express?&lt;br /&gt;
&lt;br /&gt;
=== FERPA Concerns ===&lt;br /&gt;
Since LabSwipe data is student data there may be concern that some of the data may fall under the protection of the Family Educational Rights and Privacy Act (FERPA). FERPA requires protection of &amp;quot;Personally Identifiable Information&amp;quot; (PII) from release to 3rd parties. Anyone using student PII must take steps to protect this from release, even through the action of a student working in the makerspace. FERPA exempts from the protection requirement certain &amp;quot;Directory Information&amp;quot; that is commonly used. It requires each university to identify what information is considered &amp;quot;Directory Information&amp;quot; &lt;br /&gt;
&lt;br /&gt;
UMD defines their PII and Directory Information here: https://academiccatalog.umd.edu/undergraduate/university-policies/ In July 2020 this policy defined UMD PII &amp;amp; Directory Information as:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;quot;Personally identifiable information&amp;quot; or &amp;quot;PII&amp;quot; means data or information which includes, but is not limited to:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*a student’s name;&lt;br /&gt;
*a name of a student’s parent or family member&lt;br /&gt;
*an address of a student or a student’s family; &lt;br /&gt;
*a personal identifier, such as a social security number, University Identification Number (UID), or biometric record; &lt;br /&gt;
*other indirect identifiers, such as mother’s maiden name; &lt;br /&gt;
*other information that alone, or in combination, is linked or linkable to a specific student and that would allow a reasonable person in the UMD community who does not have personal knowledge of the relevant circumstances to identify the student with reasonable certainty; or information requested by a person who UMD reasonably believes knows the identity of the student to whom the education record relates.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;quot;Directory Information&amp;quot; means information which would generally not be considered harmful or an invasion of privacy if disclosed. It includes, but is not limited to, a student’s: &lt;br /&gt;
&lt;br /&gt;
*name, &lt;br /&gt;
*address, &lt;br /&gt;
*telephone listing, &lt;br /&gt;
*e-mail address, &lt;br /&gt;
*date and place of birth, &lt;br /&gt;
*major field of study, &lt;br /&gt;
*full-time/part-time status, &lt;br /&gt;
*participation in officially recognized activities and sports, &lt;br /&gt;
*weight and height of members of athletic teams, &lt;br /&gt;
*dates of attendance, &lt;br /&gt;
*degrees and awards received, and &lt;br /&gt;
*the most recent previous educational agency or institution attended&#039;&#039;   &lt;br /&gt;
&lt;br /&gt;
Note that UID is listed as PII but not excluded as &amp;quot;Directory Information&amp;quot; as is done at other institutions, especially those that also print UID on campus ID cards.&lt;br /&gt;
&lt;br /&gt;
== Parallel Development of Sandbox Kiosk Prototype ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Kiosk System Test&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sandbox hopes to continue the development and testing of a &#039;&#039;&#039;&#039;&#039;Kiosk System&#039;&#039;&#039;&#039;&#039; in Spring 2022. The kiosk system is envisioned as a way to improve tool usage tracking and replace the tool identification signage on each studio door. Each studio would have a touch screen computer system on or near the door that displays a visual listing of tools in that studio. Makers would be asked to select the tool they wanted to use. The kiosk would verify that the maker had completed any required training on that tool. &lt;br /&gt;
&lt;br /&gt;
By asking the maker to check the tool back in, we would be able to collect additional information about usage of individual tools as well as provide remote visibility of tool availability to makers planning on visiting the makerspace. &lt;br /&gt;
&lt;br /&gt;
Eventually we envision the kiosk system having additional functionality including  tool and studio reservation, broken tool tagging, identifying tool experts, etc.&lt;br /&gt;
&lt;br /&gt;
One possible initiative we could undertake would be the development of a prototype kiosk system for use in the various studios at Sandbox. This prototype would allow us to test ideas for MSM improvements and more quickly iterate through design concepts without having to modify the core MSM system. It would provide a working prototype useful for demonstrating our needs to the MSM development team, or to demonstrate our requirements if MSI decides to invest in an externally-developed system.&lt;br /&gt;
==== Overview of Sandbox Kiosk System ====&lt;br /&gt;
The existing MSM / LabSwipe system assumes each lab will be a single room or small number of related spaces that are hierarchically flat. Sandbox is a group of six different studios, each with a different type of tool. This leads to some confusion and a slowdown each time a maker checks in. If the tools are grouped alphabetically, a maker interested in electronics might check that he plans to use a &amp;quot;multimeter&amp;quot; then have to scroll past &amp;quot;multitool&amp;quot; and 3 different &amp;quot;sander&amp;quot; entries related to woodworking, 4 different types of &amp;quot;sewing machine&amp;quot; in the crafting studio before finding &amp;quot;soldering iron&amp;quot; a few pages down. We&#039;ve re-ordered the list by studio, which has helped quite a bit but makers using the woodworking studio have to scroll down several screens to find the start of tools they may want to use. While this may be fixable with some tweaks to the existing system UI, we&#039;ve uncovered other issues that we&#039;d like to address as well.&lt;br /&gt;
&lt;br /&gt;
In a review of system usage for the fall semester, we discovered that most students select a single tool regardless of the length of their visit. A maker may swipe in and select &amp;quot;laser cutter&amp;quot; as the tool they will be using but almost never returns to the front desk if (for example) they need to use a circular saw to trim their stock to the correct size, or need to use a drill to add a couple of holes to their project, or a sander to prepare it for finishing. Individually these failures aren&#039;t important but collectively they degrade the quality of data we hope to collect on tool usage and perhaps more importantly make it more difficult for us to report other statistics such as length of visit. Also, this avoidance bypasses the very important checking of training credentials that is a critical reason for having this system in the first place. Indeed, we found that a considerable number of students would select &amp;quot;no tool, table use only&amp;quot; when that option was made available. &lt;br /&gt;
&lt;br /&gt;
To improve this situation, we&#039;d like to move tool selection part of MSM closer to the point where the tool is used. Makers would still swipe in to the space when entering, but would not be asked whaic tools they plan to use. The extreme case of this would be to equip each tool with a sensor that indicated use and requested the maker picking up the tool to authenticate and verify their certification to use that tool. This would likely be too expensive to be practical except on the most hazardous or expensive tools such as milling machines, laser cutters, etc. What we propose and would like to test using the concept of kiosks, would be moving tool check-out to each individual studio. We envision a touch-screen display at the door of each studio. While the touch screen could be a self-contatrined system such as a iPad tablet, we are more inclined to use small computers such as the RaspberryPi. &lt;br /&gt;
&lt;br /&gt;
In a perfect world this kiosk system would be connected to the card key door lock system, but we don&#039;t envision that being possible because of political limitations with the UMD card key system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Initial Requirements for Kiosk Protoype ====&lt;br /&gt;
&lt;br /&gt;
* Kiosks to run Touch-screen terminals outside each Sandbox studio (to begin with woodworking studio and prototyping studio)&lt;br /&gt;
** Kiosk will display information about each tool available in that studio including training requirements and links to training materials. &lt;br /&gt;
** Tool information and training requirements should preferably come directly from existing wiki pages to ease updating. Either display wiki pages in embedded web browser or use mediawiki API to retrieve wiki content. &lt;br /&gt;
* Information shown on kiosk would include both publicly viewable (no login required) and private information (requiring login) such as maker&#039;s training accomplishments, etc.&lt;br /&gt;
** Provide quick and simple means for each maker to log in / authenticate with the system (card swipe, phone app, NFC, etc) &lt;br /&gt;
* Subset of information from kiosk system also available via login-secured web page accessible from off campus. Initially, remote functionality to include: &lt;br /&gt;
**ability to reserve a tool for a certain period of time, with the length of time specified by the maker, provided that request is within the limits set for that particular tool, perhaps also taking into account the time of day or day of week. &lt;br /&gt;
*** For example, a laser cutter might be reservible in blocks of 30 minutes with maximum of 3 blocks&lt;br /&gt;
*** A 3d printer might be reservible in blocks of 2 hours with the maximum number of blocks varying depending of day of week and time of day. For example, a Friday afternoon reservation might allow 48 hours total time, while Monday afternoon would only allow 4 hours total.&lt;br /&gt;
*** A more common power tool such as a jigsaw or drill might be reservible in blocks of 30 minutes with a maximum of 2-4 blocks.&lt;br /&gt;
** Some mechanism should be devised to prevent makers from always reserving the maximum number of blocks of time. &lt;br /&gt;
** display calendar view for each of the reservible tools that shows free/reserved blocks for each tool &lt;br /&gt;
** display calendar view for each studio that shows free/reserved status based on the tool being reserved. This view to be used to enforce Covid-19 distancing requirements&lt;br /&gt;
&lt;br /&gt;
= Listing of commercial or open source systems with overlapping functionality =&lt;br /&gt;
== Lists of Systems (other pages like this one)==&lt;br /&gt;
;Hackerspaces.org wishlist of software functions / features. :https://wiki.hackerspaces.org/Software_Wish_List&lt;br /&gt;
&lt;br /&gt;
;List of software from hackerspaces.org: https://wiki.hackerspaces.org/Hackerspace_Software\&lt;br /&gt;
&lt;br /&gt;
;MakerNexus notes on Access Control Systems: https://makernexuswiki.com/wiki/Access_Control_Systems&lt;br /&gt;
&lt;br /&gt;
== Individual Systems ==&lt;br /&gt;
=== Systems Focusing on Access Control (may include door access in addition to machine tool access / lockout) ===&lt;br /&gt;
(see also &#039;&#039;Systems Combining Access Control and Space Management&#039;&#039; below)&lt;br /&gt;
&lt;br /&gt;
:;Nova Labs Nova Pass : https://novapass.nova-labs.org/ (active system home page)&lt;br /&gt;
::(description from Makerfaire: https://nova.makerfaire.com/maker/entry/1224/) &lt;br /&gt;
::(details:https://goo.gl/RVmtiS)&lt;br /&gt;
&lt;br /&gt;
:;RATT - RFID All The Things: New Hampshire&#039;s MakeIT Labs RaspPi based RFID access control system. https://github.com/makeitlabs/ratt (video: https://www.youtube.com/watch?v=erwIPVwXUr8)&lt;br /&gt;
&lt;br /&gt;
:;FATT - FOB all The Things: Ace makerspace (formerly Ace Master Toys) https://www.acemakerspace.org/fatt-project/&lt;br /&gt;
::;Ace Master Toys: Makerspace system based on Google&#039;s AuthBox system  https://github.com/google/makerspace-auth&lt;br /&gt;
::;Ace Makerspace Occupancy System: https://www.youtube.com/watch?v=kemAM8MWIN8&lt;br /&gt;
&lt;br /&gt;
:;Google Makerspace Auth (aka AuthBox): https://github.com/google/makerspace-auth&lt;br /&gt;
&lt;br /&gt;
:;Ithaca Generator AuthBox&lt;br /&gt;
:* https://discuss.ithacagenerator.org/t/makerspace-authbox-on-github/565/3&lt;br /&gt;
:* https://github.com/ithacagenerator/AuthBox&lt;br /&gt;
&lt;br /&gt;
:;Manchester, NH MakerAuth&lt;br /&gt;
:* https://github.com/ManchesterMakerspace/MakerAuth&lt;br /&gt;
&lt;br /&gt;
:;RasPi-Lockout (designed for RIT Construct Makerspace): &lt;br /&gt;
:* https://www.youtube.com/watch?v=aoAdB13IVr0 (YouTube demo)&lt;br /&gt;
:* https://github.com/jaschawilcox/raspi-lockout (GitHub Repo)&lt;br /&gt;
&lt;br /&gt;
:;Build Brighton Access Node: https://www.youtube.com/watch?v=3X64JmTpOcA&lt;br /&gt;
&lt;br /&gt;
:;Open Access Control: Uses the Arduino hardware to build a robust access control and alarm system. https://code.google.com/archive/p/open-access-control/&lt;br /&gt;
&lt;br /&gt;
:;tinkerAccess: The tinkerAccess system is a Raspberry Pi based access control system that can be used to prevent unauthorized users from using devices that require special training. It could also conceivably be used to control electronic lock boxes or doors. The system was originally designed and created by Matt Stallard, Ron Thomas, and Matt Peopping for TinkerMill a makerspace in Longmont, CO. It is continually being maintained and enhanced by other contributors in the community. https://github.com/TinkerMill/tinkerAccess&lt;br /&gt;
&lt;br /&gt;
:;Triple Cities Makerspace ACS System: https://www.tcmakerspace.com/index.php/2019/08/19/project-profile-access-control-system-acs/&lt;br /&gt;
&lt;br /&gt;
:;The MakerBarn in The Woodlands, Texas MACS System: http://koljawindeler.github.io/macs/.  &lt;br /&gt;
::* MACS UI Video: https://www.youtube.com/watch?v=zLidqAPo3Cs &lt;br /&gt;
::* An Introduction to the MACS - Makerspace Access Control System: https://www.youtube.com/watch?v=CI3xxsBM9SE&lt;br /&gt;
&lt;br /&gt;
:;PITT-X Makerspace Access System: https://www.youtube.com/watch?v=2HG-vyV4yoM&lt;br /&gt;
&lt;br /&gt;
:;Member Access System for Pumping Station One :https://github.com/hef/ps1auth&lt;br /&gt;
::https://github.com/bdenne2/ps1auth&lt;br /&gt;
&lt;br /&gt;
:;HACCSY: Hackerspace Access Control and Check in System. Works with Seltzer CRM, running on a Raspberry Pi. https://www.instructables.com/id/HACCSY-Hackerspace-Access-Control-and-Check-in-Sys/&lt;br /&gt;
&lt;br /&gt;
:;Open Access Control Ethernet: https://github.com/zyphlar/Open_Access_Control_Ethernet&lt;br /&gt;
::;Open Source Access Control Web Interface (works with above) :https://github.com/zyphlar/Open-Source-Access-Control-Web-Interface&lt;br /&gt;
&lt;br /&gt;
=== Systems Combining Access Control and Space Management (may include elements of CRM, AR/AP, training management, inventory control, etc.)  ===&lt;br /&gt;
&lt;br /&gt;
;Safety Spot :Commercial maker space management software widely used in university maker spaces. https://www.safetyspot.com/ &lt;br /&gt;
&lt;br /&gt;
;(UC Berkeley) Makerpass system onepager: https://assets.pubpub.org/hpise2ck/01585588151622.pdf&lt;br /&gt;
&lt;br /&gt;
;Recursion: https://recursion.space Commercial system with free tier. Patented equipment lockout controller.&lt;br /&gt;
&lt;br /&gt;
;UT Austin FabApp/JuiceBox: FabApp is a PHP-based system for managing a makerspace (https://github.com/UTA-FabLab/fabapp). JuiceBox is a Python-based system for providing access control to power tools (https://github.com/UTA-FabLab/JuiceBox).  These and other UTA apps are on the UTA GitHub: https://github.com/UTA-FabLab&lt;br /&gt;
&lt;br /&gt;
;UT Austin Team Lockout: https://blog.uta.edu/cseseniordesign/2019/07/20/lockout/ The Maker Space Lockout System correctly gives access to Machinery only to users that have been adequately briefed on the machinery’s safety and operation. The system will be able to control access for each user according to their level of skill and expertise. Users of The Maker Space Lockout System will also become more equipped to handle and view wear and tear on machines via the data collection purge at the end of each job.&lt;br /&gt;
&lt;br /&gt;
===Not yet Categorized ===&lt;br /&gt;
&lt;br /&gt;
:;Fabman software :Management software with machine control hardware devices, API, and other features. https://fabman.io/&lt;br /&gt;
&lt;br /&gt;
:;RFIDDoorLock: https://wiki.melbournemakerspace.org/projects/RFIDDoorLock&lt;br /&gt;
&lt;br /&gt;
:;Byro :https://github.com/byro/byro&lt;br /&gt;
&lt;br /&gt;
:;HSBNE :https://github.com/hsbne/hsbneportal&lt;br /&gt;
&lt;br /&gt;
:;MetalabOS: https://github.com/Metalab/mos/&lt;br /&gt;
&lt;br /&gt;
:;NOMOS (Membership Management):  https://github.com/vhs/nomos&lt;br /&gt;
&lt;br /&gt;
:;MeMaTool: https://github.com/sim0nx/mematool&lt;br /&gt;
&lt;br /&gt;
:;RFID Tool Cabinet: https://www.youtube.com/watch?v=u-L_7pyPcvE&lt;br /&gt;
&lt;br /&gt;
=== Systems Focusing on Space Management without Access Control (may include elements of CRM, AR/AP, training management, inventory control, etc.)  ===&lt;br /&gt;
(Some of these may integrate with other Access Control Systems)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:;WildApricot :Membership management software used by many maker spaces. https://www.wildapricot.com/&lt;br /&gt;
&lt;br /&gt;
:;Seltzer CRM: Open source CRM / membership management software created by a maker space and designed to be extensible and easily modified.  https://wiki.hackerspaces.org/Seltzer_CRM&lt;br /&gt;
&lt;br /&gt;
:;SIMPL: (Software primarily designed to manage coworking spaces with features to support maker spaces) https://smpl.io/software/makerspaces/&lt;br /&gt;
&lt;br /&gt;
:;OpenBravo (ERM/ERP) :https://www.openbravo.com/&lt;br /&gt;
&lt;br /&gt;
:;WikiSpaces :The primary goal of the WikiSpaces project is to provide a &#039;startup&#039; wiki, which is basically a MediaWiki distribution especially for hackerspaces. This distribution will provide a working, up to date, MediaWiki installation, with the commonly needed extensions installed and configured. https://wiki.hackerspaces.org/WikiSpaces&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Not Yet Categorized ====&lt;br /&gt;
&lt;br /&gt;
:;Scholarly article on value of information collected using Maker Lens / MakerPass access system. :  https://people.eecs.berkeley.edu/~eschoop/docs/makerlens.pdf&lt;/div&gt;</summary>
		<author><name>Gfc</name></author>
	</entry>
	<entry>
		<id>https://sandbox.umd.edu/wiki/index.php?title=Talk:Maker_Space_Manager_System&amp;diff=3424</id>
		<title>Talk:Maker Space Manager System</title>
		<link rel="alternate" type="text/html" href="https://sandbox.umd.edu/wiki/index.php?title=Talk:Maker_Space_Manager_System&amp;diff=3424"/>
		<updated>2026-10-16T18:24:21Z</updated>

		<summary type="html">&lt;p&gt;Gfc: /* Parallel Development of Sandbox Kiosk Prototype */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==LabSwipe /MSM System Development History &amp;amp; Future Road Map==&lt;br /&gt;
&lt;br /&gt;
===Development History===&lt;br /&gt;
Would someone on the Labswipe team add to this section?&lt;br /&gt;
&lt;br /&gt;
===Current Release===&lt;br /&gt;
&lt;br /&gt;
===Future Enhancements===&lt;br /&gt;
&lt;br /&gt;
Road Map for future enhancements.  &lt;br /&gt;
&lt;br /&gt;
==== 2021-2022 MSM Rework Outline ====&lt;br /&gt;
*Outline of desired improvements for development work from Summer 2021 to Summer 2022&lt;br /&gt;
===== 2021 =====&lt;br /&gt;
* Improvements to existing UI / core LabSwipe functionality (Fall 21) &lt;br /&gt;
** Improved editing of data entry fields&lt;br /&gt;
** Integration with UMD swipe Identity API to correctly identify new cards swiped into system and close current opportunity for student to use a created ID card with false UID.&lt;br /&gt;
** Integration with UMD swipe API to:&lt;br /&gt;
*** Identify deactivated student ID cards and &lt;br /&gt;
*** Update CardID serial number when a lost ID card is replaced with a new card.&lt;br /&gt;
&lt;br /&gt;
===== 2022 =====&lt;br /&gt;
* Integration with Canvas LMS (Spring 22)&lt;br /&gt;
** Using Canvas API, ensuring API key is well protected using a secrets manager or similar approach&lt;br /&gt;
** Implement a middle layer between MSM and Canvas to track training certifications (similar to a micro credentialing system) in a way that creates an abstraction layer between a canvas course and a training certification.&lt;br /&gt;
** See &#039;&#039;&#039;Integration with ELMS/Canvas Learning Management System&#039;&#039;&#039; below for detail&lt;br /&gt;
&lt;br /&gt;
===== Overview of Enhancements  =====&lt;br /&gt;
*Additional Enhancements not yet implemented (many not yet scheduled).&lt;br /&gt;
** Integration with a tool access control system (such as Safety Spot, The Google system used at Ace Makerspace and elsewhere, or the Nova Pass system)&lt;br /&gt;
*** See &#039;&#039;&#039;Tool Access Control&#039;&#039;&#039; below for details&lt;br /&gt;
*** This integration would require certain tools flagged in system to have a swipe card reader at the tool which verifies training before tool will operate. &lt;br /&gt;
*** While extending MSM to support tool access control, modify it as well to allow a particular makerspace to set up a two-tier implementation of MSM where initial swipe allows entry into makerspace without selecting a specific tool (but perhaps requires the selection of a studio or category of tool) and subsequent swipe was required to select a particular tool. &lt;br /&gt;
** Tool reservation / tool-in-use flagging&lt;br /&gt;
** Tool Loan (away from makerspace)&lt;br /&gt;
** Student charging system (allow students to purchase materials and tooling using student ID or credit card.&lt;br /&gt;
** Faculty charging system (allow faculty / researchers to purchase materials using KFC account #)&lt;br /&gt;
** Matching of maker skills between students and managers. &lt;br /&gt;
** Campus-wide inventory of tools at each makerspace with ability for students to search for a particular tool (similar to MIT Manus system)&lt;br /&gt;
&lt;br /&gt;
Many of these are presented in more detail below:&lt;br /&gt;
&lt;br /&gt;
==== Integration with ELMS/Canvas Learning Management System====&lt;br /&gt;
Currently Labswipe stores training accomplishments in a Google Sheet. This needs to be manually updated. A brief look at the sheet shows very few of our makerspaces are making these manual updates. &lt;br /&gt;
&lt;br /&gt;
Sandbox implemented makerspace training in ELMS/Canvas in 2019. Initially we were manually updating the Labswipe sheet from Canvas but this became very time consuming. We wrote a Canvas API query tool that re-formats the Canvas results to make the updates a bit easier. We considered automating the Labswipe sheet update process but discontinued our efforts on this when it was decided to move the Labswipe back end from google sheets to AWS.&lt;br /&gt;
&lt;br /&gt;
Adding a badging or micro-credentialing plugin to Canvas was attempted in 2019-2020. Sandbox hoped that by adding this capability to Canvas we could avoid concerns about running queries directly against the Canvas system (which contains protected information about students) While the primary benefit would be isolating us from FERPA concerns, the badging system Would also simplify our queries (especially for training completed at a different makerspace), allow us to track training not done in Canvas (such as Welding or other training requiring direct, hands-on instruction), and also provide additional ways to gamify training (for example by allowing training tiers, &#039;leveling up&#039;, etc.) Our request to add a badging plugin to Canvas was rejected by DIT. We understand that a request to add a different badging system has been made by a different department and is still under consideration. &lt;br /&gt;
    &lt;br /&gt;
*We&#039;d like future versions of Labswipe to have the capability to update training accomplishments from Canvas. &lt;br /&gt;
&lt;br /&gt;
*Ideally this update would happen every time a maker swiped in to the system. &lt;br /&gt;
&lt;br /&gt;
*The system should support tracking of training that was completed at other UMD MSI makerspaces to support the MSI plans to open up access to makerspaces across campus. For example, a maker who completed Glowforge laser training at one of the library makerspaces should be able to use the Sandbox Glowforge without additional training.&lt;br /&gt;
&lt;br /&gt;
==== Improve quantity and quality of tool usage data being gathered. ====&lt;br /&gt;
&lt;br /&gt;
Currently, the MSM system only asks each makerspace visitor which tools they will be using when they first swipe in at the front door. We&#039;ve found this arrangement results in distorted statistics as many users just select the first tool they see on the list, don&#039;t take the time to check off every tool they intend to use, and often end up using tools they hadn&#039;t intended when they first arrived. &lt;br /&gt;
&lt;br /&gt;
An improvement would be to add additional data gathering points in the makerspace. For example, by adding touch screens with swipe readers in each workshop or tool storage area we could encourage makers to log every tool they use by making the process more convenient. Another approach would be to use a mobile web app to log tool usage by scanning each tool&#039;s barcode or otherwise selecting the tool. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Several of the entries below relate to our goal of gathering more data on tool usage. &lt;br /&gt;
*For example, the safety-driven requirement to add Tool Access Control lockout devices to dangerous tools (such as chop saws and lathes) will also help us gather more detailed tool usage data for those dangerous tools. &lt;br /&gt;
*Adding an advanced tool reservation capability will add additional usage data for popular tools such as 3D printers and laser cutters. &lt;br /&gt;
*Rather than add expensive lockout devices to all tools, we discuss the possible idea of adding Tool-In-Use flagging.&lt;br /&gt;
&lt;br /&gt;
All of these work together to not only better track tool usage but also to improve the user experience and reduce frustration, increase compliance with training requirements, and ensue our compliance with campus safety rules.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Tool Access Control ====&lt;br /&gt;
&lt;br /&gt;
Once the MSM system is able to look up tool training certification information using the ELMS/Canvas APAI. we&#039;d like to add on to MSM additional hardware and software that will directly control use of certain tools that are deemed to be dangerous (such as a CNC router, milling machine, band saw, etc.) or other tools that, while not particularly dangerous, require specific knowledge to operate correctly (such as laser cutter, SLA 3D printer, etc) to avoid damaging the tool. &lt;br /&gt;
&lt;br /&gt;
* This access control system should be implemented as a separate hardware and software system connected to each tool we wish to have this added level of access control. While we envision this being implemented using commercially-available micro controllers (such as an Arduino-compatible microcontroller) or single board computers (such as a Raspberry Pi computer) any other implementation is acceptable so long as it provides a low cost per controlled machine tool.&lt;br /&gt;
&lt;br /&gt;
* This access control capability would require each maker to swipe their UMD ID before using that tool. Use of a UMD ID is preferred since all students and staff already carry this with them. Other authentication mechanism such as RFID or other ID card that works by proximity instead of requiring a physical swipe, or NFC or similar systems using a person&#039;s cell phone. For systems not using UMD ID magnetic stripe cards, the cost of additional cards, software, etc must be factored into our decision to use that system.  &lt;br /&gt;
&lt;br /&gt;
* The system would look up the makers ID in a central database, and if able to verify that the maker is trained and certified to use the tool, the system would allow use of that tool. The preferred central database would be the existing UMD ELMS/Canvas Learning Management System or a system (such as a micro credentialing or badging system) that is connected to and synchronized with the ELMS/Canvas system. Systems that provide a central database system other than ELMS / Canvas must provide an automatic mechanism to update the database using the ELMS / Canvas API.  &lt;br /&gt;
&lt;br /&gt;
* The means to allow use of the tool should be by:&lt;br /&gt;
** Switching on power through a relay or contactor controlled by the software logic &lt;br /&gt;
** Enabling a logical +5 volt signal to be read by the tool&#039;s existing controller (such as an ENABLE signal)&lt;br /&gt;
** By deactivating the tool&#039;s e-stop circuit, restoring a cabinet interlock circuit, or other mechanism by closing or opening a relay contacts. (i.e. dry contact closure)&lt;br /&gt;
** Several different approaches (ideally all of those listed above) should be provided to adapt the system to the widest variety of machine tools and their control systems.&lt;br /&gt;
* The system should provide some way to prevent the maker from walking away and leaving the tool in an operational state. Some research and discussion are needed to determine the best approach for this but a simple example would be by setting a timeout after which the system requires the user to verify they are present by pushing a button or re-swiping their ID. This capability should be settable per-tool.&lt;br /&gt;
* For tools enabled by simply applying power, the system should prevent these tools from starting up immediately on authentication to prevent unsafe situations. For example, by using a magnetic motor starter.&lt;br /&gt;
* The system should ideally store locally a list of the IDs for all makers who recently were authenticated to use the tool (or store a list of all authorized users, updated periodically) This is to permit use of the tool control system even if the central database is unavailable or if network connectivity has failed.&lt;br /&gt;
* A display on each access control station would ideally display information such as the name of the current authorized user (or last user if tool is idle), length of tool use (or countdown to expiration), connectivity check, etc.&lt;br /&gt;
&lt;br /&gt;
==== System Support for Enforcing Buddy System ====&lt;br /&gt;
&lt;br /&gt;
UMD ESSR safety rule changes require certain tools to be used with the &amp;quot;buddy system&amp;quot; In short, the &amp;quot;buddy system&amp;quot; prohibits certain dangerous tools to be used by a person alone in the workshop. Another person must be close enough to see and hear the tool being used so they can render aid and call for assistance in case of injury.&lt;br /&gt;
&lt;br /&gt;
The MSM system should provide support for enforcing the buddy system. This support could entail requiring a second person to swipe in when using certain tools. This requirement might be limited to certain times of day (for example during the evening or when staff is reduced. The requirements for buddy system support are not yet clear, this is a placeholder.&lt;br /&gt;
&lt;br /&gt;
==== Tool-In-Use Flagging ====&lt;br /&gt;
&lt;br /&gt;
An additional capability desired is the ability to flag the status of a tool as &#039;&#039;&#039;&#039;&#039;In Use&#039;&#039;&#039;&#039;&#039;, &#039;&#039;&#039;&#039;&#039;Available for Use&#039;&#039;&#039;&#039;&#039;, or other statuses such as &#039;&#039;&#039;&#039;&#039;Awaiting Repair&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;Out of Service&#039;&#039;&#039;&#039;&#039; Since demand for many tools is high and a student may be frustrated if they travel to a makerspace only to find a particular tool unavailable, it would be helpful for the system to flag tools that are not available for use because they are being used by someone else or are broken or otherwise unavailable. &lt;br /&gt;
&lt;br /&gt;
* For tools that are not in service, a makerspace staff member should be able to change the status through a web interface. &lt;br /&gt;
** The system should record a date/time stamp for when the tool was taken out of service and a date stamp for an expected return-to-service. &lt;br /&gt;
*For tools being used by a maker, the MSM system should provide a mechanism for students to quickly and easily select a tool for use. This capability should allow the use of that tool for a fixed period of time, ideally this time period would differ for different types of tools (for example, a hammer would be flagged as in-use for 1-hour intervals while a sewing machine might have longer intervals such as 3 hours.&lt;br /&gt;
** The Tool-in-Use flag feature would verify the maker has completed any necessary training.&lt;br /&gt;
** When a different maker wishes to use that tool, they would see that the tool was currently in use by another maker and would also see the time the tool is expected to be available for their use. &lt;br /&gt;
** If a tool is still being used by that maker after the check-in time has passed, the new maker would have the right to be the next to use the tool.&lt;br /&gt;
** Ideally, the system would send an SMS message or some other sort of notification that the maker&#039;s use time has expired.&lt;br /&gt;
** Some examples of quick and easy mechanisms for makers to lag that they are using a tool &lt;br /&gt;
*** A touch screen kiosk in each workshop or tool storage area.&lt;br /&gt;
*** A QR code on each tool or on the storage location for each tool. The QR code would be scanned by the maker using the tool&lt;br /&gt;
*** A mobile web app used by the maker.&lt;br /&gt;
&lt;br /&gt;
Note that the Tool-In-Use Flag Feature will provide a great deal of useful information about the relative popularity of each tool and could provide data to support the purchase of additional tools.&lt;br /&gt;
&lt;br /&gt;
==== Tool Check-Out / Check-In (for use in makerspace) ====&lt;br /&gt;
See &#039;&#039;&#039;Tool-In-Use flagging&#039;&#039;&#039; above. &#039;Check-In&#039; and &#039;Check-Out&#039; functions would be used by a student when they take a tool from storage to their work area or return it to storage. Note that Check-Out is different than Tool-Loan which entails removing a tool from the makerspace.&lt;br /&gt;
&lt;br /&gt;
==== Tool Reservation ====&lt;br /&gt;
&lt;br /&gt;
Several tools (such as laser cutters or 3D printers are popular and makers often wish to sign-up in advance for a window of time to use the tool. In the case of 3D printers, a print job could run for many hours, or even multiple days. It would be useful for MSM to allow makers to reserve time on a tool and allow other makers to see that the tool is reserved and unavailable until a given time.&lt;br /&gt;
&lt;br /&gt;
Reservations block-out for class times or maintenance windows.&lt;br /&gt;
&lt;br /&gt;
==== Manager / Staff skills matching ====&lt;br /&gt;
Provide a new capability in MSM to allow staff and volunteer managers to swipe in and out while indicating if they are working or just using the space as a maker. &lt;br /&gt;
&lt;br /&gt;
The system should provide a display of all on-duty managers and staff, displaying each manager&#039;s photo and list of each&#039;s skills / specialties. This to help makers using the space know who to best ask questions about a particular tool or technique. &lt;br /&gt;
&lt;br /&gt;
====Resale of maker materials, tooling, etc.====&lt;br /&gt;
&lt;br /&gt;
We would like to be able to resell materials such as sheet goods (plywood, MDF, acrylic, etc.) 3D printer filament, tooling (CNC router bits, milling machine tooling, etc.) This is a service to makers who don&#039;t necessarily have the ability to transport physically large materials.&lt;br /&gt;
&lt;br /&gt;
Further definition is needed to specify how payments will be taken. We don&#039;t want to accept cash and are uneasy about volunteer managers having access to maker credit/debit cards. Ideally, payments would be charged against a maker&#039;s account balance. Is it possible to use an existing student payment system such as Terrapin Express?&lt;br /&gt;
&lt;br /&gt;
=== FERPA Concerns ===&lt;br /&gt;
Since LabSwipe data is student data there may be concern that some of the data may fall under the protection of the Family Educational Rights and Privacy Act (FERPA). FERPA requires protection of &amp;quot;Personally Identifiable Information&amp;quot; (PII) from release to 3rd parties. Anyone using student PII must take steps to protect this from release, even through the action of a student working in the makerspace. FERPA exempts from the protection requirement certain &amp;quot;Directory Information&amp;quot; that is commonly used. It requires each university to identify what information is considered &amp;quot;Directory Information&amp;quot; &lt;br /&gt;
&lt;br /&gt;
UMD defines their PII and Directory Information here: https://academiccatalog.umd.edu/undergraduate/university-policies/ In July 2020 this policy defined UMD PII &amp;amp; Directory Information as:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;quot;Personally identifiable information&amp;quot; or &amp;quot;PII&amp;quot; means data or information which includes, but is not limited to:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*a student’s name;&lt;br /&gt;
*a name of a student’s parent or family member&lt;br /&gt;
*an address of a student or a student’s family; &lt;br /&gt;
*a personal identifier, such as a social security number, University Identification Number (UID), or biometric record; &lt;br /&gt;
*other indirect identifiers, such as mother’s maiden name; &lt;br /&gt;
*other information that alone, or in combination, is linked or linkable to a specific student and that would allow a reasonable person in the UMD community who does not have personal knowledge of the relevant circumstances to identify the student with reasonable certainty; or information requested by a person who UMD reasonably believes knows the identity of the student to whom the education record relates.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;quot;Directory Information&amp;quot; means information which would generally not be considered harmful or an invasion of privacy if disclosed. It includes, but is not limited to, a student’s: &lt;br /&gt;
&lt;br /&gt;
*name, &lt;br /&gt;
*address, &lt;br /&gt;
*telephone listing, &lt;br /&gt;
*e-mail address, &lt;br /&gt;
*date and place of birth, &lt;br /&gt;
*major field of study, &lt;br /&gt;
*full-time/part-time status, &lt;br /&gt;
*participation in officially recognized activities and sports, &lt;br /&gt;
*weight and height of members of athletic teams, &lt;br /&gt;
*dates of attendance, &lt;br /&gt;
*degrees and awards received, and &lt;br /&gt;
*the most recent previous educational agency or institution attended&#039;&#039;   &lt;br /&gt;
&lt;br /&gt;
Note that UID is listed as PII but not excluded as &amp;quot;Directory Information&amp;quot; as is done at other institutions, especially those that also print UID on campus ID cards.&lt;br /&gt;
&lt;br /&gt;
== Parallel Development of Sandbox Kiosk Prototype ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Kiosk System Test&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sandbox hopes to continue the development and testing of a &#039;&#039;&#039;&#039;&#039;Kiosk System&#039;&#039;&#039;&#039;&#039; in Spring 2022. The kiosk system is envisioned as a way to improve tool usage tracking and replace the tool identification signage on each studio door. Each studio would have a touch screen computer system on or near the door that displays a visual listing of tools in that studio. Makers would be asked to select the tool they wanted to use. The kiosk would verify that the maker had completed any required training on that tool. &lt;br /&gt;
&lt;br /&gt;
By asking the maker to check the tool back in, we would be able to collect additional information about usage of individual tools as well as provide remote visibility of tool availability to makers planning on visiting the makerspace. &lt;br /&gt;
&lt;br /&gt;
Eventually we envision the kiosk system having additional functionality including  tool and studio reservation, broken tool tagging, identifying tool experts, etc.&lt;br /&gt;
&lt;br /&gt;
One possible initiative we could undertake would be the development of a prototype kiosk system for use in the various studios at Sandbox. This prototype would allow us to test ideas for MSM improvements and more quickly iterate through design concepts without having to modify the core MSM system. It would provide a working prototype useful for demonstrating our needs to the MSM development team, or to demonstrate our requirements if MSI decides to invest in an externally-developed system.&lt;br /&gt;
==== Overview of Sandbox Kiosk System ====&lt;br /&gt;
The existing MSM / LabSwipe system assumes each lab will be a single room or small number of related spaces that are hierarchically flat. Sandbox is a group of six different studios, each with a different type of tool. This leads to some confusion and a slowdown each time a maker checks in. If the tools are grouped alphabetically, a maker interested in electronics might check that he plans to use a &amp;quot;multimeter&amp;quot; then have to scroll past &amp;quot;multitool&amp;quot; and 3 different &amp;quot;sander&amp;quot; entries related to woodworking, 4 different types of &amp;quot;sewing machine&amp;quot; in the crafting studio before finding &amp;quot;soldering iron&amp;quot; a few pages down. We&#039;ve re-ordered the list by studio, which has helped quite a bit but makers using the woodworking studio have to scroll down several screens to find the start of tools they may want to use. While this may be fixable with some tweaks to the existing system UI, we&#039;ve uncovered other issues that we&#039;d like to address as well.&lt;br /&gt;
&lt;br /&gt;
In a review of system usage for the fall semester, we discovered that most students select a single tool regardless of the length of their visit. A maker may swipe in and select &amp;quot;laser cutter&amp;quot; as the tool they will be using but almost never returns to the front desk if (for example) they need to use a circular saw to trim their stock to the correct size, or need to use a drill to add a couple of holes to their project, or a sander to prepare it for finishing. Individually these failures aren&#039;t important but collectively they degrade the quality of data we hope to collect on tool usage and perhaps more importantly make it more difficult for us to report other statistics such as length of visit. Also, this avoidance bypasses the very important checking of training credentials that is a critical reason for having this system in the first place. Indeed, we found that a considerable number of students would select &amp;quot;no tool, table use only&amp;quot; when that option was made available. &lt;br /&gt;
&lt;br /&gt;
To improve this situation, we&#039;d like to move tool selection part of MSM closer to the point where the tool is used. Makers would still swipe in to the space when entering, but would not be asked whaic tools they plan to use. The extreme case of this would be to equip each tool with a sensor that indicated use and requested the maker picking up the tool to authenticate and verify their certification to use that tool. This would likely be too expensive to be practical except on the most hazardous or expensive tools such as milling machines, laser cutters, etc. What we propose and would like to test using the concept of kiosks, would be moving tool check-out to each individual studio. We envision a touch-screen display at the door of each studio. While the touch screen could be a self-contatrined system such as a iPad tablet, we are more inclined to use small computers such as the RaspberryPi. &lt;br /&gt;
&lt;br /&gt;
In a perfect world this kiosk system would be connected to the card key door lock system, but we don&#039;t envision that being possible because of political limitations with the UMD card key system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Initial Requirements for Kiosk Protoype ====&lt;br /&gt;
&lt;br /&gt;
* Kiosks to run Touch-screen terminals outside each Sandbox studio (to begin with woodworking studio and prototyping studio)&lt;br /&gt;
** Kiosk will display information about each tool available in that studio including training requirements and links to training materials. &lt;br /&gt;
** Tool information and training requirements should preferably come directly from existing wiki pages to ease updating. Either display wiki pages in embedded web browser or use mediawiki API to retrieve wiki content. &lt;br /&gt;
* Information shown on kiosk would include both publicly viewable (no login required) and private information (requiring login) such as maker&#039;s training accomplishments, etc.&lt;br /&gt;
** Provide quick and simple means for each maker to log in / authenticate with the system (card swipe, phone app, NFC, etc) &lt;br /&gt;
* Subset of information from kiosk system also available via login-secured web page accessible from off campus. Initially, remote functionality to include: &lt;br /&gt;
**ability to reserve a tool for a certain period of time, with the length of time specified by the maker, provided that request is within the limits set for that particular tool, perhaps also taking into account the time of day or day of week. &lt;br /&gt;
*** For example, a laser cutter might be reservible in blocks of 30 minutes with maximum of 3 blocks&lt;br /&gt;
*** A 3d printer might be reservible in blocks of 2 hours with the maximum number of blocks varying depending of day of week and time of day. For example, a Friday afternoon reservation might allow 48 hours total time, while Monday afternoon would only allow 4 hours total.&lt;br /&gt;
*** A more common power tool such as a jigsaw or drill might be reservible in blocks of 30 minutes with a maximum of 2-4 blocks.&lt;br /&gt;
** Some mechanism should be devised to prevent makers from always reserving the maximum number of blocks of time. &lt;br /&gt;
** display calendar view for each of the reservible tools that shows free/reserved blocks for each tool &lt;br /&gt;
** display calendar view for each studio that shows free/reserved status based on the tool being reserved. This view to be used to enforce Covid-19 distancing requirements&lt;br /&gt;
&lt;br /&gt;
= Listing of commercial or open source systems with overlapping functionality =&lt;br /&gt;
== Lists of Systems (other pages like this one)==&lt;br /&gt;
;Hackerspaces.org wishlist of software functions / features. :https://wiki.hackerspaces.org/Software_Wish_List&lt;br /&gt;
&lt;br /&gt;
;List of software from hackerspaces.org: https://wiki.hackerspaces.org/Hackerspace_Software\&lt;br /&gt;
&lt;br /&gt;
;MakerNexus notes on Access Control Systems: https://makernexuswiki.com/wiki/Access_Control_Systems&lt;br /&gt;
&lt;br /&gt;
== Individual Systems ==&lt;br /&gt;
=== Systems Focusing on Access Control (may include door access in addition to machine tool access / lockout) ===&lt;br /&gt;
(see also &#039;&#039;Systems Combining Access Control and Space Management&#039;&#039; below)&lt;br /&gt;
&lt;br /&gt;
:;Nova Labs Nova Pass : https://novapass.nova-labs.org/ (active system home page)&lt;br /&gt;
::(description from Makerfaire: https://nova.makerfaire.com/maker/entry/1224/) &lt;br /&gt;
::(details:https://goo.gl/RVmtiS)&lt;br /&gt;
&lt;br /&gt;
:;RATT - RFID All The Things: New Hampshire&#039;s MakeIT Labs RaspPi based RFID access control system. https://github.com/makeitlabs/ratt (video: https://www.youtube.com/watch?v=erwIPVwXUr8)&lt;br /&gt;
&lt;br /&gt;
:;FATT - FOB all The Things: Ace makerspace (formerly Ace Master Toys) https://www.acemakerspace.org/fatt-project/&lt;br /&gt;
::;Ace Master Toys: Makerspace system based on Google&#039;s AuthBox system  https://github.com/google/makerspace-auth&lt;br /&gt;
::;Ace Makerspace Occupancy System: https://www.youtube.com/watch?v=kemAM8MWIN8&lt;br /&gt;
&lt;br /&gt;
:;Google Makerspace Auth (aka AuthBox): https://github.com/google/makerspace-auth&lt;br /&gt;
&lt;br /&gt;
:;Ithaca Generator AuthBox&lt;br /&gt;
:* https://discuss.ithacagenerator.org/t/makerspace-authbox-on-github/565/3&lt;br /&gt;
:* https://github.com/ithacagenerator/AuthBox&lt;br /&gt;
&lt;br /&gt;
:;Manchester, NH MakerAuth&lt;br /&gt;
:* https://github.com/ManchesterMakerspace/MakerAuth&lt;br /&gt;
&lt;br /&gt;
:;RasPi-Lockout (designed for RIT Construct Makerspace): &lt;br /&gt;
:* https://www.youtube.com/watch?v=aoAdB13IVr0 (YouTube demo)&lt;br /&gt;
:* https://github.com/jaschawilcox/raspi-lockout (GitHub Repo)&lt;br /&gt;
&lt;br /&gt;
:;Build Brighton Access Node: https://www.youtube.com/watch?v=3X64JmTpOcA&lt;br /&gt;
&lt;br /&gt;
:;Open Access Control: Uses the Arduino hardware to build a robust access control and alarm system. https://code.google.com/archive/p/open-access-control/&lt;br /&gt;
&lt;br /&gt;
:;tinkerAccess: The tinkerAccess system is a Raspberry Pi based access control system that can be used to prevent unauthorized users from using devices that require special training. It could also conceivably be used to control electronic lock boxes or doors. The system was originally designed and created by Matt Stallard, Ron Thomas, and Matt Peopping for TinkerMill a makerspace in Longmont, CO. It is continually being maintained and enhanced by other contributors in the community. https://github.com/TinkerMill/tinkerAccess&lt;br /&gt;
&lt;br /&gt;
:;Triple Cities Makerspace ACS System: https://www.tcmakerspace.com/index.php/2019/08/19/project-profile-access-control-system-acs/&lt;br /&gt;
&lt;br /&gt;
:;The MakerBarn in The Woodlands, Texas MACS System: http://koljawindeler.github.io/macs/.  &lt;br /&gt;
::* MACS UI Video: https://www.youtube.com/watch?v=zLidqAPo3Cs &lt;br /&gt;
::* An Introduction to the MACS - Makerspace Access Control System: https://www.youtube.com/watch?v=CI3xxsBM9SE&lt;br /&gt;
&lt;br /&gt;
:;PITT-X Makerspace Access System: https://www.youtube.com/watch?v=2HG-vyV4yoM&lt;br /&gt;
&lt;br /&gt;
:;Member Access System for Pumping Station One :https://github.com/hef/ps1auth&lt;br /&gt;
::https://github.com/bdenne2/ps1auth&lt;br /&gt;
&lt;br /&gt;
:;HACCSY: Hackerspace Access Control and Check in System. Works with Seltzer CRM, running on a Raspberry Pi. https://www.instructables.com/id/HACCSY-Hackerspace-Access-Control-and-Check-in-Sys/&lt;br /&gt;
&lt;br /&gt;
:;Open Access Control Ethernet: https://github.com/zyphlar/Open_Access_Control_Ethernet&lt;br /&gt;
::;Open Source Access Control Web Interface (works with above) :https://github.com/zyphlar/Open-Source-Access-Control-Web-Interface&lt;br /&gt;
&lt;br /&gt;
=== Systems Combining Access Control and Space Management (may include elements of CRM, AR/AP, training management, inventory control, etc.)  ===&lt;br /&gt;
&lt;br /&gt;
;Safety Spot :Commercial maker space management software widely used in university maker spaces. https://www.safetyspot.com/ &lt;br /&gt;
&lt;br /&gt;
;(UC Berkeley) Makerpass system onepager: https://assets.pubpub.org/hpise2ck/01585588151622.pdf&lt;br /&gt;
&lt;br /&gt;
;Recursion: https://recursion.space Commercial system with free tier. Patented equipment lockout controller.&lt;br /&gt;
&lt;br /&gt;
;UT Austin FabApp/JuiceBox: FabApp is a PHP-based system for managing a makerspace (https://github.com/UTA-FabLab/fabapp). JuiceBox is a Python-based system for providing access control to power tools (https://github.com/UTA-FabLab/JuiceBox).  These and other UTA apps are on the UTA GitHub: https://github.com/UTA-FabLab&lt;br /&gt;
&lt;br /&gt;
;UT Austin Team Lockout: https://blog.uta.edu/cseseniordesign/2019/07/20/lockout/ The Maker Space Lockout System correctly gives access to Machinery only to users that have been adequately briefed on the machinery’s safety and operation. The system will be able to control access for each user according to their level of skill and expertise. Users of The Maker Space Lockout System will also become more equipped to handle and view wear and tear on machines via the data collection purge at the end of each job.&lt;br /&gt;
&lt;br /&gt;
===Not yet Categorized ===&lt;br /&gt;
&lt;br /&gt;
:;Fabman software :Management software with machine control hardware devices, API, and other features. https://fabman.io/&lt;br /&gt;
&lt;br /&gt;
:;RFIDDoorLock: https://wiki.melbournemakerspace.org/projects/RFIDDoorLock&lt;br /&gt;
&lt;br /&gt;
:;Byro :https://github.com/byro/byro&lt;br /&gt;
&lt;br /&gt;
:;HSBNE :https://github.com/hsbne/hsbneportal&lt;br /&gt;
&lt;br /&gt;
:;MetalabOS: https://github.com/Metalab/mos/&lt;br /&gt;
&lt;br /&gt;
:;NOMOS (Membership Management):  https://github.com/vhs/nomos&lt;br /&gt;
&lt;br /&gt;
:;MeMaTool: https://github.com/sim0nx/mematool&lt;br /&gt;
&lt;br /&gt;
:;RFID Tool Cabinet: https://www.youtube.com/watch?v=u-L_7pyPcvE&lt;br /&gt;
&lt;br /&gt;
=== Systems Focusing on Space Management without Access Control (may include elements of CRM, AR/AP, training management, inventory control, etc.)  ===&lt;br /&gt;
(Some of these may integrate with other Access Control Systems)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:;WildApricot :Membership management software used by many maker spaces. https://www.wildapricot.com/&lt;br /&gt;
&lt;br /&gt;
:;Seltzer CRM: Open source CRM / membership management software created by a maker space and designed to be extensible and easily modified.  https://wiki.hackerspaces.org/Seltzer_CRM&lt;br /&gt;
&lt;br /&gt;
:;SIMPL: (Software primarily designed to manage coworking spaces with features to support maker spaces) https://smpl.io/software/makerspaces/&lt;br /&gt;
&lt;br /&gt;
:;OpenBravo (ERM/ERP) :https://www.openbravo.com/&lt;br /&gt;
&lt;br /&gt;
:;WikiSpaces :The primary goal of the WikiSpaces project is to provide a &#039;startup&#039; wiki, which is basically a MediaWiki distribution especially for hackerspaces. This distribution will provide a working, up to date, MediaWiki installation, with the commonly needed extensions installed and configured. https://wiki.hackerspaces.org/WikiSpaces&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Not Yet Categorized ====&lt;br /&gt;
&lt;br /&gt;
:;Scholarly article on value of information collected using Maker Lens / MakerPass access system. :  https://people.eecs.berkeley.edu/~eschoop/docs/makerlens.pdf&lt;/div&gt;</summary>
		<author><name>Gfc</name></author>
	</entry>
	<entry>
		<id>https://sandbox.umd.edu/wiki/index.php?title=Maker_Space_Manager_System&amp;diff=3423</id>
		<title>Maker Space Manager System</title>
		<link rel="alternate" type="text/html" href="https://sandbox.umd.edu/wiki/index.php?title=Maker_Space_Manager_System&amp;diff=3423"/>
		<updated>2026-10-16T18:23:17Z</updated>

		<summary type="html">&lt;p&gt;Gfc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sandbox is a member of the UMD Makerspace Initiative (MSI), a campus-wide group of more than 20 MakerSpaces that endeavors to bring broader access for all students. &lt;br /&gt;
&lt;br /&gt;
One important MSI initiative is the development of the MakerSpace Manager system (MSM) which we use to track access to our space and ensure that our makers are trained to use the tools they intend to use. The MSM system (formerly named LabSwipe) is still under development. &lt;br /&gt;
&lt;br /&gt;
See the Talk page for more information about future plans for MSM development.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Pinpoint system (pinpoint.umd.edu) is the current iteration of LabSwipe and the short-lived MSM project. &lt;br /&gt;
&lt;br /&gt;
Pinpoint is managed by Engineering Digital Service (EDS), a team of students who develop and maintain Pinpoint as well as other digital services for the A. James Clark School of Engineering and the University of Maryland. For information about the system visit https://docs.pinpoint.umd.edu/&lt;/div&gt;</summary>
		<author><name>Gfc</name></author>
	</entry>
	<entry>
		<id>https://sandbox.umd.edu/wiki/index.php?title=Brother_1034DX&amp;diff=3422</id>
		<title>Brother 1034DX</title>
		<link rel="alternate" type="text/html" href="https://sandbox.umd.edu/wiki/index.php?title=Brother_1034DX&amp;diff=3422"/>
		<updated>2026-10-15T23:38:14Z</updated>

		<summary type="html">&lt;p&gt;Gfc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Brother-1034DX-Serger.jpeg]]&lt;br /&gt;
&lt;br /&gt;
==Manuals==&lt;br /&gt;
A downloaded copy of the XXXX manual [https://drive.google.com/file/d/16SOOOySWcTznSkhjvAtjWmGptkq2YMFk/view?usp=sharing can  be found on our shared drive] &amp;lt;i&amp;gt;Note that this PDF manual can only be viewed by members of the UMD community, logged in to Google with a umd.edu account. &amp;lt;/i&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gfc</name></author>
	</entry>
	<entry>
		<id>https://sandbox.umd.edu/wiki/index.php?title=Widget:SlidingGallerySewing&amp;diff=3421</id>
		<title>Widget:SlidingGallerySewing</title>
		<link rel="alternate" type="text/html" href="https://sandbox.umd.edu/wiki/index.php?title=Widget:SlidingGallerySewing&amp;diff=3421"/>
		<updated>2026-10-15T23:30:53Z</updated>

		<summary type="html">&lt;p&gt;Gfc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- =========================================================================&lt;br /&gt;
     ⚙️ MASTER VARIABLE CONFIGURATION ZONE&lt;br /&gt;
     Update, add, or remove your unique sewing studio equipment here. &lt;br /&gt;
     You only need to edit this list once—the script builds the loop for you!&lt;br /&gt;
     ========================================================================= --&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var GALLERY_DATA = [&lt;br /&gt;
  {&lt;br /&gt;
    link: &amp;quot;/wiki/index.php/Singer_HD_4432&amp;quot;,&lt;br /&gt;
    img: &amp;quot;/wiki/images/thumb/e/e1/Singer_HD-1_4452.jpg/600px-Singer_HD-1_4452.jpg?20250616215327&amp;quot;,&lt;br /&gt;
    title: &amp;quot;Singer HD 4432&amp;quot;,&lt;br /&gt;
    desc: &amp;quot;Basic sewing machine&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    link: &amp;quot;/wiki/index.php/Singer_Simple_3232&amp;quot;,&lt;br /&gt;
    img: &amp;quot;/wiki/images/thumb/0/08/Singer_Simple.jpg/800px-Singer_Simple.jpg?20191223184102&amp;quot;,&lt;br /&gt;
    title: &amp;quot;Singer Simple 3232&amp;quot;,&lt;br /&gt;
    desc: &amp;quot;Starter sewing machine&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    link: &amp;quot;/wiki/index.php/Janome_HD-3000BE&amp;quot;,&lt;br /&gt;
    img: &amp;quot;/wiki/images/thumb/0/01/Janome_HD-3000BE.jpeg/400px-Janome_HD-3000BE.jpeg&amp;quot;,&lt;br /&gt;
    title: &amp;quot;Janome HD-3000BE&amp;quot;,&lt;br /&gt;
    desc: &amp;quot;Intermediate Home Sewing Machine&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    link: &amp;quot;/wiki/index.php/Bernina_model_1000&amp;quot;,&lt;br /&gt;
    img: &amp;quot;/wiki/images/thumb/f/f9/Bernina1008.png/400px-Bernina1008.png&amp;quot;,&lt;br /&gt;
    title: &amp;quot;Bernina model 1008&amp;quot;,&lt;br /&gt;
    desc: &amp;quot;Intermediate Home Sewing Machine&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    link: &amp;quot;/wiki/index.php/Brother_1034DX&amp;quot;,&lt;br /&gt;
    img: &amp;quot;/wiki/images/thumb/3/3e/Brother-1034DX-Serger.jpeg/120px-Brother-1034DX-Serger.jpeg&amp;quot;,&lt;br /&gt;
    title: &amp;quot;Brother 1034DX&amp;quot;,&lt;br /&gt;
    desc: &amp;quot;Serger&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    link: &amp;quot;/wiki/index.php/Brother_PE770&amp;quot;,&lt;br /&gt;
    img: &amp;quot;/wiki/images/thumb/8/8d/BrotherPE770.jpg/240px-BrotherPE770.jpg&amp;quot;,&lt;br /&gt;
    title: &amp;quot;Brother PE770&amp;quot;,&lt;br /&gt;
    desc: &amp;quot;Embroidery machine&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
];&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- =========================================================================&lt;br /&gt;
     🎨 STYLING CONFIGURATION SYSTEM (Handles the enlarged image profiles)&lt;br /&gt;
     ========================================================================= --&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
.gallery-outer { position: relative; height: 100%; margin: 20px 0; }&lt;br /&gt;
.gallery-bg { position: relative; margin: 0 -1em; padding: 0; background-color: transparent; border: 1px none #ddd; height: 100%; }&lt;br /&gt;
&lt;br /&gt;
/* EXPANDED VIEWPORT BOUNDS: Tall enough to safely clear the new image sizes */&lt;br /&gt;
.gallery-viewport { &lt;br /&gt;
  position: relative; &lt;br /&gt;
  margin: 0 auto; &lt;br /&gt;
  width: 742px; /* Total viewable window width area optimized for iPads */&lt;br /&gt;
  height: 380px; &lt;br /&gt;
  overflow: hidden; &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wrapper {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  top: 0;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  display: flex;&lt;br /&gt;
  gap: 25px; /* Spaces out your columns neatly */&lt;br /&gt;
  width: max-content; &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ⏸️ PAUSE ANIMATION ON HOVER */&lt;br /&gt;
.wrapper:hover {&lt;br /&gt;
  animation-play-state: paused !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* EXPANDED ITEM BOX COLUMNS: Boosted cards to make room for wide thumbnails */&lt;br /&gt;
.gallery-item {&lt;br /&gt;
  display: flex;&lt;br /&gt;
  flex-direction: column;&lt;br /&gt;
  align-items: center;&lt;br /&gt;
  justify-content: flex-start;&lt;br /&gt;
  text-align: center;&lt;br /&gt;
  width: 220px; &lt;br /&gt;
  flex-shrink: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* DYNAMIC LARGE IMAGE BOUNDARIES */&lt;br /&gt;
.gallery-item img {&lt;br /&gt;
  width: 190px;  &lt;br /&gt;
  height: 240px; &lt;br /&gt;
  object-fit: contain; /* Scales mismatched image formats without distortion */&lt;br /&gt;
  transition: transform 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 🔍 ENLARGE IMAGE ON HOVER */&lt;br /&gt;
.gallery-item img:hover {&lt;br /&gt;
  transform: scale(1.12); &lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-caption {&lt;br /&gt;
  font-size: 0.9em; &lt;br /&gt;
  color: #333;&lt;br /&gt;
  margin-top: 10px;&lt;br /&gt;
  line-height: 1.3;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;gallery-outer&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gallery-bg&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gallery-viewport&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;wrapper&amp;quot; id=&amp;quot;sewing-marquee-track&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;!-- Elements will be automatically generated and compiled here by the JavaScript below --&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- =========================================================================&lt;br /&gt;
     ⚡ AUTO-COMPILING INFINITE SLIDER ENGINE &lt;br /&gt;
     ========================================================================= --&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
(function() {&lt;br /&gt;
  var track = document.getElementById(&#039;sewing-marquee-track&#039;);&lt;br /&gt;
  if (!track || !GALLERY_DATA || GALLERY_DATA.length === 0) return;&lt;br /&gt;
&lt;br /&gt;
  var htmlOutput = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
  // 1. Build the HTML block for the primary list entries&lt;br /&gt;
  for (var i = 0; i &amp;lt; GALLERY_DATA.length; i++) {&lt;br /&gt;
    var item = GALLERY_DATA[i];&lt;br /&gt;
    htmlOutput += &#039;&amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
    /* 🌟 Pulls the complete, absolute path directly from your variables */&lt;br /&gt;
    htmlOutput += &#039;  &amp;lt;a href=&amp;quot;&#039; + item.link + &#039;&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;&#039; + item.img + &#039;&amp;quot; alt=&amp;quot;&#039; + item.title + &#039;&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
    htmlOutput += &#039;  &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;&#039; + item.title + &#039;&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;&#039; + item.desc + &#039;&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
    htmlOutput += &#039;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // 2. Build the HTML block for the duplicate list entries to create the continuous loop&lt;br /&gt;
  for (var j = 0; j &amp;lt; GALLERY_DATA.length; j++) {&lt;br /&gt;
    var cloneItem = GALLERY_DATA[j];&lt;br /&gt;
    htmlOutput += &#039;&amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
    /* 🌟 Pulls the complete, absolute path directly from your variables */&lt;br /&gt;
    htmlOutput += &#039;  &amp;lt;a href=&amp;quot;&#039; + cloneItem.link + &#039;&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;&#039; + cloneItem.img + &#039;&amp;quot; alt=&amp;quot;&#039; + cloneItem.title + &#039;&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
    htmlOutput += &#039;  &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;&#039; + cloneItem.title + &#039;&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;&#039; + cloneItem.desc + &#039;&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
    htmlOutput += &#039;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // 3. Inject the compiled loop lists safely into the DOM track container &lt;br /&gt;
  track.innerHTML = htmlOutput;&lt;br /&gt;
&lt;br /&gt;
  // 4. Calculate the mathematically perfect loop point dynamically using percentage tracking:&lt;br /&gt;
  var styleSheet = document.createElement(&amp;quot;style&amp;quot;);&lt;br /&gt;
  styleSheet.type = &amp;quot;text/css&amp;quot;;&lt;br /&gt;
  styleSheet.innerText = &lt;br /&gt;
    &amp;quot;@keyframes dynamicMarquee {&amp;quot; +&lt;br /&gt;
    &amp;quot;  0% { transform: translateX(0); }&amp;quot; +&lt;br /&gt;
    &amp;quot;  100% { transform: translateX(-50%); }&amp;quot; +&lt;br /&gt;
    &amp;quot;}\n&amp;quot; +&lt;br /&gt;
    &amp;quot;#sewing-marquee-track { animation: 35s dynamicMarquee linear infinite; }&amp;quot;;&lt;br /&gt;
  document.head.appendChild(styleSheet);&lt;br /&gt;
})();&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gfc</name></author>
	</entry>
	<entry>
		<id>https://sandbox.umd.edu/wiki/index.php?title=Widget:SlidingGallerySewing&amp;diff=3420</id>
		<title>Widget:SlidingGallerySewing</title>
		<link rel="alternate" type="text/html" href="https://sandbox.umd.edu/wiki/index.php?title=Widget:SlidingGallerySewing&amp;diff=3420"/>
		<updated>2026-10-15T23:26:00Z</updated>

		<summary type="html">&lt;p&gt;Gfc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- =========================================================================&lt;br /&gt;
     ⚙️ MASTER VARIABLE CONFIGURATION ZONE&lt;br /&gt;
     Update, add, or remove your unique sewing studio equipment here. &lt;br /&gt;
     You only need to edit this list once—the script builds the loop for you!&lt;br /&gt;
     ========================================================================= --&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var GALLERY_DATA = [&lt;br /&gt;
  {&lt;br /&gt;
    link: &amp;quot;/wiki/index.php/Singer_HD_4432&amp;quot;,&lt;br /&gt;
    img: &amp;quot;/wiki/images/thumb/e/e1/Singer_HD-1_4452.jpg/600px-Singer_HD-1_4452.jpg?20250616215327&amp;quot;,&lt;br /&gt;
    title: &amp;quot;Singer HD 4432&amp;quot;,&lt;br /&gt;
    desc: &amp;quot;Basic sewing machine&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    link: &amp;quot;/Singer_Simple_3232&amp;quot;,&lt;br /&gt;
    img: &amp;quot;/wiki/images/thumb/0/08/Singer_Simple.jpg/800px-Singer_Simple.jpg?20191223184102&amp;quot;,&lt;br /&gt;
    title: &amp;quot;Singer Simple 3232&amp;quot;,&lt;br /&gt;
    desc: &amp;quot;Starter sewing machine&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    link: &amp;quot;/wiki/Janome_HD-3000BE&amp;quot;,&lt;br /&gt;
    img: &amp;quot;/wiki/images/thumb/0/01/Janome_HD-3000BE.jpeg/400px-Janome_HD-3000BE.jpeg&amp;quot;,&lt;br /&gt;
    title: &amp;quot;Janome HD-3000BE&amp;quot;,&lt;br /&gt;
    desc: &amp;quot;Intermediate Home Sewing Machine&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    link: &amp;quot;/wiki/Bernina_model_1000&amp;quot;,&lt;br /&gt;
    img: &amp;quot;/wiki/images/thumb/f/f9/Bernina1008.png/400px-Bernina1008.png&amp;quot;,&lt;br /&gt;
    title: &amp;quot;Bernina model 1008&amp;quot;,&lt;br /&gt;
    desc: &amp;quot;Intermediate Home Sewing Machine&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    link: &amp;quot;/wiki/Brother_1034DX&amp;quot;,&lt;br /&gt;
    img: &amp;quot;/wiki/images/thumb/3/3e/Brother-1034DX-Serger.jpeg/120px-Brother-1034DX-Serger.jpeg&amp;quot;,&lt;br /&gt;
    title: &amp;quot;Brother 1034DX&amp;quot;,&lt;br /&gt;
    desc: &amp;quot;Serger&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    link: &amp;quot;/wiki/Brother_PE770&amp;quot;,&lt;br /&gt;
    /* 🌟 UPDATED: Added your optimized 240px thumbnail path below */&lt;br /&gt;
    img: &amp;quot;/wiki/images/thumb/8/8d/BrotherPE770.jpg/240px-BrotherPE770.jpg&amp;quot;,&lt;br /&gt;
    title: &amp;quot;Brother PE770&amp;quot;,&lt;br /&gt;
    desc: &amp;quot;Embroidery machine&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
];&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- =========================================================================&lt;br /&gt;
     🎨 STYLING CONFIGURATION SYSTEM (Handles the enlarged image profiles)&lt;br /&gt;
     ========================================================================= --&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
.gallery-outer { position: relative; height: 100%; margin: 20px 0; }&lt;br /&gt;
.gallery-bg { position: relative; margin: 0 -1em; padding: 0; background-color: transparent; border: 1px none #ddd; height: 100%; }&lt;br /&gt;
&lt;br /&gt;
/* EXPANDED VIEWPORT BOUNDS: Tall enough to safely clear the new image sizes */&lt;br /&gt;
.gallery-viewport { &lt;br /&gt;
  position: relative; &lt;br /&gt;
  margin: 0 auto; &lt;br /&gt;
  width: 742px; /* Total viewable window width area optimized for iPads */&lt;br /&gt;
  height: 380px; &lt;br /&gt;
  overflow: hidden; &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wrapper {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  top: 0;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  display: flex;&lt;br /&gt;
  gap: 25px; /* Spaces out your columns neatly */&lt;br /&gt;
  width: max-content; &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ⏸️ PAUSE ANIMATION ON HOVER */&lt;br /&gt;
.wrapper:hover {&lt;br /&gt;
  animation-play-state: paused !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* EXPANDED ITEM BOX COLUMNS: Boosted cards to make room for wide thumbnails */&lt;br /&gt;
.gallery-item {&lt;br /&gt;
  display: flex;&lt;br /&gt;
  flex-direction: column;&lt;br /&gt;
  align-items: center;&lt;br /&gt;
  justify-content: flex-start;&lt;br /&gt;
  text-align: center;&lt;br /&gt;
  width: 220px; &lt;br /&gt;
  flex-shrink: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* DYNAMIC LARGE IMAGE BOUNDARIES */&lt;br /&gt;
.gallery-item img {&lt;br /&gt;
  width: 190px;  &lt;br /&gt;
  height: 240px; &lt;br /&gt;
  object-fit: contain; /* Scales mismatched image formats without distortion */&lt;br /&gt;
  transition: transform 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 🔍 ENLARGE IMAGE ON HOVER */&lt;br /&gt;
.gallery-item img:hover {&lt;br /&gt;
  transform: scale(1.12); &lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-caption {&lt;br /&gt;
  font-size: 0.9em; &lt;br /&gt;
  color: #333;&lt;br /&gt;
  margin-top: 10px;&lt;br /&gt;
  line-height: 1.3;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;gallery-outer&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gallery-bg&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gallery-viewport&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;wrapper&amp;quot; id=&amp;quot;sewing-marquee-track&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;!-- Elements will be automatically generated and compiled here by the JavaScript below --&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- =========================================================================&lt;br /&gt;
     ⚡ AUTO-COMPILING INFINITE SLIDER ENGINE &lt;br /&gt;
     ========================================================================= --&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
(function() {&lt;br /&gt;
  var track = document.getElementById(&#039;sewing-marquee-track&#039;);&lt;br /&gt;
  if (!track || !GALLERY_DATA || GALLERY_DATA.length === 0) return;&lt;br /&gt;
&lt;br /&gt;
  var htmlOutput = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
  // 1. Build the HTML block for the primary list entries&lt;br /&gt;
  for (var i = 0; i &amp;lt; GALLERY_DATA.length; i++) {&lt;br /&gt;
    var item = GALLERY_DATA[i];&lt;br /&gt;
    htmlOutput += &#039;&amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
    htmlOutput += &#039;  &amp;lt;a href=&amp;quot;&#039; + item.link + &#039;&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;&#039; + item.img + &#039;&amp;quot; alt=&amp;quot;&#039; + item.title + &#039;&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
    htmlOutput += &#039;  &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;&#039; + item.title + &#039;&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;&#039; + item.desc + &#039;&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
    htmlOutput += &#039;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // 2. Build the HTML block for the duplicate list entries to create the continuous loop&lt;br /&gt;
  for (var j = 0; j &amp;lt; GALLERY_DATA.length; j++) {&lt;br /&gt;
    var cloneItem = GALLERY_DATA[j];&lt;br /&gt;
    htmlOutput += &#039;&amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
    htmlOutput += &#039;  &amp;lt;a href=&amp;quot;&#039; + cloneItem.link + &#039;&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;&#039; + cloneItem.img + &#039;&amp;quot; alt=&amp;quot;&#039; + cloneItem.title + &#039;&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
    htmlOutput += &#039;  &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;&#039; + cloneItem.title + &#039;&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;&#039; + cloneItem.desc + &#039;&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
    htmlOutput += &#039;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // 3. Inject the compiled loop lists safely into the DOM track container &lt;br /&gt;
  track.innerHTML = htmlOutput;&lt;br /&gt;
&lt;br /&gt;
  // 4. Calculate the mathematically perfect loop point dynamically using percentage tracking:&lt;br /&gt;
  //    Sliding left by exactly -50% ensures an infinite, gapless repeat loop regardless of dimensions.&lt;br /&gt;
  var styleSheet = document.createElement(&amp;quot;style&amp;quot;);&lt;br /&gt;
  styleSheet.type = &amp;quot;text/css&amp;quot;;&lt;br /&gt;
  styleSheet.innerText = &lt;br /&gt;
    &amp;quot;@keyframes dynamicMarquee {&amp;quot; +&lt;br /&gt;
    &amp;quot;  0% { transform: translateX(0); }&amp;quot; +&lt;br /&gt;
    &amp;quot;  100% { transform: translateX(-50%); }&amp;quot; +&lt;br /&gt;
    &amp;quot;}\n&amp;quot; +&lt;br /&gt;
    &amp;quot;#sewing-marquee-track { animation: 35s dynamicMarquee linear infinite; }&amp;quot;;&lt;br /&gt;
  document.head.appendChild(styleSheet);&lt;br /&gt;
})();&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gfc</name></author>
	</entry>
	<entry>
		<id>https://sandbox.umd.edu/wiki/index.php?title=Widget:SlidingGallerySewing&amp;diff=3419</id>
		<title>Widget:SlidingGallerySewing</title>
		<link rel="alternate" type="text/html" href="https://sandbox.umd.edu/wiki/index.php?title=Widget:SlidingGallerySewing&amp;diff=3419"/>
		<updated>2026-10-15T23:23:34Z</updated>

		<summary type="html">&lt;p&gt;Gfc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- =========================================================================&lt;br /&gt;
     ⚙️ MASTER VARIABLE CONFIGURATION ZONE&lt;br /&gt;
     Update, add, or remove your unique sewing studio equipment here. &lt;br /&gt;
     You only need to edit this list once—the script builds the loop for you!&lt;br /&gt;
     ========================================================================= --&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var GALLERY_DATA = [&lt;br /&gt;
  {&lt;br /&gt;
    link: &amp;quot;/Singer_HD_4432&amp;quot;,&lt;br /&gt;
    img: &amp;quot;/wiki/images/thumb/e/e1/Singer_HD-1_4452.jpg/600px-Singer_HD-1_4452.jpg?20250616215327&amp;quot;,&lt;br /&gt;
    title: &amp;quot;Singer HD 4432&amp;quot;,&lt;br /&gt;
    desc: &amp;quot;Basic sewing machine&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    link: &amp;quot;/Singer_Simple_3232&amp;quot;,&lt;br /&gt;
    img: &amp;quot;/wiki/images/thumb/0/08/Singer_Simple.jpg/800px-Singer_Simple.jpg?20191223184102&amp;quot;,&lt;br /&gt;
    title: &amp;quot;Singer Simple 3232&amp;quot;,&lt;br /&gt;
    desc: &amp;quot;Starter sewing machine&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    link: &amp;quot;/wiki/Janome_HD-3000BE&amp;quot;,&lt;br /&gt;
    img: &amp;quot;/wiki/images/thumb/0/01/Janome_HD-3000BE.jpeg/400px-Janome_HD-3000BE.jpeg&amp;quot;,&lt;br /&gt;
    title: &amp;quot;Janome HD-3000BE&amp;quot;,&lt;br /&gt;
    desc: &amp;quot;Intermediate Home Sewing Machine&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    link: &amp;quot;/wiki/Bernina_model_1000&amp;quot;,&lt;br /&gt;
    img: &amp;quot;/wiki/images/thumb/f/f9/Bernina1008.png/400px-Bernina1008.png&amp;quot;,&lt;br /&gt;
    title: &amp;quot;Bernina model 1008&amp;quot;,&lt;br /&gt;
    desc: &amp;quot;Intermediate Home Sewing Machine&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    link: &amp;quot;/wiki/Brother_1034DX&amp;quot;,&lt;br /&gt;
    img: &amp;quot;/wiki/images/thumb/3/3e/Brother-1034DX-Serger.jpeg/120px-Brother-1034DX-Serger.jpeg&amp;quot;,&lt;br /&gt;
    title: &amp;quot;Brother 1034DX&amp;quot;,&lt;br /&gt;
    desc: &amp;quot;Serger&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    link: &amp;quot;/wiki/Brother_PE770&amp;quot;,&lt;br /&gt;
    /* 🌟 UPDATED: Added your optimized 240px thumbnail path below */&lt;br /&gt;
    img: &amp;quot;/wiki/images/thumb/8/8d/BrotherPE770.jpg/240px-BrotherPE770.jpg&amp;quot;,&lt;br /&gt;
    title: &amp;quot;Brother PE770&amp;quot;,&lt;br /&gt;
    desc: &amp;quot;Embroidery machine&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
];&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- =========================================================================&lt;br /&gt;
     🎨 STYLING CONFIGURATION SYSTEM (Handles the enlarged image profiles)&lt;br /&gt;
     ========================================================================= --&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
.gallery-outer { position: relative; height: 100%; margin: 20px 0; }&lt;br /&gt;
.gallery-bg { position: relative; margin: 0 -1em; padding: 0; background-color: transparent; border: 1px none #ddd; height: 100%; }&lt;br /&gt;
&lt;br /&gt;
/* EXPANDED VIEWPORT BOUNDS: Tall enough to safely clear the new image sizes */&lt;br /&gt;
.gallery-viewport { &lt;br /&gt;
  position: relative; &lt;br /&gt;
  margin: 0 auto; &lt;br /&gt;
  width: 742px; /* Total viewable window width area optimized for iPads */&lt;br /&gt;
  height: 380px; &lt;br /&gt;
  overflow: hidden; &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wrapper {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  top: 0;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  display: flex;&lt;br /&gt;
  gap: 25px; /* Spaces out your columns neatly */&lt;br /&gt;
  width: max-content; &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ⏸️ PAUSE ANIMATION ON HOVER */&lt;br /&gt;
.wrapper:hover {&lt;br /&gt;
  animation-play-state: paused !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* EXPANDED ITEM BOX COLUMNS: Boosted cards to make room for wide thumbnails */&lt;br /&gt;
.gallery-item {&lt;br /&gt;
  display: flex;&lt;br /&gt;
  flex-direction: column;&lt;br /&gt;
  align-items: center;&lt;br /&gt;
  justify-content: flex-start;&lt;br /&gt;
  text-align: center;&lt;br /&gt;
  width: 220px; &lt;br /&gt;
  flex-shrink: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* DYNAMIC LARGE IMAGE BOUNDARIES */&lt;br /&gt;
.gallery-item img {&lt;br /&gt;
  width: 190px;  &lt;br /&gt;
  height: 240px; &lt;br /&gt;
  object-fit: contain; /* Scales mismatched image formats without distortion */&lt;br /&gt;
  transition: transform 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 🔍 ENLARGE IMAGE ON HOVER */&lt;br /&gt;
.gallery-item img:hover {&lt;br /&gt;
  transform: scale(1.12); &lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-caption {&lt;br /&gt;
  font-size: 0.9em; &lt;br /&gt;
  color: #333;&lt;br /&gt;
  margin-top: 10px;&lt;br /&gt;
  line-height: 1.3;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;gallery-outer&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gallery-bg&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gallery-viewport&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;wrapper&amp;quot; id=&amp;quot;sewing-marquee-track&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;!-- Elements will be automatically generated and compiled here by the JavaScript below --&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- =========================================================================&lt;br /&gt;
     ⚡ AUTO-COMPILING INFINITE SLIDER ENGINE &lt;br /&gt;
     ========================================================================= --&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
(function() {&lt;br /&gt;
  var track = document.getElementById(&#039;sewing-marquee-track&#039;);&lt;br /&gt;
  if (!track || !GALLERY_DATA || GALLERY_DATA.length === 0) return;&lt;br /&gt;
&lt;br /&gt;
  var htmlOutput = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
  // 1. Build the HTML block for the primary list entries&lt;br /&gt;
  for (var i = 0; i &amp;lt; GALLERY_DATA.length; i++) {&lt;br /&gt;
    var item = GALLERY_DATA[i];&lt;br /&gt;
    htmlOutput += &#039;&amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
    htmlOutput += &#039;  &amp;lt;a href=&amp;quot;&#039; + item.link + &#039;&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;&#039; + item.img + &#039;&amp;quot; alt=&amp;quot;&#039; + item.title + &#039;&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
    htmlOutput += &#039;  &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;&#039; + item.title + &#039;&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;&#039; + item.desc + &#039;&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
    htmlOutput += &#039;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // 2. Build the HTML block for the duplicate list entries to create the continuous loop&lt;br /&gt;
  for (var j = 0; j &amp;lt; GALLERY_DATA.length; j++) {&lt;br /&gt;
    var cloneItem = GALLERY_DATA[j];&lt;br /&gt;
    htmlOutput += &#039;&amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
    htmlOutput += &#039;  &amp;lt;a href=&amp;quot;&#039; + cloneItem.link + &#039;&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;&#039; + cloneItem.img + &#039;&amp;quot; alt=&amp;quot;&#039; + cloneItem.title + &#039;&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
    htmlOutput += &#039;  &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;&#039; + cloneItem.title + &#039;&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;&#039; + cloneItem.desc + &#039;&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
    htmlOutput += &#039;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // 3. Inject the compiled loop lists safely into the DOM track container &lt;br /&gt;
  track.innerHTML = htmlOutput;&lt;br /&gt;
&lt;br /&gt;
  // 4. Calculate the mathematically perfect loop point dynamically using percentage tracking:&lt;br /&gt;
  //    Sliding left by exactly -50% ensures an infinite, gapless repeat loop regardless of dimensions.&lt;br /&gt;
  var styleSheet = document.createElement(&amp;quot;style&amp;quot;);&lt;br /&gt;
  styleSheet.type = &amp;quot;text/css&amp;quot;;&lt;br /&gt;
  styleSheet.innerText = &lt;br /&gt;
    &amp;quot;@keyframes dynamicMarquee {&amp;quot; +&lt;br /&gt;
    &amp;quot;  0% { transform: translateX(0); }&amp;quot; +&lt;br /&gt;
    &amp;quot;  100% { transform: translateX(-50%); }&amp;quot; +&lt;br /&gt;
    &amp;quot;}\n&amp;quot; +&lt;br /&gt;
    &amp;quot;#sewing-marquee-track { animation: 35s dynamicMarquee linear infinite; }&amp;quot;;&lt;br /&gt;
  document.head.appendChild(styleSheet);&lt;br /&gt;
})();&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gfc</name></author>
	</entry>
	<entry>
		<id>https://sandbox.umd.edu/wiki/index.php?title=IRB_1238&amp;diff=3418</id>
		<title>IRB 1238</title>
		<link rel="alternate" type="text/html" href="https://sandbox.umd.edu/wiki/index.php?title=IRB_1238&amp;diff=3418"/>
		<updated>2026-10-15T23:16:30Z</updated>

		<summary type="html">&lt;p&gt;Gfc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Rooms]]&lt;br /&gt;
=Sewing Studio=&lt;br /&gt;
__TOC__&lt;br /&gt;
The &#039;&#039;&#039;Sewing Studio&#039;&#039;&#039; is located in Iribe Room 1238.&lt;br /&gt;
&lt;br /&gt;
Students can use the machines and tools in this studio to modify or make their own &lt;br /&gt;
fabric projects, including: clothing, puppets, cosplay/costumes, small home decor, &lt;br /&gt;
and more!                                             [[IRB_1238_VR| VT test]]&lt;br /&gt;
==Tools==&lt;br /&gt;
{{#widget:SlidingGallerySewing}}&lt;br /&gt;
If you are looking for something on this list, and you cannot find it in the room, tell a manager. &#039;&#039;&#039;It should not have left the room and may be missing.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{:MajorToolsSewingStudio}}&lt;br /&gt;
== Take a look around the Sandbox Sewing Studio!==&lt;br /&gt;
{{Virtual Tour|tourID=Sewing}}&lt;br /&gt;
==Minor tools==&lt;br /&gt;
If you are looking for something on this list, and you cannot find it in the room, tell a manager. &#039;&#039;&#039;We can track it down and/or replace it.&#039;&#039;&#039;&lt;br /&gt;
{{:SewingMinorToolsList}}&lt;br /&gt;
==Consumables==&lt;br /&gt;
If you are looking for something on this list, and you cannot find it in the room, tell a manager. &#039;&#039;&#039;We likely have more stock in storage.&#039;&#039;&#039;&lt;br /&gt;
{{:SewingConsumablesList}}&lt;/div&gt;</summary>
		<author><name>Gfc</name></author>
	</entry>
	<entry>
		<id>https://sandbox.umd.edu/wiki/index.php?title=IRB_1238&amp;diff=3417</id>
		<title>IRB 1238</title>
		<link rel="alternate" type="text/html" href="https://sandbox.umd.edu/wiki/index.php?title=IRB_1238&amp;diff=3417"/>
		<updated>2026-10-15T23:16:11Z</updated>

		<summary type="html">&lt;p&gt;Gfc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Rooms]]&lt;br /&gt;
=Sewing Studio=&lt;br /&gt;
__TOC__&lt;br /&gt;
The &#039;&#039;&#039;Sewing Studio&#039;&#039;&#039; is located in Iribe Room 1238.&lt;br /&gt;
&lt;br /&gt;
Students can use the machines and tools in this studio to modify or make their own &lt;br /&gt;
fabric projects, including: clothing, puppets, cosplay/costumes, small home decor, &lt;br /&gt;
and more!                                             [[IRB_1238_VR| VT test]]&lt;br /&gt;
==Tools==&lt;br /&gt;
{{#widget:SlidingGallerySewing}}&lt;br /&gt;
&lt;br /&gt;
If you are looking for something on this list, and you cannot find it in the room, tell a manager. &#039;&#039;&#039;It should not have left the room and may be missing.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{:MajorToolsSewingStudio}}&lt;br /&gt;
&lt;br /&gt;
== Take a look around the Sandbox Sewing Studio!==&lt;br /&gt;
{{Virtual Tour|tourID=Sewing}}&lt;br /&gt;
==Minor tools==&lt;br /&gt;
If you are looking for something on this list, and you cannot find it in the room, tell a manager. &#039;&#039;&#039;We can track it down and/or replace it.&#039;&#039;&#039;&lt;br /&gt;
{{:SewingMinorToolsList}}&lt;br /&gt;
==Consumables==&lt;br /&gt;
If you are looking for something on this list, and you cannot find it in the room, tell a manager. &#039;&#039;&#039;We likely have more stock in storage.&#039;&#039;&#039;&lt;br /&gt;
{{:SewingConsumablesList}}&lt;/div&gt;</summary>
		<author><name>Gfc</name></author>
	</entry>
	<entry>
		<id>https://sandbox.umd.edu/wiki/index.php?title=IRB_1238&amp;diff=3416</id>
		<title>IRB 1238</title>
		<link rel="alternate" type="text/html" href="https://sandbox.umd.edu/wiki/index.php?title=IRB_1238&amp;diff=3416"/>
		<updated>2026-10-15T23:14:42Z</updated>

		<summary type="html">&lt;p&gt;Gfc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Rooms]]&lt;br /&gt;
=Sewing Studio=&lt;br /&gt;
__TOC__&lt;br /&gt;
The &#039;&#039;&#039;Sewing Studio&#039;&#039;&#039; is located in Iribe Room 1238.&lt;br /&gt;
&lt;br /&gt;
Students can use the machines and tools in this studio to modify or make their own &lt;br /&gt;
fabric projects, including: clothing, puppets, cosplay/costumes, small home decor, &lt;br /&gt;
and more!                                             [[IRB_1238_VR| VT test]]&lt;br /&gt;
==Tools==&lt;br /&gt;
{{#widget:SlidingGallerySewing}}&lt;br /&gt;
&lt;br /&gt;
If you are looking for something on this list, and you cannot find it in the room, tell a manager. &#039;&#039;&#039;It should not have left the room and may be missing.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{:MajorToolsSewingStudio}}&lt;br /&gt;
&lt;br /&gt;
==Minor tools==&lt;br /&gt;
If you are looking for something on this list, and you cannot find it in the room, tell a manager. &#039;&#039;&#039;We can track it down and/or replace it.&#039;&#039;&#039;&lt;br /&gt;
{{:SewingMinorToolsList}}&lt;br /&gt;
==Consumables==&lt;br /&gt;
If you are looking for something on this list, and you cannot find it in the room, tell a manager. &#039;&#039;&#039;We likely have more stock in storage.&#039;&#039;&#039;&lt;br /&gt;
{{:SewingConsumablesList}}&lt;/div&gt;</summary>
		<author><name>Gfc</name></author>
	</entry>
	<entry>
		<id>https://sandbox.umd.edu/wiki/index.php?title=IRB_1238&amp;diff=3415</id>
		<title>IRB 1238</title>
		<link rel="alternate" type="text/html" href="https://sandbox.umd.edu/wiki/index.php?title=IRB_1238&amp;diff=3415"/>
		<updated>2026-10-15T23:14:18Z</updated>

		<summary type="html">&lt;p&gt;Gfc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Rooms]]&lt;br /&gt;
=Sewing Studio=&lt;br /&gt;
__TOC__&lt;br /&gt;
The &#039;&#039;&#039;Sewing Studio&#039;&#039;&#039; is located in Iribe Room 1238.&lt;br /&gt;
&lt;br /&gt;
Students can use the machines and tools in this studio to modify or make their own &lt;br /&gt;
fabric projects, including: clothing, puppets, cosplay/costumes, small home decor, &lt;br /&gt;
and more!                                             [[IRB_1238_VR| VT test]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tools==&lt;br /&gt;
{{#widget:SlidingGallerySewing}}&lt;br /&gt;
&lt;br /&gt;
If you are looking for something on this list, and you cannot find it in the room, tell a manager. &#039;&#039;&#039;It should not have left the room and may be missing.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{:MajorToolsSewingStudio}}&lt;br /&gt;
&lt;br /&gt;
==Minor tools==&lt;br /&gt;
If you are looking for something on this list, and you cannot find it in the room, tell a manager. &#039;&#039;&#039;We can track it down and/or replace it.&#039;&#039;&#039;&lt;br /&gt;
{{:SewingMinorToolsList}}&lt;br /&gt;
==Consumables==&lt;br /&gt;
If you are looking for something on this list, and you cannot find it in the room, tell a manager. &#039;&#039;&#039;We likely have more stock in storage.&#039;&#039;&#039;&lt;br /&gt;
{{:SewingConsumablesList}}&lt;/div&gt;</summary>
		<author><name>Gfc</name></author>
	</entry>
	<entry>
		<id>https://sandbox.umd.edu/wiki/index.php?title=IRB_1238_VR&amp;diff=3414</id>
		<title>IRB 1238 VR</title>
		<link rel="alternate" type="text/html" href="https://sandbox.umd.edu/wiki/index.php?title=IRB_1238_VR&amp;diff=3414"/>
		<updated>2026-10-15T23:13:45Z</updated>

		<summary type="html">&lt;p&gt;Gfc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Rooms]]&lt;br /&gt;
=Sewing Studio=&lt;br /&gt;
__TOC__&lt;br /&gt;
The &#039;&#039;&#039;Sewing Studio&#039;&#039;&#039; is located in Iribe Room 1238.&lt;br /&gt;
Students can use the machines and tools in this studio to modify or make their own &lt;br /&gt;
fabric projects, including: clothing, puppets, cosplay/costumes, small home decor, &lt;br /&gt;
and more!                                             &lt;br /&gt;
&lt;br /&gt;
==Tools==&lt;br /&gt;
&lt;br /&gt;
{{#widget:SlidingGallerySewing}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you are looking for something on this list, and you cannot find it in the room, tell a manager. &#039;&#039;&#039;It should not have left the room and may be missing.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{:MajorToolsSewingStudio}}&lt;br /&gt;
&lt;br /&gt;
== Take a look around the Sandbox Sewing Studio!==&lt;br /&gt;
&lt;br /&gt;
{{Virtual Tour|tourID=Sewing}}&lt;br /&gt;
&lt;br /&gt;
==Minor tools==&lt;br /&gt;
If you are looking for something on this list, and you cannot find it in the room, tell a manager. &#039;&#039;&#039;We can track it down and/or replace it.&#039;&#039;&#039;&lt;br /&gt;
{{:SewingMinorToolsList}}&lt;br /&gt;
==Consumables==&lt;br /&gt;
If you are looking for something on this list, and you cannot find it in the room, tell a manager. &#039;&#039;&#039;We likely have more stock in storage.&#039;&#039;&#039;&lt;br /&gt;
{{:SewingConsumablesList}}&lt;/div&gt;</summary>
		<author><name>Gfc</name></author>
	</entry>
	<entry>
		<id>https://sandbox.umd.edu/wiki/index.php?title=Widget:SlidingGallerySewing&amp;diff=3413</id>
		<title>Widget:SlidingGallerySewing</title>
		<link rel="alternate" type="text/html" href="https://sandbox.umd.edu/wiki/index.php?title=Widget:SlidingGallerySewing&amp;diff=3413"/>
		<updated>2026-10-15T23:12:26Z</updated>

		<summary type="html">&lt;p&gt;Gfc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- =========================================================================&lt;br /&gt;
     ⚙️ MASTER VARIABLE CONFIGURATION ZONE&lt;br /&gt;
     Update, add, or remove your unique sewing studio equipment here. &lt;br /&gt;
     You only need to edit this list once—the script builds the loop for you!&lt;br /&gt;
     ========================================================================= --&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var GALLERY_DATA = [&lt;br /&gt;
  {&lt;br /&gt;
    link: &amp;quot;/wiki/Singer_HD_4432&amp;quot;,&lt;br /&gt;
    img: &amp;quot;/wiki/images/thumb/e/e1/Singer_HD-1_4452.jpg/600px-Singer_HD-1_4452.jpg?20250616215327&amp;quot;,&lt;br /&gt;
    title: &amp;quot;Singer HD 4432&amp;quot;,&lt;br /&gt;
    desc: &amp;quot;Basic sewing machine&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    link: &amp;quot;/wiki/Singer_Simple_3232&amp;quot;,&lt;br /&gt;
    img: &amp;quot;/wiki/images/thumb/0/08/Singer_Simple.jpg/800px-Singer_Simple.jpg?20191223184102&amp;quot;,&lt;br /&gt;
    title: &amp;quot;Singer Simple 3232&amp;quot;,&lt;br /&gt;
    desc: &amp;quot;Starter sewing machine&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    link: &amp;quot;/wiki/Janome_HD-3000BE&amp;quot;,&lt;br /&gt;
    img: &amp;quot;/wiki/images/thumb/0/01/Janome_HD-3000BE.jpeg/400px-Janome_HD-3000BE.jpeg&amp;quot;,&lt;br /&gt;
    title: &amp;quot;Janome HD-3000BE&amp;quot;,&lt;br /&gt;
    desc: &amp;quot;Intermediate Home Sewing Machine&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    link: &amp;quot;/wiki/Bernina_model_1000&amp;quot;,&lt;br /&gt;
    img: &amp;quot;/wiki/images/thumb/f/f9/Bernina1008.png/400px-Bernina1008.png&amp;quot;,&lt;br /&gt;
    title: &amp;quot;Bernina model 1008&amp;quot;,&lt;br /&gt;
    desc: &amp;quot;Intermediate Home Sewing Machine&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    link: &amp;quot;/wiki/Brother_1034DX&amp;quot;,&lt;br /&gt;
    img: &amp;quot;/wiki/images/thumb/3/3e/Brother-1034DX-Serger.jpeg/120px-Brother-1034DX-Serger.jpeg&amp;quot;,&lt;br /&gt;
    title: &amp;quot;Brother 1034DX&amp;quot;,&lt;br /&gt;
    desc: &amp;quot;Serger&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    link: &amp;quot;/wiki/Brother_PE770&amp;quot;,&lt;br /&gt;
    /* 🌟 UPDATED: Added your optimized 240px thumbnail path below */&lt;br /&gt;
    img: &amp;quot;/wiki/images/thumb/8/8d/BrotherPE770.jpg/240px-BrotherPE770.jpg&amp;quot;,&lt;br /&gt;
    title: &amp;quot;Brother PE770&amp;quot;,&lt;br /&gt;
    desc: &amp;quot;Embroidery machine&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
];&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- =========================================================================&lt;br /&gt;
     🎨 STYLING CONFIGURATION SYSTEM (Handles the enlarged image profiles)&lt;br /&gt;
     ========================================================================= --&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
.gallery-outer { position: relative; height: 100%; margin: 20px 0; }&lt;br /&gt;
.gallery-bg { position: relative; margin: 0 -1em; padding: 0; background-color: transparent; border: 1px none #ddd; height: 100%; }&lt;br /&gt;
&lt;br /&gt;
/* EXPANDED VIEWPORT BOUNDS: Tall enough to safely clear the new image sizes */&lt;br /&gt;
.gallery-viewport { &lt;br /&gt;
  position: relative; &lt;br /&gt;
  margin: 0 auto; &lt;br /&gt;
  width: 742px; /* Total viewable window width area optimized for iPads */&lt;br /&gt;
  height: 380px; &lt;br /&gt;
  overflow: hidden; &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wrapper {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  top: 0;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  display: flex;&lt;br /&gt;
  gap: 25px; /* Spaces out your columns neatly */&lt;br /&gt;
  width: max-content; &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ⏸️ PAUSE ANIMATION ON HOVER */&lt;br /&gt;
.wrapper:hover {&lt;br /&gt;
  animation-play-state: paused !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* EXPANDED ITEM BOX COLUMNS: Boosted cards to make room for wide thumbnails */&lt;br /&gt;
.gallery-item {&lt;br /&gt;
  display: flex;&lt;br /&gt;
  flex-direction: column;&lt;br /&gt;
  align-items: center;&lt;br /&gt;
  justify-content: flex-start;&lt;br /&gt;
  text-align: center;&lt;br /&gt;
  width: 220px; &lt;br /&gt;
  flex-shrink: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* DYNAMIC LARGE IMAGE BOUNDARIES */&lt;br /&gt;
.gallery-item img {&lt;br /&gt;
  width: 190px;  &lt;br /&gt;
  height: 240px; &lt;br /&gt;
  object-fit: contain; /* Scales mismatched image formats without distortion */&lt;br /&gt;
  transition: transform 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 🔍 ENLARGE IMAGE ON HOVER */&lt;br /&gt;
.gallery-item img:hover {&lt;br /&gt;
  transform: scale(1.12); &lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-caption {&lt;br /&gt;
  font-size: 0.9em; &lt;br /&gt;
  color: #333;&lt;br /&gt;
  margin-top: 10px;&lt;br /&gt;
  line-height: 1.3;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;gallery-outer&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gallery-bg&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gallery-viewport&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;wrapper&amp;quot; id=&amp;quot;sewing-marquee-track&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;!-- Elements will be automatically generated and compiled here by the JavaScript below --&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- =========================================================================&lt;br /&gt;
     ⚡ AUTO-COMPILING INFINITE SLIDER ENGINE &lt;br /&gt;
     ========================================================================= --&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
(function() {&lt;br /&gt;
  var track = document.getElementById(&#039;sewing-marquee-track&#039;);&lt;br /&gt;
  if (!track || !GALLERY_DATA || GALLERY_DATA.length === 0) return;&lt;br /&gt;
&lt;br /&gt;
  var htmlOutput = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
  // 1. Build the HTML block for the primary list entries&lt;br /&gt;
  for (var i = 0; i &amp;lt; GALLERY_DATA.length; i++) {&lt;br /&gt;
    var item = GALLERY_DATA[i];&lt;br /&gt;
    htmlOutput += &#039;&amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
    htmlOutput += &#039;  &amp;lt;a href=&amp;quot;&#039; + item.link + &#039;&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;&#039; + item.img + &#039;&amp;quot; alt=&amp;quot;&#039; + item.title + &#039;&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
    htmlOutput += &#039;  &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;&#039; + item.title + &#039;&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;&#039; + item.desc + &#039;&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
    htmlOutput += &#039;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // 2. Build the HTML block for the duplicate list entries to create the continuous loop&lt;br /&gt;
  for (var j = 0; j &amp;lt; GALLERY_DATA.length; j++) {&lt;br /&gt;
    var cloneItem = GALLERY_DATA[j];&lt;br /&gt;
    htmlOutput += &#039;&amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
    htmlOutput += &#039;  &amp;lt;a href=&amp;quot;&#039; + cloneItem.link + &#039;&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;&#039; + cloneItem.img + &#039;&amp;quot; alt=&amp;quot;&#039; + cloneItem.title + &#039;&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
    htmlOutput += &#039;  &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;&#039; + cloneItem.title + &#039;&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;&#039; + cloneItem.desc + &#039;&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
    htmlOutput += &#039;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // 3. Inject the compiled loop lists safely into the DOM track container &lt;br /&gt;
  track.innerHTML = htmlOutput;&lt;br /&gt;
&lt;br /&gt;
  // 4. Calculate the mathematically perfect loop point dynamically using percentage tracking:&lt;br /&gt;
  //    Sliding left by exactly -50% ensures an infinite, gapless repeat loop regardless of dimensions.&lt;br /&gt;
  var styleSheet = document.createElement(&amp;quot;style&amp;quot;);&lt;br /&gt;
  styleSheet.type = &amp;quot;text/css&amp;quot;;&lt;br /&gt;
  styleSheet.innerText = &lt;br /&gt;
    &amp;quot;@keyframes dynamicMarquee {&amp;quot; +&lt;br /&gt;
    &amp;quot;  0% { transform: translateX(0); }&amp;quot; +&lt;br /&gt;
    &amp;quot;  100% { transform: translateX(-50%); }&amp;quot; +&lt;br /&gt;
    &amp;quot;}\n&amp;quot; +&lt;br /&gt;
    &amp;quot;#sewing-marquee-track { animation: 35s dynamicMarquee linear infinite; }&amp;quot;;&lt;br /&gt;
  document.head.appendChild(styleSheet);&lt;br /&gt;
})();&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gfc</name></author>
	</entry>
	<entry>
		<id>https://sandbox.umd.edu/wiki/index.php?title=Widget:SlidingGallerySewing&amp;diff=3412</id>
		<title>Widget:SlidingGallerySewing</title>
		<link rel="alternate" type="text/html" href="https://sandbox.umd.edu/wiki/index.php?title=Widget:SlidingGallerySewing&amp;diff=3412"/>
		<updated>2026-10-15T22:58:03Z</updated>

		<summary type="html">&lt;p&gt;Gfc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;style&amp;gt;&lt;br /&gt;
/* Layout containers matching your original specifications */&lt;br /&gt;
.gallery-outer { position: relative; height: 100%; margin: 20px 0; }&lt;br /&gt;
.gallery-bg { position: relative; margin: 0 -1em; padding: 0; background-color: transparent; border: 1px none #ddd; height: 100%; }&lt;br /&gt;
.gallery-viewport { position: relative; margin: 0 auto; width: 742px; height: 300px; overflow: hidden; }&lt;br /&gt;
&lt;br /&gt;
/* Sliding engine (Pure CSS - Starts automatically) */&lt;br /&gt;
.wrapper {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  top: 0;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  display: flex;&lt;br /&gt;
  gap: 20px;&lt;br /&gt;
  width: 300px; /* Generous width for the moving track */&lt;br /&gt;
  animation: 45s credits linear infinite;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ⏸️ PAUSE ANIMATION ON HOVER */&lt;br /&gt;
.wrapper:hover {&lt;br /&gt;
  animation-play-state: paused;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-item {&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  text-align: center;&lt;br /&gt;
  width: 160px;&lt;br /&gt;
  flex-shrink: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-item img {&lt;br /&gt;
  width: 120px;  &lt;br /&gt;
  height: 180px; &lt;br /&gt;
  object-fit: contain;&lt;br /&gt;
  transition: transform 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 🔍 ENLARGE IMAGE ON HOVER */&lt;br /&gt;
.gallery-item img:hover {&lt;br /&gt;
  transform: scale(1.15);&lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-caption {&lt;br /&gt;
  font-size: 0.85em;&lt;br /&gt;
  color: #333;&lt;br /&gt;
  margin-top: 8px;&lt;br /&gt;
  line-height: 1.3;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes credits {&lt;br /&gt;
  0% { transform: translateX(0); }&lt;br /&gt;
  100% { transform: translateX(-1620px); } /* Perfect loop reset point based on total item widths */&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;gallery-outer&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gallery-bg&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gallery-viewport&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;wrapper&amp;quot;&amp;gt;&lt;br /&gt;
        &lt;br /&gt;
        &amp;lt;!-- ITEM 1: Singer Heavy Duty --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Singer_HD_4432&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/e/e1/Singer_HD-1_4452.jpg/600px-Singer_HD-1_4452.jpg?20250616215327&amp;quot; alt=&amp;quot;Singer HD 4432&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Singer HD 4432&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Basic sewing machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 2: Singer Simple --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Singer_Simple_3232&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/0/08/Singer_Simple.jpg/800px-Singer_Simple.jpg?20191223184102&amp;quot; alt=&amp;quot;Singer Simple 3232&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Singer Simple 3232&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Starter sewing machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 3: Janome (Follows the same FilePath pattern) --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Janome_HD-3000BE&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/0/01/Janome_HD-3000BE.jpeg/400px-Janome_HD-3000BE.jpeg&amp;quot; alt=&amp;quot;Janome HD-3000BE&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Janome HD-3000BE&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Intermediate Home Sewing Machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 4: Bernina --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Bernina_model_1000&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/f/f9/Bernina1008.png/400px-Bernina1008.png&amp;quot; alt=&amp;quot;Bernina model 1008&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Bernina model 1008&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Intermediate Home Sewing Machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 5: Brother Serger --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Brother_1034DX&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/3/3e/Brother-1034DX-Serger.jpeg?20261015223103&amp;quot; alt=&amp;quot;Brother 1034DX&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Brother 1034DX&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Serger&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 6: Brother Embroidery --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Brother_PE770&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/8/8d/BrotherPE770.jpg&amp;quot; alt=&amp;quot;Brother PE770&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Brother PE770&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Embroidery machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 1: Singer Heavy Duty --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Singer_HD_4432&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/e/e1/Singer_HD-1_4452.jpg/600px-Singer_HD-1_4452.jpg?20250616215327&amp;quot; alt=&amp;quot;Singer HD 4432&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Singer HD 4432&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Basic sewing machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 2: Singer Simple --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Singer_Simple_3232&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/0/08/Singer_Simple.jpg/800px-Singer_Simple.jpg?20191223184102&amp;quot; alt=&amp;quot;Singer Simple 3232&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Singer Simple 3232&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Starter sewing machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 3: Janome (Follows the same FilePath pattern) --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Janome_HD-3000BE&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/0/01/Janome_HD-3000BE.jpeg/400px-Janome_HD-3000BE.jpeg&amp;quot; alt=&amp;quot;Janome HD-3000BE&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Janome HD-3000BE&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Intermediate Home Sewing Machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 4: Bernina --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Bernina_model_1000&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/f/f9/Bernina1008.png/400px-Bernina1008.png&amp;quot; alt=&amp;quot;Bernina model 1008&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Bernina model 1008&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Intermediate Home Sewing Machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 5: Brother Serger --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Brother_1034DX&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/3/3e/Brother-1034DX-Serger.jpeg?20261015223103&amp;quot; alt=&amp;quot;Brother 1034DX&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Brother 1034DX&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Serger&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 6: Brother Embroidery --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Brother_PE770&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/8/8d/BrotherPE770.jpg&amp;quot; alt=&amp;quot;Brother PE770&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Brother PE770&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Embroidery machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gfc</name></author>
	</entry>
	<entry>
		<id>https://sandbox.umd.edu/wiki/index.php?title=Widget:SlidingGallerySewing&amp;diff=3411</id>
		<title>Widget:SlidingGallerySewing</title>
		<link rel="alternate" type="text/html" href="https://sandbox.umd.edu/wiki/index.php?title=Widget:SlidingGallerySewing&amp;diff=3411"/>
		<updated>2026-10-15T22:56:57Z</updated>

		<summary type="html">&lt;p&gt;Gfc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;style&amp;gt;&lt;br /&gt;
/* Layout containers matching your original specifications */&lt;br /&gt;
.gallery-outer { position: relative; height: 100%; margin: 20px 0; }&lt;br /&gt;
.gallery-bg { position: relative; margin: 0 -1em; padding: 0; background-color: transparent; border: 1px none #ddd; height: 100%; }&lt;br /&gt;
.gallery-viewport { position: relative; margin: 0 auto; width: 742px; height: 300px; overflow: hidden; }&lt;br /&gt;
&lt;br /&gt;
/* Sliding engine (Pure CSS - Starts automatically) */&lt;br /&gt;
.wrapper {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  top: 0;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  display: flex;&lt;br /&gt;
  gap: 20px;&lt;br /&gt;
  width: 300px; /* Generous width for the moving track */&lt;br /&gt;
  animation: 45s credits linear infinite;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ⏸️ PAUSE ANIMATION ON HOVER */&lt;br /&gt;
.wrapper:hover {&lt;br /&gt;
  animation-play-state: paused;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-item {&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  text-align: center;&lt;br /&gt;
  width: 160px;&lt;br /&gt;
  flex-shrink: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-item img {&lt;br /&gt;
  width: 120px;  &lt;br /&gt;
  height: 180px; &lt;br /&gt;
  object-fit: contain;&lt;br /&gt;
  transition: transform 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 🔍 ENLARGE IMAGE ON HOVER */&lt;br /&gt;
.gallery-item img:hover {&lt;br /&gt;
  transform: scale(1.15);&lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-caption {&lt;br /&gt;
  font-size: 0.85em;&lt;br /&gt;
  color: #333;&lt;br /&gt;
  margin-top: 8px;&lt;br /&gt;
  line-height: 1.3;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes credits {&lt;br /&gt;
  0% { transform: translateX(0); }&lt;br /&gt;
  100% { transform: translateX(-1620px); } /* Perfect loop reset point based on total item widths */&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;gallery-outer&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gallery-bg&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gallery-viewport&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;wrapper&amp;quot;&amp;gt;&lt;br /&gt;
        &lt;br /&gt;
        &amp;lt;!-- ITEM 1: Singer Heavy Duty --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Singer_HD_4432&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/e/e1/Singer_HD-1_4452.jpg/600px-Singer_HD-1_4452.jpg?20250616215327&amp;quot; alt=&amp;quot;Singer HD 4432&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Singer HD 4432&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Basic sewing machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 2: Singer Simple --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Singer_Simple_3232&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/0/08/Singer_Simple.jpg/800px-Singer_Simple.jpg?20191223184102&amp;quot; alt=&amp;quot;Singer Simple 3232&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Singer Simple 3232&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Starter sewing machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 3: Janome (Follows the same FilePath pattern) --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Janome_HD-3000BE&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/0/01/Janome_HD-3000BE.jpeg/400px-Janome_HD-3000BE.jpeg&amp;quot; alt=&amp;quot;Janome HD-3000BE&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Janome HD-3000BE&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Intermediate Home Sewing Machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 4: Bernina --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Bernina_model_1000&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/f/f9/Bernina1008.png/400px-Bernina1008.png&amp;quot; alt=&amp;quot;Bernina model 1008&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Bernina model 1008&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Intermediate Home Sewing Machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 5: Brother Serger --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Brother_1034DX&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/3/3e/Brother-1034DX-Serger.jpeg?20261015223103&amp;quot; alt=&amp;quot;Brother 1034DX&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Brother 1034DX&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Serger&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 6: Brother Embroidery --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Brother_PE770&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/8/8d/BrotherPE770.jpg&amp;quot; alt=&amp;quot;Brother PE770&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Brother PE770&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Embroidery machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gfc</name></author>
	</entry>
	<entry>
		<id>https://sandbox.umd.edu/wiki/index.php?title=Widget:SlidingGallerySewing&amp;diff=3410</id>
		<title>Widget:SlidingGallerySewing</title>
		<link rel="alternate" type="text/html" href="https://sandbox.umd.edu/wiki/index.php?title=Widget:SlidingGallerySewing&amp;diff=3410"/>
		<updated>2026-10-15T22:50:12Z</updated>

		<summary type="html">&lt;p&gt;Gfc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;style&amp;gt;&lt;br /&gt;
/* Layout containers matching your original specifications */&lt;br /&gt;
.gallery-outer { position: relative; height: 100%; margin: 20px 0; }&lt;br /&gt;
.gallery-bg { position: relative; margin: 0 -1em; padding: 0; background-color: transparent; border: 1px none #ddd; height: 100%; }&lt;br /&gt;
.gallery-viewport { position: relative; margin: 0 auto; width: 742px; height: 300px; overflow: hidden; }&lt;br /&gt;
&lt;br /&gt;
/* Sliding engine (Pure CSS - Starts automatically) */&lt;br /&gt;
.wrapper {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  top: 0;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  display: flex;&lt;br /&gt;
  gap: 20px;&lt;br /&gt;
  width: 300px; /* Generous width for the moving track */&lt;br /&gt;
  animation: 45s credits linear infinite;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ⏸️ PAUSE ANIMATION ON HOVER */&lt;br /&gt;
.wrapper:hover {&lt;br /&gt;
  animation-play-state: paused;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-item {&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  text-align: center;&lt;br /&gt;
  width: 160px;&lt;br /&gt;
  flex-shrink: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-item img {&lt;br /&gt;
  width: 120px;  &lt;br /&gt;
  height: 180px; &lt;br /&gt;
  object-fit: contain;&lt;br /&gt;
  transition: transform 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 🔍 ENLARGE IMAGE ON HOVER */&lt;br /&gt;
.gallery-item img:hover {&lt;br /&gt;
  transform: scale(1.15);&lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-caption {&lt;br /&gt;
  font-size: 0.85em;&lt;br /&gt;
  color: #333;&lt;br /&gt;
  margin-top: 8px;&lt;br /&gt;
  line-height: 1.3;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes credits {&lt;br /&gt;
  0% { transform: translateX(0); }&lt;br /&gt;
  100% { transform: translateX(-1620px); } /* Perfect loop reset point based on total item widths */&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;gallery-outer&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gallery-bg&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gallery-viewport&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;wrapper&amp;quot;&amp;gt;&lt;br /&gt;
        &lt;br /&gt;
        &amp;lt;!-- ITEM 1: Singer Heavy Duty --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Singer_HD_4432&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/e/e1/Singer_HD-1_4452.jpg/600px-Singer_HD-1_4452.jpg?20250616215327&amp;quot; alt=&amp;quot;Singer HD 4432&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Singer HD 4432&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Basic sewing machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 2: Singer Simple --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Singer_Simple_3232&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/0/08/Singer_Simple.jpg/800px-Singer_Simple.jpg?20191223184102&amp;quot; alt=&amp;quot;Singer Simple 3232&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Singer Simple 3232&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Starter sewing machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 3: Janome (Follows the same FilePath pattern) --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Janome_HD-3000BE&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/0/01/Janome_HD-3000BE.jpeg/400px-Janome_HD-3000BE.jpeg&amp;quot; alt=&amp;quot;Janome HD-3000BE&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Janome HD-3000BE&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Intermediate Home Sewing Machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 4: Bernina --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Bernina_model_1000&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/f/f9/Bernina1008.png/400px-Bernina1008.png&amp;quot; alt=&amp;quot;Bernina model 1008&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Bernina model 1008&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Intermediate Home Sewing Machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 5: Brother Serger --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Brother_1034DX&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/3/3e/Brother-1034DX-Serger.jpeg?20261015223103&amp;quot; alt=&amp;quot;Brother 1034DX&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Brother 1034DX&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Serger&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 6: Brother Embroidery --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Brother_PE770&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/8/8d/BrotherPE770.jpg&amp;quot; alt=&amp;quot;Brother PE770&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Brother PE770&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Embroidery machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
/* Clean override to let JavaScript control the sliding loop metrics */&lt;br /&gt;
.wrapper {&lt;br /&gt;
  width: max-content !important;&lt;br /&gt;
  animation: none !important;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
(function() {&lt;br /&gt;
  // Find the scrolling layout track row&lt;br /&gt;
  var track = document.querySelector(&#039;.wrapper&#039;);&lt;br /&gt;
  if (!track) return;&lt;br /&gt;
&lt;br /&gt;
  // 1. Grab all your unique items cleanly&lt;br /&gt;
  var originalItems = Array.prototype.slice.call(track.getElementsByClassName(&#039;gallery-item&#039;));&lt;br /&gt;
  var totalItemsCount = originalItems.length;&lt;br /&gt;
  if (totalItemsCount === 0) return;&lt;br /&gt;
&lt;br /&gt;
  /* 2. FIXED STEP ENGINE: &lt;br /&gt;
     Uses your exact CSS parameters: Card width (160px) + Gap space (20px) = 180px per step! */&lt;br /&gt;
  var fullStepWidth = 180; &lt;br /&gt;
  var totalOriginalWidth = totalItemsCount * fullStepWidth;&lt;br /&gt;
&lt;br /&gt;
  // 3. Smart Looper: Clone just enough items to fill the viewable viewport frame area (742px)&lt;br /&gt;
  var clonesNeeded = Math.ceil(742 / fullStepWidth) + 1;&lt;br /&gt;
&lt;br /&gt;
  for (var i = 0; i &amp;lt; clonesNeeded; i++) {&lt;br /&gt;
    var cloneIndex = i % totalItemsCount;&lt;br /&gt;
    var clonedNode = originalItems[cloneIndex].cloneNode(true);&lt;br /&gt;
    track.appendChild(clonedNode);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // 4. Inject the loop transition keyframes directly into the header layout&lt;br /&gt;
  var styleSheet = document.createElement(&amp;quot;style&amp;quot;);&lt;br /&gt;
  styleSheet.type = &amp;quot;text/css&amp;quot;;&lt;br /&gt;
  styleSheet.innerText = &lt;br /&gt;
    &amp;quot;@keyframes dynamicCredits {&amp;quot; +&lt;br /&gt;
    &amp;quot;  0% { transform: translateX(0); }&amp;quot; +&lt;br /&gt;
    &amp;quot;  100% { transform: translateX(-&amp;quot; + totalOriginalWidth + &amp;quot;px); }&amp;quot; +&lt;br /&gt;
    &amp;quot;}\n&amp;quot; +&lt;br /&gt;
    &amp;quot;.wrapper { animation: 45s dynamicCredits linear infinite !important; }&amp;quot;;&lt;br /&gt;
  document.head.appendChild(styleSheet);&lt;br /&gt;
})();&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gfc</name></author>
	</entry>
	<entry>
		<id>https://sandbox.umd.edu/wiki/index.php?title=Widget:SlidingGallerySewing&amp;diff=3409</id>
		<title>Widget:SlidingGallerySewing</title>
		<link rel="alternate" type="text/html" href="https://sandbox.umd.edu/wiki/index.php?title=Widget:SlidingGallerySewing&amp;diff=3409"/>
		<updated>2026-10-15T22:47:25Z</updated>

		<summary type="html">&lt;p&gt;Gfc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;style&amp;gt;&lt;br /&gt;
/* Layout containers matching your original specifications */&lt;br /&gt;
.gallery-outer { position: relative; height: 100%; margin: 20px 0; }&lt;br /&gt;
.gallery-bg { position: relative; margin: 0 -1em; padding: 0; background-color: transparent; border: 1px none #ddd; height: 100%; }&lt;br /&gt;
.gallery-viewport { position: relative; margin: 0 auto; width: 742px; height: 300px; overflow: hidden; }&lt;br /&gt;
&lt;br /&gt;
/* Sliding engine (Pure CSS - Starts automatically) */&lt;br /&gt;
.wrapper {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  top: 0;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  display: flex;&lt;br /&gt;
  gap: 20px;&lt;br /&gt;
  width: 300px; /* Generous width for the moving track */&lt;br /&gt;
  animation: 45s credits linear infinite;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ⏸️ PAUSE ANIMATION ON HOVER */&lt;br /&gt;
.wrapper:hover {&lt;br /&gt;
  animation-play-state: paused;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-item {&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  text-align: center;&lt;br /&gt;
  width: 160px;&lt;br /&gt;
  flex-shrink: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-item img {&lt;br /&gt;
  width: 120px;  &lt;br /&gt;
  height: 180px; &lt;br /&gt;
  object-fit: contain;&lt;br /&gt;
  transition: transform 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 🔍 ENLARGE IMAGE ON HOVER */&lt;br /&gt;
.gallery-item img:hover {&lt;br /&gt;
  transform: scale(1.15);&lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-caption {&lt;br /&gt;
  font-size: 0.85em;&lt;br /&gt;
  color: #333;&lt;br /&gt;
  margin-top: 8px;&lt;br /&gt;
  line-height: 1.3;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes credits {&lt;br /&gt;
  0% { transform: translateX(0); }&lt;br /&gt;
  100% { transform: translateX(-1620px); } /* Perfect loop reset point based on total item widths */&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;gallery-outer&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gallery-bg&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gallery-viewport&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;wrapper&amp;quot;&amp;gt;&lt;br /&gt;
        &lt;br /&gt;
        &amp;lt;!-- ITEM 1: Singer Heavy Duty --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Singer_HD_4432&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/e/e1/Singer_HD-1_4452.jpg/600px-Singer_HD-1_4452.jpg?20250616215327&amp;quot; alt=&amp;quot;Singer HD 4432&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Singer HD 4432&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Basic sewing machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 2: Singer Simple --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Singer_Simple_3232&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/0/08/Singer_Simple.jpg/800px-Singer_Simple.jpg?20191223184102&amp;quot; alt=&amp;quot;Singer Simple 3232&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Singer Simple 3232&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Starter sewing machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 3: Janome (Follows the same FilePath pattern) --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Janome_HD-3000BE&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/0/01/Janome_HD-3000BE.jpeg/400px-Janome_HD-3000BE.jpeg&amp;quot; alt=&amp;quot;Janome HD-3000BE&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Janome HD-3000BE&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Intermediate Home Sewing Machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 4: Bernina --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Bernina_model_1000&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/f/f9/Bernina1008.png/400px-Bernina1008.png&amp;quot; alt=&amp;quot;Bernina model 1008&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Bernina model 1008&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Intermediate Home Sewing Machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 5: Brother Serger --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Brother_1034DX&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/3/3e/Brother-1034DX-Serger.jpeg?20261015223103&amp;quot; alt=&amp;quot;Brother 1034DX&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Brother 1034DX&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Serger&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 6: Brother Embroidery --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Brother_PE770&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/8/8d/BrotherPE770.jpg&amp;quot; alt=&amp;quot;Brother PE770&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Brother PE770&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Embroidery machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
/* Override the animation block to let JavaScript control the width and loop */&lt;br /&gt;
.wrapper {&lt;br /&gt;
  width: max-content !important;&lt;br /&gt;
  animation: none !important;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
/* Override the animation block to let JavaScript control the width and loop */&lt;br /&gt;
.wrapper {&lt;br /&gt;
  width: max-content !important;&lt;br /&gt;
  animation: none !important;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
/* Override the baseline animation to give full width control over to the script engine */&lt;br /&gt;
.wrapper {&lt;br /&gt;
  width: max-content !important;&lt;br /&gt;
  animation: none !important;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
(function() {&lt;br /&gt;
  // Find the scrolling row track container&lt;br /&gt;
  var track = document.querySelector(&#039;.wrapper&#039;);&lt;br /&gt;
  if (!track) return;&lt;br /&gt;
&lt;br /&gt;
  // 1. Grab all your unique items cleanly&lt;br /&gt;
  var originalItems = Array.prototype.slice.call(track.getElementsByClassName(&#039;gallery-item&#039;));&lt;br /&gt;
  if (originalItems.length === 0) return;&lt;br /&gt;
&lt;br /&gt;
  // 2. FIXED: Target item 0 in the array list to read individual card box structural parameters&lt;br /&gt;
  var firstItem = originalItems[0];&lt;br /&gt;
  var itemWidth = firstItem ? firstItem.getBoundingClientRect().width : 160;&lt;br /&gt;
  if (!itemWidth || itemWidth === 0) itemWidth = 160; // Safe default backup calculation check&lt;br /&gt;
&lt;br /&gt;
  var gapValue = 20;&lt;br /&gt;
  var fullStepWidth = itemWidth + gapValue;&lt;br /&gt;
  var totalOriginalWidth = originalItems.length * fullStepWidth;&lt;br /&gt;
&lt;br /&gt;
  // 3. Smart Looper: Clone just enough items to fill the viewable viewport container limit safely (742px)&lt;br /&gt;
  var clonesNeeded = Math.ceil(742 / fullStepWidth) + 1;&lt;br /&gt;
&lt;br /&gt;
  for (var i = 0; i &amp;lt; clonesNeeded; i++) {&lt;br /&gt;
    var cloneIndex = i % originalItems.length;&lt;br /&gt;
    var clonedNode = originalItems[cloneIndex].cloneNode(true);&lt;br /&gt;
    track.appendChild(clonedNode);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // 4. Dynamically append loop keyframes cleanly right into the header of your document layout&lt;br /&gt;
  var styleSheet = document.createElement(&amp;quot;style&amp;quot;);&lt;br /&gt;
  styleSheet.type = &amp;quot;text/css&amp;quot;;&lt;br /&gt;
  styleSheet.innerText = &lt;br /&gt;
    &amp;quot;@keyframes dynamicCredits {&amp;quot; +&lt;br /&gt;
    &amp;quot;  0% { transform: translateX(0); }&amp;quot; +&lt;br /&gt;
    &amp;quot;  100% { transform: translateX(-&amp;quot; + totalOriginalWidth + &amp;quot;px); }&amp;quot; +&lt;br /&gt;
    &amp;quot;}\n&amp;quot; +&lt;br /&gt;
    &amp;quot;.wrapper { animation: 45s dynamicCredits linear infinite !important; }&amp;quot;;&lt;br /&gt;
  document.head.appendChild(styleSheet);&lt;br /&gt;
})();&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gfc</name></author>
	</entry>
	<entry>
		<id>https://sandbox.umd.edu/wiki/index.php?title=Widget:SlidingGallerySewing&amp;diff=3408</id>
		<title>Widget:SlidingGallerySewing</title>
		<link rel="alternate" type="text/html" href="https://sandbox.umd.edu/wiki/index.php?title=Widget:SlidingGallerySewing&amp;diff=3408"/>
		<updated>2026-10-15T22:46:02Z</updated>

		<summary type="html">&lt;p&gt;Gfc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;style&amp;gt;&lt;br /&gt;
/* Layout containers matching your original specifications */&lt;br /&gt;
.gallery-outer { position: relative; height: 100%; margin: 20px 0; }&lt;br /&gt;
.gallery-bg { position: relative; margin: 0 -1em; padding: 0; background-color: transparent; border: 1px none #ddd; height: 100%; }&lt;br /&gt;
.gallery-viewport { position: relative; margin: 0 auto; width: 742px; height: 300px; overflow: hidden; }&lt;br /&gt;
&lt;br /&gt;
/* Sliding engine (Pure CSS - Starts automatically) */&lt;br /&gt;
.wrapper {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  top: 0;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  display: flex;&lt;br /&gt;
  gap: 20px;&lt;br /&gt;
  width: 300px; /* Generous width for the moving track */&lt;br /&gt;
  animation: 45s credits linear infinite;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ⏸️ PAUSE ANIMATION ON HOVER */&lt;br /&gt;
.wrapper:hover {&lt;br /&gt;
  animation-play-state: paused;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-item {&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  text-align: center;&lt;br /&gt;
  width: 160px;&lt;br /&gt;
  flex-shrink: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-item img {&lt;br /&gt;
  width: 120px;  &lt;br /&gt;
  height: 180px; &lt;br /&gt;
  object-fit: contain;&lt;br /&gt;
  transition: transform 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 🔍 ENLARGE IMAGE ON HOVER */&lt;br /&gt;
.gallery-item img:hover {&lt;br /&gt;
  transform: scale(1.15);&lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-caption {&lt;br /&gt;
  font-size: 0.85em;&lt;br /&gt;
  color: #333;&lt;br /&gt;
  margin-top: 8px;&lt;br /&gt;
  line-height: 1.3;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes credits {&lt;br /&gt;
  0% { transform: translateX(0); }&lt;br /&gt;
  100% { transform: translateX(-1620px); } /* Perfect loop reset point based on total item widths */&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;gallery-outer&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gallery-bg&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gallery-viewport&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;wrapper&amp;quot;&amp;gt;&lt;br /&gt;
        &lt;br /&gt;
        &amp;lt;!-- ITEM 1: Singer Heavy Duty --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Singer_HD_4432&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/e/e1/Singer_HD-1_4452.jpg/600px-Singer_HD-1_4452.jpg?20250616215327&amp;quot; alt=&amp;quot;Singer HD 4432&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Singer HD 4432&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Basic sewing machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 2: Singer Simple --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Singer_Simple_3232&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/0/08/Singer_Simple.jpg/800px-Singer_Simple.jpg?20191223184102&amp;quot; alt=&amp;quot;Singer Simple 3232&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Singer Simple 3232&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Starter sewing machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 3: Janome (Follows the same FilePath pattern) --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Janome_HD-3000BE&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/0/01/Janome_HD-3000BE.jpeg/400px-Janome_HD-3000BE.jpeg&amp;quot; alt=&amp;quot;Janome HD-3000BE&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Janome HD-3000BE&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Intermediate Home Sewing Machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 4: Bernina --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Bernina_model_1000&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/f/f9/Bernina1008.png/400px-Bernina1008.png&amp;quot; alt=&amp;quot;Bernina model 1008&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Bernina model 1008&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Intermediate Home Sewing Machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 5: Brother Serger --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Brother_1034DX&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/3/3e/Brother-1034DX-Serger.jpeg?20261015223103&amp;quot; alt=&amp;quot;Brother 1034DX&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Brother 1034DX&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Serger&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 6: Brother Embroidery --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Brother_PE770&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/8/8d/BrotherPE770.jpg&amp;quot; alt=&amp;quot;Brother PE770&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Brother PE770&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Embroidery machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
/* Override the animation block to let JavaScript control the width and loop */&lt;br /&gt;
.wrapper {&lt;br /&gt;
  width: max-content !important;&lt;br /&gt;
  animation: none !important;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
/* Override the animation block to let JavaScript control the width and loop */&lt;br /&gt;
.wrapper {&lt;br /&gt;
  width: max-content !important;&lt;br /&gt;
  animation: none !important;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
(function() {&lt;br /&gt;
  // Find the scrolling row track container&lt;br /&gt;
  var track = document.querySelector(&#039;.wrapper&#039;);&lt;br /&gt;
  if (!track) return;&lt;br /&gt;
&lt;br /&gt;
  // 1. Grab all your unique items cleanly&lt;br /&gt;
  var originalItems = Array.prototype.slice.call(track.getElementsByClassName(&#039;gallery-item&#039;));&lt;br /&gt;
  if (originalItems.length === 0) return;&lt;br /&gt;
&lt;br /&gt;
  // 2. FIXED: Read the width of the FIRST item box instead of the whole collection list&lt;br /&gt;
  var itemWidth = originalItems[0].offsetWidth || 160; &lt;br /&gt;
  var gapValue = 20;&lt;br /&gt;
  var fullStepWidth = itemWidth + gapValue;&lt;br /&gt;
  var totalOriginalWidth = originalItems.length * fullStepWidth;&lt;br /&gt;
&lt;br /&gt;
  // 3. Smart Looper: Clone just enough items to fill the viewable viewport width (742px)&lt;br /&gt;
  var clonesNeeded = Math.ceil(742 / fullStepWidth) + 1;&lt;br /&gt;
&lt;br /&gt;
  for (var i = 0; i &amp;lt; clonesNeeded; i++) {&lt;br /&gt;
    var cloneIndex = i % originalItems.length;&lt;br /&gt;
    var clonedNode = originalItems[cloneIndex].cloneNode(true);&lt;br /&gt;
    track.appendChild(clonedNode);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // 4. Dynamically generate and inject the looping keyframes cleanly into the browser head&lt;br /&gt;
  var styleSheet = document.createElement(&amp;quot;style&amp;quot;);&lt;br /&gt;
  styleSheet.type = &amp;quot;text/css&amp;quot;;&lt;br /&gt;
  styleSheet.innerText = &lt;br /&gt;
    &amp;quot;@keyframes dynamicCredits {&amp;quot; +&lt;br /&gt;
    &amp;quot;  0% { transform: translateX(0); }&amp;quot; +&lt;br /&gt;
    &amp;quot;  100% { transform: translateX(-&amp;quot; + totalOriginalWidth + &amp;quot;px); }&amp;quot; +&lt;br /&gt;
    &amp;quot;}\n&amp;quot; +&lt;br /&gt;
    &amp;quot;.wrapper { animation: 45s dynamicCredits linear infinite !important; }&amp;quot;;&lt;br /&gt;
  document.head.appendChild(styleSheet);&lt;br /&gt;
})();&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gfc</name></author>
	</entry>
	<entry>
		<id>https://sandbox.umd.edu/wiki/index.php?title=Widget:SlidingGallerySewing&amp;diff=3407</id>
		<title>Widget:SlidingGallerySewing</title>
		<link rel="alternate" type="text/html" href="https://sandbox.umd.edu/wiki/index.php?title=Widget:SlidingGallerySewing&amp;diff=3407"/>
		<updated>2026-10-15T22:44:39Z</updated>

		<summary type="html">&lt;p&gt;Gfc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;style&amp;gt;&lt;br /&gt;
/* Layout containers matching your original specifications */&lt;br /&gt;
.gallery-outer { position: relative; height: 100%; margin: 20px 0; }&lt;br /&gt;
.gallery-bg { position: relative; margin: 0 -1em; padding: 0; background-color: transparent; border: 1px none #ddd; height: 100%; }&lt;br /&gt;
.gallery-viewport { position: relative; margin: 0 auto; width: 742px; height: 300px; overflow: hidden; }&lt;br /&gt;
&lt;br /&gt;
/* Sliding engine (Pure CSS - Starts automatically) */&lt;br /&gt;
.wrapper {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  top: 0;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  display: flex;&lt;br /&gt;
  gap: 20px;&lt;br /&gt;
  width: 300px; /* Generous width for the moving track */&lt;br /&gt;
  animation: 45s credits linear infinite;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ⏸️ PAUSE ANIMATION ON HOVER */&lt;br /&gt;
.wrapper:hover {&lt;br /&gt;
  animation-play-state: paused;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-item {&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  text-align: center;&lt;br /&gt;
  width: 160px;&lt;br /&gt;
  flex-shrink: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-item img {&lt;br /&gt;
  width: 120px;  &lt;br /&gt;
  height: 180px; &lt;br /&gt;
  object-fit: contain;&lt;br /&gt;
  transition: transform 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 🔍 ENLARGE IMAGE ON HOVER */&lt;br /&gt;
.gallery-item img:hover {&lt;br /&gt;
  transform: scale(1.15);&lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-caption {&lt;br /&gt;
  font-size: 0.85em;&lt;br /&gt;
  color: #333;&lt;br /&gt;
  margin-top: 8px;&lt;br /&gt;
  line-height: 1.3;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes credits {&lt;br /&gt;
  0% { transform: translateX(0); }&lt;br /&gt;
  100% { transform: translateX(-1620px); } /* Perfect loop reset point based on total item widths */&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;gallery-outer&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gallery-bg&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gallery-viewport&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;wrapper&amp;quot;&amp;gt;&lt;br /&gt;
        &lt;br /&gt;
        &amp;lt;!-- ITEM 1: Singer Heavy Duty --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Singer_HD_4432&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/e/e1/Singer_HD-1_4452.jpg/600px-Singer_HD-1_4452.jpg?20250616215327&amp;quot; alt=&amp;quot;Singer HD 4432&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Singer HD 4432&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Basic sewing machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 2: Singer Simple --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Singer_Simple_3232&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/0/08/Singer_Simple.jpg/800px-Singer_Simple.jpg?20191223184102&amp;quot; alt=&amp;quot;Singer Simple 3232&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Singer Simple 3232&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Starter sewing machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 3: Janome (Follows the same FilePath pattern) --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Janome_HD-3000BE&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/0/01/Janome_HD-3000BE.jpeg/400px-Janome_HD-3000BE.jpeg&amp;quot; alt=&amp;quot;Janome HD-3000BE&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Janome HD-3000BE&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Intermediate Home Sewing Machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 4: Bernina --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Bernina_model_1000&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/f/f9/Bernina1008.png/400px-Bernina1008.png&amp;quot; alt=&amp;quot;Bernina model 1008&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Bernina model 1008&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Intermediate Home Sewing Machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 5: Brother Serger --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Brother_1034DX&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/3/3e/Brother-1034DX-Serger.jpeg?20261015223103&amp;quot; alt=&amp;quot;Brother 1034DX&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Brother 1034DX&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Serger&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 6: Brother Embroidery --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Brother_PE770&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/8/8d/BrotherPE770.jpg&amp;quot; alt=&amp;quot;Brother PE770&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Brother PE770&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Embroidery machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
/* Override the animation block to let JavaScript control the width and loop */&lt;br /&gt;
.wrapper {&lt;br /&gt;
  width: max-content !important;&lt;br /&gt;
  animation: none !important;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
(function() {&lt;br /&gt;
  // Find the scrolling row&lt;br /&gt;
  var track = document.querySelector(&#039;.wrapper&#039;);&lt;br /&gt;
  if (!track) return;&lt;br /&gt;
&lt;br /&gt;
  // 1. Grab all your unique items&lt;br /&gt;
  var originalItems = Array.prototype.slice.call(track.getElementsByClassName(&#039;gallery-item&#039;));&lt;br /&gt;
  if (originalItems.length === 0) return;&lt;br /&gt;
&lt;br /&gt;
  // 2. Automatically compute widths (Item width: 160px + Gap: 20px = 180px)&lt;br /&gt;
  var itemWidth = originalItems[0].offsetWidth || 160;&lt;br /&gt;
  var gapValue = 20;&lt;br /&gt;
  var fullStepWidth = itemWidth + gapValue;&lt;br /&gt;
  var totalOriginalWidth = originalItems.length * fullStepWidth;&lt;br /&gt;
&lt;br /&gt;
  // 3. Smart Looper: Clone just enough items to fill the viewable viewport width (742px)&lt;br /&gt;
  var clonesNeeded = Math.ceil(742 / fullStepWidth) + 1;&lt;br /&gt;
&lt;br /&gt;
  for (var i = 0; i &amp;lt; clonesNeeded; i++) {&lt;br /&gt;
    var cloneIndex = i % originalItems.length;&lt;br /&gt;
    var clonedNode = originalItems[cloneIndex].cloneNode(true);&lt;br /&gt;
    track.appendChild(clonedNode);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // 4. Dynamically generate and inject the looping keyframes cleanly into the browser head&lt;br /&gt;
  var styleSheet = document.createElement(&amp;quot;style&amp;quot;);&lt;br /&gt;
  styleSheet.type = &amp;quot;text/css&amp;quot;;&lt;br /&gt;
  styleSheet.innerText = &lt;br /&gt;
    &amp;quot;@keyframes dynamicCredits {&amp;quot; +&lt;br /&gt;
    &amp;quot;  0% { transform: translateX(0); }&amp;quot; +&lt;br /&gt;
    &amp;quot;  100% { transform: translateX(-&amp;quot; + totalOriginalWidth + &amp;quot;px); }&amp;quot; +&lt;br /&gt;
    &amp;quot;}\n&amp;quot; +&lt;br /&gt;
    &amp;quot;.wrapper { animation: 45s dynamicCredits linear infinite !important; }&amp;quot;;&lt;br /&gt;
  document.head.appendChild(styleSheet);&lt;br /&gt;
})();&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gfc</name></author>
	</entry>
	<entry>
		<id>https://sandbox.umd.edu/wiki/index.php?title=Widget:SlidingGallerySewing&amp;diff=3406</id>
		<title>Widget:SlidingGallerySewing</title>
		<link rel="alternate" type="text/html" href="https://sandbox.umd.edu/wiki/index.php?title=Widget:SlidingGallerySewing&amp;diff=3406"/>
		<updated>2026-10-15T22:41:52Z</updated>

		<summary type="html">&lt;p&gt;Gfc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;style&amp;gt;&lt;br /&gt;
/* Layout containers matching your original specifications */&lt;br /&gt;
.gallery-outer { position: relative; height: 100%; margin: 20px 0; }&lt;br /&gt;
.gallery-bg { position: relative; margin: 0 -1em; padding: 0; background-color: transparent; border: 1px none #ddd; height: 100%; }&lt;br /&gt;
.gallery-viewport { position: relative; margin: 0 auto; width: 742px; height: 300px; overflow: hidden; }&lt;br /&gt;
&lt;br /&gt;
/* Sliding engine (Pure CSS - Starts automatically) */&lt;br /&gt;
.wrapper {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  top: 0;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  display: flex;&lt;br /&gt;
  gap: 20px;&lt;br /&gt;
  width: 300px; /* Generous width for the moving track */&lt;br /&gt;
  animation: 45s credits linear infinite;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ⏸️ PAUSE ANIMATION ON HOVER */&lt;br /&gt;
.wrapper:hover {&lt;br /&gt;
  animation-play-state: paused;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-item {&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  text-align: center;&lt;br /&gt;
  width: 160px;&lt;br /&gt;
  flex-shrink: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-item img {&lt;br /&gt;
  width: 120px;  &lt;br /&gt;
  height: 180px; &lt;br /&gt;
  object-fit: contain;&lt;br /&gt;
  transition: transform 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 🔍 ENLARGE IMAGE ON HOVER */&lt;br /&gt;
.gallery-item img:hover {&lt;br /&gt;
  transform: scale(1.15);&lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-caption {&lt;br /&gt;
  font-size: 0.85em;&lt;br /&gt;
  color: #333;&lt;br /&gt;
  margin-top: 8px;&lt;br /&gt;
  line-height: 1.3;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes credits {&lt;br /&gt;
  0% { transform: translateX(0); }&lt;br /&gt;
  100% { transform: translateX(-1620px); } /* Perfect loop reset point based on total item widths */&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;gallery-outer&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gallery-bg&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gallery-viewport&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;wrapper&amp;quot;&amp;gt;&lt;br /&gt;
        &lt;br /&gt;
        &amp;lt;!-- ITEM 1: Singer Heavy Duty --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Singer_HD_4432&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/e/e1/Singer_HD-1_4452.jpg/600px-Singer_HD-1_4452.jpg?20250616215327&amp;quot; alt=&amp;quot;Singer HD 4432&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Singer HD 4432&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Basic sewing machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 2: Singer Simple --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Singer_Simple_3232&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/0/08/Singer_Simple.jpg/800px-Singer_Simple.jpg?20191223184102&amp;quot; alt=&amp;quot;Singer Simple 3232&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Singer Simple 3232&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Starter sewing machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 3: Janome (Follows the same FilePath pattern) --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Janome_HD-3000BE&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/0/01/Janome_HD-3000BE.jpeg/400px-Janome_HD-3000BE.jpeg&amp;quot; alt=&amp;quot;Janome HD-3000BE&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Janome HD-3000BE&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Intermediate Home Sewing Machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 4: Bernina --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Bernina_model_1000&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/f/f9/Bernina1008.png/400px-Bernina1008.png&amp;quot; alt=&amp;quot;Bernina model 1008&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Bernina model 1008&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Intermediate Home Sewing Machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 5: Brother Serger --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Brother_1034DX&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/3/3e/Brother-1034DX-Serger.jpeg?20261015223103&amp;quot; alt=&amp;quot;Brother 1034DX&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Brother 1034DX&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Serger&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 6: Brother Embroidery --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Brother_PE770&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/8/8d/BrotherPE770.jpg&amp;quot; alt=&amp;quot;Brother PE770&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Brother PE770&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Embroidery machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gfc</name></author>
	</entry>
	<entry>
		<id>https://sandbox.umd.edu/wiki/index.php?title=Widget:SlidingGallerySewing&amp;diff=3405</id>
		<title>Widget:SlidingGallerySewing</title>
		<link rel="alternate" type="text/html" href="https://sandbox.umd.edu/wiki/index.php?title=Widget:SlidingGallerySewing&amp;diff=3405"/>
		<updated>2026-10-15T22:38:51Z</updated>

		<summary type="html">&lt;p&gt;Gfc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;style&amp;gt;&lt;br /&gt;
/* Layout containers matching your original specifications */&lt;br /&gt;
.gallery-outer { position: relative; height: 100%; margin: 20px 0; }&lt;br /&gt;
.gallery-bg { position: relative; margin: 0 -1em; padding: 0; background-color: transparent; border: 1px none #ddd; height: 100%; }&lt;br /&gt;
.gallery-viewport { position: relative; margin: 0 auto; width: 742px; height: 300px; overflow: hidden; }&lt;br /&gt;
&lt;br /&gt;
/* Sliding engine (Pure CSS - Starts automatically) */&lt;br /&gt;
.wrapper {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  top: 0;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  display: flex;&lt;br /&gt;
  gap: 20px;&lt;br /&gt;
  width: 3000px; /* Generous width for the moving track */&lt;br /&gt;
  animation: 45s credits linear infinite;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ⏸️ PAUSE ANIMATION ON HOVER */&lt;br /&gt;
.wrapper:hover {&lt;br /&gt;
  animation-play-state: paused;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-item {&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  text-align: center;&lt;br /&gt;
  width: 160px;&lt;br /&gt;
  flex-shrink: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-item img {&lt;br /&gt;
  width: 120px;  &lt;br /&gt;
  height: 180px; &lt;br /&gt;
  object-fit: contain;&lt;br /&gt;
  transition: transform 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 🔍 ENLARGE IMAGE ON HOVER */&lt;br /&gt;
.gallery-item img:hover {&lt;br /&gt;
  transform: scale(1.15);&lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-caption {&lt;br /&gt;
  font-size: 0.85em;&lt;br /&gt;
  color: #333;&lt;br /&gt;
  margin-top: 8px;&lt;br /&gt;
  line-height: 1.3;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes credits {&lt;br /&gt;
  0% { transform: translateX(0); }&lt;br /&gt;
  100% { transform: translateX(-1620px); } /* Perfect loop reset point based on total item widths */&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;gallery-outer&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gallery-bg&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gallery-viewport&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;wrapper&amp;quot;&amp;gt;&lt;br /&gt;
        &lt;br /&gt;
        &amp;lt;!-- ITEM 1: Singer Heavy Duty --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Singer_HD_4432&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/e/e1/Singer_HD-1_4452.jpg/600px-Singer_HD-1_4452.jpg?20250616215327&amp;quot; alt=&amp;quot;Singer HD 4432&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Singer HD 4432&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Basic sewing machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 2: Singer Simple --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Singer_Simple_3232&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/0/08/Singer_Simple.jpg/800px-Singer_Simple.jpg?20191223184102&amp;quot; alt=&amp;quot;Singer Simple 3232&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Singer Simple 3232&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Starter sewing machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 3: Janome (Follows the same FilePath pattern) --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Janome_HD-3000BE&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/0/01/Janome_HD-3000BE.jpeg/400px-Janome_HD-3000BE.jpeg&amp;quot; alt=&amp;quot;Janome HD-3000BE&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Janome HD-3000BE&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Intermediate Home Sewing Machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 4: Bernina --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Bernina_model_1000&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/f/f9/Bernina1008.png/400px-Bernina1008.png&amp;quot; alt=&amp;quot;Bernina model 1008&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Bernina model 1008&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Intermediate Home Sewing Machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 5: Brother Serger --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Brother_1034DX&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/3/3e/Brother-1034DX-Serger.jpeg?20261015223103&amp;quot; alt=&amp;quot;Brother 1034DX&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Brother 1034DX&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Serger&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 6: Brother Embroidery --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Brother_PE770&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/8/8d/BrotherPE770.jpg&amp;quot; alt=&amp;quot;Brother PE770&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Brother PE770&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Embroidery machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gfc</name></author>
	</entry>
	<entry>
		<id>https://sandbox.umd.edu/wiki/index.php?title=Widget:SlidingGallerySewing&amp;diff=3404</id>
		<title>Widget:SlidingGallerySewing</title>
		<link rel="alternate" type="text/html" href="https://sandbox.umd.edu/wiki/index.php?title=Widget:SlidingGallerySewing&amp;diff=3404"/>
		<updated>2026-10-15T22:37:25Z</updated>

		<summary type="html">&lt;p&gt;Gfc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;style&amp;gt;&lt;br /&gt;
/* Layout containers matching your original specifications */&lt;br /&gt;
.gallery-outer { position: relative; height: 100%; margin: 20px 0; }&lt;br /&gt;
.gallery-bg { position: relative; margin: 0 -1em; padding: 0; background-color: transparent; border: 1px none #ddd; height: 100%; }&lt;br /&gt;
.gallery-viewport { position: relative; margin: 0 auto; width: 742px; height: 300px; overflow: hidden; }&lt;br /&gt;
&lt;br /&gt;
/* Sliding engine (Pure CSS - Starts automatically) */&lt;br /&gt;
.wrapper {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  top: 0;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  display: flex;&lt;br /&gt;
  gap: 20px;&lt;br /&gt;
  width: 3000px; /* Generous width for the moving track */&lt;br /&gt;
  animation: 45s credits linear infinite;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ⏸️ PAUSE ANIMATION ON HOVER */&lt;br /&gt;
.wrapper:hover {&lt;br /&gt;
  animation-play-state: paused;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-item {&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  text-align: center;&lt;br /&gt;
  width: 160px;&lt;br /&gt;
  flex-shrink: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-item img {&lt;br /&gt;
  width: 120px;  &lt;br /&gt;
  height: 180px; &lt;br /&gt;
  object-fit: contain;&lt;br /&gt;
  transition: transform 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 🔍 ENLARGE IMAGE ON HOVER */&lt;br /&gt;
.gallery-item img:hover {&lt;br /&gt;
  transform: scale(1.15);&lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-caption {&lt;br /&gt;
  font-size: 0.85em;&lt;br /&gt;
  color: #333;&lt;br /&gt;
  margin-top: 8px;&lt;br /&gt;
  line-height: 1.3;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes credits {&lt;br /&gt;
  0% { transform: translateX(0); }&lt;br /&gt;
  100% { transform: translateX(-1620px); } /* Perfect loop reset point based on total item widths */&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;gallery-outer&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gallery-bg&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gallery-viewport&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;wrapper&amp;quot;&amp;gt;&lt;br /&gt;
        &lt;br /&gt;
        &amp;lt;!-- ITEM 1: Singer Heavy Duty --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Singer_HD_4432&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/e/e1/Singer_HD-1_4452.jpg/600px-Singer_HD-1_4452.jpg?20250616215327&amp;quot; alt=&amp;quot;Singer HD 4432&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Singer HD 4432&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Basic sewing machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 2: Singer Simple --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Singer_Simple_3232&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/0/08/Singer_Simple.jpg/800px-Singer_Simple.jpg?20191223184102&amp;quot; alt=&amp;quot;Singer Simple 3232&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Singer Simple 3232&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Starter sewing machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 3: Janome (Follows the same FilePath pattern) --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Janome_HD-3000BE&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/0/01/Janome_HD-3000BE.jpeg/400px-Janome_HD-3000BE.jpeg&amp;quot; alt=&amp;quot;Janome HD-3000BE&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Janome HD-3000BE&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Intermediate Home Sewing Machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 4: Bernina --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Bernina_model_1000&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/f/f9/Bernina1008.png/400px-Bernina1008.png&amp;quot; alt=&amp;quot;Bernina model 1008&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Bernina model 1008&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Intermediate Home Sewing Machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 5: Brother Serger --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Brother_1034DX&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/3/3e/Brother-1034DX-Serger.jpeg?20261015223103&amp;quot; alt=&amp;quot;Brother 1034DX&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Brother 1034DX&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Serger&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 6: Brother Embroidery --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Brother_PE770&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/8/8d/BrotherPE770.jpg&amp;quot; alt=&amp;quot;Brother PE770&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Brother PE770&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Embroidery machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 8: Wacom Tablet --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Wacom_Cintiq_Tablet&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;#&amp;quot; alt=&amp;quot;Wacom Cintiq Tablet&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Wacom Cintiq Tablet&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Digital drawing&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 9: Cutting Table --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Cutting_Table&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;#&amp;quot; alt=&amp;quot;Cutting Table&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Cutting Table&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Fabric covered&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gfc</name></author>
	</entry>
	<entry>
		<id>https://sandbox.umd.edu/wiki/index.php?title=Widget:SlidingGallerySewing&amp;diff=3403</id>
		<title>Widget:SlidingGallerySewing</title>
		<link rel="alternate" type="text/html" href="https://sandbox.umd.edu/wiki/index.php?title=Widget:SlidingGallerySewing&amp;diff=3403"/>
		<updated>2026-10-15T22:35:53Z</updated>

		<summary type="html">&lt;p&gt;Gfc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;style&amp;gt;&lt;br /&gt;
/* Layout containers matching your original specifications */&lt;br /&gt;
.gallery-outer { position: relative; height: 100%; margin: 20px 0; }&lt;br /&gt;
.gallery-bg { position: relative; margin: 0 -1em; padding: 0; background-color: transparent; border: 1px none #ddd; height: 100%; }&lt;br /&gt;
.gallery-viewport { position: relative; margin: 0 auto; width: 742px; height: 300px; overflow: hidden; }&lt;br /&gt;
&lt;br /&gt;
/* Sliding engine (Pure CSS - Starts automatically) */&lt;br /&gt;
.wrapper {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  top: 0;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  display: flex;&lt;br /&gt;
  gap: 20px;&lt;br /&gt;
  width: 3000px; /* Generous width for the moving track */&lt;br /&gt;
  animation: 45s credits linear infinite;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ⏸️ PAUSE ANIMATION ON HOVER */&lt;br /&gt;
.wrapper:hover {&lt;br /&gt;
  animation-play-state: paused;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-item {&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  text-align: center;&lt;br /&gt;
  width: 160px;&lt;br /&gt;
  flex-shrink: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-item img {&lt;br /&gt;
  width: 120px;  &lt;br /&gt;
  height: 180px; &lt;br /&gt;
  object-fit: contain;&lt;br /&gt;
  transition: transform 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 🔍 ENLARGE IMAGE ON HOVER */&lt;br /&gt;
.gallery-item img:hover {&lt;br /&gt;
  transform: scale(1.15);&lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-caption {&lt;br /&gt;
  font-size: 0.85em;&lt;br /&gt;
  color: #333;&lt;br /&gt;
  margin-top: 8px;&lt;br /&gt;
  line-height: 1.3;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes credits {&lt;br /&gt;
  0% { transform: translateX(0); }&lt;br /&gt;
  100% { transform: translateX(-1620px); } /* Perfect loop reset point based on total item widths */&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;gallery-outer&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gallery-bg&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gallery-viewport&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;wrapper&amp;quot;&amp;gt;&lt;br /&gt;
        &lt;br /&gt;
        &amp;lt;!-- ITEM 1: Singer Heavy Duty --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Singer_HD_4432&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/e/e1/Singer_HD-1_4452.jpg/600px-Singer_HD-1_4452.jpg?20250616215327&amp;quot; alt=&amp;quot;Singer HD 4432&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Singer HD 4432&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Basic sewing machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 2: Singer Simple --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Singer_Simple_3232&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/0/08/Singer_Simple.jpg/800px-Singer_Simple.jpg?20191223184102&amp;quot; alt=&amp;quot;Singer Simple 3232&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Singer Simple 3232&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Starter sewing machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 3: Janome (Follows the same FilePath pattern) --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Janome_HD-3000BE&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/0/01/Janome_HD-3000BE.jpeg/400px-Janome_HD-3000BE.jpeg&amp;quot; alt=&amp;quot;Janome HD-3000BE&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Janome HD-3000BE&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Intermediate Home Sewing Machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 4: Bernina --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Bernina_model_1000&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/f/f9/Bernina1008.png/400px-Bernina1008.png&amp;quot; alt=&amp;quot;Bernina model 1008&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Bernina model 1008&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Intermediate Home Sewing Machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 5: Brother Serger --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Brother_1034DX&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/3/3e/Brother-1034DX-Serger.jpeg?20261015223103&amp;quot; alt=&amp;quot;Brother 1034DX&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Brother 1034DX&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Serger&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 6: Brother Embroidery --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Brother_PE770&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/8/8d/BrotherPE770.jpg&amp;quot; alt=&amp;quot;Brother PE770&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Brother PE770&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Embroidery machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 7: Dress Forms --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/PGM_dress_forms&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/Special:FilePath/PGM_dress_forms.jpg&amp;quot; alt=&amp;quot;PGM dress forms&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;PGM dress forms&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Collapsible form&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 8: Wacom Tablet --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Wacom_Cintiq_Tablet&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/Special:FilePath/Wacom_Cintiq_Tablet.jpg&amp;quot; alt=&amp;quot;Wacom Cintiq Tablet&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Wacom Cintiq Tablet&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Digital drawing&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 9: Cutting Table --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Cutting_Table&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/Special:FilePath/Cutting_Table.jpg&amp;quot; alt=&amp;quot;Cutting Table&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Cutting Table&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Fabric covered&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gfc</name></author>
	</entry>
	<entry>
		<id>https://sandbox.umd.edu/wiki/index.php?title=Widget:SlidingGallerySewing&amp;diff=3402</id>
		<title>Widget:SlidingGallerySewing</title>
		<link rel="alternate" type="text/html" href="https://sandbox.umd.edu/wiki/index.php?title=Widget:SlidingGallerySewing&amp;diff=3402"/>
		<updated>2026-10-15T22:32:17Z</updated>

		<summary type="html">&lt;p&gt;Gfc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;style&amp;gt;&lt;br /&gt;
/* Layout containers matching your original specifications */&lt;br /&gt;
.gallery-outer { position: relative; height: 100%; margin: 20px 0; }&lt;br /&gt;
.gallery-bg { position: relative; margin: 0 -1em; padding: 0; background-color: transparent; border: 1px none #ddd; height: 100%; }&lt;br /&gt;
.gallery-viewport { position: relative; margin: 0 auto; width: 742px; height: 300px; overflow: hidden; }&lt;br /&gt;
&lt;br /&gt;
/* Sliding engine (Pure CSS - Starts automatically) */&lt;br /&gt;
.wrapper {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  top: 0;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  display: flex;&lt;br /&gt;
  gap: 20px;&lt;br /&gt;
  width: 3000px; /* Generous width for the moving track */&lt;br /&gt;
  animation: 45s credits linear infinite;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ⏸️ PAUSE ANIMATION ON HOVER */&lt;br /&gt;
.wrapper:hover {&lt;br /&gt;
  animation-play-state: paused;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-item {&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  text-align: center;&lt;br /&gt;
  width: 160px;&lt;br /&gt;
  flex-shrink: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-item img {&lt;br /&gt;
  width: 120px;  &lt;br /&gt;
  height: 180px; &lt;br /&gt;
  object-fit: contain;&lt;br /&gt;
  transition: transform 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 🔍 ENLARGE IMAGE ON HOVER */&lt;br /&gt;
.gallery-item img:hover {&lt;br /&gt;
  transform: scale(1.15);&lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-caption {&lt;br /&gt;
  font-size: 0.85em;&lt;br /&gt;
  color: #333;&lt;br /&gt;
  margin-top: 8px;&lt;br /&gt;
  line-height: 1.3;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes credits {&lt;br /&gt;
  0% { transform: translateX(0); }&lt;br /&gt;
  100% { transform: translateX(-1620px); } /* Perfect loop reset point based on total item widths */&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;gallery-outer&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gallery-bg&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gallery-viewport&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;wrapper&amp;quot;&amp;gt;&lt;br /&gt;
        &lt;br /&gt;
        &amp;lt;!-- ITEM 1: Singer Heavy Duty --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Singer_HD_4432&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/e/e1/Singer_HD-1_4452.jpg/600px-Singer_HD-1_4452.jpg?20250616215327&amp;quot; alt=&amp;quot;Singer HD 4432&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Singer HD 4432&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Basic sewing machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 2: Singer Simple --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Singer_Simple_3232&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/0/08/Singer_Simple.jpg/800px-Singer_Simple.jpg?20191223184102&amp;quot; alt=&amp;quot;Singer Simple 3232&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Singer Simple 3232&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Starter sewing machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 3: Janome (Follows the same FilePath pattern) --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Janome_HD-3000BE&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;wiki/images/thumb/0/01/Janome_HD-3000BE.jpeg/400px-Janome_HD-3000BE.jpeg&amp;quot; alt=&amp;quot;Janome HD-3000BE&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Janome HD-3000BE&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Intermediate Home Sewing Machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 4: Bernina --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Bernina_model_1000&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/index.php/File:Bernina1008.png&amp;quot; alt=&amp;quot;Bernina model 1008&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Bernina model 1008&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Intermediate Home Sewing Machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 5: Brother Serger --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Brother_1034DX&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/3/3e/Brother-1034DX-Serger.jpeg?20261015223103&amp;quot; alt=&amp;quot;Brother 1034DX&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Brother 1034DX&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Serger&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 6: Brother Embroidery --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Brother_PE770&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/8/8d/BrotherPE770.jpg&amp;quot; alt=&amp;quot;Brother PE770&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Brother PE770&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Embroidery machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 7: Dress Forms --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/PGM_dress_forms&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/Special:FilePath/PGM_dress_forms.jpg&amp;quot; alt=&amp;quot;PGM dress forms&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;PGM dress forms&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Collapsible form&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 8: Wacom Tablet --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Wacom_Cintiq_Tablet&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/Special:FilePath/Wacom_Cintiq_Tablet.jpg&amp;quot; alt=&amp;quot;Wacom Cintiq Tablet&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Wacom Cintiq Tablet&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Digital drawing&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 9: Cutting Table --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Cutting_Table&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/Special:FilePath/Cutting_Table.jpg&amp;quot; alt=&amp;quot;Cutting Table&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Cutting Table&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Fabric covered&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gfc</name></author>
	</entry>
	<entry>
		<id>https://sandbox.umd.edu/wiki/index.php?title=File:Brother-1034DX-Serger.jpeg&amp;diff=3401</id>
		<title>File:Brother-1034DX-Serger.jpeg</title>
		<link rel="alternate" type="text/html" href="https://sandbox.umd.edu/wiki/index.php?title=File:Brother-1034DX-Serger.jpeg&amp;diff=3401"/>
		<updated>2026-10-15T22:31:03Z</updated>

		<summary type="html">&lt;p&gt;Gfc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gfc</name></author>
	</entry>
	<entry>
		<id>https://sandbox.umd.edu/wiki/index.php?title=Widget:SlidingGallerySewing&amp;diff=3400</id>
		<title>Widget:SlidingGallerySewing</title>
		<link rel="alternate" type="text/html" href="https://sandbox.umd.edu/wiki/index.php?title=Widget:SlidingGallerySewing&amp;diff=3400"/>
		<updated>2026-10-15T22:22:59Z</updated>

		<summary type="html">&lt;p&gt;Gfc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;style&amp;gt;&lt;br /&gt;
/* Layout containers matching your original specifications */&lt;br /&gt;
.gallery-outer { position: relative; height: 100%; margin: 20px 0; }&lt;br /&gt;
.gallery-bg { position: relative; margin: 0 -1em; padding: 0; background-color: transparent; border: 1px none #ddd; height: 100%; }&lt;br /&gt;
.gallery-viewport { position: relative; margin: 0 auto; width: 742px; height: 300px; overflow: hidden; }&lt;br /&gt;
&lt;br /&gt;
/* Sliding engine (Pure CSS - Starts automatically) */&lt;br /&gt;
.wrapper {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  top: 0;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  display: flex;&lt;br /&gt;
  gap: 20px;&lt;br /&gt;
  width: 3000px; /* Generous width for the moving track */&lt;br /&gt;
  animation: 45s credits linear infinite;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ⏸️ PAUSE ANIMATION ON HOVER */&lt;br /&gt;
.wrapper:hover {&lt;br /&gt;
  animation-play-state: paused;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-item {&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  text-align: center;&lt;br /&gt;
  width: 160px;&lt;br /&gt;
  flex-shrink: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-item img {&lt;br /&gt;
  width: 120px;  &lt;br /&gt;
  height: 180px; &lt;br /&gt;
  object-fit: contain;&lt;br /&gt;
  transition: transform 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 🔍 ENLARGE IMAGE ON HOVER */&lt;br /&gt;
.gallery-item img:hover {&lt;br /&gt;
  transform: scale(1.15);&lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-caption {&lt;br /&gt;
  font-size: 0.85em;&lt;br /&gt;
  color: #333;&lt;br /&gt;
  margin-top: 8px;&lt;br /&gt;
  line-height: 1.3;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes credits {&lt;br /&gt;
  0% { transform: translateX(0); }&lt;br /&gt;
  100% { transform: translateX(-1620px); } /* Perfect loop reset point based on total item widths */&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;gallery-outer&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gallery-bg&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gallery-viewport&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;wrapper&amp;quot;&amp;gt;&lt;br /&gt;
        &lt;br /&gt;
        &amp;lt;!-- ITEM 1: Singer Heavy Duty --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Singer_HD_4432&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/e/e1/Singer_HD-1_4452.jpg/600px-Singer_HD-1_4452.jpg?20250616215327&amp;quot; alt=&amp;quot;Singer HD 4432&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Singer HD 4432&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Basic sewing machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 2: Singer Simple --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Singer_Simple_3232&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/0/08/Singer_Simple.jpg/800px-Singer_Simple.jpg?20191223184102&amp;quot; alt=&amp;quot;Singer Simple 3232&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Singer Simple 3232&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Starter sewing machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 3: Janome (Follows the same FilePath pattern) --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Janome_HD-3000BE&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;wiki/images/thumb/0/01/Janome_HD-3000BE.jpeg/400px-Janome_HD-3000BE.jpeg&amp;quot; alt=&amp;quot;Janome HD-3000BE&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Janome HD-3000BE&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Intermediate Home Sewing Machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 4: Bernina --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Bernina_model_1000&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/index.php/File:Bernina1008.png&amp;quot; alt=&amp;quot;Bernina model 1008&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Bernina model 1008&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Intermediate Home Sewing Machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 5: Brother Serger --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Brother_1034DX&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/Special:FilePath/Brother_1034DX.jpg&amp;quot; alt=&amp;quot;Brother 1034DX&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Brother 1034DX&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Serger&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 6: Brother Embroidery --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Brother_PE770&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/8/8d/BrotherPE770.jpg&amp;quot; alt=&amp;quot;Brother PE770&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Brother PE770&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Embroidery machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 7: Dress Forms --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/PGM_dress_forms&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/Special:FilePath/PGM_dress_forms.jpg&amp;quot; alt=&amp;quot;PGM dress forms&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;PGM dress forms&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Collapsible form&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 8: Wacom Tablet --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Wacom_Cintiq_Tablet&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/Special:FilePath/Wacom_Cintiq_Tablet.jpg&amp;quot; alt=&amp;quot;Wacom Cintiq Tablet&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Wacom Cintiq Tablet&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Digital drawing&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 9: Cutting Table --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Cutting_Table&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/Special:FilePath/Cutting_Table.jpg&amp;quot; alt=&amp;quot;Cutting Table&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Cutting Table&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Fabric covered&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gfc</name></author>
	</entry>
	<entry>
		<id>https://sandbox.umd.edu/wiki/index.php?title=Widget:SlidingGallerySewing&amp;diff=3399</id>
		<title>Widget:SlidingGallerySewing</title>
		<link rel="alternate" type="text/html" href="https://sandbox.umd.edu/wiki/index.php?title=Widget:SlidingGallerySewing&amp;diff=3399"/>
		<updated>2026-10-15T22:20:30Z</updated>

		<summary type="html">&lt;p&gt;Gfc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;style&amp;gt;&lt;br /&gt;
/* Layout containers matching your original specifications */&lt;br /&gt;
.gallery-outer { position: relative; height: 100%; margin: 20px 0; }&lt;br /&gt;
.gallery-bg { position: relative; margin: 0 -1em; padding: 0; background-color: transparent; border: 1px none #ddd; height: 100%; }&lt;br /&gt;
.gallery-viewport { position: relative; margin: 0 auto; width: 742px; height: 300px; overflow: hidden; }&lt;br /&gt;
&lt;br /&gt;
/* Sliding engine (Pure CSS - Starts automatically) */&lt;br /&gt;
.wrapper {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  top: 0;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  display: flex;&lt;br /&gt;
  gap: 20px;&lt;br /&gt;
  width: 3000px; /* Generous width for the moving track */&lt;br /&gt;
  animation: 45s credits linear infinite;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ⏸️ PAUSE ANIMATION ON HOVER */&lt;br /&gt;
.wrapper:hover {&lt;br /&gt;
  animation-play-state: paused;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-item {&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  text-align: center;&lt;br /&gt;
  width: 160px;&lt;br /&gt;
  flex-shrink: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-item img {&lt;br /&gt;
  width: 120px;  &lt;br /&gt;
  height: 180px; &lt;br /&gt;
  object-fit: contain;&lt;br /&gt;
  transition: transform 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 🔍 ENLARGE IMAGE ON HOVER */&lt;br /&gt;
.gallery-item img:hover {&lt;br /&gt;
  transform: scale(1.15);&lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-caption {&lt;br /&gt;
  font-size: 0.85em;&lt;br /&gt;
  color: #333;&lt;br /&gt;
  margin-top: 8px;&lt;br /&gt;
  line-height: 1.3;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes credits {&lt;br /&gt;
  0% { transform: translateX(0); }&lt;br /&gt;
  100% { transform: translateX(-1620px); } /* Perfect loop reset point based on total item widths */&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;gallery-outer&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gallery-bg&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gallery-viewport&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;wrapper&amp;quot;&amp;gt;&lt;br /&gt;
        &lt;br /&gt;
        &amp;lt;!-- ITEM 1: Singer Heavy Duty --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Singer_HD_4432&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/e/e1/Singer_HD-1_4452.jpg/600px-Singer_HD-1_4452.jpg?20250616215327&amp;quot; alt=&amp;quot;Singer HD 4432&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Singer HD 4432&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Basic sewing machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 2: Singer Simple --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Singer_Simple_3232&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/0/08/Singer_Simple.jpg/800px-Singer_Simple.jpg?20191223184102&amp;quot; alt=&amp;quot;Singer Simple 3232&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Singer Simple 3232&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Starter sewing machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 3: Janome (Follows the same FilePath pattern) --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Janome_HD-3000BE&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;wiki/images/thumb/0/01/Janome_HD-3000BE.jpeg/400px-Janome_HD-3000BE.jpeg&amp;quot; alt=&amp;quot;Janome HD-3000BE&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Janome HD-3000BE&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Presser foot attachments&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 4: Bernina --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Bernina_model_1000&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/index.php/File:Bernina1008.png&amp;quot; alt=&amp;quot;Bernina model 1008&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Bernina model 1008&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Stitch control&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 5: Brother Serger --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Brother_1034DX&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/Special:FilePath/Brother_1034DX.jpg&amp;quot; alt=&amp;quot;Brother 1034DX&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Brother 1034DX&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Serger / Edges&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 6: Brother Embroidery --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Brother_PE770&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/8/8d/BrotherPE770.jpg&amp;quot; alt=&amp;quot;Brother PE770&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Brother PE770&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Embroidery machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 7: Dress Forms --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/PGM_dress_forms&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/Special:FilePath/PGM_dress_forms.jpg&amp;quot; alt=&amp;quot;PGM dress forms&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;PGM dress forms&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Collapsible form&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 8: Wacom Tablet --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Wacom_Cintiq_Tablet&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/Special:FilePath/Wacom_Cintiq_Tablet.jpg&amp;quot; alt=&amp;quot;Wacom Cintiq Tablet&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Wacom Cintiq Tablet&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Digital drawing&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 9: Cutting Table --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Cutting_Table&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/Special:FilePath/Cutting_Table.jpg&amp;quot; alt=&amp;quot;Cutting Table&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Cutting Table&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Fabric covered&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gfc</name></author>
	</entry>
	<entry>
		<id>https://sandbox.umd.edu/wiki/index.php?title=Widget:SlidingGallerySewing&amp;diff=3398</id>
		<title>Widget:SlidingGallerySewing</title>
		<link rel="alternate" type="text/html" href="https://sandbox.umd.edu/wiki/index.php?title=Widget:SlidingGallerySewing&amp;diff=3398"/>
		<updated>2026-10-15T22:18:28Z</updated>

		<summary type="html">&lt;p&gt;Gfc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;style&amp;gt;&lt;br /&gt;
/* Layout containers matching your original specifications */&lt;br /&gt;
.gallery-outer { position: relative; height: 100%; margin: 20px 0; }&lt;br /&gt;
.gallery-bg { position: relative; margin: 0 -1em; padding: 0; background-color: transparent; border: 1px none #ddd; height: 100%; }&lt;br /&gt;
.gallery-viewport { position: relative; margin: 0 auto; width: 742px; height: 300px; overflow: hidden; }&lt;br /&gt;
&lt;br /&gt;
/* Sliding engine (Pure CSS - Starts automatically) */&lt;br /&gt;
.wrapper {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  top: 0;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  display: flex;&lt;br /&gt;
  gap: 20px;&lt;br /&gt;
  width: 3000px; /* Generous width for the moving track */&lt;br /&gt;
  animation: 45s credits linear infinite;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ⏸️ PAUSE ANIMATION ON HOVER */&lt;br /&gt;
.wrapper:hover {&lt;br /&gt;
  animation-play-state: paused;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-item {&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  text-align: center;&lt;br /&gt;
  width: 160px;&lt;br /&gt;
  flex-shrink: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-item img {&lt;br /&gt;
  width: 120px;  &lt;br /&gt;
  height: 180px; &lt;br /&gt;
  object-fit: contain;&lt;br /&gt;
  transition: transform 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 🔍 ENLARGE IMAGE ON HOVER */&lt;br /&gt;
.gallery-item img:hover {&lt;br /&gt;
  transform: scale(1.15);&lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-caption {&lt;br /&gt;
  font-size: 0.85em;&lt;br /&gt;
  color: #333;&lt;br /&gt;
  margin-top: 8px;&lt;br /&gt;
  line-height: 1.3;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes credits {&lt;br /&gt;
  0% { transform: translateX(0); }&lt;br /&gt;
  100% { transform: translateX(-1620px); } /* Perfect loop reset point based on total item widths */&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;gallery-outer&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gallery-bg&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gallery-viewport&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;wrapper&amp;quot;&amp;gt;&lt;br /&gt;
        &lt;br /&gt;
        &amp;lt;!-- ITEM 1: Singer Heavy Duty --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Singer_HD_4432&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/e/e1/Singer_HD-1_4452.jpg/600px-Singer_HD-1_4452.jpg?20250616215327&amp;quot; alt=&amp;quot;Singer HD 4432&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Singer HD 4432&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Basic sewing machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 2: Singer Simple --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Singer_Simple_3232&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/0/08/Singer_Simple.jpg/800px-Singer_Simple.jpg?20191223184102&amp;quot; alt=&amp;quot;Singer Simple 3232&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Singer Simple 3232&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Starter sewing machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 3: Janome (Follows the same FilePath pattern) --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Janome_HD-3000BE&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;wiki/images/thumb/0/01/Janome_HD-3000BE.jpeg/400px-Janome_HD-3000BE.jpeg&amp;quot; alt=&amp;quot;Janome HD-3000BE&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Janome HD-3000BE&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Presser foot attachments&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 4: Bernina --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Bernina_model_1000&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/Special:FilePath/Bernina_model_1000.jpg&amp;quot; alt=&amp;quot;Bernina model 1008&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Bernina model 1008&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Stitch control&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 5: Brother Serger --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Brother_1034DX&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/Special:FilePath/Brother_1034DX.jpg&amp;quot; alt=&amp;quot;Brother 1034DX&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Brother 1034DX&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Serger / Edges&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 6: Brother Embroidery --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Brother_PE770&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/Special:FilePath/Brother_PE770.jpg&amp;quot; alt=&amp;quot;Brother PE770&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Brother PE770&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Embroidery machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 7: Dress Forms --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/PGM_dress_forms&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/Special:FilePath/PGM_dress_forms.jpg&amp;quot; alt=&amp;quot;PGM dress forms&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;PGM dress forms&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Collapsible form&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 8: Wacom Tablet --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Wacom_Cintiq_Tablet&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/Special:FilePath/Wacom_Cintiq_Tablet.jpg&amp;quot; alt=&amp;quot;Wacom Cintiq Tablet&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Wacom Cintiq Tablet&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Digital drawing&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 9: Cutting Table --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Cutting_Table&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/Special:FilePath/Cutting_Table.jpg&amp;quot; alt=&amp;quot;Cutting Table&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Cutting Table&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Fabric covered&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gfc</name></author>
	</entry>
	<entry>
		<id>https://sandbox.umd.edu/wiki/index.php?title=Widget:SlidingGallerySewing&amp;diff=3397</id>
		<title>Widget:SlidingGallerySewing</title>
		<link rel="alternate" type="text/html" href="https://sandbox.umd.edu/wiki/index.php?title=Widget:SlidingGallerySewing&amp;diff=3397"/>
		<updated>2026-10-15T22:14:51Z</updated>

		<summary type="html">&lt;p&gt;Gfc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;style&amp;gt;&lt;br /&gt;
/* Layout containers matching your original specifications */&lt;br /&gt;
.gallery-outer { position: relative; height: 100%; margin: 20px 0; }&lt;br /&gt;
.gallery-bg { position: relative; margin: 0 -1em; padding: 0; background-color: transparent; border: 1px none #ddd; height: 100%; }&lt;br /&gt;
.gallery-viewport { position: relative; margin: 0 auto; width: 742px; height: 300px; overflow: hidden; }&lt;br /&gt;
&lt;br /&gt;
/* Sliding engine (Pure CSS - Starts automatically) */&lt;br /&gt;
.wrapper {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  top: 0;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  display: flex;&lt;br /&gt;
  gap: 20px;&lt;br /&gt;
  width: 3000px; /* Generous width for the moving track */&lt;br /&gt;
  animation: 45s credits linear infinite;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ⏸️ PAUSE ANIMATION ON HOVER */&lt;br /&gt;
.wrapper:hover {&lt;br /&gt;
  animation-play-state: paused;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-item {&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  text-align: center;&lt;br /&gt;
  width: 160px;&lt;br /&gt;
  flex-shrink: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-item img {&lt;br /&gt;
  width: 120px;  &lt;br /&gt;
  height: 180px; &lt;br /&gt;
  object-fit: contain;&lt;br /&gt;
  transition: transform 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 🔍 ENLARGE IMAGE ON HOVER */&lt;br /&gt;
.gallery-item img:hover {&lt;br /&gt;
  transform: scale(1.15);&lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-caption {&lt;br /&gt;
  font-size: 0.85em;&lt;br /&gt;
  color: #333;&lt;br /&gt;
  margin-top: 8px;&lt;br /&gt;
  line-height: 1.3;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes credits {&lt;br /&gt;
  0% { transform: translateX(0); }&lt;br /&gt;
  100% { transform: translateX(-1620px); } /* Perfect loop reset point based on total item widths */&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;gallery-outer&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gallery-bg&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gallery-viewport&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;wrapper&amp;quot;&amp;gt;&lt;br /&gt;
        &lt;br /&gt;
        &amp;lt;!-- ITEM 1: Singer Heavy Duty --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Singer_HD_4432&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/e/e1/Singer_HD-1_4452.jpg/600px-Singer_HD-1_4452.jpg?20250616215327&amp;quot; alt=&amp;quot;Singer HD 4432&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Singer HD 4432&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Basic sewing machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 2: Singer Simple --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Singer_Simple_3232&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/0/08/Singer_Simple.jpg/800px-Singer_Simple.jpg?20191223184102&amp;quot; alt=&amp;quot;Singer Simple 3232&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Singer Simple 3232&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Starter sewing machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 3: Janome (Follows the same FilePath pattern) --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Janome_HD-3000BE&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/Special:FilePath/Janome_HD-3000BE.jpg&amp;quot; alt=&amp;quot;Janome HD-3000BE&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Janome HD-3000BE&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Presser foot attachments&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 4: Bernina --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Bernina_model_1000&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/Special:FilePath/Bernina_model_1000.jpg&amp;quot; alt=&amp;quot;Bernina model 1008&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Bernina model 1008&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Stitch control&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 5: Brother Serger --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Brother_1034DX&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/Special:FilePath/Brother_1034DX.jpg&amp;quot; alt=&amp;quot;Brother 1034DX&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Brother 1034DX&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Serger / Edges&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 6: Brother Embroidery --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Brother_PE770&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/Special:FilePath/Brother_PE770.jpg&amp;quot; alt=&amp;quot;Brother PE770&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Brother PE770&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Embroidery machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 7: Dress Forms --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/PGM_dress_forms&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/Special:FilePath/PGM_dress_forms.jpg&amp;quot; alt=&amp;quot;PGM dress forms&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;PGM dress forms&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Collapsible form&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 8: Wacom Tablet --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Wacom_Cintiq_Tablet&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/Special:FilePath/Wacom_Cintiq_Tablet.jpg&amp;quot; alt=&amp;quot;Wacom Cintiq Tablet&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Wacom Cintiq Tablet&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Digital drawing&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 9: Cutting Table --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Cutting_Table&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/Special:FilePath/Cutting_Table.jpg&amp;quot; alt=&amp;quot;Cutting Table&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Cutting Table&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Fabric covered&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gfc</name></author>
	</entry>
	<entry>
		<id>https://sandbox.umd.edu/wiki/index.php?title=Widget:SlidingGallerySewing&amp;diff=3396</id>
		<title>Widget:SlidingGallerySewing</title>
		<link rel="alternate" type="text/html" href="https://sandbox.umd.edu/wiki/index.php?title=Widget:SlidingGallerySewing&amp;diff=3396"/>
		<updated>2026-10-15T22:12:11Z</updated>

		<summary type="html">&lt;p&gt;Gfc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;style&amp;gt;&lt;br /&gt;
/* Layout containers matching your original specifications */&lt;br /&gt;
.gallery-outer { position: relative; height: 100%; margin: 20px 0; }&lt;br /&gt;
.gallery-bg { position: relative; margin: 0 -1em; padding: 0; background-color: transparent; border: 1px none #ddd; height: 100%; }&lt;br /&gt;
.gallery-viewport { position: relative; margin: 0 auto; width: 742px; height: 300px; overflow: hidden; }&lt;br /&gt;
&lt;br /&gt;
/* Sliding engine (Pure CSS - Starts automatically) */&lt;br /&gt;
.wrapper {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  top: 0;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  display: flex;&lt;br /&gt;
  gap: 20px;&lt;br /&gt;
  width: 3000px; /* Generous width for the moving track */&lt;br /&gt;
  animation: 45s credits linear infinite;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ⏸️ PAUSE ANIMATION ON HOVER */&lt;br /&gt;
.wrapper:hover {&lt;br /&gt;
  animation-play-state: paused;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-item {&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  text-align: center;&lt;br /&gt;
  width: 160px;&lt;br /&gt;
  flex-shrink: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-item img {&lt;br /&gt;
  width: 120px;  &lt;br /&gt;
  height: 180px; &lt;br /&gt;
  object-fit: contain;&lt;br /&gt;
  transition: transform 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 🔍 ENLARGE IMAGE ON HOVER */&lt;br /&gt;
.gallery-item img:hover {&lt;br /&gt;
  transform: scale(1.15);&lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-caption {&lt;br /&gt;
  font-size: 0.85em;&lt;br /&gt;
  color: #333;&lt;br /&gt;
  margin-top: 8px;&lt;br /&gt;
  line-height: 1.3;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes credits {&lt;br /&gt;
  0% { transform: translateX(0); }&lt;br /&gt;
  100% { transform: translateX(-1620px); } /* Perfect loop reset point based on total item widths */&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;gallery-outer&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gallery-bg&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gallery-viewport&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;wrapper&amp;quot;&amp;gt;&lt;br /&gt;
        &lt;br /&gt;
        &amp;lt;!-- ITEM 1: Singer Heavy Duty --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Singer_HD_4432&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/images/thumb/e/e1/Singer_HD-1_4452.jpg/600px-Singer_HD-1_4452.jpg?20250616215327&amp;quot; alt=&amp;quot;Singer HD 4432&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Singer HD 4432&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Basic sewing machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 2: Singer Simple --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Singer_Simple_3232&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/Special:FilePath/Singer_Simple.jpg&amp;quot; alt=&amp;quot;Singer Simple 3232&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Singer Simple 3232&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Starter sewing machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 3: Janome (Follows the same FilePath pattern) --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Janome_HD-3000BE&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/Special:FilePath/Janome_HD-3000BE.jpg&amp;quot; alt=&amp;quot;Janome HD-3000BE&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Janome HD-3000BE&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Presser foot attachments&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 4: Bernina --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Bernina_model_1000&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/Special:FilePath/Bernina_model_1000.jpg&amp;quot; alt=&amp;quot;Bernina model 1008&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Bernina model 1008&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Stitch control&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 5: Brother Serger --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Brother_1034DX&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/Special:FilePath/Brother_1034DX.jpg&amp;quot; alt=&amp;quot;Brother 1034DX&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Brother 1034DX&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Serger / Edges&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 6: Brother Embroidery --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Brother_PE770&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/Special:FilePath/Brother_PE770.jpg&amp;quot; alt=&amp;quot;Brother PE770&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Brother PE770&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Embroidery machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 7: Dress Forms --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/PGM_dress_forms&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/Special:FilePath/PGM_dress_forms.jpg&amp;quot; alt=&amp;quot;PGM dress forms&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;PGM dress forms&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Collapsible form&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 8: Wacom Tablet --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Wacom_Cintiq_Tablet&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/Special:FilePath/Wacom_Cintiq_Tablet.jpg&amp;quot; alt=&amp;quot;Wacom Cintiq Tablet&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Wacom Cintiq Tablet&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Digital drawing&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 9: Cutting Table --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Cutting_Table&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/Special:FilePath/Cutting_Table.jpg&amp;quot; alt=&amp;quot;Cutting Table&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Cutting Table&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Fabric covered&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gfc</name></author>
	</entry>
	<entry>
		<id>https://sandbox.umd.edu/wiki/index.php?title=IRB_1238_VR&amp;diff=3395</id>
		<title>IRB 1238 VR</title>
		<link rel="alternate" type="text/html" href="https://sandbox.umd.edu/wiki/index.php?title=IRB_1238_VR&amp;diff=3395"/>
		<updated>2026-10-15T21:36:46Z</updated>

		<summary type="html">&lt;p&gt;Gfc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Rooms]]&lt;br /&gt;
=Sewing Studio=&lt;br /&gt;
__TOC__&lt;br /&gt;
The &#039;&#039;&#039;Sewing Studio&#039;&#039;&#039; is located in Iribe Room 1238.&lt;br /&gt;
Students can use the machines and tools in this studio to modify or make their own &lt;br /&gt;
fabric projects, including: clothing, puppets, cosplay/costumes, small home decor, &lt;br /&gt;
and more!                                             &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tools==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{#widget:SlidingGallerySewing}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you are looking for something on this list, and you cannot find it in the room, tell a manager. &#039;&#039;&#039;It should not have left the room and may be missing.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{:MajorToolsSewingStudio}}&lt;br /&gt;
&lt;br /&gt;
== Take a look around the Sandbox Sewing Studio!==&lt;br /&gt;
&lt;br /&gt;
{{Virtual Tour|tourID=Sewing}}&lt;br /&gt;
&lt;br /&gt;
==Minor tools==&lt;br /&gt;
If you are looking for something on this list, and you cannot find it in the room, tell a manager. &#039;&#039;&#039;We can track it down and/or replace it.&#039;&#039;&#039;&lt;br /&gt;
{{:SewingMinorToolsList}}&lt;br /&gt;
==Consumables==&lt;br /&gt;
If you are looking for something on this list, and you cannot find it in the room, tell a manager. &#039;&#039;&#039;We likely have more stock in storage.&#039;&#039;&#039;&lt;br /&gt;
{{:SewingConsumablesList}}&lt;/div&gt;</summary>
		<author><name>Gfc</name></author>
	</entry>
	<entry>
		<id>https://sandbox.umd.edu/wiki/index.php?title=Widget:SlidingGallerySewing&amp;diff=3394</id>
		<title>Widget:SlidingGallerySewing</title>
		<link rel="alternate" type="text/html" href="https://sandbox.umd.edu/wiki/index.php?title=Widget:SlidingGallerySewing&amp;diff=3394"/>
		<updated>2026-10-15T21:35:51Z</updated>

		<summary type="html">&lt;p&gt;Gfc: Created page with &amp;quot;&amp;lt;style&amp;gt; /* Layout containers matching your original specifications */ .gallery-outer { position: relative; height: 100%; margin: 20px 0; } .gallery-bg { position: relative; margin: 0 -1em; padding: 0; background-color: transparent; border: 1px none #ddd; height: 100%; } .gallery-viewport { position: relative; margin: 0 auto; width: 742px; height: 300px; overflow: hidden; }  /* Sliding engine (Pure CSS - Starts automatically) */ .wrapper {   position: absolute;   top: 0;...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;style&amp;gt;&lt;br /&gt;
/* Layout containers matching your original specifications */&lt;br /&gt;
.gallery-outer { position: relative; height: 100%; margin: 20px 0; }&lt;br /&gt;
.gallery-bg { position: relative; margin: 0 -1em; padding: 0; background-color: transparent; border: 1px none #ddd; height: 100%; }&lt;br /&gt;
.gallery-viewport { position: relative; margin: 0 auto; width: 742px; height: 300px; overflow: hidden; }&lt;br /&gt;
&lt;br /&gt;
/* Sliding engine (Pure CSS - Starts automatically) */&lt;br /&gt;
.wrapper {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  top: 0;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  display: flex;&lt;br /&gt;
  gap: 20px;&lt;br /&gt;
  width: 3000px; /* Generous width for the moving track */&lt;br /&gt;
  animation: 45s credits linear infinite;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ⏸️ PAUSE ANIMATION ON HOVER */&lt;br /&gt;
.wrapper:hover {&lt;br /&gt;
  animation-play-state: paused;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-item {&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  text-align: center;&lt;br /&gt;
  width: 160px;&lt;br /&gt;
  flex-shrink: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-item img {&lt;br /&gt;
  width: 120px;  &lt;br /&gt;
  height: 180px; &lt;br /&gt;
  object-fit: contain;&lt;br /&gt;
  transition: transform 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 🔍 ENLARGE IMAGE ON HOVER */&lt;br /&gt;
.gallery-item img:hover {&lt;br /&gt;
  transform: scale(1.15);&lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-caption {&lt;br /&gt;
  font-size: 0.85em;&lt;br /&gt;
  color: #333;&lt;br /&gt;
  margin-top: 8px;&lt;br /&gt;
  line-height: 1.3;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes credits {&lt;br /&gt;
  0% { transform: translateX(0); }&lt;br /&gt;
  100% { transform: translateX(-1620px); } /* Perfect loop reset point based on total item widths */&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;gallery-outer&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gallery-bg&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gallery-viewport&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;wrapper&amp;quot;&amp;gt;&lt;br /&gt;
        &lt;br /&gt;
        &amp;lt;!-- ITEM 1: Singer Heavy Duty --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Singer_HD_4432&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/Special:FilePath/Singer_HD-1_4452.jpg&amp;quot; alt=&amp;quot;Singer HD 4432&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Singer HD 4432&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Basic sewing machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 2: Singer Simple --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Singer_Simple_3232&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/Special:FilePath/Singer_Simple.jpg&amp;quot; alt=&amp;quot;Singer Simple 3232&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Singer Simple 3232&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Starter sewing machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 3: Janome (Follows the same FilePath pattern) --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Janome_HD-3000BE&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/Special:FilePath/Janome_HD-3000BE.jpg&amp;quot; alt=&amp;quot;Janome HD-3000BE&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Janome HD-3000BE&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Presser foot attachments&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 4: Bernina --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Bernina_model_1000&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/Special:FilePath/Bernina_model_1000.jpg&amp;quot; alt=&amp;quot;Bernina model 1008&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Bernina model 1008&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Stitch control&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 5: Brother Serger --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Brother_1034DX&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/Special:FilePath/Brother_1034DX.jpg&amp;quot; alt=&amp;quot;Brother 1034DX&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Brother 1034DX&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Serger / Edges&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 6: Brother Embroidery --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Brother_PE770&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/Special:FilePath/Brother_PE770.jpg&amp;quot; alt=&amp;quot;Brother PE770&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Brother PE770&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Embroidery machine&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 7: Dress Forms --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/PGM_dress_forms&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/Special:FilePath/PGM_dress_forms.jpg&amp;quot; alt=&amp;quot;PGM dress forms&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;PGM dress forms&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Collapsible form&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 8: Wacom Tablet --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Wacom_Cintiq_Tablet&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/Special:FilePath/Wacom_Cintiq_Tablet.jpg&amp;quot; alt=&amp;quot;Wacom Cintiq Tablet&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Wacom Cintiq Tablet&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Digital drawing&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- ITEM 9: Cutting Table --&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;a href=&amp;quot;/wiki/Cutting_Table&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;img src=&amp;quot;/wiki/Special:FilePath/Cutting_Table.jpg&amp;quot; alt=&amp;quot;Cutting Table&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;/a&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;Cutting Table&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Fabric covered&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gfc</name></author>
	</entry>
	<entry>
		<id>https://sandbox.umd.edu/wiki/index.php?title=MajorToolsWoodworkingStudio&amp;diff=3393</id>
		<title>MajorToolsWoodworkingStudio</title>
		<link rel="alternate" type="text/html" href="https://sandbox.umd.edu/wiki/index.php?title=MajorToolsWoodworkingStudio&amp;diff=3393"/>
		<updated>2026-10-15T21:34:27Z</updated>

		<summary type="html">&lt;p&gt;Gfc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[Cordless Drill | Cordless Drill (Dewalt DCD771)]] &lt;br /&gt;
*[[Impact Driver | Impact Driver (Dewalt DCF809)]] &lt;br /&gt;
*[[Rotary Tool | Dremel Rotary Tool (Model 4000)]]&lt;br /&gt;
*[[Scroll Saw |  Variable Speed Scroll Saw (Delta 40-694)]]&lt;br /&gt;
*[[Cordless Jigsaw | Cordless Jigsaw (Dewalt DCS331)]] &lt;br /&gt;
*[[Orbital Sander | Orbital Sander (Craftsman 11218)]] &lt;br /&gt;
*[[Router | Handheld Router (Dewalt DWP611)]] &lt;br /&gt;
*[[Miter Saw | Compound Miter Saw (Festool Kapex KS 120 EB)]] &lt;br /&gt;
*[[Track Saw | Track Saw (Festool TS-55 REQ)]] &lt;br /&gt;
*[[Router Table | Router Table (JessEm 09422)]] &lt;br /&gt;
*[[Jet JDP-17 Drill Press | Drill Press (JET JDP-17)]] &lt;br /&gt;
*[[Belt &amp;amp; Disk Sander | Belt &amp;amp; Disk Sander (JET JSG-96)]] &lt;br /&gt;
*[[Reciprocating Saw |  Reciprocating Saw (Dewalt DCS387)]]&lt;br /&gt;
*[[Oscillating MultiTool | Oscillating Multi Tool (Dewalt DCS354)]]&lt;/div&gt;</summary>
		<author><name>Gfc</name></author>
	</entry>
	<entry>
		<id>https://sandbox.umd.edu/wiki/index.php?title=MajorToolsWoodworkingStudio&amp;diff=3392</id>
		<title>MajorToolsWoodworkingStudio</title>
		<link rel="alternate" type="text/html" href="https://sandbox.umd.edu/wiki/index.php?title=MajorToolsWoodworkingStudio&amp;diff=3392"/>
		<updated>2026-10-15T21:34:01Z</updated>

		<summary type="html">&lt;p&gt;Gfc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[Cordless Drill | Cordless Drill (Dewalt DCD771)]] &lt;br /&gt;
*[[Impact Driver | Impact Driver (Dewalt DCF809)]] &lt;br /&gt;
*[[Rotary Tool | Dremel Rotary Tool (Model 4000)]]&lt;br /&gt;
*[[Scroll Saw |  Variable Speed Scroll Saw (Delta 40-694)]]&lt;br /&gt;
*[[Cordless Jigsaw | Cordless Jigsaw (Dewalt DCS331)]] &lt;br /&gt;
*[[Orbital Sander | Orbital Sander (Craftsman 11218)]] &lt;br /&gt;
*[[Router | - Handheld Router (Dewalt DWP611)]] &lt;br /&gt;
*[[Miter Saw | Compound Miter Saw (Festool Kapex KS 120 EB)]] &lt;br /&gt;
*[[Track Saw | Track Saw (Festool TS-55 REQ)]] &lt;br /&gt;
*[[Router Table | Router Table (JessEm 09422)]] &lt;br /&gt;
*[[Jet JDP-17 Drill Press | Drill Press (JET JDP-17)]] &lt;br /&gt;
*[[Belt &amp;amp; Disk Sander | Belt &amp;amp; Disk Sander (JET JSG-96)]] &lt;br /&gt;
*[[Reciprocating Saw |  Reciprocating Saw (Dewalt DCS387)]]&lt;br /&gt;
*[[Oscillating MultiTool | Oscillating Multi Tool (Dewalt DCS354)]]&lt;/div&gt;</summary>
		<author><name>Gfc</name></author>
	</entry>
	<entry>
		<id>https://sandbox.umd.edu/wiki/index.php?title=MajorToolsWoodworkingStudio&amp;diff=3391</id>
		<title>MajorToolsWoodworkingStudio</title>
		<link rel="alternate" type="text/html" href="https://sandbox.umd.edu/wiki/index.php?title=MajorToolsWoodworkingStudio&amp;diff=3391"/>
		<updated>2026-10-15T21:25:24Z</updated>

		<summary type="html">&lt;p&gt;Gfc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[Cordless Drill | Cordless Drill (Dewalt DCD771)]] &lt;br /&gt;
*[[Impact Driver | Dewalt DCF809]] - Impact Driver&lt;br /&gt;
*[[Rotary Tool | Dremel Model 4000]] - Rotary Tool&lt;br /&gt;
*[[Scroll Saw | Delta 40-694 ]] - 20&amp;quot; Variable Speed Scroll Saw&lt;br /&gt;
*[[Cordless Jigsaw | Dewalt DCS331]] - Cordless Jigsaw&lt;br /&gt;
*[[Orbital Sander | Craftsman Model: 11218]] - Corded Orbital Sander&lt;br /&gt;
*[[Router | Dewalt DWP611]] - Corded Handheld Router&lt;br /&gt;
*[[Miter Saw | Festool Kapex KS 120 EB ]] - Miter Saw&lt;br /&gt;
*[[Track Saw | Festool TS-55 REQ]] - Track Saw&lt;br /&gt;
*[[Router Table | JessEm Model: 09422]] - Router Table&lt;br /&gt;
*[[Jet JDP-17 Drill Press | JET JDP-17]] - Drill Press&lt;br /&gt;
*[[Belt &amp;amp; Disk Sander | JET JSG-96]] - Belt &amp;amp; Disk Sander&lt;br /&gt;
*[[Reciprocating Saw | Dewalt DCS387]] - Reciprocating Saw&lt;br /&gt;
*[[Oscillating MultiTool | Dewalt DCS354]] - Oscillating Multi Tool&lt;/div&gt;</summary>
		<author><name>Gfc</name></author>
	</entry>
	<entry>
		<id>https://sandbox.umd.edu/wiki/index.php?title=MajorToolsWoodworkingStudio&amp;diff=3390</id>
		<title>MajorToolsWoodworkingStudio</title>
		<link rel="alternate" type="text/html" href="https://sandbox.umd.edu/wiki/index.php?title=MajorToolsWoodworkingStudio&amp;diff=3390"/>
		<updated>2026-10-15T21:24:48Z</updated>

		<summary type="html">&lt;p&gt;Gfc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[Cordless Drill | Cordless Drill (Dewalt DCD771)]] - Cordless Drill&lt;br /&gt;
*[[Impact Driver | Dewalt DCF809]] - Impact Driver&lt;br /&gt;
*[[Rotary Tool | Dremel Model 4000]] - Rotary Tool&lt;br /&gt;
*[[Scroll Saw | Delta 40-694 ]] - 20&amp;quot; Variable Speed Scroll Saw&lt;br /&gt;
*[[Cordless Jigsaw | Dewalt DCS331]] - Cordless Jigsaw&lt;br /&gt;
*[[Orbital Sander | Craftsman Model: 11218]] - Corded Orbital Sander&lt;br /&gt;
*[[Router | Dewalt DWP611]] - Corded Handheld Router&lt;br /&gt;
*[[Miter Saw | Festool Kapex KS 120 EB ]] - Miter Saw&lt;br /&gt;
*[[Track Saw | Festool TS-55 REQ]] - Track Saw&lt;br /&gt;
*[[Router Table | JessEm Model: 09422]] - Router Table&lt;br /&gt;
*[[Jet JDP-17 Drill Press | JET JDP-17]] - Drill Press&lt;br /&gt;
*[[Belt &amp;amp; Disk Sander | JET JSG-96]] - Belt &amp;amp; Disk Sander&lt;br /&gt;
*[[Reciprocating Saw | Dewalt DCS387]] - Reciprocating Saw&lt;br /&gt;
*[[Oscillating MultiTool | Dewalt DCS354]] - Oscillating Multi Tool&lt;/div&gt;</summary>
		<author><name>Gfc</name></author>
	</entry>
	<entry>
		<id>https://sandbox.umd.edu/wiki/index.php?title=IRB_1238_VR&amp;diff=3389</id>
		<title>IRB 1238 VR</title>
		<link rel="alternate" type="text/html" href="https://sandbox.umd.edu/wiki/index.php?title=IRB_1238_VR&amp;diff=3389"/>
		<updated>2026-10-15T21:11:20Z</updated>

		<summary type="html">&lt;p&gt;Gfc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Rooms]]&lt;br /&gt;
=Sewing Studio=&lt;br /&gt;
__TOC__&lt;br /&gt;
The &#039;&#039;&#039;Sewing Studio&#039;&#039;&#039; is located in Iribe Room 1238.&lt;br /&gt;
Students can use the machines and tools in this studio to modify or make their own &lt;br /&gt;
fabric projects, including: clothing, puppets, cosplay/costumes, small home decor, &lt;br /&gt;
and more!                                             &lt;br /&gt;
&lt;br /&gt;
{{#widget:TestSmarty}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tools==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{#widget:SlidingGallery&lt;br /&gt;
|images=Dewalt_dcd771.jpg, Dewalt_dcf809.jpg, Jigsaw-DCS331.png, Dewalt_dwp611.jpg, Dewalt_dcs387.jpg, Dewalt_dcs354.jpg, Craftsman_11218.jpg, Dremel_4000.jpg, Festool_ts55.jpg, Jet-JDP17-drillpress.png, Festool_kapex_ks120.jpeg, Jessem_09422.jpg, S-l1600.jpg&lt;br /&gt;
&lt;br /&gt;
|links=Cordless_Drill, Impact_Driver, Cordless_Jigsaw, Router, Reciprocating_Saw, Reciprocating_Saw, Orbital_Sander, Rotary_Tool, Track_Saw, Jet_JDP-17_Drill_Press, Miter_Saw, Router_Table, Scroll_Saw&lt;br /&gt;
&lt;br /&gt;
|captions=Cordless Drill&amp;lt;br&amp;gt;(Dewalt), Impact Driver&amp;lt;br&amp;gt;(Dewalt DCF809), Cordless Jigsaw, Handheld Router&amp;lt;br&amp;gt;(Dewalt DWP611 Corded), Reciprocating Saw&amp;lt;br&amp;gt;(Dewalt DCS387 18v), Oscillating Multi Tool&amp;lt;br&amp;gt;(DeWalt DCS354 18v), Craftsman Orbital Sander&amp;lt;br&amp;gt;(corded), Rotary Tool&amp;lt;br&amp;gt;(Dremel 4000), Track Saw&amp;lt;br&amp;gt;(Festool TS-55 REQ), Drill Press&amp;lt;br&amp;gt;(Jet JDP-17), Compound Miter Saw&amp;lt;br&amp;gt;(Festool Kapex KS 120 EB), Router Table&amp;lt;br&amp;gt;(JessEm 09422), Variable Speed Scroll Saw&amp;lt;br&amp;gt;(Delta 40-694)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you are looking for something on this list, and you cannot find it in the room, tell a manager. &#039;&#039;&#039;It should not have left the room and may be missing.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{:MajorToolsSewingStudio}}&lt;br /&gt;
&lt;br /&gt;
== Take a look around the Sandbox Sewing Studio!==&lt;br /&gt;
&lt;br /&gt;
{{Virtual Tour|tourID=Sewing}}&lt;br /&gt;
&lt;br /&gt;
==Minor tools==&lt;br /&gt;
If you are looking for something on this list, and you cannot find it in the room, tell a manager. &#039;&#039;&#039;We can track it down and/or replace it.&#039;&#039;&#039;&lt;br /&gt;
{{:SewingMinorToolsList}}&lt;br /&gt;
==Consumables==&lt;br /&gt;
If you are looking for something on this list, and you cannot find it in the room, tell a manager. &#039;&#039;&#039;We likely have more stock in storage.&#039;&#039;&#039;&lt;br /&gt;
{{:SewingConsumablesList}}&lt;/div&gt;</summary>
		<author><name>Gfc</name></author>
	</entry>
	<entry>
		<id>https://sandbox.umd.edu/wiki/index.php?title=Widget:TestSmarty&amp;diff=3388</id>
		<title>Widget:TestSmarty</title>
		<link rel="alternate" type="text/html" href="https://sandbox.umd.edu/wiki/index.php?title=Widget:TestSmarty&amp;diff=3388"/>
		<updated>2026-10-15T21:10:55Z</updated>

		<summary type="html">&lt;p&gt;Gfc: Created page with &amp;quot;1 + 1 is equal to: &amp;lt;!-- {2 + 2} --&amp;gt;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;1 + 1 is equal to: &amp;lt;!-- {2 + 2} --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gfc</name></author>
	</entry>
	<entry>
		<id>https://sandbox.umd.edu/wiki/index.php?title=IRB_1238_VR&amp;diff=3387</id>
		<title>IRB 1238 VR</title>
		<link rel="alternate" type="text/html" href="https://sandbox.umd.edu/wiki/index.php?title=IRB_1238_VR&amp;diff=3387"/>
		<updated>2026-10-15T21:08:00Z</updated>

		<summary type="html">&lt;p&gt;Gfc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Rooms]]&lt;br /&gt;
=Sewing Studio=&lt;br /&gt;
__TOC__&lt;br /&gt;
The &#039;&#039;&#039;Sewing Studio&#039;&#039;&#039; is located in Iribe Room 1238.&lt;br /&gt;
Students can use the machines and tools in this studio to modify or make their own &lt;br /&gt;
fabric projects, including: clothing, puppets, cosplay/costumes, small home decor, &lt;br /&gt;
and more!                                             &lt;br /&gt;
==Tools==&lt;br /&gt;
&lt;br /&gt;
{{#widget:SlidingGallery&lt;br /&gt;
|images=Dewalt_dcd771.jpg, Dewalt_dcf809.jpg, Jigsaw-DCS331.png, Dewalt_dwp611.jpg, Dewalt_dcs387.jpg, Dewalt_dcs354.jpg, Craftsman_11218.jpg, Dremel_4000.jpg, Festool_ts55.jpg, Jet-JDP17-drillpress.png, Festool_kapex_ks120.jpeg, Jessem_09422.jpg, S-l1600.jpg&lt;br /&gt;
&lt;br /&gt;
|links=Cordless_Drill, Impact_Driver, Cordless_Jigsaw, Router, Reciprocating_Saw, Reciprocating_Saw, Orbital_Sander, Rotary_Tool, Track_Saw, Jet_JDP-17_Drill_Press, Miter_Saw, Router_Table, Scroll_Saw&lt;br /&gt;
&lt;br /&gt;
|captions=Cordless Drill&amp;lt;br&amp;gt;(Dewalt), Impact Driver&amp;lt;br&amp;gt;(Dewalt DCF809), Cordless Jigsaw, Handheld Router&amp;lt;br&amp;gt;(Dewalt DWP611 Corded), Reciprocating Saw&amp;lt;br&amp;gt;(Dewalt DCS387 18v), Oscillating Multi Tool&amp;lt;br&amp;gt;(DeWalt DCS354 18v), Craftsman Orbital Sander&amp;lt;br&amp;gt;(corded), Rotary Tool&amp;lt;br&amp;gt;(Dremel 4000), Track Saw&amp;lt;br&amp;gt;(Festool TS-55 REQ), Drill Press&amp;lt;br&amp;gt;(Jet JDP-17), Compound Miter Saw&amp;lt;br&amp;gt;(Festool Kapex KS 120 EB), Router Table&amp;lt;br&amp;gt;(JessEm 09422), Variable Speed Scroll Saw&amp;lt;br&amp;gt;(Delta 40-694)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you are looking for something on this list, and you cannot find it in the room, tell a manager. &#039;&#039;&#039;It should not have left the room and may be missing.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{:MajorToolsSewingStudio}}&lt;br /&gt;
&lt;br /&gt;
== Take a look around the Sandbox Sewing Studio!==&lt;br /&gt;
&lt;br /&gt;
{{Virtual Tour|tourID=Sewing}}&lt;br /&gt;
&lt;br /&gt;
==Minor tools==&lt;br /&gt;
If you are looking for something on this list, and you cannot find it in the room, tell a manager. &#039;&#039;&#039;We can track it down and/or replace it.&#039;&#039;&#039;&lt;br /&gt;
{{:SewingMinorToolsList}}&lt;br /&gt;
==Consumables==&lt;br /&gt;
If you are looking for something on this list, and you cannot find it in the room, tell a manager. &#039;&#039;&#039;We likely have more stock in storage.&#039;&#039;&#039;&lt;br /&gt;
{{:SewingConsumablesList}}&lt;/div&gt;</summary>
		<author><name>Gfc</name></author>
	</entry>
	<entry>
		<id>https://sandbox.umd.edu/wiki/index.php?title=IRB_1238_VR&amp;diff=3386</id>
		<title>IRB 1238 VR</title>
		<link rel="alternate" type="text/html" href="https://sandbox.umd.edu/wiki/index.php?title=IRB_1238_VR&amp;diff=3386"/>
		<updated>2026-10-15T21:07:06Z</updated>

		<summary type="html">&lt;p&gt;Gfc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Rooms]]&lt;br /&gt;
=Sewing Studio=&lt;br /&gt;
__TOC__&lt;br /&gt;
The &#039;&#039;&#039;Sewing Studio&#039;&#039;&#039; is located in Iribe Room 1238.&lt;br /&gt;
Students can use the machines and tools in this studio to modify or make their own &lt;br /&gt;
fabric projects, including: clothing, puppets, cosplay/costumes, small home decor, &lt;br /&gt;
and more!                                             &lt;br /&gt;
==Tools==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you are looking for something on this list, and you cannot find it in the room, tell a manager. &#039;&#039;&#039;It should not have left the room and may be missing.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{:MajorToolsSewingStudio}}&lt;br /&gt;
&lt;br /&gt;
== Take a look around the Sandbox Sewing Studio!==&lt;br /&gt;
&lt;br /&gt;
{{Virtual Tour|tourID=Sewing}}&lt;br /&gt;
&lt;br /&gt;
==Minor tools==&lt;br /&gt;
If you are looking for something on this list, and you cannot find it in the room, tell a manager. &#039;&#039;&#039;We can track it down and/or replace it.&#039;&#039;&#039;&lt;br /&gt;
{{:SewingMinorToolsList}}&lt;br /&gt;
==Consumables==&lt;br /&gt;
If you are looking for something on this list, and you cannot find it in the room, tell a manager. &#039;&#039;&#039;We likely have more stock in storage.&#039;&#039;&#039;&lt;br /&gt;
{{:SewingConsumablesList}}&lt;/div&gt;</summary>
		<author><name>Gfc</name></author>
	</entry>
	<entry>
		<id>https://sandbox.umd.edu/wiki/index.php?title=Widget:SlidingGallery&amp;diff=3385</id>
		<title>Widget:SlidingGallery</title>
		<link rel="alternate" type="text/html" href="https://sandbox.umd.edu/wiki/index.php?title=Widget:SlidingGallery&amp;diff=3385"/>
		<updated>2026-10-15T21:05:07Z</updated>

		<summary type="html">&lt;p&gt;Gfc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;style&amp;gt;&lt;br /&gt;
/* Layout containers matching your original specifications */&lt;br /&gt;
.gallery-outer { position: relative; height: 100%; }&lt;br /&gt;
.gallery-bg { position: relative; margin: 0 -1em; padding: 0; background-color: transparent; border: 1px none #ddd; height: 100%; }&lt;br /&gt;
.gallery-viewport { position: relative; margin: 0 auto; width: 742px; height: 300px; overflow: hidden; }&lt;br /&gt;
&lt;br /&gt;
/* Sliding engine (Starts sliding automatically) */&lt;br /&gt;
.wrapper {&lt;br /&gt;
  position: absolute;&lt;br /&gt;
  top: 0;&lt;br /&gt;
  left: 0;&lt;br /&gt;
  display: flex;&lt;br /&gt;
  gap: 15px;&lt;br /&gt;
  width: 5000px; &lt;br /&gt;
  animation: 60s credits linear infinite;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ⏸️ PAUSE ANIMATION ON HOVER */&lt;br /&gt;
.wrapper:hover {&lt;br /&gt;
  animation-play-state: paused;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-item {&lt;br /&gt;
  display: inline-block;&lt;br /&gt;
  text-align: center;&lt;br /&gt;
  width: 150px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-item img {&lt;br /&gt;
  width: 100px;  /* Match widths=100px */&lt;br /&gt;
  height: 200px; /* Match heights=200px */&lt;br /&gt;
  object-fit: contain;&lt;br /&gt;
  transition: transform 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 🔍 ENLARGE IMAGE ON HOVER */&lt;br /&gt;
.gallery-item img:hover {&lt;br /&gt;
  transform: scale(1.15);&lt;br /&gt;
  cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gallery-caption {&lt;br /&gt;
  font-size: 0.85em;&lt;br /&gt;
  color: #333;&lt;br /&gt;
  margin-top: 5px;&lt;br /&gt;
  line-height: 1.2;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes credits {&lt;br /&gt;
  0% { transform: translateX(0); }&lt;br /&gt;
  100% { transform: translateX(-2500px); }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;gallery-outer&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;gallery-bg&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;gallery-viewport&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;!-- The JavaScript loop will safely inject the layout directly into this wrapper --&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;wrapper&amp;quot; id=&amp;quot;js-gallery-wrapper&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
(function() {&lt;br /&gt;
  // Capture the raw parameters passed from the wiki page setup&lt;br /&gt;
  var rawImages = &amp;quot;&amp;lt;!-- {$images|escape:&#039;javascript&#039;} --&amp;gt;&amp;quot;;&lt;br /&gt;
  var rawLinks = &amp;quot;&amp;lt;!-- {$links|escape:&#039;javascript&#039;} --&amp;gt;&amp;quot;;&lt;br /&gt;
  var rawCaptions = &amp;quot;&amp;lt;!-- {$captions|escape:&#039;javascript&#039;} --&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  // Clean up the text data strings into manageable clean arrays&lt;br /&gt;
  var images = rawImages ? rawImages.split(&#039;,&#039;) : [];&lt;br /&gt;
  var links = rawLinks ? rawLinks.split(&#039;,&#039;) : [];&lt;br /&gt;
  var captions = rawCaptions ? rawCaptions.split(&#039;,&#039;) : [];&lt;br /&gt;
&lt;br /&gt;
  var htmlOutput = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
  // Generate the gallery rows loop using clean Javascript&lt;br /&gt;
  for (var i = 0; i &amp;lt; images.length; i++) {&lt;br /&gt;
    if (!images[i].trim()) continue;&lt;br /&gt;
&lt;br /&gt;
    var cleanImg = images[i].trim().replace(/ /g, &#039;_&#039;);&lt;br /&gt;
    var cleanLink = links[i] ? links[i].trim().replace(/ /g, &#039;_&#039;) : &#039;&#039;;&lt;br /&gt;
    var caption = captions[i] ? captions[i].trim() : &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
    htmlOutput += &#039;&amp;lt;div class=&amp;quot;gallery-item&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
    htmlOutput += &#039;  &amp;lt;a href=&amp;quot;/wiki/&#039; + encodeURIComponent(cleanLink) + &#039;&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
    htmlOutput += &#039;    &amp;lt;img src=&amp;quot;/images/&#039; + encodeURIComponent(cleanImg) + &#039;&amp;quot; alt=&amp;quot;&#039; + caption + &#039;&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
    htmlOutput += &#039;  &amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
    htmlOutput += &#039;  &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;&#039; + caption + &#039;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
    htmlOutput += &#039;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Inject the completed slider directly into the viewport container&lt;br /&gt;
  document.getElementById(&#039;js-gallery-wrapper&#039;).innerHTML = htmlOutput;&lt;br /&gt;
})();&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gfc</name></author>
	</entry>
</feed>