Paula Gearon 0:00 Just before the company, that built the database in the first place, was closed down, I was asked if I could introduce a feature, which was going to provide semantics on the graph. Something called the web ontology language, and reasoning from that. And this was where computers are actually trying to pretend that they can think. In that process of trying to do that, I learned that not many people were doing this around the world at that time.
Tim Bourguignon 0:37 Hello, and welcome to developer's journey, the podcast, bringing you the making of stories of successful software developers, to help you on your upcoming journey. My name is Timothée Bourguignon, and on this episode 128, I receive Paula Gearon. Paula has been a software engineer for over 25 years. She finds herself at home in the most technical parts of a system. Among many other activities, you can find her active on open source projects, as well as helping lead the washington DC chapter of Women Who Code. Paula, welcome to dev journey.
Paula Gearon 1:13 Thank you.
Tim Bourguignon 1:14 Oh, it's my very pleasure has been long time in the making. I'm so happy to finally talk to you. So, Paul, as you know, the show exists to help listeners understand what your story look like, and imagine how to shape their own future. So let's go back to your beginning, shall we? Where would you place the stars of your developer's journey,
Paula Gearon 1:32 I think possibly the beginning for me came from my father's love for science fiction, he would get me to watch it with him when I was very young. And at the time, we lived in New Zealand. And so I was being taken through things like Star Trek and space 1999. And the Thunderbirds, and I love these things. But then when just before I started school, we moved back to Australia. And I really had all of that taken away from me, with the exception of just a couple of shows, and one of them was Doctor Who. And I remember, there was an episode of the face of fear, where they were referring to this thing called a computer. And I asked my father, you know, what is a computer. And he was still quite young at the time. And he explained it as a machine that that could think. And this completely intrigued me. And I was obsessed with him thereafter, he was an engineer. And he explained to me that when he gone through university, they had this computer, which took up two rooms, and he programmed it with punch cards, and it could count up to, I think it was like a 24 bit number at the time. And I didn't really understand much of this at all. But I was still fascinated with it. And I was for many, many years. And so I didn't have any kind of access to computers. But whenever I heard anything about them, or you know, had the possibility of maybe seeing one or interacting with one, then I jumped on whenever I could. And so that's where I think it came from for me. A few years later, my mother gave me a present it was a in Australia, the brand is Tandy, I think it's equivalent to RadioShack. And it was an electronics kit, where it had a 65 or two processor on it. A big keypad, which was really just buttons, we in an array where you could connect the the wires up to the chip, and to a little bit of memory that they had there. There was some LEDs, it was an eight segment display, there was a little clock chip, and it came with a book which showed you how to wire the thing up, which I did. And then you ran some programs on it to see whether it was working. And they had a little bit of memory in there with a couple of programs built in. And once I had everything going then they showed you how to how to program and you would figure out each step being a hex code which represented an instruction. And you would press that and press another key which incremented the address and loaded the instruction and went through like this. And you know that way I learned how to do arithmetic with it. You know how to add numbers and multiply and then do loops and jumps and things like that. And the whole time I was feeling completely ripped off that this wasn't a real computer. I expected a keyboard on the screen. And that I look back on and think what did I do with it that thing must be worth a fortune today, but as a result, my first programming language was actually 6502 assembly. And I don't think many people are exposed to computers that way. And the following year, the school nearby I went to a small Catholic school. But the the state school nearby had a couple of Apple computers and we were invited to go over once every couple of weeks. we'd walk across the street, all hand in hand as a class and we We were allowed to interact with this computer and one child from the class would get to type in and the teacher from the state school would suggest the next thing to type and to go on. And this way we were exposed to Apple logo. And that was essentially the only interaction I had with the computer. I don't think I ever got a chance to type on the keyboard. But yeah, that is awesome.
Tim Bourguignon 5:25 I guess that's, that's miles away from this machine that can think description that your father gave you.
Paula Gearon 5:30 That's quite true. And I think the machine that can think really directed me for many years thereafter, I was still searching for that and exploring it. But in the meantime, I was still obsessed with them, I still wanted to know about, I was sent off to boarding school, where they had a computer room, a computer lab, and they'd had Apple computers in there, which was still there, but they had just made an investment to fill the lab with Commodore 60 fours. I was I asked if I could borrow the manual to it. And this included the instructions for writing basic on the Commodore. And I absorbed that and then started exploring what I could do, there was some all the interesting things involved sprites and music and, and all of the things which you needed to access memory registers directly within the Commodore manual didn't describe any of those things. It only described how to use basic. And it didn't, it didn't have any of the specifications on how sprites worked, or on how to interact with the sound chips or anything like so other people would look at magazines and have information on how to do interesting things. And I didn't know that. But at the same time, I knew a lot more about the structure of of programming and how to make the computer do things. Because I've been exploring the language, were you already
Tim Bourguignon 6:51 sure that this would be your future?
Paula Gearon 6:53 Initially, I don't know, I was simply fascinated with it and wanted to learn as much about them as I could, I was very good at math and sciences. And I think I liked learning how the world worked. And I wanted to learn how these computer things work. So I kept that as much as I could. So after, after a couple of years, my my grandparents gave me an Atari computer. For my birthday, it was a 600 XL, which in those days was not extraordinarily powerful, but it did so much more than anything I've seen before. And it gave you access to sound and to graphics, through basic. And so I learned that manual and I started doing a lot more. And at one point, I was given a book on of games where you'd read through, and it would have the instructions of, you know, here's the listing of the game, if you type this in perfectly and you don't have any typos
Tim Bourguignon 7:52 which never happened,
Paula Gearon 7:55 then it would, then you'd get a game out of it. And that taught me a little bit about debugging. because inevitably, there was a typo, and you'd have to learn what the program was doing in the process. But one of the most fascinating things mean was that there was this one game which drew a circle on the screen, and the drawing primitives on the Atari were to set a dot. And to draw a line, there was no way to draw a circle. And yet he someone was drawing a circle. And I was confused as to how they could do this. And I looked in the code, and they're calling this function called cause or cosine. And funnily enough, I had seen on some of the older students at school, they had these scientific calculators with cause and sign and Dan. And I was wondering, Well, you know, somehow this gets me from straight lines to curves. And then I started learning in technical drawing how to draw things like circles in an isometric view, where the horizontal axis is, is angled at 30 degrees. And I got it into my head that I wanted to draw this on a computer. I didn't even know how to draw a circle at that point. And so I went home, and I started typing in sine and cause and tan. Actually, it wasn't built in. But dad explained to me that it was a sign of a cause. And I would say I was typing these in and plotting them out on the screen and trying to figure out how this could possibly relate to drawing a circle. And I did so many different combinations. And I played with it so long. And then finally lying in bed one day, one evening, I put it together, and I realized what was going on. And I I thought I can do this. And the next day, I got up and I was drawing circles. And my father had a challenge of trying to draw the ABC logo. This is ABC in Australia. It's a sine wave, which goes around on three cycles around a circle and it looks a little bit like a bow tie. And I was able to do that and I started thinking right I can do this. Maybe I'd be able to figure out out how to do this isometric circle. And again, I was lying in bed and I, I thought it through and I convinced myself that I knew how to do that. And the next day, it was the first time I ever typed in something for the first time that just worked. And I was so immensely proud of myself for this. And nobody else seemed to care.
Tim Bourguignon 10:23 Cheer for the lying in bed and, and finding solutions or going for a walk and finding solutions or go home being in the bathroom on the shower and, and finding solutions. That's always where we seem to find solutions
Paula Gearon 10:35 that works for me today. Yeah. But it also taught me something else, in retrospect, that I haven't realized is that computers, this great interactive way to, to work with something with an idea or a concept. And you can think of something very quickly get feedback. And as a result, if you're focused on on something and motivated, you can learn very effectively, by experimenting and playing with with something until it it makes sense to you. And I found that that that's work many times for me. And today, you know, I do a lot of coding at a repple, the read eval print loop that a number of languages have where you're typing something in and you immediately get a get a result back. And you can build an entire program that way before saving it. And this interactive approach can really help you think think certain things through and I was finding, you know, from the middle of high school that this this was really helpful. Because I mean, the next year, they started teaching us trigonometry at school, and I thought, oh, I've done this. And they started teaching us a particular way. And I thought, okay, I can see how that works. But this seems really confusing. If I didn't already understand it. I'm not sure I'd get it.
Tim Bourguignon 11:56 That is so true. I started doing some some unity programming with my son a few a few months ago. And I had to cram the whole trigonometry my brain again. and applying it right away to this game was so obvious. It made everything so obvious. And I was wondering, why did I struggle with this in school? No, no wonder, it's so easy if you apply it that way. But if you learn it in the theory, like like, I got it back then it's nightmare. It just doesn't make sense.
Paula Gearon 12:27 Yeah, there's so so often, it depends on how school tries to present something to us. But if we can encounter it in a way that makes sense. In my case, it was sheer brute force learning until I figured it out. But what if you can figure something like this out in a way that that made sense, it will all come together for you. And I found that if you have a reason to do it, in my particular case, I really wanted to draw this subject. You know, having that goal really drove me through it, because I had a lot of friends who said, Look, you you get this, can you? Can you explain to me how this is working. And I was finding that, that if you didn't have that kind of motivation, it didn't work as well for you. I had that success early on. And so what a couple of years later the school invested in a potter. And I'm not sure why because they didn't use it or anything. But I was fascinated at this thing in the corner of the room. And I asked if I'd be allowed to use it. And they let me borrow the manual. And I realized that it doesn't, it accepted all of these commands, which was sent out the port that spoke to it in ASCII, and it was just text. So like PD was the commander say pen down, or your P one was the commander say get rid of this pen and pick up the next pen, pen one or pen seven or something like that. And then you could put the pen down and then start drawing, you know, I want to go up to pixels or across three pixels and that sort of thing. And so I thought, well, I'm drawing these other things, perhaps I can do this on the plotter. And so I figured out how to take what I had been doing. And instead of putting things on the screen, I was turning it into these commands for the plotter. And sure enough, I was able to draw things and then impress the graphics teacher who was organizing a young, an inter school competition on technical drawing, including computer drawing and sent me into it. And all of these kids were using AutoCAD and using and that's how they were using the computer to draw things. And I'm here I'm the only one in the room using basic and I was feeling extremely awkward here and everyone else was drawing very technical things. And I'm instead drawing cross sections of objects with mathematical shapes or lots of mathematical things that I discovered or I drew with Fear is a series of cross sections, the so called, again in isometric and things like that. And I was thinking, I'm not doing what everybody else here is doing. And I'm going to be laughed at. And I had people who are observing the the competition going on, same thing, using basic. And I'm like, Oh, no, this is just absolutely the wrong thing. But at the end, when the person from the local university came to, to judge the competition, I was called over. And I was asked to explain how it was that I drawn these things. And of course, I'm very nervous, my hands are shaking. And I'm, I explained that I use this formula, and I vary this parameter, and it created the curve. And I, and each point in the curve, I calculated using this and this trigonometry and, and I did all of that. And he thanked me very much. And then I was given the gold medal. Yeah, it, I think that taught me a lesson about you know, I might not be doing the same thing that everybody else was doing that that's okay. But at the same time, you know, putting yourself out there can be can make it, you can feel embarrassed. But it may or it may work out in the end,
Tim Bourguignon 16:24 you need to have a thick skin sometime. And keep at it even though you hear your essays, and then people commenting and everything. But if you keep at it, and then and stay focused on what you think is right, sometimes it really worked out.
Paula Gearon 16:38 Yeah, yeah. And I mean, when you say what you think is right, sometimes I'm just too naive to know that. That's what I'm doing. There are occasions where I'll say, Well, I'm doing this and someone will question me and I feel very, oh, maybe I shouldn't be doing this. Oftentimes, it works out for me. Um, I think my naivety works in my favor that way.
Tim Bourguignon 17:01 Sounds like and that resonates with the with the last episode with that was Alice, golf was learning how to do some kernel crashes debugging, just because he saw it. Everybody else. Everybody else knew how to do this. She just learned because she thought that was supposed to be learned.
Paula Gearon 17:19 Yeah.
Tim Bourguignon 17:21 That is awesome. Is this something that you've, you've seen in your journey, since then this, this behavior of doing things on a on at first first sight, maybe in an eccentric way. But that makes sense for you. And in the end, give the results that you wanted? And that is really a valid approach?
Paula Gearon 17:43 Yes. With a couple of projects that I've been involved with, I've definitely found that, you know, I didn't know how to do something. So I set off to do it from first principles. And it turned out that I was doing it in a naive way that didn't necessarily use what other people had discovered. But I would end up often I would discover something in the process that allowed me to do new things that other people weren't aware of. So I'm applying some of that right now, in a project that I'm working on at work, there are occasions where I'll try to trust myself to just go out and do do my own thing. And there has to be a balance between that and not reinventing the wheel. But at the same time, when you reinvent the wheel, sometimes you you realize that, you know a Yeah, everyone else was using the octagon, but maybe if I went with a circle, it might work better.
Tim Bourguignon 18:38 But the hot question now is, when should you say enough? I have dug too much in enough in this in this in this direction. Now I need to call it a day and go back to the the other way of doing or when do you have a feeling okay, that I'm almost there, I can still continue digging? Well, I finding this balance. I think you're
Paula Gearon 19:02 right. In that you say you know, this is the hard question. Oftentimes, when it comes to things like this, I love exploring it on my own and I'll spend my own time on it. And I can really get stuck into things that way. When I'm on work time, it's a different matter. And you know, there's there is a need to talk to other people and and to do research and investigate things there. But I like to use my own time if possible to to investigate, you know, avenues where I think maybe I should try something my own way. What I found through my career is that there have been numerous occasions where I've been told that what I'm doing in my own time is interesting and why don't we pay you to do that? But I guess I jumped over a lot if I went straight to that.
Tim Bourguignon 19:56 You don't know your story.
Paula Gearon 19:59 Well, my story Wasn't when I finished school, I went to university, I was still interested in computers. And my father being an engineer, I thought Computer Engineering would be wonderful, because that's computers from the ground up, this has happened seems wired together. But I also like the idea of what you can do with them, which is computer science. And I thought maybe I could do both. And the university I wanted to go to let you do both, but you had to finish or nearly finished the engineering degree, followed by the computer science degree. So I went in, did it engineering, electrical engineering. And, of course, most of my time then was spent on on engineering tasks. Initially, they expose you to everything, a bit of civil engineering and mechanical, and then you start to specialize in electrical power systems and things like that. But I really focused heavily on digital systems. And I found that I was quite good at that, that kind of thing. When it came to electromagnetics, I had to put a lot more effort in. And when I didn't put that effort in I, I failed. But then I found that when I came back and put the effort in, I could actually get a good mark. But I was so used to getting easy grades for for these other things that I you know, the engineering, the really hard engineering was what, where I really had to struggle on where I want how to do work. And I was, I found it a little strange, because when it came to programming, I found those things easy. And my peers who were doing well, in subjects like electromagnetic and control theory, they were struggling with the programming, and I didn't see how that was possible. But I made it through we had a minimum of minimum number of computer science subjects. But I did have a few where I learned some of the basics, like what a linked list is and how to do bubblesort, I learned about modeling for databases, and they made us do a semester of that before learning how to use the database. So it's very theoretically oriented course. But that turned out to be extremely useful and needs to come. And then by the end of it, I was finding that I was tired, I my marks had started to drop, I did get my dissertation in my, my thesis was on neural networks. But my other subjects were starting to drop off, and I spoke to counseling at the university, and they said you should take some time off. So that's what I did. Part of an engineering degree is that you need to get work experience. And in Australia work experience must be paid. So I was applying for jobs during the middle of a recession. And it was almost impossible to find him. And one day at my cousin's house, they asked about how the degree was going. And I was saying, Well, I'm nearly done. But I need to find this work experience. And they said, Well, our neighbor here who come over for coffee. He's an engineer, he could maybe he has something going. And he was a contractor who worked from home. And he was a civil engineer. And he said, Yes, sure, come over, I'm sure I can find something. And this was how I started to learn how to finally use AutoCAD. And in that process, I learned that the software that he was using, he was using software for backwater drainage and water supply, stormwater drainage, and then how to do like he wants to put a road through somewhere and it would take the surveyors information and figure out what you need to cut this much here and you need to build up there and every cubic meter of soil costs to be moved. And so you know how you minimize that. And the software was quite interesting. And it turned out that the company writing that software was only a couple of couple of suburbs over and they were visiting one day just because the the owner of that company was friendly with this with the sky. And Don explained that he was running a little short on work and didn't think he had much more for me and at the software company, did they perhaps have something for me? And the owner of that john said, Yeah, yeah, you can, we could find something I'm sure and invited me to show up then the following week. That was my first job and it was part time. And then when I took the time off university, I went and worked there full time for six months, and then came back to finish my last few subjects part time while I continued to work full time there, and this was probably one of the most important things In my career, because there was a software engineer there, someone who had an actual computer science degree, who was just his name is David Knight piece. And he was obsessed with computers. He loved this technology. And he said as much of his time as possible, learning it. And not only did he love to learn it, he loved to, to share what he'd learned with other people. And in this process, he was explaining to me, the operation of compilers and how linkers worked. And, you know, the link would go through the object and go through the library, and it would find things and rewrite addresses as it brought things into memory. It explained how the kernel worked, what memory mapping of files meant, and how that interacted with the with the kernel and with swapping and all of this and would show me example code, and then set little exercises for me to try exploring these things for myself. At the time, technology was, of course, expanding the power PC chips, was suddenly released, they'd been talked about for better, but it was a a young, a consortium between I think it was IBM and Intel know, IBM, and apple and Motorola to build these new chips. And Apple started using them in their power, power PC series of computers. And IBM, were using them in their machines. And, you know, they were quite an interesting architecture at the time, not that I knew much about that. But when they were first released, David ordered the manuals for them. And this box showed up full of manuals. And they even included a chip, it was embedded in acrylic, and I'm sure it was one which didn't test correctly. But it was, he was so excited about it. And the next day, he came in, and he almost read the first book, and he written some simple programs in power assembly, and he was looking for an emulator so that he could try to run these programs. And this is the kind of learner that he wants. And he always encouraged me to do the same. So like sometimes during our lunch hours, we'd go to a local bookstore, and he would say, you should get this book, and you should get that book and you should look read the. And so that's what I would do. And I, I was there for a couple of years before finally realizing that as a graduate engineer, I could make a lot more money than I was making. And the perhaps I should move on. So by the time I left, I was still thinking, look, I don't know much about this computer science or how computers work, you know, beyond the hardware level. But you know, maybe I can make a go of it as a as a professional programmer, I applied to the van It was a corporation owned by the Queensland Government for supplying electricity. And in my job interview, I likened electricity supply to water supply, because I've been working on it software for my previous employer, which did things like water supply and water drainage and things like that. And when I made this analogy, the chief engineer who was the who's in the room, at the time, told me later that that really stood out to him. And he really liked that. And that's what got me the job. And that's something which I think it's also played out for me later on is like drawing connections and analogies between things is a really useful skill. It's really great for teaching people and it can be really useful for just learning something yourself, that got me into that role. And they wanted me to maintain this software, which would try to simulate what was going on with them with all of the generation units around the state, so that they could like use it for a number of things, but they did to forecast given weather and expected load, then how much coal they needed to buy, and therefore, you know, develop their coal contracts. You know, how could we, you know, there was also a water storage facility. So during the day, or during the night, when electricity was was cheap, and they needed to keep the baseload units running, they could pump water uphill, and then run it back downhill again during the day when they needed it. How can you maximize that so that you won't burn as little coal as possible and that kind of thing. So a lot a lot there about the whole electricity system, but also back doing these simulations or Monte Carlo simulation based at the same time, I was kind of left to my own devices a lot and I was given some options. Like what was my role in the morning to collect reports from people power stations all over the state to find out which units were being were in maintenance and which ones were were on restricted duty, and which ones who could operate full time and things like this. And to put together a short report everyday, which totaled up these numbers, you know, I was nice and quick edited, taught me to give me a lot of practice with arithmetic in my head, because I found that was faster than, than typing it into the calculator, I started thinking surely I can automate a lot of this because many the reports were coming in, people were going into an antiquated system and typing things in over telnet. But it would get dumped into text files. And every power station had a different format file. But I figured I could read these and put them together and automate an email going out. And on top of that, I could build a web page with the report in it. And I didn't know a lot about web pages at that point. But I figured how hard could it be. And but that's going to need a web server. And so I started looking into web servers. And David taught me and I was still friends with David, he taught me a little bit about ngannou software, and also a lot of the open source software, which is available out there at the time. One of them was a web server called w n, which isn't used much anymore, everything went to Apache over time. But I downloaded this web server, and I set it up on our local on one of our local machines and, and I started generating this file and putting it in there. And when I didn't know I was supposed to be doing other work at the time, but no one stopped me. So I did it. And I told my manager about it and told some other people. And they were all extremely excited that we had a web server up and running, because that was a big deal at the time. And the the organization had a new CEO in it. And he started saying, look, we, we need to get with the times, we need web services, we need web pages, we need our presence on the internet. And here I was doing it that I think that helped my reputation in that little area. I kept on taking on these other little jobs and and you know, I do the job I was supposed to do some of the time. And then I do whatever I felt like the rest of the time. And I think working for government gave me some of that flexibility. And I was very lucky that nobody seemed to notice. And they're always very pleased when I when I had something to show at the end of it.
Tim Bourguignon 32:45 Is it something that works outside of government jobs? Well,
Paula Gearon 32:49 you have to be careful because outside of government jobs, you have clients, you have a need to, to meet targets, you can't just go off and do something unrelated and hope that's going to work. So I've never really tried it in a commercial setting. The problem in government is that you often need to do something involving certain resources. And you can't get those until somebody's got time to, you know, to do that for you. And and you end up in a holding pattern on a whole lot of things all at once. And you know, what am I going to do next. And so I would find jobs like this, I found working for government extremely frustrating this way. Because I'd be trying to make that move for the next step. And they'll be impediments. And when I go and try to cut through the red tape, I get yelled at for my own group and manager, we're all good. But you know, I'd have to interact with the IT staff and they hated the fact that I was doing my own thing I was I was tasked with checking with testing the performance of numerous machines so that we could get a new machine for simulation I was doing so that was fun. Because all these companies were sending us these these really big servers, and I got to run my software on each of them. And test how you know how fast each each of them would do the kind of workload we had. And, you know, that was, you know, we finally chose a particular system. And then I young, I was not allowed then to use it because the IT department was supposed to be in charge of that. But then the guy who came on from the IT department realized that I kept on calling him too frequently for things and he just gave me the password. And we never called them again.
Tim Bourguignon 34:42 That's a nice way to get the password.
Paula Gearon 34:45 And the funny thing was they're actually trying to get me out of a software engineering role. I was one of my tasks was to port the software from this cost based system that it had been built for me to a new price based system, which had just been created for the Australian electricity market, and Queensland was about to come on board with, you know, with entering this market. And it changed the scheduling of units. And I was expected to, you know, to change all of the software by myself, it's my first real role to be able to handle this new marketplace. And so I had to learn the manual. And in the end, it turned out, I was one of the only people that ever read the manual several inches thick. And, I mean, there were, the other engineers I worked with had also read it, but they all ended up being moved into, into roles where they were operating in the market. So it was all commodities trading, where the commodity is electricity supply, the market operated on a half hourly basis, and it was incredibly stressful, apparently. And, you know, as as this thing was developing, and they were, they were grooming me for that I was like, I don't want to do it. So when they announced that they were going to break up the organization into into smaller organizations, which manage different power stations around the state, I took that as my opportunity to take on another role that I've seen advertised, coincidentally enough, it was for a company that had been started by two people who used to work for the same electricity supply organization, and they'd gone off to create digital power meters, among other things, but they're an electronics manufacturer. And I thought, you know, I've been modeling what's going on with the power system, but, and I got to visit power stations, but you know, it'd be great to actually work with electronics again, I got in there. And they wanted me write the software as a UI for interacting with the, with the devices and Okay, so I learned something new there. And I was the only person doing that kind of software, all the other engineers were actually doing engineering. Through my course, there, I discovered that one of the partners in the company was actually a raging receptionist. He hired a somebody who was chief of sales. And it turned out he was just as bad and they were interacting a lot with each other, the office manager and I choose one of my, my closest friends at the time, we just we would talk about the sorts of things we were hearing, and it was just beyond the pile. So when I, when a friend offered me a role at his company, I jumped at it to get out of there. And it was a big pay jump as well. But my friend stayed and a couple of years later she she reported them to the, to the fair trade in in Queensland, and that company was fined a lot of money for the way that they've been treating their female staff. So I have a number of very unpleasant stories of the things that I heard while I was there. But then, you know, this, this new company was a family company with the friend that I'd gone to. And this time I was working now with databases. And all of that little early modeling work that I've done at university that suddenly started to come out. And I was able to work with this. But unfortunately, I was being asked to write everything in Visual Basic for Applications. But that was really just manipulating the front end, most of the work ended up being in SQL, and then starting to work out how to minimize the amount of transfer between the VBA application and the servers, which were, you know, which were holding all of the real data, so that it wasn't as much VBA as I thought. And then I started running a lot of things in c++ and running modules, which I could then call from VBA. And that did the work. And so I had a lot of fun with, you know, in that kind of environment because again, I was giving a lot of flexibility. After just 18 months there, they kept missing payroll, because, you know, it was a struggle as a small company. So I, I moved again, this time to take on the c++ role. We were writing the code for controlling the young passenger information displays in the Melbourne Melbourne rail network. And I was brought in as a team lead this time. And that worked out because I'd spent a lot of time as a as an individual contributor, but really managing my own projects and working with others. But oftentimes I was very independent. With this is my first time where I was not only directing what we should be doing but also asking others to to follow my lead. So Right, will I need you to do this and, you know, figuring out where people weren't meeting the tasks that I needed that we needed in order to accomplish our tasks together. And so that was an interesting sort of challenge for me, I was kind of thrown in the deep end there. And the reason I was given the role was because of at that point, I had a deep knowledge of c++, I'd had a friend, when I was still at university, I had a friend, call me up once and say, hey, we've got this, this job where we need a computer being babysat overnight while it's doing these large billing rounds. And all you have to do is sit there. And if anything goes wrong, you call this number. And so I said, Sure, I'll do that. And I would be there. I'd be there all night. And during that time, I started reading books. And we, you know, every couple of pages, I look up to make sure that things were still running. And then I thought, well, I could really make the most of my time here. And I went and bought the students still, on a student discount, I bought the box set of Borland c++, which came with like 40 floppy disks, or something, a stack of manuals, which were, oh, I don't know, maybe 50 centimeters long, the spines lined up. It was, it was a lot of books. I think the only I didn't read maybe four or five of them, which described the vorlons object, Windows language that there our system for RAM, for programming, Microsoft Windows using using c++, because Microsoft had had their own system, Microsoft foundation classes, and I realized that that was more likely to be the thing to learn. But all the other books I did read, and I knew C from university, but now I'm reading these books on c++. And I was reading the books on templates. And I was reading the books. And I went through and it turned out, they covered the entire spec of c++. And I had nothing but time to read these things. And that's what I did. And it turned out that it really paid off. And so jobs like that particular one, where I was brought in as a lead had nothing to do with my leadership capability. It was entirely to do with the fact that I was Encyclopedia of c++. Now, I don't really know c++ very well anymore. But at the time, I could I can borrow, I can pick up those quiz books. And, you know, how do you answer these problems using c++ templates? And I was quite good at solving.
Tim Bourguignon 42:48 Nobody would recognize c++ anymore. Now it looks like Java or C sharp.
Paula Gearon 42:54 Yeah, I've looked into it recently. So Wow, I would have to go back to the very beginning and read line, much of this. I've been tempted to but I don't really think I would use it, I'll try to learn rust right now. And that's, that's interesting, because it was during that time that I was my team were having memory leaks, and I couldn't find them. So I ended up using some principles from electric fence, which was an open source project, I wrote, I wrote something like this where I could rewrite the, the new operation and delete it so that I could see when I could log when things were being allocated, and D allocated and, and get some sense of who was who was accessing data outside of bounds. And who was failing to, to release that or that that allocated, some finding the memory leaks and that kind of thing. And that was really useful to put that together and to help use it with the team to then you take that as feedback into like, what do we need to work on? Listen, these are new procedures. And this is a, you know, we're finding, okay, this is why this leak occurred, what can we do to prevent that kind of coding error in future. And one of the fascinating things that I've started learning as I've picked up rust is that they've automated a lot of the processes that we came up with, in the language. So the whole you know, who owns things and, you know, releasing things at the end of the end of a function when possible, and trying to keep track of ownership. This is all built into rust. Now, as far more reliable, of course, and I you know, I really liked c++ Plus, but it was dangerous and I really love rust because it has many of the benefits of c++ but it automate all of these things that we desperately needed in the language and we were trying to incorporate simply through processes as opposed to, you know, having something built in for us. My journey, I suppose, would take me from where I described, because I was putting off a lot of it to get to this one job. I started with this company, which was doing contract work, time and materials, mostly. And we took on this one job, which was going to be metadata extraction from lots of unstructured documents, emails, and that sort of thing. It was during the Enron and Xerox time period when those companies had been not reporting things correctly. And then when these massive lawsuits on that were going on, and they needed to go through the millions of documents and emails, just so we were extracting the information, but how did we store it? And employer at the time, David Wood said, You know, I been looking at it, and I think this standard that's just come out called RDF or Resource Description Framework, I think this is the way to do it. And we're gonna, we should try to store things in RDF. And this is a graph Description Framework, and it's used at the time it was being promoted as well to describe metadata. And so trying to put things in, we would were discovering that we couldn't make it scale at all. We tried lots of different databases, lots of different techniques, and nothing we tried would really handle the kind of data we were putting into it, it just slowed right down. And querying was querying it was nearly impossible. So I got this idea one day at lunch. And funnily enough, I had convinced David Wood to employ my old colleague, David make these to come work with us, because I knew David was looking for something new. And so I was working with him once more. And we were would walk down to a food court together. And I had suggested we know the shape of this data. And it doesn't look like anything that these databases are expecting. What if we wrote our own database to hold it? And David said, Well, that would work. And so we took it back to the office and, and we were told, well, nothing else is working. Let's, let's try that. So everybody went off and had a go at different techniques of doing this. And we're all having varying amounts of success. I didn't, my own approach didn't work particularly well. And then we got back in on a Monday morning, and the youngest guy in the office had only just graduated from university had built something with abl trees, which are a binary tree, which was lightning fast and orders of magnitude faster than what anyone else had been able to build. Okay, that's the way we're doing it. So David made peace. And I will then set off pair programming to build this storage structure. And then other teams were built on a query. We're building a query engine and all sorts of things. And a whole company pivoted, and we ended up building this database and creating it and, and yeah, it turned out there weren't many databases like this in the world. In the process, I started learning a lot of computer science, David was directing me again, telling me things that I'd never heard of before, because engineering doesn't teach you this stuff. And we were just starting to do well, just starting to win contracts. And a problem with an investor caused the company to shut down immediately. On Christmas Day, we had just signed a contract that was going to return the first round of investment. But the investor said, Now I don't have confidence that it's going to keep going because I've had trouble with the CEO. And so now I'm going to shut the company down. And yeah, it turned out that all these other companies were looking to buy it in the new year. And that worked out well, because a number of companies approached me and said, Well, we know that a lot of the work you did was, you know, with this database was open source. You've been blogging it, we've been following your blog, why don't we give you this budget that we have for the system, and you can continue working on it. So that's how I started working at home. And then after a year, I was asked that all the assets were sold to any defense contractor here in the United States. And they flew me over to help explain how it was built. And while here a company asked to see me in Chicago, and they offered me a job. So we packed up the family moved to Chicago, and that's how I got to America. But they that didn't work out so well. I wasn't doing the sort of work I thought I would end up doing. And so after a couple of years, I was given the opportunity to go to a nonprofit, which was using the database that I had built the open source portion of it anyway and asked me to come back to working on that full time. So I did that. And then the financial crisis hit. And then another company wanted me for that expertise. And they brought me in as well. And yeah, just before the company built, the database in the first place was closed down, I was asked if I could introduce a feature, which was going to provide semantics on the graph, something called the web ontology language, and reasoning from that. And this was where computers are actually trying to pretend that they can think in that process of trying to do that. I learned that not many people were doing this around the world at the time. And I looking into it, I realized there were a few different approaches to try, but one of them was going to be simpler and scale better. It couldn't do everything, but it could do a lot. And that was rule systems. So a couple of jobs later, I found that I was being asked to build a rule system. So I did. And then when I finished with that job, as a hobby on the side, I was trying to build a rule system, which was going to work on any graph database in the background, I finally ended up at this company, Cisco Systems. And I was doing work there. And just at an off site meeting, where I was meeting my, my colleagues at, at the end of the week, I was just having a chat with my manager. And I showed him this hobby thing I was doing where I was trying to execute rules across any kind of graph database. And he was really excited by this. And he said, Look, can you do this for our company? And I said, Yes, but it's open source, I kind of like it being open source. And he said, that's fine. You can keep it open source. But you know, I don't want you to talk to this, this commercial database that I was talking to, in the back end, can you do? Can you build something yourself and I went, well, the graph database before, I'm sure I can make something small, that'll do the job. It doesn't have to be a full commercial strength database. And so I started doing that, this time using a more modern language than Java, which made me happy. And because in the meantime, I was still getting the occasional contract to work on that open source systems that were people saying, Can you update it? Can you add this feature. And I don't really like working on Java so much anymore, because it feels like a very old language now. So I was building something in, in a system I enjoyed more, the rule system got going and I started talking about it, I went to a conference, one conference about it and then went to another conference about it. And in the meantime, the graph database element of this rule system that I built, it can talk to different graph databases, but built into it to talk to graphs, which are in memory, that started expanding to the point where I thought this is a type system, I should break it out into its own project. And that ended up that's now my job. that's at the heart of a of the software system at Cisco that started winning awards, and doing all sorts of things. And now, this is what I'm talking about when I go out and give technical talks. And, you know, I'm building all of these things from first principles. And over time, I'm meeting people at conferences and reading papers, and I'm seeing how this relates to the work that I've done. But for some of these things, there was no work initially on this, or very little work, or it didn't really apply exactly to the system that I had. And, you know, this is where I'm saying that the whole first principle thing has worked out well for me, because sometimes there were no other systems like that. And, yeah, so I know I've just gone on and on and on.
Tim Bourguignon 53:52 Know that I love how the story of influence full circle going from this first principle going from these machine can that can think and all the way with the when you in retrospect, look at all the building blocks to the story to come back at exactly the same point with with the same money, I love it,
Paula Gearon 54:11 when I want to figure out some way to start bringing in neural networks to this because I haven't worked with them a lot recently. But I mean, this is trying to marry the the traditional rule system and ontology descriptions, from the 1980s of artificial intelligence with modern machine learning. And, you know, if we can do something there, then I think there's an interesting story to tell as well. And that's, that's something that I've been finding, you know, throughout my career is if you can take two things and marry them together. It can don't need to necessarily be doing anything particularly special, just the synergy of of two things which nobody had thought to put together before. can sometimes to something something new. Something interesting
Tim Bourguignon 55:04 would that be the the advice you would give the listeners the the usual end of the show advice to try it and seek those connections between things that are not directly connected? In order to make something out of it?
Paula Gearon 55:17 Yeah, I definitely think so. I mean, I attended a talk once, which was one of the most brilliant technical talks I've ever seen, given by Daniel Spivak were called the deep scholar wizardry. And what he did was he took the how to do arithmetic using a Turing machine, which is a complex thing to do. And he married that up against the paper with someone had shown that the Scala type system was cheering complete. And he then showed you how to build types which could add numbers together. And when you ran the compiler over the code, I think he gave an example of something like three plus five, he built a type, which represented the number three, he built a type, which represented a number five, and he built another type, which represented the addition of the other two and the generated an eight. But it demonstrated so many features of how the Scala type system worked, just to do that thing. And it was really fascinating, just so he took Turing completeness, and how to do arithmetic and cheering systems, marry them together. And it really created this interesting talk on how to, you know, on how to explore the Scala type system. I love it.
Tim Bourguignon 56:27 I love finding the sweet spots as well, that's really awesome. I have one burning question, if I may, what a way to read through the lines of what you said you were kind of a very lonely learner, you kind of seem to enjoy picking up a good book or 20. And and digging into it and going deep. And when you when you discuss with about this colleague, David, I think it was his name, right? He seems to be dor seem to be doing the same? How would that that match up with you leading the DC chapter of Women Who Code nowadays, which is kind of the opposite? How do you bridge those two?
Paula Gearon 57:05 Well, what happened was that I started working remotely in what about 15 years ago now. And because of that, I, I was interacting directly with my my team members, but on a limited basis, because everything's electronic. Over time, I was getting more and more isolated. I wasn't getting the feedback from colleagues about how they'd been exploring some something. And you know, though, discovering new technologies, and they share it with me, and I've discovered things and share with them. And that kind of interaction was missing in my life. And I mentioned this to a friend who said, Well, you could get involved with some women's programming groups. And so I started looking them up. And one of the first ones which which popped up was Women Who Code and they had these meetups going up in DC. And it only takes me one and a half to two hours to get there, depending on traffic. And so I figured No, I could go up and try some of these meetups. And what I discovered was that I was a lot older than many of the people there. And they were struggling with technology, which was a different level to where I was. And I just found that I had something that I was able to share. And you know, when given the opportunity, I would tell people, and they were really interested. And they they kept giving me that feedback. They liked my interaction. And so I tried to get more and more involved. And so these days, I make it a point to try to drive up there at least once a week, until February of this year. And I started running workshops. And I eventually took on my my own meetup through Women Who Code which is about trying to encourage people to do technical or to do public speaking on technical topics.
Tim Bourguignon 59:05 Yeah. Awesome.
Paula Gearon 59:07 It's really cool. I was trying to get involved with with people getting more sociable because where I live now, it's a long way from anything. I've bought this,
Tim Bourguignon 59:17 this has been a roller coaster. And I have the feeling we could have spoken at least three times. No worries, this is really cool. I'm sorry, we have to come to an end. Um, where could the listeners get the rest of your story and and talk to you and ask you more questions about what you spoke about, or maybe what you didn't speak about?
Paula Gearon 59:38 Well, the rest of my story isn't anywhere. You can always talk to me on Twitter. My name is @quoll which is named after the Australian marsupial. That's also my name on GitHub. And that's where I have found the Naga project which is the rules engine that I was talking about, and Isami which is the graph database. And that's where I'm spending the majority of my time these days that Isami runs, you know, it's getting used in Cisco in different places now. But it's all open source, and anyone can use it. And I'm having a lot of fun getting to do my own thing there.
Tim Bourguignon 1:00:16 And then we'll add some links to the show notes. So you can go from there and and click your way into it. And any any talks even though we're in and still in the pandemic, any any talks in your, in your future that you want to speak about,
Paula Gearon 1:00:29 I'm not in my near future, I do have something planned for next year. But it's based on work that I'm implementing at the moment, and you know, running code wins. So as soon as I've got it working, and I'm really happy to show it off, he told me not about, you know, here's the thing that I built, but here are the principles behind what I built and why it's been built this way. Because those principles can be used in lots of different things. And I think that, like David showed me all those years ago, I like sharing the things that I've learned in the hope that you know, it can it can help other people with what they're doing.
Tim Bourguignon 1:01:05 I'm looking forward to being helped in this way. But thank you very much. It's been a blast.
Paula Gearon 1:01:12 Thank you very much.
Tim Bourguignon 1:01:13 And this has been another episode of developer's journey. We will see each other next week, bye. All right, this is Tim from a different time and space with a few comments to make. First, get the most of these developer's journey by subscribing to the podcast with the app of your choice, and get the new episodes automagically, right when the air. The podcast is available on all major platforms. Then, visit our website to find the show notes with all the links mentioned by our guests, the advices they gave us, their book, references and so on. And while you're there, use the comments to continue the discussion with our guests or with me, or reach out on Twitter or LinkedIn. Then a big big THANK YOU to the generous Patreon donors that help me pay the hosting bills. If you have a few coins to spare, please consider a small monthly donation. Every pledge, however small counts. Finally, please do someone a favor, tell them about the show today and help them on their journey.