[00:00.000 --> 00:02.160] Are you an M1 or an hotel? [00:02.900 --> 00:03.140] What? [00:03.380 --> 00:04.180] Is this an M1? [00:04.400 --> 00:04.920] Yeah, M1, yeah. [00:08.460 --> 00:12.060] And then hopefully, if this works, then I can do a demo after. [00:12.360 --> 00:15.040] But if it doesn't, I can't. [00:15.420 --> 00:20.760] Are you on... is there a deck in Keynote or is it in... what's your slide deck in? [00:22.420 --> 00:22.860] PowerPoint. [00:22.860 --> 00:22.980] PowerPoint. [00:23.960 --> 00:26.580] We can drop the PowerPoint onto the machine if you want. [00:28.080 --> 00:29.300] Pushing through your deck. [00:30.980 --> 00:34.180] I'm not sure if all the clips and stuff will come across. [00:34.780 --> 00:34.920] Would they? [00:35.280 --> 00:36.000] Oh, they should. [00:38.620 --> 00:41.340] But in the other case, we can drop it onto the other machine. [00:41.800 --> 00:42.240] Alright. [00:42.960 --> 00:46.820] Well, I'm just going to get started with some basic background stuff first. [00:49.200 --> 00:51.400] Alright, so we're going to start before this works. [00:51.400 --> 00:53.540] So, my name is Matt Desmarais. [00:53.780 --> 00:54.700] I go by Matt the Maker. [00:55.500 --> 00:57.540] I've been programming since 2004. [00:57.860 --> 01:01.040] Teaching myself and volunteering since 07. [01:01.380 --> 01:03.200] And making things since 2012. [01:04.540 --> 01:05.800] I've never been to HOPE. [01:06.040 --> 01:08.180] I've never done anything like this. [01:08.920 --> 01:14.980] But I truly enjoy coding and making things. [01:18.040 --> 01:19.780] Oh, now I'm all screwed up. [01:28.660 --> 01:29.540] You get it? [01:29.720 --> 01:30.040] Yes. [01:30.280 --> 01:30.540] Thank you. [01:36.220 --> 01:36.780] Alright. [01:37.460 --> 01:45.920] So, one of my more recent projects is a wearable computer that is quite capable and easily customized that I'll talk about later. [01:46.780 --> 01:50.440] Over the last few years, I've modernized my local food pantry. [01:51.040 --> 01:57.580] But in order to properly explain what I did, I'm going to have to provide some background info on our food pantry and food pantries in general. [01:59.200 --> 02:06.060] So, generally, food pantries are comprised of older volunteers with manual operations and minimal use of technology. [02:06.500 --> 02:09.320] And I'm going to show you that a little technology can go a long way. [02:11.080 --> 02:12.540] So, I don't have any degrees. [02:13.100 --> 02:18.440] I tried to go to a four-year school twice and found out that I had a few screws loose. [02:18.440 --> 02:24.700] So, I ended up taking things at my own pace, filling in gaps in knowledge at my community college. [02:25.820 --> 02:33.120] And then my methods for teaching myself is I follow and modify tutorials until I'm comfortable with the hardware. [02:33.480 --> 02:38.720] And then once I know some hardware, you can mix them up, make different combinations, and create new things. [02:40.020 --> 02:48.440] So, where I volunteer is a 100% volunteer organization serving the residents of my town since 1983. [02:50.080 --> 02:52.420] Not all food pantries are 100% volunteer. [02:52.700 --> 02:59.460] And depending on where you get your funding from, you may have to pay staff members. [03:00.700 --> 03:09.820] So, the mission of the Sandwich Food Pantry is to distribute food and essential non-food items to families who live, work, or attend religious services in my community. [03:10.780 --> 03:14.160] And so, we refer people to other services available to them. [03:14.440 --> 03:17.160] And we never turn anyone away who comes for help. [03:17.480 --> 03:22.860] We'll give them an emergency food order and refer non-clients to a food pantry that serves their community. [03:23.540 --> 03:26.440] We're about 40 volunteers before COVID. [03:26.740 --> 03:28.360] We were around 80 volunteers. [03:28.700 --> 03:40.020] So, things have really changed in that department, mainly because the volunteer population is generally older folks, and they're the most at risk. [03:41.480 --> 03:52.080] So, there's always people struggling, no matter how good or bad the economy may be, due to things like injuries or disabilities, temporary unemployment, or a senior citizen's fixed income. [03:53.120 --> 03:58.120] We rely on donations from individuals as well as local businesses. [03:58.780 --> 04:01.300] And we also apply for a few grants. [04:03.320 --> 04:05.160] So, how do we get food? [04:06.060 --> 04:09.140] We get two orders a month from the Greater Boston Food Bank. [04:09.800 --> 04:16.520] But prior to six months ago, we were getting 3,500 pounds twice a month. [04:17.400 --> 04:19.760] Now, we're down to 1,200 pounds twice a month. [04:19.880 --> 04:23.160] So, we're at 35% of what we were taking in. [04:23.320 --> 04:25.000] And it's due to a labor shortage. [04:25.000 --> 04:26.300] It's not a food shortage. [04:28.000 --> 04:29.260] It's just labor. [04:32.440 --> 04:36.040] So, we have a weekly pickup of items from the two local stop and shops. [04:36.240 --> 04:40.280] We pick up bread and bakery items that we give out on Wednesdays. [04:41.920 --> 04:46.480] And there's also donation bins inside the store that we pick up at that time as well. [04:47.620 --> 04:52.060] We get donations from individuals in town, different groups. [04:52.500 --> 04:57.480] And if we need to, we buy things from either Cisco or we'll buy it from the store. [04:57.640 --> 05:05.040] And we've been having to buy a lot of our food from less economical sources because we'd rather just get it from the food bank. [05:07.840 --> 05:12.640] So, there's two main philosophies when it comes to food pantries. [05:12.920 --> 05:17.600] There's the standardized food box or bag model, which I'm going to refer to as pre-packed. [05:18.080 --> 05:19.820] And then there's the client choice model. [05:20.540 --> 05:26.940] The client choice model is the preferred model because it offers higher satisfaction with food clients are able to choose. [05:27.560 --> 05:29.840] They tend not to take food they won't use. [05:30.560 --> 05:34.320] And it's greater opportunities for volunteer client interaction. [05:35.340 --> 05:39.360] Hybrid models also exist, so partially pre-packed and partially choices. [05:39.840 --> 05:46.300] And all these things are influenced by your equipment, your physical space, the number of volunteers, and the number of clients. [05:47.220 --> 05:52.340] But within client choice food pantries, there are different models. [05:52.820 --> 05:54.680] And you can mix and match these as well. [05:55.180 --> 05:57.080] So, this is not a comprehensive list. [05:57.220 --> 06:02.880] This is just a few of the popular ones. [06:03.420 --> 06:09.100] So, there's the table model where you need space to lay out tables, lay out the food, and clients will pack the food. [06:09.240 --> 06:15.400] Then there's the supermarket model, which requires more space because you're using carts and shelving and that type of thing. [06:15.560 --> 06:17.660] And in that model, clients pack the food. [06:18.440 --> 06:26.080] There's the window model, where all you need is a shelf and an area where the client can view the food and point to the items they want. [06:26.300 --> 06:27.880] And a volunteer will pack the food. [06:28.140 --> 06:44.740] And finally, there's the inventory list model, which works down from the smallest place to large places, where you provide basically a list of check boxes for people to choose what they want and then volunteers pack the food. [06:45.380 --> 06:52.920] So, how we operated from 2007 to 2020, we used the inventory list model and the table model. [06:53.540 --> 06:56.500] We were a very manual operation at that time. [06:56.740 --> 07:03.420] We had two volunteers who would check clients in, give them a number disc and a color-coded order form. [07:04.360 --> 07:06.600] And then we had a waiting area of chairs. [07:07.580 --> 07:16.080] So, they would check in, they'd wait, and then they'd see the assistant one at a time, who would go over additional choices for that week. [07:16.840 --> 07:28.020] And then once they finished their inventory list, they would go to the packing room, where we had one volunteer reading the list out loud and the other volunteers packing the items. [07:29.000 --> 07:35.620] And in the front area, we have bread and produce tables with one volunteer at each table. [07:36.160 --> 07:41.640] And then once the clients are all done, they drive around the back of the building, and two volunteers load their vehicle. [07:43.600 --> 07:45.320] So, I did all kinds of jobs. [07:45.800 --> 08:03.080] I started doing some pretty menial tasks, like writing dates on items, putting things away, grinding coffee, bringing orders out, photocopying our order forms, unloading food bank orders, restocking the packing room, and packing orders. [08:03.600 --> 08:11.100] So, over time, I was able to get the full picture of how the organization operates. [08:11.100 --> 08:18.140] And so, our IT infrastructure from 2007 to 2020, we had an access database. [08:18.820 --> 08:21.660] We always had two old desktops that were always out of date. [08:22.540 --> 08:24.660] One laptop that was from 2014. [08:25.680 --> 08:28.260] And some outdated office equipment. [08:28.580 --> 08:31.320] And last but not least, we had a DSL Internet. [08:33.080 --> 08:37.280] So, in 2017, I made my first thing for the food pantry. [08:37.280 --> 08:49.580] So, I basically assisted the client assistant by displaying the choices available for that week on an old monitor. [08:49.780 --> 08:51.260] And then I upgraded to an old TV. [08:51.700 --> 08:54.540] It allowed clients to get through the process faster. [08:55.020 --> 08:57.240] And we would update it weekly. [08:57.780 --> 08:58.600] This is what... [08:58.600 --> 09:00.460] So, on the left is the original one. [09:01.200 --> 09:04.280] And on the right is the better looking model. [09:04.280 --> 09:07.020] We ended up using that for three years. [09:09.640 --> 09:15.680] In 2018, I found out we would periodically lose the contents of a freezer. [09:16.340 --> 09:19.120] Due to human error or equipment failure. [09:19.540 --> 09:21.100] And I thought I could fix that. [09:21.320 --> 09:25.140] So, I developed a freezer alarm and installed... initially installed four. [09:26.300 --> 09:27.310] It's very simple. [09:27.980 --> 09:29.100] A couple door sensors. [09:29.440 --> 09:31.400] A thermocouple and an amplifier board. [09:31.660 --> 09:33.900] A buzzer and an RGB LED. [09:34.560 --> 09:37.020] It cost approximately $75 each. [09:38.140 --> 09:42.140] They would upload the temperature to Adafruit IO every minute. [09:42.500 --> 09:46.060] And if an alarm went off, we would get a text with Twilio. [09:46.540 --> 09:47.460] So, you get a text. [09:47.580 --> 09:48.320] You check the graph. [09:48.560 --> 09:50.660] And then you can kind of tell what's going on. [09:52.460 --> 09:56.240] Here's some pictures from the first time I... the first alarm I installed. [09:56.700 --> 09:59.560] It's not pretty, but it's pretty effective. [10:00.520 --> 10:02.000] This is a double door model. [10:02.260 --> 10:04.420] So, you can see I got the pie on top of the freezer. [10:04.900 --> 10:06.500] A couple LEDs. [10:07.760 --> 10:09.200] And the other hardware. [10:10.600 --> 10:12.960] So, what I had to do was... [10:12.960 --> 10:15.500] I didn't know what an alarm was. [10:15.700 --> 10:18.120] I didn't know what condition signified an issue. [10:18.120 --> 10:21.420] So, I ended up unplugging two freezers for eight hours. [10:22.820 --> 10:28.400] Which then led me to see that a full freezer when it's dead is like a log function. [10:28.660 --> 10:31.360] It gets up to 20 after a few hours. [10:31.520 --> 10:37.640] But then it just kind of levels off into the 20s for at least a couple days. [10:38.460 --> 10:44.080] But... so, my conditions for the alarm are over 20 Fahrenheit for over 30 minutes. [10:44.980 --> 10:48.060] It will happen if someone opens the door during a defrost. [10:48.500 --> 10:51.900] Or if someone repeatedly has the door open for more than a half hour. [10:52.920 --> 10:55.240] And the other condition it happens in is when the freezer is dead. [10:56.460 --> 10:58.420] The door alarms are pretty effective. [10:59.760 --> 11:02.740] After five minutes, the alarm goes off. [11:02.940 --> 11:06.400] But for the minute prior to the alarm, it starts beeping. [11:06.400 --> 11:10.560] And that usually catches people's attention before the alarm goes off to address the issue. [11:11.660 --> 11:15.880] But with the double door freezers, volunteers would constantly set them off. [11:16.180 --> 11:22.820] Every time I got a food bank order, they'd lay it all in front of the freezer, open the doors, and set the alarm off. [11:22.920 --> 11:24.960] Because stuff was in the way, they couldn't close the doors. [11:24.960 --> 11:28.400] So I added motion sensors to those freezers. [11:28.660 --> 11:35.860] And what that does is simply restart the door timer every time it's activated by motion. [11:37.040 --> 11:40.040] I also had to create two fridge alarms. [11:40.840 --> 11:46.360] And it's a little bit more complex because you need to be above and below a certain temperature instead of just below. [11:46.960 --> 11:53.600] So my alarm conditions I came up with is 33 or below for a minute because you don't want anything to freeze. [11:53.880 --> 11:54.660] That's not good. [11:55.840 --> 11:58.060] And then over 43 for 20 minutes. [11:58.400 --> 12:07.660] So according to the FDA, if you store food in a refrigerator and it's 43 to 45 degrees and it's been two hours, it needs to be thrown away. [12:07.880 --> 12:10.900] So that's why I chose above 43 for 20 minutes. [12:10.900 --> 12:16.840] The defrost won't set it off, but it's still early enough in the process to still intervene. [12:17.800 --> 12:21.340] And when we got one of these fridges, we plugged it in. [12:21.540 --> 12:22.960] It was behaving like a freezer. [12:23.180 --> 12:24.480] It was freezing everything. [12:25.220 --> 12:31.240] So I ended up using the temperature sensor from the alarm to calibrate the fridges, which worked pretty well. [12:33.220 --> 12:37.920] About a month after I installed the first alarms, I got a text message from Freezer 5. [12:39.520 --> 12:41.420] Freezer 5, that door is cursed. [12:42.100 --> 12:48.820] So every time... if you slam the door, the door bounces off the frame, the lock pops out, and the door is locked open. [12:50.340 --> 12:55.480] And so that happens a couple times a year now. [12:57.220 --> 13:01.780] But every time it used to happen, we'd lose whatever was in those freezers. [13:04.420 --> 13:09.160] So in 2019, I decided I was going to learn Salesforce. [13:10.220 --> 13:15.600] And Salesforce is available for nonprofits for free up to 10 seats. [13:16.460 --> 13:19.100] But that doesn't come with any development or anything. [13:19.240 --> 13:20.200] You have to do it all yourself. [13:21.220 --> 13:29.980] So in November 2019, I started developing a Salesforce system to do our reporting to the food bank. [13:29.980 --> 13:38.040] So if you order from a food bank, you have to report certain information to them, just general totals of certain things. [13:38.500 --> 13:43.300] And so I started to do that in Salesforce. [13:43.660 --> 13:47.840] So I created a custom record object for our clients and orders. [13:47.840 --> 13:53.200] It took me a couple weeks to clean up the data because it was 30 years of fat fingering. [13:53.680 --> 14:00.880] And so I was able to import all of our client data into the Salesforce system and recreate everything we would do. [14:01.660 --> 14:03.640] I had it done in January 2020. [14:03.700 --> 14:09.220] So we ran parallel to the access system for the month of February. [14:09.220 --> 14:17.360] Now, what I mean by that is we would just generate reports, compare the reports, make sure they match up. [14:18.980 --> 14:27.460] So one thing I did when I had access to our client database was I geocoded the data because I wanted to see where our clients came from. [14:28.320 --> 14:32.400] I wasn't sure if there was going to be any pattern or rhyme or reason to it. [14:33.140 --> 14:39.640] It turns out there isn't because shit happens and everyone needs help at some point. [14:40.480 --> 14:48.000] Because we serve people who live, work or pray in our community, you can see that it greatly exceeds our town boundary. [14:51.720 --> 14:53.660] So here's where it got interesting. [14:54.920 --> 14:58.780] Our original COVID protocol and Salesforce deployment took place at the same time. [14:59.860 --> 15:03.440] That's me up on the left there terrified at a podium. [15:05.700 --> 15:10.520] And so what I did was I checked the first client in on the laptop and that was it. [15:10.580 --> 15:12.240] I couldn't check anybody else in. [15:12.380 --> 15:15.520] I couldn't do anything except stand there and feel useless. [15:18.460 --> 15:22.400] So what I ended up doing, we had two crews of six volunteers. [15:23.140 --> 15:25.280] We would pre-pack all of the orders. [15:26.220 --> 15:28.560] This is when we started ordering produce from Cisco. [15:29.560 --> 15:33.980] And so my job was to check people in, which I ended up doing from my mobile phone. [15:34.220 --> 15:40.400] And to keep track of family size, I used color coded Post-its and just slap them on the windshield. [15:40.660 --> 15:46.900] Once I checked people in to tell the other volunteers what they need to do or how many choices to offer. [15:47.520 --> 15:56.340] So then that freed me up so I could check in six cars, help them all get out through the process and record the bag totals. [15:58.300 --> 16:04.600] We operated drive-thrus for six months, but it was really rough because most of our volunteers are older. [16:04.600 --> 16:09.360] And all the food was outside in the summer heat. [16:09.960 --> 16:11.120] And same with the volunteers. [16:11.420 --> 16:17.460] So I also noticed we went through way more inventory. [16:19.140 --> 16:24.680] And the last thing I noticed was that at least half of our clients had smartphones, which gave me an idea. [16:27.220 --> 16:31.600] So we had one volunteer bring out the non-perishable and the household items. [16:31.840 --> 16:33.520] That's the volunteer I would help the most. [16:33.760 --> 16:36.440] Then we would pack dairy on demand by family size. [16:36.760 --> 16:43.020] We had a table of bread and a table of produce with one volunteer offering choices. [16:44.040 --> 16:47.960] And then we had a meat cooler with one volunteer offering choices. [16:49.720 --> 16:53.640] And this is where I want to get into my public service announcement. [16:53.880 --> 16:56.040] We use Google Workspace for everything. [16:56.220 --> 17:02.260] I've made accounts for every individual in our organization as well as different roles within our organization. [17:02.680 --> 17:04.120] It's really helpful. [17:04.320 --> 17:06.200] You can make up to 2,000 users for free. [17:07.460 --> 17:13.540] And that's the foundation of our IT going post-COVID. [17:15.040 --> 17:17.640] Salesforce offers 10 users for free. [17:17.980 --> 17:19.460] But you have to develop it yourself. [17:20.460 --> 17:22.420] Microsoft Cloud, 10 users for free. [17:22.660 --> 17:27.880] But the only reason we got Microsoft Cloud was to get five free copies of Offline Office. [17:28.100 --> 17:29.560] Because that's the only way to do it now. [17:31.260 --> 17:33.240] We also use Twilio for all our texting. [17:33.500 --> 17:38.460] And they will give you a $500 credit to your account if you're doing it on behalf of a non-profit. [17:39.560 --> 17:42.040] And then there's some other services we get discounts on. [17:43.940 --> 17:52.620] So in June 2020, so a few months into the drive-through situation, I started developing an ordering system. [17:52.840 --> 17:58.720] It originally was going to be just a numbering system using text messages and a receipt printer. [18:00.260 --> 18:06.140] But every time I showed them what I was working on, they asked me to take it a step further. [18:07.460 --> 18:10.200] So I ended up building a Now Serving sign. [18:12.180 --> 18:15.920] And everyone in our organization has a mobile phone. [18:16.060 --> 18:25.780] So I put pushover on their phones, which allows them to see numbers given out, numbers called, as well as orders submitted. [18:25.780 --> 18:32.980] So when a client walks in, our volunteers can greet them by name, just by taking a quick glance at their phone. [18:34.380 --> 18:36.760] So we use Formstack to take the orders. [18:38.080 --> 18:40.080] And to receive orders, we use Zapier. [18:40.080 --> 18:50.840] So Zapier takes the Formstack order submission, and then we turn it into an HTML formatted email. [18:51.620 --> 18:56.700] And that allows us to just use Gmail on the packing station to pick up orders. [18:57.540 --> 18:59.160] I'll show you what I mean by that. [19:00.340 --> 19:02.020] So this is the number machine. [19:02.280 --> 19:03.540] It's not very sophisticated. [19:04.320 --> 19:13.360] It just costs about $70 in parts, and about $12 to $15 a year, to $175 a year to run. [19:13.720 --> 19:14.740] So it works. [19:14.880 --> 19:20.260] You put your hand on it on the top, and it will print out the order form, I mean the number. [19:20.860 --> 19:24.440] And then I had to build a number sign. [19:24.620 --> 19:26.220] So it's like a Now Serving sign. [19:26.220 --> 19:33.760] I doubled up the LED matrices because we had some older clients who complained that they couldn't see the numbers from the car. [19:34.500 --> 19:40.820] So I 3D printed that little thing up in the top center just to hold the signs together. [19:43.060 --> 19:48.340] So in total the signs cost $165 to build. [19:48.600 --> 19:51.480] And then originally we weren't going to have a packing station. [19:51.480 --> 19:57.000] My plan was to use volunteers' phones to handle that aspect of things. [19:57.380 --> 20:03.820] But in talking with the other people in the organization, they wanted something like this. [20:03.820 --> 20:07.020] So it added another $500 to the cost of the system. [20:10.700 --> 20:21.180] So the cost associated with running the ordering system between Formstack and Zapier is $60 a month or $725 a year. [20:22.360 --> 20:27.320] So in total, the ordering system costs about $750. [20:27.640 --> 20:30.040] If we didn't have the packing station, it would be $250. [20:31.980 --> 20:36.460] It's $75 a month to run, which equals about $900 a year. [20:36.680 --> 20:41.080] So we save more inventory a month than we spend on the system. [20:43.300 --> 20:46.380] And I made it because we needed something and I knew our process. [20:47.460 --> 20:56.340] So I was able to create something that we could just work with because it was based on our underlying processes that we used to have. [20:57.980 --> 21:05.660] After learning about all the things I did for the food pantry, the board of directors decided to compensate me for quite a bit of work over the last few years. [21:06.200 --> 21:11.100] And it was pretty nice to be paid for something that I had already finished. [21:11.280 --> 21:13.060] It's like I didn't have to do anything else. [21:14.900 --> 21:16.220] So how we operate now. [21:16.520 --> 21:19.880] You can see the packing station is down at the end there. [21:19.980 --> 21:22.560] You can see the alarms, the blue lights on the alarms. [21:23.240 --> 21:29.960] So we've been using a digital inventory list model, which I believe any inventory list model can be digitized. [21:30.880 --> 21:40.500] So a lot of food pantries could go digital rather quickly if they have the underlying processes behind the paper system. [21:40.960 --> 21:43.520] And we also switched to the supermarket model. [21:46.140 --> 21:51.760] So now we have one volunteer signing in clients on the other side of the building. [21:51.920 --> 21:55.240] The waiting room is outside or in a vehicle if the weather sucks. [21:56.060 --> 21:57.880] The packing room is two volunteers. [21:58.160 --> 21:58.860] That's where I am. [21:59.020 --> 22:00.480] I operate the packing station. [22:01.980 --> 22:10.960] And in the front room we have two volunteers to just help us as clients fill their carts and get the proper number of choices for their family size. [22:11.440 --> 22:13.440] And then when they are done we still have the back door. [22:13.640 --> 22:16.080] Clients drive around back, load the order in their car. [22:17.740 --> 22:19.180] This is the original order form. [22:19.380 --> 22:20.600] So you can see it is pretty basic. [22:21.280 --> 22:26.440] You just have name, order number, phone number, and a bunch of check boxes. [22:28.580 --> 22:33.000] Unfortunately, the number of meat choices we were offering was based on the family size. [22:33.000 --> 22:35.280] And that would not always be entered in correctly. [22:36.440 --> 22:46.600] So what ended up happening is I'd have to track down someone who put in more or less choices than they were supposed to get and figure out what they actually wanted. [22:46.900 --> 22:53.420] So that was enough of a problem where we ended up getting a new client freezer for the front room. [22:54.320 --> 22:58.980] So we ordered a three-door freezer, and we had to wait five months to get it. [23:00.020 --> 23:02.300] Three days after it was plugged in, it died. [23:04.060 --> 23:09.120] So it died so fast we hadn't even put food in it yet, and I hadn't put an alarm on it. [23:10.060 --> 23:12.260] So once it was repaired, I put the alarm on it. [23:12.660 --> 23:18.140] I basically used a stripped-down model like the fridge because this freezer has auto-closing doors. [23:19.240 --> 23:25.160] And so we loaded it with food, and this is what the alarm looks like, the stripped-down one. [23:26.580 --> 23:27.640] So then it died again. [23:27.840 --> 23:30.020] So here's where I'll show you my logic. [23:31.240 --> 23:34.240] So I marked it failing at around 7 p.m. [23:35.180 --> 23:37.760] The alarm triggered around 9, and we had to empty it. [23:37.820 --> 23:39.240] We emptied it around 10.30 p.m. [23:40.480 --> 23:43.340] As you can see, after we emptied it, it continued to not work. [23:44.880 --> 23:46.500] So this is what we came into. [23:47.160 --> 23:50.960] One of the ladies was very upset when she came in and saw the freezer was reading 41. [23:52.200 --> 23:59.600] But luckily I reassured her that sensor was located in the top of the unit, and the sensor I have in there was still reading in the mid-20s. [23:59.940 --> 24:01.520] So we felt a lot better after that. [24:02.440 --> 24:04.080] So we had to empty everything. [24:05.320 --> 24:08.860] So then it was... you can see it was fixed again. [24:10.160 --> 24:12.800] And then three days later, died again. [24:12.960 --> 24:18.060] We had to re-empty it, wait for them to come in, fix it again. [24:18.300 --> 24:20.300] And you see those last two spikes on the right? [24:20.580 --> 24:22.180] That's the fourth motor blowing. [24:24.360 --> 24:25.560] So what happened? [24:25.720 --> 24:28.040] We had four OEM motors had died. [24:28.960 --> 24:30.840] Just didn't last more than a few days each. [24:30.840 --> 24:36.140] They chalked it up to supply chain issues, which they said they didn't have, but obviously they did. [24:37.200 --> 24:43.820] So if I didn't have an alarm on that freezer, we would have lost the most amount of food we ever would have lost at a time. [24:44.040 --> 24:45.180] Not once, but twice. [24:45.860 --> 24:48.640] And that would have been some really bad PR for that company. [24:50.580 --> 24:52.060] So I redid the order form. [24:52.920 --> 25:02.080] Now that we didn't have meat choices on the order form, I was able to offer some static choices for certain items. [25:02.200 --> 25:04.280] So you can pick which type of veggies you get. [25:04.440 --> 25:06.100] You can pick which type of jelly you get. [25:06.340 --> 25:09.460] You can pick butter or margarine, coffee and baking mix. [25:10.940 --> 25:14.720] It's just nice to offer people choices because they really appreciate it. [25:16.180 --> 25:18.860] So here's something we could never do when we were on paper. [25:19.180 --> 25:22.500] I can dump our ordering system anytime I want. [25:22.740 --> 25:24.420] So this is our last 250 orders. [25:24.960 --> 25:30.000] You can see the most popular items are eggs and toilet paper. [25:30.420 --> 25:33.760] But then again, only 85% of people want those items. [25:34.800 --> 25:40.800] What I ended up noticing is if we were still pre-packing orders, this would be a blue rectangle. [25:40.980 --> 25:41.940] But it's not. [25:41.940 --> 25:44.600] People choose only what they need. [25:45.520 --> 25:50.040] So on face value, we save 43% of our inventory by letting people pick what they want. [25:50.340 --> 26:01.940] But when you take into account family size, which influences the number of items that are headed out the door, it's over a 50% savings on inventory simply by letting people pick what they want. [26:05.460 --> 26:07.020] We had some more freezer problems. [26:10.280 --> 26:13.420] I really like the freezer alarms because most of the time I don't hear from them. [26:13.620 --> 26:17.180] And every time I hear from them, I get credited for saving the day. [26:18.880 --> 26:21.280] So we had an alarm go off. [26:21.380 --> 26:24.220] So I noticed the freezer stopped working for about eight hours. [26:24.600 --> 26:25.720] So we emptied it. [26:25.920 --> 26:27.580] We called the refrigeration company. [26:28.160 --> 26:29.400] They came in. [26:29.460 --> 26:30.640] It was working when they were there. [26:31.300 --> 26:32.760] So they said nothing was wrong. [26:35.460 --> 26:39.600] So about seven days later, it stopped for 24 hours. [26:39.600 --> 26:43.860] But again, by the time the refrigeration company got there, it was working again. [26:44.480 --> 26:45.740] So nothing was wrong. [26:46.780 --> 26:50.820] About a week later, we had a catastrophic freeze over. [26:51.720 --> 26:54.380] And all the boards and sensors in the unit were replaced. [26:55.660 --> 26:57.940] And since then, that unit's been okay. [26:59.880 --> 27:03.480] A couple weeks ago, we had our client freezer, you know, the one that died four times. [27:04.120 --> 27:05.980] We had it freeze over a little bit. [27:06.800 --> 27:12.100] And I was able to notice these patterns. [27:12.340 --> 27:22.640] And we were able to figure out that inside the unit had just, due to humidity, had built up enough ice to impact the performance of the unit. [27:22.860 --> 27:27.760] So we just took a heat gun and melted it. [27:27.820 --> 27:29.580] And then it was back to business. [27:30.940 --> 27:37.120] So our IT infrastructure from 2020 till now, we used Salesforce. [27:37.540 --> 27:39.760] Two desktops that I picked out last year. [27:40.080 --> 27:41.960] One laptop I picked out in 2020. [27:42.380 --> 27:45.000] We used Workspace for email and documents. [27:45.260 --> 27:48.280] We got some nice printers to color LaserJet. [27:48.660 --> 27:56.500] We have Raspberry Pis protecting our food as well as the ordering system helping us save inventory. [27:56.500 --> 28:04.500] And we finally upgraded to Comcast Internet because I threw a hissy fit when we were still on DSL. [28:07.500 --> 28:12.680] So that's pretty much everything I've done at the food pantry in the last few years. [28:13.200 --> 28:18.520] It is a lot of fun to work with these people. [28:18.520 --> 28:20.980] Now, they may not be technical people. [28:21.000 --> 28:25.740] They can use the systems you set up for them, but they cannot set up anything for themselves. [28:26.000 --> 28:33.620] So these organizations need people like us to set up services for them to help them operate better. [28:34.780 --> 28:48.740] So in 2017, I built the first prototype of a wearable computer using a Raspberry Pi. [28:49.340 --> 28:51.700] I will... this is from the day. [28:51.960 --> 28:56.200] The day I actually created it, I went on Show and Tell and showed it off a little bit. [28:56.200 --> 28:57.140] So... [28:57.140 --> 28:57.980] I [29:02.830 --> 29:04.470] don't know if you can hear that. [29:04.550 --> 29:09.170] The bulky Pi Zero and the Wi-Fi hat with the Pi Zero W. [29:09.390 --> 29:11.410] But this is what it looks like so far. [29:12.270 --> 29:12.930] Ooh, cool. [29:13.750 --> 29:20.210] So what I've done with the code is I've lined up the zoom on the camera so it lines up with your field of vision. [29:20.210 --> 29:21.990] So it's kind of like augmented reality. [29:22.410 --> 29:24.610] And I'm going to be adding the user interface on top of that. [29:26.270 --> 29:26.750] Neat. [29:27.070 --> 29:29.670] There's already more users of your thing than Google Glass. [29:29.770 --> 29:30.130] Congratulations. [29:34.110 --> 29:35.970] So that was the first version. [29:36.130 --> 29:38.250] So I used the Pi Zero and the Wi-Fi hat. [29:39.050 --> 29:40.070] And a camera. [29:41.310 --> 29:44.350] Eventually, I kept working on this project weekly. [29:44.590 --> 29:46.550] I went back on Show and Tell quite a few times. [29:46.850 --> 29:52.770] And then I ended up building or making a guide for version one of Pi Glass in 2017. [29:53.650 --> 29:55.250] So this is version one. [29:55.470 --> 29:58.970] You can see it's really bulky and pretty janky. [29:58.970 --> 30:01.590] But it works pretty well. [30:03.490 --> 30:09.170] Unfortunately, after a while, I couldn't take the project any further. [30:11.830 --> 30:16.330] It cost about $300 to make and an hour and 20 minutes to assemble. [30:16.630 --> 30:20.730] Most of that was doing the soldering because I struggle with that sometimes. [30:21.970 --> 30:24.150] So it's made of some basic parts. [30:24.390 --> 30:25.690] There's safety glasses. [30:25.990 --> 30:26.990] A Pi Zero W. [30:27.490 --> 30:28.750] A view find display. [30:29.310 --> 30:31.450] You have the Raspberry Pi spy cam on there. [30:31.790 --> 30:36.210] I used an audio hat with a bone conduction transducer mounted to the frame. [30:37.730 --> 30:40.370] Everything is held together with zip ties and heat shrink. [30:42.570 --> 30:50.390] And then in 2021, when the Pi Zero Two came out, I decided to revisit the concept. [30:51.370 --> 30:55.250] So I rebuilt it with safety glasses. [30:55.430 --> 30:56.430] But this time I used... [30:56.430 --> 31:01.230] Instead of putting the Pi on the side of my head, I put the Pi on the back of my head with a baseball cap. [31:01.690 --> 31:05.190] It makes it look a lot more streamlined and it's easier to assemble. [31:06.190 --> 31:07.690] So I used the Pi Zero Two. [31:08.010 --> 31:08.970] The same display. [31:09.190 --> 31:09.870] The same camera. [31:10.610 --> 31:14.610] I used a better audio board that actually has two MEMS microphones on it. [31:14.790 --> 31:16.450] So it functions like a speakerphone. [31:16.650 --> 31:21.210] So when you're live streaming or recording a video, you actually have audio. [31:22.890 --> 31:32.750] And then the bone conduction transducer is mounted to the frame with heat shrink. [31:32.750 --> 31:36.130] And then instead of... [31:36.130 --> 31:38.710] The version one was controlled with SSH from a phone. [31:38.910 --> 31:40.150] And it was kind of cumbersome and stuff. [31:40.550 --> 31:45.310] So I ended up using a Bluetooth game pad to create my interface. [31:46.870 --> 31:51.090] And this model is also held together with zip ties and heat shrink. [31:52.830 --> 31:55.490] Here's some pictures of version two. [31:56.230 --> 32:01.310] So I got the assemble thing on the left and me wearing it on the right. [32:03.250 --> 32:08.490] Now, instead of SSH on a phone, I created a user interface. [32:09.070 --> 32:18.410] So the way the user interface is triggered is there's a button on the audio hat on the back of your head. [32:18.410 --> 32:24.190] And that will either start the application launcher or it will kill any program that could be running. [32:24.710 --> 32:29.510] So you typically launch your program, do your thing, push the button when you're done. [32:30.870 --> 32:38.090] And everything is controlled with this 8BitDo's tiny little 0-2 game pad. [32:39.550 --> 32:42.350] It's used to... [32:43.090 --> 32:48.230] Well, the main thing is the application launcher, which I will show you how that works. [32:49.390 --> 32:53.470] So when I was working on the project initially, everything was hard coded. [32:53.810 --> 33:00.430] I had to edit two files, add about 20 lines to add an option to the application launcher. [33:01.470 --> 33:06.170] So I created a markup file to handle that for me. [33:08.570 --> 33:12.970] So you give it a name, a color for rainbow mode because I have rainbow mode. [33:14.930 --> 33:20.670] And the command you want to run or the shell script that you want to run. [33:20.910 --> 33:26.830] And then you put the associated processes with those commands on the last line. [33:26.830 --> 33:34.870] So you can successfully launch applications and terminate them when you want to. [33:35.790 --> 33:41.710] There are five main pieces of PyGlass version 2. [33:41.990 --> 33:44.490] So FFmpegs for live streaming. [33:44.490 --> 33:47.090] You can live stream to any RTMP service. [33:47.610 --> 33:53.290] I have Kodi for watching movies, Netflix, YouTube, that type of thing. [33:53.290 --> 33:57.850] I use OpenCV for camera related functions. [33:59.030 --> 34:03.630] All the applications I wrote for this version are in Python. [34:05.050 --> 34:07.150] And last but not least, I have RetroPy. [34:07.490 --> 34:12.810] So we can play SNES games and stuff. [34:16.530 --> 34:26.650] So in March of this year, I made it into Raspberry Pi magazine, which was pretty cool. [34:26.950 --> 34:28.290] They're really nice people. [34:29.090 --> 34:33.250] And they definitely appreciated me sharing this project with them. [34:33.250 --> 34:42.050] One of the coolest things that they said was that they look forward to the Cyberpunk Cyberglass future. [34:43.290 --> 34:44.810] So that gave me an idea. [34:45.150 --> 34:52.430] I had been working on a guide for my website, which wasn't that great. [34:53.050 --> 34:59.170] I ended up contacting the folks at Adafruit to see if I could write a guide for version 2. [34:59.670 --> 35:01.390] Because I wrote one for version 1. [35:01.750 --> 35:05.150] So they said yes, and then I was terrified because it wasn't done. [35:06.090 --> 35:08.590] I still had quite a bit of work to do. [35:10.250 --> 35:12.890] My application launcher was still hard-coded at the time. [35:12.890 --> 35:17.910] So this is the point where I created the markup file to make it easy. [35:18.870 --> 35:26.350] One thing I would love to show you is exactly how easy it is to make this version. [35:27.030 --> 35:30.770] You take four pieces of heat shrink for the bone conduction transducer. [35:31.010 --> 35:32.910] And you mount it to the glasses frame. [35:34.690 --> 35:42.370] And then you attach it to the audio board, mount the camera, mount the mount for the display. [35:43.070 --> 35:45.430] It's two zip ties to mount the pie to the hat. [35:46.070 --> 35:52.010] Then you just have to run a camera cable down the side of it to the front. [35:56.310 --> 35:57.590] And that's all it takes. [35:57.730 --> 36:00.810] So the entire process to create one of these glasses is about 20 minutes. [36:01.730 --> 36:08.990] which is surprisingly... it's done before you even get started almost. [36:11.590 --> 36:19.610] One of the main things I wanted to show you is I used OpenCV to create my own filter program. [36:19.790 --> 36:21.250] So it does facial recognition. [36:21.570 --> 36:27.090] And you can overlay whichever image you want on different locations on people's faces. [36:27.090 --> 36:30.790] So you can see I got a brain blender and a dumb sticker. [36:31.570 --> 36:35.150] It's actually not up there. [36:35.270 --> 36:36.150] Oh, it's not up there? [36:36.470 --> 36:36.710] No. [36:37.450 --> 36:37.830] Okay. [36:51.210 --> 36:53.370] Well, unfortunately, I guess I can't show you that stuff. [36:53.470 --> 36:59.730] But if I can get the demo to work, I'll do a quick little demo for you guys. [37:07.330 --> 37:13.020] And Matt, while you do that, can we take some questions or would you prefer not to multitask? [37:13.200 --> 37:14.240] I can multitask. [37:17.000 --> 37:18.760] We have one question in the chat. [37:19.330 --> 37:19.790] Okay. [37:20.140 --> 37:23.760] Are there any tutorials on YouTube for the fridge alarm system you made? [37:23.760 --> 37:27.450] There's no tutorials on YouTube, but it is on GitHub. [37:27.960 --> 37:28.600] Nice. [37:28.810 --> 37:32.200] I can provide the link to that after, if necessary. [37:36.820 --> 37:37.920] Any other questions? [37:41.760 --> 37:47.040] It's so cool to see this stuff get used for something good. [37:47.540 --> 37:56.180] Mike, I'm interested in, do you have any plans to like expand this to other pantries? [37:56.240 --> 38:01.180] Like how do you get this to other, how do you get other pantries online with stuff like this? [38:01.600 --> 38:03.120] See, that's the interesting question. [38:03.380 --> 38:08.160] When I started out on this path, I was looking for open source solutions to this problem. [38:08.320 --> 38:09.520] And I couldn't find any. [38:09.520 --> 38:12.780] So I didn't want to try to build something out all myself. [38:13.020 --> 38:16.240] So I just went through the path of least resistance in terms of free services. [38:16.560 --> 38:22.440] But there should be open source solutions to these problems that I guess are going to have to be created. [38:25.220 --> 38:25.900] Cool to think. [38:25.980 --> 38:28.080] Have you thought of prioritizing any of these things? [38:28.300 --> 38:33.340] Like making it into a box or a kit that somebody can order in like instructions to set it up? [38:34.840 --> 38:35.640] That would... [38:35.640 --> 38:38.360] I haven't thought of that, but that's a good idea. [38:38.360 --> 38:39.960] That would be cool. [38:40.160 --> 38:45.740] Like send out a IoT freezer kit to somebody and they set it up and get it going. [38:46.300 --> 38:50.280] Or better yet, engage with the freezer companies and get them to put it in the freezer. [38:50.960 --> 38:51.440] Yeah. [38:51.800 --> 38:57.660] One thing I noticed is there's a lot of stuff, like we have a wide variety of equipment. [38:58.100 --> 38:59.880] Some is analog, some is digital. [39:00.160 --> 39:02.240] We don't have problems with the analog equipment. [39:02.420 --> 39:04.220] We have problems with the digital equipment. [39:04.700 --> 39:16.400] You know, like, and it's just a little frustrating at times knowing that the old technology works fine and then they throw a computer in it and now it sucks. [39:17.980 --> 39:18.460] Yeah. [39:19.040 --> 39:20.360] First off, this is awesome. [39:20.440 --> 39:27.980] I really loved how you like got in there and learned the problems facing and found part of the issues that were really popping up in practice. [39:28.240 --> 39:31.080] And I wanted to ask for your alarm system. [39:31.400 --> 39:38.260] Is it just you who's on call 24-7 or have you made a rotation with your fellow volunteers? [39:38.260 --> 39:40.580] Yeah, we have three volunteers that are on the text list. [39:41.380 --> 39:46.960] And whenever it goes off, they immediately text me because I'm the one who can interpret the graphs. [39:47.280 --> 39:49.180] They can look at the graphs, but they don't know what's going on. [39:49.440 --> 39:54.320] When I look at it, I know it's either dead, someone had it open too long, or something else happened. [39:54.320 --> 39:55.360] But, yeah. [39:58.560 --> 40:00.600] It sounds like you need one books. [40:03.420 --> 40:06.460] Like, if the graph looks like this, then... [40:06.460 --> 40:07.020] Yeah, yeah. [40:07.140 --> 40:09.080] I should definitely like do some documentation. [40:09.420 --> 40:11.040] Like, this is a dead one. [40:11.180 --> 40:11.840] This one's okay. [40:12.800 --> 40:12.940] Yeah. [40:13.260 --> 40:15.020] What are you using to make the graphs? [40:15.480 --> 40:18.900] I'm just using Adafruit IO, which is free. [40:21.100 --> 40:23.800] It's basically an MQTT service. [40:26.760 --> 40:33.780] And they have dashboards that you can just drag a line chart into, and it works. [40:34.220 --> 40:38.760] Sounds like we got a Hackers Got Talent presentation coming up from Matt tonight. [40:39.700 --> 40:41.080] I think, right? [40:41.320 --> 40:43.620] Give him a round of applause if you'd like to see some of that. [40:48.210 --> 40:49.470] These are great questions. [40:49.470 --> 40:54.770] We have about five more minutes for questions, if anybody want to keep interacting. [40:58.440 --> 41:00.220] Is this outputting something or no? [41:00.680 --> 41:01.120] It is. [41:01.420 --> 41:02.660] I'm asking, is this outputting? [41:02.660 --> 41:02.980] Yeah, it should be. [41:03.220 --> 41:05.480] I don't think it's working, so... [41:08.490 --> 41:17.350] If I may, I know, you know, during my day job, I do AVP of Quality and Data for a non-profit, and it's a health organization. [41:17.530 --> 41:22.970] One of our departments is a food pantry, and I'm already texting and sending pictures, because pantry is a big deal. [41:23.230 --> 41:29.650] And during COVID, you know, there was just so many more people that needed food and managing that, and you couldn't give it in person. [41:29.650 --> 41:31.850] So, like, what you're doing is amazing. [41:31.850 --> 41:33.550] And you alluded to this. [41:33.650 --> 41:34.950] Someone in the audience already alluded. [41:34.950 --> 41:41.530] You know, people like you with your talents and your brains can benefit so many on the ground. [41:42.430 --> 41:47.950] People that are doing these services for the population that don't have the skills. [41:47.950 --> 41:55.530] We're struggling with figuring out systems and QR codes, and there are these tech companies that are selling this to you for hundreds of thousands of dollars. [41:56.230 --> 42:02.170] Thousands just, you know, gauging the prices for something that can be done for so much less. [42:03.450 --> 42:12.650] So, if you want to use your talents for something good and make a couple of bucks, you know, I don't know about hundreds of thousands of dollars, but, you know, definitely reach out. [42:12.730 --> 42:14.370] And Matt, I'm going to speak to you later. [42:14.370 --> 42:15.530] Just go through the water. [42:17.480 --> 42:23.720] For Matt, specifically, I do a bunch of kind of STEM work with, like, grade school students, middle school students. [42:24.000 --> 42:25.420] We use the CPX. [42:25.840 --> 42:28.020] It has all of these functions and capabilities. [42:28.500 --> 42:34.960] But may I use your information that you're providing here as a real-time example and even try to get in touch with you for some of the code maybe to... [42:34.960 --> 42:35.100] Sure. [42:35.500 --> 42:42.840] It's a perfect example of real-world application of this for the students versus just doing the fun stuff to get them introduced. [42:43.100 --> 42:43.500] Yeah. [42:43.660 --> 42:44.300] It's kind of awesome. [42:44.520 --> 42:44.740] Yeah. [42:45.780 --> 42:55.040] It's a lot of fun because it's very satisfying when you can create something that actually has a benefit versus just some experiment or something like that. [42:55.240 --> 42:56.680] And we do all of these little pieces. [42:57.080 --> 43:02.160] You literally put them together in a perfect example that's actually solving problems and saving money. [43:04.080 --> 43:13.040] So, with your... the food pantry, some of the problems that we have with the food pantry are, like, we don't know what food we're going to be getting. [43:13.300 --> 43:13.460] Right. [43:13.720 --> 43:13.920] You know? [43:14.080 --> 43:22.040] So, like, when you guys were having the people come and choose, like, what food's like, did you guys already have that information before? [43:22.220 --> 43:25.460] Are you communicating with your providers? [43:25.660 --> 43:26.600] Like, how did that work? [43:26.760 --> 43:27.520] So, we... [43:27.520 --> 43:28.620] Oh, it popped up. [43:32.320 --> 43:36.080] So, we offer choices on our non-perishable items. [43:36.300 --> 43:40.640] So, that's what people are ordering and we're packing for them at the time. [43:41.320 --> 43:42.200] The other... [43:42.200 --> 43:48.440] Like, the produce, the bread, all that stuff is in, like, a shopping area. [43:48.740 --> 43:50.180] So, we're only... [43:51.020 --> 43:56.900] They're only ordering the non-perishable items, which could be on the shelf for a very long time. [43:57.760 --> 43:59.740] And instead of... [43:59.740 --> 44:07.220] Because when we were doing the drive-thrus and giving everyone everything, we went through inventory at, like, three or four acts of what we used to. [44:07.600 --> 44:11.020] And providing choices on those items was... [44:11.020 --> 44:12.340] It created the biggest improvement. [44:12.720 --> 44:22.000] So, if you have any static choices on your menu, you could offer those as, like, an inventory list. [44:22.000 --> 44:22.480] Thanks. [44:25.340 --> 44:25.740] All right. [44:25.880 --> 44:27.100] So, let's see how much time we got. [44:27.140 --> 44:28.100] We have one minute. [44:28.560 --> 44:28.980] All right. [44:29.420 --> 44:29.980] I'm gonna... [44:30.460 --> 44:31.020] Who wants... [44:31.020 --> 44:32.180] Who doesn't want to be on Twitter? [44:33.440 --> 44:33.720] What? [44:34.220 --> 44:35.400] Who doesn't want to be on Twitter? [44:36.280 --> 44:38.020] You want me to get kicked off of Twitter? [44:38.360 --> 44:39.060] No, no, no, no. [44:39.840 --> 44:40.500] Like, who wants... [44:40.500 --> 44:41.640] Who doesn't want their picture on Twitter? [44:41.660 --> 44:42.040] Oh, okay. [44:42.040 --> 44:43.700] We all have masks. [44:43.920 --> 44:45.100] Yeah, we're all masks anyway. [44:48.280 --> 44:49.220] See if this works. [44:54.730 --> 45:01.690] So then, you go to the keyboard, and you type in what you want your tweak to be. [45:01.690 --> 45:10.250] So, O, T, T, R, and that's it. [45:10.970 --> 45:14.630] So, as soon as... [45:14.630 --> 45:15.910] Yep, it was posted. [45:16.450 --> 45:18.010] So, I use the... [45:19.350 --> 45:23.590] I forget which API it is, but it's a Python API for Twitter. [45:24.530 --> 45:25.690] I think it's... [45:26.650 --> 45:27.730] I don't know. [45:28.290 --> 45:29.370] What's the Twitter handle? [45:30.690 --> 45:33.610] At MattTheMaker, but there's an underscore in front of that. [45:35.210 --> 45:37.370] Let's give Matt another round of applause, everybody. [45:40.350 --> 45:45.110] And someone else in the Matrix chat said, making these things into kits would be amazing. [45:45.310 --> 45:47.730] So Matt, we got you a business plan coming up. [45:47.850 --> 45:51.250] So anybody with any ideas for Matt, find them and hook it up. [45:51.410 --> 45:52.230] Thank you so much. [45:58.330 --> 46:00.630] The next talk is defensive computing. [46:00.630 --> 46:03.450] And remember, Hackers Got Talent tonight.