We chat with Innocent Ndubuisi-Obi and Luke Jordan about the unique challenges you face when trying to solve civic problems with software. From mesh networks to USSD messaging protocols, they share lessons learned and the tools they would recommend for developers looking to make an impact in their community.
Innocent is a research associate at the MIT Gov /Lab. You can find him on Twitter here.
Luke is the Founder and Executive Director of the civic technology organization Grassroot, as a practitioner-in-residence in 2021. You can follow him on Twitter here.
Our lifeboat of the week goes to John Rotenstein, who explained: Why some services are called “AWS XXX” and the others “Amazon XXX”.
Innocent Obi I did a project a while ago, where we were trying to build a crowdsourcing traffic application for Lagos, Nigeria, right. And we built this whole thing, we had Firebase running, we had all this great stuff. And the stack was really cool. It looked interesting. And at the end of the day, we were testing it out with our users. And one of the things that they ended up saying was they wanted video, they want to chat features, they want to report all these incidents, they want to do all these things. And we realized that there was no way we could support that infrastructure at scale, not because of the back end, but because of the costs of the user. And so we started asking ourselves questions. Okay, well, what are ways in which we can take advantage of offline communication? How can we take advantage of like mesh networking these phones and thinking, so we start to think of new ways and new solutions. And here's how to use things like USSD as a way to deliver information to people rather than having some kind of client server model where the applications constantly pinging data to a server.
Ben Popper The fight against COVID-19 isn't over. But you can build an app that makes a difference. Enter the COVID-19 Healthcare App Challenge to showcase your development skills and raise money for underserved communities affected by the pandemic. Visit healthcareappchallenge.devpost.com to register.
BP Hello everybody! Welcome to the Stack Overflow Podcast, a place to talk about software, technology, programming, really anything you could do with a computer, or you know, a smart fridge. I am Ben Popper, Director of Content here at Stack Overflow. And today, I have two great guests on Luke Jordan, and Innocent—I might have to ask you to say your last name before I mangle it. But welcome to both of you. Why don't you introduce yourself to our listeners and let them know who you are?
IO Hi, yes, yeah. So I'll go ahead and get started. Hi, everyone. My name is Innocent Obi. I am a research associate at the MIT Gov Lab. And it's great to be on today.
Luke Jordan I'm Luke Jordan. I am the founder of Grassroots and a practitioner in residence at the MIT Governance Lab.
BP So for folks who don't know, what is the MIT governance lab? What does it focus on? Yeah, what's it kind of made up of?
IO Yeah, so the MIT Governance Lab, we like to think of ourselves as a research group slash innovation incubator. And the kind of our main goal is to change practices around corruption, government accountability, and citizen voice. And so the way we do that is we try to bring the best ideas from behavioral science, political science, experimental social science, computational methods, design thinking, to help our partners target and think of new governance solutions. And one of the most important ways we do that is to what we call engaged scholarship, which just requires us, essentially, we do a lot of rigorous research that's co created with our practitioners on the ground, focused on local problems, but with lessons that are applicable to the broader understanding of political behavior for both our practitioners and our audiences.
BP And Innocent when you reached out to me, you shared an article from Luke, that the title is Don't Build It: a guide for practitioners in civic tech. Obviously, all programmers know don't build it is the best way to avoid bugs and headaches. But how do you, yeah, create some of the change, you want to see? How do you improve governance, if you're not out there building new things and new technologies? What's the idea here?
IO Yeah, so the way that article or the guide I shared came about was, we have a method within the Gov Lab, through our engaged scholarship work that's called the practitioner in residence, and the practitioner residence provides an opportunity for practitioners on the ground with resources in the space kind of to think and reflect on their experiences on the field. And we had done previously, an engagement with Luke and his organization, Grassroots in creating this consistence, low tech leadership development course that was taught on WhatsApp. And so Luke has all this experience working in civic tech. And a lot of our work kind of coincides with this space of civic tech and governance innovation. And for decades, there have been numerous articles and studies done about attempts and approaches in the civic tech space that have just failed, and failed to achieve the impacts that they wanted. And so what we thought would be really interesting is to get an experienced civic tech leader, to come in, spend a year with us, and jot down some of his ideas on why civic tech doesn't work and what you can do to make it work. And the provocative title is Don't build It, which is usually the case, in many instances. But then if you do want to build it, have Luke's guide covers a variety of different things as a civic tech person or individual looking to start a civic tech project, things that you should consider.
BP Okay. Alright, Luke. So I am in a small city or a small town, I want to build something to empower my citizens to make government more transparent or enable them to register for a vaccine. Why should I not be building that myself? Or if I feel like that's the best option, how should I go about it?
LJ So I think the way I tried to frame to build it is similar to how I knew some people who used to work at Apple where they had this idea that there was a basic assumption was anything could be done, but you were allowed to rebut that assumption. So you would say, you know, we want to design something that's like, three times smaller than it's been before. We're going to assume that you can do it, but you can come back and prove that you can't. This is kind of flipping that on the head to say, the basic assumption should be this is probably a bad idea, but I'm going to be open to proving that it's actually a good one. And the reason why I kind of advocate for saying why that's that, I should say that sort of, I did spend four and a half years building civic tech. And it's still what I do. So there are ideas that kind of fit through the filter. But because when you build something like that, if you're in a small town, everybody's going to tell you, it's a good idea, everybody's going to like it as a good idea, you're not going to get very much pushback from sort of the real world in terms of helping you filter, whether this is really what's going to be the best use of your time, if you want to do something to improve your local city. So going into say, I think this is probably a bad idea, but I'm going to do all of the investigation. And if at the end of all of that, I am really still absolutely convinced that this is something that needs to be built, then I carry forward and then I have that much more confidence in being able to do it.
BP So for Innocent or Luke, Innocent, I know, you mentioned WhatsApp before, is a better, yeah, better approach these days to rely on existing tools, you know, maybe to stitch those together to use low code solutions. You know, what, what can you do, if you right, don't want to sort of get into the often tricky, you know, area of building from scratch. And then also, as you know, I think we see increasingly in the news being responsible for people's private information, or, you know, dealing with a cybersecurity risk, or ransomware, or whatever it may be, you know, the headaches that come along with maintaining something you've built, what is some of the tools or approaches you can use? When you say, alright, building, it's not for us, but we still want to accomplish, you know, this civic goal.
LJ So I think absolutely, the first thing is reach for whatever existing tools, you can repurpose very quickly to do that. So for example, this is one thing. So in the US, it's slightly different, because WhatsApp isn't quite as ubiquitous, but certainly in Europe, or like the rest of the world, if you can figure out a way to do what you want to do by managing a WhatsApp group, and a really thoughtful, good way to do that. And at some point, if what you've caught it onto is a problem that really needs solving your WhatsApp groups can expand beyond your ability to do that. And then at that point, you start to think, okay, maybe I can add another layer on to it. So that's one option. The other option is do something with AirTable, if that's something that you want to do, which is Google Sheets and connected to a website. Sometimes it can be particularly in environments. So a lot of my experience of Africa, a lot of the jobs workers in the developing world, you know, helping somebody get airtime really easily and quickly, so that they can then afford to call into call centers, or call local representatives, all of those kinds of things, or just help people figure out where they can find gaps that they can use, and then do that themselves, using a couple of off the shelf tools will get you very far. And then if you're hitting walls, that you can't get over without writing something coding something from scratch, do that too. The other thing I would say, by the way is since they are often people trying to do these things, often just extra contributions, existing open source projects, including like open source, kind of no code tools, or various other tools for managing these things can also have like major effects downstream, so either of those routes, but really, the first one is use what everybody's already using, combine it and then eventually, once you hit a point where you can't do it anymore, you can start to build.
BP And Innocent. What about you from your own experience? What tools have worked? Or, you know, have there been situations where you finally sort of said, alright, you know what, in this case, because of what we want to do, or because of the way we want to do it, we've got to sit down and build this ourselves.
IO Yeah. So my goal here is to kind of bring the kind of the the policy angle to this. And so the interesting thing about that question is, for example, we had a recent conversation with some of our partners in Nigeria, and they run a local co-creation hub. And they work with a lot of different entrepreneurs in this space and government agents, and they try to create civic tech solutions. And one of the interesting things that came up in our recent conversation, and as we're working with him to think through interventions in that space, that kind of target service delivery and applications of that is, I think one of them said, technology is probably 10%. The other 90% is people in processes. And we went through an example of an application that was really interesting. That's a great website, it connected citizens with their governments and their stakeholders. And someone brought up the question of good, well, what happens when the administration shifts? How do you think of the lifeline of that technology in that solution? How do you get by and who should be building it? And this is reminiscent of some conversations I had when in my previous life. I did a lot of work in my previous capacity with organizations like ATF and US digital service. And one of the things that kept coming up over and over and over again, when we had this debate over commercial off the shelf solutions or government off the shelf solutions is the sustainability of those solutions and how it ties into the into the political process. And so usually when you start to talk about civic tech, you embed into these other spaces of politics that changes how you build solutions. And so my usual approach, and usual things we've always tried to do is stakeholder building, and like user research, is usually the first thing because usually it's not a blockchain solution that fixes it. But it's thinking through early on, like whether or not there's infrastructure in place, even support a server in this area that we're trying to implement a new solution.
BP Yeah, I mean, you bring up an interesting point there, which is that I think developers in any, you know, capacity would be familiar with the ideas of technical debt, you know, or shifting priorities within a company. But it's especially true often in the Civic world where we're used to having different administration's come through often with very different points of view and very different priorities. So is there a way to build this so that it might better align with those shifting perspectives or be able to survive and thrive regardless of you know, what administration currently has won the vote? Or is it in charge, let's just say in charge.
IO I would say one thing interesting about like that comment, too, I think goes back to Luke's point about don't build it. As techies, we're comfortable with our tools, we're comfortable with the software's that we're used to using. And in many cases, the client server model, the HTTP model just doesn't work. Right. And you just think of ussd as the actual tool that you need to use to interact with users. And if you're not thinking with that kind of intention of maybe I don't need this first, I should evaluate other needs before I go about thinking of what solution thing that helps you think really creatively around new solutions. I think some of the stuff around offline first is a movement in the software space. It's also really interesting in the civic space, because many of the cases where you want to build civic tech solutions, you have to start thinking of offline interactions, offline capabilities.
BP So how would you define that trend? And where do we see it, not just in civic, but elsewhere?
IO I did a project a while ago, where we were trying to build a crowdsourcing traffic application for Lagos, Nigeria, right. And we built this whole thing, we had Firebase running, we had all this great stuff. And the stack was really cool. It looked interesting. And at the end of the day, we were testing it out with our users. And one of the things that they ended up saying was they wanted video, they want to chat features, they want to report all these incidents, they want to do all these things. And we realized that there was no way we could support that infrastructure at scale, not because of the back end, but because of the costs of the user. And so we started asking ourselves questions. Okay, well, what are ways in which we can take advantage of offline communication? How can we take advantage of like mesh networking these phones and thinking, so we start to think of new ways and new solutions. And here's how to use things like USSD as a way to deliver information to people rather than having some kind of client server model where the applications constantly pinging data to a server. And so it forces us to think very differently about our solution as techies. But it also made the organizations that we're thinking of applying this work to think of, well, who's gonna fund this? I've worked in organizations before that have created really cool solutions. And they realize that their intended funder in the government wasn't going to fund it. And they just they had to kill it, because it just didn't have the viability it needed.
BP And just for clarity, what when you say USSD, what does that acronym just for people who are listening, so they understand?
LJ I actually I think both Innocent and I have built applications over USSD. And I don't know if either of us ever remember offhand what it is. But it's unstructured synchronous data, I believe. It's a protocol that lies underneath mobile networks. So if you've ever recharged data back in the day on your phone and put in like a star, something something star with a bunch of digits afterwards with a hash, that's running off USSD. So it's a protocol that runs underneath the mobile networks, that allows you to do to push menus to users, and then have them respond to that menu, and then walk through in effect like a session. So it's basically like a menu based protocol that allows you to have a menu based application, where the major advantage of it is, it'll work on any kind, if you've got a 2g signal, ussd will reach you. And it'll typically reach you very quickly. So I think particularly so for example, in Nigeria, a lot of the mobile banking runs off uses the grassroots, which is the platform that I bought ran off USSD. And it allows you to kind of just reach people with very basic phones who either have don't have smartphones, or have run out of data, like just don't have data because they can't afford it, or their smartphones are super low spec.
BP So maybe, before we wrap up, tell us what is Grassroots sort of like what did you build them? And what's the goal? How are things been going?
LJ So Grassroots is a I think the easiest way to kind of describe it is a sort of a combination of Next Door and Change.org that runs over USSD, as I mentioned, and so reaches kind of putting people in pretty low income communities. So it's it's a platform to help community organizers organize their neighbors, and to help large NGOs and nonprofits reach large numbers of people who otherwise don't have access, so allows people to call community meetings. The way I describe it, what it replaced was, when we were looking for asking people, what did you need to make organizing in your communities easier? One of the things we kept hearing was people would say, well, the only way I can call a community meeting is I've got to pay a guy to go and drive around in a pickup truck with a megaphone telling everybody kind of community meeting this afternoon at 2pm. So Grassroots we basically replaced that with sort of 30 seconds using a couple of USSD menus, and then allow sort of petitions at large scale, reaching those sort of people. So last year, when COVID happened, we had in South Africa, one of our partners who ran a major petition drive to get public subsidies for single mothers to try and get them through lockdown. And that ran over grassroots and sort of gathered 500,000 signatures over the platform within a week. And then that kind of went into presidency and sort of changed, change their policies. So it's basically a general purpose organizing platform, but which reaches people who otherwise it's very difficult to reach.
BP And for our listeners, like what's the software stack on your end? Like, obviously, you know, one of the advantages here, as you point out, it's this, you know, universal protocol that works and even simple, like a 2g flip phone, but what are you using on your side to operate this?
LJ So it's actually it's a fairly traditional enterprise stack, actually, because originally a bunch of myself and some of the early developers came out of that. So actually using Java Spring on top of Postgres and Hibernate for the ORM, and then caching them more on AWS and the USSD, we actually go through a gateway that then uses XML interchange, it's an XML interchange that we just exchanged.
BP Java, Postgres, XML. Yeah, classic.
LJ Exactly. Exactly. Exactly. Well, that classic is what helped us with that volume surge last year.
BP Just throw some COBOL in there, and you're good to go.
BP Thanks to both of you for coming on. I guess what I'll do now is I'll read out a lifeboat. So at the end of every show, I read out a little lifeboat badge winner. That's somebody who came on Stack Overflow and found a question with a score of negative three or less, gave it an answer. And the question now got up to a score of 20 or more. Awarded May 24 to John, John Rotenstein, "Why some services are called “AWS XXX” and the others “Amazon XXX”" Alright, I hope you means xxx in a different way than I'm thinking. So I will put the answer in the show notes. You can check it out if you've ever been curious about that. I am Ben Popper, Director of Content here at Stack Overflow. You can always find me on Twitter @BenPopper. You can always reach us podcast@Stack Overflow.com. If you enjoyed the show, please do leave a rating and a review. It really helps. And now I'll throw it over to you just say who you are, what it is you do and where people can find you on the internet if you want to be found.
IO Thank you, Ben. You guys can find me on Twitter @InnoObi and you can find MIT Gov Lab at Twitter @MITgovlab.
LJ And I'm Luke Jordan, and you can find me at @LukeSJordan on Twitter.
BP Awesome. Alright. Well, thanks to both of you for coming on.