Web: Aloe

I saw the demos of “Aloe”.

When I understand it correct: It is similar to Xojo Web, but with Webpages instead of WebApps? That would be great!

Does anyone know a time frame? I have interesting for buying a license.

Link? All I can find with Google is Aloe Vera and some planting game.

I think this might be what Marcel is referring to?


Hi @Marcel Zimmer.

Aloe is a Xojo class and development technique for building scalable Web sites (and apps, too) using Xojo’s Web framework. Perhaps the best way to explain it is by seeing it. I gave a demo at our last VXUG meeting, and a video is online here: http://vxug.org/meetings/

There are a few sites that are running on Aloe, including the VXUG site ( http://vxug.org ), the Virginia Council for Private Education’s new site ( http://www.vcpe.org ), and my wife’s redesigned site ( http://kellydietrich.com ). The VCPE site includes integration with FileMaker and Google Maps (the Schools function in particular), and a new lightweight Xojo-based content management system.

Aloe is evolving very quickly. I’m in the process of developing several additional sites and apps with it. To support those sites, I’ve developed Aloe modules for integration with Airtable, Highrise, Mailjet, and other services.

In terms of a timeframe, I’m hoping to make Aloe available in late August or early September. I’m still working on the details of how best to release it.

If you have any other questions, please feel free to ask.

  • Tim

I’ve been pre-alpha testing some of Aloe and it’s insanely fast and uses almost no RAM. Check out the video Tim linked to that shows his Star Wars Demo to get an idea what Aloe does. I’m excited for Tim to release Aloe in just a few months and to see what modules are available. I hope to develop some modules as well!

As you can see in Tim’s video, Aloe doesn’t utilize Xojo WebPages, but rather takes advantage of sending the user HTML via HandleURL. The FormField class includes several HTML Form Elements and Aloe makes Sessions and Posted Form Values easy to work with. Presenting data in HTML Tables and working with Forms is super easy!

cool !

I think remember that handleUrl is quite slow in the web framework. As there are more and more projects using only handleUrl, perhaps it would be a good idea to have a “Web Services App” option in the WE framework.

With this option enabled, The framework would give all the priority to HandleURL and disable page management for example.

Maybe it was slow in the past, but it’s super fast now! It might also depend on your internet connection and how far your data is from the Web App. Tim and I are using Amazon Aurora for MySQL. When I run the Web App on my laptop and hit Aurora which is far away, I see lag, but when I run the same Web App on Amazon Lightsail it’s really fast. I don’t have any numbers though…

Goog news, but with how many simultaneous requests (and without the cache)?

More research is needed, but there are already two threads:



Aloe is pretty cool from what I’ve seen. However it wouldn’t help us with a large project we worked on. It’s a secure file sharing service that handles files from 2-4 GB in size. The App.HandleURL event only fires after the request is completely uploaded. Such large file uploads kills the app due to memory.

I ultimately built a brand new web server in Xojo that allows us to parse the data as it comes in. Another side benefit of it is we can shut down errant connections based on their headers before being flooded in a DDoS attack.

It is really neat to see Xojo Web being extended in unique ways. Reminds me of Rapid Services and how we extended Xojo Web for fast REST endpoints.

xDev article?

I’ll consider it for sure!

@olivier v: I’ve done some pretty intense load testing on Aloe-based apps, and it seems to handle heavy loads quite well. I’ve done testing against both static and dynamic pages, including a few whose content is based on remote databases (FileMaker, MySQL / Aurora, Airtable). The apps have been compiled as stand-alones for 64-bit Linux, running on Amazon Lightsail servers, behind Nginx (which is acting as a reverse proxy and handling SSL termination). And while I do have a cache module that I’ve developed for Aloe, all of the tests were done without any caching. Speed and scalability haven’t been an issue. If it ever does become an issue, I could throw load balancing into the mix.

@Phillip Zedalis: Agreed, Aloe isn’t designed to deliver large files. It can handle them, but not efficiently. I’ve found it best to move any larger static resources (images, videos, etc) to a content delivery network, or to something like an Amazon S3 bucket at the very least. Regarding DDoS attacks, Aloe is vulnerable to them. I don’t know that there’s anything we could do to prevent or mitigate those.

I’ve thought about moving Aloe from the Web framework to a console app, and might do so at some point. But with the way that Aloe uses the Web framework’s HandleURL method, we get conveniences that the framework provides (handling of sockets / WebRequests in particular) with little to no overheard.

My primary goal with Aloe was to be able to use Xojo as the backend for Web sites, and in some cases, Web apps. It has certainly changed the way that I approach client work. And best of all, gone are the days where I’d have to use PHP for these types of projects.

[quote=339816:@Tim Dietrich]My primary goal with Aloe was to be able to use Xojo as the backend for Web sites, and in some cases, Web apps. It has certainly changed the way that I approach client work. And best of all, gone are the days where I’d have to use PHP for these types of projects.

I love this idea!

Great stuff, I’m definitely interested.
The link http://timdietrich.me/blog/introducing-aloe/#mailmunch-pop-254832 (to subscribe to the newsletter) doesn’t appear to work.
What I was sort of missing in the demo is how you read user entered data back into Xojo. Do you parse the entire page?

@Maximilian Tyrtania : Sorry about the newsletter link not working. My site is a mess right now. I’m converting it to Aloe, and making significant changes to my business as well. I suppose it’s an example where “the cobbler’s children have no shoes.”

You asked about reading “user entered data back into Xojo.”

When a request is received, Aloe automatically creates both GET and POST dictionaries. For example, you might refer to a value that was posted via a form using Aloe.POST.Value("OrderID"), or to a URL variable using Aloe.GET.Value("OrderID").

I’ve also developed a class for processing file uploads, but I try to avoid it. Instead, I recommend using something like Filestack ( https://www.filestack.com ), which provides a nice UI and offloads the processing from the Xojo app. I have a class for Filestack as well, and the code for implementing the UI looks like this:

// Create a Filestack field. Dim FS As New Filestack FS.APIKey = YourFilestackAPIKey FS.Services = "'COMPUTER', 'GOOGLE_DRIVE', 'DROPBOX'" FS.HTMLGenerate

After a file has been uploaded and the form has been submitted, you can access the Filestack values using Aloe.POST.Value("filestack-url"), Aloe.POST.Value("filestack-filename"), and so on.

Let me know if you have any other questions.