So let me just make an announcement and then we should be good. So hello and welcome back everyone in this track. The next talk we have is optimizing image recognition with OpenVINO, with Intel OpenVINO on OpenData Hub. So we have Sean Pryor and Ryan Looney for this talk and if you have any questions, feel free to put them in the Q&A section or just put them in the chat directly. And with that said, the stage is all yours. Go ahead folks. Alrighty, hello everyone. I'm Sean Pryor as mentioned, this is Ryan Looney. We are here to present on Intel OpenVINO on OpenData Hub. So to get started, I'll be talking a little bit about OpenData Hub, a data and AI platform for the hybrid cloud. So for anyone not already intimately familiar, OpenData Hub is a big meta project that aims to bring together a lot of the tools that one would need to do all this kind of data science. So we have Seldin for model server and we have Kubeflow as sort of the main backend component. And we have OpenVINO as part of enhancing training and inference on Intel-based CPUs. So when we go through AI, there are multiple sections here. So we have in OpenData Hub, we have pieces to take care of stuff about data storage. We have things like Ceph, we have parts to take care of data ingestion transformation. And then that's all on the data engineering side. And for the data scientists, we have all of your familiar tools for data analysis, building, training, testing your models. And we also have plenty of tools to do monitoring, model serving, optimization, detecting drift, all of that stuff. And all of it is integrated into OpenData Hub as a one source of all of your tool needs for doing AI and ML on OpenShift. And additionally, it is available today from the OpenData Hub community operator. So to take a look here, we have some of the names called out here, Ceph for your storage, Kafka and Strimsy for streaming, SuperSet, you all of the Apache projects have a space somewhere in here, Spark, Thrift, all the stuff you'd expect for doing data analysis. For AI and ML, all of the stuff you expect like TensorFlow, PyTorch, and some distributed training mechanisms like Kubeflow, PyTorch, job, TF, job, et cetera. And we have stuff like Selden, KF serving and OpenVINO model server as different ways that you can distribute your model for me facing Grafana, of course, standard monitoring tools and pipelines and other components that you might need. So the goal of OpenData Hub is to create this blueprint for building, running any kind of AI, ML workloads, simplify all of the streaming and all of the minutia of doing this. And it is all done in a nice secure hardened red hat security guarantee kind of way. So now to talk about the specifics of OpenVINO, we have Brian Loney, take it away. Sure, thanks, Sean. So hi, I'm a product manager at Intel for the OpenVINO toolkit and just to give sort of a high level, we take trained deep learning models from the popular frameworks like TensorFlow and PyTorch and optimize them for deployment on different Intel hardware. So whether it's a data center server with a Xeon processor at the edge with core, Adam or integrated GPU, we optimize the neural network so that it can be deployed for inference on these platforms. We also, and Sean, if you wanna tap one more time, I think it's, there we go. And so with the goal of deploying on Windows, Linux, macOS, and when we say Linux, we also are including OpenShift environments where we have an operator for OpenVINO so you can easily manage and deploy. And we're gonna talk a little bit more about that. We also do have some tools for quantization aware training that actually help sit on top of TensorFlow and PyTorch to do quantization aware training or training with Sparsity, but primarily we're focused on getting those trained models ready for deployment and getting the best performance on Intel architecture. And this is just another high level way to look at what OpenVINO's doing. If you push, there we go. Yeah, so taking an input image, doing some pre-processing, sending it to an OpenVINO optimized graph that can run on any of the hardware backends and then we're gonna get a prediction. So this is a simple image classification example and there's a number of other use cases. Image recognition is really just the tip of the iceberg, but it's the most common and where a lot of this journey started was with image classification. So we've had a lot of adoption within the ecosystem, a number of our partners, whether they're ISVs, ODMs, systems integrators have adopted OpenVINO and they're either using it to build solutions for their customers to help them optimize their deep learning inference performance. So taking AI into production and this is just some of the partners that we've worked with who are actively using our developer tools and deploying with our optimized runtime. Only some of them, huh? Not everybody likes to have their logo on our slides for some reason. Yeah, so one of the techniques that we use, so OpenVINO is built on top of the one API, one DNN, the low level libraries that Intel provides for optimizing performance on Intel hardware, but we do some additional processing of these models to help them get additional throughput and further improve the performance. So some of these optimizations that we do automatically are operations fusing as dried optimizations, convolutions fusing, these will help eke out additional performance gains so that you can have more frames per second for your image classification, object detection, segmentation, you name it. And if that's not enough performance, we also have tools, I mentioned the quantization and we're training tools. We also have post-training quantization. So if you have a model where you've invested a lot of time, hours and hours, maybe weeks or months invested in training, a really great model that you wanna deploy but you're not getting enough performance. We have a tool for post-training quantization and this comes installed automatically if you use the open data hub integration and Sean's gonna show us a little demo of the Jupyter environment. So if you use open data hub, you install the OpenVINO toolkit operator from the Red Hat ecosystem catalog, free open source operator, you can access these tools and do quantization which is the process of reducing the precision. So going from floating point 32 for example and bringing it down to integer eight precision with minimal drop in accuracy. And so the accuracy aware quantization is where you can actually define the maximum amount of accuracy you're willing to accept and will quantize the model up to the point where the accuracy hits that threshold. So we also have a lot of pre-trained models. We have the open model zoo, which is a collection of models for all of these different use cases, object detection, text spotting, natural language processing. We have action recognition, question answering, time series forecasting. These pre-trained models are both trained by Intel and we also have a collection of public models that are trained and provided in open source where you can download them, convert them to the OpenVINO format and use them. And Sean's actually gonna show us one of the demos you'll see is pulling some of these public models and actually using them for optical character recognition. One of the key features for deploying an OpenShift is being able to use the, what we call a model server. So this is our, to create an inference endpoint for model serving. So we have the OpenVINO model server just takes the optimized Intel, the OpenVINO runtime provides it as a service in a container based on, if you use the operator on the Red Hat catalog, it's based on UBI, so universal base image from Red Hat. And that will create a microservice that you can use to serve your models. And then if you wanna scale that, I will see on the next slide that you can take this and scale it with OpenShift, use a service mesh, load balance, the requests that your applications are sending over GRPC or REST, the API interfaces that are exposed by model server. And you can scale up or scale down these workloads. This is a high level view of the architecture. So like I said, there's a GRPC and a REST endpoint. It's similar to, we have the same front end API as TensorFlow serving. So if you've already built an application that uses TF serving, it's the same API calls that you'll make to the front end for your applications. And under the hood, we have a configuration monitoring, which is basically checking to see if a new version of the model that you have is ready to serve. If you've added additional models or changed the versions that you would like served in production, anytime there's a new model, so the model management, we have a concept of a model repository and I'll talk about that on the slide. But basically, if you have a storage bucket like a S3 or a Google Cloud or even OpenShift persistent volume, you can keep copies of your models. And on this example here, I'm showing a MobileNet V2 and a ResNet 50, one in Onyx format and one in the OpenVINO IR, which has been an XML. And this is all you need to do to create a model repository. This can sit in, like I said, the storage buckets or persistent volume. And what the model server does is it's checking to see if you've added a new version, if you've added a new version of the model because you've updated, retrained it, improved the accuracy for whatever reason, it can reload the newest model without interrupting the service. So your applications will start to call the new model for predictions and there won't be any downtime, which is one of the key features for the model server. And then this is one additional feature is taking multiple models and connecting them together. So to reduce the number of round trips to the APIs, you can create what's called a directed acyclic graph or model pipeline for short, is just taking your input image and passing it along to one or more models, taking the input, going through one model, taking that output and sending it to one or more additional models. And then having the results, like you see here, we have a picture, an image of on the freeway and there's some text being detected by a text detection model. And then the second model is a text recognition model that's actually recognizing the characters. And then the response back to the application is just the detected text. So this really simplifies and keeps these steps in memory so that the inputs and outputs can quickly be passed without having to make additional API calls from the client. And how do we integrate into Open Data Hub? That's actually, sorry, I put the wrong slide here. This should say Open Data Hub, but OpenShift Data Science is based on Open Data Hub. It's a new product from Red Hat and Open Data Hub is the open source version that we're talking about today. But OpenVino plugs directly into the Open Data Hub Jupyter lab environment. And we also can deploy the model server instances into the OpenShift cluster where Open Data Hub is installed. I hope you could do the next slide. All right. Oh, there we go. Okay, yeah, so this is what it would look like. If you're going to deploy the OpenVino toolkit operator, so from operator hub, if you try to install, oh, search for OpenVino and click install, you'll get the OpenVino operator. And if you want to focus just on deployment, like I was showing the model server, create a serving endpoint, you can do that by creating an instance of the model server. If you're planning to do development and you wanna have access to the developer tools like the model optimizer, open model zoo, the tutorials that come in the form of Jupyter notebooks, you would create a notebook instance. And that's what's going to enable us to quickly access the OpenVino developer tools and tutorials directly from Open Data Hub. And so once you've, if you're using Open Data Hub and you go to the Jupyter spawner, which is one of the key features in Open Data Hub, if you've installed the OpenVino operator, you'll have the option to select OpenVino toolkit as you see on the left and click start server. And once you've started the notebook server with OpenVino selected, you'll have access to some of the Jupyter notebooks that, and you can see a screenshot of that on the right. The one that I'm showing here is a Jupyter notebook that shows how to quantize a BERT model, which is a natural language processing model. And it's an end-to-end tutorial. You can click run all and it will download the dataset, download the pre-trained model, and execute step-by-step the process for doing this post-training quantization. If you could get the next slide. Great, I think we missed one. Whoops. But it's... Well, we'll cover some of this in the demo. Yeah, you'll see it in the demo actually, so it's fine. This is just showing once you've deployed the model server instance, which actually Sean's gonna show you. So it's even better to see it live than have me try to explain it. But, and the TC is gonna go ahead and show us what those API calls look like. Once you've deployed your model and created that serving endpoint, we have an API reference that can show you how to make the API calls to the endpoint. And there's some sample Python and C++ code so that you can directly call the API from your applications. And now, the thing everyone's been waiting for, the actual demo. So, as we see here, we have already installed our OpenVINO toolkit operator, providing both APIs here. We have a notebook already created, and over here, ta-da, we have the actual notebooks that you'll see given by Intel. So, we have our OpenVINO inference engine import here. And for this model, what we're going to attempt to do is take and do image segmentation for detecting the road on this image. Very useful if you might happen to have a self-driving car. And with the inference here, it, I restarted the kernel. And if we hit run all, you see almost instantaneously, it's able to detect the road. Just CPUs, no GPUs are attached to this pod whatsoever. And as we see here, we have the segmented road overlaid here, which could be useful for telling a self-driving car or some other similar model what parts of the road are best to be moving on. Additionally, we have our monodept. So, what this one goes into is taking and detecting depth in a single image just from context in the image. No need to do any, no need to actually have one of those Intel depth cameras telling you how far away stuff is. So, lots here, again, all running on CPUs. And we can see here, it's able to detect the distance of images very easily. And interestingly, when we get down here to creating the video, it was able to process all 60 frames in around 10 seconds. And this is on a fairly modest system, something you might be able to find on, say, edge devices or other smaller, smaller, less powerful systems are able to achieve this incredibly fast processing even for video. With a slightly more powerful system, this could be done in real time. And finally, for the downloading and running of the optical character recognition, we grab a public model and we load this nice image here with some text in it. And we are able to get the bounding boxes and print out the text here similar to what the pipeline would be doing shown earlier. And finally, when it comes to actually serving all of these, we have a sample model server created here, which is just doing your standard ResNet. We're gonna check the API over TCP and show that it is compatible with all of the standard API. Now, we have created a service here and we've exposed a route, just very easy couple of commands to create this and it's now usable on the internet. So we're able to hit here and we're able to see model is available, it's being served, we can hit metadata here and we can see it is float input type, we're able to see the dimensions. So it's a batch size, number of color channels, height and width of the image. And there you have it. So with that, I believe, Ryan, anything else to add before we do questions? I know there was a question in the chat about how much performance gain, and I'd say it's very dependent on the model and the use case and the input image size, but we do have some benchmarks published and they don't show comparing to frameworks or anything because there's so many different configuration options to consider. So I pasted a link to the benchmarks, oops, sorry, they didn't paste the right link, I pasted a link to our documentation. There's a benchmarks link that I'm about to paste and then on top of that, we have several of the notebooks that you can view in the open data hub. There's the benchmarking step that will happen in the notebook. So if you wanna see the notebook that shows how to convert a PyTorch model, we take the segmentation fast-segment model, which is an open-source public model, we convert it to OpenVINO and then we show the performance difference on that same CPU or integrated GP device. Okay, here's the baseline performance with PyTorch. Here's the improvement in frames per second once I've run it on the same device with OpenVINO. And there's a few other notebooks that we'll show that and there's some that have the benchmarking tool. So we have a tool called benchmark app that's included and installed in the notebooks. And so you can run that to get a rough idea of the performance you could get once you've converted the model. Awesome. Anybody else have questions for us? Yeah, I don't see any questions in the Q&A so far, but if you guys don't mind hanging up for like a minute or two, just- Absolutely. All right. Bring forth the questions and we shall answer them. Actually, so in the meanwhile, I have a question and this might be just me getting, but like really liking this and maybe getting too greedy with what Intel can offer. But I'm wondering as a data scientist, so generally you would run inference on the GPU side or like in a lot of the cases. So is there anything or like, is there any optimization that you can do during training time, like for like loading images or like cropping them and like all the work that you do before passing it on to a GPU? Can Intel OpenVINO help with that by any chance or is it purely for inference? Yeah, so when I mentioned that of a tool and I'll actually I'll paste a link to it. It's for quantization aware and training with sparsity, compressing the models in the training phase so that when you deploy them, regardless of whether it's on an Intel device or not, it will have, you can train it for low precision and with sparsity. So when there's hardware that can take advantage of this, you can use it, you can see that additional performance gain. And then to say on, with OpenVINO, the goal is you can get the inference performance, especially if you look at the cost of having an Intel CPU, compare it to the number of frames per second and saying, okay, how do I scale this to reach the number of frames that I need? So if I have video streams, let's say I have 40 video streams and I need to process 30 frames per second on each video stream. It's a simple calculation for me to say I need to have this many CPU cores available in that cluster and I need to route those frames to those CPUs and you don't necessarily need a discrete graphics card to do inference and it's actually much faster to load the models onto a CPU. You're not gonna get the same throughput as you might get with an expensive, 250 watt discrete accelerator card, which Intel is also planning to offer soon. We have today you can actually try the GPU architecture in the integrated graphics. So if you have an Intel core processor and a laptop or workstation, Core i5, Core i7, Core i3, the 11th generation, we have the GPU architecture that's coming out in our new discrete GPUs that will be announced very, or released very soon. You can actually try that today in what's code named Tiger Lake, or in even an older laptop or desktop CPU, you can see the integrated graphics and use it for inference. But I would say that most of our customers are able to hit their performance KPIs with just using a CPU backend and they don't need to purchase discrete accelerator cards. Yeah, that makes sense. Thanks so much. Yeah. Awesome. Looks like we do have one question here. How does the serving tool compare to others like Selden? Yeah, so I don't know the exact architecture of Selden. I know we've, in the past, Selden did have an OpenVINO backend. I know that Selden is taking many of the different inference servers or model servers. Like you can have a TensorFlow serving or a KF serving or Triton different backends to different engines that can serve the models. OpenVINO model server, we only have the OpenVINO inference engine, which is by design, it's very low footprint. So the image that you need to just serve CPU model, serve models on CPU is just around 145 million. It's compressed. It's a very lightweight image. If you look at like Triton, for example, which has several backends as well, it's like somewhere between eight and 10 gigabytes for the image. So this model server is much more optimized to be lightweight and just have one backend, which accesses Intel devices, whereas some of the other servers have different additional backends. So like Selden and Triton KF serving that pulls together potentially many different backends. So it's a slightly different approach. This is lightweight and it only runs on Intel devices at this time. The others you can use Nvidia GPUs or other hardware beyond just what we have from Intel. Just quickly going off of that question, even if I didn't want to use the OpenVINO backend, can I still just quantize it post-trading and then just put the model back into my Selden server or something? Yeah, so it would not act, I'm not entirely sure how Selden is set up today, but if the OpenVINO backend is there and if it's the latest version, so let's say that it is the latest version, I don't know, then yes, that would be true. You could go do the post-training quantization, get the low precision model and then go load it into the backend. And that's true of Triton also. So the Nvidia inference server has an OpenVINO backend. You can also go and load the quantized OpenVINO model on Triton inference server with the OpenVINO backend and you'd be able to serve predictions on a CPU only or for the OpenVINO backend in Triton. All right, perfect, thanks. Anyone else? We're here to answer your questions. Oh, actually, if there was another one, that would probably have to be our last because I'm just now looking at the time. Yeah, I was gonna say, it's like the last final call for questions because we're almost out of time, so if anyone has questions, now's your chance. Or if not, you can also head out to the breakout room and continue this discussion over there. But otherwise, I don't think there's any other questions. But thank you so much folks for the presentation. That was amazing, I really enjoyed it. And yeah, thanks for joining. Awesome, thanks for having us. Yes, thank you.


Jack they lose the opener, but they rally in that final inning reminding us They're never really out of a game and then they firmly put a stamp on that in the nightcap Yeah, that was a spirited win Bob because for six innings Aaron Nola was be fuddling them 12 strikeouts across six innings that Halacious curveball, but here's what the Yankees did while they weren't figuring out Nola other than Luke Voight's home run Their relievers were shutting down the Phillies So they had a four-headed monster that went up against the Phillies one headed monster in Aaron Nola And after six innings it's an even game Nola goes out of the game Tommy Hunter steps in and that's where the Yankees sees control The best at bat of that seventh inning goes to Mike Taukman takes a close 3-1 pitch for a strike Fouls off a 3-2 pitch gets a 3-2 cutter delivers a double that delivers the go-ahead run and the Yankees are feeling good about getting that split Bob you'd love to take two in one day. It's a hard thing to do But they feel especially good because they essentially beat Nola though They didn't beat Nola they outlasted him they won on a day Nola pitch All right Let's bring in John Flaherty now and flash Jack makes a great point in that the Yankees never seem out of a game in this game That I kept set up perfectly like they wanted it that bullpen holds things right where it is and allows the offense to make that come back Yeah guys, this is a gritty win for the Yankees Especially after the disappointment in game one the way half pitch you rally at the end which may be influenced Joe Girardi's Decisions on what bullpen arms he could bring in but at the end of the day when you split a long day of baseball You split it and you have a gutsy win like the Yankees had tonight Jack's a hundred percent right. Loisica and three relievers go toe-to-toe with Aaron Nola Who's as good of a pitcher as you're gonna see in this league with those 12 strikeouts and six innings Getting into the bullpen was huge So Mike Taukman at bat was the biggest of the night and that you can go to your team hotel tonight With a well-earned split of this doubleheader John I know the seven inning game is a novelty at the major league level, but you've been in those dugouts before Do you think that conversation was occurring in the Yankee dugout? They want to score against Nola, but let's just keep it close guys Let's keep it close knowing that the Phillies bullpen is not exactly a strong suit Yeah, Jack, you know what the Yankees they saw right away that Aaron Nola was on top of his game And I'm sure the conversations were let's grind it out. Let's see pitches Let's grind out at bats and that's exactly what they did There are a couple of guys who had some tough nights Glaber sort of Torres Gary Sanchez But when you get Nola out of that game when you're in the Yankee dugout Immediately your spirits are uplifted because you know whoever comes in at that out of that bullpen is not going to be to The quality of Nola and you know Tommy Hunter coming in that game He got beat up a little bit But like I said just at the end of this doubleheader This is a gutsy win for the Yankees and a well-earned split well guys


It's that time again. This is Katnie with your weekly Python on Hardware News. Every week, we put together the Python for Microcontrollers newsletter. It is available through AdafruitDaily.com. Head over to sign up and see all of the past and current newsletters, or tune in each week to hear what's going on. Adafruit is working with the team to safely remain open as we continue to navigate COVID-19. For more information, visit adafruit.com slash open safely. Adafruit is stocked and all orders are shipping. Expect possible delays as we continue to ramp up. Now is the best time to get orders in for your favorite products, including items for students. To find the latest Adafruit products and all of the essentials you love, visit adafruit.com. Circuit Python Day is in one week. September 9, 2020, or 99, 2020 is the snakiest day of this year, so it's been designated Circuit Python Day. There are many events planned, including Circuit Python live streams highlighting all things Python and Python on hardware. You can see the latest developing schedule and add your event via a poll request at adafru.it slash cpdayschedule. The same day is also Dia Circuit Python. Circuit Python fans in Central America are planning additional activities. They write, Costa Rican artist Isabel Utag was commissioned to create a mascot for this event, taking into account our roots and culture as Central Americans. You may already know Blinka, the snake mascot Adafruit has chosen for Circuit Python. With his talent, he has created one we are sure will be loved by all. I present to you, Ketzel Blinka. See their website in Spanish for their planned activities, diacircuitpython.org. This year, Circuit Python Day is being dedicated to Lambalab's makerspace, who are helping with the Beirut disaster. The Bornhack hacker camp still happened this year, and they once again provided an electronic badge to all attendees, the 2020 Bornhack badge. They write, Similar to the last couple years, this badge has an ARM Cortex M0 as the main controller, but on this badge it's the SAMD21 from Microchip, with four times as much flash and RAM compared to the chips from previous badges. This makes it possible to run Adafruit Circuit Python, which lowers the bar for how easy it is to get started hacking on the badge. Details available on hackaday.io, code and video available from Bornhack on GitHub and YouTube respectively. Joey Castillo posts a Twitter thread about his development of the Tiny Book Touch, a small e-paper reader with screen touch sensing. In bringing it up, he wrote a demo in Circuit Python with the Adafruit Focal Touch Library, and he says it just works. This device includes Stemaports, GPIO, and I2C. He also posts, so I'm realizing I need to redesign this as a featherboard, either SAMD51J or ESP32S2. Imagine using this with a Laura Wing for radio stuff or controlling a power relay. So many options, and if I can keep it simple, maybe this is a gadget I could look into having manufactured. Details available from Jose Castillo on Twitter. In this week's Circuit Python deep dive livestream, Scott streamed his work on adding the new ESP32S2 board to Circuit Python. Check out the latest video and past videos at adafru.it-dive. Scott will be presenting a special deep dive live on Circuit Python Day from 5 to 7 p.m. Eastern Time. Picon AU is happening online this week from September 4th through 6th. Details available at 2020.pycon.org.au and from Pycon AU on Twitter. As a preview, Rowena Stewart made a pentatonic Python with Circuit Python in the Adafruit Circuit Playground Express. If you'd like to find out how to make your own, see her Pycon AU talk on September 5th. Sneak peek available from Golden Fennec on Twitter. David Glaude posted Twitter, a BMP280 barometric pressure sensor placed in an inflated balloon. The color indicates the pressure level. Green is low, red is high. Inside the balloon is a Feather NRF 52840 scents. Code is available from D. Glaude on GitHub. The Getting Started with Circuit Python and Compatible Microcontroller Board's Guide is now available to help people get up and running with Circuit Python from Woolsey Workshop. Details available from John W. Woolsey on Twitter. The MicroBit Remote Learning Course provides video learning about the MicroBit and MicroPython. GardenPy, powered by Neptune.py, is designed to manage, monitor, and control a series of sprinkler valves and a multitude of sensors for pretty much any-sized irrigation, hydroponic, or aquaponic project. It can be scaled from 1 to 32 zones for water and 7 zones for power. It is built almost entirely in Python 3 for the Raspberry Pi 4. Code available from RJ Sears on GitHub. Read about the top 7 programming languages to learn before the end of the 2020s on hackernoon.com. Anime to Clothing is a PyTorch official implementation of Anime to Real Clothing, Cosplay Costume Generation via Image-to-Image Translation. Code available from Tan50 on GitHub. Python Poplar is a Python binding to the Poplar CPP Library. It allows one to read, render, or modify PDF documents. Code available from Cbrunei on GitHub. Watch the Chicago Python Lunch Break for August 2020. Video available from Chicago Python User's Group on YouTube and more information available from Chicago Python on Twitter. On PyT Episode 11, Nina Zakarenko and special guest Tanya Allard discuss scientific computing in Python, mechanical keyboards, and dev advocacy. Video available at twitch.tv.nnjaio. Rich is a Python library for writing rich text with color and style to the terminal and for displaying advanced content such as tables, markdown, and syntax-highlighted code. Full post available as part of Tuesday tooling on bigl.es. Pippi is a library of computer music modules for Python. It includes a few handy data structures for music like sound buffer and wavetable, which are operator overloaded to make working with sounds and control structures simpler. It also includes a lot of useful methods for doing common and not so common transformations to sounds and control structures. Code is available from Love Sound on GitHub. Practical Natural Language Processing, a comprehensive guide to building real-world NLP systems available from Practical-NLP on GitHub. There is a high demand for Python-driven machine language tools to boost robot farming, read more at fintechdemand.com. An interactive HTML Bill of Materials plugin for KeyCat available from OpenScope projects on GitHub. MicroRuby, run Ruby code on an embedded microcontroller. Details available at microruby.com. The number of CircuitPython-supported microcontrollers in single-board computers continues to grow. There were three new boards added this week, including the MicroS2, the ESP32-S2-Kaluga DevKit, and the IkiGuySense Vita. Are you interested in adding a new board to CircuitPython? Check out the Adafruit Learn system for a series of guides about getting your board added to CircuitPython and CircuitPython.org. There are two new Python and hardware-related guides in the Adafruit Learn system this week, including, this project displays the current value of Bitcoin in one of three currencies, US dollars, euros, or GBP, and displays it on a large, stylish RGB LED matrix display, all made in CircuitPython running the Metro M4 Airlift accessing CoinDesk API wirelessly. Keep up to date on the current Bitcoin price index with this large matrix display in this guide from John Park. Use Neopixels in a Gemma M0 to create a faux yet realistic-looking torch. Hidden inside the torch is a mini fan and silk fabric. Use CircuitPython to easily program the Gemma M0 and Neopixels. Build a 3D-printed prop with a realistic-looking flame in this guide from Noah and Pedro. The current number of CircuitPython libraries is 267, this includes both the Adafruit CircuitPython libraries and the CircuitPython community libraries. There was one new library this week, Adafruit CircuitPython TC74, and a significant number of updated libraries. As always, visit CircuitPython.org slash libraries to download the latest Adafruit CircuitPython bundle. Included in this week's updates from the CircuitPython team, Dan finished debugging HCI underscore BLEIO and submitted a PR. He had to use a salier and add code to output extra data on a spare pin to see what was going on internally. Scott has reviewed the PR and he's now making a few fixes. The PR should be merged within a few days. The next CircuitPython 6.0.0 alpha release, 6.0.0 alpha 3, is nearly ready and by now it should be out. The release after that we hope will include both HCI underscore BLEIO and also Scott's Wi-Fi support for the ESP32S2, so watch for that soon. Dan's been trying to automate or at least facilitate the data gathering we do to prepare the release notes for each CircuitPython release. Right now it's pretty much done by hand. To this end he's been trying out the GraphQL interface to GitHub, which facilitates some but not all of the queries he wants to do. Jeff's in new project time, which means a new rat's nest of wires on his desk. We're starting on CAN bus support in CircuitPython. The first hardware we'll add to it is the SAM-E54 explained board because the E54 microcontroller has a built-in CAN peripheral. However, Jeff's testing network here consists of two STM32F405 feathers running MicroPython, which has its own implementation of CAN. CAN is interesting because it is used inside of automobiles, but can also be used as a small network between microcontrollers. If you have any uses for CAN bus, let us know on Discord in the CircuitPython channel so we can keep them in mind as we create this API. Lucien has been working on fixing a variety of bugs across multiple ports. He started out with a bug that was crashing the meow bit at startup and turned out to be multiple issues related to low power, display IO changes, and pulse IO pointer problems. He also revisited some older issues on the STM32 which were simply out of date, having been fixed a long time ago by wider scale improvements to the port. He has been spending time on a variety of problems with the ESP32-S2 and STM32, including fixing the TRNG module across both ports, debugging a crash related to display IO and ESP32, dealing with problems related to make file comments style, and logging some potential issues with the file system. It's somewhat scattered work, but it's good to make sure that major bugs don't linger in the issues list for too long, and he's found often that investigating an issue in one port turns up undocumented problems in others. In his time off, this past week, he finished a breakout featherwing for the Dynamixel AX12 servo motor to go with his library. He's been meaning to get back into making his own hardware, and it seems like the assembly options for PCBs have gotten a lot cheaper recently, which really lowers the barrier to entry for his projects. He's excited to see how these ones turn out when they arrive next week. Pie Gotham is a New York City-based eclectic pie-centric conference covering many topics. Pie Gotham TV is taking place October 2nd and 3rd, 2020, with a single track of talks presented online. Visit 2020.piegotham.tv for more information. PieCon India 2020 will be held online from October 3rd through 5th, 2020. Visit in.piecon.org slash 2020 for details regarding the conference. The Hackaday Remoteicon will take place everywhere November 6th through 8th, 2020. It is weekend packed with workshops about hardware creation held virtually for all to enjoy. Call for proposals is now open. Details available on hackaday.com. Translating Circuit Python is now easier than ever. Translations make the project more accessible to a broader range of folks. Adding or improving translations is a great way to get started contributing to the project. With the help of fellow open source project Weblate, we're making it even easier. You can create a new account just for Weblate or sign in using other sites like GitHub or Google. If you write another language, visit adafru.it slash translatecp, sign in, and start translating. Looking for more Python on hardware all week? Join the Adafruit community on Discord and check out the Help with Circuit Python and Circuit Python channels. We're over 24,000 strong and continuing to grow. You'll find a supportive, positive community filled with like-minded folks. Join at adafru.it slash Discord. And that is your Python on hardware news for this week. Visit adafruitdaily.com to subscribe to the newsletter or tune in again next week.


I'm Nisa O Regan. I'm e-learning development officer at Manusia University, and I'm the lead for the Y1 feedback project. The long title is Supporting Transitions, Enhancing Feedback, and first we're using digital technologies. This is a collaborative project between Manusia University, AIT, DCU and UNDOC, and I'm here representing everybody today. At a high level, what is this project? First of all, it's a two-year project that we're about halfway through. It's a regional cluster partnership, so it's a common issue which we are addressing together. It intersects both the national forum teams in terms of teaching for transitions and assessment as and for learning. I suppose, what does this project do or what will it do? First and foremost, it focuses on feedback and first-year, with a specific emphasis around feedback in supporting transition. This is our core differentiator. Another unique aspect to this is that we are very strongly evidence-based. We've done a lot of work to look at what's happening and what's happening elsewhere, and that is informing our project. So, why feedback and why first-year? First and foremost, we know that feedback is really important for learning. We know that regular feedback and feedback for first-years in particular can help them transition and that they're more likely to stay on. What we also know is that, as I said, feedback is important, but we know that feedback is, how would you say, a global concern. In studies across Australia, the UK and Ireland, we've seen that there is dissatisfaction around feedback, and that's also the case in Ireland. This project addresses that concern. For example, the Irish Survey of Student Engagement 214 and 213 showed that first-year undergrads said that they never are only sometimes received timely feedback on written work. We want to look at this, not to look at why and to see how we can improve it or look at ways that are approaches that can help this. So, the project, what have we been doing in 215? First and foremost, we set up the project. Then we looked at what's happening on the ground. We looked at how is feedback being given across the four institutions or what's happening in relation to feedback, and we also looked at students. What is your feedback experience in first-year? We got a sense of what's happening. Then we also looked at the literature in the area. We looked at a number of areas around feedback. We looked at approaches. We looked at first-year and the transition piece taking on feedback from the panel. We also looked at the technologies. How is technology being used for feedback? Then we moved on and we looked at, once we've identified a number of approaches, we started identifying partners to work with to pilot these approaches. Then we moved on to plan these case studies with academic partners. We've also been looking at some dissemination throughout. That is a snapshot. I'm going to go into some of these in a little bit more detail. First of all, how we work together. In any collaborative project, it's important to set a firm foundation in front of the team. As you can see, we have regular meetings, face-to-faces and email contact. This is us in Manus. We do need to invest in a selfie stick, I admit. But we tried. Maybe the budget will stretch to it. First and foremost, I said we did a study. We looked at how feedback is happening. This is the publication, Feedback and First-Year Landscape snapshot. At the moment, it's with the designer. It's in the final stages. So, basically what we did, we looked at what is the staff experience. We looked at how feedback is given, what technologies are used. We asked staff about the challenges they face and the approaches they recommend. We also looked at the student experience, how they receive feedback. Their attitudes to feedback and their recommendations for change as well. We've summarised this. This document, as I say, is about to be published. We will update our website with this when it is complete. We expect this to be available within the next two weeks. As I say, it's in the final stages. That is our first piece of work. Just to give you a very quick idea of what we found. I have a very high level that both staff and students have shared appreciation of the value of feedback for learning. This came through very strongly. What also came through is that the student's experience of feedback in First-Year is inconsistent. That's just a little quote that you can read that demonstrates that. This came through quite strongly. In general, there is dissatisfaction around timing, quantity and quality of feedback. But that is from both a staff and a student perspective. There are frustrations on the staff side and the students acknowledge this. That is not to say that they are not an amazing example of feedback practice and amazing accounts. These can be seen in the snapshot document when we publish it. There is a strong perception among staff that students only value the grade. Interestingly, students came out very strongly the other way. They want the grade, but they also want feedback. They want more than brief comments. Shared value for feedback conversations. This came through very strongly when we asked their favorite mode of feedback. It was written with a chance to discuss. This came through very strongly. Overall, we found that there was a low use of pure involvement in feedback from the people and participants involved. We also found that there was a limited use of technology-sported feedback approaches. I would say here that there were examples and very individual examples within that. Overall, this was the picture. The key challenges for staff that came up were time, workload and large class sizes. Probably no major surprises there, but significant challenges nonetheless. Key suggestions. We asked students if they could change the first year experience in terms of feedback. They would like more consistency, more feedback and quicker feedback. Consistency was number one. This gives you a sense. We've taken this data and we're embedding this into our pilots and how we're approaching those case studies. Next, what we did is we looked at the literature. We looked at a number of areas. We looked at the first year, the transition piece and how feedback plays a role there. We looked at feedback contemporary literature on feedback. We looked at approaches and we also looked at feedback and technology. From that, we distilled a number of key things. First and foremost, we were able to identify a set of features of effective feedback for first year. This again comes back to a core differentiator for our project. We're looking particularly at first year and we've been able to identify these. I would say that these have been identified with help from the literature. We will try and embed these within our pilots and cases. Come the end of the project, they may look a little different, but this is our first go. Promoting feedback within and beyond assessed work. Again, it's about inside the classroom, outside the classroom, not just about the summative or the continuous assessment. For first years, it's really important to embed the assessment of feedback literacy. Students always don't understand what they are receiving. Maybe feedback or see a conversation as feedback, but also about setting expectations. This has come through very clearly in the literature. Fostering student competence, motivation and belonging. This comes in around peer involvement and feedback and very important for first year to support transition. Providing opportunities for dialogic feedback. This is the core, I suppose, team running through our work that we are looking at dialogic approaches to feedback, as well as sustainable approaches to feedback. We're also going to be looking at... We also feel that it's important that you embed the digital literacy, especially where technology is involved. I suppose one key feature to effective feedback in first year is about consistent and coordinated approaches to feedback. So program marketing approaches. These are what we have identified as key features to date. I mentioned sustainable already. These are just very quickly some approaches we've identified and some of them which we will be piloting and casing. This is not an exhaustive list. They're not set out that you might use them individually or that you would use them as a group. You wouldn't just use one or the other, but you could. But it is a reset. Right. Another key aspect of the project, so we have the features. We have the approaches. Again, we're looking at how we can leverage the potential of technologies. Within our cases, we will be looking at is it possible to give more feedback, timely feedback. For vision to large group is a key challenge for us. A variety of feedback. Again, the dialogic feedback and flexible access to feedback online. As well as the potential for added dimensions to feedback. So there's a lot there. Each case won't be able to look at all of them, but over across the spread we hope to be able to look at a number of these areas. Okay. So as I said, we have looked at what's happening on the ground. We've looked at the literature. And we have taken key approaches and features and begun planning cases. So project teams across the four partners have begun developing these. We are working with departments in partnership with departments. And how we did that was we held information sessions and participation was invited. And there was also a lot of work that we were aware of. So we were able to touch base with people there as well. We are taking a design-based research approach to the approaches. So pilots, some of them have started already and they will go through an iterative process between semester two and semester one next term. Some may only go one semester, but some may need to go two. In total we have 26 case studies already in progress. At the outset we agreed for per institution and there has been a lot of enthusiasm within the institute so we are currently at 26. Of course that number may drop or that number may increase by the end of the project. That's the way these things go. So I'm not set on that number so to speak. At the moment we have 16 academic departments involved so there's a great spread of disciplines from nursing, engineering, business, French. There are loads more, social care. In total we are working with 32 academic partners. So this is outside the project team alone. So there are huge numbers involved and already involved in this work. Of course students as well are involved as active partners in the pilots where there are pilots going on. They are aware of the pilots and we will be looking for feedback throughout the pilots as well. Okay, so I am not going to go through all these but I really wanted to show you or to give you a sense of the breadth of work being done and the type of pilots that we are engaging with and the types of approaches we are trialling. So you can see here actually the first one there we've linked up with the previous presentation and we are working on a case study with Unidoodle and feedback approaches at Unidoodle. So we have linked up with Seamus and Christine there. Other ones you can see, we're looking at video for some assessment, we're looking at a number of ours focused on in-class strategies for feedback. You can see here the AIT pilots in progress, there are a number of pilots ongoing here and for example the Clickers for Dialogic format of feedback in the Large Humanities classroom is just one. You can see there is a screencasting, e-portfolios and Moodle as well as some of the technologies but a variety of approaches being used as well. Here again you can see the peer is featuring in some of our cases. Peer came out very strongly in our research as a key method of bringing students into feedback and bringing them into the discipline and developing their self-regulatory learning skills. Okay, so there is just a snapshot. Again we have a number of cases here. Another key approach that came out through the literature was especially for first year was multi-stage assignments and that ability to give the students the opportunity to get feedback as they go through a written piece of work both from the teacher but also from peers and there are some cases here on that. One case here as well is how we are also looking at cases involving students and motivating use of feedback. The first case is the best prize for the best use of feedback. National impact, okay, so I'll go through this quickly. I think I must be running out of time. National impact, well I suppose first and foremost we're halfway through and we're starting at local regional and we will move towards national impact. I was going to say we do have a website and as our publications come through we will be putting them up so we would hope that these will be available in the next two weeks. Dissemination, we have already become dissemination. We shared our findings from the Landscape Snapshot at edtech215. We also shared some of these findings at the assessment higher education conference in the UK and we also won the best research poster award at that conference and that was no mean feat but it was a presentation, there was 60 in the running so we're very proud of that. There's the team who presented. We also presented at EATU. This year we've just recently been accepted to CEDA 216. They have a spring conference on assessment and feedback so we'll be sharing our findings so far there and we'll also be looking for feedback on the approaches there so that should be really good. We have a number of staff development initiatives going on for example Feedback Fridays where you can look at, we're participating in the Wattworks and Y initiative across the partner institutes. We will have case study reports at the end however we're only really starting out on those and our big national dissemination will be 217 our national symposium on feedback. Last question, how have we evolved? I guess taking on board the feedback from the panel and also I suppose marking our own learning journey through the project there have been a number of changes or changes in focus. I'm going to take one minute to show you these, I think they're important. First and foremost I suppose when we did start out we were very much focused on the technology based approaches and even though we would think pedagogy over technology we were thinking maybe more audio or video and our thinking has really progressed on that and really we're now focused on dialogic and sustainable feedback approaches for first year. So this is largely informed by our work and technology enabled where appropriate. I suppose as well at the start we were more focused on assessment feedback we were looking at a lot of continuous assessment and that has broadened to all learning interactions. A lot of our cases are looking at in-class methods real-time feedback, automated feedback. I suppose initially why we were looking at teacher and peer we have become more peer focused and that will be seen through a lot of the cases which embed peer even if they're not using technology that a lot of approaches are taking in peer. As well as the start we probably thought more in terms of a single case or a single approach that might be used in a pilot. However that has developed and I suppose that has really developed in our conversations with staff and in those partnerships we're looking more holistically at a module at the assessment and feedback and looking at multi approaches. So that is it. Apologies for going a little bit over.


Hey everybody it's Hari Swaminathan from optiontiger.com, we are looking at the SPX ticks and the custom RSI and this is the price action for Monday, August 12th and as you can see the market gap down at the open and you see some ticks but this would be too soon to take any trade even though it's showing some persistent red dots as well as the custom RSI but that would be too soon to take the trade and so you would have to come to for at least about a couple of hours or so and then what you see here is some a really wonderful trade that would have that would have you know resulted in let's say even if you caught it at the middle of this you know after the second bar you be after the second dot rather on the third dot of or the fourth dot is when it the custom RSI also developed so right on this bar so which is about $28.95 and then this goes all the way down till here rather till here so about $28.86 so I would say about nine points on the S&P which which would be about an $1800 trade and even if you got out there which you would because you see two green dots you had a chance to get in right there after this price action and so this would be approximately another eight or nine points right there so there were two trades of about I would say close to $3,000 in yesterday's price action this would have been a fantastic two trades here mostly developing towards the middle to the latter half of the day and so those were the two trades for SPX. Thanks. The SPX ticks as well as the custom RSI are custom indicators and algos if you have any questions you can go to this bit.ly link bit.ly slash SPX algo and you can find more information on how to get these indicators. Thank you.


In this video, I'd like to talk about slave laws of the early North American colonial period. To do this, I'd like to first set the framework of the functions of laws and the characteristics of laws and then try to apply some of those, the questions that arise from this framework and definition, to a few, a couple of slave laws from this early colonial period. So what functions do laws serve in society? Well, laws serve to reinforce the values of a society. Laws generally serve to prevent or prohibit something from happening. Laws can maintain social order. Laws punish people who commit crimes and laws protect people from harm. So these are the functions that laws serve. What are the characteristics of these laws? Laws generally are sets of rules that regulate human conduct in a society. Laws are generally created or maintained by the state. They are stable, meaning unchanging, fixed and uniform. Laws are also the expression of the will of the people in that particular society. And lastly, laws tend to be backed by some coercive authority that is usually the state. Now, with those things in mind, let's think about slave laws of the early North American colonial period. These slave laws were stable, but they tended to change with the circumstances. And slave laws also tended to be reactionary. So they would respond to something that happened. So with that in mind, we're going to look at two slave laws of the early North American colonial period. And as we look at those slave laws, we'll ask these two questions. Number one, what were the circumstances surrounding the passage of this law? And number two, to what was the law responding? 1661, in Virginia, the colonial legislature passed this law. In case any English servant shall run away in company of any Negroes, he would have to give special service for extra years to the master of the runaway Negro. All right, so take a few moments to look at this. And now let's return to our two questions. So what were the circumstances surrounding the passage of this law? Well, obviously we have an Englishman, white, running away when they Negro. To what was the law responding? So the English are running away, English servants and then district servants running away with a group of Negroes, black servants. The English servant will have to give extra years to the master of the runaway Negro. So to what was this law responding? Well, the whites and blacks in the colonial Virginia in 1661 and before were running away together. This is an example of cooperation between whites and blacks in the colonial era of North America. So whites and blacks who were both servants or in the case of the Negroes, it suggests that they were slaves. They are experiencing common things and they want to run away together. So this law is reacting to the cooperation of lower class people in colonial Virginia. And the whites and blacks are running away together. Another law, 1691, 30 years later, this law is passed by the colonial legislature, the House of Burgesses in Virginia. Vanishment of any white man or woman being free, who shall intermarry with a Negro, mulatto or Indian man or woman, bond or free. Well, if we return to our two questions, what were the circumstances surrounding the passage of this law and to what was this law responding? Well, it seems looking back at the law again, the circumstances are English or whites, intermarrying, blacks, mulatto. And mulatto generally meant someone who was of mixed race heritage, generally African and English or African and European and Native American. So there was intermarrying or missing among these groups. What are we doing to these white men or women who are free, who intermarry with the Negro, mulatto or Indian, or we're banishing them? So to what is this responding? Well, before 1691, white men and white women were marrying Negroes, blacks, mulattoes, mixed race people and Indians without any consequence or penalty from the governing authorities. That somehow threatened the social order of Virginia, Colonial Virginia. And so we're changing that with this law. So as you look at the rest of the colonial laws during this early period in American history, think about what the circumstances are surrounding the law and to what are these laws responding? Thank you.


This research examined the effects of connecting a microgrid to a larger electricity grid. It found that the connection had a significant effect on the current harmonic levels and DC injection in the larger grid. However, the effects on voltage harmonics and flicker were less pronounced. This article was authored by Juan Geronimo Virial Montoya, Eduardo Gomez Luna and Eduardo Murley Signs.


The Oshun State Police Command has paraded four suspected cultists and armed robbers said to be terrorizing residents of the state. One of the arrested robbers is a dreaded and notorious serial killer, popularly known as Jimby. Oshun Commissioner of Police Wale Ulokodes said Jimby was arrested with his gang by police operatives in the state in collaboration with local security outfits. The police also arrested an identified as Omo Buriowa Hazizat at Ukeabesu area in Oshubu. The police boss also confirmed the arrest of some suspects in the state that were apprehended with stolen vehicles as exhibits. He said the suspects would be charged to court after completion of investigation.


No, no, no, no, listen, listen, because I already know what y'all finna say, but YouTube, I already know what y'all finna say. Bro, you biscuit, you switched from young boy side to dark side, and now you want 69 side? Look, bro, I was a triple agent this whole time. Yeah, I didn't even know it, bro. Trees, a triple agent, bro. I was on 69 side this whole time. He just hasn't posted anything. So now I'm, you know what I'm saying? I'm over here, we on this side, you know what I'm saying?  I'm just a content creator. I'm just like, y'all want this content. And plus I didn't give y'all the part two of the young boy video. So this is kind of my way of apologizing, you know what I'm saying? If y'all want more, because there's a lot of this song to be sent to other rappers, to the low key diss that people didn't even catch. So if y'all want an actual part two of me sending other lyrics of this song to other rappers and stuff, I'm gonna need some likes. But y'all don't give me the 10,000 likes? The 10,000 likes enough? Let me know. But yeah, let's do 10,000 and then I gotcha, I gotcha. Biscuit don't fail, you know what I'm saying? And also I'm live right now at this moment on Twitch. So go say hi to me on Twitch. I appreciate y'all. But uh, let me just check the video. You don't got anything better to do? Uh, nah, I really don't. Bet you don't even own a gun. You just a fan. Yeah, you right. But not the view though, of like young boy, even 6'9". But definitely not Yula Dirt. You ain't never slide on anyone. Oh, I know you not talking.  You better hope we don't see you. Who's we?   I'm talking to Lil Dirt. We gonna get it back, trust. You literally just a fan. Yeah, but once again, not of you.  Well, hey, he got one thing right. I'm in my underwear. We gonna make sure to take all of it too. Anything else we taking? Send Addy right now. Can't do that one. Can't do that one. You have to. Nah, I ain't got nothing.


Next up, I'd like to welcome two folks from an organization called The Last Mile, Jason Jones, Senior Manager of Partnerships and Matthew Wilson, Senior Manager of Classroom Operations. The Last Mile is an inspiring organization focused on changing lives through technology. They are tackling the daunting problem of mass incarceration in the United States by providing education and career training opportunities to incarcerated individuals, preparing them for successful re-entry. Jason and Matt use GitLab as part of their DevOps training course, and they're here to share with you how it works and how you can get involved. Hi everyone, and thank you for joining our presentation on how The Last Mile is changing lives through DevOps education. Today, we're very excited to talk about how The Last Mile leverages the GitLab platform to incorporate DevOps skills into our courses for incarcerated students, providing them with exposure and practice with real world development workflows. Additionally, we'll describe how GitLab has enabled The Last Mile to facilitate collaboration between incarcerated students and our remote staff. In this way, it serves not only as a valuable educational tool, but a means for overcoming the unique physical and logistical barriers inherent in teaching students in an incarcerated setting. But first, we'd like to provide some background about ourselves and our organization. My name is Matt Nelson, and I'm the senior manager of classroom operations at The Last Mile. I have a background in education as a classroom teacher and teacher trainer. I joined The Last Mile in 2019 as a classroom facilitator at San Quentin State Prison in California. Today, I work closely with internal and partner staff to ensure that our students and facilitators have the information and resources they need to foster a productive and supportive learning environment. And my name is Jason Jones. I was introduced to The Last Mile in 2014 after spending about a decade incarcerated. Just like many of our learners today, Tianlium was my first exposure to technology in the form of building it. I came home to September 25th, 2018, and three weeks before coming home, I signed a work agreement with a tech company in San Francisco. However, a big reason why I came back to The Last Mile was to provide a level of insight of what to expect as a software engineer that was missing when I came home. Today, as senior manager of partnerships, I lead our conversations with existing and potential partners for Tianlium's future with a focus on creating mutually beneficial partnerships that impact our learners on a high scale. Tianlium was founded in 2010 by Chris Redlitz and Beverly Perente to help incarcerated individuals learn how to be entrepreneurs. However, in 2014, they pivoted to a coding program, so this program is a highly marketable skill and teachable skill. Today, we've expanded from a single classroom in California to 22 classrooms in facilities spanning a total of six states. We've had 300 people go through our program and be released, and have served over 600 students since our inception. Along the way, we've had a number of significant accomplishments, whether it's delivering live instruction via video call into prisons, having staff on parole lead remote instruction and run our helpdesk support or broadcasting live from inside a facility to a conference where students presented work. We're continually looking for ways to push the envelope in order to provide our students with the best, most authentic education possible. The last mile employs over 25 staff who support our students and classrooms and come from a diverse range of professional backgrounds, including tech, education and nonprofit management. Our staff includes 13 full-time employees who are alumni of our program, and much of our success is built on the knowledge and expertise of staff who have lived experience of incarceration, ensuring that our methods and course offerings are relevant and meet the needs of our student body and the constraints of the classroom environments. Well, what does that look like? Matt, give us a rundown of what students learn in our program. So our curriculum consists of a one-year program separated into two six-month courses for full-time students. We teach full-stack web development, including industry standard technologies such as HTML, CSS, JavaScript and React on the front end and Node, Express and Mongo on the back end. Students build a portfolio of work using these technologies while developing valuable professional skills through explicit soft skills training and by working and collaborating with others in a professional environment. And we're also expanding our offering into other content areas. Later this year, we'll begin teaching audio engineering via our music and video production program, which we'll be launching in California and Indiana. And after returning home, all of our program participants are connected with our reentry team who provides wraparound services. Alumni of our program graduate with an array of projects that highlight their skillset and have gone on to work as software developers at companies such as Slack, Square, Chan Zuckerberg Initiative, Checker and more. All of the work we do is driven by our mission, to provide opportunities for personal and professional growth for just as involved individuals through education and technology training. But just like every mission, it's not without challenges. Matt, let's talk limitations. Yeah, so as you might expect, teaching in a prison setting presents a number of logistical hurdles and limitations, many of which are particularly challenging for teaching software development skills and technologies. So for example, our students do not have internet access. All of our content and platforms are hosted on internal networks within each facility, and students are limited to accessing the resources on those networks. For this reason, when a student faces a difficult problem, they're not able to simply Google the answer. And if a student wants to incorporate some specific type of functionality in a project, they can't simply install a third-party library or plug-in that does it for them. In addition, our students are only able to access computers during class hours, limiting the amount of time they have to study and learn. And finally, due to security concerns, all communication between students has to be observable, meaning that there are no means for students to have direct written communication or to share files with one another. Now, in order to overcome these limitations, we've created a robust software suite in our classrooms to best replicate a developer's experience on the outside. All of the platforms that we use, such as our learning management system, file storage, and GitLab, are self-hosted and managed by the last mile and provided to the students via TLM hardware. Student credentials for all these services are centrally managed by our engineering department using Auth0. Now, let's look at a couple of these in more detail. Most of our curriculum is delivered to students via our internally self-hosted version of the Canvas learning management system. While students complete the course as a cohort with set deadlines for major projects, much of the learning is completed independently and asynchronously via Canvas. In addition, we also offer remote instruction sessions to support our students' learning and understanding. Our instructors call into classrooms on a weekly cadence to deliver lessons, address student questions, and perform live assessments. All of our current instructors are former program participants, so they are able to provide contextually relevant guidance to students that not only supports their understanding of the content, but is also designed with an understanding of our students' environment. Now, although remote instruction is typically only once per week, the rest of the time, our students also have access to our help desk platform where they can ask curricular or project-related questions that are addressed asynchronously by a TLM staff member. Our help desk is run by our team of apprentices who are themselves all former program participants, paying forward what they learned in the classroom to new students, while also jump-starting their careers with continued professional experience, development, and mentorship. One of the more recent additions to our suite of platforms is GitLab, which since 2020 has been available to students via self-hosted cloud-based instances for each facility. The decision to integrate GitLab into our program and curriculum was an easy one. Fluency in Git-based workflows and professional DevOps tools is a hugely important skill for anyone hoping to gain employment as a software engineer. It is commonly taught at the coding boot camps that TLM has modeled its own curriculum on, and it's continually identified by potential employers as a necessary skill for our graduates. So how do students actually use GitLab? Jason, can you walk us through some of the use cases? Sure. Currently, there are three primary ways in which GitLab is integrated into our web development program. These three uses of the platform are scaffolded, such as students begin interacting with Git and GitLab in a simplified yet meaningful way from the very beginning of the program with opportunities to utilize a more robust set of features as they progress through the program. Each of the supported uses of GitLab by TLM students serve not only an educational purpose, but are also a means to overcome logistical barriers of working with students in a highly restrictive environment. Now, the first way that TLM students interact with GitLab is through remote instruction repos. These repos provide a means for TLM's remote instructors to provide students, teacher assistants, and classroom facilitators with lesson plans and additional resources, such as starter and solution code to accompany each lesson. There are also an excellent way to introduce students to their first Git concepts and commands by cloning a remote repo and pulling down weekly updates. Each facility has, in addition to private groups for each student, a public remote instruction group. And this public group in the sense that each student within that classroom can view the contents of the projects and the repositories and long into that group. Within the remote instruction group, two projects are created, one for each course that make up our program, Web Development Fundamentals and MIRN Development. Prior to each remote instruction session, the instructor pushes up the student facing lesson plan along with all necessary starter and solution code to their appropriate repo. Students and student TAs then pull the updated changes to the local clone of the repository. Students are encouraged to review the lesson plans ahead of time, while TAs are tasked with familiarizing themselves with the lesson contents in order to support students during and after the lesson. Students learn how to access the lesson plans during their first week in the program. In this way, the use of Git and GitLab are integrated into students' learning experience from the very beginning, emphasizing for them the foundational importance of these technologies and version control concepts to their future success as a software engineer. Now, the second way that TLM students interact with GitLab is through individual repositories for each of their major student projects. TLM creates GitLab projects for each student associated with a limited set of formative and summative projects from our curriculum. These projects are created within each student's private group, meaning that no other students are able to access them. Only the student themselves can push to or pull from these repos. Similar to the other cases of use cases of GitLab within our program, the student project repos serve both educational and practical purposes. On the educational side, these repos provide students an opportunity to dive deeper into the version control workflow. Students are taught how to add and commit their local files, and then push them to the remote repositories. Students are then taught how to branch and merge code to safely work on new features. Students are encouraged to integrate version control into their work on all major projects, regularly pushing updates to their code as they go. On a practical level, the student project repos help to solve a longstanding issue for TLM, how to provide program alumni with their code post-release. Today, whenever any student graduates from our program and is released from prison, they can request exports of the GitLab repositories for their student projects and immediately have their professional portfolio online and ready to share with potential employers. The final way in which GitLab is integrated into our program is in the development of supplementary materials by teaching assistants, who are all graduates of the program that remain in the class to support current students. One of the responsibilities of teaching assistants is to develop additional educational resources for the students in their classroom. However, given the restrictions of the in-prison classroom environment, there's no means by which TAs can share materials that they develop with other students. However, utilizing GitLab, we've developed an innovative way for TAs to collaborate with remote TLM staff on developing the materials and then have them hosted in a GitLab repository that is accessible to all students in the facility. The process begins when a TA submits a proposal for a supplementary resource. In their proposal, they are required to provide additional details about the resource, including a justification for the need and specific learning objectives for the students. The TA is then provided with a private repo in which to develop their code. The TA develops the code, commits their code to the development branch and submits a merge request to master, which is assigned to a member of TLM's academic support team. The TLM staff then starts a review and leaves comments on the submitted code. Feedback is provided with an eye towards the concepts and skills taught in our curriculum. The TA is expected to implement changes, recommit, and then comment in the appropriate thread in the merge request. We remind TAs that this process is meant to be iterative and encourage this as training in career-relevant communication skills. TAs are also encouraged to ask questions along the way about merge requests, the review process, and various GitLab features. For most, this will be the first time they see and use basic GitLab features such as assigning, tagging, cross-linking, et cetera. In the example here, the TA asks and then answers a question about how GitLab allows reviewers to comment on specific lines of code and then tracks changes to those lines of code in the comment thread. Once all of the comment threads are resolved, the TLM staff will then merge the code to the master branch. And then when all materials are finalized, TLM creates a new public repo in the facility and pushes the code to it, which then allows all students in the facility to access that code. Now, while this might seem like a relatively simple use of GitLab, for our work with incarcerated students, it's a fairly significant breakthrough. Knowing how to work collaboratively on a code base with other developers is an important skill for any student of software development. However, given the limitations and security restrictions of the prison environment, hands-on experience with these tools and concepts is not something that has been available to our students in the past. Now, however, by leveraging the GitLab platform, we're able to create opportunities for our students to collaborate on code remotely with other developers, providing them with valuable experience and marketable skills to complement their coding education. Now, much like the other breakthroughs that we've accomplished during the past 10 years, our use of GitLab with students is just another way that we are attempting to revolutionize the in-prison education programs. With the goal of providing students with tangible marketable skills, our program tries as much as possible to mimic a professional development environment. And integrating GitLab into our curriculum and platform offerings has gotten us closer to that goal. But the three use cases presented above are just the beginning of what we hope to do with GitLab in our program. In the future, we hope to broaden our use of the platform to allow for students to collaborate with one another on projects, which in the past has been a significant barrier for our students. We also hope to provide students with opportunities to collaborate on projects with outside developers who are not TLM staff, as well as contribute to open source projects. And finally, we would even like to eventually add an entire DevOps course to our offerings so that students can return home with an advanced proficiency in DevOps and agile development. I know when I started my career as a developer outside of prison, version control and the different interfaces such as GitLab was a learning curve for me, especially since I was starting essentially with little exposure to it before getting out. It made so many things complicated and oftentimes got in the way of me really focusing on the stack of the company I was working for. From properly documenting tickets to making merge requests, it was all new to me. And I can honestly say that today for TLM learners, they are a lot more prepared to hit the ground running than I was. But for us, it doesn't stop there. We wanna keep innovating and finding new creative ways to make an impact. And we invite all of you watching here today to join us. So here are some ways that you can get involved. First, contact us. Visit our website and see how you and your organization can participate. We're always looking to expand our network, broaden our reach and bring more people into our community. Another way to educate yourself and others about the use of rehumanizing language and help us control the narrative for our learners and all justice impacted people. For example, instead of saying inmate or felon, we invite you to use student, developer, engineer, instead of saying parolee, adopt returned citizen or just as involved person. And most importantly, if you are in a position to make hiring decisions, be explicit about implementing fair chance hiring practices in your company. There are talented, motivated and highly qualified folks returning home from prison every day. Don't let their potential go to waste. And if you're unsure about how to do any of these things, again, please feel free to reach out to us. Thank you so much, everyone, for your time and your attention. And we hope that you'll get in touch with us and help us continue to change lives through DevOps education. Thank you.