<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://makerspace.cc/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Winhallk</id>
	<title>Makerpedia - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://makerspace.cc/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Winhallk"/>
	<link rel="alternate" type="text/html" href="https://makerspace.cc/Special:Contributions/Winhallk"/>
	<updated>2026-04-20T04:26:42Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.7</generator>
	<entry>
		<id>https://makerspace.cc/wiki/index.php?title=Airbrush&amp;diff=9108</id>
		<title>Airbrush</title>
		<link rel="alternate" type="text/html" href="https://makerspace.cc/wiki/index.php?title=Airbrush&amp;diff=9108"/>
		<updated>2025-03-14T16:28:47Z</updated>

		<summary type="html">&lt;p&gt;Winhallk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Spaz Stix Airbrush.jpg|alt=A photo of the Spaz Stix airbrush in the Makerspace.|thumb|A photo of the Spaz Stix airbrush in the Makerspace.]]&lt;br /&gt;
The Spaz Stix airbrush is located in the Makerspace.&lt;br /&gt;
[[Category:Tools]]&lt;br /&gt;
[[Category:Makerspace Tools]]&lt;/div&gt;</summary>
		<author><name>Winhallk</name></author>
	</entry>
	<entry>
		<id>https://makerspace.cc/wiki/index.php?title=Airbrush&amp;diff=9107</id>
		<title>Airbrush</title>
		<link rel="alternate" type="text/html" href="https://makerspace.cc/wiki/index.php?title=Airbrush&amp;diff=9107"/>
		<updated>2025-03-14T16:27:48Z</updated>

		<summary type="html">&lt;p&gt;Winhallk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Spaz Stix Airbrush.jpg|alt=A photo of the Spaz Stix airbrush in the Makerspace.|thumb|A photo of the Spaz Stix airbrush in the Makerspace.]]&lt;br /&gt;
The Spaz Stix airbrush is located in the Makerspace.&lt;br /&gt;
[[Category:Tools]]&lt;/div&gt;</summary>
		<author><name>Winhallk</name></author>
	</entry>
	<entry>
		<id>https://makerspace.cc/wiki/index.php?title=Airbrush&amp;diff=9106</id>
		<title>Airbrush</title>
		<link rel="alternate" type="text/html" href="https://makerspace.cc/wiki/index.php?title=Airbrush&amp;diff=9106"/>
		<updated>2025-03-14T16:19:21Z</updated>

		<summary type="html">&lt;p&gt;Winhallk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Spaz Stix Airbrush.jpg|alt=A photo of the Spaz Stix airbrush in the Makerspace.|thumb|A photo of the Spaz Stix airbrush in the Makerspace.]]&lt;br /&gt;
The Spaz Stix airbrush is located in the Makerspace.&lt;br /&gt;
[[Category:Tools]]&lt;br /&gt;
[[Category:Makerspace Tools]]&lt;/div&gt;</summary>
		<author><name>Winhallk</name></author>
	</entry>
	<entry>
		<id>https://makerspace.cc/wiki/index.php?title=Airbrush&amp;diff=9105</id>
		<title>Airbrush</title>
		<link rel="alternate" type="text/html" href="https://makerspace.cc/wiki/index.php?title=Airbrush&amp;diff=9105"/>
		<updated>2025-03-14T16:17:38Z</updated>

		<summary type="html">&lt;p&gt;Winhallk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Spaz Stix Airbrush.jpg|alt=A photo of the Spaz Stix airbrush in the Makerspace.|thumb|A photo of the Spaz Stix airbrush in the Makerspace.]]&lt;br /&gt;
The Spaz Stix airbrush is located in the Makerspace.&lt;br /&gt;
[[Category:Tools]]&lt;/div&gt;</summary>
		<author><name>Winhallk</name></author>
	</entry>
	<entry>
		<id>https://makerspace.cc/wiki/index.php?title=Airbrush&amp;diff=9104</id>
		<title>Airbrush</title>
		<link rel="alternate" type="text/html" href="https://makerspace.cc/wiki/index.php?title=Airbrush&amp;diff=9104"/>
		<updated>2025-03-14T16:08:35Z</updated>

		<summary type="html">&lt;p&gt;Winhallk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Spaz Stix Airbrush.jpg|alt=A photo of the Spaz Stix airbrush in the Makerspace.|thumb|A photo of the Spaz Stix airbrush in the Makerspace.]]&lt;br /&gt;
The Spaz Stix airbrush is located in the Makerspace.&lt;/div&gt;</summary>
		<author><name>Winhallk</name></author>
	</entry>
	<entry>
		<id>https://makerspace.cc/wiki/index.php?title=Impact_Driver&amp;diff=9103</id>
		<title>Impact Driver</title>
		<link rel="alternate" type="text/html" href="https://makerspace.cc/wiki/index.php?title=Impact_Driver&amp;diff=9103"/>
		<updated>2025-03-12T11:40:18Z</updated>

		<summary type="html">&lt;p&gt;Winhallk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:DeWalt 12V Brushless Impact Driver.jpg|alt=A photo of the DeWalt 12V brushless impact driver in the Makerspace.|thumb|A photo of the DeWalt 12V brushless impact driver in the Makerspace.]]&lt;br /&gt;
The DeWalt 12 volt brushless impact driver is located in the Makerspace.&lt;br /&gt;
[[Category:Tools]]&lt;br /&gt;
[[Category:Makerspace Tools]]&lt;/div&gt;</summary>
		<author><name>Winhallk</name></author>
	</entry>
	<entry>
		<id>https://makerspace.cc/wiki/index.php?title=File:DeWalt_12V_Brushless_Impact_Driver.jpg&amp;diff=9102</id>
		<title>File:DeWalt 12V Brushless Impact Driver.jpg</title>
		<link rel="alternate" type="text/html" href="https://makerspace.cc/wiki/index.php?title=File:DeWalt_12V_Brushless_Impact_Driver.jpg&amp;diff=9102"/>
		<updated>2025-03-12T11:40:06Z</updated>

		<summary type="html">&lt;p&gt;Winhallk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A photo of the DeWalt 12V brushless impact driver in the Makerspace.&lt;/div&gt;</summary>
		<author><name>Winhallk</name></author>
	</entry>
	<entry>
		<id>https://makerspace.cc/wiki/index.php?title=Impact_Driver&amp;diff=9101</id>
		<title>Impact Driver</title>
		<link rel="alternate" type="text/html" href="https://makerspace.cc/wiki/index.php?title=Impact_Driver&amp;diff=9101"/>
		<updated>2025-03-12T11:38:37Z</updated>

		<summary type="html">&lt;p&gt;Winhallk: Created page with &amp;quot;The DeWalt 12 volt brushless impact driver is located in the Makerspace.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The DeWalt 12 volt brushless impact driver is located in the Makerspace.&lt;/div&gt;</summary>
		<author><name>Winhallk</name></author>
	</entry>
	<entry>
		<id>https://makerspace.cc/wiki/index.php?title=Drill&amp;diff=9100</id>
		<title>Drill</title>
		<link rel="alternate" type="text/html" href="https://makerspace.cc/wiki/index.php?title=Drill&amp;diff=9100"/>
		<updated>2025-03-12T11:38:02Z</updated>

		<summary type="html">&lt;p&gt;Winhallk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:DeWalt 12V Brushless Drill.jpg|alt=A photo of the DeWalt 12V brushless drill in the Makerspace.|thumb|A photo of the DeWalt 12V brushless drill in the Makerspace.]]&lt;br /&gt;
The DeWalt 12 volt brushless drill is located in the Makerspace.&lt;br /&gt;
[[Category:Tools]]&lt;br /&gt;
[[Category:Makerspace Tools]]&lt;/div&gt;</summary>
		<author><name>Winhallk</name></author>
	</entry>
	<entry>
		<id>https://makerspace.cc/wiki/index.php?title=File:DeWalt_12V_Brushless_Drill.jpg&amp;diff=9099</id>
		<title>File:DeWalt 12V Brushless Drill.jpg</title>
		<link rel="alternate" type="text/html" href="https://makerspace.cc/wiki/index.php?title=File:DeWalt_12V_Brushless_Drill.jpg&amp;diff=9099"/>
		<updated>2025-03-12T11:37:42Z</updated>

		<summary type="html">&lt;p&gt;Winhallk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A photo of the DeWalt 12V brushless drill in the Makerspace.&lt;/div&gt;</summary>
		<author><name>Winhallk</name></author>
	</entry>
	<entry>
		<id>https://makerspace.cc/wiki/index.php?title=Drill&amp;diff=9098</id>
		<title>Drill</title>
		<link rel="alternate" type="text/html" href="https://makerspace.cc/wiki/index.php?title=Drill&amp;diff=9098"/>
		<updated>2025-03-12T11:35:33Z</updated>

		<summary type="html">&lt;p&gt;Winhallk: Created page with &amp;quot;The DeWalt 12 volt brushless drill is located in the Makerspace.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The DeWalt 12 volt brushless drill is located in the Makerspace.&lt;/div&gt;</summary>
		<author><name>Winhallk</name></author>
	</entry>
	<entry>
		<id>https://makerspace.cc/wiki/index.php?title=Arbor_Press&amp;diff=9097</id>
		<title>Arbor Press</title>
		<link rel="alternate" type="text/html" href="https://makerspace.cc/wiki/index.php?title=Arbor_Press&amp;diff=9097"/>
		<updated>2025-03-12T11:25:21Z</updated>

		<summary type="html">&lt;p&gt;Winhallk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Arbor Press.jpg|alt=A photo of the arbor press in the Instrument Shop.|thumb|A photo of the arbor press in the Instrument Shop.]]&lt;br /&gt;
The arbor press is located in the Instrument Shop.&lt;br /&gt;
[[Category:Tools]]&lt;br /&gt;
[[Category:Instrument Shop Tools]]&lt;/div&gt;</summary>
		<author><name>Winhallk</name></author>
	</entry>
	<entry>
		<id>https://makerspace.cc/wiki/index.php?title=File:Arbor_Press.jpg&amp;diff=9096</id>
		<title>File:Arbor Press.jpg</title>
		<link rel="alternate" type="text/html" href="https://makerspace.cc/wiki/index.php?title=File:Arbor_Press.jpg&amp;diff=9096"/>
		<updated>2025-03-12T11:25:12Z</updated>

		<summary type="html">&lt;p&gt;Winhallk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A photo of the arbor press in the Instrument Shop.&lt;/div&gt;</summary>
		<author><name>Winhallk</name></author>
	</entry>
	<entry>
		<id>https://makerspace.cc/wiki/index.php?title=Arbor_Press&amp;diff=9095</id>
		<title>Arbor Press</title>
		<link rel="alternate" type="text/html" href="https://makerspace.cc/wiki/index.php?title=Arbor_Press&amp;diff=9095"/>
		<updated>2025-03-12T11:24:21Z</updated>

		<summary type="html">&lt;p&gt;Winhallk: Created page with &amp;quot;The arbor press is located in the Instrument Shop.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The arbor press is located in the Instrument Shop.&lt;/div&gt;</summary>
		<author><name>Winhallk</name></author>
	</entry>
	<entry>
		<id>https://makerspace.cc/wiki/index.php?title=Punch_Press&amp;diff=9094</id>
		<title>Punch Press</title>
		<link rel="alternate" type="text/html" href="https://makerspace.cc/wiki/index.php?title=Punch_Press&amp;diff=9094"/>
		<updated>2025-03-12T11:23:20Z</updated>

		<summary type="html">&lt;p&gt;Winhallk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Punch Press.jpg|alt=A photo of the punch press in the Instrument Shop.|thumb|A photo of the punch press in the Instrument Shop.]]&lt;br /&gt;
The punch press is located in the Instrument Shop.&lt;br /&gt;
[[Category:Tools]]&lt;br /&gt;
[[Category:Instrument Shop Tools]]&lt;/div&gt;</summary>
		<author><name>Winhallk</name></author>
	</entry>
	<entry>
		<id>https://makerspace.cc/wiki/index.php?title=File:Punch_Press.jpg&amp;diff=9093</id>
		<title>File:Punch Press.jpg</title>
		<link rel="alternate" type="text/html" href="https://makerspace.cc/wiki/index.php?title=File:Punch_Press.jpg&amp;diff=9093"/>
		<updated>2025-03-12T11:23:05Z</updated>

		<summary type="html">&lt;p&gt;Winhallk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A photo of the punch press in the Instrument Shop.&lt;/div&gt;</summary>
		<author><name>Winhallk</name></author>
	</entry>
	<entry>
		<id>https://makerspace.cc/wiki/index.php?title=Punch_Press&amp;diff=9092</id>
		<title>Punch Press</title>
		<link rel="alternate" type="text/html" href="https://makerspace.cc/wiki/index.php?title=Punch_Press&amp;diff=9092"/>
		<updated>2025-03-12T11:21:23Z</updated>

		<summary type="html">&lt;p&gt;Winhallk: Created page with &amp;quot;The punch press is located in the Instrument Shop.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The punch press is located in the Instrument Shop.&lt;/div&gt;</summary>
		<author><name>Winhallk</name></author>
	</entry>
	<entry>
		<id>https://makerspace.cc/wiki/index.php?title=MediaWiki:Mainpage&amp;diff=9080</id>
		<title>MediaWiki:Mainpage</title>
		<link rel="alternate" type="text/html" href="https://makerspace.cc/wiki/index.php?title=MediaWiki:Mainpage&amp;diff=9080"/>
		<updated>2025-03-10T21:22:35Z</updated>

		<summary type="html">&lt;p&gt;Winhallk: update new homepage name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Home&lt;/div&gt;</summary>
		<author><name>Winhallk</name></author>
	</entry>
	<entry>
		<id>https://makerspace.cc/wiki/index.php?title=Home&amp;diff=9077</id>
		<title>Home</title>
		<link rel="alternate" type="text/html" href="https://makerspace.cc/wiki/index.php?title=Home&amp;diff=9077"/>
		<updated>2025-03-10T18:53:34Z</updated>

		<summary type="html">&lt;p&gt;Winhallk: update links in home page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:&amp;lt;span style=&amp;quot;display: block; text-align: center; font-weight: bold;&amp;quot;&amp;gt;Welcome to the Carleton College Makerpedia!&amp;lt;/span&amp;gt;}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: left;&amp;quot;&amp;gt;&lt;br /&gt;
This is the knowledge base for the Class of 1969 Makerspace and Instrument Shop. You can find information about all the tools available in our spaces, as well as project ideas and tutorials. Our mission is to provide all members of the Carleton community opportunities to engage in hands-on, experiential learning in a broadly interdisciplinary and collaborative space. We invite everyone to use the tools, resources, and trainings we provide to nurture their creativity, explore new ways of thinking, and create sustainable, empathetic solutions to challenges at all scales.&lt;br /&gt;
&lt;br /&gt;
Hope you can stop by and make sure to follow the &#039;&#039;&#039;[https://www.instagram.com/carleton_makers/ Makerspace Instagram]&#039;&#039;&#039; to see what we are up-to and to stay updated on upcoming events!  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div class=&amp;quot;carousel-heading&amp;quot;&amp;gt;&#039;&#039;&amp;lt;big&amp;gt;New Here? Try These Projects!&amp;lt;/big&amp;gt;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- This is where the javascript derived carousel items are injected --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;carousel-container&amp;quot;&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; gap: 20px; justify-content: center; flex-wrap: wrap;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div style=&amp;quot;background-color: #d3ddf0; padding: 10px 20px; width: 350px; height: 130px; border-radius: 10px;box-shadow: 10px 10px 20px rgba(0, 0, 0, 0.2);&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;Looking For More Projects?&amp;lt;/strong&amp;gt;&amp;lt;p&amp;gt;In [[Project_Tutorials|Project Tutorials]] you can see creations from other students, find tutorials, and so much more.&amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div style=&amp;quot;background-color: #d3ddf0; padding: 10px 20px; width: 350px; height: 130px; border-radius: 10px;box-shadow: 10px 10px 20px rgba(0, 0, 0, 0.2);&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;Have A Project To Submit?&amp;lt;/strong&amp;gt;&amp;lt;p&amp;gt;Use [https://docs.google.com/forms/d/e/1FAIpQLSeSH7LlyvSWwDBh5RSR8YahUMdCFJPdScK_uNVpgzkg3pIwPg/viewform this form] to submit a project to the Project Tutorials.&amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Spaces On Campus&#039;&#039;&#039; ==&lt;br /&gt;
The Makerspace is located in the basement of [https://www.carleton.edu/map/?id=2017#!m/622428?share Anderson Hall].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pc-map&amp;quot; style=&amp;quot;display: flex; justify-content: center; align-items: center; text-align: center;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;imagemap&amp;gt;Image:Rereredo.png| Interactive Map&lt;br /&gt;
      rect 200 271 12 113 [[Spaces#Class_Of_1969_Makerspace|Makerspace]]&lt;br /&gt;
      rect 14 346 198 479 [[Spaces#Repair_Lair|Repair Lair]]&lt;br /&gt;
      rect 795 81 990 213 [[Spaces#Machine_Shop|Machine Shop]]&lt;br /&gt;
      rect 793 257 989 376 [[Spaces#Wood_Shop|Wood Shop]]&lt;br /&gt;
      rect 786 418 997 547 [[Spaces#Instrument_Shop|Instrument Shop]]&lt;br /&gt;
      poly 289 154 289 197 299 199 296 208 288 211 288 216 375 216 376 203 383 203 386 209 390 214 395 209 397 214 437 214 436 154 [[Spaces#Class_Of_1969_Makerspace|Makerspace]]&lt;br /&gt;
      poly 331 243 330 370 325 361 319 363 315 371 221 371 221 397 265 398 266 410 273 406 278 397 329 394 335 405 342 410 347 414 348 430 386 433 387 413 397 410 401 403 403 396 407 390 406 373 368 371 367 243 357 247 352 254 345 248 339 246 [[Spaces#Repair_Lair|Repair Lair]]&lt;br /&gt;
      poly 651 114 651 215 627 218 627 284 579 286 580 311 622 313 625 371 644 372 646 384 652 382 657 376 667 382 667 373 713 371 716 285 693 283 690 275 683 273 679 283 677 215 686 214 685 114 675 114 675 122 672 127 665 127 660 114 [[Spaces#Machine_Shop|Machine Shop]]&lt;br /&gt;
      poly 624 373 623 464 646 464 649 472 658 479 660 465 713 463 712 374 666 374 667 381 660 381 646 385 645 372 [[Spaces#Wood_Shop|Wood Shop]]&lt;br /&gt;
      poly 621 438 543 436 546 468 550 474 556 480 550 496 576 495 578 555 716 556 716 465 661 465 660 478 646 465 624 466 621 454 621 449 621 444 [[Spaces#Instrument_Shop|Instrument Shop]]&lt;br /&gt;
  &amp;lt;/imagemap&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mobile-map&amp;quot; style=&amp;quot;display: flex; justify-content: center; align-items: center; text-align: center;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;imagemap&amp;gt;Image:Mapfff.png| Interactive Map&lt;br /&gt;
      poly 85 155 83 197 96 200 91 208 82 209 84 215 173 217 174 204 180 205 184 212 192 208 195 217 233 216 231 155 [[Spaces#Class_Of_1969_Makerspace|Makerspace]]&lt;br /&gt;
      poly 127 243 127 370 122 361 113 366 110 373 17 371 16 397 61 398 61 409 69 407 75 397 124 396 128 404 133 409 141 414 143 431 185 431 184 414 191 412 198 405 202 396 204 373 165 370 163 246 155 247 149 254 142 248 133 244 [[Spaces#Repair_Lair|Repair Lair]]&lt;br /&gt;
      poly 448 115 446 214 421 216 423 281 374 286 375 310 420 312 421 370 439 371 442 382 449 382 452 377 461 383 462 373 510 370 511 283 488 281 479 271 478 281 472 282 472 215 478 213 481 115 471 113 468 126 459 123 457 114 [[Spaces#Machine_Shop|Machine Shop]]&lt;br /&gt;
      poly 420 372 420 464 442 464 446 472 454 477 456 464 512 465 510 372 463 373 464 383 456 379 448 385 441 385 440 371 [[Spaces#Wood_Shop|Wood Shop]]&lt;br /&gt;
      poly 339 437 341 466 345 473 353 481 346 494 372 495 373 555 512 555 511 465 458 466 454 478 446 474 442 466 421 464 416 439 [[Spaces#Instrument_Shop|Instrument Shop]]&lt;br /&gt;
  &amp;lt;/imagemap&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Winhallk</name></author>
	</entry>
	<entry>
		<id>https://makerspace.cc/wiki/index.php?title=Spaces&amp;diff=9076</id>
		<title>Spaces</title>
		<link rel="alternate" type="text/html" href="https://makerspace.cc/wiki/index.php?title=Spaces&amp;diff=9076"/>
		<updated>2025-03-10T18:50:11Z</updated>

		<summary type="html">&lt;p&gt;Winhallk: update links in badges&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:&amp;lt;span style=&amp;quot;display: block; text-align: center; font-weight: bold&amp;quot;&amp;gt;Makerspace Locations&amp;lt;/span&amp;gt;}}&lt;br /&gt;
Are you hoping to make something on campus? Here&#039;s a listing of all the places on campus that can help you out! All Makerspace locations are in the basement of [https://www.carleton.edu/map/?id=2017#!m/622428?share Anderson Hall].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pc-map&amp;quot; style=&amp;quot;display: flex; justify-content: center; align-items: center; text-align: center;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;imagemap&amp;gt;Image:Mapff.png| Interactive Map&lt;br /&gt;
      rect 200 271 12 113 [[Spaces#Class_Of_1969_Makerspace|Makerspace]]&lt;br /&gt;
      rect 14 346 198 479 [[Spaces#Repair_Lair|Repair Lair]]&lt;br /&gt;
      rect 795 81 990 213 [[Spaces#Machine_Shop|Machine Shop]]&lt;br /&gt;
      rect 793 257 989 376 [[Spaces#Wood_Shop|Wood Shop]]&lt;br /&gt;
      rect 786 418 997 547 [[Spaces#Instrument_Shop|Instrument Shop]]&lt;br /&gt;
      poly 289 154 289 197 299 199 296 208 288 211 288 216 375 216 376 203 383 203 386 209 390 214 395 209 397 214 437 214 436 154 [[Spaces#Class_Of_1969_Makerspace|Makerspace]]&lt;br /&gt;
      poly 331 243 330 370 325 361 319 363 315 371 221 371 221 397 265 398 266 410 273 406 278 397 329 394 335 405 342 410 347 414 348 430 386 433 387 413 397 410 401 403 403 396 407 390 406 373 368 371 367 243 357 247 352 254 345 248 339 246 [[Spaces#Repair_Lair|Repair Lair]]&lt;br /&gt;
      poly 651 114 651 215 627 218 627 284 579 286 580 311 622 313 625 371 644 372 646 384 652 382 657 376 667 382 667 373 713 371 716 285 693 283 690 275 683 273 679 283 677 215 686 214 685 114 675 114 675 122 672 127 665 127 660 114 [[Spaces#Machine_Shop|Machine Shop]]&lt;br /&gt;
      poly 624 373 623 464 646 464 649 472 658 479 660 465 713 463 712 374 666 374 667 381 660 381 646 385 645 372 [[Spaces#Wood_Shop|Wood Shop]]&lt;br /&gt;
      poly 621 438 543 436 546 468 550 474 556 480 550 496 576 495 578 555 716 556 716 465 661 465 660 478 646 465 624 466 621 454 621 449 621 444 [[Spaces#Instrument_Shop|Instrument Shop]]&lt;br /&gt;
  &amp;lt;/imagemap&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mobile-map&amp;quot; style=&amp;quot;display: flex; justify-content: center; align-items: center; text-align: center;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;imagemap&amp;gt;Image:Mapfff.png| Interactive Map&lt;br /&gt;
      poly 85 155 83 197 96 200 91 208 82 209 84 215 173 217 174 204 180 205 184 212 192 208 195 217 233 216 231 155 [[Spaces#Class_Of_1969_Makerspace|Makerspace]]&lt;br /&gt;
      poly 127 243 127 370 122 361 113 366 110 373 17 371 16 397 61 398 61 409 69 407 75 397 124 396 128 404 133 409 141 414 143 431 185 431 184 414 191 412 198 405 202 396 204 373 165 370 163 246 155 247 149 254 142 248 133 244 [[Spaces#Repair_Lair|Repair Lair]]&lt;br /&gt;
      poly 448 115 446 214 421 216 423 281 374 286 375 310 420 312 421 370 439 371 442 382 449 382 452 377 461 383 462 373 510 370 511 283 488 281 479 271 478 281 472 282 472 215 478 213 481 115 471 113 468 126 459 123 457 114 [[Spaces#Machine_Shop|Machine Shop]]&lt;br /&gt;
      poly 420 372 420 464 442 464 446 472 454 477 456 464 512 465 510 372 463 373 464 383 456 379 448 385 441 385 440 371 [[Spaces#Wood_Shop|Wood Shop]]&lt;br /&gt;
      poly 339 437 341 466 345 473 353 481 346 494 372 495 373 555 512 555 511 465 458 466 454 478 446 474 442 466 421 464 416 439 [[Spaces#Instrument_Shop|Instrument Shop]]&lt;br /&gt;
  &amp;lt;/imagemap&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Class Of 1969 Makerspace&#039;&#039;&#039; ==&lt;br /&gt;
[[File:PXL 20230710 132906251.jpg|alt=A view of the inside of the  Class 1969 Makerspace|thumb]]&lt;br /&gt;
Central hub for all making on the Carleton College campus. This is the central hub for your making needs on campus. Have an idea and don&#039;t know where to start? Stop in and we&#039;ll help get you started! Want to learn a skill, but don&#039;t have a project in mind? We can help you with a variety of kits and brainstorming tools!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Anderson Hall 028 (Basement)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hours:&#039;&#039;&#039; Daily, 1-6PM&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tools&#039;&#039;&#039;: &amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://cs400w25eawiki.mathcs.carleton.edu/wiki/index.php?title=Tools&amp;amp;filter=Makerspace%20Tools Makerspace Tools]&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Airbrushing badge small.png|Airbrushing|alt=Green &amp;quot;airbrushing&amp;quot; icon|frameless|link={{fullurl:Project_Tutorials|filter=Fabrication}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Button badge small.png|Button Pressing|alt=Blue &amp;quot;button pressing&amp;quot; icon|frameless|link={{fullurl:Project_Tutorials|filter=Crafts}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Cassette badge small.png|Cassette Making|alt=Yellow &amp;quot;cassette making icon&amp;quot;|frameless|link={{fullurl:Project_Tutorials|filter=Crafts}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Crafting badge_small.png|Crafting|alt=Brown &amp;quot;crafting&amp;quot; icon|frameless|link={{fullurl:Project_Tutorials|filter=Crafts}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Graphic badge small.png|Graphic Design|alt=Indigo &amp;quot;graphic design&amp;quot; icon|frameless|link={{fullurl:Project_Tutorials|filter=Design}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Handsewing badge small.png|Hand Sewing|alt=Purple &amp;quot;handsewing&amp;quot; icon|frameless|link={{fullurl:Project_Tutorials|filter=Textiles}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Laser badge small.png|Laser Cutting|alt=Gray &amp;quot;laser cutting&amp;quot; icon|frameless|link={{fullurl:Project_Tutorials|filter=CNC-Laser}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Modeling badge small.png|3D Modeling|alt=Yellow &amp;quot;3d modeling&amp;quot; icon|frameless|link={{fullurl:Project_Tutorials|filter=Design}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Printing badge small.png|3D Printing|alt=Purple &amp;quot;3d printing&amp;quot; icon|frameless|link={{fullurl:Project_Tutorials|filter=Fabrication}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Programming badge small.png|Programming|alt=Green &amp;quot;programming&amp;quot; icon|frameless|link={{fullurl:Project_Tutorials|filter=Design}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Soldering badge small.png|Soldering|alt=Orange &amp;quot;soldering&amp;quot; icon|frameless|link={{fullurl:Project_Tutorials|filter=Metalworking}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Technical badge small.png|Technical Design|alt=Green &amp;quot;technical design&amp;quot; icon|frameless|link={{fullurl:Project_Tutorials|filter=Design}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Textile badge small.png|Textiles|alt=Green &amp;quot;textiles&amp;quot; icon|frameless|link={{fullurl:Project_Tutorials|filter=Textiles}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Repair Lair&#039;&#039;&#039; ==&lt;br /&gt;
[[File:Final repairlair.jpg|thumb]]&lt;br /&gt;
The Makerspace Repair Lair is located in the hallway across from the Makerspace. It is open after hours. It contains the Bike Repair cart, a sewing machine, scrap fabric, and many reusable treasures sourced from around campus.    &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Anderson Hall 029 (Basement)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hours:&#039;&#039;&#039; Anytime!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tools&#039;&#039;&#039;: &amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://cs400w25eawiki.mathcs.carleton.edu/wiki/index.php?title=Tools&amp;amp;filter=Repair%20Lair%20Tools Repair Lair Tools]&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Crafting_badge_small.png|Crafting|alt=Brown &amp;quot;Crafting&amp;quot; icon|frameless|link={{fullurl:Project_Tutorials|filter=Crafts}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Handsewing badge small.png|Hand Sewing|alt=Purple &amp;quot;handsewing&amp;quot; icon|frameless|link={{fullurl:Project_Tutorials|filter=Textiles}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Textile badge small.png|Textiles|alt=Green &amp;quot;textiles&amp;quot; icon|frameless|link={{fullurl:Project_Tutorials|filter=Textiles}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Wood Shop&#039;&#039;&#039; ==&lt;br /&gt;
[[File:Ms woodshop.jpg|alt=A view of the inside of the Woodshop|thumb]]&lt;br /&gt;
The Makerspace Wood Shop is a general purpose carpentry shop available for general student use. We have a limited supply of materials available to for use, after filing out a project proposal. The space contains a variety of saws (table, panel, band, battery, miller), drill presses, jointers, nail guns, and sanders.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Anderson Hall 037 (Basement)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hours:&#039;&#039;&#039; Daily, 1-6PM&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tools&#039;&#039;&#039;: &amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://cs400w25eawiki.mathcs.carleton.edu/wiki/index.php?title=Tools&amp;amp;filter=Wood%20Shop%20Tools Wood Shop Tools]&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Machining badge small.png|Machining|alt=Pink &amp;quot;machining&amp;quot; icon|frameless|link={{fullurl:Project_Tutorials|filter=CNC-Laser}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Modeling badge small.png|3D Modeling|alt=Yellow &amp;quot;3d modeling&amp;quot; icon|frameless|link={{fullurl:Project_Tutorials|filter=Design}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Technical badge small.png|Technical Design|alt=Green &amp;quot;technical design&amp;quot; icon|frameless|link={{fullurl:Project_Tutorials|filter=Design}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Woodworking badge small.png|Woodworking|alt=Blue &amp;quot;woodworking&amp;quot; icon|frameless|link={{fullurl:Project_Tutorials|filter=Fabrication}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Instrument Shop&#039;&#039;&#039; ==&lt;br /&gt;
[[File:Ms instrumentshop.jpg|alt=A view of the inside of the Instrument Shop|thumb]]&lt;br /&gt;
This is the Scientific Instrument production shop for Carleton College. This shop contains all of the higher precision tools used to make apparatus for the STEM department research labs. This space also contains a student-accessible welding studio, CNC plasma cutter, sheet metal sheer, and press brake, as well as a dermestid beetle colony.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Anderson Hall 049 (Basement)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hours:&#039;&#039;&#039; Daily, 1-6PM&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tools&#039;&#039;&#039;: &amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://cs400w25eawiki.mathcs.carleton.edu/wiki/index.php?title=Tools&amp;amp;filter=Instrument%20Shop%20Tools Instrument Shop Tools]&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Machining badge small.png|Machining|alt=Pink &amp;quot;machining&amp;quot; icon|frameless|link={{fullurl:Project_Tutorials|filter=CNC-Laser}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Modeling badge small.png|3D Modeling|alt=Yellow &amp;quot;3d modeling&amp;quot; icon|frameless|link={{fullurl:Project_Tutorials|filter=Design}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Technical badge small.png|Technical Design|alt=Green &amp;quot;technical design&amp;quot; icon|frameless|link={{fullurl:Project_Tutorials|filter=Design}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Welding badge small.png|Welding|alt=Indigo &amp;quot;welding&amp;quot; icon|frameless|link={{fullurl:Project_Tutorials|filter=Metalworking}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Machine Shop&#039;&#039;&#039; ==&lt;br /&gt;
[[File:PXL 20230710 133016630.jpg|alt=A view of the inside of the Machine Shop|thumb]]&lt;br /&gt;
General purpose machine shop for student use. The Build Spot Student Machine Shop has a full complement of precision machining equipment suitable for working with a variety of metals and plastics.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Anderson Hall 039 (Basement)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hours:&#039;&#039;&#039; Daily, 1-6PM&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tools&#039;&#039;&#039;: &amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://cs400w25eawiki.mathcs.carleton.edu/wiki/index.php?title=Tools&amp;amp;filter=Machine%20Shop%20Tools Machine Shop Tools]&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Laser badge small.png|Laser Cutting|alt=Gray &amp;quot;laser cutting&amp;quot; icon|frameless|link={{fullurl:Project_Tutorials|filter=CNC-Laser}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Machining badge small.png|Machining|alt=Pink &amp;quot;machining&amp;quot; icon|frameless|link={{fullurl:Project_Tutorials|filter=CNC-Laser}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Technical badge small.png|Technical Design|alt=Green &amp;quot;technical design&amp;quot; icon|frameless|link={{fullurl:Project_Tutorials|filter=Design}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;/div&gt;</summary>
		<author><name>Winhallk</name></author>
	</entry>
	<entry>
		<id>https://makerspace.cc/wiki/index.php?title=Spaces&amp;diff=9074</id>
		<title>Spaces</title>
		<link rel="alternate" type="text/html" href="https://makerspace.cc/wiki/index.php?title=Spaces&amp;diff=9074"/>
		<updated>2025-03-10T18:44:44Z</updated>

		<summary type="html">&lt;p&gt;Winhallk: update links for map&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:&amp;lt;span style=&amp;quot;display: block; text-align: center; font-weight: bold&amp;quot;&amp;gt;Makerspace Locations&amp;lt;/span&amp;gt;}}&lt;br /&gt;
Are you hoping to make something on campus? Here&#039;s a listing of all the places on campus that can help you out! All Makerspace locations are in the basement of [https://www.carleton.edu/map/?id=2017#!m/622428?share Anderson Hall].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pc-map&amp;quot; style=&amp;quot;display: flex; justify-content: center; align-items: center; text-align: center;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;imagemap&amp;gt;Image:Mapff.png| Interactive Map&lt;br /&gt;
      rect 200 271 12 113 [[Spaces#Class_Of_1969_Makerspace|Makerspace]]&lt;br /&gt;
      rect 14 346 198 479 [[Spaces#Repair_Lair|Repair Lair]]&lt;br /&gt;
      rect 795 81 990 213 [[Spaces#Machine_Shop|Machine Shop]]&lt;br /&gt;
      rect 793 257 989 376 [[Spaces#Wood_Shop|Wood Shop]]&lt;br /&gt;
      rect 786 418 997 547 [[Spaces#Instrument_Shop|Instrument Shop]]&lt;br /&gt;
      poly 289 154 289 197 299 199 296 208 288 211 288 216 375 216 376 203 383 203 386 209 390 214 395 209 397 214 437 214 436 154 [[Spaces#Class_Of_1969_Makerspace|Makerspace]]&lt;br /&gt;
      poly 331 243 330 370 325 361 319 363 315 371 221 371 221 397 265 398 266 410 273 406 278 397 329 394 335 405 342 410 347 414 348 430 386 433 387 413 397 410 401 403 403 396 407 390 406 373 368 371 367 243 357 247 352 254 345 248 339 246 [[Spaces#Repair_Lair|Repair Lair]]&lt;br /&gt;
      poly 651 114 651 215 627 218 627 284 579 286 580 311 622 313 625 371 644 372 646 384 652 382 657 376 667 382 667 373 713 371 716 285 693 283 690 275 683 273 679 283 677 215 686 214 685 114 675 114 675 122 672 127 665 127 660 114 [[Spaces#Machine_Shop|Machine Shop]]&lt;br /&gt;
      poly 624 373 623 464 646 464 649 472 658 479 660 465 713 463 712 374 666 374 667 381 660 381 646 385 645 372 [[Spaces#Wood_Shop|Wood Shop]]&lt;br /&gt;
      poly 621 438 543 436 546 468 550 474 556 480 550 496 576 495 578 555 716 556 716 465 661 465 660 478 646 465 624 466 621 454 621 449 621 444 [[Spaces#Instrument_Shop|Instrument Shop]]&lt;br /&gt;
  &amp;lt;/imagemap&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mobile-map&amp;quot; style=&amp;quot;display: flex; justify-content: center; align-items: center; text-align: center;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;imagemap&amp;gt;Image:Mapfff.png| Interactive Map&lt;br /&gt;
      poly 85 155 83 197 96 200 91 208 82 209 84 215 173 217 174 204 180 205 184 212 192 208 195 217 233 216 231 155 [[Spaces_New#Class_Of_1969_Makerspace|Makerspace]]&lt;br /&gt;
      poly 127 243 127 370 122 361 113 366 110 373 17 371 16 397 61 398 61 409 69 407 75 397 124 396 128 404 133 409 141 414 143 431 185 431 184 414 191 412 198 405 202 396 204 373 165 370 163 246 155 247 149 254 142 248 133 244 [[Spaces_New#Repair_Lair|Repair Lair]]&lt;br /&gt;
      poly 448 115 446 214 421 216 423 281 374 286 375 310 420 312 421 370 439 371 442 382 449 382 452 377 461 383 462 373 510 370 511 283 488 281 479 271 478 281 472 282 472 215 478 213 481 115 471 113 468 126 459 123 457 114 [[Spaces_New#Machine_Shop|Machine Shop]]&lt;br /&gt;
      poly 420 372 420 464 442 464 446 472 454 477 456 464 512 465 510 372 463 373 464 383 456 379 448 385 441 385 440 371 [[Spaces_New#Wood_Shop|Wood Shop]]&lt;br /&gt;
      poly 339 437 341 466 345 473 353 481 346 494 372 495 373 555 512 555 511 465 458 466 454 478 446 474 442 466 421 464 416 439 [[Spaces_New#Instrument_Shop|Instrument Shop]]&lt;br /&gt;
  &amp;lt;/imagemap&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Class Of 1969 Makerspace&#039;&#039;&#039; ==&lt;br /&gt;
[[File:PXL 20230710 132906251.jpg|alt=A view of the inside of the  Class 1969 Makerspace|thumb]]&lt;br /&gt;
Central hub for all making on the Carleton College campus. This is the central hub for your making needs on campus. Have an idea and don&#039;t know where to start? Stop in and we&#039;ll help get you started! Want to learn a skill, but don&#039;t have a project in mind? We can help you with a variety of kits and brainstorming tools!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Anderson Hall 028 (Basement)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hours:&#039;&#039;&#039; Daily, 1-6PM&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tools&#039;&#039;&#039;: &amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://cs400w25eawiki.mathcs.carleton.edu/wiki/index.php?title=Tools&amp;amp;filter=Makerspace%20Tools Makerspace Tools]&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Airbrushing badge small.png|Airbrushing|alt=Green &amp;quot;airbrushing&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Fabrication}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Button badge small.png|Button Pressing|alt=Blue &amp;quot;button pressing&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Crafts}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Cassette badge small.png|Cassette Making|alt=Yellow &amp;quot;cassette making icon&amp;quot;|frameless|link={{fullurl:GALLERY|filter=Crafts}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Crafting badge_small.png|Crafting|alt=Brown &amp;quot;crafting&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Crafts}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Graphic badge small.png|Graphic Design|alt=Indigo &amp;quot;graphic design&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Design}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Handsewing badge small.png|Hand Sewing|alt=Purple &amp;quot;handsewing&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Textiles}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Laser badge small.png|Laser Cutting|alt=Gray &amp;quot;laser cutting&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=CNC-Laser}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Modeling badge small.png|3D Modeling|alt=Yellow &amp;quot;3d modeling&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Design}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Printing badge small.png|3D Printing|alt=Purple &amp;quot;3d printing&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Fabrication}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Programming badge small.png|Programming|alt=Green &amp;quot;programming&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Design}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Soldering badge small.png|Soldering|alt=Orange &amp;quot;soldering&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Metalworking}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Technical badge small.png|Technical Design|alt=Green &amp;quot;technical design&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Design}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Textile badge small.png|Textiles|alt=Green &amp;quot;textiles&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Textiles}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Repair Lair&#039;&#039;&#039; ==&lt;br /&gt;
[[File:Final repairlair.jpg|thumb]]&lt;br /&gt;
The Makerspace Repair Lair is located in the hallway across from the Makerspace. It is open after hours. It contains the Bike Repair cart, a sewing machine, scrap fabric, and many reusable treasures sourced from around campus.    &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Anderson Hall 029 (Basement)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hours:&#039;&#039;&#039; Anytime!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tools&#039;&#039;&#039;: &amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://cs400w25eawiki.mathcs.carleton.edu/wiki/index.php?title=Tools&amp;amp;filter=Repair%20Lair%20Tools Repair Lair Tools]&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Crafting_badge_small.png|Crafting|alt=Brown &amp;quot;Crafting&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Crafts}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Handsewing badge small.png|Hand Sewing|alt=Purple &amp;quot;handsewing&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Textiles}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Textile badge small.png|Textiles|alt=Green &amp;quot;textiles&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Textiles}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Wood Shop&#039;&#039;&#039; ==&lt;br /&gt;
[[File:Ms woodshop.jpg|alt=A view of the inside of the Woodshop|thumb]]&lt;br /&gt;
The Makerspace Wood Shop is a general purpose carpentry shop available for general student use. We have a limited supply of materials available to for use, after filing out a project proposal. The space contains a variety of saws (table, panel, band, battery, miller), drill presses, jointers, nail guns, and sanders.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Anderson Hall 037 (Basement)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hours:&#039;&#039;&#039; Daily, 1-6PM&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tools&#039;&#039;&#039;: &amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://cs400w25eawiki.mathcs.carleton.edu/wiki/index.php?title=Tools&amp;amp;filter=Wood%20Shop%20Tools Wood Shop Tools]&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Machining badge small.png|Machining|alt=Pink &amp;quot;machining&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=CNC-Laser}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Modeling badge small.png|3D Modeling|alt=Yellow &amp;quot;3d modeling&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Design}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Technical badge small.png|Technical Design|alt=Green &amp;quot;technical design&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Design}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Woodworking badge small.png|Woodworking|alt=Blue &amp;quot;woodworking&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Fabrication}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Instrument Shop&#039;&#039;&#039; ==&lt;br /&gt;
[[File:Ms instrumentshop.jpg|alt=A view of the inside of the Instrument Shop|thumb]]&lt;br /&gt;
This is the Scientific Instrument production shop for Carleton College. This shop contains all of the higher precision tools used to make apparatus for the STEM department research labs. This space also contains a student-accessible welding studio, CNC plasma cutter, sheet metal sheer, and press brake, as well as a dermestid beetle colony.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Anderson Hall 049 (Basement)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hours:&#039;&#039;&#039; Daily, 1-6PM&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tools&#039;&#039;&#039;: &amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://cs400w25eawiki.mathcs.carleton.edu/wiki/index.php?title=Tools&amp;amp;filter=Instrument%20Shop%20Tools Instrument Shop Tools]&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Machining badge small.png|Machining|alt=Pink &amp;quot;machining&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=CNC-Laser}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Modeling badge small.png|3D Modeling|alt=Yellow &amp;quot;3d modeling&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Design}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Technical badge small.png|Technical Design|alt=Green &amp;quot;technical design&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Design}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Welding badge small.png|Welding|alt=Indigo &amp;quot;welding&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Metalworking}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Machine Shop&#039;&#039;&#039; ==&lt;br /&gt;
[[File:PXL 20230710 133016630.jpg|alt=A view of the inside of the Machine Shop|thumb]]&lt;br /&gt;
General purpose machine shop for student use. The Build Spot Student Machine Shop has a full complement of precision machining equipment suitable for working with a variety of metals and plastics.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Anderson Hall 039 (Basement)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hours:&#039;&#039;&#039; Daily, 1-6PM&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tools&#039;&#039;&#039;: &amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://cs400w25eawiki.mathcs.carleton.edu/wiki/index.php?title=Tools&amp;amp;filter=Machine%20Shop%20Tools Machine Shop Tools]&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Laser badge small.png|Laser Cutting|alt=Gray &amp;quot;laser cutting&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=CNC-Laser}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Machining badge small.png|Machining|alt=Pink &amp;quot;machining&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=CNC-Laser}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Technical badge small.png|Technical Design|alt=Green &amp;quot;technical design&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Design}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;/div&gt;</summary>
		<author><name>Winhallk</name></author>
	</entry>
	<entry>
		<id>https://makerspace.cc/wiki/index.php?title=Home&amp;diff=9073</id>
		<title>Home</title>
		<link rel="alternate" type="text/html" href="https://makerspace.cc/wiki/index.php?title=Home&amp;diff=9073"/>
		<updated>2025-03-10T18:43:37Z</updated>

		<summary type="html">&lt;p&gt;Winhallk: update map with new links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:&amp;lt;span style=&amp;quot;display: block; text-align: center; font-weight: bold;&amp;quot;&amp;gt;Welcome to the Carleton College Makerpedia!&amp;lt;/span&amp;gt;}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: left;&amp;quot;&amp;gt;&lt;br /&gt;
This is the knowledge base for the Class of 1969 Makerspace and Instrument Shop. You can find information about all the tools available in our spaces, as well as project ideas and tutorials. Our mission is to provide all members of the Carleton community opportunities to engage in hands-on, experiential learning in a broadly interdisciplinary and collaborative space. We invite everyone to use the tools, resources, and trainings we provide to nurture their creativity, explore new ways of thinking, and create sustainable, empathetic solutions to challenges at all scales.&lt;br /&gt;
&lt;br /&gt;
Hope you can stop by and make sure to follow the &#039;&#039;&#039;[https://www.instagram.com/carleton_makers/ Makerspace Instagram]&#039;&#039;&#039; to see what we are up-to and to stay updated on upcoming events!  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div class=&amp;quot;carousel-heading&amp;quot;&amp;gt;&#039;&#039;&amp;lt;big&amp;gt;New Here? Try These Projects!&amp;lt;/big&amp;gt;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- This is where the javascript derived carousel items are injected --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;carousel-container&amp;quot;&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; gap: 20px; justify-content: center; flex-wrap: wrap;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div style=&amp;quot;background-color: #d3ddf0; padding: 10px 20px; width: 350px; height: 130px; border-radius: 10px;box-shadow: 10px 10px 20px rgba(0, 0, 0, 0.2);&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;Looking For More Projects?&amp;lt;/strong&amp;gt;&amp;lt;p&amp;gt;In [[GALLERY|PROJECTS TUTORIALS]] you can see creations from other students, find tutorials, and so much more.&amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div style=&amp;quot;background-color: #d3ddf0; padding: 10px 20px; width: 350px; height: 130px; border-radius: 10px;box-shadow: 10px 10px 20px rgba(0, 0, 0, 0.2);&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;Have A Project To Submit?&amp;lt;/strong&amp;gt;&amp;lt;p&amp;gt;Use [https://docs.google.com/forms/d/e/1FAIpQLSeSH7LlyvSWwDBh5RSR8YahUMdCFJPdScK_uNVpgzkg3pIwPg/viewform THIS FORM] to submit a project to our Gallery.&amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Spaces On Campus&#039;&#039;&#039; ==&lt;br /&gt;
The Makerspace is located in the basement of [https://www.carleton.edu/map/?id=2017#!m/622428?share Anderson Hall].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pc-map&amp;quot; style=&amp;quot;display: flex; justify-content: center; align-items: center; text-align: center;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;imagemap&amp;gt;Image:Rereredo.png| Interactive Map&lt;br /&gt;
      rect 200 271 12 113 [[Spaces#Class_Of_1969_Makerspace|Makerspace]]&lt;br /&gt;
      rect 14 346 198 479 [[Spaces#Repair_Lair|Repair Lair]]&lt;br /&gt;
      rect 795 81 990 213 [[Spaces#Machine_Shop|Machine Shop]]&lt;br /&gt;
      rect 793 257 989 376 [[Spaces#Wood_Shop|Wood Shop]]&lt;br /&gt;
      rect 786 418 997 547 [[Spaces#Instrument_Shop|Instrument Shop]]&lt;br /&gt;
      poly 289 154 289 197 299 199 296 208 288 211 288 216 375 216 376 203 383 203 386 209 390 214 395 209 397 214 437 214 436 154 [[Spaces#Class_Of_1969_Makerspace|Makerspace]]&lt;br /&gt;
      poly 331 243 330 370 325 361 319 363 315 371 221 371 221 397 265 398 266 410 273 406 278 397 329 394 335 405 342 410 347 414 348 430 386 433 387 413 397 410 401 403 403 396 407 390 406 373 368 371 367 243 357 247 352 254 345 248 339 246 [[Spaces#Repair_Lair|Repair Lair]]&lt;br /&gt;
      poly 651 114 651 215 627 218 627 284 579 286 580 311 622 313 625 371 644 372 646 384 652 382 657 376 667 382 667 373 713 371 716 285 693 283 690 275 683 273 679 283 677 215 686 214 685 114 675 114 675 122 672 127 665 127 660 114 [[Spaces#Machine_Shop|Machine Shop]]&lt;br /&gt;
      poly 624 373 623 464 646 464 649 472 658 479 660 465 713 463 712 374 666 374 667 381 660 381 646 385 645 372 [[Spaces#Wood_Shop|Wood Shop]]&lt;br /&gt;
      poly 621 438 543 436 546 468 550 474 556 480 550 496 576 495 578 555 716 556 716 465 661 465 660 478 646 465 624 466 621 454 621 449 621 444 [[Spaces#Instrument_Shop|Instrument Shop]]&lt;br /&gt;
  &amp;lt;/imagemap&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mobile-map&amp;quot; style=&amp;quot;display: flex; justify-content: center; align-items: center; text-align: center;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;imagemap&amp;gt;Image:Mapfff.png| Interactive Map&lt;br /&gt;
      poly 85 155 83 197 96 200 91 208 82 209 84 215 173 217 174 204 180 205 184 212 192 208 195 217 233 216 231 155 [[Spaces_New#Class_Of_1969_Makerspace|Makerspace]]&lt;br /&gt;
      poly 127 243 127 370 122 361 113 366 110 373 17 371 16 397 61 398 61 409 69 407 75 397 124 396 128 404 133 409 141 414 143 431 185 431 184 414 191 412 198 405 202 396 204 373 165 370 163 246 155 247 149 254 142 248 133 244 [[Spaces_New#Repair_Lair|Repair Lair]]&lt;br /&gt;
      poly 448 115 446 214 421 216 423 281 374 286 375 310 420 312 421 370 439 371 442 382 449 382 452 377 461 383 462 373 510 370 511 283 488 281 479 271 478 281 472 282 472 215 478 213 481 115 471 113 468 126 459 123 457 114 [[Spaces_New#Machine_Shop|Machine Shop]]&lt;br /&gt;
      poly 420 372 420 464 442 464 446 472 454 477 456 464 512 465 510 372 463 373 464 383 456 379 448 385 441 385 440 371 [[Spaces_New#Wood_Shop|Wood Shop]]&lt;br /&gt;
      poly 339 437 341 466 345 473 353 481 346 494 372 495 373 555 512 555 511 465 458 466 454 478 446 474 442 466 421 464 416 439 [[Spaces_New#Instrument_Shop|Instrument Shop]]&lt;br /&gt;
  &amp;lt;/imagemap&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Winhallk</name></author>
	</entry>
	<entry>
		<id>https://makerspace.cc/wiki/index.php?title=Spaces&amp;diff=9072</id>
		<title>Spaces</title>
		<link rel="alternate" type="text/html" href="https://makerspace.cc/wiki/index.php?title=Spaces&amp;diff=9072"/>
		<updated>2025-03-10T18:41:09Z</updated>

		<summary type="html">&lt;p&gt;Winhallk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:&amp;lt;span style=&amp;quot;display: block; text-align: center; font-weight: bold&amp;quot;&amp;gt;Makerspace Locations&amp;lt;/span&amp;gt;}}&lt;br /&gt;
Are you hoping to make something on campus? Here&#039;s a listing of all the places on campus that can help you out! All Makerspace locations are in the basement of [https://www.carleton.edu/map/?id=2017#!m/622428?share Anderson Hall].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pc-map&amp;quot; style=&amp;quot;display: flex; justify-content: center; align-items: center; text-align: center;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;imagemap&amp;gt;Image:Mapff.png| Interactive Map&lt;br /&gt;
      rect 200 271 12 113 [[Spaces_New#Class_Of_1969_Makerspace|Makerspace]]&lt;br /&gt;
      rect 14 346 198 479 [[Spaces_New#Repair_Lair|Repair Lair]]&lt;br /&gt;
      rect 795 81 990 213 [[Spaces_New#Machine_Shop|Machine Shop]]&lt;br /&gt;
      rect 793 257 989 376 [[Spaces_New#Wood_Shop|Wood Shop]]&lt;br /&gt;
      rect 786 418 997 547 [[Spaces_New#Instrument_Shop|Instrument Shop]]&lt;br /&gt;
      poly 289 154 289 197 299 199 296 208 288 211 288 216 375 216 376 203 383 203 386 209 390 214 395 209 397 214 437 214 436 154 [[Spaces_New#Class_Of_1969_Makerspace|Makerspace]]&lt;br /&gt;
      poly 331 243 330 370 325 361 319 363 315 371 221 371 221 397 265 398 266 410 273 406 278 397 329 394 335 405 342 410 347 414 348 430 386 433 387 413 397 410 401 403 403 396 407 390 406 373 368 371 367 243 357 247 352 254 345 248 339 246 [[Spaces_New#Repair_Lair|Repair Lair]]&lt;br /&gt;
      poly 651 114 651 215 627 218 627 284 579 286 580 311 622 313 625 371 644 372 646 384 652 382 657 376 667 382 667 373 713 371 716 285 693 283 690 275 683 273 679 283 677 215 686 214 685 114 675 114 675 122 672 127 665 127 660 114 [[Spaces_New#Machine_Shop|Machine Shop]]&lt;br /&gt;
      poly 624 373 623 464 646 464 649 472 658 479 660 465 713 463 712 374 666 374 667 381 660 381 646 385 645 372 [[Spaces_New#Wood_Shop|Wood Shop]]&lt;br /&gt;
      poly 621 438 543 436 546 468 550 474 556 480 550 496 576 495 578 555 716 556 716 465 661 465 660 478 646 465 624 466 621 454 621 449 621 444 [[Spaces_New#Instrument_Shop|Instrument Shop]]&lt;br /&gt;
  &amp;lt;/imagemap&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mobile-map&amp;quot; style=&amp;quot;display: flex; justify-content: center; align-items: center; text-align: center;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;imagemap&amp;gt;Image:Mapfff.png| Interactive Map&lt;br /&gt;
      poly 85 155 83 197 96 200 91 208 82 209 84 215 173 217 174 204 180 205 184 212 192 208 195 217 233 216 231 155 [[Spaces_New#Class_Of_1969_Makerspace|Makerspace]]&lt;br /&gt;
      poly 127 243 127 370 122 361 113 366 110 373 17 371 16 397 61 398 61 409 69 407 75 397 124 396 128 404 133 409 141 414 143 431 185 431 184 414 191 412 198 405 202 396 204 373 165 370 163 246 155 247 149 254 142 248 133 244 [[Spaces_New#Repair_Lair|Repair Lair]]&lt;br /&gt;
      poly 448 115 446 214 421 216 423 281 374 286 375 310 420 312 421 370 439 371 442 382 449 382 452 377 461 383 462 373 510 370 511 283 488 281 479 271 478 281 472 282 472 215 478 213 481 115 471 113 468 126 459 123 457 114 [[Spaces_New#Machine_Shop|Machine Shop]]&lt;br /&gt;
      poly 420 372 420 464 442 464 446 472 454 477 456 464 512 465 510 372 463 373 464 383 456 379 448 385 441 385 440 371 [[Spaces_New#Wood_Shop|Wood Shop]]&lt;br /&gt;
      poly 339 437 341 466 345 473 353 481 346 494 372 495 373 555 512 555 511 465 458 466 454 478 446 474 442 466 421 464 416 439 [[Spaces_New#Instrument_Shop|Instrument Shop]]&lt;br /&gt;
  &amp;lt;/imagemap&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Class Of 1969 Makerspace&#039;&#039;&#039; ==&lt;br /&gt;
[[File:PXL 20230710 132906251.jpg|alt=A view of the inside of the  Class 1969 Makerspace|thumb]]&lt;br /&gt;
Central hub for all making on the Carleton College campus. This is the central hub for your making needs on campus. Have an idea and don&#039;t know where to start? Stop in and we&#039;ll help get you started! Want to learn a skill, but don&#039;t have a project in mind? We can help you with a variety of kits and brainstorming tools!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Anderson Hall 028 (Basement)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hours:&#039;&#039;&#039; Daily, 1-6PM&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tools&#039;&#039;&#039;: &amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://cs400w25eawiki.mathcs.carleton.edu/wiki/index.php?title=Tools&amp;amp;filter=Makerspace%20Tools Makerspace Tools]&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Airbrushing badge small.png|Airbrushing|alt=Green &amp;quot;airbrushing&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Fabrication}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Button badge small.png|Button Pressing|alt=Blue &amp;quot;button pressing&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Crafts}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Cassette badge small.png|Cassette Making|alt=Yellow &amp;quot;cassette making icon&amp;quot;|frameless|link={{fullurl:GALLERY|filter=Crafts}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Crafting badge_small.png|Crafting|alt=Brown &amp;quot;crafting&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Crafts}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Graphic badge small.png|Graphic Design|alt=Indigo &amp;quot;graphic design&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Design}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Handsewing badge small.png|Hand Sewing|alt=Purple &amp;quot;handsewing&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Textiles}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Laser badge small.png|Laser Cutting|alt=Gray &amp;quot;laser cutting&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=CNC-Laser}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Modeling badge small.png|3D Modeling|alt=Yellow &amp;quot;3d modeling&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Design}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Printing badge small.png|3D Printing|alt=Purple &amp;quot;3d printing&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Fabrication}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Programming badge small.png|Programming|alt=Green &amp;quot;programming&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Design}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Soldering badge small.png|Soldering|alt=Orange &amp;quot;soldering&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Metalworking}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Technical badge small.png|Technical Design|alt=Green &amp;quot;technical design&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Design}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Textile badge small.png|Textiles|alt=Green &amp;quot;textiles&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Textiles}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Repair Lair&#039;&#039;&#039; ==&lt;br /&gt;
[[File:Final repairlair.jpg|thumb]]&lt;br /&gt;
The Makerspace Repair Lair is located in the hallway across from the Makerspace. It is open after hours. It contains the Bike Repair cart, a sewing machine, scrap fabric, and many reusable treasures sourced from around campus.    &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Anderson Hall 029 (Basement)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hours:&#039;&#039;&#039; Anytime!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tools&#039;&#039;&#039;: &amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://cs400w25eawiki.mathcs.carleton.edu/wiki/index.php?title=Tools&amp;amp;filter=Repair%20Lair%20Tools Repair Lair Tools]&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Crafting_badge_small.png|Crafting|alt=Brown &amp;quot;Crafting&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Crafts}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Handsewing badge small.png|Hand Sewing|alt=Purple &amp;quot;handsewing&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Textiles}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Textile badge small.png|Textiles|alt=Green &amp;quot;textiles&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Textiles}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Wood Shop&#039;&#039;&#039; ==&lt;br /&gt;
[[File:Ms woodshop.jpg|alt=A view of the inside of the Woodshop|thumb]]&lt;br /&gt;
The Makerspace Wood Shop is a general purpose carpentry shop available for general student use. We have a limited supply of materials available to for use, after filing out a project proposal. The space contains a variety of saws (table, panel, band, battery, miller), drill presses, jointers, nail guns, and sanders.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Anderson Hall 037 (Basement)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hours:&#039;&#039;&#039; Daily, 1-6PM&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tools&#039;&#039;&#039;: &amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://cs400w25eawiki.mathcs.carleton.edu/wiki/index.php?title=Tools&amp;amp;filter=Wood%20Shop%20Tools Wood Shop Tools]&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Machining badge small.png|Machining|alt=Pink &amp;quot;machining&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=CNC-Laser}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Modeling badge small.png|3D Modeling|alt=Yellow &amp;quot;3d modeling&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Design}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Technical badge small.png|Technical Design|alt=Green &amp;quot;technical design&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Design}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Woodworking badge small.png|Woodworking|alt=Blue &amp;quot;woodworking&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Fabrication}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Instrument Shop&#039;&#039;&#039; ==&lt;br /&gt;
[[File:Ms instrumentshop.jpg|alt=A view of the inside of the Instrument Shop|thumb]]&lt;br /&gt;
This is the Scientific Instrument production shop for Carleton College. This shop contains all of the higher precision tools used to make apparatus for the STEM department research labs. This space also contains a student-accessible welding studio, CNC plasma cutter, sheet metal sheer, and press brake, as well as a dermestid beetle colony.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Anderson Hall 049 (Basement)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hours:&#039;&#039;&#039; Daily, 1-6PM&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tools&#039;&#039;&#039;: &amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://cs400w25eawiki.mathcs.carleton.edu/wiki/index.php?title=Tools&amp;amp;filter=Instrument%20Shop%20Tools Instrument Shop Tools]&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Machining badge small.png|Machining|alt=Pink &amp;quot;machining&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=CNC-Laser}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Modeling badge small.png|3D Modeling|alt=Yellow &amp;quot;3d modeling&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Design}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Technical badge small.png|Technical Design|alt=Green &amp;quot;technical design&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Design}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Welding badge small.png|Welding|alt=Indigo &amp;quot;welding&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Metalworking}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Machine Shop&#039;&#039;&#039; ==&lt;br /&gt;
[[File:PXL 20230710 133016630.jpg|alt=A view of the inside of the Machine Shop|thumb]]&lt;br /&gt;
General purpose machine shop for student use. The Build Spot Student Machine Shop has a full complement of precision machining equipment suitable for working with a variety of metals and plastics.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Anderson Hall 039 (Basement)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hours:&#039;&#039;&#039; Daily, 1-6PM&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tools&#039;&#039;&#039;: &amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://cs400w25eawiki.mathcs.carleton.edu/wiki/index.php?title=Tools&amp;amp;filter=Machine%20Shop%20Tools Machine Shop Tools]&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Laser badge small.png|Laser Cutting|alt=Gray &amp;quot;laser cutting&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=CNC-Laser}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Machining badge small.png|Machining|alt=Pink &amp;quot;machining&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=CNC-Laser}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Technical badge small.png|Technical Design|alt=Green &amp;quot;technical design&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Design}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;/div&gt;</summary>
		<author><name>Winhallk</name></author>
	</entry>
	<entry>
		<id>https://makerspace.cc/wiki/index.php?title=Spaces&amp;diff=9071</id>
		<title>Spaces</title>
		<link rel="alternate" type="text/html" href="https://makerspace.cc/wiki/index.php?title=Spaces&amp;diff=9071"/>
		<updated>2025-03-10T18:39:14Z</updated>

		<summary type="html">&lt;p&gt;Winhallk: fixed links to tools filters&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:&amp;lt;span style=&amp;quot;display: block; text-align: center; font-weight: bold&amp;quot;&amp;gt;Makerspace Locations&amp;lt;/span&amp;gt;}}&lt;br /&gt;
Are you hoping to make something on campus? Here&#039;s a listing of all the places on campus that can help you out! All Makerspace locations are in the basement of [https://www.carleton.edu/map/?id=2017#!m/622428?share Anderson Hall].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pc-map&amp;quot; style=&amp;quot;display: flex; justify-content: center; align-items: center; text-align: center;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;imagemap&amp;gt;Image:Mapff.png| Interactive Map&lt;br /&gt;
      rect 200 271 12 113 [[Spaces_New#Class_Of_1969_Makerspace|Makerspace]]&lt;br /&gt;
      rect 14 346 198 479 [[Spaces_New#Repair_Lair|Repair Lair]]&lt;br /&gt;
      rect 795 81 990 213 [[Spaces_New#Machine_Shop|Machine Shop]]&lt;br /&gt;
      rect 793 257 989 376 [[Spaces_New#Wood_Shop|Wood Shop]]&lt;br /&gt;
      rect 786 418 997 547 [[Spaces_New#Instrument_Shop|Instrument Shop]]&lt;br /&gt;
      poly 289 154 289 197 299 199 296 208 288 211 288 216 375 216 376 203 383 203 386 209 390 214 395 209 397 214 437 214 436 154 [[Spaces_New#Class_Of_1969_Makerspace|Makerspace]]&lt;br /&gt;
      poly 331 243 330 370 325 361 319 363 315 371 221 371 221 397 265 398 266 410 273 406 278 397 329 394 335 405 342 410 347 414 348 430 386 433 387 413 397 410 401 403 403 396 407 390 406 373 368 371 367 243 357 247 352 254 345 248 339 246 [[Spaces_New#Repair_Lair|Repair Lair]]&lt;br /&gt;
      poly 651 114 651 215 627 218 627 284 579 286 580 311 622 313 625 371 644 372 646 384 652 382 657 376 667 382 667 373 713 371 716 285 693 283 690 275 683 273 679 283 677 215 686 214 685 114 675 114 675 122 672 127 665 127 660 114 [[Spaces_New#Machine_Shop|Machine Shop]]&lt;br /&gt;
      poly 624 373 623 464 646 464 649 472 658 479 660 465 713 463 712 374 666 374 667 381 660 381 646 385 645 372 [[Spaces_New#Wood_Shop|Wood Shop]]&lt;br /&gt;
      poly 621 438 543 436 546 468 550 474 556 480 550 496 576 495 578 555 716 556 716 465 661 465 660 478 646 465 624 466 621 454 621 449 621 444 [[Spaces_New#Instrument_Shop|Instrument Shop]]&lt;br /&gt;
  &amp;lt;/imagemap&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mobile-map&amp;quot; style=&amp;quot;display: flex; justify-content: center; align-items: center; text-align: center;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;imagemap&amp;gt;Image:Mapfff.png| Interactive Map&lt;br /&gt;
      poly 85 155 83 197 96 200 91 208 82 209 84 215 173 217 174 204 180 205 184 212 192 208 195 217 233 216 231 155 [[Spaces_New#Class_Of_1969_Makerspace|Makerspace]]&lt;br /&gt;
      poly 127 243 127 370 122 361 113 366 110 373 17 371 16 397 61 398 61 409 69 407 75 397 124 396 128 404 133 409 141 414 143 431 185 431 184 414 191 412 198 405 202 396 204 373 165 370 163 246 155 247 149 254 142 248 133 244 [[Spaces_New#Repair_Lair|Repair Lair]]&lt;br /&gt;
      poly 448 115 446 214 421 216 423 281 374 286 375 310 420 312 421 370 439 371 442 382 449 382 452 377 461 383 462 373 510 370 511 283 488 281 479 271 478 281 472 282 472 215 478 213 481 115 471 113 468 126 459 123 457 114 [[Spaces_New#Machine_Shop|Machine Shop]]&lt;br /&gt;
      poly 420 372 420 464 442 464 446 472 454 477 456 464 512 465 510 372 463 373 464 383 456 379 448 385 441 385 440 371 [[Spaces_New#Wood_Shop|Wood Shop]]&lt;br /&gt;
      poly 339 437 341 466 345 473 353 481 346 494 372 495 373 555 512 555 511 465 458 466 454 478 446 474 442 466 421 464 416 439 [[Spaces_New#Instrument_Shop|Instrument Shop]]&lt;br /&gt;
  &amp;lt;/imagemap&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Class Of 1969 Makerspace&#039;&#039;&#039; ==&lt;br /&gt;
[[File:PXL 20230710 132906251.jpg|alt=A view of the inside of the  Class 1969 Makerspace|thumb]]&lt;br /&gt;
Central hub for all making on the Carleton College campus. This is the central hub for your making needs on campus. Have an idea and don&#039;t know where to start? Stop in and we&#039;ll help get you started! Want to learn a skill, but don&#039;t have a project in mind? We can help you with a variety of kits and brainstorming tools!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Anderson Hall 028 (Basement)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hours:&#039;&#039;&#039; Daily, 1-6PM&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tools&#039;&#039;&#039;: &amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://cs400w25eawiki.mathcs.carleton.edu/wiki/index.php?title=Tools&amp;amp;filter=Makerspace%20Tools Makerspace Tools]&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Airbrushing badge small.png|Airbrushing|alt=Green &amp;quot;airbrushing&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Fabrication}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Button badge small.png|Button Pressing|alt=Blue &amp;quot;button pressing&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Crafts}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Cassette badge small.png|Cassette Making|alt=Yellow &amp;quot;cassette making icon&amp;quot;|frameless|link={{fullurl:GALLERY|filter=Crafts}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Crafting badge_small.png|Crafting|alt=Brown &amp;quot;crafting&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Crafts}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Graphic badge small.png|Graphic Design|alt=Indigo &amp;quot;graphic design&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Design}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Handsewing badge small.png|Hand Sewing|alt=Purple &amp;quot;handsewing&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Textiles}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Laser badge small.png|Laser Cutting|alt=Gray &amp;quot;laser cutting&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=CNC-Laser}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Modeling badge small.png|3D Modeling|alt=Yellow &amp;quot;3d modeling&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Design}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Printing badge small.png|3D Printing|alt=Purple &amp;quot;3d printing&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Fabrication}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Programming badge small.png|Programming|alt=Green &amp;quot;programming&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Design}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Soldering badge small.png|Soldering|alt=Orange &amp;quot;soldering&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Metalworking}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Technical badge small.png|Technical Design|alt=Green &amp;quot;technical design&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Design}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Textile badge small.png|Textiles|alt=Green &amp;quot;textiles&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Textiles}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Repair Lair&#039;&#039;&#039; ==&lt;br /&gt;
[[File:Final repairlair.jpg|thumb]]&lt;br /&gt;
The Makerspace Repair Lair is located in the hallway across from the Makerspace. It is open after hours. It contains the Bike Repair cart, a sewing machine, scrap fabric, and many reusable treasures sourced from around campus.    &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Anderson Hall 029 (Basement)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hours:&#039;&#039;&#039; Anytime!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tools&#039;&#039;&#039;: &amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://cs400w25eawiki.mathcs.carleton.edu/wiki/index.php?title=Tools&amp;amp;filter=Instrument%20Shop%20Tools Repair Lair Tools]&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Crafting_badge_small.png|Crafting|alt=Brown &amp;quot;Crafting&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Crafts}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Handsewing badge small.png|Hand Sewing|alt=Purple &amp;quot;handsewing&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Textiles}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Textile badge small.png|Textiles|alt=Green &amp;quot;textiles&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Textiles}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Wood Shop&#039;&#039;&#039; ==&lt;br /&gt;
[[File:Ms woodshop.jpg|alt=A view of the inside of the Woodshop|thumb]]&lt;br /&gt;
The Makerspace Wood Shop is a general purpose carpentry shop available for general student use. We have a limited supply of materials available to for use, after filing out a project proposal. The space contains a variety of saws (table, panel, band, battery, miller), drill presses, jointers, nail guns, and sanders.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Anderson Hall 037 (Basement)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hours:&#039;&#039;&#039; Daily, 1-6PM&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tools&#039;&#039;&#039;: &amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://cs400w25eawiki.mathcs.carleton.edu/wiki/index.php?title=Tools&amp;amp;filter=Wood%20Shop%20Tools Wood Shop Tools]&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Machining badge small.png|Machining|alt=Pink &amp;quot;machining&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=CNC-Laser}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Modeling badge small.png|3D Modeling|alt=Yellow &amp;quot;3d modeling&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Design}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Technical badge small.png|Technical Design|alt=Green &amp;quot;technical design&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Design}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Woodworking badge small.png|Woodworking|alt=Blue &amp;quot;woodworking&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Fabrication}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Instrument Shop&#039;&#039;&#039; ==&lt;br /&gt;
[[File:Ms instrumentshop.jpg|alt=A view of the inside of the Instrument Shop|thumb]]&lt;br /&gt;
This is the Scientific Instrument production shop for Carleton College. This shop contains all of the higher precision tools used to make apparatus for the STEM department research labs. This space also contains a student-accessible welding studio, CNC plasma cutter, sheet metal sheer, and press brake, as well as a dermestid beetle colony.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Anderson Hall 049 (Basement)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hours:&#039;&#039;&#039; Daily, 1-6PM&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tools&#039;&#039;&#039;: &amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://cs400w25eawiki.mathcs.carleton.edu/wiki/index.php?title=Tools&amp;amp;filter=Instrument%20Shop%20Tools Instrument Shop Tools]&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Machining badge small.png|Machining|alt=Pink &amp;quot;machining&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=CNC-Laser}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Modeling badge small.png|3D Modeling|alt=Yellow &amp;quot;3d modeling&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Design}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Technical badge small.png|Technical Design|alt=Green &amp;quot;technical design&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Design}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Welding badge small.png|Welding|alt=Indigo &amp;quot;welding&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Metalworking}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Machine Shop&#039;&#039;&#039; ==&lt;br /&gt;
[[File:PXL 20230710 133016630.jpg|alt=A view of the inside of the Machine Shop|thumb]]&lt;br /&gt;
General purpose machine shop for student use. The Build Spot Student Machine Shop has a full complement of precision machining equipment suitable for working with a variety of metals and plastics.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Anderson Hall 039 (Basement)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hours:&#039;&#039;&#039; Daily, 1-6PM&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tools&#039;&#039;&#039;: &amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://cs400w25eawiki.mathcs.carleton.edu/wiki/index.php?title=Tools&amp;amp;filter=Machine%20Shop%20Tools Machine Shop Tools]&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Laser badge small.png|Laser Cutting|alt=Gray &amp;quot;laser cutting&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=CNC-Laser}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Machining badge small.png|Machining|alt=Pink &amp;quot;machining&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=CNC-Laser}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Technical badge small.png|Technical Design|alt=Green &amp;quot;technical design&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Design}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;/div&gt;</summary>
		<author><name>Winhallk</name></author>
	</entry>
	<entry>
		<id>https://makerspace.cc/wiki/index.php?title=MediaWiki:Sidebar&amp;diff=9070</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://makerspace.cc/wiki/index.php?title=MediaWiki:Sidebar&amp;diff=9070"/>
		<updated>2025-03-10T18:32:45Z</updated>

		<summary type="html">&lt;p&gt;Winhallk: update sidebar for new page locations&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* navigation&lt;br /&gt;
** Home|HOME&lt;br /&gt;
** Spaces|SPACES&lt;br /&gt;
** Tools|TOOLS&lt;br /&gt;
** Project_Tutorials|PROJECT TUTORIALS&lt;br /&gt;
** https://forms.gle/nCtJcMaAw14R42PY8 | SUBMIT PROJECT&lt;br /&gt;
&amp;lt;!--** recentchanges-url|recentchanges--&amp;gt;&lt;br /&gt;
&amp;lt;!--** randompage-url|randompage--&amp;gt;&lt;br /&gt;
&amp;lt;!--** helppage|help-mediawiki--&amp;gt;&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>Winhallk</name></author>
	</entry>
	<entry>
		<id>https://makerspace.cc/wiki/index.php?title=MediaWiki:Common.js&amp;diff=9069</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://makerspace.cc/wiki/index.php?title=MediaWiki:Common.js&amp;diff=9069"/>
		<updated>2025-03-10T18:32:03Z</updated>

		<summary type="html">&lt;p&gt;Winhallk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
&lt;br /&gt;
if (document) window.µ = function (id, elem) {&lt;br /&gt;
  var ret;&lt;br /&gt;
  var root = ((elem) ? elem : document);&lt;br /&gt;
  switch (id.charAt(0)) {&lt;br /&gt;
    case &#039;|&#039;:&lt;br /&gt;
      ret = root;&lt;br /&gt;
      break;&lt;br /&gt;
    case &#039;+&#039;:&lt;br /&gt;
      ret = document.createElement(id.substring(1));&lt;br /&gt;
      if (elem) elem.appendChild(ret);&lt;br /&gt;
      break;&lt;br /&gt;
    case &#039;#&#039;:&lt;br /&gt;
      ret = root.querySelector(id);&lt;br /&gt;
      break;&lt;br /&gt;
    default:&lt;br /&gt;
      ret = Array.prototype.slice.call(root.querySelectorAll(id));&lt;br /&gt;
      break;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  return ret;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/* add additional edit button in bottom right corner -- styled in Common.css */ &lt;br /&gt;
/* Takes them to visual editor if available/logged in; if not, takes them to normal edit mode; if they are not logged in at all, takes them to login page */&lt;br /&gt;
let editLinkQuery = document.querySelector(&amp;quot;#ca-ve-edit a&amp;quot;) ? &amp;quot;#ca-ve-edit a&amp;quot; : (document.querySelector(&amp;quot;#ca-edit a&amp;quot;) ? &amp;quot;#ca-edit a&amp;quot; : &amp;quot;#pt-login a&amp;quot;);&lt;br /&gt;
document.getElementById(&amp;quot;content&amp;quot;).innerHTML += &#039;&amp;lt;a href=&#039;+document.querySelector(editLinkQuery).href+&#039;&amp;gt;&amp;lt;button class=&amp;quot;big-edit-button&amp;quot;&amp;gt;&amp;lt;p&amp;gt;EDIT&amp;lt;/p&amp;gt;&amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
/* looks at current url parameters of the form &#039;?param1=value1&amp;amp;param2=value2...&#039; and returns a dictionary of the form {param1: value1, param2: value2, ...} */&lt;br /&gt;
function parseUrlParameters() {&lt;br /&gt;
    let queryStr = window.location.search.substring(1).replaceAll(&amp;quot;%20&amp;quot;, &amp;quot; &amp;quot;); // start string after the question mark and replace &#039;%20&#039; with spaces&lt;br /&gt;
    let queryDict = {};&lt;br /&gt;
    queryStr.split(&amp;quot;&amp;amp;&amp;quot;).forEach(function(query) {&lt;br /&gt;
        let pair = query.split(&amp;quot;=&amp;quot;);&lt;br /&gt;
        queryDict[pair[0]] = pair[1];&lt;br /&gt;
    })&lt;br /&gt;
    return queryDict;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Project Tutorials Gallery&lt;br /&gt;
mw.loader.using([&#039;mediawiki.api&#039;, &#039;jquery&#039;], function () {&lt;br /&gt;
    $(document).ready(function () {&lt;br /&gt;
        if (mw.config.get(&#039;wgPageName&#039;) !== &#039;Project_Tutorials&#039;) return;  // Ensure script runs only on the Project Tutorials page&lt;br /&gt;
&lt;br /&gt;
        // get url parameters and automatically select filter to value of &#039;filter&#039; parameter in url (eg www.wikititle/pagetitle?filter=Textiles)&lt;br /&gt;
        let queryDict = parseUrlParameters();&lt;br /&gt;
        var category = queryDict[&#039;filter&#039;] ? queryDict[&#039;filter&#039;] : &amp;quot;Projects&amp;quot;; // If no filter query in url, use default category Projects&lt;br /&gt;
        var galleryContainer = $(&#039;#project-gallery&#039;);  &lt;br /&gt;
&lt;br /&gt;
        /* add buttons to filter by category on Project Tutorials page&lt;br /&gt;
           html text displayed can be anything, but value of data-filter should be the same format as value passed in url parameters and entry in categories &lt;br /&gt;
           dictionary in loadGallery() function */&lt;br /&gt;
        galleryContainer.before(&#039;&amp;lt;div id=&amp;quot;category-filter&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;button id=&amp;quot;all-filter-btn&amp;quot; class=&amp;quot;filter-btn&amp;quot; data-filter=&amp;quot;Projects&amp;quot;&amp;gt;Show All&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;button id=&amp;quot;crafts-filter-btn&amp;quot; class=&amp;quot;filter-btn&amp;quot; data-filter=&amp;quot;Crafts&amp;quot;&amp;gt;Crafts&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;button id=&amp;quot;design-filter-btn&amp;quot; class=&amp;quot;filter-btn&amp;quot; data-filter=&amp;quot;Design&amp;quot;&amp;gt;Design&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;button id=&amp;quot;fabrication-filter-btn&amp;quot; class=&amp;quot;filter-btn&amp;quot; data-filter=&amp;quot;Fabrication&amp;quot;&amp;gt;Fabrication&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;button id=&amp;quot;cnc-laser-filter-btn&amp;quot; class=&amp;quot;filter-btn&amp;quot; data-filter=&amp;quot;CNC-Laser&amp;quot;&amp;gt;Laser &amp;amp; CNC&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;button id=&amp;quot;metalworking-filter-btn&amp;quot; class=&amp;quot;filter-btn&amp;quot; data-filter=&amp;quot;Metalworking&amp;quot;&amp;gt;Metalworking&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;button id=&amp;quot;textiles-filter-btn&amp;quot; class=&amp;quot;filter-btn&amp;quot; data-filter=&amp;quot;Textiles&amp;quot;&amp;gt;Textiles&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
        // use insertImage function to query api and insert given image at given id, with given style (adds icons to Project Tutorials filter buttons)&lt;br /&gt;
        insertImage(&amp;quot;File:Airbrushing_icon_color.png&amp;quot;, &amp;quot;#fabrication-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Button_icon_color.png&amp;quot;, &amp;quot;#crafts-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Cassette_icon_color.png&amp;quot;, &amp;quot;#crafts-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Crafting_icon_color.png&amp;quot;, &amp;quot;#crafts-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Graphic_icon_color.png&amp;quot;, &amp;quot;#design-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Handsewing_icon_color.png&amp;quot;, &amp;quot;#textiles-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Laser_icon_color.png&amp;quot;, &amp;quot;#cnc-laser-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Machining_icon_color.png&amp;quot;, &amp;quot;#cnc-laser-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Modeling_icon_color.png&amp;quot;, &amp;quot;#design-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Printing_icon_color.png&amp;quot;, &amp;quot;#fabrication-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Programming_icon_color.png&amp;quot;, &amp;quot;#design-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Soldering_icon_color.png&amp;quot;, &amp;quot;#metalworking-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Technical_icon_color.png&amp;quot;, &amp;quot;#design-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Textile_icon_color.png&amp;quot;, &amp;quot;#textiles-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Welding_icon_color.png&amp;quot;, &amp;quot;#metalworking-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Woodworking_icon_color.png&amp;quot;, &amp;quot;#fabrication-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        // load gallery based on category&lt;br /&gt;
        function loadGallery(category) {&lt;br /&gt;
            galleryContainer.html(&#039;&amp;lt;div class=&amp;quot;gallery-container&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;);  &lt;br /&gt;
&lt;br /&gt;
            let pageTitles = [];&lt;br /&gt;
&lt;br /&gt;
            // map larger umbrella categories to the skill badge categories they include&lt;br /&gt;
            let categories = {&lt;br /&gt;
                &amp;quot;Projects&amp;quot; : [&amp;quot;Projects&amp;quot;],&lt;br /&gt;
                &amp;quot;Design&amp;quot; : [&amp;quot;Graphic Design&amp;quot;, &amp;quot;3D Modeling&amp;quot;, &amp;quot;Technical Design&amp;quot;, &amp;quot;Programming&amp;quot;],&lt;br /&gt;
                &amp;quot;Textiles&amp;quot; : [&amp;quot;Textiles&amp;quot;, &amp;quot;Hand Sewing&amp;quot;],&lt;br /&gt;
                &amp;quot;Crafts&amp;quot; : [&amp;quot;Crafting&amp;quot;, &amp;quot;Button Pressing&amp;quot;, &amp;quot;Cassette Making&amp;quot;],&lt;br /&gt;
                &amp;quot;Fabrication&amp;quot; : [&amp;quot;Airbrushing&amp;quot;, &amp;quot;3D Printing&amp;quot;, &amp;quot;Woodworking&amp;quot;],&lt;br /&gt;
                &amp;quot;CNC-Laser&amp;quot; : [&amp;quot;Laser Cutting&amp;quot;, &amp;quot;Machining&amp;quot;],&lt;br /&gt;
                &amp;quot;Metalworking&amp;quot; : [&amp;quot;Soldering&amp;quot;, &amp;quot;Welding&amp;quot;]&lt;br /&gt;
            };&lt;br /&gt;
&lt;br /&gt;
            // insert projects corresponding to each skill under broader category filter selected&lt;br /&gt;
            categories[category].forEach(function(cat) {&lt;br /&gt;
                new mw.Api().get({&lt;br /&gt;
                    action: &#039;query&#039;,&lt;br /&gt;
                    list: &#039;categorymembers&#039;,&lt;br /&gt;
                    cmtitle: &#039;Category:&#039; + cat,&lt;br /&gt;
                    cmlimit: 50,  &lt;br /&gt;
                    format: &#039;json&#039;&lt;br /&gt;
                }).done(function (data) {&lt;br /&gt;
                    var pages = data.query.categorymembers;&lt;br /&gt;
                    var galleryHtml = &#039;&#039;;&lt;br /&gt;
                    var requests = pages.map(function (page) {&lt;br /&gt;
                        return new mw.Api().get({&lt;br /&gt;
                            action: &#039;query&#039;,&lt;br /&gt;
                            prop: &#039;revisions&#039;,&lt;br /&gt;
                            rvprop: &#039;content&#039;,&lt;br /&gt;
                            titles: page.title,&lt;br /&gt;
                            format: &#039;json&#039;&lt;br /&gt;
                        }).then(function (pageData) {&lt;br /&gt;
                            var pageId = Object.keys(pageData.query.pages)[0];&lt;br /&gt;
                            var content = pageData.query.pages[pageId].revisions[0][&#039;*&#039;];&lt;br /&gt;
                            var pageUrl = mw.util.getUrl(page.title);&lt;br /&gt;
                            var imgUrl = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
                            // Try to find a direct image URL (img1=https://...)&lt;br /&gt;
                            var directMatch = content.match(/img1=(https:\/\/[^\s|}%]+)/);&lt;br /&gt;
                            if (directMatch) {&lt;br /&gt;
                                imgUrl = directMatch[1];&lt;br /&gt;
                            }&lt;br /&gt;
&lt;br /&gt;
                            // If no direct URL, try to find a [[File:...]] entry&lt;br /&gt;
                            var fileMatch = content.match(/\[\[File:([^|\]]+)/);&lt;br /&gt;
                            if (!imgUrl &amp;amp;&amp;amp; fileMatch) {&lt;br /&gt;
                                var fileName = fileMatch[1].trim();&lt;br /&gt;
&lt;br /&gt;
                                // Fetch full image URL from MediaWiki API&lt;br /&gt;
                                return new mw.Api().get({&lt;br /&gt;
                                    action: &#039;query&#039;,&lt;br /&gt;
                                    titles: &#039;File:&#039; + fileName,&lt;br /&gt;
                                    prop: &#039;imageinfo&#039;,&lt;br /&gt;
                                    iiprop: &#039;url&#039;,&lt;br /&gt;
                                    format: &#039;json&#039;&lt;br /&gt;
                                }).then(function (imageData) {&lt;br /&gt;
                                    var imagePageId = Object.keys(imageData.query.pages)[0];&lt;br /&gt;
                                    if (imageData.query.pages[imagePageId].imageinfo) {&lt;br /&gt;
                                        imgUrl = imageData.query.pages[imagePageId].imageinfo[0].url;&lt;br /&gt;
                                    }&lt;br /&gt;
&lt;br /&gt;
                                &lt;br /&gt;
                                    galleryHtml += generateGalleryItem(pageUrl, page.title, imgUrl, category);&lt;br /&gt;
                                });&lt;br /&gt;
                            } else {&lt;br /&gt;
                                // Add the gallery item if the image was found and is not already being shown&lt;br /&gt;
                                  if(!pageTitles.includes(page.title)) {&lt;br /&gt;
                                    galleryHtml += generateGalleryItem(pageUrl, page.title, imgUrl, category);&lt;br /&gt;
                                    pageTitles.push(page.title);&lt;br /&gt;
                                  }&lt;br /&gt;
                            }&lt;br /&gt;
                        });&lt;br /&gt;
                    });&lt;br /&gt;
&lt;br /&gt;
                Promise.all(requests).then(function () {&lt;br /&gt;
                    $(&#039;.gallery-container&#039;).append(galleryHtml);&lt;br /&gt;
                });&lt;br /&gt;
                });&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // generate a gallery&lt;br /&gt;
        function generateGalleryItem(pageUrl, title, imgUrl, category) {&lt;br /&gt;
            return `&lt;br /&gt;
                &amp;lt;div class=&amp;quot;gallery-item ${category}&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;a href=&amp;quot;${pageUrl}&amp;quot;&amp;gt;&lt;br /&gt;
                        ${imgUrl ? `&amp;lt;img src=&amp;quot;${imgUrl}&amp;quot; alt=&amp;quot;${title}&amp;quot;&amp;gt;` : `&amp;lt;img src=&amp;quot;https://upload.wikimedia.org/wikipedia/commons/6/65/No-Image-Placeholder.svg&amp;quot; alt=&amp;quot;No Image Available&amp;quot;&amp;gt;`}&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;/a&amp;gt;&lt;br /&gt;
                    &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;a href=&amp;quot;${pageUrl}&amp;quot;&amp;gt;${title}&amp;lt;/a&amp;gt;&lt;br /&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;
        loadGallery(category);&lt;br /&gt;
&lt;br /&gt;
        // find filter button corresponding to selected category and add css class &#039;selected-filter&#039;&lt;br /&gt;
        $(&amp;quot;.filter-btn&amp;quot;).each(function () { $(this).data(&amp;quot;filter&amp;quot;) === category ? $(this).addClass(&#039;selected-filter&#039;) : null});&lt;br /&gt;
&lt;br /&gt;
        // when filter button is clicked, load projects for that category, deselect current filtered button, and select newly clicked filter button&lt;br /&gt;
        $(&amp;quot;.filter-btn&amp;quot;).click(function () {&lt;br /&gt;
            var selectedCategory = $(this).data(&amp;quot;filter&amp;quot;);&lt;br /&gt;
            loadGallery(selectedCategory); &lt;br /&gt;
            $(&#039;.filter-btn.selected-filter&#039;).each((i, elem) =&amp;gt; $(elem).removeClass(&#039;selected-filter&#039;));&lt;br /&gt;
            $(this).addClass(&#039;selected-filter&#039;);&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// Tools Gallery&lt;br /&gt;
mw.loader.using([&#039;mediawiki.api&#039;, &#039;jquery&#039;], function () {&lt;br /&gt;
    $(document).ready(function () {&lt;br /&gt;
        if (mw.config.get(&#039;wgPageName&#039;) !== &#039;Tools&#039;) return;  // Ensure script runs only on the Tools page&lt;br /&gt;
&lt;br /&gt;
        // get url parameters and automatically select appropriate filter&lt;br /&gt;
        let queryDict = parseUrlParameters();&lt;br /&gt;
        var category = queryDict[&#039;filter&#039;] ? queryDict[&#039;filter&#039;] : &amp;quot;Tools&amp;quot;; // If no filter query in url, use default category&lt;br /&gt;
        var galleryContainer = $(&#039;#tools-gallery&#039;);  &lt;br /&gt;
&lt;br /&gt;
        // Add filter buttons before the gallery&lt;br /&gt;
        galleryContainer.before(&#039;&amp;lt;div id=&amp;quot;category-filter&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;button class=&amp;quot;filter-btn&amp;quot; data-filter=&amp;quot;Tools&amp;quot;&amp;gt;Show All&amp;lt;/button&amp;gt;&#039; +  &lt;br /&gt;
            &#039;&amp;lt;button class=&amp;quot;filter-btn&amp;quot; data-filter=&amp;quot;Makerspace Tools&amp;quot;&amp;gt;Makerspace Tools&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;button class=&amp;quot;filter-btn&amp;quot; data-filter=&amp;quot;Machine Shop Tools&amp;quot;&amp;gt;Machine Shop Tools&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;button class=&amp;quot;filter-btn&amp;quot; data-filter=&amp;quot;Wood Shop Tools&amp;quot;&amp;gt;Wood Shop Tools&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;button class=&amp;quot;filter-btn&amp;quot; data-filter=&amp;quot;Instrument Shop Tools&amp;quot;&amp;gt;Instrument Shop Tools&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;button class=&amp;quot;filter-btn&amp;quot; data-filter=&amp;quot;Repair Lair Tools&amp;quot;&amp;gt;Repair Lair Tools&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
        function loadGallery(category) {&lt;br /&gt;
            galleryContainer.html(&#039;&amp;lt;div class=&amp;quot;gallery-container&amp;quot;&amp;gt;Loading gallery...&amp;lt;/div&amp;gt;&#039;);  &lt;br /&gt;
&lt;br /&gt;
            new mw.Api().get({&lt;br /&gt;
                action: &#039;query&#039;,&lt;br /&gt;
                list: &#039;categorymembers&#039;,&lt;br /&gt;
                cmtitle: &#039;Category:&#039; + category,&lt;br /&gt;
                cmlimit: 50,  &lt;br /&gt;
                format: &#039;json&#039;&lt;br /&gt;
            }).done(function (data) {&lt;br /&gt;
                var pages = data.query.categorymembers;&lt;br /&gt;
                var galleryHtml = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
                var requests = pages.map(function (page) {&lt;br /&gt;
                    return new mw.Api().get({&lt;br /&gt;
                        action: &#039;query&#039;,&lt;br /&gt;
                        prop: &#039;revisions&#039;,&lt;br /&gt;
                        rvprop: &#039;content&#039;,&lt;br /&gt;
                        titles: page.title,&lt;br /&gt;
                        format: &#039;json&#039;&lt;br /&gt;
                    }).then(function (pageData) {&lt;br /&gt;
                        var pageId = Object.keys(pageData.query.pages)[0];&lt;br /&gt;
                        var content = pageData.query.pages[pageId].revisions[0][&#039;*&#039;];&lt;br /&gt;
                        var pageUrl = mw.util.getUrl(page.title);&lt;br /&gt;
                        var imgUrl = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
                        // Try to find a [[File:...]] entry&lt;br /&gt;
                        var fileMatch = content.match(/\[\[File:([^|\]]+)/);&lt;br /&gt;
                        if (fileMatch) {&lt;br /&gt;
                            var fileName = fileMatch[1].trim();&lt;br /&gt;
&lt;br /&gt;
                            // Fetch full image URL from MediaWiki API&lt;br /&gt;
                            return new mw.Api().get({&lt;br /&gt;
                                action: &#039;query&#039;,&lt;br /&gt;
                                titles: &#039;File:&#039; + fileName,&lt;br /&gt;
                                prop: &#039;imageinfo&#039;,&lt;br /&gt;
                                iiprop: &#039;url&#039;,&lt;br /&gt;
                                format: &#039;json&#039;&lt;br /&gt;
                            }).then(function (imageData) {&lt;br /&gt;
                                var imagePageId = Object.keys(imageData.query.pages)[0];&lt;br /&gt;
                                if (imageData.query.pages[imagePageId].imageinfo) {&lt;br /&gt;
                                    imgUrl = imageData.query.pages[imagePageId].imageinfo[0].url;&lt;br /&gt;
                                }&lt;br /&gt;
&lt;br /&gt;
                                // Add the gallery item&lt;br /&gt;
                                galleryHtml += generateGalleryItem(pageUrl, page.title, imgUrl, category);&lt;br /&gt;
                            });&lt;br /&gt;
                        } else {&lt;br /&gt;
                            // If no image is found, still display the title&lt;br /&gt;
                            galleryHtml += generateGalleryItem(pageUrl, page.title, imgUrl, category);&lt;br /&gt;
                        }&lt;br /&gt;
                    });&lt;br /&gt;
                });&lt;br /&gt;
&lt;br /&gt;
                Promise.all(requests).then(function () {&lt;br /&gt;
                    // Append gallery items after loading them&lt;br /&gt;
                    galleryContainer.html(&#039;&amp;lt;div class=&amp;quot;gallery-container&amp;quot;&amp;gt;&#039; + galleryHtml + &#039;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
                });&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function generateGalleryItem(pageUrl, title, imgUrl, category) {&lt;br /&gt;
            return `&lt;br /&gt;
                &amp;lt;div class=&amp;quot;gallery-item ${category}&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;a href=&amp;quot;${pageUrl}&amp;quot;&amp;gt;&lt;br /&gt;
                        ${imgUrl ? `&amp;lt;img src=&amp;quot;${imgUrl}&amp;quot; alt=&amp;quot;${title}&amp;quot;&amp;gt;` : `&amp;lt;img src=&amp;quot;https://upload.wikimedia.org/wikipedia/commons/6/65/No-Image-Placeholder.svg&amp;quot; alt=&amp;quot;No Image Available&amp;quot;&amp;gt;`}&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;/a&amp;gt;&lt;br /&gt;
                    &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;a href=&amp;quot;${pageUrl}&amp;quot;&amp;gt;${title}&amp;lt;/a&amp;gt;&lt;br /&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;
        loadGallery(category);&lt;br /&gt;
&lt;br /&gt;
        // find filter button corresponding to preselected category and add css class &#039;selected-filter&#039;&lt;br /&gt;
        $(&amp;quot;.filter-btn&amp;quot;).each(function () { $(this).data(&amp;quot;filter&amp;quot;) === category ? $(this).addClass(&#039;selected-filter&#039;) : null});&lt;br /&gt;
&lt;br /&gt;
        // when filter button is clicked, load tools for that category, deselect current filtered button, and select newly clicked filter button&lt;br /&gt;
        $(&amp;quot;.filter-btn&amp;quot;).click(function () {&lt;br /&gt;
            var selectedCategory = $(this).data(&amp;quot;filter&amp;quot;);&lt;br /&gt;
            loadGallery(selectedCategory);  &lt;br /&gt;
            $(&#039;.filter-btn.selected-filter&#039;).each((i, elem) =&amp;gt; $(elem).removeClass(&#039;selected-filter&#039;));&lt;br /&gt;
            $(this).addClass(&#039;selected-filter&#039;);&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// This uses Media Wiki API retrieve specific projects for the image carousel&lt;br /&gt;
function loadCarouselData() {&lt;br /&gt;
    // Make the API query to fetch pages for carousel&lt;br /&gt;
    var category = &amp;quot;SimpleProjects&amp;quot;; &lt;br /&gt;
    var carouselData = []; &lt;br /&gt;
&lt;br /&gt;
    new mw.Api().get({&lt;br /&gt;
        action: &#039;query&#039;,&lt;br /&gt;
        list: &#039;categorymembers&#039;,&lt;br /&gt;
        cmtitle: &#039;Category:&#039; + category,&lt;br /&gt;
        cmlimit: 50, &lt;br /&gt;
        format: &#039;json&#039;&lt;br /&gt;
    }).done(function (data) {&lt;br /&gt;
        var pages = data.query.categorymembers;&lt;br /&gt;
&lt;br /&gt;
        var requests = pages.map(function (page) {&lt;br /&gt;
            return new mw.Api().get({&lt;br /&gt;
                action: &#039;query&#039;,&lt;br /&gt;
                prop: &#039;revisions&#039;,&lt;br /&gt;
                rvprop: &#039;content&#039;,&lt;br /&gt;
                titles: page.title,&lt;br /&gt;
                format: &#039;json&#039;&lt;br /&gt;
            }).then(function (pageData) {&lt;br /&gt;
                var pageId = Object.keys(pageData.query.pages)[0];&lt;br /&gt;
                var content = pageData.query.pages[pageId].revisions[0][&#039;*&#039;];&lt;br /&gt;
                var pageUrl = mw.util.getUrl(page.title);&lt;br /&gt;
                var imgUrl = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
                // Try to find a direct image URL (img1=https://...). We do this because some images are from widgets.&lt;br /&gt;
                var directMatch = content.match(/img1=(https:\/\/[^\s|}%]+)/);&lt;br /&gt;
                if (directMatch) {&lt;br /&gt;
                    imgUrl = directMatch[1];&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                // If no direct URL, try to find a [[File:...]] entry. This is how Media Wiki embeds images.&lt;br /&gt;
                var fileMatch = content.match(/\[\[File:([^|\]]+)/);&lt;br /&gt;
                if (!imgUrl &amp;amp;&amp;amp; fileMatch) {&lt;br /&gt;
                    var fileName = fileMatch[1].trim();&lt;br /&gt;
&lt;br /&gt;
                    // Fetch full image URL from MediaWiki API&lt;br /&gt;
                    return new mw.Api().get({&lt;br /&gt;
                        action: &#039;query&#039;,&lt;br /&gt;
                        titles: &#039;File:&#039; + fileName,&lt;br /&gt;
                        prop: &#039;imageinfo&#039;,&lt;br /&gt;
                        iiprop: &#039;url&#039;,&lt;br /&gt;
                        format: &#039;json&#039;&lt;br /&gt;
                    }).then(function (imageData) {&lt;br /&gt;
                        var imagePageId = Object.keys(imageData.query.pages)[0];&lt;br /&gt;
                        if (imageData.query.pages[imagePageId].imageinfo) {&lt;br /&gt;
                            imgUrl = imageData.query.pages[imagePageId].imageinfo[0].url;&lt;br /&gt;
                        }&lt;br /&gt;
&lt;br /&gt;
                        // Store carousel item data in carouselData array&lt;br /&gt;
                        if (imgUrl) {&lt;br /&gt;
                            carouselData.push({ pageUrl: pageUrl, imgUrl: imgUrl, title: page.title });&lt;br /&gt;
                        }&lt;br /&gt;
                    });&lt;br /&gt;
                } else {&lt;br /&gt;
                    // Store carousel item data&lt;br /&gt;
                    if (imgUrl) {&lt;br /&gt;
                        carouselData.push({ pageUrl: pageUrl, imgUrl: imgUrl, title: page.title });&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        Promise.all(requests).then(function () {&lt;br /&gt;
            // Call the function to display carousel&lt;br /&gt;
            displayCarousel(carouselData);&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Creates the raw HTML to be injected into the Homepage, in the carousel container div. &lt;br /&gt;
function displayCarousel(carouselData) {&lt;br /&gt;
    var carouselHtml = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
    carouselData.forEach(function (item) {&lt;br /&gt;
        carouselHtml += `&lt;br /&gt;
            &amp;lt;div class=&amp;quot;carousel-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;a href=&amp;quot;${item.pageUrl}&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;${item.imgUrl}&amp;quot; alt=&amp;quot;Carousel Image&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/a&amp;gt;&lt;br /&gt;
               &amp;lt;div class=&amp;quot;carousel-title&amp;quot;&amp;gt;${item.title}&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;
    // Inject the HTML into the carousel container&lt;br /&gt;
    var carouselContainer = $(&#039;.carousel-container&#039;);&lt;br /&gt;
    carouselContainer.html(carouselHtml);&lt;br /&gt;
&lt;br /&gt;
    // Initialize the carousel behavior&lt;br /&gt;
    initializeCarousel();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function initializeCarousel() {&lt;br /&gt;
    let currentIndex = 0;&lt;br /&gt;
    let $carouselItems = $(&amp;quot;.carousel-item&amp;quot;);&lt;br /&gt;
    let totalItems = $carouselItems.length;&lt;br /&gt;
    &lt;br /&gt;
    $carouselItems.hide().eq(currentIndex).show();&lt;br /&gt;
&lt;br /&gt;
    let $prevButton = $(&#039;&amp;lt;button class=&amp;quot;carousel-prev&amp;quot;&amp;gt; &amp;amp;#128896; &amp;lt;/button&amp;gt;&#039;);&lt;br /&gt;
    let $nextButton = $(&#039;&amp;lt;button class=&amp;quot;carousel-next&amp;quot;&amp;gt; &amp;amp;#128898; &amp;lt;/button&amp;gt;&#039;);&lt;br /&gt;
    $(&#039;.carousel-container&#039;).append($prevButton, $nextButton);&lt;br /&gt;
    &lt;br /&gt;
    function nextSlide() {&lt;br /&gt;
        currentIndex = (currentIndex + 1) % totalItems;&lt;br /&gt;
        updateCarousel();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Auto slide every 10 seconds&lt;br /&gt;
    let autoSlide = setInterval(nextSlide, 10000); &lt;br /&gt;
    function resetInterval() {&lt;br /&gt;
        clearInterval(autoSlide);&lt;br /&gt;
        autoSlide = setInterval(nextSlide, 10000);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    $nextButton.click(function () {&lt;br /&gt;
        nextSlide();&lt;br /&gt;
        resetInterval();&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    $prevButton.click(function () {&lt;br /&gt;
        currentIndex = (currentIndex - 1 + totalItems) % totalItems;&lt;br /&gt;
        updateCarousel();&lt;br /&gt;
        resetInterval();&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    function updateCarousel () {&lt;br /&gt;
       $carouselItems.hide().eq(currentIndex).show();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Load the carousel data on page load&lt;br /&gt;
$(document).ready(function () {&lt;br /&gt;
    loadCarouselData(); &lt;br /&gt;
}); &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Individual Project pages (and potentially tools): if page is part of a category, insert any corresponding skill badges at top of page&lt;br /&gt;
if(document.getElementById(&amp;quot;catlinks&amp;quot;) != null) {&lt;br /&gt;
    document.querySelectorAll(&amp;quot;#catlinks li a&amp;quot;).forEach((cat) =&amp;gt; {&lt;br /&gt;
        let query = &amp;quot;#firstHeading&amp;quot;;&lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Airbrushing&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Airbrushing_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Fabrication&amp;quot;, true, &amp;quot;Airbrushing&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Button Pressing&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Button_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Crafts&amp;quot;, true, &amp;quot;Button Pressing&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Cassette Making&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Cassette_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Crafts&amp;quot;, true, &amp;quot;Cassette Making&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Crafting&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Crafting_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Crafts&amp;quot;, true, &amp;quot;Crafting&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Graphic Design&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Graphic_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Design&amp;quot;, true, &amp;quot;Graphic Design&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Hand Sewing&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Handsewing_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Textiles&amp;quot;, true, &amp;quot;Hand Sewing&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Laser Cutting&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Laser_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;CNC-Laser&amp;quot;, true, &amp;quot;Laser Cutting&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Machining&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Machining_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;CNC-Laser&amp;quot;, true, &amp;quot;Machining&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:3D Modeling&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Modeling_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Design&amp;quot;, true, &amp;quot;3D Modeling&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:3D Printing&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Printing_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Fabrication&amp;quot;, true, &amp;quot;3D Printing&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Programming&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Programming_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Design&amp;quot;, true, &amp;quot;Programming&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Soldering&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Soldering_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Metalworking&amp;quot;, true, &amp;quot;Soldering&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Technical Design&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Technical_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Design&amp;quot;, true, &amp;quot;Technical Design&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Textiles&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Textile_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Textiles&amp;quot;, true, &amp;quot;Textiles&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Welding&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Welding_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Metalworking&amp;quot;, true, &amp;quot;Welding&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Woodworking&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Woodworking_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Fabrication&amp;quot;, true, &amp;quot;Woodworking&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
    })&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// uses api to insert image at given selector element in html, using image in mediawiki format (eg [[File:filename...]])&lt;br /&gt;
// optional style parameter gets applied&lt;br /&gt;
// if asLinkedSkillBadge is true, styles as skill badge (image wrapped in &amp;lt;a&amp;gt; link)&lt;br /&gt;
function insertImage(image, selector, style=&amp;quot;&amp;quot;, linkFilter=&amp;quot;&amp;quot;, asLinkedSkillBadge=false, tooltip=image) {&lt;br /&gt;
    $.getJSON(&lt;br /&gt;
        mw.util.wikiScript( &#039;api&#039; ), {&lt;br /&gt;
            format: &#039;json&#039;,&lt;br /&gt;
            action: &#039;query&#039;,&lt;br /&gt;
            titles: image,&lt;br /&gt;
            prop: &#039;imageinfo&#039;,&lt;br /&gt;
            iiprop: &#039;url&#039;&lt;br /&gt;
        },&lt;br /&gt;
        function( obj ) {&lt;br /&gt;
            let pages = obj.query.pages;&lt;br /&gt;
            let result1 = pages[Object.keys(pages)[0]];&lt;br /&gt;
            let url = result1.imageinfo[0].url;&lt;br /&gt;
            let alt = result1.title; // set alt text to image title&lt;br /&gt;
            let urlSub = url.substring(url.indexOf(&amp;quot;/&amp;quot;)); // get just later part of url as link to image (after first slash)&lt;br /&gt;
            if(asLinkedSkillBadge) { // insert as linked skill badge (image wrapped in &amp;lt;a&amp;gt; with link to prefiltered Project Tutorials page)&lt;br /&gt;
                document.querySelector(selector).innerHTML += &#039;&amp;lt;a href=&amp;quot;./Project_Tutorials?title=Project_Tutorials&amp;amp;filter=&#039;+linkFilter+&#039;&amp;quot; title=&amp;quot;&#039;+tooltip+&#039;&amp;quot;&amp;gt;&amp;lt;img class=&amp;quot;skill-badge-img&amp;quot; src=&amp;quot;&#039;+urlSub+&#039;&amp;quot; alt=&amp;quot;&#039;+alt+&#039;&amp;quot; style=&amp;quot;&#039;+style+&#039;&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
            }&lt;br /&gt;
            else { // insert as regular image&lt;br /&gt;
                document.querySelector(selector).innerHTML += &#039;&amp;lt;img src=&amp;quot;&#039;+urlSub+&#039;&amp;quot; alt=&amp;quot;&#039;+alt+&#039;&amp;quot; style=&amp;quot;&#039;+style+&#039;&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* like button. Only appears on &amp;quot;Main&amp;quot; Namespace pages that aren&#039;t sidebar pages (should be restricted to content pages like articles).*/&lt;br /&gt;
/* Styled in common.css*/&lt;br /&gt;
if (mw.config.get(&#039;wgNamespaceNumber&#039;) == 0 &amp;amp;&amp;amp; mw.config.get(&#039;wgPageName&#039;) !== &#039;Project_Tutorials&#039; &amp;amp;&amp;amp; mw.config.get(&#039;wgPageName&#039;) !== &#039;Tools&#039; &amp;amp;&amp;amp; mw.config.get(&#039;wgPageName&#039;) !== &#039;Spaces&#039; &amp;amp;&amp;amp; mw.config.get(&#039;wgPageName&#039;) !== &#039;Home&#039;) {&lt;br /&gt;
    // if page is favorited we should show unfavorite button instead. Direct to login if not logged in.&lt;br /&gt;
    if (document.querySelector(&amp;quot;#ca-favorite&amp;quot;)) {&lt;br /&gt;
        document.getElementById(&amp;quot;firstHeading&amp;quot;).innerHTML += &#039;&amp;lt;a href=/wiki/index.php?title=&#039;+mw.config.get(&#039;wgPageName&#039;)+&#039;&amp;amp;action=favorite&amp;amp;returnto=&#039;+mw.config.get(&#039;wgPageName&#039;)+&#039;&amp;gt;&amp;lt;button class=&amp;quot;favorite&amp;quot;&amp;gt;&amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
    } else if (document.querySelector(&amp;quot;#ca-unfavorite&amp;quot;)) {&lt;br /&gt;
        document.getElementById(&amp;quot;firstHeading&amp;quot;).innerHTML += &#039;&amp;lt;a href=/wiki/index.php?title=&#039;+mw.config.get(&#039;wgPageName&#039;)+&#039;&amp;amp;action=unfavorite&amp;amp;returnto=&#039;+mw.config.get(&#039;wgPageName&#039;)+&#039;&amp;gt;&amp;lt;button class=&amp;quot;unfavorite&amp;quot;&amp;gt;&amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
    // occurs if the user is not logged in:&lt;br /&gt;
    } else {&lt;br /&gt;
        document.getElementById(&amp;quot;firstHeading&amp;quot;).innerHTML += &#039;&amp;lt;a href=&#039;+document.querySelector(&amp;quot;#pt-login a&amp;quot;).href+&#039;&amp;gt;&amp;lt;button class=&amp;quot;favorite&amp;quot;&amp;gt;&amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
// open any &amp;lt;a&amp;gt; wrapped in &amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt; in same tab (generally internal links that must be treated as external links in order to give url parameters)&lt;br /&gt;
$(&#039;u.plainlinks a&#039;).each(function() { $(this).attr(&#039;target&#039;, &amp;quot;_self&amp;quot;)});&lt;/div&gt;</summary>
		<author><name>Winhallk</name></author>
	</entry>
	<entry>
		<id>https://makerspace.cc/wiki/index.php?title=Home_New&amp;diff=9068</id>
		<title>Home New</title>
		<link rel="alternate" type="text/html" href="https://makerspace.cc/wiki/index.php?title=Home_New&amp;diff=9068"/>
		<updated>2025-03-10T18:31:08Z</updated>

		<summary type="html">&lt;p&gt;Winhallk: Winhallk moved page Home New to Home&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Home]]&lt;/div&gt;</summary>
		<author><name>Winhallk</name></author>
	</entry>
	<entry>
		<id>https://makerspace.cc/wiki/index.php?title=Home&amp;diff=9067</id>
		<title>Home</title>
		<link rel="alternate" type="text/html" href="https://makerspace.cc/wiki/index.php?title=Home&amp;diff=9067"/>
		<updated>2025-03-10T18:31:08Z</updated>

		<summary type="html">&lt;p&gt;Winhallk: Winhallk moved page Home New to Home&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:&amp;lt;span style=&amp;quot;display: block; text-align: center; font-weight: bold;&amp;quot;&amp;gt;Welcome to the Carleton College Makerpedia!&amp;lt;/span&amp;gt;}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: left;&amp;quot;&amp;gt;&lt;br /&gt;
This is the knowledge base for the Class of 1969 Makerspace and Instrument Shop. You can find information about all the tools available in our spaces, as well as project ideas and tutorials. Our mission is to provide all members of the Carleton community opportunities to engage in hands-on, experiential learning in a broadly interdisciplinary and collaborative space. We invite everyone to use the tools, resources, and trainings we provide to nurture their creativity, explore new ways of thinking, and create sustainable, empathetic solutions to challenges at all scales.&lt;br /&gt;
&lt;br /&gt;
Hope you can stop by and make sure to follow the &#039;&#039;&#039;[https://www.instagram.com/carleton_makers/ Makerspace Instagram]&#039;&#039;&#039; to see what we are up-to and to stay updated on upcoming events!  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div class=&amp;quot;carousel-heading&amp;quot;&amp;gt;&#039;&#039;&amp;lt;big&amp;gt;New Here? Try These Projects!&amp;lt;/big&amp;gt;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- This is where the javascript derived carousel items are injected --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;carousel-container&amp;quot;&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; gap: 20px; justify-content: center; flex-wrap: wrap;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div style=&amp;quot;background-color: #d3ddf0; padding: 10px 20px; width: 350px; height: 130px; border-radius: 10px;box-shadow: 10px 10px 20px rgba(0, 0, 0, 0.2);&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;Looking For More Projects?&amp;lt;/strong&amp;gt;&amp;lt;p&amp;gt;In [[GALLERY|PROJECTS TUTORIALS]] you can see creations from other students, find tutorials, and so much more.&amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div style=&amp;quot;background-color: #d3ddf0; padding: 10px 20px; width: 350px; height: 130px; border-radius: 10px;box-shadow: 10px 10px 20px rgba(0, 0, 0, 0.2);&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;Have A Project To Submit?&amp;lt;/strong&amp;gt;&amp;lt;p&amp;gt;Use [https://docs.google.com/forms/d/e/1FAIpQLSeSH7LlyvSWwDBh5RSR8YahUMdCFJPdScK_uNVpgzkg3pIwPg/viewform THIS FORM] to submit a project to our Gallery.&amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Spaces On Campus&#039;&#039;&#039; ==&lt;br /&gt;
The Makerspace is located in the basement of [https://www.carleton.edu/map/?id=2017#!m/622428?share Anderson Hall].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pc-map&amp;quot; style=&amp;quot;display: flex; justify-content: center; align-items: center; text-align: center;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;imagemap&amp;gt;Image:Rereredo.png| Interactive Map&lt;br /&gt;
      rect 200 271 12 113 [[Spaces_New#Class_Of_1969_Makerspace|Makerspace]]&lt;br /&gt;
      rect 14 346 198 479 [[Spaces_New#Repair_Lair|Repair Lair]]&lt;br /&gt;
      rect 795 81 990 213 [[Spaces_New#Machine_Shop|Machine Shop]]&lt;br /&gt;
      rect 793 257 989 376 [[Spaces_New#Wood_Shop|Wood Shop]]&lt;br /&gt;
      rect 786 418 997 547 [[Spaces_New#Instrument_Shop|Instrument Shop]]&lt;br /&gt;
      poly 289 154 289 197 299 199 296 208 288 211 288 216 375 216 376 203 383 203 386 209 390 214 395 209 397 214 437 214 436 154 [[Spaces_New#Class_Of_1969_Makerspace|Makerspace]]&lt;br /&gt;
      poly 331 243 330 370 325 361 319 363 315 371 221 371 221 397 265 398 266 410 273 406 278 397 329 394 335 405 342 410 347 414 348 430 386 433 387 413 397 410 401 403 403 396 407 390 406 373 368 371 367 243 357 247 352 254 345 248 339 246 [[Spaces_New#Repair_Lair|Repair Lair]]&lt;br /&gt;
      poly 651 114 651 215 627 218 627 284 579 286 580 311 622 313 625 371 644 372 646 384 652 382 657 376 667 382 667 373 713 371 716 285 693 283 690 275 683 273 679 283 677 215 686 214 685 114 675 114 675 122 672 127 665 127 660 114 [[Spaces_New#Machine_Shop|Machine Shop]]&lt;br /&gt;
      poly 624 373 623 464 646 464 649 472 658 479 660 465 713 463 712 374 666 374 667 381 660 381 646 385 645 372 [[Spaces_New#Wood_Shop|Wood Shop]]&lt;br /&gt;
      poly 621 438 543 436 546 468 550 474 556 480 550 496 576 495 578 555 716 556 716 465 661 465 660 478 646 465 624 466 621 454 621 449 621 444 [[Spaces_New#Instrument_Shop|Instrument Shop]]&lt;br /&gt;
  &amp;lt;/imagemap&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mobile-map&amp;quot; style=&amp;quot;display: flex; justify-content: center; align-items: center; text-align: center;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;imagemap&amp;gt;Image:Mapfff.png| Interactive Map&lt;br /&gt;
      poly 85 155 83 197 96 200 91 208 82 209 84 215 173 217 174 204 180 205 184 212 192 208 195 217 233 216 231 155 [[Spaces_New#Class_Of_1969_Makerspace|Makerspace]]&lt;br /&gt;
      poly 127 243 127 370 122 361 113 366 110 373 17 371 16 397 61 398 61 409 69 407 75 397 124 396 128 404 133 409 141 414 143 431 185 431 184 414 191 412 198 405 202 396 204 373 165 370 163 246 155 247 149 254 142 248 133 244 [[Spaces_New#Repair_Lair|Repair Lair]]&lt;br /&gt;
      poly 448 115 446 214 421 216 423 281 374 286 375 310 420 312 421 370 439 371 442 382 449 382 452 377 461 383 462 373 510 370 511 283 488 281 479 271 478 281 472 282 472 215 478 213 481 115 471 113 468 126 459 123 457 114 [[Spaces_New#Machine_Shop|Machine Shop]]&lt;br /&gt;
      poly 420 372 420 464 442 464 446 472 454 477 456 464 512 465 510 372 463 373 464 383 456 379 448 385 441 385 440 371 [[Spaces_New#Wood_Shop|Wood Shop]]&lt;br /&gt;
      poly 339 437 341 466 345 473 353 481 346 494 372 495 373 555 512 555 511 465 458 466 454 478 446 474 442 466 421 464 416 439 [[Spaces_New#Instrument_Shop|Instrument Shop]]&lt;br /&gt;
  &amp;lt;/imagemap&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Winhallk</name></author>
	</entry>
	<entry>
		<id>https://makerspace.cc/wiki/index.php?title=MediaWiki:Common.js&amp;diff=9065</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://makerspace.cc/wiki/index.php?title=MediaWiki:Common.js&amp;diff=9065"/>
		<updated>2025-03-10T18:30:27Z</updated>

		<summary type="html">&lt;p&gt;Winhallk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
&lt;br /&gt;
if (document) window.µ = function (id, elem) {&lt;br /&gt;
  var ret;&lt;br /&gt;
  var root = ((elem) ? elem : document);&lt;br /&gt;
  switch (id.charAt(0)) {&lt;br /&gt;
    case &#039;|&#039;:&lt;br /&gt;
      ret = root;&lt;br /&gt;
      break;&lt;br /&gt;
    case &#039;+&#039;:&lt;br /&gt;
      ret = document.createElement(id.substring(1));&lt;br /&gt;
      if (elem) elem.appendChild(ret);&lt;br /&gt;
      break;&lt;br /&gt;
    case &#039;#&#039;:&lt;br /&gt;
      ret = root.querySelector(id);&lt;br /&gt;
      break;&lt;br /&gt;
    default:&lt;br /&gt;
      ret = Array.prototype.slice.call(root.querySelectorAll(id));&lt;br /&gt;
      break;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  return ret;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/* add additional edit button in bottom right corner -- styled in Common.css */ &lt;br /&gt;
/* Takes them to visual editor if available/logged in; if not, takes them to normal edit mode; if they are not logged in at all, takes them to login page */&lt;br /&gt;
let editLinkQuery = document.querySelector(&amp;quot;#ca-ve-edit a&amp;quot;) ? &amp;quot;#ca-ve-edit a&amp;quot; : (document.querySelector(&amp;quot;#ca-edit a&amp;quot;) ? &amp;quot;#ca-edit a&amp;quot; : &amp;quot;#pt-login a&amp;quot;);&lt;br /&gt;
document.getElementById(&amp;quot;content&amp;quot;).innerHTML += &#039;&amp;lt;a href=&#039;+document.querySelector(editLinkQuery).href+&#039;&amp;gt;&amp;lt;button class=&amp;quot;big-edit-button&amp;quot;&amp;gt;&amp;lt;p&amp;gt;EDIT&amp;lt;/p&amp;gt;&amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
/* looks at current url parameters of the form &#039;?param1=value1&amp;amp;param2=value2...&#039; and returns a dictionary of the form {param1: value1, param2: value2, ...} */&lt;br /&gt;
function parseUrlParameters() {&lt;br /&gt;
    let queryStr = window.location.search.substring(1).replaceAll(&amp;quot;%20&amp;quot;, &amp;quot; &amp;quot;); // start string after the question mark and replace &#039;%20&#039; with spaces&lt;br /&gt;
    let queryDict = {};&lt;br /&gt;
    queryStr.split(&amp;quot;&amp;amp;&amp;quot;).forEach(function(query) {&lt;br /&gt;
        let pair = query.split(&amp;quot;=&amp;quot;);&lt;br /&gt;
        queryDict[pair[0]] = pair[1];&lt;br /&gt;
    })&lt;br /&gt;
    return queryDict;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Project Tutorials Gallery&lt;br /&gt;
mw.loader.using([&#039;mediawiki.api&#039;, &#039;jquery&#039;], function () {&lt;br /&gt;
    $(document).ready(function () {&lt;br /&gt;
        if (mw.config.get(&#039;wgPageName&#039;) !== &#039;Project_Tutorials&#039;) return;  // Ensure script runs only on the Project Tutorials page&lt;br /&gt;
&lt;br /&gt;
        // get url parameters and automatically select filter to value of &#039;filter&#039; parameter in url (eg www.wikititle/pagetitle?filter=Textiles)&lt;br /&gt;
        let queryDict = parseUrlParameters();&lt;br /&gt;
        var category = queryDict[&#039;filter&#039;] ? queryDict[&#039;filter&#039;] : &amp;quot;Projects&amp;quot;; // If no filter query in url, use default category Projects&lt;br /&gt;
        var galleryContainer = $(&#039;#project-gallery&#039;);  &lt;br /&gt;
&lt;br /&gt;
        /* add buttons to filter by category on Project Tutorials page&lt;br /&gt;
           html text displayed can be anything, but value of data-filter should be the same format as value passed in url parameters and entry in categories &lt;br /&gt;
           dictionary in loadGallery() function */&lt;br /&gt;
        galleryContainer.before(&#039;&amp;lt;div id=&amp;quot;category-filter&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;button id=&amp;quot;all-filter-btn&amp;quot; class=&amp;quot;filter-btn&amp;quot; data-filter=&amp;quot;Projects&amp;quot;&amp;gt;Show All&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;button id=&amp;quot;crafts-filter-btn&amp;quot; class=&amp;quot;filter-btn&amp;quot; data-filter=&amp;quot;Crafts&amp;quot;&amp;gt;Crafts&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;button id=&amp;quot;design-filter-btn&amp;quot; class=&amp;quot;filter-btn&amp;quot; data-filter=&amp;quot;Design&amp;quot;&amp;gt;Design&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;button id=&amp;quot;fabrication-filter-btn&amp;quot; class=&amp;quot;filter-btn&amp;quot; data-filter=&amp;quot;Fabrication&amp;quot;&amp;gt;Fabrication&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;button id=&amp;quot;cnc-laser-filter-btn&amp;quot; class=&amp;quot;filter-btn&amp;quot; data-filter=&amp;quot;CNC-Laser&amp;quot;&amp;gt;Laser &amp;amp; CNC&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;button id=&amp;quot;metalworking-filter-btn&amp;quot; class=&amp;quot;filter-btn&amp;quot; data-filter=&amp;quot;Metalworking&amp;quot;&amp;gt;Metalworking&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;button id=&amp;quot;textiles-filter-btn&amp;quot; class=&amp;quot;filter-btn&amp;quot; data-filter=&amp;quot;Textiles&amp;quot;&amp;gt;Textiles&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
        // use insertImage function to query api and insert given image at given id, with given style (adds icons to Project Tutorials filter buttons)&lt;br /&gt;
        insertImage(&amp;quot;File:Airbrushing_icon_color.png&amp;quot;, &amp;quot;#fabrication-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Button_icon_color.png&amp;quot;, &amp;quot;#crafts-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Cassette_icon_color.png&amp;quot;, &amp;quot;#crafts-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Crafting_icon_color.png&amp;quot;, &amp;quot;#crafts-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Graphic_icon_color.png&amp;quot;, &amp;quot;#design-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Handsewing_icon_color.png&amp;quot;, &amp;quot;#textiles-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Laser_icon_color.png&amp;quot;, &amp;quot;#cnc-laser-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Machining_icon_color.png&amp;quot;, &amp;quot;#cnc-laser-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Modeling_icon_color.png&amp;quot;, &amp;quot;#design-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Printing_icon_color.png&amp;quot;, &amp;quot;#fabrication-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Programming_icon_color.png&amp;quot;, &amp;quot;#design-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Soldering_icon_color.png&amp;quot;, &amp;quot;#metalworking-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Technical_icon_color.png&amp;quot;, &amp;quot;#design-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Textile_icon_color.png&amp;quot;, &amp;quot;#textiles-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Welding_icon_color.png&amp;quot;, &amp;quot;#metalworking-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Woodworking_icon_color.png&amp;quot;, &amp;quot;#fabrication-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        // load gallery based on category&lt;br /&gt;
        function loadGallery(category) {&lt;br /&gt;
            galleryContainer.html(&#039;&amp;lt;div class=&amp;quot;gallery-container&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;);  &lt;br /&gt;
&lt;br /&gt;
            let pageTitles = [];&lt;br /&gt;
&lt;br /&gt;
            // map larger umbrella categories to the skill badge categories they include&lt;br /&gt;
            let categories = {&lt;br /&gt;
                &amp;quot;Projects&amp;quot; : [&amp;quot;Projects&amp;quot;],&lt;br /&gt;
                &amp;quot;Design&amp;quot; : [&amp;quot;Graphic Design&amp;quot;, &amp;quot;3D Modeling&amp;quot;, &amp;quot;Technical Design&amp;quot;, &amp;quot;Programming&amp;quot;],&lt;br /&gt;
                &amp;quot;Textiles&amp;quot; : [&amp;quot;Textiles&amp;quot;, &amp;quot;Hand Sewing&amp;quot;],&lt;br /&gt;
                &amp;quot;Crafts&amp;quot; : [&amp;quot;Crafting&amp;quot;, &amp;quot;Button Pressing&amp;quot;, &amp;quot;Cassette Making&amp;quot;],&lt;br /&gt;
                &amp;quot;Fabrication&amp;quot; : [&amp;quot;Airbrushing&amp;quot;, &amp;quot;3D Printing&amp;quot;, &amp;quot;Woodworking&amp;quot;],&lt;br /&gt;
                &amp;quot;CNC-Laser&amp;quot; : [&amp;quot;Laser Cutting&amp;quot;, &amp;quot;Machining&amp;quot;],&lt;br /&gt;
                &amp;quot;Metalworking&amp;quot; : [&amp;quot;Soldering&amp;quot;, &amp;quot;Welding&amp;quot;]&lt;br /&gt;
            };&lt;br /&gt;
&lt;br /&gt;
            // insert projects corresponding to each skill under broader category filter selected&lt;br /&gt;
            categories[category].forEach(function(cat) {&lt;br /&gt;
                new mw.Api().get({&lt;br /&gt;
                    action: &#039;query&#039;,&lt;br /&gt;
                    list: &#039;categorymembers&#039;,&lt;br /&gt;
                    cmtitle: &#039;Category:&#039; + cat,&lt;br /&gt;
                    cmlimit: 50,  &lt;br /&gt;
                    format: &#039;json&#039;&lt;br /&gt;
                }).done(function (data) {&lt;br /&gt;
                    var pages = data.query.categorymembers;&lt;br /&gt;
                    var galleryHtml = &#039;&#039;;&lt;br /&gt;
                    var requests = pages.map(function (page) {&lt;br /&gt;
                        return new mw.Api().get({&lt;br /&gt;
                            action: &#039;query&#039;,&lt;br /&gt;
                            prop: &#039;revisions&#039;,&lt;br /&gt;
                            rvprop: &#039;content&#039;,&lt;br /&gt;
                            titles: page.title,&lt;br /&gt;
                            format: &#039;json&#039;&lt;br /&gt;
                        }).then(function (pageData) {&lt;br /&gt;
                            var pageId = Object.keys(pageData.query.pages)[0];&lt;br /&gt;
                            var content = pageData.query.pages[pageId].revisions[0][&#039;*&#039;];&lt;br /&gt;
                            var pageUrl = mw.util.getUrl(page.title);&lt;br /&gt;
                            var imgUrl = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
                            // Try to find a direct image URL (img1=https://...)&lt;br /&gt;
                            var directMatch = content.match(/img1=(https:\/\/[^\s|}%]+)/);&lt;br /&gt;
                            if (directMatch) {&lt;br /&gt;
                                imgUrl = directMatch[1];&lt;br /&gt;
                            }&lt;br /&gt;
&lt;br /&gt;
                            // If no direct URL, try to find a [[File:...]] entry&lt;br /&gt;
                            var fileMatch = content.match(/\[\[File:([^|\]]+)/);&lt;br /&gt;
                            if (!imgUrl &amp;amp;&amp;amp; fileMatch) {&lt;br /&gt;
                                var fileName = fileMatch[1].trim();&lt;br /&gt;
&lt;br /&gt;
                                // Fetch full image URL from MediaWiki API&lt;br /&gt;
                                return new mw.Api().get({&lt;br /&gt;
                                    action: &#039;query&#039;,&lt;br /&gt;
                                    titles: &#039;File:&#039; + fileName,&lt;br /&gt;
                                    prop: &#039;imageinfo&#039;,&lt;br /&gt;
                                    iiprop: &#039;url&#039;,&lt;br /&gt;
                                    format: &#039;json&#039;&lt;br /&gt;
                                }).then(function (imageData) {&lt;br /&gt;
                                    var imagePageId = Object.keys(imageData.query.pages)[0];&lt;br /&gt;
                                    if (imageData.query.pages[imagePageId].imageinfo) {&lt;br /&gt;
                                        imgUrl = imageData.query.pages[imagePageId].imageinfo[0].url;&lt;br /&gt;
                                    }&lt;br /&gt;
&lt;br /&gt;
                                &lt;br /&gt;
                                    galleryHtml += generateGalleryItem(pageUrl, page.title, imgUrl, category);&lt;br /&gt;
                                });&lt;br /&gt;
                            } else {&lt;br /&gt;
                                // Add the gallery item if the image was found and is not already being shown&lt;br /&gt;
                                  if(!pageTitles.includes(page.title)) {&lt;br /&gt;
                                    galleryHtml += generateGalleryItem(pageUrl, page.title, imgUrl, category);&lt;br /&gt;
                                    pageTitles.push(page.title);&lt;br /&gt;
                                  }&lt;br /&gt;
                            }&lt;br /&gt;
                        });&lt;br /&gt;
                    });&lt;br /&gt;
&lt;br /&gt;
                Promise.all(requests).then(function () {&lt;br /&gt;
                    $(&#039;.gallery-container&#039;).append(galleryHtml);&lt;br /&gt;
                });&lt;br /&gt;
                });&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // generate a gallery&lt;br /&gt;
        function generateGalleryItem(pageUrl, title, imgUrl, category) {&lt;br /&gt;
            return `&lt;br /&gt;
                &amp;lt;div class=&amp;quot;gallery-item ${category}&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;a href=&amp;quot;${pageUrl}&amp;quot;&amp;gt;&lt;br /&gt;
                        ${imgUrl ? `&amp;lt;img src=&amp;quot;${imgUrl}&amp;quot; alt=&amp;quot;${title}&amp;quot;&amp;gt;` : `&amp;lt;img src=&amp;quot;https://upload.wikimedia.org/wikipedia/commons/6/65/No-Image-Placeholder.svg&amp;quot; alt=&amp;quot;No Image Available&amp;quot;&amp;gt;`}&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;/a&amp;gt;&lt;br /&gt;
                    &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;a href=&amp;quot;${pageUrl}&amp;quot;&amp;gt;${title}&amp;lt;/a&amp;gt;&lt;br /&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;
        loadGallery(category);&lt;br /&gt;
&lt;br /&gt;
        // find filter button corresponding to selected category and add css class &#039;selected-filter&#039;&lt;br /&gt;
        $(&amp;quot;.filter-btn&amp;quot;).each(function () { $(this).data(&amp;quot;filter&amp;quot;) === category ? $(this).addClass(&#039;selected-filter&#039;) : null});&lt;br /&gt;
&lt;br /&gt;
        // when filter button is clicked, load projects for that category, deselect current filtered button, and select newly clicked filter button&lt;br /&gt;
        $(&amp;quot;.filter-btn&amp;quot;).click(function () {&lt;br /&gt;
            var selectedCategory = $(this).data(&amp;quot;filter&amp;quot;);&lt;br /&gt;
            loadGallery(selectedCategory); &lt;br /&gt;
            $(&#039;.filter-btn.selected-filter&#039;).each((i, elem) =&amp;gt; $(elem).removeClass(&#039;selected-filter&#039;));&lt;br /&gt;
            $(this).addClass(&#039;selected-filter&#039;);&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// Tools Gallery&lt;br /&gt;
mw.loader.using([&#039;mediawiki.api&#039;, &#039;jquery&#039;], function () {&lt;br /&gt;
    $(document).ready(function () {&lt;br /&gt;
        if (mw.config.get(&#039;wgPageName&#039;) !== &#039;Tools&#039;) return;  // Ensure script runs only on the Tools page&lt;br /&gt;
&lt;br /&gt;
        // get url parameters and automatically select appropriate filter&lt;br /&gt;
        let queryDict = parseUrlParameters();&lt;br /&gt;
        var category = queryDict[&#039;filter&#039;] ? queryDict[&#039;filter&#039;] : &amp;quot;Tools&amp;quot;; // If no filter query in url, use default category&lt;br /&gt;
        var galleryContainer = $(&#039;#tools-gallery&#039;);  &lt;br /&gt;
&lt;br /&gt;
        // Add filter buttons before the gallery&lt;br /&gt;
        galleryContainer.before(&#039;&amp;lt;div id=&amp;quot;category-filter&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;button class=&amp;quot;filter-btn&amp;quot; data-filter=&amp;quot;Tools&amp;quot;&amp;gt;Show All&amp;lt;/button&amp;gt;&#039; +  &lt;br /&gt;
            &#039;&amp;lt;button class=&amp;quot;filter-btn&amp;quot; data-filter=&amp;quot;Makerspace Tools&amp;quot;&amp;gt;Makerspace Tools&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;button class=&amp;quot;filter-btn&amp;quot; data-filter=&amp;quot;Machine Shop Tools&amp;quot;&amp;gt;Machine Shop Tools&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;button class=&amp;quot;filter-btn&amp;quot; data-filter=&amp;quot;Wood Shop Tools&amp;quot;&amp;gt;Wood Shop Tools&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;button class=&amp;quot;filter-btn&amp;quot; data-filter=&amp;quot;Instrument Shop Tools&amp;quot;&amp;gt;Instrument Shop Tools&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;button class=&amp;quot;filter-btn&amp;quot; data-filter=&amp;quot;Repair Lair Tools&amp;quot;&amp;gt;Repair Lair Tools&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
        function loadGallery(category) {&lt;br /&gt;
            galleryContainer.html(&#039;&amp;lt;div class=&amp;quot;gallery-container&amp;quot;&amp;gt;Loading gallery...&amp;lt;/div&amp;gt;&#039;);  &lt;br /&gt;
&lt;br /&gt;
            new mw.Api().get({&lt;br /&gt;
                action: &#039;query&#039;,&lt;br /&gt;
                list: &#039;categorymembers&#039;,&lt;br /&gt;
                cmtitle: &#039;Category:&#039; + category,&lt;br /&gt;
                cmlimit: 50,  &lt;br /&gt;
                format: &#039;json&#039;&lt;br /&gt;
            }).done(function (data) {&lt;br /&gt;
                var pages = data.query.categorymembers;&lt;br /&gt;
                var galleryHtml = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
                var requests = pages.map(function (page) {&lt;br /&gt;
                    return new mw.Api().get({&lt;br /&gt;
                        action: &#039;query&#039;,&lt;br /&gt;
                        prop: &#039;revisions&#039;,&lt;br /&gt;
                        rvprop: &#039;content&#039;,&lt;br /&gt;
                        titles: page.title,&lt;br /&gt;
                        format: &#039;json&#039;&lt;br /&gt;
                    }).then(function (pageData) {&lt;br /&gt;
                        var pageId = Object.keys(pageData.query.pages)[0];&lt;br /&gt;
                        var content = pageData.query.pages[pageId].revisions[0][&#039;*&#039;];&lt;br /&gt;
                        var pageUrl = mw.util.getUrl(page.title);&lt;br /&gt;
                        var imgUrl = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
                        // Try to find a [[File:...]] entry&lt;br /&gt;
                        var fileMatch = content.match(/\[\[File:([^|\]]+)/);&lt;br /&gt;
                        if (fileMatch) {&lt;br /&gt;
                            var fileName = fileMatch[1].trim();&lt;br /&gt;
&lt;br /&gt;
                            // Fetch full image URL from MediaWiki API&lt;br /&gt;
                            return new mw.Api().get({&lt;br /&gt;
                                action: &#039;query&#039;,&lt;br /&gt;
                                titles: &#039;File:&#039; + fileName,&lt;br /&gt;
                                prop: &#039;imageinfo&#039;,&lt;br /&gt;
                                iiprop: &#039;url&#039;,&lt;br /&gt;
                                format: &#039;json&#039;&lt;br /&gt;
                            }).then(function (imageData) {&lt;br /&gt;
                                var imagePageId = Object.keys(imageData.query.pages)[0];&lt;br /&gt;
                                if (imageData.query.pages[imagePageId].imageinfo) {&lt;br /&gt;
                                    imgUrl = imageData.query.pages[imagePageId].imageinfo[0].url;&lt;br /&gt;
                                }&lt;br /&gt;
&lt;br /&gt;
                                // Add the gallery item&lt;br /&gt;
                                galleryHtml += generateGalleryItem(pageUrl, page.title, imgUrl, category);&lt;br /&gt;
                            });&lt;br /&gt;
                        } else {&lt;br /&gt;
                            // If no image is found, still display the title&lt;br /&gt;
                            galleryHtml += generateGalleryItem(pageUrl, page.title, imgUrl, category);&lt;br /&gt;
                        }&lt;br /&gt;
                    });&lt;br /&gt;
                });&lt;br /&gt;
&lt;br /&gt;
                Promise.all(requests).then(function () {&lt;br /&gt;
                    // Append gallery items after loading them&lt;br /&gt;
                    galleryContainer.html(&#039;&amp;lt;div class=&amp;quot;gallery-container&amp;quot;&amp;gt;&#039; + galleryHtml + &#039;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
                });&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function generateGalleryItem(pageUrl, title, imgUrl, category) {&lt;br /&gt;
            return `&lt;br /&gt;
                &amp;lt;div class=&amp;quot;gallery-item ${category}&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;a href=&amp;quot;${pageUrl}&amp;quot;&amp;gt;&lt;br /&gt;
                        ${imgUrl ? `&amp;lt;img src=&amp;quot;${imgUrl}&amp;quot; alt=&amp;quot;${title}&amp;quot;&amp;gt;` : `&amp;lt;img src=&amp;quot;https://upload.wikimedia.org/wikipedia/commons/6/65/No-Image-Placeholder.svg&amp;quot; alt=&amp;quot;No Image Available&amp;quot;&amp;gt;`}&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;/a&amp;gt;&lt;br /&gt;
                    &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;a href=&amp;quot;${pageUrl}&amp;quot;&amp;gt;${title}&amp;lt;/a&amp;gt;&lt;br /&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;
        loadGallery(category);&lt;br /&gt;
&lt;br /&gt;
        // find filter button corresponding to preselected category and add css class &#039;selected-filter&#039;&lt;br /&gt;
        $(&amp;quot;.filter-btn&amp;quot;).each(function () { $(this).data(&amp;quot;filter&amp;quot;) === category ? $(this).addClass(&#039;selected-filter&#039;) : null});&lt;br /&gt;
&lt;br /&gt;
        // when filter button is clicked, load tools for that category, deselect current filtered button, and select newly clicked filter button&lt;br /&gt;
        $(&amp;quot;.filter-btn&amp;quot;).click(function () {&lt;br /&gt;
            var selectedCategory = $(this).data(&amp;quot;filter&amp;quot;);&lt;br /&gt;
            loadGallery(selectedCategory);  &lt;br /&gt;
            $(&#039;.filter-btn.selected-filter&#039;).each((i, elem) =&amp;gt; $(elem).removeClass(&#039;selected-filter&#039;));&lt;br /&gt;
            $(this).addClass(&#039;selected-filter&#039;);&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// This uses Media Wiki API retrieve specific projects for the image carousel&lt;br /&gt;
function loadCarouselData() {&lt;br /&gt;
    // Make the API query to fetch pages for carousel&lt;br /&gt;
    var category = &amp;quot;SimpleProjects&amp;quot;; &lt;br /&gt;
    var carouselData = []; &lt;br /&gt;
&lt;br /&gt;
    new mw.Api().get({&lt;br /&gt;
        action: &#039;query&#039;,&lt;br /&gt;
        list: &#039;categorymembers&#039;,&lt;br /&gt;
        cmtitle: &#039;Category:&#039; + category,&lt;br /&gt;
        cmlimit: 50, &lt;br /&gt;
        format: &#039;json&#039;&lt;br /&gt;
    }).done(function (data) {&lt;br /&gt;
        var pages = data.query.categorymembers;&lt;br /&gt;
&lt;br /&gt;
        var requests = pages.map(function (page) {&lt;br /&gt;
            return new mw.Api().get({&lt;br /&gt;
                action: &#039;query&#039;,&lt;br /&gt;
                prop: &#039;revisions&#039;,&lt;br /&gt;
                rvprop: &#039;content&#039;,&lt;br /&gt;
                titles: page.title,&lt;br /&gt;
                format: &#039;json&#039;&lt;br /&gt;
            }).then(function (pageData) {&lt;br /&gt;
                var pageId = Object.keys(pageData.query.pages)[0];&lt;br /&gt;
                var content = pageData.query.pages[pageId].revisions[0][&#039;*&#039;];&lt;br /&gt;
                var pageUrl = mw.util.getUrl(page.title);&lt;br /&gt;
                var imgUrl = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
                // Try to find a direct image URL (img1=https://...). We do this because some images are from widgets.&lt;br /&gt;
                var directMatch = content.match(/img1=(https:\/\/[^\s|}%]+)/);&lt;br /&gt;
                if (directMatch) {&lt;br /&gt;
                    imgUrl = directMatch[1];&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                // If no direct URL, try to find a [[File:...]] entry. This is how Media Wiki embeds images.&lt;br /&gt;
                var fileMatch = content.match(/\[\[File:([^|\]]+)/);&lt;br /&gt;
                if (!imgUrl &amp;amp;&amp;amp; fileMatch) {&lt;br /&gt;
                    var fileName = fileMatch[1].trim();&lt;br /&gt;
&lt;br /&gt;
                    // Fetch full image URL from MediaWiki API&lt;br /&gt;
                    return new mw.Api().get({&lt;br /&gt;
                        action: &#039;query&#039;,&lt;br /&gt;
                        titles: &#039;File:&#039; + fileName,&lt;br /&gt;
                        prop: &#039;imageinfo&#039;,&lt;br /&gt;
                        iiprop: &#039;url&#039;,&lt;br /&gt;
                        format: &#039;json&#039;&lt;br /&gt;
                    }).then(function (imageData) {&lt;br /&gt;
                        var imagePageId = Object.keys(imageData.query.pages)[0];&lt;br /&gt;
                        if (imageData.query.pages[imagePageId].imageinfo) {&lt;br /&gt;
                            imgUrl = imageData.query.pages[imagePageId].imageinfo[0].url;&lt;br /&gt;
                        }&lt;br /&gt;
&lt;br /&gt;
                        // Store carousel item data in carouselData array&lt;br /&gt;
                        if (imgUrl) {&lt;br /&gt;
                            carouselData.push({ pageUrl: pageUrl, imgUrl: imgUrl, title: page.title });&lt;br /&gt;
                        }&lt;br /&gt;
                    });&lt;br /&gt;
                } else {&lt;br /&gt;
                    // Store carousel item data&lt;br /&gt;
                    if (imgUrl) {&lt;br /&gt;
                        carouselData.push({ pageUrl: pageUrl, imgUrl: imgUrl, title: page.title });&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        Promise.all(requests).then(function () {&lt;br /&gt;
            // Call the function to display carousel&lt;br /&gt;
            displayCarousel(carouselData);&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Creates the raw HTML to be injected into the Homepage, in the carousel container div. &lt;br /&gt;
function displayCarousel(carouselData) {&lt;br /&gt;
    var carouselHtml = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
    carouselData.forEach(function (item) {&lt;br /&gt;
        carouselHtml += `&lt;br /&gt;
            &amp;lt;div class=&amp;quot;carousel-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;a href=&amp;quot;${item.pageUrl}&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;${item.imgUrl}&amp;quot; alt=&amp;quot;Carousel Image&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/a&amp;gt;&lt;br /&gt;
               &amp;lt;div class=&amp;quot;carousel-title&amp;quot;&amp;gt;${item.title}&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;
    // Inject the HTML into the carousel container&lt;br /&gt;
    var carouselContainer = $(&#039;.carousel-container&#039;);&lt;br /&gt;
    carouselContainer.html(carouselHtml);&lt;br /&gt;
&lt;br /&gt;
    // Initialize the carousel behavior&lt;br /&gt;
    initializeCarousel();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function initializeCarousel() {&lt;br /&gt;
    let currentIndex = 0;&lt;br /&gt;
    let $carouselItems = $(&amp;quot;.carousel-item&amp;quot;);&lt;br /&gt;
    let totalItems = $carouselItems.length;&lt;br /&gt;
    &lt;br /&gt;
    $carouselItems.hide().eq(currentIndex).show();&lt;br /&gt;
&lt;br /&gt;
    let $prevButton = $(&#039;&amp;lt;button class=&amp;quot;carousel-prev&amp;quot;&amp;gt; &amp;amp;#128896; &amp;lt;/button&amp;gt;&#039;);&lt;br /&gt;
    let $nextButton = $(&#039;&amp;lt;button class=&amp;quot;carousel-next&amp;quot;&amp;gt; &amp;amp;#128898; &amp;lt;/button&amp;gt;&#039;);&lt;br /&gt;
    $(&#039;.carousel-container&#039;).append($prevButton, $nextButton);&lt;br /&gt;
    &lt;br /&gt;
    function nextSlide() {&lt;br /&gt;
        currentIndex = (currentIndex + 1) % totalItems;&lt;br /&gt;
        updateCarousel();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Auto slide every 10 seconds&lt;br /&gt;
    let autoSlide = setInterval(nextSlide, 10000); &lt;br /&gt;
    function resetInterval() {&lt;br /&gt;
        clearInterval(autoSlide);&lt;br /&gt;
        autoSlide = setInterval(nextSlide, 10000);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    $nextButton.click(function () {&lt;br /&gt;
        nextSlide();&lt;br /&gt;
        resetInterval();&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    $prevButton.click(function () {&lt;br /&gt;
        currentIndex = (currentIndex - 1 + totalItems) % totalItems;&lt;br /&gt;
        updateCarousel();&lt;br /&gt;
        resetInterval();&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    function updateCarousel () {&lt;br /&gt;
       $carouselItems.hide().eq(currentIndex).show();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Load the carousel data on page load&lt;br /&gt;
$(document).ready(function () {&lt;br /&gt;
    loadCarouselData(); &lt;br /&gt;
}); &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Individual Project pages (and potentially tools): if page is part of a category, insert any corresponding skill badges at top of page&lt;br /&gt;
if(document.getElementById(&amp;quot;catlinks&amp;quot;) != null) {&lt;br /&gt;
    document.querySelectorAll(&amp;quot;#catlinks li a&amp;quot;).forEach((cat) =&amp;gt; {&lt;br /&gt;
        let query = &amp;quot;#firstHeading&amp;quot;;&lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Airbrushing&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Airbrushing_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Fabrication&amp;quot;, true, &amp;quot;Airbrushing&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Button Pressing&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Button_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Crafts&amp;quot;, true, &amp;quot;Button Pressing&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Cassette Making&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Cassette_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Crafts&amp;quot;, true, &amp;quot;Cassette Making&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Crafting&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Crafting_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Crafts&amp;quot;, true, &amp;quot;Crafting&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Graphic Design&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Graphic_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Design&amp;quot;, true, &amp;quot;Graphic Design&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Hand Sewing&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Handsewing_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Textiles&amp;quot;, true, &amp;quot;Hand Sewing&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Laser Cutting&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Laser_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;CNC-Laser&amp;quot;, true, &amp;quot;Laser Cutting&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Machining&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Machining_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;CNC-Laser&amp;quot;, true, &amp;quot;Machining&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:3D Modeling&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Modeling_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Design&amp;quot;, true, &amp;quot;3D Modeling&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:3D Printing&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Printing_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Fabrication&amp;quot;, true, &amp;quot;3D Printing&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Programming&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Programming_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Design&amp;quot;, true, &amp;quot;Programming&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Soldering&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Soldering_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Metalworking&amp;quot;, true, &amp;quot;Soldering&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Technical Design&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Technical_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Design&amp;quot;, true, &amp;quot;Technical Design&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Textiles&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Textile_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Textiles&amp;quot;, true, &amp;quot;Textiles&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Welding&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Welding_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Metalworking&amp;quot;, true, &amp;quot;Welding&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Woodworking&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Woodworking_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Fabrication&amp;quot;, true, &amp;quot;Woodworking&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
    })&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// uses api to insert image at given selector element in html, using image in mediawiki format (eg [[File:filename...]])&lt;br /&gt;
// optional style parameter gets applied&lt;br /&gt;
// if asLinkedSkillBadge is true, styles as skill badge (image wrapped in &amp;lt;a&amp;gt; link)&lt;br /&gt;
function insertImage(image, selector, style=&amp;quot;&amp;quot;, linkFilter=&amp;quot;&amp;quot;, asLinkedSkillBadge=false, tooltip=image) {&lt;br /&gt;
    $.getJSON(&lt;br /&gt;
        mw.util.wikiScript( &#039;api&#039; ), {&lt;br /&gt;
            format: &#039;json&#039;,&lt;br /&gt;
            action: &#039;query&#039;,&lt;br /&gt;
            titles: image,&lt;br /&gt;
            prop: &#039;imageinfo&#039;,&lt;br /&gt;
            iiprop: &#039;url&#039;&lt;br /&gt;
        },&lt;br /&gt;
        function( obj ) {&lt;br /&gt;
            let pages = obj.query.pages;&lt;br /&gt;
            let result1 = pages[Object.keys(pages)[0]];&lt;br /&gt;
            let url = result1.imageinfo[0].url;&lt;br /&gt;
            let alt = result1.title; // set alt text to image title&lt;br /&gt;
            let urlSub = url.substring(url.indexOf(&amp;quot;/&amp;quot;)); // get just later part of url as link to image (after first slash)&lt;br /&gt;
            if(asLinkedSkillBadge) { // insert as linked skill badge (image wrapped in &amp;lt;a&amp;gt; with link to prefiltered Project Tutorials page)&lt;br /&gt;
                document.querySelector(selector).innerHTML += &#039;&amp;lt;a href=&amp;quot;./Project_Tutorials?title=Project_Tutorials&amp;amp;filter=&#039;+linkFilter+&#039;&amp;quot; title=&amp;quot;&#039;+tooltip+&#039;&amp;quot;&amp;gt;&amp;lt;img class=&amp;quot;skill-badge-img&amp;quot; src=&amp;quot;&#039;+urlSub+&#039;&amp;quot; alt=&amp;quot;&#039;+alt+&#039;&amp;quot; style=&amp;quot;&#039;+style+&#039;&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
            }&lt;br /&gt;
            else { // insert as regular image&lt;br /&gt;
                document.querySelector(selector).innerHTML += &#039;&amp;lt;img src=&amp;quot;&#039;+urlSub+&#039;&amp;quot; alt=&amp;quot;&#039;+alt+&#039;&amp;quot; style=&amp;quot;&#039;+style+&#039;&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* like button. Only appears on &amp;quot;Main&amp;quot; Namespace pages that aren&#039;t sidebar pages (should be restricted to content pages like articles).*/&lt;br /&gt;
/* Styled in common.css*/&lt;br /&gt;
if (mw.config.get(&#039;wgNamespaceNumber&#039;) == 0 &amp;amp;&amp;amp; mw.config.get(&#039;wgPageName&#039;) !== &#039;Project_Tutorials&#039; &amp;amp;&amp;amp; mw.config.get(&#039;wgPageName&#039;) !== &#039;Tools&#039; &amp;amp;&amp;amp; mw.config.get(&#039;wgPageName&#039;) !== &#039;Spaces&#039; &amp;amp;&amp;amp; mw.config.get(&#039;wgPageName&#039;) !== &#039;Home_New&#039;) {&lt;br /&gt;
    // if page is favorited we should show unfavorite button instead. Direct to login if not logged in.&lt;br /&gt;
    if (document.querySelector(&amp;quot;#ca-favorite&amp;quot;)) {&lt;br /&gt;
        document.getElementById(&amp;quot;firstHeading&amp;quot;).innerHTML += &#039;&amp;lt;a href=/wiki/index.php?title=&#039;+mw.config.get(&#039;wgPageName&#039;)+&#039;&amp;amp;action=favorite&amp;amp;returnto=&#039;+mw.config.get(&#039;wgPageName&#039;)+&#039;&amp;gt;&amp;lt;button class=&amp;quot;favorite&amp;quot;&amp;gt;&amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
    } else if (document.querySelector(&amp;quot;#ca-unfavorite&amp;quot;)) {&lt;br /&gt;
        document.getElementById(&amp;quot;firstHeading&amp;quot;).innerHTML += &#039;&amp;lt;a href=/wiki/index.php?title=&#039;+mw.config.get(&#039;wgPageName&#039;)+&#039;&amp;amp;action=unfavorite&amp;amp;returnto=&#039;+mw.config.get(&#039;wgPageName&#039;)+&#039;&amp;gt;&amp;lt;button class=&amp;quot;unfavorite&amp;quot;&amp;gt;&amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
    // occurs if the user is not logged in:&lt;br /&gt;
    } else {&lt;br /&gt;
        document.getElementById(&amp;quot;firstHeading&amp;quot;).innerHTML += &#039;&amp;lt;a href=&#039;+document.querySelector(&amp;quot;#pt-login a&amp;quot;).href+&#039;&amp;gt;&amp;lt;button class=&amp;quot;favorite&amp;quot;&amp;gt;&amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
// open any &amp;lt;a&amp;gt; wrapped in &amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt; in same tab (generally internal links that must be treated as external links in order to give url parameters)&lt;br /&gt;
$(&#039;u.plainlinks a&#039;).each(function() { $(this).attr(&#039;target&#039;, &amp;quot;_self&amp;quot;)});&lt;/div&gt;</summary>
		<author><name>Winhallk</name></author>
	</entry>
	<entry>
		<id>https://makerspace.cc/wiki/index.php?title=Spaces_New&amp;diff=9064</id>
		<title>Spaces New</title>
		<link rel="alternate" type="text/html" href="https://makerspace.cc/wiki/index.php?title=Spaces_New&amp;diff=9064"/>
		<updated>2025-03-10T18:28:39Z</updated>

		<summary type="html">&lt;p&gt;Winhallk: Winhallk moved page Spaces New to Spaces&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Spaces]]&lt;/div&gt;</summary>
		<author><name>Winhallk</name></author>
	</entry>
	<entry>
		<id>https://makerspace.cc/wiki/index.php?title=Spaces&amp;diff=9063</id>
		<title>Spaces</title>
		<link rel="alternate" type="text/html" href="https://makerspace.cc/wiki/index.php?title=Spaces&amp;diff=9063"/>
		<updated>2025-03-10T18:28:39Z</updated>

		<summary type="html">&lt;p&gt;Winhallk: Winhallk moved page Spaces New to Spaces&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:&amp;lt;span style=&amp;quot;display: block; text-align: center; font-weight: bold&amp;quot;&amp;gt;Makerspace Locations&amp;lt;/span&amp;gt;}}&lt;br /&gt;
Are you hoping to make something on campus? Here&#039;s a listing of all the places on campus that can help you out! All Makerspace locations are in the basement of [https://www.carleton.edu/map/?id=2017#!m/622428?share Anderson Hall].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pc-map&amp;quot; style=&amp;quot;display: flex; justify-content: center; align-items: center; text-align: center;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;imagemap&amp;gt;Image:Mapff.png| Interactive Map&lt;br /&gt;
      rect 200 271 12 113 [[Spaces_New#Class_Of_1969_Makerspace|Makerspace]]&lt;br /&gt;
      rect 14 346 198 479 [[Spaces_New#Repair_Lair|Repair Lair]]&lt;br /&gt;
      rect 795 81 990 213 [[Spaces_New#Machine_Shop|Machine Shop]]&lt;br /&gt;
      rect 793 257 989 376 [[Spaces_New#Wood_Shop|Wood Shop]]&lt;br /&gt;
      rect 786 418 997 547 [[Spaces_New#Instrument_Shop|Instrument Shop]]&lt;br /&gt;
      poly 289 154 289 197 299 199 296 208 288 211 288 216 375 216 376 203 383 203 386 209 390 214 395 209 397 214 437 214 436 154 [[Spaces_New#Class_Of_1969_Makerspace|Makerspace]]&lt;br /&gt;
      poly 331 243 330 370 325 361 319 363 315 371 221 371 221 397 265 398 266 410 273 406 278 397 329 394 335 405 342 410 347 414 348 430 386 433 387 413 397 410 401 403 403 396 407 390 406 373 368 371 367 243 357 247 352 254 345 248 339 246 [[Spaces_New#Repair_Lair|Repair Lair]]&lt;br /&gt;
      poly 651 114 651 215 627 218 627 284 579 286 580 311 622 313 625 371 644 372 646 384 652 382 657 376 667 382 667 373 713 371 716 285 693 283 690 275 683 273 679 283 677 215 686 214 685 114 675 114 675 122 672 127 665 127 660 114 [[Spaces_New#Machine_Shop|Machine Shop]]&lt;br /&gt;
      poly 624 373 623 464 646 464 649 472 658 479 660 465 713 463 712 374 666 374 667 381 660 381 646 385 645 372 [[Spaces_New#Wood_Shop|Wood Shop]]&lt;br /&gt;
      poly 621 438 543 436 546 468 550 474 556 480 550 496 576 495 578 555 716 556 716 465 661 465 660 478 646 465 624 466 621 454 621 449 621 444 [[Spaces_New#Instrument_Shop|Instrument Shop]]&lt;br /&gt;
  &amp;lt;/imagemap&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mobile-map&amp;quot; style=&amp;quot;display: flex; justify-content: center; align-items: center; text-align: center;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;imagemap&amp;gt;Image:Mapfff.png| Interactive Map&lt;br /&gt;
      poly 85 155 83 197 96 200 91 208 82 209 84 215 173 217 174 204 180 205 184 212 192 208 195 217 233 216 231 155 [[Spaces_New#Class_Of_1969_Makerspace|Makerspace]]&lt;br /&gt;
      poly 127 243 127 370 122 361 113 366 110 373 17 371 16 397 61 398 61 409 69 407 75 397 124 396 128 404 133 409 141 414 143 431 185 431 184 414 191 412 198 405 202 396 204 373 165 370 163 246 155 247 149 254 142 248 133 244 [[Spaces_New#Repair_Lair|Repair Lair]]&lt;br /&gt;
      poly 448 115 446 214 421 216 423 281 374 286 375 310 420 312 421 370 439 371 442 382 449 382 452 377 461 383 462 373 510 370 511 283 488 281 479 271 478 281 472 282 472 215 478 213 481 115 471 113 468 126 459 123 457 114 [[Spaces_New#Machine_Shop|Machine Shop]]&lt;br /&gt;
      poly 420 372 420 464 442 464 446 472 454 477 456 464 512 465 510 372 463 373 464 383 456 379 448 385 441 385 440 371 [[Spaces_New#Wood_Shop|Wood Shop]]&lt;br /&gt;
      poly 339 437 341 466 345 473 353 481 346 494 372 495 373 555 512 555 511 465 458 466 454 478 446 474 442 466 421 464 416 439 [[Spaces_New#Instrument_Shop|Instrument Shop]]&lt;br /&gt;
  &amp;lt;/imagemap&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Class Of 1969 Makerspace&#039;&#039;&#039; ==&lt;br /&gt;
[[File:PXL 20230710 132906251.jpg|alt=A view of the inside of the  Class 1969 Makerspace|thumb]]&lt;br /&gt;
Central hub for all making on the Carleton College campus. This is the central hub for your making needs on campus. Have an idea and don&#039;t know where to start? Stop in and we&#039;ll help get you started! Want to learn a skill, but don&#039;t have a project in mind? We can help you with a variety of kits and brainstorming tools!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Anderson Hall 028 (Basement)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hours:&#039;&#039;&#039; Daily, 1-6PM&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tools&#039;&#039;&#039;: &amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[{{fullurl:TOOLS|filter=Makerspace%20Tools}} MAKERSPACE TOOLS]&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Airbrushing badge small.png|Airbrushing|alt=Green &amp;quot;airbrushing&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Fabrication}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Button badge small.png|Button Pressing|alt=Blue &amp;quot;button pressing&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Crafts}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Cassette badge small.png|Cassette Making|alt=Yellow &amp;quot;cassette making icon&amp;quot;|frameless|link={{fullurl:GALLERY|filter=Crafts}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Crafting badge_small.png|Crafting|alt=Brown &amp;quot;crafting&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Crafts}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Graphic badge small.png|Graphic Design|alt=Indigo &amp;quot;graphic design&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Design}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Handsewing badge small.png|Hand Sewing|alt=Purple &amp;quot;handsewing&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Textiles}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Laser badge small.png|Laser Cutting|alt=Gray &amp;quot;laser cutting&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=CNC-Laser}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Modeling badge small.png|3D Modeling|alt=Yellow &amp;quot;3d modeling&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Design}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Printing badge small.png|3D Printing|alt=Purple &amp;quot;3d printing&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Fabrication}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Programming badge small.png|Programming|alt=Green &amp;quot;programming&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Design}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Soldering badge small.png|Soldering|alt=Orange &amp;quot;soldering&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Metalworking}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Technical badge small.png|Technical Design|alt=Green &amp;quot;technical design&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Design}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Textile badge small.png|Textiles|alt=Green &amp;quot;textiles&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Textiles}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Repair Lair&#039;&#039;&#039; ==&lt;br /&gt;
[[File:Final repairlair.jpg|thumb]]&lt;br /&gt;
The Makerspace Repair Lair is located in the hallway across from the Makerspace. It is open after hours. It contains the Bike Repair cart, a sewing machine, scrap fabric, and many reusable treasures sourced from around campus.    &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Anderson Hall 029 (Basement)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hours:&#039;&#039;&#039; Anytime!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Crafting_badge_small.png|Crafting|alt=Brown &amp;quot;Crafting&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Crafts}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Handsewing badge small.png|Hand Sewing|alt=Purple &amp;quot;handsewing&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Textiles}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Textile badge small.png|Textiles|alt=Green &amp;quot;textiles&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Textiles}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Wood Shop&#039;&#039;&#039; ==&lt;br /&gt;
[[File:Ms woodshop.jpg|alt=A view of the inside of the Woodshop|thumb]]&lt;br /&gt;
The Makerspace Woodshop is a general purpose carpentry shop available for general student use. We have a limited supply of materials available to for use, after filing out a project proposal. The space contains a variety of saws (table, panel, band, battery, miller), drill presses, jointers, nail guns, and sanders.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Anderson Hall 037 (Basement)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hours:&#039;&#039;&#039; Daily, 1-6PM&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tools&#039;&#039;&#039;: &amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[{{fullurl:TOOLS|filter=Wood%20Shop%20Tools}} WOODSHOP TOOLS]&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Machining badge small.png|Machining|alt=Pink &amp;quot;machining&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=CNC-Laser}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Modeling badge small.png|3D Modeling|alt=Yellow &amp;quot;3d modeling&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Design}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Technical badge small.png|Technical Design|alt=Green &amp;quot;technical design&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Design}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Woodworking badge small.png|Woodworking|alt=Blue &amp;quot;woodworking&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Fabrication}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Instrument Shop&#039;&#039;&#039; ==&lt;br /&gt;
[[File:Ms instrumentshop.jpg|alt=A view of the inside of the Instrument Shop|thumb]]&lt;br /&gt;
This is the Scientific Instrument production shop for Carleton College. This shop contains all of the higher precision tools used to make apparatus for the STEM department research labs. This space also contains a student-accessible welding studio, CNC plasma cutter, sheet metal sheer, and press brake, as well as a dermestid beetle colony.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Anderson Hall 049 (Basement)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hours:&#039;&#039;&#039; Daily, 1-6PM&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Machining badge small.png|Machining|alt=Pink &amp;quot;machining&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=CNC-Laser}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Modeling badge small.png|3D Modeling|alt=Yellow &amp;quot;3d modeling&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Design}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Technical badge small.png|Technical Design|alt=Green &amp;quot;technical design&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Design}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Welding badge small.png|Welding|alt=Indigo &amp;quot;welding&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Metalworking}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Machine Shop&#039;&#039;&#039; ==&lt;br /&gt;
[[File:PXL 20230710 133016630.jpg|alt=A view of the inside of the Machine Shop|thumb]]&lt;br /&gt;
General purpose machine shop for student use. The Build Spot Student Machine Shop has a full complement of precision machining equipment suitable for working with a variety of metals and plastics.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Location:&#039;&#039;&#039; Anderson Hall 039 (Basement)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hours:&#039;&#039;&#039; Daily, 1-6PM&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tools&#039;&#039;&#039;: &amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[{{fullurl:TOOLS|filter=Machine%20Shop%20Tools}} MACHINE SHOP TOOLS]&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Laser badge small.png|Laser Cutting|alt=Gray &amp;quot;laser cutting&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=CNC-Laser}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Machining badge small.png|Machining|alt=Pink &amp;quot;machining&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=CNC-Laser}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt;[[File:Technical badge small.png|Technical Design|alt=Green &amp;quot;technical design&amp;quot; icon|frameless|link={{fullurl:GALLERY|filter=Design}}|class=skill-badge-img]]&amp;lt;/u&amp;gt;&lt;/div&gt;</summary>
		<author><name>Winhallk</name></author>
	</entry>
	<entry>
		<id>https://makerspace.cc/wiki/index.php?title=MediaWiki:Common.js&amp;diff=9062</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://makerspace.cc/wiki/index.php?title=MediaWiki:Common.js&amp;diff=9062"/>
		<updated>2025-03-10T18:27:04Z</updated>

		<summary type="html">&lt;p&gt;Winhallk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
&lt;br /&gt;
if (document) window.µ = function (id, elem) {&lt;br /&gt;
  var ret;&lt;br /&gt;
  var root = ((elem) ? elem : document);&lt;br /&gt;
  switch (id.charAt(0)) {&lt;br /&gt;
    case &#039;|&#039;:&lt;br /&gt;
      ret = root;&lt;br /&gt;
      break;&lt;br /&gt;
    case &#039;+&#039;:&lt;br /&gt;
      ret = document.createElement(id.substring(1));&lt;br /&gt;
      if (elem) elem.appendChild(ret);&lt;br /&gt;
      break;&lt;br /&gt;
    case &#039;#&#039;:&lt;br /&gt;
      ret = root.querySelector(id);&lt;br /&gt;
      break;&lt;br /&gt;
    default:&lt;br /&gt;
      ret = Array.prototype.slice.call(root.querySelectorAll(id));&lt;br /&gt;
      break;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  return ret;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/* add additional edit button in bottom right corner -- styled in Common.css */ &lt;br /&gt;
/* Takes them to visual editor if available/logged in; if not, takes them to normal edit mode; if they are not logged in at all, takes them to login page */&lt;br /&gt;
let editLinkQuery = document.querySelector(&amp;quot;#ca-ve-edit a&amp;quot;) ? &amp;quot;#ca-ve-edit a&amp;quot; : (document.querySelector(&amp;quot;#ca-edit a&amp;quot;) ? &amp;quot;#ca-edit a&amp;quot; : &amp;quot;#pt-login a&amp;quot;);&lt;br /&gt;
document.getElementById(&amp;quot;content&amp;quot;).innerHTML += &#039;&amp;lt;a href=&#039;+document.querySelector(editLinkQuery).href+&#039;&amp;gt;&amp;lt;button class=&amp;quot;big-edit-button&amp;quot;&amp;gt;&amp;lt;p&amp;gt;EDIT&amp;lt;/p&amp;gt;&amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
/* looks at current url parameters of the form &#039;?param1=value1&amp;amp;param2=value2...&#039; and returns a dictionary of the form {param1: value1, param2: value2, ...} */&lt;br /&gt;
function parseUrlParameters() {&lt;br /&gt;
    let queryStr = window.location.search.substring(1).replaceAll(&amp;quot;%20&amp;quot;, &amp;quot; &amp;quot;); // start string after the question mark and replace &#039;%20&#039; with spaces&lt;br /&gt;
    let queryDict = {};&lt;br /&gt;
    queryStr.split(&amp;quot;&amp;amp;&amp;quot;).forEach(function(query) {&lt;br /&gt;
        let pair = query.split(&amp;quot;=&amp;quot;);&lt;br /&gt;
        queryDict[pair[0]] = pair[1];&lt;br /&gt;
    })&lt;br /&gt;
    return queryDict;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Project Tutorials Gallery&lt;br /&gt;
mw.loader.using([&#039;mediawiki.api&#039;, &#039;jquery&#039;], function () {&lt;br /&gt;
    $(document).ready(function () {&lt;br /&gt;
        if (mw.config.get(&#039;wgPageName&#039;) !== &#039;Project_Tutorials&#039;) return;  // Ensure script runs only on the Project Tutorials page&lt;br /&gt;
&lt;br /&gt;
        // get url parameters and automatically select filter to value of &#039;filter&#039; parameter in url (eg www.wikititle/pagetitle?filter=Textiles)&lt;br /&gt;
        let queryDict = parseUrlParameters();&lt;br /&gt;
        var category = queryDict[&#039;filter&#039;] ? queryDict[&#039;filter&#039;] : &amp;quot;Projects&amp;quot;; // If no filter query in url, use default category Projects&lt;br /&gt;
        var galleryContainer = $(&#039;#project-gallery&#039;);  &lt;br /&gt;
&lt;br /&gt;
        /* add buttons to filter by category on Project Tutorials page&lt;br /&gt;
           html text displayed can be anything, but value of data-filter should be the same format as value passed in url parameters and entry in categories &lt;br /&gt;
           dictionary in loadGallery() function */&lt;br /&gt;
        galleryContainer.before(&#039;&amp;lt;div id=&amp;quot;category-filter&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;button id=&amp;quot;all-filter-btn&amp;quot; class=&amp;quot;filter-btn&amp;quot; data-filter=&amp;quot;Projects&amp;quot;&amp;gt;Show All&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;button id=&amp;quot;crafts-filter-btn&amp;quot; class=&amp;quot;filter-btn&amp;quot; data-filter=&amp;quot;Crafts&amp;quot;&amp;gt;Crafts&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;button id=&amp;quot;design-filter-btn&amp;quot; class=&amp;quot;filter-btn&amp;quot; data-filter=&amp;quot;Design&amp;quot;&amp;gt;Design&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;button id=&amp;quot;fabrication-filter-btn&amp;quot; class=&amp;quot;filter-btn&amp;quot; data-filter=&amp;quot;Fabrication&amp;quot;&amp;gt;Fabrication&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;button id=&amp;quot;cnc-laser-filter-btn&amp;quot; class=&amp;quot;filter-btn&amp;quot; data-filter=&amp;quot;CNC-Laser&amp;quot;&amp;gt;Laser &amp;amp; CNC&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;button id=&amp;quot;metalworking-filter-btn&amp;quot; class=&amp;quot;filter-btn&amp;quot; data-filter=&amp;quot;Metalworking&amp;quot;&amp;gt;Metalworking&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;button id=&amp;quot;textiles-filter-btn&amp;quot; class=&amp;quot;filter-btn&amp;quot; data-filter=&amp;quot;Textiles&amp;quot;&amp;gt;Textiles&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
        // use insertImage function to query api and insert given image at given id, with given style (adds icons to Project Tutorials filter buttons)&lt;br /&gt;
        insertImage(&amp;quot;File:Airbrushing_icon_color.png&amp;quot;, &amp;quot;#fabrication-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Button_icon_color.png&amp;quot;, &amp;quot;#crafts-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Cassette_icon_color.png&amp;quot;, &amp;quot;#crafts-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Crafting_icon_color.png&amp;quot;, &amp;quot;#crafts-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Graphic_icon_color.png&amp;quot;, &amp;quot;#design-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Handsewing_icon_color.png&amp;quot;, &amp;quot;#textiles-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Laser_icon_color.png&amp;quot;, &amp;quot;#cnc-laser-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Machining_icon_color.png&amp;quot;, &amp;quot;#cnc-laser-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Modeling_icon_color.png&amp;quot;, &amp;quot;#design-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Printing_icon_color.png&amp;quot;, &amp;quot;#fabrication-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Programming_icon_color.png&amp;quot;, &amp;quot;#design-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Soldering_icon_color.png&amp;quot;, &amp;quot;#metalworking-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Technical_icon_color.png&amp;quot;, &amp;quot;#design-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Textile_icon_color.png&amp;quot;, &amp;quot;#textiles-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Welding_icon_color.png&amp;quot;, &amp;quot;#metalworking-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Woodworking_icon_color.png&amp;quot;, &amp;quot;#fabrication-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        // load gallery based on category&lt;br /&gt;
        function loadGallery(category) {&lt;br /&gt;
            galleryContainer.html(&#039;&amp;lt;div class=&amp;quot;gallery-container&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;);  &lt;br /&gt;
&lt;br /&gt;
            let pageTitles = [];&lt;br /&gt;
&lt;br /&gt;
            // map larger umbrella categories to the skill badge categories they include&lt;br /&gt;
            let categories = {&lt;br /&gt;
                &amp;quot;Projects&amp;quot; : [&amp;quot;Projects&amp;quot;],&lt;br /&gt;
                &amp;quot;Design&amp;quot; : [&amp;quot;Graphic Design&amp;quot;, &amp;quot;3D Modeling&amp;quot;, &amp;quot;Technical Design&amp;quot;, &amp;quot;Programming&amp;quot;],&lt;br /&gt;
                &amp;quot;Textiles&amp;quot; : [&amp;quot;Textiles&amp;quot;, &amp;quot;Hand Sewing&amp;quot;],&lt;br /&gt;
                &amp;quot;Crafts&amp;quot; : [&amp;quot;Crafting&amp;quot;, &amp;quot;Button Pressing&amp;quot;, &amp;quot;Cassette Making&amp;quot;],&lt;br /&gt;
                &amp;quot;Fabrication&amp;quot; : [&amp;quot;Airbrushing&amp;quot;, &amp;quot;3D Printing&amp;quot;, &amp;quot;Woodworking&amp;quot;],&lt;br /&gt;
                &amp;quot;CNC-Laser&amp;quot; : [&amp;quot;Laser Cutting&amp;quot;, &amp;quot;Machining&amp;quot;],&lt;br /&gt;
                &amp;quot;Metalworking&amp;quot; : [&amp;quot;Soldering&amp;quot;, &amp;quot;Welding&amp;quot;]&lt;br /&gt;
            };&lt;br /&gt;
&lt;br /&gt;
            // insert projects corresponding to each skill under broader category filter selected&lt;br /&gt;
            categories[category].forEach(function(cat) {&lt;br /&gt;
                new mw.Api().get({&lt;br /&gt;
                    action: &#039;query&#039;,&lt;br /&gt;
                    list: &#039;categorymembers&#039;,&lt;br /&gt;
                    cmtitle: &#039;Category:&#039; + cat,&lt;br /&gt;
                    cmlimit: 50,  &lt;br /&gt;
                    format: &#039;json&#039;&lt;br /&gt;
                }).done(function (data) {&lt;br /&gt;
                    var pages = data.query.categorymembers;&lt;br /&gt;
                    var galleryHtml = &#039;&#039;;&lt;br /&gt;
                    var requests = pages.map(function (page) {&lt;br /&gt;
                        return new mw.Api().get({&lt;br /&gt;
                            action: &#039;query&#039;,&lt;br /&gt;
                            prop: &#039;revisions&#039;,&lt;br /&gt;
                            rvprop: &#039;content&#039;,&lt;br /&gt;
                            titles: page.title,&lt;br /&gt;
                            format: &#039;json&#039;&lt;br /&gt;
                        }).then(function (pageData) {&lt;br /&gt;
                            var pageId = Object.keys(pageData.query.pages)[0];&lt;br /&gt;
                            var content = pageData.query.pages[pageId].revisions[0][&#039;*&#039;];&lt;br /&gt;
                            var pageUrl = mw.util.getUrl(page.title);&lt;br /&gt;
                            var imgUrl = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
                            // Try to find a direct image URL (img1=https://...)&lt;br /&gt;
                            var directMatch = content.match(/img1=(https:\/\/[^\s|}%]+)/);&lt;br /&gt;
                            if (directMatch) {&lt;br /&gt;
                                imgUrl = directMatch[1];&lt;br /&gt;
                            }&lt;br /&gt;
&lt;br /&gt;
                            // If no direct URL, try to find a [[File:...]] entry&lt;br /&gt;
                            var fileMatch = content.match(/\[\[File:([^|\]]+)/);&lt;br /&gt;
                            if (!imgUrl &amp;amp;&amp;amp; fileMatch) {&lt;br /&gt;
                                var fileName = fileMatch[1].trim();&lt;br /&gt;
&lt;br /&gt;
                                // Fetch full image URL from MediaWiki API&lt;br /&gt;
                                return new mw.Api().get({&lt;br /&gt;
                                    action: &#039;query&#039;,&lt;br /&gt;
                                    titles: &#039;File:&#039; + fileName,&lt;br /&gt;
                                    prop: &#039;imageinfo&#039;,&lt;br /&gt;
                                    iiprop: &#039;url&#039;,&lt;br /&gt;
                                    format: &#039;json&#039;&lt;br /&gt;
                                }).then(function (imageData) {&lt;br /&gt;
                                    var imagePageId = Object.keys(imageData.query.pages)[0];&lt;br /&gt;
                                    if (imageData.query.pages[imagePageId].imageinfo) {&lt;br /&gt;
                                        imgUrl = imageData.query.pages[imagePageId].imageinfo[0].url;&lt;br /&gt;
                                    }&lt;br /&gt;
&lt;br /&gt;
                                &lt;br /&gt;
                                    galleryHtml += generateGalleryItem(pageUrl, page.title, imgUrl, category);&lt;br /&gt;
                                });&lt;br /&gt;
                            } else {&lt;br /&gt;
                                // Add the gallery item if the image was found and is not already being shown&lt;br /&gt;
                                  if(!pageTitles.includes(page.title)) {&lt;br /&gt;
                                    galleryHtml += generateGalleryItem(pageUrl, page.title, imgUrl, category);&lt;br /&gt;
                                    pageTitles.push(page.title);&lt;br /&gt;
                                  }&lt;br /&gt;
                            }&lt;br /&gt;
                        });&lt;br /&gt;
                    });&lt;br /&gt;
&lt;br /&gt;
                Promise.all(requests).then(function () {&lt;br /&gt;
                    $(&#039;.gallery-container&#039;).append(galleryHtml);&lt;br /&gt;
                });&lt;br /&gt;
                });&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // generate a gallery&lt;br /&gt;
        function generateGalleryItem(pageUrl, title, imgUrl, category) {&lt;br /&gt;
            return `&lt;br /&gt;
                &amp;lt;div class=&amp;quot;gallery-item ${category}&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;a href=&amp;quot;${pageUrl}&amp;quot;&amp;gt;&lt;br /&gt;
                        ${imgUrl ? `&amp;lt;img src=&amp;quot;${imgUrl}&amp;quot; alt=&amp;quot;${title}&amp;quot;&amp;gt;` : `&amp;lt;img src=&amp;quot;https://upload.wikimedia.org/wikipedia/commons/6/65/No-Image-Placeholder.svg&amp;quot; alt=&amp;quot;No Image Available&amp;quot;&amp;gt;`}&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;/a&amp;gt;&lt;br /&gt;
                    &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;a href=&amp;quot;${pageUrl}&amp;quot;&amp;gt;${title}&amp;lt;/a&amp;gt;&lt;br /&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;
        loadGallery(category);&lt;br /&gt;
&lt;br /&gt;
        // find filter button corresponding to selected category and add css class &#039;selected-filter&#039;&lt;br /&gt;
        $(&amp;quot;.filter-btn&amp;quot;).each(function () { $(this).data(&amp;quot;filter&amp;quot;) === category ? $(this).addClass(&#039;selected-filter&#039;) : null});&lt;br /&gt;
&lt;br /&gt;
        // when filter button is clicked, load projects for that category, deselect current filtered button, and select newly clicked filter button&lt;br /&gt;
        $(&amp;quot;.filter-btn&amp;quot;).click(function () {&lt;br /&gt;
            var selectedCategory = $(this).data(&amp;quot;filter&amp;quot;);&lt;br /&gt;
            loadGallery(selectedCategory); &lt;br /&gt;
            $(&#039;.filter-btn.selected-filter&#039;).each((i, elem) =&amp;gt; $(elem).removeClass(&#039;selected-filter&#039;));&lt;br /&gt;
            $(this).addClass(&#039;selected-filter&#039;);&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// Tools Gallery&lt;br /&gt;
mw.loader.using([&#039;mediawiki.api&#039;, &#039;jquery&#039;], function () {&lt;br /&gt;
    $(document).ready(function () {&lt;br /&gt;
        if (mw.config.get(&#039;wgPageName&#039;) !== &#039;Tools&#039;) return;  // Ensure script runs only on the Tools page&lt;br /&gt;
&lt;br /&gt;
        // get url parameters and automatically select appropriate filter&lt;br /&gt;
        let queryDict = parseUrlParameters();&lt;br /&gt;
        var category = queryDict[&#039;filter&#039;] ? queryDict[&#039;filter&#039;] : &amp;quot;Tools&amp;quot;; // If no filter query in url, use default category&lt;br /&gt;
        var galleryContainer = $(&#039;#tools-gallery&#039;);  &lt;br /&gt;
&lt;br /&gt;
        // Add filter buttons before the gallery&lt;br /&gt;
        galleryContainer.before(&#039;&amp;lt;div id=&amp;quot;category-filter&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;button class=&amp;quot;filter-btn&amp;quot; data-filter=&amp;quot;Tools&amp;quot;&amp;gt;Show All&amp;lt;/button&amp;gt;&#039; +  &lt;br /&gt;
            &#039;&amp;lt;button class=&amp;quot;filter-btn&amp;quot; data-filter=&amp;quot;Makerspace Tools&amp;quot;&amp;gt;Makerspace Tools&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;button class=&amp;quot;filter-btn&amp;quot; data-filter=&amp;quot;Machine Shop Tools&amp;quot;&amp;gt;Machine Shop Tools&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;button class=&amp;quot;filter-btn&amp;quot; data-filter=&amp;quot;Wood Shop Tools&amp;quot;&amp;gt;Wood Shop Tools&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;button class=&amp;quot;filter-btn&amp;quot; data-filter=&amp;quot;Instrument Shop Tools&amp;quot;&amp;gt;Instrument Shop Tools&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;button class=&amp;quot;filter-btn&amp;quot; data-filter=&amp;quot;Repair Lair Tools&amp;quot;&amp;gt;Repair Lair Tools&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
        function loadGallery(category) {&lt;br /&gt;
            galleryContainer.html(&#039;&amp;lt;div class=&amp;quot;gallery-container&amp;quot;&amp;gt;Loading gallery...&amp;lt;/div&amp;gt;&#039;);  &lt;br /&gt;
&lt;br /&gt;
            new mw.Api().get({&lt;br /&gt;
                action: &#039;query&#039;,&lt;br /&gt;
                list: &#039;categorymembers&#039;,&lt;br /&gt;
                cmtitle: &#039;Category:&#039; + category,&lt;br /&gt;
                cmlimit: 50,  &lt;br /&gt;
                format: &#039;json&#039;&lt;br /&gt;
            }).done(function (data) {&lt;br /&gt;
                var pages = data.query.categorymembers;&lt;br /&gt;
                var galleryHtml = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
                var requests = pages.map(function (page) {&lt;br /&gt;
                    return new mw.Api().get({&lt;br /&gt;
                        action: &#039;query&#039;,&lt;br /&gt;
                        prop: &#039;revisions&#039;,&lt;br /&gt;
                        rvprop: &#039;content&#039;,&lt;br /&gt;
                        titles: page.title,&lt;br /&gt;
                        format: &#039;json&#039;&lt;br /&gt;
                    }).then(function (pageData) {&lt;br /&gt;
                        var pageId = Object.keys(pageData.query.pages)[0];&lt;br /&gt;
                        var content = pageData.query.pages[pageId].revisions[0][&#039;*&#039;];&lt;br /&gt;
                        var pageUrl = mw.util.getUrl(page.title);&lt;br /&gt;
                        var imgUrl = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
                        // Try to find a [[File:...]] entry&lt;br /&gt;
                        var fileMatch = content.match(/\[\[File:([^|\]]+)/);&lt;br /&gt;
                        if (fileMatch) {&lt;br /&gt;
                            var fileName = fileMatch[1].trim();&lt;br /&gt;
&lt;br /&gt;
                            // Fetch full image URL from MediaWiki API&lt;br /&gt;
                            return new mw.Api().get({&lt;br /&gt;
                                action: &#039;query&#039;,&lt;br /&gt;
                                titles: &#039;File:&#039; + fileName,&lt;br /&gt;
                                prop: &#039;imageinfo&#039;,&lt;br /&gt;
                                iiprop: &#039;url&#039;,&lt;br /&gt;
                                format: &#039;json&#039;&lt;br /&gt;
                            }).then(function (imageData) {&lt;br /&gt;
                                var imagePageId = Object.keys(imageData.query.pages)[0];&lt;br /&gt;
                                if (imageData.query.pages[imagePageId].imageinfo) {&lt;br /&gt;
                                    imgUrl = imageData.query.pages[imagePageId].imageinfo[0].url;&lt;br /&gt;
                                }&lt;br /&gt;
&lt;br /&gt;
                                // Add the gallery item&lt;br /&gt;
                                galleryHtml += generateGalleryItem(pageUrl, page.title, imgUrl, category);&lt;br /&gt;
                            });&lt;br /&gt;
                        } else {&lt;br /&gt;
                            // If no image is found, still display the title&lt;br /&gt;
                            galleryHtml += generateGalleryItem(pageUrl, page.title, imgUrl, category);&lt;br /&gt;
                        }&lt;br /&gt;
                    });&lt;br /&gt;
                });&lt;br /&gt;
&lt;br /&gt;
                Promise.all(requests).then(function () {&lt;br /&gt;
                    // Append gallery items after loading them&lt;br /&gt;
                    galleryContainer.html(&#039;&amp;lt;div class=&amp;quot;gallery-container&amp;quot;&amp;gt;&#039; + galleryHtml + &#039;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
                });&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function generateGalleryItem(pageUrl, title, imgUrl, category) {&lt;br /&gt;
            return `&lt;br /&gt;
                &amp;lt;div class=&amp;quot;gallery-item ${category}&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;a href=&amp;quot;${pageUrl}&amp;quot;&amp;gt;&lt;br /&gt;
                        ${imgUrl ? `&amp;lt;img src=&amp;quot;${imgUrl}&amp;quot; alt=&amp;quot;${title}&amp;quot;&amp;gt;` : `&amp;lt;img src=&amp;quot;https://upload.wikimedia.org/wikipedia/commons/6/65/No-Image-Placeholder.svg&amp;quot; alt=&amp;quot;No Image Available&amp;quot;&amp;gt;`}&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;/a&amp;gt;&lt;br /&gt;
                    &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;a href=&amp;quot;${pageUrl}&amp;quot;&amp;gt;${title}&amp;lt;/a&amp;gt;&lt;br /&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;
        loadGallery(category);&lt;br /&gt;
&lt;br /&gt;
        // find filter button corresponding to preselected category and add css class &#039;selected-filter&#039;&lt;br /&gt;
        $(&amp;quot;.filter-btn&amp;quot;).each(function () { $(this).data(&amp;quot;filter&amp;quot;) === category ? $(this).addClass(&#039;selected-filter&#039;) : null});&lt;br /&gt;
&lt;br /&gt;
        // when filter button is clicked, load tools for that category, deselect current filtered button, and select newly clicked filter button&lt;br /&gt;
        $(&amp;quot;.filter-btn&amp;quot;).click(function () {&lt;br /&gt;
            var selectedCategory = $(this).data(&amp;quot;filter&amp;quot;);&lt;br /&gt;
            loadGallery(selectedCategory);  &lt;br /&gt;
            $(&#039;.filter-btn.selected-filter&#039;).each((i, elem) =&amp;gt; $(elem).removeClass(&#039;selected-filter&#039;));&lt;br /&gt;
            $(this).addClass(&#039;selected-filter&#039;);&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// This uses Media Wiki API retrieve specific projects for the image carousel&lt;br /&gt;
function loadCarouselData() {&lt;br /&gt;
    // Make the API query to fetch pages for carousel&lt;br /&gt;
    var category = &amp;quot;SimpleProjects&amp;quot;; &lt;br /&gt;
    var carouselData = []; &lt;br /&gt;
&lt;br /&gt;
    new mw.Api().get({&lt;br /&gt;
        action: &#039;query&#039;,&lt;br /&gt;
        list: &#039;categorymembers&#039;,&lt;br /&gt;
        cmtitle: &#039;Category:&#039; + category,&lt;br /&gt;
        cmlimit: 50, &lt;br /&gt;
        format: &#039;json&#039;&lt;br /&gt;
    }).done(function (data) {&lt;br /&gt;
        var pages = data.query.categorymembers;&lt;br /&gt;
&lt;br /&gt;
        var requests = pages.map(function (page) {&lt;br /&gt;
            return new mw.Api().get({&lt;br /&gt;
                action: &#039;query&#039;,&lt;br /&gt;
                prop: &#039;revisions&#039;,&lt;br /&gt;
                rvprop: &#039;content&#039;,&lt;br /&gt;
                titles: page.title,&lt;br /&gt;
                format: &#039;json&#039;&lt;br /&gt;
            }).then(function (pageData) {&lt;br /&gt;
                var pageId = Object.keys(pageData.query.pages)[0];&lt;br /&gt;
                var content = pageData.query.pages[pageId].revisions[0][&#039;*&#039;];&lt;br /&gt;
                var pageUrl = mw.util.getUrl(page.title);&lt;br /&gt;
                var imgUrl = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
                // Try to find a direct image URL (img1=https://...). We do this because some images are from widgets.&lt;br /&gt;
                var directMatch = content.match(/img1=(https:\/\/[^\s|}%]+)/);&lt;br /&gt;
                if (directMatch) {&lt;br /&gt;
                    imgUrl = directMatch[1];&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                // If no direct URL, try to find a [[File:...]] entry. This is how Media Wiki embeds images.&lt;br /&gt;
                var fileMatch = content.match(/\[\[File:([^|\]]+)/);&lt;br /&gt;
                if (!imgUrl &amp;amp;&amp;amp; fileMatch) {&lt;br /&gt;
                    var fileName = fileMatch[1].trim();&lt;br /&gt;
&lt;br /&gt;
                    // Fetch full image URL from MediaWiki API&lt;br /&gt;
                    return new mw.Api().get({&lt;br /&gt;
                        action: &#039;query&#039;,&lt;br /&gt;
                        titles: &#039;File:&#039; + fileName,&lt;br /&gt;
                        prop: &#039;imageinfo&#039;,&lt;br /&gt;
                        iiprop: &#039;url&#039;,&lt;br /&gt;
                        format: &#039;json&#039;&lt;br /&gt;
                    }).then(function (imageData) {&lt;br /&gt;
                        var imagePageId = Object.keys(imageData.query.pages)[0];&lt;br /&gt;
                        if (imageData.query.pages[imagePageId].imageinfo) {&lt;br /&gt;
                            imgUrl = imageData.query.pages[imagePageId].imageinfo[0].url;&lt;br /&gt;
                        }&lt;br /&gt;
&lt;br /&gt;
                        // Store carousel item data in carouselData array&lt;br /&gt;
                        if (imgUrl) {&lt;br /&gt;
                            carouselData.push({ pageUrl: pageUrl, imgUrl: imgUrl, title: page.title });&lt;br /&gt;
                        }&lt;br /&gt;
                    });&lt;br /&gt;
                } else {&lt;br /&gt;
                    // Store carousel item data&lt;br /&gt;
                    if (imgUrl) {&lt;br /&gt;
                        carouselData.push({ pageUrl: pageUrl, imgUrl: imgUrl, title: page.title });&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        Promise.all(requests).then(function () {&lt;br /&gt;
            // Call the function to display carousel&lt;br /&gt;
            displayCarousel(carouselData);&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Creates the raw HTML to be injected into the Homepage, in the carousel container div. &lt;br /&gt;
function displayCarousel(carouselData) {&lt;br /&gt;
    var carouselHtml = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
    carouselData.forEach(function (item) {&lt;br /&gt;
        carouselHtml += `&lt;br /&gt;
            &amp;lt;div class=&amp;quot;carousel-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;a href=&amp;quot;${item.pageUrl}&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;${item.imgUrl}&amp;quot; alt=&amp;quot;Carousel Image&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/a&amp;gt;&lt;br /&gt;
               &amp;lt;div class=&amp;quot;carousel-title&amp;quot;&amp;gt;${item.title}&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;
    // Inject the HTML into the carousel container&lt;br /&gt;
    var carouselContainer = $(&#039;.carousel-container&#039;);&lt;br /&gt;
    carouselContainer.html(carouselHtml);&lt;br /&gt;
&lt;br /&gt;
    // Initialize the carousel behavior&lt;br /&gt;
    initializeCarousel();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function initializeCarousel() {&lt;br /&gt;
    let currentIndex = 0;&lt;br /&gt;
    let $carouselItems = $(&amp;quot;.carousel-item&amp;quot;);&lt;br /&gt;
    let totalItems = $carouselItems.length;&lt;br /&gt;
    &lt;br /&gt;
    $carouselItems.hide().eq(currentIndex).show();&lt;br /&gt;
&lt;br /&gt;
    let $prevButton = $(&#039;&amp;lt;button class=&amp;quot;carousel-prev&amp;quot;&amp;gt; &amp;amp;#128896; &amp;lt;/button&amp;gt;&#039;);&lt;br /&gt;
    let $nextButton = $(&#039;&amp;lt;button class=&amp;quot;carousel-next&amp;quot;&amp;gt; &amp;amp;#128898; &amp;lt;/button&amp;gt;&#039;);&lt;br /&gt;
    $(&#039;.carousel-container&#039;).append($prevButton, $nextButton);&lt;br /&gt;
    &lt;br /&gt;
    function nextSlide() {&lt;br /&gt;
        currentIndex = (currentIndex + 1) % totalItems;&lt;br /&gt;
        updateCarousel();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Auto slide every 10 seconds&lt;br /&gt;
    let autoSlide = setInterval(nextSlide, 10000); &lt;br /&gt;
    function resetInterval() {&lt;br /&gt;
        clearInterval(autoSlide);&lt;br /&gt;
        autoSlide = setInterval(nextSlide, 10000);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    $nextButton.click(function () {&lt;br /&gt;
        nextSlide();&lt;br /&gt;
        resetInterval();&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    $prevButton.click(function () {&lt;br /&gt;
        currentIndex = (currentIndex - 1 + totalItems) % totalItems;&lt;br /&gt;
        updateCarousel();&lt;br /&gt;
        resetInterval();&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    function updateCarousel () {&lt;br /&gt;
       $carouselItems.hide().eq(currentIndex).show();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Load the carousel data on page load&lt;br /&gt;
$(document).ready(function () {&lt;br /&gt;
    loadCarouselData(); &lt;br /&gt;
}); &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Individual Project pages (and potentially tools): if page is part of a category, insert any corresponding skill badges at top of page&lt;br /&gt;
if(document.getElementById(&amp;quot;catlinks&amp;quot;) != null) {&lt;br /&gt;
    document.querySelectorAll(&amp;quot;#catlinks li a&amp;quot;).forEach((cat) =&amp;gt; {&lt;br /&gt;
        let query = &amp;quot;#firstHeading&amp;quot;;&lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Airbrushing&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Airbrushing_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Fabrication&amp;quot;, true, &amp;quot;Airbrushing&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Button Pressing&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Button_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Crafts&amp;quot;, true, &amp;quot;Button Pressing&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Cassette Making&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Cassette_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Crafts&amp;quot;, true, &amp;quot;Cassette Making&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Crafting&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Crafting_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Crafts&amp;quot;, true, &amp;quot;Crafting&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Graphic Design&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Graphic_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Design&amp;quot;, true, &amp;quot;Graphic Design&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Hand Sewing&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Handsewing_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Textiles&amp;quot;, true, &amp;quot;Hand Sewing&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Laser Cutting&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Laser_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;CNC-Laser&amp;quot;, true, &amp;quot;Laser Cutting&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Machining&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Machining_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;CNC-Laser&amp;quot;, true, &amp;quot;Machining&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:3D Modeling&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Modeling_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Design&amp;quot;, true, &amp;quot;3D Modeling&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:3D Printing&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Printing_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Fabrication&amp;quot;, true, &amp;quot;3D Printing&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Programming&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Programming_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Design&amp;quot;, true, &amp;quot;Programming&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Soldering&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Soldering_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Metalworking&amp;quot;, true, &amp;quot;Soldering&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Technical Design&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Technical_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Design&amp;quot;, true, &amp;quot;Technical Design&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Textiles&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Textile_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Textiles&amp;quot;, true, &amp;quot;Textiles&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Welding&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Welding_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Metalworking&amp;quot;, true, &amp;quot;Welding&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Woodworking&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Woodworking_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Fabrication&amp;quot;, true, &amp;quot;Woodworking&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
    })&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// uses api to insert image at given selector element in html, using image in mediawiki format (eg [[File:filename...]])&lt;br /&gt;
// optional style parameter gets applied&lt;br /&gt;
// if asLinkedSkillBadge is true, styles as skill badge (image wrapped in &amp;lt;a&amp;gt; link)&lt;br /&gt;
function insertImage(image, selector, style=&amp;quot;&amp;quot;, linkFilter=&amp;quot;&amp;quot;, asLinkedSkillBadge=false, tooltip=image) {&lt;br /&gt;
    $.getJSON(&lt;br /&gt;
        mw.util.wikiScript( &#039;api&#039; ), {&lt;br /&gt;
            format: &#039;json&#039;,&lt;br /&gt;
            action: &#039;query&#039;,&lt;br /&gt;
            titles: image,&lt;br /&gt;
            prop: &#039;imageinfo&#039;,&lt;br /&gt;
            iiprop: &#039;url&#039;&lt;br /&gt;
        },&lt;br /&gt;
        function( obj ) {&lt;br /&gt;
            let pages = obj.query.pages;&lt;br /&gt;
            let result1 = pages[Object.keys(pages)[0]];&lt;br /&gt;
            let url = result1.imageinfo[0].url;&lt;br /&gt;
            let alt = result1.title; // set alt text to image title&lt;br /&gt;
            let urlSub = url.substring(url.indexOf(&amp;quot;/&amp;quot;)); // get just later part of url as link to image (after first slash)&lt;br /&gt;
            if(asLinkedSkillBadge) { // insert as linked skill badge (image wrapped in &amp;lt;a&amp;gt; with link to prefiltered Project Tutorials page)&lt;br /&gt;
                document.querySelector(selector).innerHTML += &#039;&amp;lt;a href=&amp;quot;./Project_Tutorials?title=Project_Tutorials&amp;amp;filter=&#039;+linkFilter+&#039;&amp;quot; title=&amp;quot;&#039;+tooltip+&#039;&amp;quot;&amp;gt;&amp;lt;img class=&amp;quot;skill-badge-img&amp;quot; src=&amp;quot;&#039;+urlSub+&#039;&amp;quot; alt=&amp;quot;&#039;+alt+&#039;&amp;quot; style=&amp;quot;&#039;+style+&#039;&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
            }&lt;br /&gt;
            else { // insert as regular image&lt;br /&gt;
                document.querySelector(selector).innerHTML += &#039;&amp;lt;img src=&amp;quot;&#039;+urlSub+&#039;&amp;quot; alt=&amp;quot;&#039;+alt+&#039;&amp;quot; style=&amp;quot;&#039;+style+&#039;&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* like button. Only appears on &amp;quot;Main&amp;quot; Namespace pages that aren&#039;t sidebar pages (should be restricted to content pages like articles).*/&lt;br /&gt;
/* Styled in common.css*/&lt;br /&gt;
if (mw.config.get(&#039;wgNamespaceNumber&#039;) == 0 &amp;amp;&amp;amp; mw.config.get(&#039;wgPageName&#039;) !== &#039;Project_Tutorials&#039; &amp;amp;&amp;amp; mw.config.get(&#039;wgPageName&#039;) !== &#039;Tools&#039; &amp;amp;&amp;amp; mw.config.get(&#039;wgPageName&#039;) !== &#039;Spaces_New&#039; &amp;amp;&amp;amp; mw.config.get(&#039;wgPageName&#039;) !== &#039;Home_New&#039;) {&lt;br /&gt;
    // if page is favorited we should show unfavorite button instead. Direct to login if not logged in.&lt;br /&gt;
    if (document.querySelector(&amp;quot;#ca-favorite&amp;quot;)) {&lt;br /&gt;
        document.getElementById(&amp;quot;firstHeading&amp;quot;).innerHTML += &#039;&amp;lt;a href=/wiki/index.php?title=&#039;+mw.config.get(&#039;wgPageName&#039;)+&#039;&amp;amp;action=favorite&amp;amp;returnto=&#039;+mw.config.get(&#039;wgPageName&#039;)+&#039;&amp;gt;&amp;lt;button class=&amp;quot;favorite&amp;quot;&amp;gt;&amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
    } else if (document.querySelector(&amp;quot;#ca-unfavorite&amp;quot;)) {&lt;br /&gt;
        document.getElementById(&amp;quot;firstHeading&amp;quot;).innerHTML += &#039;&amp;lt;a href=/wiki/index.php?title=&#039;+mw.config.get(&#039;wgPageName&#039;)+&#039;&amp;amp;action=unfavorite&amp;amp;returnto=&#039;+mw.config.get(&#039;wgPageName&#039;)+&#039;&amp;gt;&amp;lt;button class=&amp;quot;unfavorite&amp;quot;&amp;gt;&amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
    // occurs if the user is not logged in:&lt;br /&gt;
    } else {&lt;br /&gt;
        document.getElementById(&amp;quot;firstHeading&amp;quot;).innerHTML += &#039;&amp;lt;a href=&#039;+document.querySelector(&amp;quot;#pt-login a&amp;quot;).href+&#039;&amp;gt;&amp;lt;button class=&amp;quot;favorite&amp;quot;&amp;gt;&amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
// open any &amp;lt;a&amp;gt; wrapped in &amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt; in same tab (generally internal links that must be treated as external links in order to give url parameters)&lt;br /&gt;
$(&#039;u.plainlinks a&#039;).each(function() { $(this).attr(&#039;target&#039;, &amp;quot;_self&amp;quot;)});&lt;/div&gt;</summary>
		<author><name>Winhallk</name></author>
	</entry>
	<entry>
		<id>https://makerspace.cc/wiki/index.php?title=GALLERY&amp;diff=9060</id>
		<title>GALLERY</title>
		<link rel="alternate" type="text/html" href="https://makerspace.cc/wiki/index.php?title=GALLERY&amp;diff=9060"/>
		<updated>2025-03-10T18:24:24Z</updated>

		<summary type="html">&lt;p&gt;Winhallk: Winhallk moved page GALLERY to Project Tutorials&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Project Tutorials]]&lt;/div&gt;</summary>
		<author><name>Winhallk</name></author>
	</entry>
	<entry>
		<id>https://makerspace.cc/wiki/index.php?title=Project_Tutorials&amp;diff=9059</id>
		<title>Project Tutorials</title>
		<link rel="alternate" type="text/html" href="https://makerspace.cc/wiki/index.php?title=Project_Tutorials&amp;diff=9059"/>
		<updated>2025-03-10T18:24:24Z</updated>

		<summary type="html">&lt;p&gt;Winhallk: Winhallk moved page GALLERY to Project Tutorials&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:&amp;lt;span style=&amp;quot;display: block; text-align: center; font-weight: bold; &amp;quot;&amp;gt;Project Tutorials&amp;lt;/span&amp;gt;}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: left;&amp;quot;&amp;gt;&lt;br /&gt;
This page offers a collection of project tutorials to help you explore, learn, and create with the tools available in the Makerspace.&amp;lt;div id=&amp;quot;project-gallery&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Loading gallery...&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Winhallk</name></author>
	</entry>
	<entry>
		<id>https://makerspace.cc/wiki/index.php?title=MediaWiki:Common.js&amp;diff=9056</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://makerspace.cc/wiki/index.php?title=MediaWiki:Common.js&amp;diff=9056"/>
		<updated>2025-03-10T18:18:07Z</updated>

		<summary type="html">&lt;p&gt;Winhallk: update code for new tools page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
&lt;br /&gt;
if (document) window.µ = function (id, elem) {&lt;br /&gt;
  var ret;&lt;br /&gt;
  var root = ((elem) ? elem : document);&lt;br /&gt;
  switch (id.charAt(0)) {&lt;br /&gt;
    case &#039;|&#039;:&lt;br /&gt;
      ret = root;&lt;br /&gt;
      break;&lt;br /&gt;
    case &#039;+&#039;:&lt;br /&gt;
      ret = document.createElement(id.substring(1));&lt;br /&gt;
      if (elem) elem.appendChild(ret);&lt;br /&gt;
      break;&lt;br /&gt;
    case &#039;#&#039;:&lt;br /&gt;
      ret = root.querySelector(id);&lt;br /&gt;
      break;&lt;br /&gt;
    default:&lt;br /&gt;
      ret = Array.prototype.slice.call(root.querySelectorAll(id));&lt;br /&gt;
      break;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  return ret;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/* add additional edit button in bottom right corner -- styled in Common.css */ &lt;br /&gt;
/* Takes them to visual editor if available/logged in; if not, takes them to normal edit mode; if they are not logged in at all, takes them to login page */&lt;br /&gt;
let editLinkQuery = document.querySelector(&amp;quot;#ca-ve-edit a&amp;quot;) ? &amp;quot;#ca-ve-edit a&amp;quot; : (document.querySelector(&amp;quot;#ca-edit a&amp;quot;) ? &amp;quot;#ca-edit a&amp;quot; : &amp;quot;#pt-login a&amp;quot;);&lt;br /&gt;
document.getElementById(&amp;quot;content&amp;quot;).innerHTML += &#039;&amp;lt;a href=&#039;+document.querySelector(editLinkQuery).href+&#039;&amp;gt;&amp;lt;button class=&amp;quot;big-edit-button&amp;quot;&amp;gt;&amp;lt;p&amp;gt;EDIT&amp;lt;/p&amp;gt;&amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
/* looks at current url parameters of the form &#039;?param1=value1&amp;amp;param2=value2...&#039; and returns a dictionary of the form {param1: value1, param2: value2, ...} */&lt;br /&gt;
function parseUrlParameters() {&lt;br /&gt;
    let queryStr = window.location.search.substring(1).replaceAll(&amp;quot;%20&amp;quot;, &amp;quot; &amp;quot;); // start string after the question mark and replace &#039;%20&#039; with spaces&lt;br /&gt;
    let queryDict = {};&lt;br /&gt;
    queryStr.split(&amp;quot;&amp;amp;&amp;quot;).forEach(function(query) {&lt;br /&gt;
        let pair = query.split(&amp;quot;=&amp;quot;);&lt;br /&gt;
        queryDict[pair[0]] = pair[1];&lt;br /&gt;
    })&lt;br /&gt;
    return queryDict;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Project Tutorials Gallery&lt;br /&gt;
mw.loader.using([&#039;mediawiki.api&#039;, &#039;jquery&#039;], function () {&lt;br /&gt;
    $(document).ready(function () {&lt;br /&gt;
        if (mw.config.get(&#039;wgPageName&#039;) !== &#039;GALLERY&#039;) return;  // Ensure script runs only on the Gallery page&lt;br /&gt;
&lt;br /&gt;
        // get url parameters and automatically select filter to value of &#039;filter&#039; parameter in url (eg www.wikititle/pagetitle?filter=Textiles)&lt;br /&gt;
        let queryDict = parseUrlParameters();&lt;br /&gt;
        var category = queryDict[&#039;filter&#039;] ? queryDict[&#039;filter&#039;] : &amp;quot;Projects&amp;quot;; // If no filter query in url, use default category Projects&lt;br /&gt;
        var galleryContainer = $(&#039;#project-gallery&#039;);  &lt;br /&gt;
&lt;br /&gt;
        /* add buttons to filter by category on Project Tutorials page&lt;br /&gt;
           html text displayed can be anything, but value of data-filter should be the same format as value passed in url parameters and entry in categories &lt;br /&gt;
           dictionary in loadGallery() function */&lt;br /&gt;
        galleryContainer.before(&#039;&amp;lt;div id=&amp;quot;category-filter&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;button id=&amp;quot;all-filter-btn&amp;quot; class=&amp;quot;filter-btn&amp;quot; data-filter=&amp;quot;Projects&amp;quot;&amp;gt;Show All&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;button id=&amp;quot;crafts-filter-btn&amp;quot; class=&amp;quot;filter-btn&amp;quot; data-filter=&amp;quot;Crafts&amp;quot;&amp;gt;Crafts&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;button id=&amp;quot;design-filter-btn&amp;quot; class=&amp;quot;filter-btn&amp;quot; data-filter=&amp;quot;Design&amp;quot;&amp;gt;Design&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;button id=&amp;quot;fabrication-filter-btn&amp;quot; class=&amp;quot;filter-btn&amp;quot; data-filter=&amp;quot;Fabrication&amp;quot;&amp;gt;Fabrication&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;button id=&amp;quot;cnc-laser-filter-btn&amp;quot; class=&amp;quot;filter-btn&amp;quot; data-filter=&amp;quot;CNC-Laser&amp;quot;&amp;gt;Laser &amp;amp; CNC&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;button id=&amp;quot;metalworking-filter-btn&amp;quot; class=&amp;quot;filter-btn&amp;quot; data-filter=&amp;quot;Metalworking&amp;quot;&amp;gt;Metalworking&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;button id=&amp;quot;textiles-filter-btn&amp;quot; class=&amp;quot;filter-btn&amp;quot; data-filter=&amp;quot;Textiles&amp;quot;&amp;gt;Textiles&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
        // use insertImage function to query api and insert given image at given id, with given style (adds icons to Project Tutorials filter buttons)&lt;br /&gt;
        insertImage(&amp;quot;File:Airbrushing_icon_color.png&amp;quot;, &amp;quot;#fabrication-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Button_icon_color.png&amp;quot;, &amp;quot;#crafts-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Cassette_icon_color.png&amp;quot;, &amp;quot;#crafts-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Crafting_icon_color.png&amp;quot;, &amp;quot;#crafts-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Graphic_icon_color.png&amp;quot;, &amp;quot;#design-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Handsewing_icon_color.png&amp;quot;, &amp;quot;#textiles-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Laser_icon_color.png&amp;quot;, &amp;quot;#cnc-laser-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Machining_icon_color.png&amp;quot;, &amp;quot;#cnc-laser-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Modeling_icon_color.png&amp;quot;, &amp;quot;#design-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Printing_icon_color.png&amp;quot;, &amp;quot;#fabrication-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Programming_icon_color.png&amp;quot;, &amp;quot;#design-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Soldering_icon_color.png&amp;quot;, &amp;quot;#metalworking-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Technical_icon_color.png&amp;quot;, &amp;quot;#design-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Textile_icon_color.png&amp;quot;, &amp;quot;#textiles-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Welding_icon_color.png&amp;quot;, &amp;quot;#metalworking-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
        insertImage(&amp;quot;File:Woodworking_icon_color.png&amp;quot;, &amp;quot;#fabrication-filter-btn&amp;quot;, style=&amp;quot;height:1.5em;padding-left:.4em&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        // load gallery based on category&lt;br /&gt;
        function loadGallery(category) {&lt;br /&gt;
            galleryContainer.html(&#039;&amp;lt;div class=&amp;quot;gallery-container&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;);  &lt;br /&gt;
&lt;br /&gt;
            let pageTitles = [];&lt;br /&gt;
&lt;br /&gt;
            // map larger umbrella categories to the skill badge categories they include&lt;br /&gt;
            let categories = {&lt;br /&gt;
                &amp;quot;Projects&amp;quot; : [&amp;quot;Projects&amp;quot;],&lt;br /&gt;
                &amp;quot;Design&amp;quot; : [&amp;quot;Graphic Design&amp;quot;, &amp;quot;3D Modeling&amp;quot;, &amp;quot;Technical Design&amp;quot;, &amp;quot;Programming&amp;quot;],&lt;br /&gt;
                &amp;quot;Textiles&amp;quot; : [&amp;quot;Textiles&amp;quot;, &amp;quot;Hand Sewing&amp;quot;],&lt;br /&gt;
                &amp;quot;Crafts&amp;quot; : [&amp;quot;Crafting&amp;quot;, &amp;quot;Button Pressing&amp;quot;, &amp;quot;Cassette Making&amp;quot;],&lt;br /&gt;
                &amp;quot;Fabrication&amp;quot; : [&amp;quot;Airbrushing&amp;quot;, &amp;quot;3D Printing&amp;quot;, &amp;quot;Woodworking&amp;quot;],&lt;br /&gt;
                &amp;quot;CNC-Laser&amp;quot; : [&amp;quot;Laser Cutting&amp;quot;, &amp;quot;Machining&amp;quot;],&lt;br /&gt;
                &amp;quot;Metalworking&amp;quot; : [&amp;quot;Soldering&amp;quot;, &amp;quot;Welding&amp;quot;]&lt;br /&gt;
            };&lt;br /&gt;
&lt;br /&gt;
            // insert projects corresponding to each skill under broader category filter selected&lt;br /&gt;
            categories[category].forEach(function(cat) {&lt;br /&gt;
                new mw.Api().get({&lt;br /&gt;
                    action: &#039;query&#039;,&lt;br /&gt;
                    list: &#039;categorymembers&#039;,&lt;br /&gt;
                    cmtitle: &#039;Category:&#039; + cat,&lt;br /&gt;
                    cmlimit: 50,  &lt;br /&gt;
                    format: &#039;json&#039;&lt;br /&gt;
                }).done(function (data) {&lt;br /&gt;
                    var pages = data.query.categorymembers;&lt;br /&gt;
                    var galleryHtml = &#039;&#039;;&lt;br /&gt;
                    var requests = pages.map(function (page) {&lt;br /&gt;
                        return new mw.Api().get({&lt;br /&gt;
                            action: &#039;query&#039;,&lt;br /&gt;
                            prop: &#039;revisions&#039;,&lt;br /&gt;
                            rvprop: &#039;content&#039;,&lt;br /&gt;
                            titles: page.title,&lt;br /&gt;
                            format: &#039;json&#039;&lt;br /&gt;
                        }).then(function (pageData) {&lt;br /&gt;
                            var pageId = Object.keys(pageData.query.pages)[0];&lt;br /&gt;
                            var content = pageData.query.pages[pageId].revisions[0][&#039;*&#039;];&lt;br /&gt;
                            var pageUrl = mw.util.getUrl(page.title);&lt;br /&gt;
                            var imgUrl = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
                            // Try to find a direct image URL (img1=https://...)&lt;br /&gt;
                            var directMatch = content.match(/img1=(https:\/\/[^\s|}%]+)/);&lt;br /&gt;
                            if (directMatch) {&lt;br /&gt;
                                imgUrl = directMatch[1];&lt;br /&gt;
                            }&lt;br /&gt;
&lt;br /&gt;
                            // If no direct URL, try to find a [[File:...]] entry&lt;br /&gt;
                            var fileMatch = content.match(/\[\[File:([^|\]]+)/);&lt;br /&gt;
                            if (!imgUrl &amp;amp;&amp;amp; fileMatch) {&lt;br /&gt;
                                var fileName = fileMatch[1].trim();&lt;br /&gt;
&lt;br /&gt;
                                // Fetch full image URL from MediaWiki API&lt;br /&gt;
                                return new mw.Api().get({&lt;br /&gt;
                                    action: &#039;query&#039;,&lt;br /&gt;
                                    titles: &#039;File:&#039; + fileName,&lt;br /&gt;
                                    prop: &#039;imageinfo&#039;,&lt;br /&gt;
                                    iiprop: &#039;url&#039;,&lt;br /&gt;
                                    format: &#039;json&#039;&lt;br /&gt;
                                }).then(function (imageData) {&lt;br /&gt;
                                    var imagePageId = Object.keys(imageData.query.pages)[0];&lt;br /&gt;
                                    if (imageData.query.pages[imagePageId].imageinfo) {&lt;br /&gt;
                                        imgUrl = imageData.query.pages[imagePageId].imageinfo[0].url;&lt;br /&gt;
                                    }&lt;br /&gt;
&lt;br /&gt;
                                &lt;br /&gt;
                                    galleryHtml += generateGalleryItem(pageUrl, page.title, imgUrl, category);&lt;br /&gt;
                                });&lt;br /&gt;
                            } else {&lt;br /&gt;
                                // Add the gallery item if the image was found and is not already being shown&lt;br /&gt;
                                  if(!pageTitles.includes(page.title)) {&lt;br /&gt;
                                    galleryHtml += generateGalleryItem(pageUrl, page.title, imgUrl, category);&lt;br /&gt;
                                    pageTitles.push(page.title);&lt;br /&gt;
                                  }&lt;br /&gt;
                            }&lt;br /&gt;
                        });&lt;br /&gt;
                    });&lt;br /&gt;
&lt;br /&gt;
                Promise.all(requests).then(function () {&lt;br /&gt;
                    $(&#039;.gallery-container&#039;).append(galleryHtml);&lt;br /&gt;
                });&lt;br /&gt;
                });&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // generate a gallery&lt;br /&gt;
        function generateGalleryItem(pageUrl, title, imgUrl, category) {&lt;br /&gt;
            return `&lt;br /&gt;
                &amp;lt;div class=&amp;quot;gallery-item ${category}&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;a href=&amp;quot;${pageUrl}&amp;quot;&amp;gt;&lt;br /&gt;
                        ${imgUrl ? `&amp;lt;img src=&amp;quot;${imgUrl}&amp;quot; alt=&amp;quot;${title}&amp;quot;&amp;gt;` : `&amp;lt;img src=&amp;quot;https://upload.wikimedia.org/wikipedia/commons/6/65/No-Image-Placeholder.svg&amp;quot; alt=&amp;quot;No Image Available&amp;quot;&amp;gt;`}&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;/a&amp;gt;&lt;br /&gt;
                    &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;a href=&amp;quot;${pageUrl}&amp;quot;&amp;gt;${title}&amp;lt;/a&amp;gt;&lt;br /&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;
        loadGallery(category);&lt;br /&gt;
&lt;br /&gt;
        // find filter button corresponding to selected category and add css class &#039;selected-filter&#039;&lt;br /&gt;
        $(&amp;quot;.filter-btn&amp;quot;).each(function () { $(this).data(&amp;quot;filter&amp;quot;) === category ? $(this).addClass(&#039;selected-filter&#039;) : null});&lt;br /&gt;
&lt;br /&gt;
        // when filter button is clicked, load projects for that category, deselect current filtered button, and select newly clicked filter button&lt;br /&gt;
        $(&amp;quot;.filter-btn&amp;quot;).click(function () {&lt;br /&gt;
            var selectedCategory = $(this).data(&amp;quot;filter&amp;quot;);&lt;br /&gt;
            loadGallery(selectedCategory); &lt;br /&gt;
            $(&#039;.filter-btn.selected-filter&#039;).each((i, elem) =&amp;gt; $(elem).removeClass(&#039;selected-filter&#039;));&lt;br /&gt;
            $(this).addClass(&#039;selected-filter&#039;);&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// Tools Gallery&lt;br /&gt;
mw.loader.using([&#039;mediawiki.api&#039;, &#039;jquery&#039;], function () {&lt;br /&gt;
    $(document).ready(function () {&lt;br /&gt;
        if (mw.config.get(&#039;wgPageName&#039;) !== &#039;Tools&#039;) return;  // Ensure script runs only on the Tools page&lt;br /&gt;
&lt;br /&gt;
        // get url parameters and automatically select appropriate filter&lt;br /&gt;
        let queryDict = parseUrlParameters();&lt;br /&gt;
        var category = queryDict[&#039;filter&#039;] ? queryDict[&#039;filter&#039;] : &amp;quot;Tools&amp;quot;; // If no filter query in url, use default category&lt;br /&gt;
        var galleryContainer = $(&#039;#tools-gallery&#039;);  &lt;br /&gt;
&lt;br /&gt;
        // Add filter buttons before the gallery&lt;br /&gt;
        galleryContainer.before(&#039;&amp;lt;div id=&amp;quot;category-filter&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;button class=&amp;quot;filter-btn&amp;quot; data-filter=&amp;quot;Tools&amp;quot;&amp;gt;Show All&amp;lt;/button&amp;gt;&#039; +  &lt;br /&gt;
            &#039;&amp;lt;button class=&amp;quot;filter-btn&amp;quot; data-filter=&amp;quot;Makerspace Tools&amp;quot;&amp;gt;Makerspace Tools&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;button class=&amp;quot;filter-btn&amp;quot; data-filter=&amp;quot;Machine Shop Tools&amp;quot;&amp;gt;Machine Shop Tools&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;button class=&amp;quot;filter-btn&amp;quot; data-filter=&amp;quot;Wood Shop Tools&amp;quot;&amp;gt;Wood Shop Tools&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;button class=&amp;quot;filter-btn&amp;quot; data-filter=&amp;quot;Instrument Shop Tools&amp;quot;&amp;gt;Instrument Shop Tools&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
            &#039;&amp;lt;button class=&amp;quot;filter-btn&amp;quot; data-filter=&amp;quot;Repair Lair Tools&amp;quot;&amp;gt;Repair Lair Tools&amp;lt;/button&amp;gt;&#039; +&lt;br /&gt;
        &#039;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
        function loadGallery(category) {&lt;br /&gt;
            galleryContainer.html(&#039;&amp;lt;div class=&amp;quot;gallery-container&amp;quot;&amp;gt;Loading gallery...&amp;lt;/div&amp;gt;&#039;);  &lt;br /&gt;
&lt;br /&gt;
            new mw.Api().get({&lt;br /&gt;
                action: &#039;query&#039;,&lt;br /&gt;
                list: &#039;categorymembers&#039;,&lt;br /&gt;
                cmtitle: &#039;Category:&#039; + category,&lt;br /&gt;
                cmlimit: 50,  &lt;br /&gt;
                format: &#039;json&#039;&lt;br /&gt;
            }).done(function (data) {&lt;br /&gt;
                var pages = data.query.categorymembers;&lt;br /&gt;
                var galleryHtml = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
                var requests = pages.map(function (page) {&lt;br /&gt;
                    return new mw.Api().get({&lt;br /&gt;
                        action: &#039;query&#039;,&lt;br /&gt;
                        prop: &#039;revisions&#039;,&lt;br /&gt;
                        rvprop: &#039;content&#039;,&lt;br /&gt;
                        titles: page.title,&lt;br /&gt;
                        format: &#039;json&#039;&lt;br /&gt;
                    }).then(function (pageData) {&lt;br /&gt;
                        var pageId = Object.keys(pageData.query.pages)[0];&lt;br /&gt;
                        var content = pageData.query.pages[pageId].revisions[0][&#039;*&#039;];&lt;br /&gt;
                        var pageUrl = mw.util.getUrl(page.title);&lt;br /&gt;
                        var imgUrl = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
                        // Try to find a [[File:...]] entry&lt;br /&gt;
                        var fileMatch = content.match(/\[\[File:([^|\]]+)/);&lt;br /&gt;
                        if (fileMatch) {&lt;br /&gt;
                            var fileName = fileMatch[1].trim();&lt;br /&gt;
&lt;br /&gt;
                            // Fetch full image URL from MediaWiki API&lt;br /&gt;
                            return new mw.Api().get({&lt;br /&gt;
                                action: &#039;query&#039;,&lt;br /&gt;
                                titles: &#039;File:&#039; + fileName,&lt;br /&gt;
                                prop: &#039;imageinfo&#039;,&lt;br /&gt;
                                iiprop: &#039;url&#039;,&lt;br /&gt;
                                format: &#039;json&#039;&lt;br /&gt;
                            }).then(function (imageData) {&lt;br /&gt;
                                var imagePageId = Object.keys(imageData.query.pages)[0];&lt;br /&gt;
                                if (imageData.query.pages[imagePageId].imageinfo) {&lt;br /&gt;
                                    imgUrl = imageData.query.pages[imagePageId].imageinfo[0].url;&lt;br /&gt;
                                }&lt;br /&gt;
&lt;br /&gt;
                                // Add the gallery item&lt;br /&gt;
                                galleryHtml += generateGalleryItem(pageUrl, page.title, imgUrl, category);&lt;br /&gt;
                            });&lt;br /&gt;
                        } else {&lt;br /&gt;
                            // If no image is found, still display the title&lt;br /&gt;
                            galleryHtml += generateGalleryItem(pageUrl, page.title, imgUrl, category);&lt;br /&gt;
                        }&lt;br /&gt;
                    });&lt;br /&gt;
                });&lt;br /&gt;
&lt;br /&gt;
                Promise.all(requests).then(function () {&lt;br /&gt;
                    // Append gallery items after loading them&lt;br /&gt;
                    galleryContainer.html(&#039;&amp;lt;div class=&amp;quot;gallery-container&amp;quot;&amp;gt;&#039; + galleryHtml + &#039;&amp;lt;/div&amp;gt;&#039;);&lt;br /&gt;
                });&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function generateGalleryItem(pageUrl, title, imgUrl, category) {&lt;br /&gt;
            return `&lt;br /&gt;
                &amp;lt;div class=&amp;quot;gallery-item ${category}&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;a href=&amp;quot;${pageUrl}&amp;quot;&amp;gt;&lt;br /&gt;
                        ${imgUrl ? `&amp;lt;img src=&amp;quot;${imgUrl}&amp;quot; alt=&amp;quot;${title}&amp;quot;&amp;gt;` : `&amp;lt;img src=&amp;quot;https://upload.wikimedia.org/wikipedia/commons/6/65/No-Image-Placeholder.svg&amp;quot; alt=&amp;quot;No Image Available&amp;quot;&amp;gt;`}&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;/a&amp;gt;&lt;br /&gt;
                    &amp;lt;div class=&amp;quot;gallery-caption&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;a href=&amp;quot;${pageUrl}&amp;quot;&amp;gt;${title}&amp;lt;/a&amp;gt;&lt;br /&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;
        loadGallery(category);&lt;br /&gt;
&lt;br /&gt;
        // find filter button corresponding to preselected category and add css class &#039;selected-filter&#039;&lt;br /&gt;
        $(&amp;quot;.filter-btn&amp;quot;).each(function () { $(this).data(&amp;quot;filter&amp;quot;) === category ? $(this).addClass(&#039;selected-filter&#039;) : null});&lt;br /&gt;
&lt;br /&gt;
        // when filter button is clicked, load tools for that category, deselect current filtered button, and select newly clicked filter button&lt;br /&gt;
        $(&amp;quot;.filter-btn&amp;quot;).click(function () {&lt;br /&gt;
            var selectedCategory = $(this).data(&amp;quot;filter&amp;quot;);&lt;br /&gt;
            loadGallery(selectedCategory);  &lt;br /&gt;
            $(&#039;.filter-btn.selected-filter&#039;).each((i, elem) =&amp;gt; $(elem).removeClass(&#039;selected-filter&#039;));&lt;br /&gt;
            $(this).addClass(&#039;selected-filter&#039;);&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//CAROUSEL&lt;br /&gt;
function loadCarouselData() {&lt;br /&gt;
    // Make the API query to fetch pages for carousel&lt;br /&gt;
    var category = &amp;quot;SimpleProjects&amp;quot;; &lt;br /&gt;
    var carouselData = [];&lt;br /&gt;
&lt;br /&gt;
    new mw.Api().get({&lt;br /&gt;
        action: &#039;query&#039;,&lt;br /&gt;
        list: &#039;categorymembers&#039;,&lt;br /&gt;
        cmtitle: &#039;Category:&#039; + category,&lt;br /&gt;
        cmlimit: 50, &lt;br /&gt;
        format: &#039;json&#039;&lt;br /&gt;
    }).done(function (data) {&lt;br /&gt;
        var pages = data.query.categorymembers;&lt;br /&gt;
&lt;br /&gt;
        var requests = pages.map(function (page) {&lt;br /&gt;
            return new mw.Api().get({&lt;br /&gt;
                action: &#039;query&#039;,&lt;br /&gt;
                prop: &#039;revisions&#039;,&lt;br /&gt;
                rvprop: &#039;content&#039;,&lt;br /&gt;
                titles: page.title,&lt;br /&gt;
                format: &#039;json&#039;&lt;br /&gt;
            }).then(function (pageData) {&lt;br /&gt;
                var pageId = Object.keys(pageData.query.pages)[0];&lt;br /&gt;
                var content = pageData.query.pages[pageId].revisions[0][&#039;*&#039;];&lt;br /&gt;
                var pageUrl = mw.util.getUrl(page.title);&lt;br /&gt;
                var imgUrl = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
                // Try to find a direct image URL (img1=https://...)&lt;br /&gt;
                var directMatch = content.match(/img1=(https:\/\/[^\s|}%]+)/);&lt;br /&gt;
                if (directMatch) {&lt;br /&gt;
                    imgUrl = directMatch[1];&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                // If no direct URL, try to find a [[File:...]] entry&lt;br /&gt;
                var fileMatch = content.match(/\[\[File:([^|\]]+)/);&lt;br /&gt;
                if (!imgUrl &amp;amp;&amp;amp; fileMatch) {&lt;br /&gt;
                    var fileName = fileMatch[1].trim();&lt;br /&gt;
&lt;br /&gt;
                    // Fetch full image URL from MediaWiki API&lt;br /&gt;
                    return new mw.Api().get({&lt;br /&gt;
                        action: &#039;query&#039;,&lt;br /&gt;
                        titles: &#039;File:&#039; + fileName,&lt;br /&gt;
                        prop: &#039;imageinfo&#039;,&lt;br /&gt;
                        iiprop: &#039;url&#039;,&lt;br /&gt;
                        format: &#039;json&#039;&lt;br /&gt;
                    }).then(function (imageData) {&lt;br /&gt;
                        var imagePageId = Object.keys(imageData.query.pages)[0];&lt;br /&gt;
                        if (imageData.query.pages[imagePageId].imageinfo) {&lt;br /&gt;
                            imgUrl = imageData.query.pages[imagePageId].imageinfo[0].url;&lt;br /&gt;
                        }&lt;br /&gt;
&lt;br /&gt;
                        // Store carousel item data&lt;br /&gt;
                        if (imgUrl) {&lt;br /&gt;
                            carouselData.push({ pageUrl: pageUrl, imgUrl: imgUrl, title: page.title });&lt;br /&gt;
                        }&lt;br /&gt;
                    });&lt;br /&gt;
                } else {&lt;br /&gt;
                    // Store carousel item data&lt;br /&gt;
                    if (imgUrl) {&lt;br /&gt;
                        carouselData.push({ pageUrl: pageUrl, imgUrl: imgUrl, title: page.title });&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        Promise.all(requests).then(function () {&lt;br /&gt;
            // Call the function to display carousel&lt;br /&gt;
            displayCarousel(carouselData);&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function displayCarousel(carouselData) {&lt;br /&gt;
    var carouselHtml = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
    carouselData.forEach(function (item) {&lt;br /&gt;
        carouselHtml += `&lt;br /&gt;
            &amp;lt;div class=&amp;quot;carousel-item&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;a href=&amp;quot;${item.pageUrl}&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;img src=&amp;quot;${item.imgUrl}&amp;quot; alt=&amp;quot;Carousel Image&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;/a&amp;gt;&lt;br /&gt;
               &amp;lt;div class=&amp;quot;carousel-title&amp;quot;&amp;gt;${item.title}&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;
    // Inject the HTML into the carousel container&lt;br /&gt;
    var carouselContainer = $(&#039;.carousel-container&#039;);&lt;br /&gt;
    carouselContainer.html(carouselHtml);&lt;br /&gt;
&lt;br /&gt;
    // Initialize the carousel behavior&lt;br /&gt;
    initializeCarousel();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function initializeCarousel() {&lt;br /&gt;
    let currentIndex = 0;&lt;br /&gt;
    let $carouselItems = $(&amp;quot;.carousel-item&amp;quot;);&lt;br /&gt;
    let totalItems = $carouselItems.length;&lt;br /&gt;
    &lt;br /&gt;
    $carouselItems.hide().eq(currentIndex).show();&lt;br /&gt;
&lt;br /&gt;
    let $prevButton = $(&#039;&amp;lt;button class=&amp;quot;carousel-prev&amp;quot;&amp;gt; &amp;amp;#128896; &amp;lt;/button&amp;gt;&#039;);&lt;br /&gt;
    let $nextButton = $(&#039;&amp;lt;button class=&amp;quot;carousel-next&amp;quot;&amp;gt; &amp;amp;#128898; &amp;lt;/button&amp;gt;&#039;);&lt;br /&gt;
    $(&#039;.carousel-container&#039;).append($prevButton, $nextButton);&lt;br /&gt;
    &lt;br /&gt;
    function nextSlide() {&lt;br /&gt;
        currentIndex = (currentIndex + 1) % totalItems;&lt;br /&gt;
        updateCarousel();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    let autoSlide = setInterval(nextSlide, 10000); //auto slide every 10 seconds&lt;br /&gt;
    function resetInterval() {&lt;br /&gt;
        clearInterval(autoSlide);&lt;br /&gt;
        autoSlide = setInterval(nextSlide, 10000);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    $nextButton.click(function () {&lt;br /&gt;
        nextSlide();&lt;br /&gt;
        resetInterval();&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    $prevButton.click(function () {&lt;br /&gt;
        currentIndex = (currentIndex - 1 + totalItems) % totalItems;&lt;br /&gt;
        updateCarousel();&lt;br /&gt;
        resetInterval();&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    function updateCarousel () {&lt;br /&gt;
       $carouselItems.hide().eq(currentIndex).show();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$(document).ready(function () {&lt;br /&gt;
    loadCarouselData(); // Load the carousel data on page load&lt;br /&gt;
}); &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Individual Project pages (and potentially tools): if page is part of a category, insert any corresponding skill badges at top of page&lt;br /&gt;
if(document.getElementById(&amp;quot;catlinks&amp;quot;) != null) {&lt;br /&gt;
    document.querySelectorAll(&amp;quot;#catlinks li a&amp;quot;).forEach((cat) =&amp;gt; {&lt;br /&gt;
        let query = &amp;quot;#firstHeading&amp;quot;;&lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Airbrushing&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Airbrushing_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Fabrication&amp;quot;, true, &amp;quot;Airbrushing&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Button Pressing&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Button_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Crafts&amp;quot;, true, &amp;quot;Button Pressing&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Cassette Making&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Cassette_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Crafts&amp;quot;, true, &amp;quot;Cassette Making&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Crafting&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Crafting_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Crafts&amp;quot;, true, &amp;quot;Crafting&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Graphic Design&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Graphic_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Design&amp;quot;, true, &amp;quot;Graphic Design&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Hand Sewing&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Handsewing_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Textiles&amp;quot;, true, &amp;quot;Hand Sewing&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Laser Cutting&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Laser_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;CNC-Laser&amp;quot;, true, &amp;quot;Laser Cutting&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Machining&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Machining_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;CNC-Laser&amp;quot;, true, &amp;quot;Machining&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:3D Modeling&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Modeling_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Design&amp;quot;, true, &amp;quot;3D Modeling&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:3D Printing&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Printing_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Fabrication&amp;quot;, true, &amp;quot;3D Printing&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Programming&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Programming_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Design&amp;quot;, true, &amp;quot;Programming&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Soldering&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Soldering_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Metalworking&amp;quot;, true, &amp;quot;Soldering&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Technical Design&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Technical_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Design&amp;quot;, true, &amp;quot;Technical Design&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Textiles&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Textile_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Textiles&amp;quot;, true, &amp;quot;Textiles&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Welding&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Welding_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Metalworking&amp;quot;, true, &amp;quot;Welding&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
        if(cat.title.includes(&amp;quot;Category:Woodworking&amp;quot;)) {&lt;br /&gt;
            insertImage(&#039;File:Woodworking_badge_small.png&#039;, query, &amp;quot;padding-left:.3em;&amp;quot;, &amp;quot;Fabrication&amp;quot;, true, &amp;quot;Woodworking&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
    })&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// uses api to insert image at given selector element in html, using image in mediawiki format (eg [[File:filename...]])&lt;br /&gt;
// optional style parameter gets applied&lt;br /&gt;
// if asLinkedSkillBadge is true, styles as skill badge (image wrapped in &amp;lt;a&amp;gt; link)&lt;br /&gt;
function insertImage(image, selector, style=&amp;quot;&amp;quot;, linkFilter=&amp;quot;&amp;quot;, asLinkedSkillBadge=false, tooltip=image) {&lt;br /&gt;
    $.getJSON(&lt;br /&gt;
        mw.util.wikiScript( &#039;api&#039; ), {&lt;br /&gt;
            format: &#039;json&#039;,&lt;br /&gt;
            action: &#039;query&#039;,&lt;br /&gt;
            titles: image,&lt;br /&gt;
            prop: &#039;imageinfo&#039;,&lt;br /&gt;
            iiprop: &#039;url&#039;&lt;br /&gt;
        },&lt;br /&gt;
        function( obj ) {&lt;br /&gt;
            let pages = obj.query.pages;&lt;br /&gt;
            let result1 = pages[Object.keys(pages)[0]];&lt;br /&gt;
            let url = result1.imageinfo[0].url;&lt;br /&gt;
            let alt = result1.title; // set alt text to image title&lt;br /&gt;
            let urlSub = url.substring(url.indexOf(&amp;quot;/&amp;quot;)); // get just later part of url as link to image (after first slash)&lt;br /&gt;
            if(asLinkedSkillBadge) { // insert as linked skill badge (image wrapped in &amp;lt;a&amp;gt; with link to prefiltered Project Tutorials page)&lt;br /&gt;
                document.querySelector(selector).innerHTML += &#039;&amp;lt;a href=&amp;quot;./GALLERY?title=GALLERY&amp;amp;filter=&#039;+linkFilter+&#039;&amp;quot; title=&amp;quot;&#039;+tooltip+&#039;&amp;quot;&amp;gt;&amp;lt;img class=&amp;quot;skill-badge-img&amp;quot; src=&amp;quot;&#039;+urlSub+&#039;&amp;quot; alt=&amp;quot;&#039;+alt+&#039;&amp;quot; style=&amp;quot;&#039;+style+&#039;&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
            }&lt;br /&gt;
            else { // insert as regular image&lt;br /&gt;
                document.querySelector(selector).innerHTML += &#039;&amp;lt;img src=&amp;quot;&#039;+urlSub+&#039;&amp;quot; alt=&amp;quot;&#039;+alt+&#039;&amp;quot; style=&amp;quot;&#039;+style+&#039;&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* like button. Only appears on &amp;quot;Main&amp;quot; Namespace pages that aren&#039;t sidebar pages (should be restricted to content pages like articles).*/&lt;br /&gt;
/* Styled in common.css*/&lt;br /&gt;
if (mw.config.get(&#039;wgNamespaceNumber&#039;) == 0 &amp;amp;&amp;amp; mw.config.get(&#039;wgPageName&#039;) !== &#039;GALLERY&#039; &amp;amp;&amp;amp; mw.config.get(&#039;wgPageName&#039;) !== &#039;Tools&#039; &amp;amp;&amp;amp; mw.config.get(&#039;wgPageName&#039;) !== &#039;Spaces_New&#039; &amp;amp;&amp;amp; mw.config.get(&#039;wgPageName&#039;) !== &#039;Home_New&#039;) {&lt;br /&gt;
    // if page is favorited we should show unfavorite button instead. Direct to login if not logged in.&lt;br /&gt;
    if (document.querySelector(&amp;quot;#ca-favorite&amp;quot;)) {&lt;br /&gt;
        document.getElementById(&amp;quot;firstHeading&amp;quot;).innerHTML += &#039;&amp;lt;a href=/wiki/index.php?title=&#039;+mw.config.get(&#039;wgPageName&#039;)+&#039;&amp;amp;action=favorite&amp;amp;returnto=&#039;+mw.config.get(&#039;wgPageName&#039;)+&#039;&amp;gt;&amp;lt;button class=&amp;quot;favorite&amp;quot;&amp;gt;&amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
    } else if (document.querySelector(&amp;quot;#ca-unfavorite&amp;quot;)) {&lt;br /&gt;
        document.getElementById(&amp;quot;firstHeading&amp;quot;).innerHTML += &#039;&amp;lt;a href=/wiki/index.php?title=&#039;+mw.config.get(&#039;wgPageName&#039;)+&#039;&amp;amp;action=unfavorite&amp;amp;returnto=&#039;+mw.config.get(&#039;wgPageName&#039;)+&#039;&amp;gt;&amp;lt;button class=&amp;quot;unfavorite&amp;quot;&amp;gt;&amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
    // occurs if the user is not logged in:&lt;br /&gt;
    } else {&lt;br /&gt;
        document.getElementById(&amp;quot;firstHeading&amp;quot;).innerHTML += &#039;&amp;lt;a href=&#039;+document.querySelector(&amp;quot;#pt-login a&amp;quot;).href+&#039;&amp;gt;&amp;lt;button class=&amp;quot;favorite&amp;quot;&amp;gt;&amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
// open any &amp;lt;a&amp;gt; wrapped in &amp;lt;u class=&amp;quot;plainlinks&amp;quot;&amp;gt; in same tab (generally internal links that must be treated as external links in order to give url parameters)&lt;br /&gt;
$(&#039;u.plainlinks a&#039;).each(function() { $(this).attr(&#039;target&#039;, &amp;quot;_self&amp;quot;)});&lt;/div&gt;</summary>
		<author><name>Winhallk</name></author>
	</entry>
	<entry>
		<id>https://makerspace.cc/wiki/index.php?title=TOOLS&amp;diff=9055</id>
		<title>TOOLS</title>
		<link rel="alternate" type="text/html" href="https://makerspace.cc/wiki/index.php?title=TOOLS&amp;diff=9055"/>
		<updated>2025-03-10T18:16:48Z</updated>

		<summary type="html">&lt;p&gt;Winhallk: Winhallk moved page TOOLS to Tools&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Tools]]&lt;/div&gt;</summary>
		<author><name>Winhallk</name></author>
	</entry>
	<entry>
		<id>https://makerspace.cc/wiki/index.php?title=Tools&amp;diff=9054</id>
		<title>Tools</title>
		<link rel="alternate" type="text/html" href="https://makerspace.cc/wiki/index.php?title=Tools&amp;diff=9054"/>
		<updated>2025-03-10T18:16:48Z</updated>

		<summary type="html">&lt;p&gt;Winhallk: Winhallk moved page TOOLS to Tools&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:&amp;lt;span style=&amp;quot;display: block; text-align: center; font-weight: bold;&amp;quot;&amp;gt;Makerspace Tools&amp;lt;/span&amp;gt;}}&amp;lt;div style=&amp;quot;text-align: left;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
This page provides access to all the tools available in the different Makerspace locations, along with links to their details and usage guidelines.&amp;lt;div id=&amp;quot;tools-gallery&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Loading gallery...&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Winhallk</name></author>
	</entry>
	<entry>
		<id>https://makerspace.cc/wiki/index.php?title=File:TRAK_DPM2_Mill.jpg&amp;diff=9001</id>
		<title>File:TRAK DPM2 Mill.jpg</title>
		<link rel="alternate" type="text/html" href="https://makerspace.cc/wiki/index.php?title=File:TRAK_DPM2_Mill.jpg&amp;diff=9001"/>
		<updated>2025-02-28T03:59:50Z</updated>

		<summary type="html">&lt;p&gt;Winhallk: Winhallk uploaded a new version of File:TRAK DPM2 Mill.jpg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A photo of the TRAK DPM2 Mill in the Instrument Shop.&lt;/div&gt;</summary>
		<author><name>Winhallk</name></author>
	</entry>
	<entry>
		<id>https://makerspace.cc/wiki/index.php?title=Original_Prusa_XL_3D_Printer&amp;diff=9000</id>
		<title>Original Prusa XL 3D Printer</title>
		<link rel="alternate" type="text/html" href="https://makerspace.cc/wiki/index.php?title=Original_Prusa_XL_3D_Printer&amp;diff=9000"/>
		<updated>2025-02-28T03:51:39Z</updated>

		<summary type="html">&lt;p&gt;Winhallk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Original Prusa XL 3D Printer.jpg|alt=A photo of the Original Prusa XL 3D printer in the Makerspace.|thumb|A photo of the Original Prusa XL 3D printer in the Makerspace.]]&lt;br /&gt;
The Original Prusa XL 3D printer is located in the Makerspace.&lt;br /&gt;
[[Category:Tools]]&lt;br /&gt;
[[Category:Makerspace Tools]]&lt;br /&gt;
[[Category:3D Printers]]&lt;/div&gt;</summary>
		<author><name>Winhallk</name></author>
	</entry>
	<entry>
		<id>https://makerspace.cc/wiki/index.php?title=File:Original_Prusa_XL_3D_Printer.jpg&amp;diff=8999</id>
		<title>File:Original Prusa XL 3D Printer.jpg</title>
		<link rel="alternate" type="text/html" href="https://makerspace.cc/wiki/index.php?title=File:Original_Prusa_XL_3D_Printer.jpg&amp;diff=8999"/>
		<updated>2025-02-28T03:51:31Z</updated>

		<summary type="html">&lt;p&gt;Winhallk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A photo of the Original Prusa XL 3D printer in the Makerspace.&lt;/div&gt;</summary>
		<author><name>Winhallk</name></author>
	</entry>
	<entry>
		<id>https://makerspace.cc/wiki/index.php?title=Original_Prusa_XL_3D_Printer&amp;diff=8998</id>
		<title>Original Prusa XL 3D Printer</title>
		<link rel="alternate" type="text/html" href="https://makerspace.cc/wiki/index.php?title=Original_Prusa_XL_3D_Printer&amp;diff=8998"/>
		<updated>2025-02-28T03:49:59Z</updated>

		<summary type="html">&lt;p&gt;Winhallk: Created page with &amp;quot;The Original Prusa XL 3D printer is located in the Makerspace.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Original Prusa XL 3D printer is located in the Makerspace.&lt;/div&gt;</summary>
		<author><name>Winhallk</name></author>
	</entry>
	<entry>
		<id>https://makerspace.cc/wiki/index.php?title=LulzBot_3D_Printer&amp;diff=8997</id>
		<title>LulzBot 3D Printer</title>
		<link rel="alternate" type="text/html" href="https://makerspace.cc/wiki/index.php?title=LulzBot_3D_Printer&amp;diff=8997"/>
		<updated>2025-02-28T03:48:02Z</updated>

		<summary type="html">&lt;p&gt;Winhallk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:LulzBot 3D Printer.jpg|alt=A photo of the LulzBot 3D printer in the Student Machine Shop.|thumb|A photo of the LulzBot 3D printer in the Student Machine Shop.]]&lt;br /&gt;
The LulzBot 3D printer is located in the Student Machine Shop.&lt;br /&gt;
[[Category:Tools]]&lt;br /&gt;
[[Category:Machine Shop Tools]]&lt;br /&gt;
[[Category:3D Printers]]&lt;/div&gt;</summary>
		<author><name>Winhallk</name></author>
	</entry>
	<entry>
		<id>https://makerspace.cc/wiki/index.php?title=File:LulzBot_3D_Printer.jpg&amp;diff=8996</id>
		<title>File:LulzBot 3D Printer.jpg</title>
		<link rel="alternate" type="text/html" href="https://makerspace.cc/wiki/index.php?title=File:LulzBot_3D_Printer.jpg&amp;diff=8996"/>
		<updated>2025-02-28T03:47:52Z</updated>

		<summary type="html">&lt;p&gt;Winhallk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A photo of the LulzBot 3D printer in the Student Machine Shop.&lt;/div&gt;</summary>
		<author><name>Winhallk</name></author>
	</entry>
	<entry>
		<id>https://makerspace.cc/wiki/index.php?title=LulzBot_3D_Printer&amp;diff=8995</id>
		<title>LulzBot 3D Printer</title>
		<link rel="alternate" type="text/html" href="https://makerspace.cc/wiki/index.php?title=LulzBot_3D_Printer&amp;diff=8995"/>
		<updated>2025-02-28T03:46:16Z</updated>

		<summary type="html">&lt;p&gt;Winhallk: Created page with &amp;quot;The LulzBot 3D printer is located in the Student Machine Shop.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The LulzBot 3D printer is located in the Student Machine Shop.&lt;/div&gt;</summary>
		<author><name>Winhallk</name></author>
	</entry>
	<entry>
		<id>https://makerspace.cc/wiki/index.php?title=Formlabs_Form_3_3D_Printer&amp;diff=8994</id>
		<title>Formlabs Form 3 3D Printer</title>
		<link rel="alternate" type="text/html" href="https://makerspace.cc/wiki/index.php?title=Formlabs_Form_3_3D_Printer&amp;diff=8994"/>
		<updated>2025-02-28T03:43:34Z</updated>

		<summary type="html">&lt;p&gt;Winhallk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Formlabs Form 3 3D Printer.jpg|alt=A photo of the Formlabs Form 3 3D printer in the Machine Shop.|thumb|A photo of the Formlabs Form 3 3D printer in the Machine Shop.]]&lt;br /&gt;
The Formlabs Form 3 3D Printer is located in the Machine Shop.&lt;br /&gt;
[[Category:Tools]]&lt;br /&gt;
[[Category:Machine Shop Tools]]&lt;br /&gt;
[[Category:3D Printers]]&lt;/div&gt;</summary>
		<author><name>Winhallk</name></author>
	</entry>
	<entry>
		<id>https://makerspace.cc/wiki/index.php?title=File:Formlabs_Form_3_3D_Printer.jpg&amp;diff=8993</id>
		<title>File:Formlabs Form 3 3D Printer.jpg</title>
		<link rel="alternate" type="text/html" href="https://makerspace.cc/wiki/index.php?title=File:Formlabs_Form_3_3D_Printer.jpg&amp;diff=8993"/>
		<updated>2025-02-28T03:43:19Z</updated>

		<summary type="html">&lt;p&gt;Winhallk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A photo of the Formlabs Form 3 3D Printer in the Machine Shop.&lt;/div&gt;</summary>
		<author><name>Winhallk</name></author>
	</entry>
	<entry>
		<id>https://makerspace.cc/wiki/index.php?title=Formlabs_Form_3_3D_Printer&amp;diff=8992</id>
		<title>Formlabs Form 3 3D Printer</title>
		<link rel="alternate" type="text/html" href="https://makerspace.cc/wiki/index.php?title=Formlabs_Form_3_3D_Printer&amp;diff=8992"/>
		<updated>2025-02-28T03:40:53Z</updated>

		<summary type="html">&lt;p&gt;Winhallk: Created page with &amp;quot;The Formlabs Form 3 3D Printer is located in the Machine Shop.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Formlabs Form 3 3D Printer is located in the Machine Shop.&lt;/div&gt;</summary>
		<author><name>Winhallk</name></author>
	</entry>
	<entry>
		<id>https://makerspace.cc/wiki/index.php?title=Harrison_Lathe&amp;diff=8991</id>
		<title>Harrison Lathe</title>
		<link rel="alternate" type="text/html" href="https://makerspace.cc/wiki/index.php?title=Harrison_Lathe&amp;diff=8991"/>
		<updated>2025-02-28T03:35:27Z</updated>

		<summary type="html">&lt;p&gt;Winhallk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Harrison Lathe.jpg|alt=A photo of the Harrison lathe in the Instrument Shop.|thumb|A photo of the Harrison lathe in the Instrument Shop.]]&lt;br /&gt;
The Harrison lathe is located in the Instrument Shop.&lt;br /&gt;
[[Category:Tools]]&lt;br /&gt;
[[Category:Instrument Shop Tools]]&lt;/div&gt;</summary>
		<author><name>Winhallk</name></author>
	</entry>
	<entry>
		<id>https://makerspace.cc/wiki/index.php?title=File:Harrison_Lathe.jpg&amp;diff=8990</id>
		<title>File:Harrison Lathe.jpg</title>
		<link rel="alternate" type="text/html" href="https://makerspace.cc/wiki/index.php?title=File:Harrison_Lathe.jpg&amp;diff=8990"/>
		<updated>2025-02-28T03:35:06Z</updated>

		<summary type="html">&lt;p&gt;Winhallk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A photo of the Harrison lathe in the Instrument Shop.&lt;/div&gt;</summary>
		<author><name>Winhallk</name></author>
	</entry>
	<entry>
		<id>https://makerspace.cc/wiki/index.php?title=Harrison_Lathe&amp;diff=8989</id>
		<title>Harrison Lathe</title>
		<link rel="alternate" type="text/html" href="https://makerspace.cc/wiki/index.php?title=Harrison_Lathe&amp;diff=8989"/>
		<updated>2025-02-28T03:33:43Z</updated>

		<summary type="html">&lt;p&gt;Winhallk: Created page with &amp;quot;The Harrison Lathe is located in the Instrument Shop.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Harrison Lathe is located in the Instrument Shop.&lt;/div&gt;</summary>
		<author><name>Winhallk</name></author>
	</entry>
</feed>