Happy Easter 2018

Spending a few days in Bavaria (guess which city), before the trips to Hamburg, Stockholm and Denver...

Wir wünschen frohe Ostern

Happy Easter - Buona Pasqua - Feliz Pascua - Joyeuses Pâques

Query all threads in Xojo app

As you may know Xojo has internally a list of all objects, but does not provide an official way to quickly (!) query all thread objects. Of course we could manage ourselves a list of thread objects, but that is inconvenient for projects with a lot of thread subclasses. A few years ago I made a feature request for a threads list: Feedback Case 26912.

As we just needed this today, we got the following function to find all thread objects in memory. We need this in an app to cancel all transfers when the app is quitting:

Function Threads() As Thread() #pragma DisableBackgroundTasks true dim threads() as Thread Dim o as Runtime.ObjectIterator = Runtime.IterateObjects While o.MoveNext dim v as Variant = o.Current if v isa Thread then threads.append v end if Wend return threads End Function

Sadly runtime's IterateObjects method is quite slow as it does some introspection stuff which takes a lot of time (see Feedback case 47148. Probably to filter some objects from the list, which we should not see here. But maybe the method above is still useful for you?

Xojo Stammtisch in Berlin

On my next visit to Berlin, I'd love to make another Xojo developer meeting:

Wer hat Interesse an einem Xojo Entwicklertreffen am Anfang Juni in Berlin?

Einfach gemütlich zusammen sitzen in einem Restaurant oder Biergarten und über Xojo schnacken.
Gerne zeige ich auch neue Pluginfunktionen oder helfe bei Problemen mit Xojo Projekten. Einfach Computer mitbringen und was zeigen.

Bei Interesse bitte eintragen in die Umfrage hier: Berlin Stammtisch

Arbed 1.8.7 updated for Xojo 2018r1

Thomas Tempelmann recently announced a new version of Arbed. As Xojo evolves over time and changes the file format, Arbed as to be updated to recognize any changes in the format. The new version knows about the most recent changes in the upcoming Xojo 2018r1.

Every Xojo developer should have it in his tool chain and enjoy the features. It has many features and depending on your needs, you may decide which feature is worth the price. For myself i mostly use it to automatically convert my example projects to HTML files to include them in the documentation. In other cases Arbed helped to recover corrupted project files and to compare two versions of a project which have been modified independently without version tracking software. It is also useful to bundle a project with all required files if you need to send a project to a client.

Arbed is highly automatable and can be scripted. You can call it from command line in your shell scripts to do various actions in batch operations. If you need, you can use it to obfuscate strings (e.g. SQL queries) in your application or prepare it for localization. Anything automated which saves a few hours is worth the money.

Arbed is available on tempel.org for $29 or $89 USD.

CURL birthday and conference

Today CURL library and command line tool turns 20 years old. It's a long time in software business and a great success with curl on nearly every computer device on earth as it ships for example with MacOS, Google Chrome, Linux, Android and others.

Since January 2007 and the MBS Xojo Plugin 7.0, we do include CURL for up- and download via ftp/http.

Since January 2012 and the MBS FileMaker Plugin 2.5, we include CURL functions for FileMaker.

And as far as I see, FileMaker Inc. added CURL right to the database engine with version 11 of FileMaker, but only added CURL options for Insert From URL script step with version 16.

See blog post from Daniel Stenberg.

For mid April we have the CURL conference on the agenda in Stockholm. Please join it if you like to learn more about CURL. See announcement and wiki page.

Interested in a meeting for FileMaker or Xojo?
See blog post for FileMaker meeting and Xojo meeting in Stockholm.

Under the Radar Podcast

Over the last year I enjoyed listening to all of the episodes of the Under the Radar podcast.

Originally pointed to by Paul Lefebvre's tweet, I quickly subscribed as they talk about various topics for independent app developers and those episodes are very interesting. They face similar issues as myself and so I like to hear their solutions.

Thanks to David Smith and Marco Arment for their apps and the podcast.

And thanks to Xojo Inc. for supporting the shows. Xojo is sponsor for the current episode #123: WWDC 2018 Preview, Watch Stats. And you can get a 20% off for Xojo licenses with coupon code RADAR2018.

Do you like this podcast?

PS: Coupon code updated.

MBS Plugin classes for use on Raspberry Pi

Did you know we compile all our plugins to run on Raspberry Pi, too?

Of course classes for Mac and Windows will do nothing on Linux, but you can still have them in the code and they will not cause compile errors. This allows cross compilations from Mac to Linux or other way around.

The following MBS Plugins can be used on a Raspberry Pi:
And in the documentation, you can click on a list of classes and than click on the Linux platform, which hides all the classes that won't work on Linux.
The Linux plugin includes the RaspberryPiCameraMBS class to get pictures on a Raspberry Pi camera, the avahi classes for finding devices on the local network, the GTK window classes, the WebKit HTMLViewer extensions and help for sudo. Enjoy!

Baseball before XDC

If you join the Xojo developer conference in Denver this year, you have the chance to join the Rockies vs Padres, April 24th game right in the Coors Field stadium.

If you like to attend a Major League baseball game on Tuesday, April 24th at 6:40 PM along with other friendly folks, please sign up here:


The stadium is just a few blocks to walk from our confernece hotel. 

Philippe Casgrain is kind enough to buy us a block of tickets to watch the game together.

See forum thread.

Six months till European MBS Xojo Conference in Munich

The early bird offer is set to expire in today (6 months before conference) for our European MBS Xojo Conference 2018 in Munich. If you like to join for the best rate or become a speaker, please contact us soon.

Already over 25 attendees are registered from six countries and the schedule is filling quickly. Reserve your ticket and reserve your hotel room as soon as possible.

The schedule:

Sep 5th: Xojo Training in English
Sep 6th: Conference, first day with dinner event
Sep 7th: Conference, second day
Sep 8th: Xojo Training in German

We all look forward to Android, new Web Framework other news in the keynote at XDC.

Registration is open. The early bird offer available till 7th March is just 499 Euro plus VAT if needed. Attending the conference costs regularly 699 Euro plus VAT, including food and beverage in the Maritim Hotel as well as an accompanying social program.

Sessions are to be held in English. Our conference is conceived as a networking event for the Xojo community. The conference is an ideal opportunity for sharing your thoughts and your own development experience with fellow users and developers. If you like to hold a presentation, please contact us as soon as possible.

MonkeyBread Software Releases the MBS Xojo Plugins in version 18.1

Nickenich, Germany (March 6th, 2018) -- Monkeybread Software releases version 18.1 of the MBS plug-in for Xojo.

The MBS plug-in comprises a collection of several plug-in parts which extend the Xojo (Real Studio) development environment with 2,300 classes featuring over 60,000 documented functions. Our plugins support all three platforms Mac OS X, Windows and Linux with all project types desktop, web and console including 64-bit and ARM targets. Some of the highlights on the 18.1 update:

libusb is a library for C developers, which provides generic access to USB devices. You can use it within your normal applications on various operation systems including Linux, MacOS and Windows. All USB versions from 1.0 to 3.1 are supported. The MBS Xojo USB Plugin now contains the classes to use LibUSB in Xojo. It joins existing classes for HIDAPI to talk to USB HID devices, our classes for smartcard readers and various dongles.

For better compatibility to future MacOS versions, we reduced dependencies to the Carbon frameworks for our 64-bit plugins. 16 of 472 plugin parts still need Carbon framework in 64-bit, e.g. for Apple Events, Carbon Events and Timers.

If you use our PHPMBS class, you can now enjoy getting detailed error messages when execution fails. The callback from PHP to Xojo can now be reached via CallXojo method, which triggers the Callback event.

Our Java loading code has been updated for version 9 of the Java Runtime Environment. You can now use all Java versions from 1.4 to version 9.

The SQL Plugin got improvements with fixes in the exception handling for the Linux ARM target. For prepared statements, we added support for binding dates with the Xojo.Core.Date class. Our plugin now works with both SQL Anywhere API in version 1 and 2. The new Options dictionary for SQLDatabaseMBS, SQLConnectionMBS and SQLCommandMBS allow you to inspect all set options defined for connection or command. Finally connections can now be reused properly.

For MacOS, we got the StoreKit classes updated for new classes in MacOS 10.13.2 and support for offering trials. Several improvements with threading should fix issues you may have seen with Store transactions.

The Cocoa textview and Xojo textarea controls can now use the NSTextListMBS class on MacOS to handle lists within texts. Lists can be ordered or unordered and use various styles. NSParagraphStyleMBS and related classes have been updated to help define proper list styles.

The new WindowsDisplayMBS class allows you to check the available displays on Windows in detail. Beside listing which adapter has which display from which manufacturer, you can now also detect physical size of the display as well as the physical resolution.

Enjoy improved email sending, better channel handling for PictureMBS class, 64-bit upgrade for EncryptMBS class, better MeasureRotatedTextMBS function on Windows and improved CURLSMBS.SetupAWS function for Amazon S3 and Dell ECS.

Finally we updated the CURL library to version 7.58.1, DynaPDF to version, LibXL to version 3.8.2, SQLite to version 3.22.0, the JPEG library to version 9c and LibTiff to version 4.0.9 including support for BigTiff format.

See release notes for a complete list of changes.

Microsoft SQL Server connectivity

See newer article: Crossplatform connection to Microsoft SQL Server in Xojo

Sometimes you need to connect to Microsoft SQL Server and you know it's not as easy as with MySQL or PostgreSQL. SQL Server is a bit different which makes trouble and things more difficult.


On Windows we can just connect with "WIN-TEST\SQLEXPRESS@test" here and use Windows authentication. WIN-TEST is the name of the windows machine, SQLEXPRESS the name of the instance of the Microsoft SQL Server. After the @ comes with name of the database.

If we disable Windows authentication and enable login via name and password, define a new login "test" with password "hello123" and than we can just connect on Windows using the following code:

dim con as new SQLDatabaseMBS con.Option("UseAPI") = "ODBC" con.DatabaseName = "SQLServer:WIN-HO9KHI2N15T\SQLEXPRESS@test" con.UserName = "test" con.Password = "hello123" con.Scrollable = false // disabling scrolling cursors is much faster for Microsoft SQL Server... if con.Connect then Msgbox "Connected" Else Msgbox con.ErrorMessage end if
This does work on Windows PC. The same connection also works with TCP/IP as "tcp:\SQLEXPRESS,1433@test". As you see we use IP here and the port 1433 separated by a comma. For this to work, the server must explicitly be configured to allow TCP/IP connections and to listen on the IPs of the server with the given port. This works well from a second PC.


On MacOS, we can use the freetds library. On our website, we have a copy for you to download (http://www.monkeybreadsoftware.de/xojo/download/plugin/Libs/). We can use the ODBC connection type and the libtdsodbc.dylib library file. This library file allows us to make a ODBC style connection directly to the Microsoft SQL Server giving the port, IP and database name:

dim con as new SQLDatabaseMBS con.Option(con.kOptionLibraryODBC) = "/Users/cs/Desktop/libtdsodbc.dylib" con.DatabaseName = "ODBC:DRIVER={FREETDS" + path + "};Server=;Database=test;TDS_VERSION=7.2;Port=1433" con.UserName = "test" con.Password = "hello123" if con.Connect then Msgbox "Connected" Else Msgbox con.ErrorMessage end if

To connect on Linux, we need to install tds for ODBC, e.g. with the command "sudo apt-get install tdsodbc".
dim con as new SQLDatabaseMBS con.DatabaseName = "ODBC:DRIVER={FreeTDS};Server=;Database=test;TDS_VERSION=7.2;Port=1433" con.UserName = "test" con.Password = "hello123"
If you have no odbcinst.ini file in /etc, you can specify the .so library directly in the connection string instead of {FreeTDS}, you would specify libtdsodbc.so directly. If everything works fine, you get your connection and all texts send/received. There is a problem that freetds can be compiled for UTF16 or UTF32 and if it doesn't match your iODBC compilation setting, it will fail to pass any text.

MBS Xojo Plugins, version 18.1pr6

New in this prerelease of the 18.1 plugins:
  • Added check for PictureMBS.DataStringInFormat to raise exception if you try to request too big memory blocks.
  • Added LogPixelsY and LogPixelsX properties for WindowsDisplayMBS class.
  • Reduced plugins linking to Carbon framework for 64-bit.
  • Changed WindowGroupMBS class to raise exception if used in Cocoa project.
Download: monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

xDev Magazine Issue 16.2

The March/April (16.2) issue of xDev Magazine is now available. Here's a quick preview of what's inside:

Motor Control by Eugene Dakin
Have you ever wanted to control a motor with a Raspberry Pi? In this tutorial, Eugene shows you how to do it.

Making PDFs by Marc Zeedar
Converting documents from one format to another is complicated. Why not let a web service handle the dirty details for you? It's cross-platform and your users won't care how you do it. Convert from Markdown or HTML to PDF and other formats.

Scripting Stock Prices with Xojo by Marc Zeedar
Just getting stock prices is only the first step -- what do you do with those once you've got them? How about a scripting language that lets you work with that information to create reports and analysis? Check out Marc's StockScripter app.

A Predicate For Data, Part 1 by JC Cruz
Jose starts a new series explaining about data predicates -- what they are and how to incorporate them in your own projects.

Plus: Xojo community, PITR, Xojo encrypting, a custom code formatting script update, and more!
The biggest plugin in space...


Apr 2024
Mar 2024
Feb 2024
Jan 2024
Dec 2023
Nov 2023
Oct 2023
Sep 2023
Aug 2023
Jul 2023
Jun 2023
May 2023
Apr 2023
Mar 2023
Feb 2023
Jan 2023
Dec 2022
Nov 2022
Oct 2022
Sep 2022
Aug 2022
Jul 2022
Jun 2022
May 2022
Apr 2022
Mar 2022
Feb 2022
Jan 2022
Dec 2021
Nov 2021
Oct 2021
Sep 2021
Aug 2021
Jul 2021
Jun 2021
May 2021
Apr 2021
Mar 2021
Feb 2021
Jan 2021
Dec 2020
Nov 2020
Oct 2020
Sep 2020
Aug 2020
Jul 2020
Jun 2020
May 2020
Apr 2020
Mar 2020
Feb 2020
Jan 2020
Dec 2019
Nov 2019
Oct 2019
Sep 2019
Aug 2019
Jul 2019
Jun 2019
May 2019
Apr 2019
Mar 2019
Feb 2019
Jan 2019
Dec 2018
Nov 2018
Oct 2018
Sep 2018
Aug 2018
Jul 2018
Jun 2018
May 2018
Apr 2018
Mar 2018
Feb 2018
Jan 2018
Dec 2017
Nov 2017
Oct 2017
Sep 2017
Aug 2017
Jul 2017
Jun 2017
May 2017
Apr 2017
Mar 2017
Feb 2017
Jan 2017
Dec 2016
Nov 2016
Oct 2016
Sep 2016
Aug 2016
Jul 2016
Jun 2016
May 2016
Apr 2016
Mar 2016
Feb 2016
Jan 2016
Dec 2015
Nov 2015
Oct 2015
Sep 2015
Aug 2015
Jul 2015
Jun 2015
May 2015
Apr 2015
Mar 2015
Feb 2015
Jan 2015
Dec 2014
Nov 2014
Oct 2014
Sep 2014
Aug 2014
Jul 2014
Jun 2014
May 2014
Apr 2014
Mar 2014
Feb 2014
Jan 2014
Dec 2013
Nov 2013
Oct 2013
Sep 2013
Aug 2013
Jul 2013
Jun 2013
May 2013
Apr 2013
Mar 2013
Feb 2013
Jan 2013
Dec 2012
Nov 2012
Oct 2012
Sep 2012
Aug 2012
Jul 2012
Jun 2012
May 2012
Apr 2012
Mar 2012
Feb 2012
Jan 2012
Dec 2011
Nov 2011
Oct 2011
Sep 2011
Aug 2011
Jul 2011
Jun 2011
May 2011
Apr 2011
Mar 2011
Feb 2011
Jan 2011
Dec 2010
Nov 2010
Oct 2010
Sep 2010
Aug 2010
Jul 2010
Jun 2010
May 2010
Apr 2010
Mar 2010
Feb 2010
Jan 2010
Dec 2009
Nov 2009
Oct 2009
Sep 2009
Aug 2009
Jul 2009
Apr 2009
Mar 2009
Feb 2009
Dec 2008
Nov 2008
Oct 2008
Aug 2008
May 2008
Apr 2008
Mar 2008
Feb 2008