Thoughts on Xojo Web Edition

When Web Edition for Xojo (then Real Studio) was released I can’t say I was overly impressed.  It was missing some features and was buggy (to put it mildly).  I was of the opinion that it just wouldn’t take off.

Since then the worst of the bugs were fixed and the worst of the framework problems were addressed and there’s been a steady improvement in the product in practically every release.  In my consulting business it’s went from being a ‘gee that’s a nice thing to have’ to being roughly half of our overall Xojo consulting business.

The fact that we had very little web development experience hasn’t stopped us from using Xojo for a lot of projects.  It’s great that a WebButton and a regular desktop Button and that a WebPage and Window act the same from a developer standpoint.  All the code experience that we learned over the course of a decade in desktop apps was, with a few notable exceptions (*cough* constructors *cough*), was immediately transferrable to web apps.  While there is a learning curve it’s not like we had to learn a completely new programming language to do some large and complex web apps.  In fact, we turned down work before Web Edition came out simply because we didn’t have the experience and in-house know how to do the work.

Our clients seem willing to forgo the numerous capabilities and power of a desktop app for the more limited capabilities of a browser based app.  I think the biggest reason being that web apps don’t have distribution issues.  There’s only one instance of the app sitting on a server somewhere.  Web apps also work in almost every desktop browser and even work with most mobile web browsers.  Heck, you can even configure the web app to look different based upon what device it’s being viewed on.

There are some disadvantages, of course, to Xojo web apps.  You can’t just put them up on any ol’ server.  You pretty much need a VPS or use the new Xojo Cloud (which is just a specially configured VPS).  Then you have to worry about 32-bit compatibility libraries but, honestly, once you get the first app running on a server the rest of them are pretty easy.  I’ve not had the pleasure of getting a Xojo web app working on IIS but I hear it’s not a pleasure, nor quick, experience.

Apps running in a web browser have a limited subset of capabilities. With Xojo web apps you can’t use drag and drop anywhere out of the box (I think you can do some of this with JQuery but I’ve not tried yet).  The controls, particularly the WebListBox, are lacking a lot of functionality, and there’s just not a wealth of 3rd party controls available for Web Edition yet.

Security-wise, Xojo web apps are compiled making it very hard to compromise an app even if a hacker gets into your server.  There’s still work to make your app secure from SQL injection attacks but that’s a relatively simple thing.  Much of the work is really securing your server so that it’s secure and that’s one thing that Xojo Cloud is doing well (perhaps too well based on my recent experience).

So the question, Dear Readers, is what are your biggest likes and dislikes about Xojo Web Edition?  What do you wish it did better or differently?

Training Day Video Online

We held a full day of training the day before the Xojo Developer Conference (where we couldn’t use the term Xojo yet) on April 23rd.  We had over a dozen people at the training day where we discussed what we knew about databases.  We did that for most of the day and then spent the rest of the day going over 3rd party plugins, controls, libraries, and utilities to help you get your Real Studio/Xojo apps going.

We recorded all of it and have rendered it all (except a 30 minute portion where the mic wasn’t on) and made it available for our Real Studio/Xojo subscribers (as well as attendees who got a year subscription for attending).  It is now available online at

Because it’s Friday and I don’t feel like doing any real work, I decided to pull some stats about our Real Studio training app:

It was originally written in a fairly popular web CMS framework.  It was re-written using Real Studio Web Edition (because we could) and went live in late 2011.

We have 39 hours 44 minutes of Real Studio training video available.  A little over 6 hours of it is available to non-subscribers.

We have served up over 4,800 hours of streaming video since we began tracking it.

We have a little under 1000 registered users on the web app with about 100 current subscribers.

Web Edition has been interesting.  The training area has been our test bed of new for new versions of Real Studio Web Edition and now for Xojo.  It continues to grow as Web Edition gets better.

Browser stats actually surprised me a bit.  FireFox is stronger than I anticipated and Chrome is much higher than I expected.

Likewise, platform usage surprised me a bit with Windows users at 41 percent.  I know very few Windows-only Real Studio/Xojo users so perhaps this just indicates that I travel with a Mac-centric crowd or a lot of Windows users are looking at Real Studio/Xojo and need some additional help.  When I get a chance I’ll have to see if I can figure out the stats of subscribers vs. non-subscribers.

Browser Usage




Xojo: Operation Lockdown

It’s always nice when a client gets to talk in the keynote address at Real World (now Xojo Developer Conference).  Brent Huston, CEO of Microsolved, was invited to speak during the Xojo keynote address last week.  Brent talked about the Operation Lockdown that his company, Real Software (Xojo, Inc.) and BKeeney Software are participating in.

Brent has been using Real Studio desktop applications for some of his security apps for a number of years with great success.  He’s now interested in Web Edition and wanted to see where the vulnerabilities were in the framework and what we could to do fix them.

We (BKeeney Software) came up with a simple Web Edition app that mimics what a typical web app would have in it (Login page, admin only pages, user pages, etc) and hardened it to the best of our ability.  Brent’s team then took the standalone web app and used their hundreds of hacking and infiltration tools to see if it would fail.  They also attempted manual penetration testing of the web app.

I’d love to say they found nothing but that’s not the case.  They found a few critical, a few minor, and a few false positive issues.  The good thing is that the critical issues have already been taken care of by Real Software and will be in Xojo Release 1.  Some of the minor issues and other requirements will be added later, according to Xojo, Inc.

The very good news is that the Web Edition framework is pretty stable.  The Session management, according to Brent, is very robust against all known forms of attack.  Using some very simple coding techniques Web Edition web apps proved to be immune to SQL injection attacks and other common vulnerabilities.

Brent recommended that when Xojo R1 is released all Web Edition developers re-release their web apps compiled with it since a number of items his team found are fixed in the upcoming version.

During a Friday session Brent shared, with a packed room, how bad guys (and certain nation states) view your web applications and data.  It was very, very scary stuff and I think everyone walked out of the room wondering not IF our personal/business data has been hacked but how long ago it was compromised.  Scary stuff.

Lot’s of things to think about but it was encouraging to hear that Web Edition was pretty secure.  Perhaps what’s even better is that I overheard a Xojo engineer saying something to the effect of, “That will be changed for R1 to prevent THAT issue from happening,” in reference to a “man in browser” vulnerability.  It’s nice to know they’re taking security seriously in Web Edition (though the irony of their website getting hacked did not go unnoticed by conference attendees).

FAQ: What Do I Do My Videos In?

One of the questions that I field, a lot, is what program to do I use to create my Real Studio Training (and other) videos?  The answer is ScreenFlow from Telestream.

When I first started thinking about training videos a little over 2 years ago I looked around and did my research.  ScreenFlow had most of what I wanted but the only thing it lacked (at the time) was an export to Flash.  I think within a matter of 3 or 4 months it was added in a new version.  I guess that’s one of the things I like about the software as they are always improving the product.

I think ScreenFlow is incredibly intuitive.  A simple interface starts and stop screen recording.  If you’ve ever used iMovie or Final Cut Pro to edit video the timeline editor is simple to figure out and intuit.  There are many options for zooming, and adding text and callouts, audio levels, cursor options, etc.  In other words, way too many features for me to spell out and frankly I use but a handful of them.

One of the bigger features that I use is the ability to Split a Clip and get rid of wasted time (like all the time I spend trying to figure out what I did wrong in my code, or redoing a sequence), or speeding up a long typing sequence.  Also, being able to mute the inevitable cough or the cell phone ringing is pretty important.

ScreenFlow has a number of exporting options but since it didn’t export to Flash (at the time) I ended up using iMedia Converter from iSkySoft.  It converts practically every audio and video format you can think of.  I used this to figure out the byzantine ways of getting Joomla to display both HTML5 video and Flash.  I could use ScreenFlows export now, but since I can do batch processing in iMedia Converter I can literally let it run overnight and do 40 or 50 videos if I need to.

One of the things I learned when doing the ARBP conferences was that good audio is critical.  Use a Plantronics gaming headset that plugs in via USB.  My only complain wasn’t with Plantronics, but with Apple.  If I recorded a video where I did recording for over 45 minutes, I would consistently have three minutes of static filled audio.  Then it would go away but it makes for bad audio at that point.  Sometimes it doesn’t affect anything and sometimes it does.  I haven’t done a really long video in a while so this problem might not be there now.

I talked earlier about Joomla and how I found it difficult to get video up and running.  Now our training is 100% Real Studio Web Edition.  Not that Web Edition is perfect, but I’ve been able to add more features to it in 4 months than I was able to do with Joomla with 2 years of trials and tribulations.  At least with Web Edition I have more control over the web app than I did with Joomla.

In fact we’ll be integrating closed captions to the training videos, first in English, and then hopefully in French and Spanish.  This is enough info for another post describing what a pain that’s been, but let’s just say that it’s coming “soon”-ish.  Currently I’m handling all of the PayPal transactions manually so there’s some delay between payment and me actually setting it up and we’re hoping in the next couple of weeks to get PayPal fully integrated so I don’t have to do any manual setup anymore.  Did I mention how much I like having more control over the app?

Anyway, this has turned into a longer post than I anticipated.  Thanks for your support!

Web Edition Learning Curve

I had a conversation with another RB developer this morning that stuck in my head after I said it.  We were talking about how Web Edition has come a long way since it first came out.  I did a commercial project using one of the first public releases and it was, how shall I say, really rough around the edges.

Anyway, my comment was that at times I felt as if coming from the Real Studio desktop side really hindered my learning of Web Edition.  There are just some things you do in Real Studio desktop apps, like using Window constructors, that are just not possible with Web Edition.  Sometimes closing a WebPage immediately after showing another one isn’t a great idea whereas on the desktop side you don’t even have to think about it.

It takes a while to wrap your mind around the difference between a desktop app and a web app.  The desktop is easy.  It executes locally and gets data locally (there are exceptions of course) but it’s all really quick and it’s designed to interact with the local operating system.  When you want to delve even further into the OS you could always use Declares.

That isn’t how Web Edition works.  When you first start using Web Edition you think it’s on the local machine (it is) so you get this false sense of security about how fast it is.  It’s not until you put it on your web server, which might be half way across the planet, that you realize that there are latency issues to deal with and that changes to the UI get pushed down to your browser.

It only looks like your app is running on your local machine.  In fact every event (that’s used) gets sent to the web server for your app to process.  So this means that if you implemented the MouseMove event every time your mouse moves a message gets sent to the server for processing.  It is very easy to get too many things in the pipeline for your app to respond correctly.  As a good friend of my once said, “You can only piss so much pixie dust down a straw” meaning that the data pipeline (the internet) is only so fast at moving data and it will pass it as fast as it can and no faster than that.  Quite philosophical, no?

The fact that your ‘windows’ are really running in the browser is also hard to wrap your mind around if you’re coming from the desktop side.  And frankly when you’re debugging your Web Edition app you really should be running it in multiple browsers just to make sure it acts the same in each one.  Not all browsers are created equal.  And, just to make life a little harder, test them in different operating systems.  It’s really not much different, at that point, with desktop development.

If you are planning on using Web Edition and you’ve been using Real Studio desktop plan on some extra time.  It’s not THAT much different, but where it IS different will throw you for a loop.  There is a learning curve but with a little patience you’ll overcome it.

Then there are differences in web servers.  Which Linux version?  Do you have 32 bit compatibility libraries installed?  What version of Windows IIS Server or Apache?  Debugging installation issues is, in my opinion, a huge problem since there there is no “step 1 – try this, step 2 – look at this” sort of solution and it seems that every server is just a bit different.

What parts of Web Edition have you struggled to figure out in comparison to desktop apps?


Real Software today announced in their monthly newsletter the public availability of a Web Edition web app that can be launched on their website.  The link is and you get get the source code for the project as well.

This is a decent example of what Web Edition can do for you.  It’s a fairly vanilla application but it’s something to look at and kick the tires of, so to say.  It’s nice to see it finally up as it was exposed to the beta list for a while.

I’ve been using Web Edition for real world projects since last November.  I think if they had developed this app back in November it would be a much more stable and mature product than it has been.

I hope that this is just the first of many such web apps that showcase the product.  Your thoughts?

FTP and Web Edition Applications

This bit of information came to light yesterday.  Some people (in the beta list) were having issues getting their Web Edition apps made in REAL Studio working on their website.  I’ve even had several people contact me offlist asking for help because I have a couple of them working on my (soon to be defunct) web host at: (non-working Chart Director)

The problem it seems is the FTP client they were using to transfer their files to their server.  Their FTP clients were set to Auto in determining the file type and was somehow screwing it up.  They reset their FTP client to transfer files as binary and all is good in their world.  Filezilla seems to have been the culprit for a few of the developers reporting the issue.

Hopefully this post will help others.

REAL Studio Web Edition (or The Son of Swordfish)

First, let me get this out of the way:  I am not a web developer.  My plate is more than full enough developing desktop applications and while I’d *like* to do some web apps, it’s just not in my realm of the probable at this point in my life.  However, I am pretty good at developing REALbasic applications that work well on Mac OS X and Windows (and throw the occasional Linux app in there too).

REAL Software announced today a new version of REAL Studio, called Web Edition, that will be released some time this Fall.  Internally, they called this product Barracuda.  If you know any history about REAL Software, they had an internal product named Swordfish that they announced at their annual developers conference in 2005.  It was never released because it was already obsolete soon after they announced it due to a variety of technologies like AJAX and JAVA and a number of other technologies.   So call this completely rewritten version the “Son of Swordfish”.

I spent three hours playing with an alpha build this weekend and my first impression of the product is good.  Since it’s an alpha build it has plenty of bugs but it is an interesting twist on REAL Studio and REALbasic.  This has the potential of being the first Rapid Application Development environment for web apps that doesn’t require an expensive server as these apps will run on any Apache server or web server capable of FastCGI (not all commercial hosts enable FastCGI on shared servers).

Existing users of REAL Studio will be instantly familiar with the editors and know how to get around.  Since web apps are unlike desktop apps in many ways, there are a number of new objects, classes, and controls that are for web apps only.  There are also some things, like the MsgBox function, that did not work for me but will probably work when it’s released.

Instead of the regular Application object, every REAL Studio web app has a new WebApplication object that handles the open, close and unhanded exception events.  New to the web app is the WebSession object which represents each user that is connected to your application.  It has Open, Close and Reloaded events which, as you can imagine, are similar to what you might do in the Application object in the desktop version since a desktop app supports one user at a time.

Instead of creating windows, you create web pages and you edit them in the web page editor.  It is much like the current window editor but has a new set of controls and new features to go along with it.

One of the first new features you’ll notice is the ability to do in-line editing.  There is a little editor icon to the right of most controls that when selected, brings up an editor for that control and masks out the other controls.  For some controls, like buttons, text fields and so on it simply changes the text you see on screen.  For more complex controls like the listbox, for example, you can add column headings and add default data into the listbox.

In some respects some of these features remind me of how ActiveX controls in Visual Basic 6 used to have their own editor and UI and for the most complex of controls this will be welcome as editing them through the properties list can be tedious.  For the simpler controls (like the button, label, etc) this new inline editor does the same thing as simply selecting the control and starting to type.

The page editor has tweaks on features that are better than the current Window editor such as visually aligning controls and showing spacing differently.  There are also a number of new controls that are pretty common in web apps today: Link which is a label that when pressed opens the browser to a new page; Search Fields which is a rounded TextField that keeps track of last values held; Segmented Button which is a row of buttons that can act like either radio buttons or check boxes.

There are a number of controls that have changed as well.  Pushbuttons are now WebButtons and Checkboxes are WebCheckboxes but act pretty much the same.  The StaticText object has been renamed to the WebLabel (which makes more sense to many developers coming from other languages).  Radio Buttons are no longer individual controls – they are now part of a group and you can specify their dimensions like a listbox (number of columns and rows).  I’m actually on the fence on this one since I see the value in it but could also see it biting me depending upon the complexity of the user interface in the project.

The first release will not come with a proper tab control, unfortunately.  This is disappointing, but you can easily overcome this limitation with a Segment button and using Container Controls.  Just like with the desktop app, I think Container Controls are incredibly powerful, and is a useful way to make complex, reusable ‘window-like’ objects.

Perhaps one of the bigger changes is the removal of the Canvas object.  This was done, I was told, because HTML5 has a canvas object and REAL Software did not want any confusion.  Instead we have the ImageView object which can accomplish many of the same things using its Picture property (the graphics object is gone).  The canvas object may return at some point, however.

One huge change is that in none of the controls or windows can you control the text characteristics or background colors you’re used to expecting in a desktop app.  For that, we now have Styles.  Adding a style is just like adding a new class or anything other object in REAL Studio and when you edit a style you have the ability to change the properties of Normal, Hover, Pressed, and Visited objects (this includes pages).  There, you can control the text properties, border, shadows, padding, corner radii, and opacity.

As you can imagine, this leads to some very interesting interactions that take very little code.  For example, you can create buttons that change color when you hover over them, or change opacity once you’ve clicked on them.  I suspect that this will be a huge deal in the long run as it makes very complex interfaces very simple.

Since there are a ton of things you could do with a web app and no possible way for REAL Software to cover them all, they have a virtual control called PageSource that lets you add pure HTML code, JavaScript, and others, and can be placed in any web page.  It has two properties, the code itself and the location.  You can place it in the Header, Before Content, or After Content.  I imagine that just like for plugins for desktop applications, there could be a market for HTML components for REAL Software web apps.

Placing and dealing with the code behind the objects is just like a desktop application.  In fact, it’s the same code for the most part.  Where things start to diverge is with dialogs.  In desktop applications you create a window and change it’s super to modal dialog or similar, and call it via code.  This was flexible and convenient but created a new window.  Many users have popup windows turned off so this won’t work.

To compensate, REAL Software created a web dialog class that doesn’t create a new window, it just shows up on the current window using some nifty AJAX.  Since the standard MsgBox method did not work in this alpha build I ended up creating my own web dialog and adding it to the page.  After you add it, it is displayed in a new list at the bottom of the window and can be access there.  Otherwise it acts similarly to how dialogs work now.

Debugging an app is easy as well.  Simply hit Run in the IDE and it compiles and runs the web app on the local web server.  It responds to break points and exceptions just like a desktop app and and allows you to interrogate application variables in the debugger.

I’m not sure if web apps will understand the concept of Reports in the first release or not.  If you need to display a report to the user, you could probably accomplish the same thing with a listbox that covers the entire page.

Currently, REAL Studio supports two types of builds.  The first is HTTP and the second is FastCGI.  FastCGI should be more efficient, but might not be for everyone if you’re on a commercial hosting service since many do not support FastCGI.

REAL Studio Web Edition apps work with Safari, FireFox, Chrome and Internet Explorer.  How far back this compatibility goes I’m not sure of at this point.  If you find a limitation, you can use the functions in the Session object to get the browser type, operating system, platform, etc and give corresponding messages.

The Session object also keeps track of the page state so your active web pages won’t be forgotten during a session.  This means that each page is ‘remembered’ which is a very nice feature.  So if you have a Customer page and an Invoice page and the user reloads the page or closes it and returns before the session ends it will load exactly where the user left off.  This is another one of the main features that I’ll like to see in action on a complex web app.

I spent less than a half hour converting a very small calculator application I had originally written as a desktop app.  I spent more time logging the minor bugs (I did say it was an alpha build, right?) I found than I actually did writing the web app.  I have no idea how long it would take to accomplish the same thing in php, Javascript, Ruby on Rails, or ASP.NET, but I suspect the answer is longer.  I’ll be curious to get a true web developers impression.

The one big question that remains is how easy it will be to deploy and install REAL Studio web apps on your server.  I looked up some documentation on my commercial host on how to install FastCGI apps and it did not appear to be for the feint of heart as it required going to the command line on the server.  At this point I do not think there is an option for Single-Click-to-Install.

The Web Edition will become part of the Enterprise Edition of REAL Studio and also as a standalone version for those interested only in web apps.  This addition to the Enterprise Edition really makes it worthy of the Enterprise moniker now.  The web app addition is scheduled to be released sometime this Fall.  With REAL Software’s rapid release plan that could mean either Release 4 or 5.

What do you think about this announcement?  Is your curiosity piqued?