Jonan Scheffler interviews Milecia McGregor, a Developer Advocate at Iterative, about her background in mechanical and aerospace engineering, fiddling with neurotechnology, and shares some of the awesome projects she is working on or has worked on such as an air guitar app, and an IoT dog locator.
Should you find a burning need to share your thoughts or rants about the show, please spray them at firstname.lastname@example.org. While you're going to all the trouble of shipping us some bytes, please consider taking a moment to let us know what you'd like to hear on the show in the future. Despite the all-caps flaming you will receive in response, please know that we are sincerely interested in your feedback; we aim to appease. Follow us on the Twitters: @ObservyMcObserv.
Jonan Scheffler: Hello and welcome back to Observy McObservface, proudly brought to you by New Relic's Developer Relations team, The Relicans. Observy is about observability in something a bit more than the traditional sense. It's often about technology and tools that we use to gain visibility into our systems. But it is also about people because, fundamentally, software is about people. You can think of Observy as something of an observability variety show where we will apply systems thinking and think critically about challenges across our entire industry, and we very much look forward to having you join us. You can find the show notes for this episode along with all of The Relicans podcasts on developer.newrelic.com/podcasts. We're so pleased to have you here this week. Enjoy the show.
Jonan: Welcome back to Observy McObservface. I'm Jonan, and I am joined today by Milecia McGregor. How are you, Milecia?
Milecia: I'm good. How about you?
Jonan: I'm hanging in there. I had a bit of a depressing Fourth. The fireworks are totally banned in the Portland area, and many of my tech friends are thrilled. If Twitter is any indication, fireworks are the sole cause of sadness for every tech person I know.
Jonan: But I've always enjoyed them. It just seems like everyone I follow on Twitter is like, "Fireworks are the devil. They scare dogs, and you're a monster."
Jonan: And I'm like, "But they're fun, and fire," I don't know. Is it just me? Do you like fireworks?
Milecia: I do like fireworks. Have you ever had a Roman candle fight?
Jonan: That sounds [chuckles] like something I would have done, but I've never lived in a place where Roman candles were legal.
Milecia: Oh, I got you.
Jonan: You've done this, obviously.
Milecia: Yeah. It was a normal childhood thing.
Jonan: Just firing incendiaries at your friends.
Milecia: Yes, it makes perfect sense when you say it like that.
Jonan: I actually really liked Roman candles. That was one of the fireworks...we could get them in Wyoming. I grew up in Colorado until I was like 10. And you could drive up over the border into Wyoming. And in Wyoming, they're like, "Sure, kid. You want a nuke?
Jonan: Great. You have to be, [inaudible 00:02:23], right? Okay." I'm like, [laughter] "Wow, yeah." Wyoming has some flexible legal situations around fireworks, but we played with Roman candles just a couple of times. Where did you grow up, in Ohio? Where did you grow up in the Midwest?
Milecia: Yeah, I'm in Oklahoma.
Jonan: Oklahoma, okay.
Milecia: So if Tiger King didn't really show you what it's like here, I don't know what to tell you. [laughter]
Jonan: So you started off your career in software by firing incendiaries at your friends and peers, and then what happened? Tell us a little bit about yourself.
Milecia: So my background is actually in mechanical and aerospace engineering, and I kind of ended up in software by accident. So there came this crossroad where it's like you can either move to the East or West Coast and work on cool robot projects, or you can stay around family in Oklahoma and figure out something else to do. So I stayed in Oklahoma, and I took some of the machine learning stuff I did in my master's program and used that to transition into software.
Jonan: So your master’s is in mechanical and aeronautical engineering.
Milecia: Mechanical and aerospace.
Jonan: Okay. And you would have had to go to work for Boeing or Boston Robotics or someplace like...
Jonan: And you were not so interested in moving to Boston or Seattle.
Milecia: Yeah, I’ll pass.
Jonan: You're good, huh?
Milecia: I'm good.
Jonan: They don't even sell weapons to children here. [laughter] They don't sell gunpowder weapons to children, not here.
Milecia: [laughs] It's too safe.
Jonan: It's too safe. You didn't necessarily give up on robots though. You work in ML now.
Jonan: But I was looking through some of your projects, and I see a lot of IoT stuff. There was this dog tracker that you built for tracking your pet. Was that on Arduino?
Milecia: Yes. So my dog is kind of weird because he's very cat-like. I don't know where he is unless he doesn't know where I am. Otherwise, he just kind of disappears somewhere.
Milecia: He doesn't get into anything. Nothing's torn up. He just doesn't respond. So I was like, yeah, I could buy something and find him, but it's more fun to make it. So I took this Arduino and put it in a SweetTarts box, and looped it through his collar. He hated it, but it was so easy to find him.
Jonan: Does it make noise, or is it you locate it with your phone? How does it work?
Milecia: It makes noise, which freaks him out. It's just this little beep sound. It's not even super loud, but it's enough to scare him. And it makes him shuffle around, and I'm like, okay, he's there. So it's fine. [chuckles]
Jonan: Because otherwise [chuckles] you would not know. It reminds me of this...what is that show? Arrested Development. There's a boys' school in Arrested Development, which their motto is boys should be neither seen nor heard.
Jonan: And they all become experts at just blending in and hiding behind curtains and under furniture and things. [chuckles] You have a dog who, in total polar opposite to all of the animals I've ever owned, wants to be neither seen nor heard. So you built that and now you have an air guitar project. You've actually been working on the air guitar thing for a long time.
Milecia: Yeah, I've been working on it for about a year, maybe a little over a year now. And data is hard. It's hard processing brain signals and muscle signals in a way that gives you something that makes air guitar noises.
Jonan: Yeah, I think maybe we should explain to people how it's necessary to measure brain signals to play... Because I'm picturing air guitar is like...all right, I would make like a little infrared sensor and just wave my hand through it. And I'd be like, okay, this plays one note when I move my hand across my pretend guitar. You went a different tack. Tell us about the first project.
Milecia: First off, I like your way better.
Milecia: That sounds like something that might have been finished by now, but I don't know. One day I was like, I want to learn how to play the guitar, but I don't feel like it. What if I just thought about the notes that I want to play and the sounds would just happen? So that's where the inspiration for using EEG sensors to pick up brain waves to figure out what combination of waves makes this sound...and that is kind of where I'm stuck right now. I have some sounds being made, which is progress, but I don't know how or why.
Jonan: So you have some speaker hooked up to an EEG helmet like one of those mesh things they make you wear in the psychology studies.
Milecia: It's like the mesh thing that you wear in those. But this program runs on a computer. So it's just a little Python script that I wrote. And as you are thinking, the Python takes your thoughts, feeds it through this machine learning model, and then the computer outputs the sound.
Jonan: So I'm thinking of a tune like, I'm thinking in my head Twinkle, Twinkle Little Star and that generates different waves, and you're able to measure. Have you successfully thought of two different notes and seen a change in the data output from this thing?
Milecia: No. That's where I'm stuck at. There's so much noise in EEG signals. I don't want a brain implant, so there's my whole skull in the way. And I'm trying to get to the point where I got the filtering fine-tuned. There are different types of filters you can put on EEG data, and that's where I'm at right now is playing with that. Like, how do I get out my skull noise to get the real music? And then from there...like right now, I've got it doing something with individual notes kind of. I don't think I actually have my model trained enough to be like, yes, this is definitely an A-note, and that was a G. So just trying to clean that data has been incredibly hard.
Jonan: And then once you manage to clean, will it only be applicable to you presumably?
Milecia: Yeah. That's the other thing. It's like, once the data is cleaned and I make the model, the model is just for me. But the key is being able to make that model customizable because I think once I get the data cleaned and I figure out the process for doing that if I can get it consistent enough, that should be all I need to record some data from another person, train a model that's just for them, and then they get their own custom air guitar nobody else can use.
Jonan: That's amazing. I look forward to the Kickstarter, assuming you don't go the brain implant route because I'm not so down. [chuckles]
Milecia: Yeah, no. I'll pass. Elon can have that one. [chuckles]
Jonan: Elon can go ahead and experiment on himself.
Jonan: So this ML journey now, you've done a couple of things. You started off with mechanical engineering, and then some airplanes also, and then robots. But you got into writing software, which led you to build an air guitar that requires some machine learning, and now that's mostly what you're into these days. And you specifically work for a company called Iterative.ai.
Jonan: What does Iterative do?
Milecia: Iterative actually makes tools for machine learning projects, and the one that I focus on in particular is DVC. And I kind of started looking at it before I even really knew what Iterative was because I was having these problems with, well, I don't know how to track all of my data. Do you know how big 30-minute recordings of brain signals can get? It's unwieldy when you have 30-plus files with 30 minutes of recorded data. So I was like, how can I tell the difference between this version and that version without having a bunch of folders that I make, and making sure that I'm moving things after I do the recordings, and then making sure that I've matched the model with that data, with that chunk of code? And it just got a little unwieldy because I was trying to do experiments pretty fast, and that's how I found DVC. So instead of me having to go in and manually version my data, it just tracks everything for me. It's like Git but for data versioning.
Jonan: So it has a similar workflow...I mean, you said they're big. Give me some context here. What does it take for disc space to record 30 minutes of my brain?
Milecia: It's like two to three gigs.
Milecia: Yeah. If you have a decent amount of EEG sensors, I think the cap that I have maybe has somewhere between 20 and 30 sensors. But I noticed if I take the resolution down, the files aren't as big, but you lose a lot of important data if you don't have as many sensors.
Jonan: Is this cap like you have to salt the bits that connect to your head, or is it something you could just take on and off like a helmet? Like, there are ones where you have to salt little sponges on the tips of all these things to get good contact with the skull. I'm imagining this being a very involved process where you are soaking your head in saltwater to write your code.
Milecia: [laughs] No, it's like a helmet. You can just put it on and off. It works better if you can get more hair out of the way, but I'm not willing to shave my hair for this experiment.
Milecia: So I'm trying to figure out how to filter that noise out.
Jonan: Yeah. All right. So DVC is a product that you got familiar with because you were actually using it to solve your own problem where you're versioning your data. And then I would be able to see from one recording to the next….I'm able to record only the differences. Does it actually reduce the size of the data that I'm storing on disc? No, because it's unique, right? Like, a single recording of my brain is going to be an entirely unique set of data points to the second recording that I make.
Milecia: Right. So the way that it works is like, this is something else that I'm trying to figure out if maybe I should change my thinking about it. So one recording is one data point. So during that recording, I'm trying to think consistently about one sound or one melody, one single thing that I could strum on a guitar, whether it's a chord or a note, just trying to keep it at that level. And each recording is a data point. And if each recording is a data point and it's like two to three gigs, and you know you need quite a few data points for a good model...So I think I've gotten up to 100 and something data points, not a whole lot, but enough to where it's like, okay, I cannot keep updating this on my own. I'm getting confused. Did I record this last night, or was that two days ago? And that's kind of where DVC came in. It was like, okay, I'm just going to set up this little pipeline. And it makes these custom Git references to my data in the form of some kind of metadata. Like, you can go in and read the file yourself and see the changes. But it's just, I think, a hash value or something. It's some string value that's labeling that chunk of data for that model.
Jonan: Okay. So then you end up with something akin to that tree view that we get in Git showing you when things were recorded and how they all fit together. You've recorded 100 half-hour samples?
Jonan: You've just done 50 hours thinking about just one thing.
Jonan: So you're thinking about C, like middle C.
Milecia: Yes. It's painful. There's so much to processing brain signals that it's honestly kind of frustrating right now because apparently, if you blink, that interferes with the brain signal. It's a very pronounced difference. And I'm like, maybe if I just blink the notes, that will be good enough for this.
Jonan: [laughs] You've got to be able to filter out things like blinking and swallowing; 100 samples is kind of the tip of what would be possible to train something on. When you're talking about images, my example is always...I want to explain my rudimentary understanding of ML here. So I'm building a neural network, and I don't necessarily even know how it works on the inside, but I don't care. I've got this program over here that can assemble a bunch of distinct nodes using yes or no answers into a whole collection, a node cloud network that, when I feed in an image of a cat, it says, "Yes, that's a cat," or "No, that's not a cat," based on whatever trickery it devises. It kind of invents its own algorithm as I put this thing in there. And again, my understanding of machine learning and artificial intelligence is really pretty basic. But when I'm training that neural network, I'm trying to hand it 10,000 or 100,000 pictures of cats so that when I show it a raccoon, it can successfully say, "Not a cat. Having seen 100,000 cats, I'm something of a cat expert," says the neural network.
Jonan: "And this is a raccoon or just at least not a cat." So with 100, you're still needing pretty significantly more data than what you have.
Milecia: Yeah. When I thought about this project, I was like, oh yeah, I'll just get some data real quick, then I'll just slap it in a convolutional neural network, and this pretty magic will happen. But that has not been it at all. I've ended up reading some books on neurology that I never thought that I would end up reading about. And yeah, just that overall frustration with data has been driving me a little crazy.
Jonan: What's your favorite book on neurology that you've read so far?
Milecia: I wouldn't say I've had a favorite. I found some random textbook online that was extraordinarily dry, but it helped me figure out how to do some of the filtering. Like, since I'm not willing to do brain implants, I have to filter out my skull noise, which thankfully is pretty consistent. So it's like, okay, book, I guess it told me the frequency of my skull, great. So trying to make sure that I'm using, I think a low band-pass filter for that, or I don't know, it was either a low or high band, one of the two.
Jonan: One of these two filters. And it was able to remove your skull noise because skulls are quite noisy. What is it? Like the musculature over our skulls, that's twitching, or the blood flow? I'm thinking bone is pretty static.
Milecia: Yeah, it's not really the skull. It's the goo that your brain is in. And then the thickness of your skull just makes it harder to read the signals that your brain actually makes because the sensors have to get through your skull. They have to figure out what's going on in the goo, and then it might figure out which neurons fired something.
Jonan: What's really interesting to me is we talk often on this podcast, or we joke about how this is an observability podcast, not about observability. But in fact, it's more of an observability variety show because what you are achieving here is very similar. You have a massive amount of data coming in. You are trying to filter it down to create something actionable; in this case, the C and the skull noise is getting in the way. And when I'm trying to debug my web applications, my skull noise is always getting in the way. [laughter] So this project led you towards ML, and it sounds like this one is getting frustrating but not enough to get you to put down the air guitar for now. Do you have any other things that you're playing around with?
Milecia: Oh yeah. I always have a bunch of stuff. There's this one framework that I've been playing with a lot called Redwood. And if you've done anything with React, GraphQL, or database stuff, it's pretty incredible. I found it last year just digging around online like I do for some reason. And it makes full-stack apps with one command. As long as you have your model schema defined, it does everything else for you. And it's not this weird black box thing like .NET is sometimes, but you can go in and edit everything that it makes. And I'm still picking at it, trying to break it. And I've found a few things to break, but nothing that's been terrible. It's just been surprisingly sturdy.
Jonan: And then it's not taking away anything from you. These kinds of tools, in my experience, end up kind of trapping you in Redwood. So it's using React and GraphQL. And what is the database that it builds for you?
Milecia: It uses Prisma to handle the database schema, but you can use it with whatever Prisma does, so Postgres, SQLite. I think they added MongoDB support not too long ago.
Jonan: Nice. I like the Postgres part, the one true database. I've been on my Postgres high horse for many, many years now, and I'm never coming down. [chuckles] I'm so sold on that database. I love it.
Milecia: I don't blame you. It's the easiest one to work with that I've had a chance to.
Jonan: And it's so flexible. I'm still looking for things this can't do. And even when it comes to stuff like time-series data like the sort of thing that we work with so often, there are so many good options for using Postgres directly to store that. I suppose that a company that presents its own time-series database to the world maybe I should not advertise quite so hard for Postgres, but I love it. It's great. So you've been playing with Redwood and building what? What are you making?
Milecia: Right now, I'm actually trying to make this...it's a learning management system because last year, I noticed a lot of people were having problems with getting people to participate in stuff online, especially with classes which we all know was a problem before. Because, how many Udemy classes do we have that we've all bought and we keep swearing we're going to take them, and we keep swearing we're going to take them? So I want to make something that's more engaging. And that's what I'm trying to build with Redwood right now.
Jonan: There's a Japanese idiom...so the term is actually...it's not so much an idiom. The term is just ‘tsundoku.’ Tsundoku means that you acquire reading materials, and you pile them up in your home without reading them. [laughter] That is basically my life. I have a whole collection of books. For all the books that I read...and my goal this year was to read 100 books.
Jonan: I'm not going to probably quite make it. I had a lot of other professional changes going on that took a lot of my time, but that also involved reading a lot of books. I want to have a 100-book year some year soon. But for those 100 books, I will, of course, buy 500 and then just store them.
Jonan: I mean, I have e-book collections that are massive, and then I've got the audible ones, and then I have the ones on the shelf. I can be reading books in any moment no matter what I am doing, and I still don't get to all of the ones that I'm able to collect. I feel the same about the online courses. There are so many things to learn in tech.
Milecia: There are.
Jonan: I talk to code school students rather a lot because I came through a code school a long time ago. And I try to convince them that what is happening for them is they get out of the industry, and they look around, and they determine immediately that everyone else is smart, and they will never be smart. They're looking around at a bunch of people who have a bunch of knowledge that they've accumulated over long careers, in some cases, around an entire sphere of things that they don't know about. The Venn diagram of the knowledge you have acquired in this industry and the knowledge I have acquired in this industry actually overlaps a fair amount with the exception of the machine learning stuff because we both do a lot of IoT, and we can at least have a conversation about it. But that's what I would consider a reasonable amount of overlap. And it's what? Maybe half a percent of all of the body of knowledge that exists in our heads.
Jonan: You end up with this world where you're looking around at everyone else's half a percent, and you're like, my half percent is useless. You got to realize in that moment that everyone has something to contribute, and you really only unlock the power of that if you are able to accept it and work with others. Teamwork makes the dream work. I have a real problem with that lone wolf coder kind of mentality that existed when I was growing up where it was like, what you do is you put the genius expert at the keyboard, and then you watch the genius expert, thanks. That's not at all how software actually works. Do you think that that's one, been your experience in tech and two, likely to get better or worse? This perception of the super genius coder. Because the tech itself is getting more complicated, I would describe you as a super genius coder, given the conversations we have just had.
Jonan: Do you think that's a societal perception that kind of limits the number of people coming into programming? Is that getting better or worse today?
Milecia: It's so hard to tell because I talk to some people who are trying to get into tech and thankfully, it's not like when I was trying to get into tech because it very much was that, "Hey, here's this problem. Go do stuff. We'll be back when it's done, but make sure it's done before we get back, or else you're not as smart as you think you are." [laughter] It was like they took the software developer and made us a little black box that just produces work. And it doesn't seem like it's quite that bad anymore. It seems like people actually care to try to mentor, and they see the value in that now compared to back when then they were like, "Oh, you don't know how to do pointers and memory references. You'll never make it in this," but I don't think that's the case anymore. Pair programming has become kind of a normal thing. Doing mentoring has become more widespread. We have GitHub Copilot trying to take over that part for us anyways.
Milecia: So I don't know. It seems like the tech community is a lot friendlier than it was even five years ago. And I think that we're headed in the right direction.
Jonan: It's interesting that you mentioned GitHub Copilot because it's been so controversial. So many people are saying, "I'm sorry, you trained your model on what now? On all of that code that we put up on your trusted service, friend of the community, with our own copyrights, and disparate licenses." And in some cases, now that product is outputting people's API keys that it's learned from GitHub.
Milecia: Oh wow.
Jonan: That's terrifying to me. I'm all for machine learning, hypothetically. But you can't just go...I mean, they have this description of it that's like, well, it's fair use. It was on the internet, so fair use. What do you think?
Milecia: That's kind of my dilemma with machine learning is; it’s not the machine learning part that's the problem; it’s the data. Everybody is trying to collect more and more data, and they're trying to get more fine-tuned data because there's something, I don't know...Are you familiar with Polywork?
Milecia: I've been checking it out, but something about it...it's like a very friendly data collector because it's asking for a lot of granular stuff about your career. And I can see that data being used for some machine learning things. Somebody's going to want to know what they can do to make some product with that data. And I think that's really where the problem is, even with GitHub. They just took a bunch of data and some of it...I don't know. It's like the conundrum we have with Google. We use all of their stuff, but they took the promise to not be evil out of it.
Jonan: Yeah. I remember when they struck that from their company mission, their values. Don't be evil was one of Google's values that they actually removed at one point. How do you sit in that meeting without thinking like, we're the baddies. We are definitely the baddies.
Milecia: We have to get rid of this line,glow-in-the-dark zebrafish, and it's terrifying to me.
Milecia: Oh gosh, we are in the future.
Jonan: We are in the future. So speaking of the future, I typically ask people to make a prediction about what is coming in tech or in observability or, in your case, I suppose in all of the above. I think that the work that you do guessing what the world's going to be like a year from now is especially hard. I would really like to have something I can hold against you in a year when I have you back on the podcast to check on the air guitar and I could be like, "Remember when you predicted we'd all be riding sharks with lasers to work? What was that?"
Jonan: What do you think is coming over the next year?
Milecia: I think that we're going to see maybe a little bit of an uptick with data parsers like, maybe they’ll be more specialized for different industries. But we have a bunch of data available online. It's just not in a form that we can use it.
Jonan: Okay, terrifying given our former conversation.
Milecia: [laughs] I guess I'm kind of like on that side, yes, let's bring the apocalypse. But I'm also like, wait a second, should we bring the apocalypse? This is kind of creepy now.
Jonan: Yeah, but it's so cool. I can barely stop myself. I think there is an ethical way forward. And I think it relies on major corporations maybe not firing their ethics researchers for their machine learning programs, not that I'm going to go right out and say that company's name out loud because their robots are listening all the time.
Milecia: Yeah, all that time.
Jonan: They will come for me.
Jonan: So if you were to give someone advice who wanted to pursue your career path, and given how meandering it was described on this show, I think it's safe to say that you are something of a tech generalist. What advice would you offer someone who was just starting out in your shoes to prepare themselves for a similar journey? There are going to be plenty of people who listen to this, and they're like, wow, Milecia has basically the coolest job that I could ever even imagine inventing for myself. How do I get from here to there? What advice do you have for them?
Milecia: If you're interested in something, just do it. I had no idea; I still have no idea if this air guitar thing will actually work out. But you just learn so much in the process that it is never a waste of time because even if I don't get the air guitar to work, I now know way more than I should about neurology [chuckles] and also data engineering, and machine learning, and how to make algorithms more efficient. And all of that sounds weird to say, but it came from the pure laziness of not wanting to learn how to play a guitar. [chuckles] I thought it would be easier to make an air guitar than to just spend those 50 hours learning how to play a real one.
Jonan: Yeah. I think that has been the inspiration for almost all of my nonsense inventions as well, like the robotic waffle maker where I was tired of turning the waffle maker handle myself and determined that I could make a robot do it and also check the crispiness of the waffles afterwards to try and train it. Never got around to the training part, but I look forward to getting into some ML stuff. And this DVC, I pulled up the website when we were talking about it. This is really, really useful because the alternative is me shipping around files to my peers that end in V2. It's like the old days of sending people Word docs that were like, [chuckles] projectproposal_V2.V3updatefinal.
Milecia: [laughs] Right. So if you're actually on a team of data scientists, instead of trying to do some weird stuff at home, you can actually get your co-workers to reproduce the exact same thing that you had. Which if you've done anything in machine learning, you know how incredibly frustrating it is to get an academic paper or something with this really cool algorithm you want to try out, but you can't reproduce any of their stuff. They're like, "Oh yeah, this model it's so good." And you're like, "Well, where's the data? Where's the code? What hyperparameters did you use?" And they're just like, "This model though; it’s so good. Look at these stats." So with DVC, you don't have that kind of mystery; I just have to trust this pre-trained model type thing. You're like, oh, well, you use this data set with this model with these hyperparameter values. And it bundles that as just an entire experimental chunk that you can share with other people on your team. So they can just pull down all of that like, the references to that particular version of the data, your specific model, like the code that you write for it, and all of that without needing to go through that; hey, I uploaded this folder to Google Drive. You should go pull down this version.
Jonan: Yeah. It sounds like a much better world. I've got so many ML ideas going through my head, so many ideas actually in general. You're an inspiring person to talk to in that now you've just destroyed any semblance of personal time I may have had in my already too hobby-filled life.
Jonan: But I thank you very much for coming on the show. It was really, really nice to meet you, Milecia. I hope you have a wonderful day.
Milecia: Yeah. Thanks for having me.
Jonan: Thank you so much for joining us. We really appreciate it. You can find the show notes for this episode along with all of the rest of The Relicans podcasts on therelicans.com. In fact, most anything The Relicans get up to online will be on that site. We'll see you next week. Take care.