Our Blog, Filemaker only, Xojo only, Archive (older)

Follow us on Twitter, Xing, LinkedIn or Facebook.

Upcoming changes for 2019

We are thinking about some changes for year 2019.

We may drop 32-bit support

DynaPDF just dropped the 32-bit Mac target by moving to Xcode 10, which simply doesn't support it any more. We still compile our plugin for 32-bit via Xcode 9, but that may not be forever. So eventually 32-bit will go away.

DynaPDF licensening

The DynaPDF licensing is set to change early 2019 a little bit. The license prices will change for DynaPDF 5. For existing customers, we suggest to order updates before the changes take effect. You can update with old pricing for up to 5 years now to secure the current pricing.

Another change is also coming. Currently you are not charged for skipped maintenance time, but that is set to change. Adding maintenance years will than start with the end of the existing maintenance period. If you bought a license in 2016 and didn't buy maintenance in 2017 and 2018, you may need to pay for two to three years in 2019 to get up to date. (more)

MBS Xojo Plugins, version 18.6pr2

New in this prerelease of the 18.6 plugins:
  • Changed DynaPDFRasterizerMBS to pre-fill picture in white or black for the flags.
  • Added RotateCoords parameter for DynaPDFMBS.RotateTemplate function.
  • Added more methods to NSURLCacheMBS class.
  • Added NSCachedURLResponseMBS class.
  • Enabled SQLITE_ENABLE_API_ARMOR for SQLite to help reduce crashes with wrong API calls to SQLite.
  • Fixed crash in SQL Plugin when using unnamed fields in SQLite recordsets.
  • Fixed bug with binding empty values on encrypted CubeSQL connection.
  • Removed QuickDraw related picture support.
  • Removed Carbon ColorSync, View, Drag & Drop, Menu, Font, ATS and related classes (Carbon 32-bit only).
  • Removed IconFamilyMBS class and related global methods.
  • The MBS Plugin for Real Studio will be build on demand only.
Download: monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

Fixing broken text encodings in Xojo

Sometimes you may see text like this:

Vielen Dank für ihr Verständnis.

That is a German text saved as UTF-8, than imported in another encoding. We need to cleanup that encoding and I got a nice function for this. We simply try to see if the text in another encoding is valid text and convert it back to UTF-8. Here is the function and it's test method: (more)

XDC 2019 Session List

The 2019 Xojo Developer Conference will take place 1st to 3rd May 2019 in Miami, Florida. The Marriott Biscayne Bay is located in the north side of Miami downtown and is a convenient location to reach most of Miami easily. Registration is possible and current rate is $899 for the ticket.

The session list has been published.
An impressive list with a lot of new speakers. Check your schedule and get a ticket soon, if you can find the time to come.

See also XDC 2019 Session List in Bob Keeney's blog.

Removing 32-bit Carbon GUI classes

As everyone now wants to use Xojo 2018 to get 64-bit, HiDPI and DarkMode on MacOS and the next version of MacOS will properly come without 32-bit support, it may be the time to remove some of the last QuickTime, QuickDraw and Carbon GUI classes.

You can still use Real Studio with current MBS Plugins 18.5, but in future, this would require to use Cocoa target at least.

We remove from MBS Xojo & Real Studiolink Plugins for next release: (more)

MBS Xojo Plugins, version 18.6pr1

New in this prerelease of the 18.6 plugins: Download: monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

Birthday of our video page

Twelve years ago we started created tutorial videos and today our video page has birthday. Enjoy a video and learn about our plugins.

Over the years we collected more than 80 videos. We hope you enjoy them!

Watch Xojo Videos - FileMaker Videos

Youtube channels:

We know we could make more videos. So what wishes do you have?
Please email us or post a comment here.

Links from documentation to blog entries

This blog is running for for over 10 years already. We have a ton of articles here and now we link them to our plugin documentation, FileMaker and Xojo.

In the documentation, when you find a function or class, which has been mentioned in an article, the maximum 10 newest articles will be listed for you to jump right into the blog and read it.

Earlier this year we got the links to CURL documentation, DynaPDF documentation and all our example projects into the documentation.

And with a documentation browsing tool like Dash, you would even find the blog entries there.

For dash documentation we added Interfaces and Plugin parts to the index.
Get the dash docset here for FileMaker and here for Xojo.

Cleanup your C code for MacOS and remove FSCreateFileUnicode

This is a blog article to remind everyone writing application in C to no longer use FSCreateFileUnicode function because it is very slow on APFS in our tests.

Speed tests show a 50 times slower result with APFS and FSCreateFileUnicode function:

Time needed for NSData writeToURL: 0.350506
Time needed for fopen & fwrite: 0.218125
Time needed for FSCreateFileUnicode: 11.721211

each for 1000 files to be created & written in a Xcode project.

For creating the file (not opening and writing!), you get a 11 second wait for 1000 files. Using fopen, the standard C library, you get a much better performance.

For Xojo, it looks like they use FSCreateFileUnicode for TextOutputStream and BinaryStream classes. We got one project run in 5 minutes instead of 2h by just changing the code to write output files. This tool writes something like 100000 files in a run and heavily benefits from any optimization. Reported as feedback case 54276.

By the way our LargeBinaryStreamMBS class in MBS Xojo Util Plugin still uses the old APIs, too. We need it mainly to read/write resource forks on Mac, but as that is going away, it may be good to deprecate that in favor of an optimized BinaryStream from Xojo in a future release?

The problem seems in Apple's implementation to emulate older and deprecated FSCreateFileUnicode with the newer Apple File System. For years they told us to move away from FSRef and really it is time to move. I also reported this to Apple (case 46302303) to let them know that it's slow than they can help to keep old applications performance well by improving it.

MonkeyBread Software Releases the MBS Xojo Plugins in version 18.5

Nickenich, Germany - (November 27th, 2018) -- MonkeyBread Software today is pleased to announce MBS Xojo Plugins 18.5 for macOS, Linux and Windows, the latest update to their product that is easily the most powerful plugin collection currently available for Xojo. MBS Xojo Plugins 18.5 have been updated and now includes over 2500 classes and 63000 documented features, and the versatile plugins have gained more new functions:

This version provides new classes for SmartCards. The new CryptoTokenKit plugin part wraps the framework from Apple to handle smart cards on Mac OS for 64-bit applications. New functions for APDU protocol allow you to read data from various smart cards. This includes reading Swiss health insurance cards, Belgian identity cards and many more. The same functions got added to SmartCardMBS class to do the same cross platform for Mac and Windows with the PCSC libraries.

The ChartDirectory library got updated to version 6.3 with resource loading from memory as well as a lot of bug fixes. We improved our Xojo plugin to better handle HiDPI and return pictures with proper resolution setting.

For MacOS we have new NSTextFinderMBS class and related classes to show search panel. This works for NSTextViewMBS based controls and standard Xojo textarea controls. In both you can show the user search and replace controls like in TextEdit application.

As we now build the plugins with Xcode 10.1 for 64-bit and Xcode 9.4 for 32-bit, we moved the minimum MacOS version required up to MacOS 10.9.

For Windows, we got a few enhancements: New date properties help you in the WindowsFileInfoMBS class. For HTMLViewer control, you can now end browser session with IEClearBrowserSessionMBS and clear session cookies. MAPI Email sending got improved to work better.

The new SGLockMBS module allows you to use dongles from SG Intec. The new KeychainAccessControlMBS class helps with TouchID on MacOS, InstallNSAccessibilityPatchMBS fixes a crash with NSAccessibility and menu classes in Xojo, we got a new CURLSURLMBS class for URL parsing and CIFilter classes updated for MacOS 10.14 Mojave.

Finally we updated CURL to version 7.62.0, DynaPDF to version, OpenSSL to version 1.1.1 for all targets, SQLite to version 3.25.2, SQLAPI library to version 4.2.4 beta 2, LibXL 3.8.3, and zlib to version 1.2.11.

See release notes for a complete list of changes.

Passing an UUID to each app download

There is a lovely trick in GateKeeper and code signing on Mac to pass through an identifier with the download of an application from your website. So for each download, you can associate an UUID with the download, which the app can read after unpacking. You know the UUID on the website, so you can put it in a database and link it to the account of the current user. This way when the app runs within minutes after download, you can link the application to the account without having the user login in the application. You may have seen that with a couple of apps you downloaded before for meetings.

The extended attribute with the UUID is named com.apple.application-instance and put into the application. You read it in Xojo with our ExtendedAttributesMBS.GetRawAttribute plugin function. When you sign the app, you zip the app to an archive. Next you add an "._name.app" file to the archive with the name of your app containing the encoded metadata with extended attributes. We got such a file with zipping an application with the extended attribute using ditto command line tool. Than we extracted the metadata file from the archive without applying it. Than we add this file now with the application zip without compression, so one dummy UUID is there without compressing. On the website, you would have a php script to replace the given UUID in the zip archive with whatever UUID you need for the user.

In short the idea is to have the zip on the server. When someone loads it, you switch the UUID to the new one. Than you let the user download, run the app within minutes and auto login them for their account. A seamless experience for the user!

And the great thing: Changing the UUID in com.apple.application-instance extended attribute will not break the code signing as you can read in TN2206.

MBS Xojo Plugins, version 18.5pr9

New in this prerelease of the 18.5 plugins:
  • Fixed bug with SQLAPI on finding the MySQL libraries.
  • Fixed problem with ? not encoded for email subject line.
Download: monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

Xojo Black Friday Offers

After Thanks Giving in the USA a lot of companies do give some discounts. So currently you can benefit from this Xojo related offers:
  • Save 20% on Xojo licenses in Xojo Store
  • Save 20% on XDC tickets ($799 instead if $999)
  • Save 20% on XDC Videos
  • Save 20% on all third party items in Xojo Store.
  • Save 20% on all MBS Plugins on our website
  • Save 20% on all Xojo Developer Magazine subscriptions and back issues with coupon CYBERMONDAY.
  • Save 20% on all digital books, articles, tutorials at XDevLibrary with coupon CYBERMONDAY.
  • Save 30% on all products from aprendexojo.com with coupon code BF2019.
  • Save 27% on StackView and CSTrueColors from Ulrich Bogun. See forum
  • Save $50 on piDogScrollingCanvas at pidog.com
All savings should be available from Friday to Monday.

We encourage every Xojo developer to add another year to their license, even if it expires in the future.

Survey about European MBS Xojo Conferences 2019

We are checking options for another Xojo related conference in 2019.

Again we look for a place in Germany, but this time we consider whether we go to Cologne instead of Koblenz. Cologne could be a city where people may go for additional days for some sight seeing and entertainment. Cologne will definitive be more expensive than Koblenz, and maybe same as Munich. But if we go there, we need to make that decision soon to reserve the space in advance to get good rates.

Date could be somewhere in October 2019 as spring is taken by Xojo Inc. for their Xojo Developer Conference in May 2019.

If you have time, please fill this survey with just 10 questions. Please leave name/email for further questions. For additional comments, please email us or comment here. Please don't do the survey twice. Thanks.

MBS Xojo Plugins, version 18.5pr8

New in this prerelease of the 18.5 plugins: Download: monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

Xojo Black Friday Sale!

Xojo Inc. runs a sale for Black Friday with 20% off:

The biggest sale of the year for developers!
Everything Xojo is 20% off for one weekend only! That means new licenses, renewals and upgrades are all 20% off this Friday, November 23rd through Monday, November 26th. Also, all 3rd party products and Xojo Developer Conference videos are 20% off! No coupon required.

Save on new licenses, renewals and upgrades.
Xojo licenses are available in the following options:

  • Xojo Pro - Get one license for Desktop, Web, iOS, Raspberry Pi and Android (in development - read an update), plus many extras like priority support and beta access. Also, your Xojo Pro license will work on up to 3 of your own machines.
  • Xojo Desktop - Develop and build apps for macOS, Windows and Linux.
  • Xojo Web - Build web apps that can run on Linux, Windows or macOS servers and support Chrome, Firefox, Safari and Internet Explorer.
  • Xojo iOS - Create native iPad and iPhone apps.
  • Xojo Raspberry Pi Desktop - Build Linux/Pi-native desktop apps you can distribute to others.
Interested in upgrading to Xojo Pro?
You can check your upgrade price here and come back during the sale to save an additional 20%. Upgrades from Xojo Lite to full Desktop are available by contacting Customer service at hello@xojo.com.

Tell Your Friends
Help spread the word about Xojo - tell your friends about this sweet deal to get them started with Xojo. Xojo comes with a 90-day money back guarantee.

XDC 2019 Special Offer
We have already reached the end of our early bird pricing, but we will still offer the special $799 discounted price during this sale! Save $200 though Cyber Monday.

Auto Renew
If your license is set to auto-renew during the sale, you don't need to do anything. Your auto-renewal will automatically process with the Black Friday discount.

*Xojo Cloud is not included in the sale.

If you prefer buying directly from us, please use coupon code ... in the webshop to get the same 20% discount. If your license is up to date, you can still buy an update to add a year of maintenance.

Windows on ARM in 64-bit

With Visual Studio 15.9, Microsoft now supports ARM64 processor architecture as target for Windows software. So Windows now runs currently on 4 architectures: x86 for Intel 32-bit, x64 for Intel 64-bit, ARM in 32-bit and 64-bit. In history Windows NT also run on IA-64, MIPS, Alpha, PowerPC, PC-98 before, so they keep it quite cross platform viable.

Now the big question is whether Xojo Inc. and/or FileMaker Inc. will support the new architecture anytime soon. But if they would, we would of course try to build the plugins for the new platform.

See blog entry from Microsoft.

MBS Xojo Training

Looking back this year we had two group trainings this year for Xojo and seven individual trainings. Alone this November I visited two companies to train them on Xojo. At the MBS Xojo Conference in Munich, Ulrich Bogun did the beginner training, so I could concentrate on the advanced training. If you are looking for training here in Germany, you could ask Ulrich or me for help. Others developers may be available if you ask on the Xojo forum.

Looking on topics, there may be different cases:
  • Getting started in Xojo, starting with a walk though the IDE and building an example application live in front of audience.
  • Kickstart a project by building a prototype together with me. We setup the basics, do a little part so your developer learns how to do it and than adds more similar pages or windows.
  • We debug your application to try to fix a list of bugs.
  • Reviewing your project for possible problems and security holes and make sure you have less problems in future.
  • Learn from the experts advanced features like declares, delegates or interfaces.
  • Learn what we have available in the plugin toolbox to help your applications.
  • Kick start your project by implementing a new feature based on a plugin where you like to have help from the guy who wrote the plugin.
  • Connect a new device (e.g. USB) to your application by creating the interface via plugin.
  • We may even work on a plugin of your company or in a project add a new function to MBS plugins to help you.
  • Assist a new employee and help them developing in Xojo.
To give a few samples, a company flew me in to review the project for two years to fix possible issues before it went public. Another company invited me and we spoke a whole day about what our plugins can do and they took a lot of notes. Second day we implemented a few of the most wanted features directly into their solution. A few clients came to our office and we started a new web app together and put a first version on the server the very same day. Some projects turned out into bigger consulting projects as I wrote the app for them instead of just training. Other clients turned into regularly booking training and providing a todo list of each meeting, so I come for a visit every few months and we work on a todo list of problems they couldn't solve themselves.

Training is available as one to one or group training. It can be organized in your company, in our office or in some hotel. While I may work via phone & screen sharing for some things, I may often need to connect to a database or physical device, so physical presence is sometimes easier than getting a hole in the firewall.

If you are interested in any of this, please get in touch.

SetApp for Xojo Apps

In the last week we made a new Xojo plugin for a client. The plugin allows the integration with the SetApp service. As you may know SetApp allows you to subscribe for $9.99 to a pool of various Mac apps. The money is split each month to the developers based on what percentage of users have the app installed and in use.

When you offer a Mac application though SetApp, you receive your own custom library to link into your app (or a plugin). The library offers functions to report usage, ask user for email and present login or release notes. As the library is different for each vendor, we just build a new plugin for each of them.

If you like to try SetApp as Xojo developer, please visit their developer website.

Machine ID

As you may know we offer MachineID function in our SystemInformationMBS module. That ID is a MD5 of some values of the computer like the Mac serial number, Mac model, CPU Brand string and hard disk serial. But that is not very stable as some people may have seen values change. Especially hard disk serial may sometimes be available and other times not.

So we got a better way as a Xojo project. Our new Machine ID example project uses a SQLite database for preferences and to keep a list of configurations. We use the following 10 values for a configuration: MACAddress, MacModel, HardDiscSerial, MacUUID, WinProductKey, ComputerName, CPUBrandString, Platform, PhysicalRAM and ProcessorCount.

The CheckMachineID method checks if the current values for all of them matches an existing configuration. If yes, we have a perfect match. Otherwise if 9 of 10 values match, we add the new configuration to the database. This way we learn all the configuration and user can change RAM or swap hard disk without breaking the licensing. Only if 2 or more values changed, we would ask for license key or activation via web and than store the new configuration.

Download: MachineID.zip
The example will be included in next plugin prerelease. You may want to fine tune this to your needs.

Please provide back feedback and we can update our example.

Older blog entries:

2018-11-14 MBS Xojo Plugins, version 18.5pr7
2018-11-14 Xojo Script Warning Enumeration
2018-11-13 Welcome Stefanie
2018-11-13 Bugs fixed in ChartDirector 6.3
2018-11-08 MBS Xojo Plugins, version 18.5pr6
2018-11-07 Fix for missing accessibilityIsAttributeSettable function
2018-11-06 Write formatted text with DynaPDF
2018-11-05 ChartDirector 6.3 Released
2018-11-04 IconFamilyMBS class deprecated
2018-11-02 Xojo Stammtisch in Zürich, Schweiz
2018-11-02 MBS Xojo Plugins, version 18.5pr5
2018-11-02 xDev 16.6 Issue
2018-10-28 MBS FileMaker Plugin, version 8.5pr4
2018-10-28 MBS Xojo Plugins, version 18.5pr4
2018-10-27 ChartDirector Plugin with HiDPI
2018-10-24 Xojo 2018 Release 3
2018-10-24 Strange looking PDF in Microsoft Edge and Apple Preview
2018-10-24 MBS Xojo Plugins, version 18.5pr3
2018-10-22 New functions for smart card reading
2018-10-21 MBS Sale for Conferences


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
XML: RSS Feed XML: Atom Feed