MBS Berlin Developers Conference Keynote

Geoff Perlman, CEO of Xojo Inc gave his keynote address at the Berlin Xojo Developers Conference today.  The conference is hosted by Monkeybread Software.  In his hour long talk, he discussed the future of Xojo and, in particular, what’s scheduled for the rest of 2017.

In the past two years, Xojo releases have fixed over 1,000 bugs.  They’ve also add 200 major features.  This includes a new Language Reference, HiDPI support for Mac, Windows, and Web, Raspberry Pi support, 64-bit builds, and iOS additions.  Uploading in Xojo Cloud is now 400% faster and new data centers were added in New York, San Francisco, London, Amsterdam, Bangalore and Singapore.

Geoff spent some time talking about things coming up in 2017.  In Release 2, due out in July, 64-bit builds will no longer be beta status.  64-Bit debugging for Windows will be a reality.  Geoff said that it was almost available for R1 but the version of LLVM  for Windows they needed was too new.  XojoScript will be 64-bit as well.  The split and join string operations have been reconfigured to make them comparable in speed to the 32-bit versions.

For Windows, 64-bit builds will have app icons and version information.  Neither of these are available in R1 and earlier 64-bit builds for Windows.  Linux will now use GTK3 which will allow a 64-bit HTMLViewer.  A stretch goal might be HiDPI support and Geoff said that this might be later.

Later in the 2017, after R2, here are the goals:  64-bit builds will be the default in the IDE (32-bit will still be available).  The IDE itself will be 64-bit.

Also scheduled for 2017 is a new plugin format.  This new format will require Xojo Pro for creation.  It will still support libraries written in C/C++.  You can add images, sounds and other resources.

One of the more interesting things about the new plugin format is that it’s project-local.  Currently all plugins are global which means you cannot have multiple versions of the same plugin installed.  This new plugin format is project based, so it’s easier to handle different versions for different projects.  The new Xojo plugins are compiled into an intermediate LLVM format so there’s no need to ship classes with encrypted source code.

Even though the existing plugin format will be around for many years the new format is definitely the wave of the the future.  This will be the ONLY format supported for mobile.

The IDE is being redesigned.  Geoff admitted that the Navigator isn’t great for large projects and in some cases works against you.  The current Navigator is a custom canvas control and later this year it will be replaced with a standard ListBox.  This will make the next step easier and it will make tabs work as a hybrid between the old Real Studio and the newer Xojo IDE.  Geoff showed some screen mockups and design document so it felt like they know exactly what they want, they just need the time to implement it.

Next up was Interops.  Currently working with Declares is challenging.  Differing versions of OS SDK versions are hard to deal with.  There is also no type conversion.  Interops promises to make all these issues go away and use nothing but Xojo data types.

Geoff showed an example of an SDK call in Swift for iOS.  Then he showed the ugly Xojo declares for it, which didn’t look like Xojo code at all, and then showed the Interops version.  The Interops version looked nearly identical to the Swift versions.  This is the technology used to develop Android.  Interops will be developed first for mobile and then MacOS.

Finally, Geoff talked about Android.  He said a beta of Android will be out by the end of 2017.  It will be using Interops to make development easier and will create native code and controls.  Apps will be compiled into machine code which should give Xojo Android apps comparable performance as Google’s own native apps.   Support will be for KitKat version 4.4 or later which is roughly 80% of the installed user base.

Geoff wrapped up his talked with a brief look back at the competitors to Xojo when the company was first started.  Apples MPW, Microsoft Visual Basic, Delphi, MetroWerks CodeWarrior, Sun’s Java, Symantec Think C were all the rage.  Some of those tools no longer exist.  Some of those tools have been sold multiple times with different strategies.  For over 20 years Xojo has stayed with the same company and continues to evolve and change to meet the needs of users.

Discoverability in Xojo

Xojo has a big API and it’s impossible to know everything. This is made even more impossible since Xojo gets updated three to four times a year and, in the past couple of years, they’ve added two new targets (iOS and Raspberry Pi) and a new framework that is going to be used more in the future.

Despite my nearly sixteen years of constant usage I find myself struggling, at times, to find things in the Xojo documentation. Don’t get me wrong, I can usually guess at the right location but I think discoverability in Xojo is lacking. I think this hurts all developers, not just those new to Xojo.

Local Language Reference: This was rewritten a few years ago and is very reminiscent of the popular documentation tool Dash. It starts with a basic landing instruction page along with the overall list of ‘sections’ and the user can either drill down in the list or use the single search field to filter the list.

The nice thing about it is that it’s fast. Type in ‘Record’ and you’ll quickly get every entry that has record in the name (it’s a lot, by the way). Each entry has a blurb on what it does, a listing of the Events, Properties, and Methods. You can click on any of these and you’ll be taken to the page for that particular item. Many entries have a notes section and example section.

Perhaps more importantly, some entries have See Also information. For example, the Recordset class entry can take you to the Database Class, DatabaseField, Database Record, etc. All things an average developer might eventually want to know in relation to databases.

What what I’ve gathered the local Language Reference is simply an extract of the wiki (below) and put into a database that the IDE accesses.

http://docs.xojo.com (the Wiki): If you’re not using the local Language Reference, you’ll be taken to the online Wiki hosted by Xojo. As far as I can tell this is exactly the same information as the local Language Reference, just shown in a web browser (or HTMLViewer if you’re using a Xojo window). This is handy for providing links to the documentation for people in the Forums, because yes, sometimes people don’t know about the Wiki.

Since it’s essentially the same as the local Language Reference it’s only real advantage is that it can be updated without a new Xojo release. The drawback, of course, is that you need an internet connection and because of this, and speed, I prefer the local version.

There were also some contributors to the wiki. If you look at http://docs.xojo.com/index.php/Special:ListUsers you’ll see the people that could modify the wiki.  I’m not sure how much this was used but I feel that this should be an important factor in documentation.  And because it’s a wiki, is there anything stopping someone from hosting a copy of this and modifying it?

http://developer.xojo.com (Xojo Dev Center): The first impression is that it’s a cleaner look since it uses a large font, has ample spacing, etc.. You have the option to save the page or the entire site as a PDF document. All of the new Xojo framework is in this format so I suspect this might be the format of the future.

Find Xojo.Crypto, for example, and the page lists a summary of the class. It lists the Enumerations, methods, related classes, platforms and project types supported, lists example projects and any related classes. Click on any of those items and you’ll be taken to the section describing it in more detail

I don’t find the new documentation all that useful. Everything about that class is in one large page rather than individual pages. It gives the documentation a cluttered and hard-to-use feel. A great example of this is selecting one of the methods and having the entire page scroll to the method. Hitting the browser back button does not take you back to the top like I expect so I’m forced to manually scroll to the top.  Not exception onerous, mind you, but harder to use than it should be, in my opinion.

I also find the notes and example sections far less complete than what I would like. And since there’s no way to add my own notes to the documentation the only option I have is to created a Feedback report to get it changed.

Creating a feedback report isn’t a great solution. There’s the right and proper way to use classes and then there are edge cases that are how real-world developers might use them. This is where the ability to ask a question and then have contributors and/or Xojo engineers answer them is helpful.

To the best of my knowledge there is no way for the community to add or modify this content. This does the experts in the community a disservice since there are times when we could add helpful information. To do this now, we need to submit a Feedback report.

New Project Pane in the IDE: The Xojo Examples directory is chock full of examples. Some better than others. Create a new project in the IDE and look at the Examples section. There are hundreds of projects to choose from but finding them is difficult. Sure, I can sometimes guess where something is, but should it not be easier? If I’m looking for FolderItem examples it sure would be nice to search for FolderItem and show me all projects that use it.  It’s a common class and I’d like to see all the examples that use it.

I found something in iOS quite by accident last week when I decided to peruse the iOS projects and found something I needed. Filter functionality would have made this trivial and it would have made my task much easier.

I don’t claim that there is an easy way to add this functionality as it simply does a directory scan. To do this type of searching you’d have to either search the projects on the fly (ew…) or come up with metadata on each project and store it in a database. This is not impossible task, and I think it would help all uses out a lot. I submitted a feedback report on this <feedback://showreport?report_id=47629>

Xojo Forums: The Xojo Forums are a wealth of information. Years worth of questions and answers make this my go-to resource for general questions. However, the built-in search is just a step above worthless and it’s sometimes easier to use Google instead to find the information that should be a simple search in the forum.

The Xojo Forum is often slow to respond and the Notifications dropdown is, for me at least, an exercise is patience as it’s so slow. It’s obvious that esoTalk does not scale properly with 314,000 posts. Perhaps it’s time to look into something more robust.
Discoverability in Xojo isn’t important for just new developers. It’s a useful and important feature for everyone since the API is too big to know everything. While there are many parts of Xojo that help you in discovering classes, events, properties and methods you didn’t know about they are scattered and disorganized. Searching is an important feature and there are times when searching doesn’t exist or isn’t as helpful as it should.

If you could make Xojo better in terms of discoverability, what would you do?

Berlin Xojo Developer Conference

We are 30 days away from the biggest Xojo developers conference of 2017.  Monkeybread Software is hosting this two-day conference in Berlin, Germany May 4th and 5th.

There are currently 79 attendees from all over the world which is an impressive number.  Let’s make this event even bigger.  Sign up today at http://www.monkeybreadsoftware.de/xojo/events/berlin-2017-event.shtml.

I’ve made no secret of this over the years – I love these events!  It’s a great way to connect with other Xojo developers and talk Xojo and meet all those people you’ve ‘talked to’ on the Xojo forums for years.  I’ve also made first contact with a lot of clients at these events too.  In some cases it’s been the only face-to-face meeting I’ve ever had with them.

Hope to see you in Berlin next month.

MBS Xojo Developer Conference 2017

Xojo isn’t having their annual conference as they’ve decided to switch back to spring events. Since they last did one in October of 2016 they are not doing one in 2017. It makes me sad that I won’t see my friends until 2018. Thankfully, Monkeybread Software is holding a Xojo conference in Berlin on May 4th and May 5th, 2017 to tide me over..

This two day conference, held in the heart of Berlin, Germany, will boast the biggest Xojo get together of the year. Several people from Xojo Inc will be attending and Geoff Perlman will deliver the keynote address where I’m sure we’ll hear about many of the upcoming features of Xojo.

We will be there too. Carol will be giving a Database Design Mistakes session that she was hoping to give at XDC 2016 but had to cancel due to a grandson showing up. I will be giving a Reporting in Xojo talk showing off Shorts and some of the new features we’ll have added to the product by then.

I can’t emphasize enough how much I love these conferences. It’s where we can learn some new things about Xojo, and, more importantly, make friendships that can last a lifetime. I can tell you, from experience, that meeting the people you’ve ‘talked’ to on the forums is a magical experience.

Carol and I have never been to Berlin so we will do some sightseeing. We haven’t set our flights yet but we’ll be happy to try and coordinate with our Xojo friends. Let us know what sorts of things you’re doing and dates.

See you in Berlin, May 4th and 5th. To register for the conference, please go to http://www.monkeybreadsoftware.de/xojo/events/register.shtml

May your 2017 be better than 2016.

The Power of Meeting Face to Face

In Kansas City this past weekend I attended MidAmerican 2, or WorldCon.  WorldCon is a Science Fiction and Fantasy fans dream come true.  Thousands of people from around the world attended hundreds of sessions covering television shows, movies, author readings and signings, many sessions on how to write, and much more.   It is a long convention at five days that culminates with the Hugo Awards ceremony (think the Academy Awards for science fiction and fantasy).

I am an aspiring science fiction writer (nothing published yet but I’m working on it!).  This convention was an excellent way to immerse myself with professional and amateur writers and learn.  There is something powerful about hearing people that have already “made it”.  Many of them still fight “Imposter Syndrome” and many have issues with the business of writing.  Writing is a solitary business and many are introverts and selling themselves is often nerve wracking.

Do these issues sound familiar?  They should.  In many ways, Xojo developers are much like writers in that they work in a vacuum with little feedback from others.  I know I personally struggle with Imposter Syndrome despite having done this gig for fifteen years and being ‘successful’ (whatever that means).  And much like writing, the only way to get better at Xojo programming is to do Xojo programming.

It seems a bit anachronistic to fly somewhere to meet with people.  After all, the internet makes this easier, right?  There is something powerful about being face-to-face with another person and being able to provide instant feedback.  We also tend to be much more polite in person than online and that’s a huge plus in my opinion.  I’ve met some wonderful people, in person, that online seem rude at best and sometimes simply belligerent.  The internet might make people more accessible but it seems to removal societal filters too, sadly.

In a month and a half Xojo is holding its annual Xojo Developers Conference (XDC) in Houston, Texas.  At XDC, Xojo developers from around the world will join together for three days of sessions covering practically every development topic you can think of.  And if you have a question that’s not covered you’ll be able to find someone to help you.  Besides the many amateurs and professionals attending you’ll have ample opportunities to talk to the Xojo engineers.

It’s not uncommon for businesses looking for a developer to attend XDC.  It gives them the unique opportunity to talk to many Xojo developers in a short amount of time.  We (BKeeney Software) typically speak to one or two prospective clients at XDC each year.  If you’re a consultant this conference should be on your ‘must attend’ list as it can pay for itself many times over if you land just one project.

Today is the last day to save $100 off the conference registration.  Sign up to learn and be inspired and to make some new friends.  See you in Houston!  http://www.xojo.com/store/#conference

 

There is No Easy Button

Most of us want an easy button when it comes to software development.  Out of the dark ages when you literally had to code everything yourself came the frameworks that did a lot of the dirty work for you and all you needed was to figure out what those framework calls were.  Tools like Xojo make this even easier because the framework has been around a long time, well known and documented, and mostly complete.  Add in the rise of internet searching and it’s quite possible to find huge chunks of code that do what you want.  Be wary, though, because that convenient piece of code you just found might have bugs in it.

The reality of programming is that any code that you didn’t write should be considered suspect.  That’s not the same thing as saying Other Peoples Code (OPC) is wrong, it might be perfectly safe to use, but you really should vet the code and thoroughly test it before putting it into your application.

I’ve seen it on the Xojo forums where someone whips out some code from memory and it contains a bug or simply doesn’t work.  The person asking the question then gets mad that it doesn’t work.  Normally the bug is simple to fix but it’s obvious that in many cases the developer getting mad didn’t even attempt to read any documentation.  Come on, people!  If it was that easy, we’d have created AI’s to do the programming by now.

Really, in the long run, you need to understand what you’ve copied.  Maybe it looks right on screen but it is horribly optimized, or worse.  Maybe it calls into the netherworld and summons Cthulhu.  Anything is possible, right?  Do you want to be responsible for the software Armageddon in your company?

Much of the example code given on the internet is lacking defensive coding for the sake brevity.  This can lead to runtime exceptions that can cause needless headaches.  If I had a $1 for every Xojo programming that’s wondered why their Recordset is coming back nil and not checking for database errors I’d could probably buy an enterprise license of Xojo every year.

It’s been my experience that any code you find you will have to tweak it (either a little or a lot) to fit the business requirements of your application.  If you don’t understand the code you’ll never be able to figure that part of it out.  Learn the individual bits of code and learn how to use the debugger for heavens sake.  The Xojo documentation has some great information.  The debugger is your friend!

When it’s your own code that you’re copying and pasting (especially in the same project) it’s a very strong indicator that you should refactor your code.  Perhaps making a global method or making a helper class makes sense.  That’s actually a good time to ask the forum on the best strategy because you’ll probably get two or three different responses.  Learning new techniques is good and in the in long run those will become new tools in your arsenal of programming tricks.  And remember that in a year or two you’ll look back at your coding today and be embarrassed (this is natural) because you’ve learned SO much since then.

There is no easy button when it comes to software development.  Even with RAD tools like Xojo you need to learn the language and the framework to bend it to your will.  Sure, use OPC as a way to learn how parts of it work but copying and pasting verbatim without learning why it works is a recipe for disaster.

Happy Coding!

ISA and Casting

One of the things that’s just not talked about much in the Xojo documentation unless you know where it is located is object casting.  ISA and Casting is so useful it’s worth devoting some time talking about it.

Let’s start with some common examples in desktop applications.  We all use the Window class.  Typically our new projects start with an instance of the Window class called Window1.  To put it another way, the Superclass of Window1 is Window.

The ImplicitInstance property of windows is subtly evil.  Subtle because if you reference anything in Window1 it gets created if it’s not already.  A lot of new Xojo developers will ask how can they tell if a window is open or not.  They’ll often come up with something like this:

if window1.visible then return true

If window1 is not open this line will actually create it!  So this is a bad thing and why I recommend that you turn off ImplicitInstance on all windows until you understand the implications.  I digress.

The better way to tell if an instance of Window1 is open is to iterate through global Window method.  You can do that by doing something like this:

for i as integer = windowcount-1 downto 0
   
   dim w as window = window(i)
   
next

This will iterate through every window, visible or not, that the application has created.  I used DownTo because many times you want to close said window and going UP will cause funky things to happen to your array of windows (I will leave this as an exercise for yourself).

If you put a public property in Window1, say, s as string.  You cannot do the following:

  for i as integer = windowcount-1 downto 0

dim w as window = window(i)

if w = window1 then
   
   w.s = "this is text"
   
end

next

The compiler will squawk with an error:  Type “Window” has no member names “s”.  This might seem mysterious, but the window returned from the Window array is a Window, not the subclass window1.  It’s an important difference.  The framework call to Window brings back a listing of all Windows even though each individual window brought back will be a subclass.  The array must all be of the same class type (Window) for it to work so the framework uses the Super.  To work with the Window1 properties you have to cast the window returned to an instance of Window1.

If you only have one window type (highly unlikely in a real app) you could simply cast any windows to window1 but that’s unrealistic.  Instead, you need to check what type it is first.  Using the ISA operator you can test what kind of window subclass it is.  If w is an instance of Window1 than you can do something with it.

  for i as integer = windowcount-1 downto 0

dim w as window = window(i)

if w isa window1 then
   
   //Do something here
   
end

next

The next step is to cast the window to the subclass.  This is as simple as wrapping the window variable, in this case w, with the name of the subclass, Window1.

  for i as integer = windowcount-1 downto 0

dim w as window = window(i)

if w isa window1 then
   
   window1(w).s = "Some Text"
   
end

next

If your code is wrong, or you try to cast it the wrong window type you’ll generate an exception at runtime that says Window1 cannot be cast to whatever the object you’ve put in.  For example, the following code generates that error:

  for i as integer = windowcount-1 downto 0

dim w as window = window(i)

if w isa window1 then
   
   window2(w).s = "Some Text"
   
end

next

This type of paradigm is common throughout Xojo.  We already know about the Window and WindowCount methods.  Another commonly used one is the Control and ControlCount on a Window.  Code like this happens quite a bit:

  for i as integer = 0 to ControlCount-1

dim c as control = control(i)

RectControl(c).Visible = False

next

This works fine as long as your control is actually a RectControl.  Not all items returned by the controls method are RectControls. Checking with the ISA operator before casting is important.

The ISA function and Casting can be an important tool in your application.  It can take what would be some tricky Introspection and turns it into a trivial piece of code.  It’s also one of those things that you don’t know you need it until you need it.

XDC 2016 Sessions Announced

Xojo announced an initial session list for XDC 2016.  The full list at http://xojo.com/xdc/HTML/sessions.html.  I’ve been told there are yet more sessions to be announced.

I’m doing a session on Reporting in Xojo and Carol is doing a session on eliminating common database mistakes.  Since we do a lot of database applications with reporting I think you’ll like our insights, processes and solutions.

I am impressed with the number of new speakers and the topics that have never been done before at XDC.  Want to learn more about developing iOS or Raspberry Pi applications with Xojo?  There are sessions on that.  Want to learn about REST web services or how to creating web API’s with Xojo?  There are sessions for those as well.

XDC is where you go to immerse yourself in Xojo for three days.  Since we are a smallish community we don’t often talk to other Xojo developers face-to-face.  XDC is where you will meet not only those that inhabit the forums but also the engineers behind Xojo.  This is the only place where you will find out about upcoming changes and additions to Xojo.

Last year Xojo recorded all of the sessions and those are available in the web store ($499).  I’ve not heard if they will record this years events but I found the recordings to be very useful because you can’t make every session.

They made this promotional video last year.  I think it’s pretty good so I’ll just let it speak for itself. I have a cameo at 1:47 or so.

Today is the first registration deadline and they are already sold half of the available spots.  More info at http://xojo.com/xdc/HTML/index.html.  Hope to see you there!

Upcoming Xojo Events

Next Wednesday, February 24th, I will be meeting with Xojo developers in the Palm Coast, Florida area. The location isn’t set yet, so check in the forums at https://forum.xojo.com/28686-central-florida-xojo-user-group and let us know if you can make it. We’re getting together at 7 PM and I hope to see you there!

March 11th, 2016 Christian Schmitz of Monkeybread Software fame is getting tougher with other Xojo folks in Chicago, Illinois near O’Hare Airport. More information at https://forum.xojo.com/28759-xojo-meeting-for-chicago-illinois. I had originally hoped to make this meeting and offer some training but I already had a commitment.

March 15th, 2016, Christian Schmitz is in Cleveland, Ohio. More information at https://forum.xojo.com/28758-xojo-meeting-for-cleveland-ohio

Monkeybread Software is hosting an event in Koblenz, Germany on May 19 and 20, 2016. Two Xojo representatives will be there for this two day event. I went to one of these events a couple of years ago and had a really good time. The Xojo conference was fun and the day after the event a number of us went on a tour along the Rhine River Valley. Fun had by all! More information at http://www.monkeybreadsoftware.de/xojo/events/koblenz-2016-event.shtml

The big Xojo event of the year is October 5-7, 2016 in Houston, Texas. The Xojo Developers Conference (XDC) will have twenty-eight speakers, thirty-five sessions, and attendees from around fifteen countries. The entire Xojo development team will be there and what’s discussed at meals and events is just as important as the sessions. It’s not an inexpensive event, but if you want to learn more about Xojo and pick the brains of Xojo experts, XDC is THE event to go to. More info at http://xojo.com/xdc/HTML/index.html.

Getting together with other Xojo developers is a lot of fun.  I highly encourage you to find other developers in your area and start sharing the knowledge!

Presentation Tips

Giving a presentation for a room full of people can be a nerve-racking experience.  I remember the first time I gave one at the Xojo Developer Conference and I honestly can’t recall how I did.  They let me speak again so I must not have been too bad.

Years later I started doing Xojo training videos and had to edit myself speaking.  It was an awful experience to listen to myself fumble through words, use necessary filler words, and clean it all up.  It was after a couple of months of doing this that I decided to get some professional training.

After some training and many more presentations and videos I feel I’m much better (but still not perfect).  Here are some simple rules for making your presentation experience better.

Practice your presentation.  This seems like such a simple thing but I’ve seen way too many presentations where the presenter get up in front of the room and you can seem them searching for words to fill the time.  Most people, when they’re winging it, use their predominate filler words.

This should rarely happen and the easiest way to avoid this is to practice, out loud, your presentation.  Even better, practice it in front of someone else or record yourself.  Then get your listeners feedback or listen to it yourself and find out where you sounded awkward or stumbled.  Those are areas to go through again so they’re smooth by the time you do it live.

Don’t Read Your Slides.  Not only is reading your slides annoying to the audience but also makes it appears like you’ve not practiced.  Whatever you’ve written on the slide should be summarized verbally.  This way the user sees a slight variation from what you said and has to think about it a bit more.  And perhaps more importantly, they’re not annoyed that you’re reading to them.

Another way to do this is use short bullet-point text and what you say is the expanded version.  The bullet-point text on the screen is the summary and what you say is the expanded version.  Either way don’t read it!

Use the Equipment Before the Presentation.  Most computers and projectors work smoothly these days but it doesn’t hurt to connect up beforehand and go through some slides just to make sure it works properly.  This way your presentation starts properly and you don’t have to apologize and take time out to fix things.

As a software developer talking to other developers it’s common for me to give a demo that’s not in Keynote or PowerPoint so I’m switching from the presentation mode to the computer view.  When doing this make sure you have someone in the back of the room give you feedback on sizing of text and pictures..

I can’t emphasize this last point enough.  With todays high resolution monitors what looks huge on our big, Retina display may look tiny on the projector you’re using and impossible to read in the back of the room.  You might have to adjust the resolution on your computer to make it larger.  Make sure any application you’re using at this lower resolution works properly too and settings adjusted beforehand.

Another good habit to get into is look at the colors your using.  On your monitor they might look really nice but on a projector in a well lit room they may look washed out and impossible to read.  Using a dark purple on a black screen might be a bad choice as well as using green on a white background.

Any text you have on your slides should be as large as possible.  Despite looking awful on your monitor the people in the back of the room will appreciate being able to read it.

Never Go Off Script.  If you’ve practiced your presentation you should have it down pat.  Do not decide during the presentation to add additional information or demo something you didn’t practice.  From my own experience this where things go off the rails.  In the heat of the moment words can fail, filler words come out, and it’s an overall awkward moment in an otherwise good presentation.  On the flip side, if you can think of additional material add at the last moment you probably didn’t practice enough.

If you have a Q & A section of your presentation you can bring it up then or wait for someone to ask about it.  This is meant to be an unscripted portion of your presentation so people will give you some slack.

Breathe.  This seems simple, but I’ve seen a lot of speakers get up and be in such a rush to get their presentation underway that they forget to breathe.  Proper breathing technique means giving the audience a chance to process your information before going on to the next topic.  Wait a second or two before advancing your slide.

What seems like an eternity of empty space for you is good for the audience.  Silence does not have to be filled by you.  Respect your audience and give them time.  Respect yourself too because that pause to breathe is also time for your brain to start formulating your next thought.

My own personal issue with this is in the Q & A session.  Because it’s off script and somewhat random it’s easy to rush into it.  Try to take a deep breath before starting the answer and take another one after you’ve finished.  Again, this is as much for the audience as it is for you!

Get Training.  All of these tips are incredibly hard unless you practice.  You can learn them on your own and I’ve met some very talented natural speakers that can do this.  Most people aren’t naturally talented enough and have to work at it.  I highly recommend joining an organization, like Toastmasters, that can help train you on public speaking.  They are an international organization and there are chapters everywhere.  Their entire purpose is to help you succeed with public speaking.

Giving a presentation doesn’t have to be a stressful experience for you or your audience.  Use these techniques to polish and put a shine on your presentations.

What presentation tips do you have that I missed?