New Xojo YouTube Tutorial Series

Question: I want to do “this“.
Answer: Use a class to do that.

“I would, but I do not know how to do that.”

My plan is to build a channel around coding with Xojo.

I’m starting out with the basics (using the IDE, explaining OOP, loops, methods, etc) but I’ll work up to a range of complex topics. For instance, I might make a video on implementing binary trees, priority queues, using TextInputCanvas, etc.


Some of us have been around for a LONG time - say IBM 7094 era. As such, many languages have passed under the bridge. It’s a feature and a bug. It’s a feature because the basic idea of getting data in, doing something with the data (user input) and getting the result out, along with various flow controls, is understood. It’s a bug in that one gets befuddled trying to recall a particular syntax detail.

And then there’s the vocabulary. I clearly know what a text field is. But TextInputCanvas sounds a bit exotic - material for a tent, or an awning for a trailer.

So the stumbling block for me is understanding the terms in relation to what I already know. For some languages it’s a “label” vs textfield - two different objects. For another, it’s static text (i.e. label) vs editable text - same object, two property settings.

And then you throw in OOP structure and it seems to add SOOO much overhead. I understand all about the advantages with big multiprogrammer projects. But for my “hobby” programs, I see lines and lines of code just to do one little thing.

My point is, it’s great to orient your instruction to “beginners”. But I’m guessing there are a few of us who could use a little, "That was how it was done in …(FORTRAN, COBOL, PL/1, PASCAL, Various versions of BASIC, PYTHON, C, etc.). This is how you do the same thing in Xojo… Not asking for side by side code statements. More focus on creating similar objects.

Another area is setting up the development envirionment with an eye towards the inevitable upgrades. For Example, how you organize your files/folders to hold the XOJO App, the progject files, the MB plug-ins, other third party plug-ins or objects, and how an upgrade (XOJO, MB, etc.) should be managed so you don’t end up with a lot of out-of-date, elements hanging around.

Here’s one example of this vs that. In the database Panorama (Mac), if you wanted a window and some of it’s elements to expand in proportion to the window size was relatively easy to specify what was and wasn’t allowed to grow. Maybe that’s automatic in XOJO by clicking a checkbox in an object’s properties?

I wonder if it would be useful, somewhere along your course, to take developed program with lots of elements (lists, graphics, text, I/O, report printing (field layout on printed page, or .pdf) and compare it to how you’d accomplish the same thing with XOJO tools.

There was a time with experience counted for something. These days it sort of gets in the way because of all the “unlearning” that has to happen.

1 Like

The wholesale renaming for API 2 in Xojo kind of added to that kind of thins even foe Xojo users!

BTW Xojo (well REALBasic) used to call the Label Control StaticText… I still name label controls NameST where ST stands for StaticText!

[quote]And then you throw in OOP structure and it seems to add SOOO much overhead. I understand all about the advantages with big multiprogrammer projects. But for my “hobby” programs, I see lines and lines of code just to do one little thing.

It did take awhile to get used to, but in the long run, OOP even helps those not writing code for sale… You tend to produce more reusable and easier to modify code.

Beside OOP the thing that took getting used to was event driven coding… But one of the proprietary languages I used had a look of place to hook-in code, and that was essentially event driven programming.

Before I stared with Xojo I had code BASIC and FORTRAN in the 70s, PASCAL in the 80’s along with a some specialized and proprietary languages… None were OOP so when I stated with RB I had to learn that on my own with the help of the (then) REALBASIC mailing list called teh NUG (Network User Group)

I have to say when I was learning RB I did not feel that way. My previous programing experience was helpful, even though I had to learn a different way of organizing things with OOP. Figuring out how to use classes and inheritance efficiently did take a while.


Actual tutorial is for Newbie.

Comparisons for long time programmers who knew more than one Language is a differetn target.

Doing so will be boring for the former target.

Nota: I understand you: I started to use computers in the early 80s (may 1981).

I re-read your post.

OK. I do not have (most of the time) the problems you describe: I am able to mentally translate what is said to what I know (and back). When I have a problem, I checked with the program.

When I want to buy a book, I stop immediately because each and every books takes a number of chapters to describe what basic things are: integer, strings, etc.

These exists everywhere. And when there is a difference, I only have to look at the Language Reference supplyed with the Development Environment to get it.

But, that is me. Others can react / think differently / may need that.

Now, as an oldster (both in age and experience in computing), what I need is examples of the latest new technologies: example is Class. I understand the idea, but not how to implement it / where and How to use it.

That is what I need then most.

At last, I only need someont to tell me: “Do not use GoTO; you always can do what you want without it.”
Telling me GoTO is evil is not welcome: I do not need nor care to know that. All I need to know is I can work without it.

Another example:
Telling me I++ is far better than i = i + 1.
I do not care, this is wasting my time. Oh; if Xojo implement that, all I need is an entry in the LManguage Reference with a syntax use example. Everything else is garbage.

As I already wrote, YMMV.

This is a great idea!!

I do have a suggestion for a video lesson. Every video or printed lesson or explanation I’ve seen regarding the use of methods that return a value use more complex classes (IE Dictionary) to demonstrate their use. If you don’t have that class down, it makes the lesson difficult to learn.

I recommend a SIMPLE lesson. For example, a method that accepts 2 numbers from the main program, adds them together and returns that value to the main program. The idea is to learn how to structure the use of the method.

Looking forward to your video series!

< Scott Baker >


Some great feedback here - thank you.

I’m hoping I can address both @Scott_Baker and @Paul_Chance in this endeavour. I’m starting out with a “for newcomers” series but I plan (quite probably in tandem) to have some “code with me” videos where I will solve a problem (perhaps an algorithm) or demo a project I’m working on and dive into how I solve certain issues. Things like how I manage my code with external classes, Git, modules, etc.


@Scott_Baker FWIW: Beginner's Guide To Xojo Methods until @GarryPettet comes up with a movie tutorial for it :wink:


Some of the mindset depends on your experience. In my case, I ended up for as a “forensic” programmer. I’d be given code someone else wrote, that wasn’t working. Of course there was no documentation, and I’d follow the logic, see where it was broken, and make it work. That’s not the same as simply fixing compile errors.

With that view, I’d much rather see i = i + 1, than i++ because the former seems more specific as to intent. I don’t care that one took a few more keystrokes. Also - this “bundlling code” with the object is okay as long as there’s a style standard. I’m considering the, “Where to look” factor. For example, in one database app. you can put procedure code specific procedure modules, attach it to a specific object, or add it to the overall (field) design area. As such, “were to look” become much more complex.

One ends up trying to explain that things took several hours because though the fix only took 5 minutes, it took a long time to go through 27 procedures and 17 objects on six forms to find where the offending code lived and make sure it’s “twin” didn’t live somehwhere else. “Twin” occurs when the person, instead of writing the code in one place and calling it from many, just copies it and pastes it in the second (or third, or forth…) location.

Nowadays the debugging tools are more refined. But a logic error that compiles/runs will not trigger a “fault” and if the code that contains that faulty logic can exists in multiple locations …

Jeannot – THANKS!!!

I couldn’t believe your quick response! Instead of a note, you posted a complete lesson! I went through your initial explanation and then the example. Now, I know where I was going wrong. Because it was a simple example, I was able to follow the logic and syntax easily. THATS how to teach.

I have registered with your blog and am looking forward to other lessons and examples you will post.

Again, thanks! I’ve been pulling my hair out on this, and I can’t afford to lose any more hair.

< Scott Baker >



I enjoyed the first few videos on your YouTube channel. I’m looking forward to more!

< Scott Baker >

1 Like

Happy that I was able to help a bit. I might write a follow up (still a simple one), as there is far more to say about methods. I am always happy to help, when I have some time, and today was a rainy day over here - lucky you! :wink:

Talk about fast action! Just getting back into xojo after an absence and looking long and hard for documentation on API 2.0 and Web stuff.

Jeannot, I just discovered your blog today (but before seeing it here believe it or not) and really appreciate some of the topics you’ve covered… more input later after I have read them all!

Garry, thanks for creating the video series, I’ve subscribed… I understand desktop apps pretty well but I cannot wait until you cover mobile and Web!!



As promised. Fasten your seatbelts. I still hope it’s understandable and still easy enough. This is more of a topic for a native speaker, but you should also know byRef and Optional when working with methods.

1 Like

The next video is up. This time, a basic high level overview of the event system. Hoping to do objects / class next and then finally down to writing some code!

Forum for Xojo Programming Language and IDE. Copyright © 2021 Xojo, Inc.