Welcome to another episode of QB64 Report, your podcast on QB64 and all things nerdy. I'm Fellippe Heitor, and today we continue with the series of short interviews with the members of our community. Let's hear from Luke, from Australia and learn a little bit of how he became acquainted with computers.
🐝 QB64 is a modern BASIC + OpenGL language that retains QuickBASIC 4.5/QBasic compatibility. Compile natively for Windows, Linux and macOS.
• Get it from https://www.qb64.org.
• Find us also at http://discord.qb64.org.
Welcome to another episode of QB64 Report, your podcast on QB64 and all things nerdy. I'm Fellippe Heitor, and today we continue with the series of short interviews with the members of our community. Let's hear from Luke, from Australia and learn a little bit of how he became acquainted with computers. It's such a fun story. And it's also fun to realize how asking the same questions to people will always lead to such interesting and varied conversations. Without further ado, let's get to it. Hello, Luke.Luke:
Hello. good morning.Fellippe:
Good morning. We got to know people around the community we built around QB64, sometimes superficially, but mostly from their contributions and whatever they post. But we never really get to know about the person. And I don't want to know anything personal of course, except for things like, when did you start programming, Luke?Luke:
Ah, so perhaps around the age of early 12 or 13. I have an old laptop here. Old as in, old as me, runs windows 3.1, and mucking around I found this thing called QBasic in the background and wondered what the heck that was. Lots of research later and I finally managed to make all the classics, you know, input a number, that kind of thing. The first significant, or non-trivial, program I remember writing, it was a screensaver, actually it would cycle through, I don't know, maybe 200 times and putting randomly colored circles level of screen, then pause for a few seconds and rotate the palette. I should actually try to recreate that one day. That was my introduction to programming.Fellippe:
You didn't have formal education in programming as a kid. It was not something in the school program or something like that. It was just out of curiosity.Luke:
Right. The first formal class, I suppose I took would have been late high school, by the time I felt pretty confident working with computers and programming them in general. I mean, as much as a 15 year old can feel confident about something. Um, but no, largely self-taught.Fellippe:
And well, if you were 12 years old and found QBasic by accident, or by sheer luck, that was your first language. That was your first contact with programming and with BASIC at the same time.Luke:
I suppose I'd written maybe a line or two of Windows or DOS batch files, whatever they're called. Don't ask me to write a lot of that now, but, so practically yes, QBasic first experience with programming and first contact with BASIC.Fellippe:
And from the depths of old Windows to finding QB64, how did you come across it?Luke:
I was thinking about this and I realized I can't quite remember, but I suspect it would have just been through doing research, reading forum posts and seeing something called QB64 mentioned. Not long after I would actually get a computer that had Windows XP on it, so I could run things that were made after 1995. I remember the transition being pretty seamless. I just sort of went from one to the other and there was never really any question about whether or not it was a bad idea or not.Fellippe:
And what about joining the community?Luke:
When I accidentally set the QB64 window size to 200 characters wide, I think, or 200 characters high, I had to post to ask how to reset the size. If you open QB64 and you notice that the display dialogue is not centered it's instead on the top left, I'm the reason why. That used to be centered until, until Rob realized that if somebody sets it really big, I can't set it back again.Fellippe:
Yeah, there's a comment in that section of the source code that says if people ever do things like setting it too high. So that was you, that people was you.Luke:
Oh, goodness. I didn't realize I went down in history like that, but yes.Fellippe:
So from a kid who found QBasic and then eventually found QB64 and made Rob put the options dialogue in a specific position on the IDE, how did you become a contributor to QB64 itself?Luke:
Ah, that's probably a good question. I should have actually gone and checked for my first commit that I've made to the repository. Maybe we'll do it after and put it in the show's notes or something. From memory was simply that I've found something that particularly annoyed me, and the source was there, and I thought let's go fix this. And that was it. It might've actually been adding a new command, maybe, but one of the really simple ones may be the one that gives you the present working directory, or the current working directory. I think that would be pretty early in the process, but it was really driven just by personal need for something, and realization that I could do that.Fellippe:
But right now you are the top brain behind whatever we do to QB64. You are my helper when I break things, I always run to you, sometimes begging for forgiveness. "I broke this", but you were a basic programmer back then, and then eventually you got introduction to other languages. Where did your advanced level start?Luke:
Perhaps contrary to what many people would do, so many people would probably start behind over the languages and slowly work their way through maybe Python and C, then something else, my first experience to other languages was actually x86 assembly. Because if you wanted to use the mouse in QBasic, you had to do assembly programming. So I got reasonable somewhat semi-proficient in using the built in debug assembler in DOS, and which was absolute pain to use it. So that was sort of introduction to the very, very low level. And from there it's, wasn't too hard to start picking up C, just needed for working on QB64. So it all sort of lined up around the same time. I don't remember the exact order of the things. This is all loss to history at this point. But somewhere I started working with Python as well, to the point where I was actually in a competition at the end of high school. My submissions were a combination of QB64, and Python and just Linux shell script. So exactly what order things came in, like I said, I don't quite remember, but it was more or less coming up from the very, very low level to higher and higher modern languages.Fellippe:
And it didn't end up being just a hobby or something fun to do over the weekends, right?Luke:
Right. So I, I went to uni to study physics, actually. I have half a physics degree, as like to call it. Half in the sense that I got to the second year subjects. And then decided actually, oh, I, I quite like playing with computers. I should make that my degree. And, uh, that's what I do for a job.Fellippe:
That's so cool. So you work with programming nowadays. What do you use programming for?Luke:
In the current job I have, I spent a lot of time making sure computers are running properly. But in that there's a lot of incidental programming as well. So I need a tool that does something. Maybe somebody else would spend two hours clicking on a button 50 times. I'm going to write a script to automate that. It probably took me three hours to write the script to automate something that would have taken two hours manually, but it's a satisfaction not having to do it manually.Fellippe:
It's just fun.Luke:
So what have you been working on these days, programming wise?Luke:
My sort of dedication to programming goes in cycles as I have the free time. But when I do people have almost certainly probably heard me talk about L-BASIC, which is a BASIC interpreter slash compiler thingy I'm working on. The idea is to have a language that is like QB64, just a bit less rough around the edges with none of that compatibility nonsense. So that's the long running passion project, suppose you can call it. Maybe it'll go somewhere one day, but at the moment, that's just, rewrite the same things over and over again until I'm happy with them. Just makes for a very slow development cycle. So I don't really ever do graphic stuff. I'm very much about text processing and similar, but I did have an idea for a game a couple of months back, and I thought I could do that. Just a little 2d scroller, kind of like Dig Dug, the arcade game, maybe a bit more complicated with, we pick up things on big around, and you have to go solve them or something. So I want to try and implement that soon, one day. I think the hardest part will be getting graphics assets for it, because I don't want to have to draw anything myself. I think that would end badly if I were to try to do art.Fellippe:
So you mentioned Python, you mentioned C++, what other languages do you also work with?Luke:
Disclaimer: I actually don't know a lot of C++. Don't ask me to write C++, I can't do it. I can write pure C, but don't ask me anything about classes in C++ or templates or anything like that. What else can I write on? So Java, I've actually spent some time teaching Java as part of a course past few months. I'm reasonably proficient there. We've got Python, um, PHP, I spent some time running PHP professionally as well. So mainly with web development. Bit of the fancy languages, so Haskell, which is a functional language, which is much more mathematically oriented. Once you understand that, it's very nice to appreciate. The only problem is it's very hard to do anything practical on this. I don't use it awfully that much. It's more just of a, oh, and by the way, I know Haskell" bragging rights.Fellippe:
More of a flex.Luke:
Exactly. That's the word I'm looking for. Exactly. but now practically, I think that sort of covers all the big ones, Python, Java, C, various dialects of BASIC. You pick up bits and pieces of everything as you go along, once you know, five languages it's not that hard to learn another one.Fellippe:
The saying goes that people who have been exposed to BASIC as a first language are broken for life. Where do you stand on that?Luke:
So I realize it's a, a bit of a joke comment. So when the comment was made, the idea of basic was, it was your grandmother's basic. So it was maybe two little variable names, and line numbers mandatory. It wasn't even that you wrote the word GOTO, it was just that if you want to write an IF statement IF X THEN 23, and so you're jumping all over the place, there's no real structure to any of the programs you write. And that's what the comment was written about, really. People who are exposed to that kind of BASIC are ruined for life. That's not the BASIC we have, right? All the control structures, we have have analogs in all the other big programming languages. So we have WHILE loops, DO loops, multiline conditionals, select case or switch statements, depending on what language you're in. So I really don't think that's relevant anymore. I think it's wrong to continue to repeat that as some sort of truism that is true, no matter the context. That said it, it is a little strange, I think, for anybody who learns basic and then has to go there, one of the more tech oriented languages, because we don't have anything like that. Uh, but that's, it's not like you have to unlearn anything. It's just more stuff to that.Fellippe:
You are our head developer right now at QB64. I program the fancy stuff, the fancy good looking stuff. And then you come with the magical bits. I sometimes even fail to understand. So thank you for that. Where do you see QB64 going?Luke:
I think the, the foundational stuff of the graphics, all the things a beginner would touch, I think those are really strong. One area where it lacks is just the general polish of a lot of the runtime features. Anybody who's used it will know there are several paper cuts, I mean, things that don't really stop you from doing good work, but are occasionally annoying. And if you have a lot of paper cups that gets quite painful. So at internal level, the code that's responsible for actually taking what you're drawing on screen, so what your program is drawing, and converting that to something that can be displayed by the operating system and by OpenGL, a lot of that I think needs some love and attention. It's a large source of bugs and just annoyances in the language. So I think at some point there needs to be a focus on rewriting that. Maybe not rewriting, but tending to it and improving it.Fellippe:
I'm very happy that we had the chance to have this conversation, Luke, thank you so much for taking the time.Luke:
That's been my pleasure. You're always good to talk to.Fellippe:
See you around.Luke:
That was QB64 Report. Thank you for listening, and catch you next time. Bye-bye.