Have you seen the updated roadmap from Xojo Inc.?
It now listed ARM64 for Linux as an item they work on. This currently number 2 in the feedback user favorites. We are very happy Xojo Inc. finally schedules this feature for implementation. We asked for that long ago.
The feature request 42794 was created in 2016 when Raspberry Pi 3 with 64-bit CPU got available. While most Raspberry Pi computers still work in 32-bit for compatibility, you can run the newer ones with 64-bit Debian Linux distribution. And since Amazon provides ARM based server hardware for their AWS EC2 service, you may enjoy using those machines with Xojo applications soon. AWS with ARM are priced lower compared to Intel based systems. Finally Apple's recent M1 Macs run virtual machines with Linux, which could also benefit from Xojo applications.
For our plugins we have Linux ARM 64-bit support already. All our plugins are built for arm64 and wait here for a future Xojo version to test. Of course we need a newer plugin SDK, which may introduce this target and clarify a few things like the updated plugin structure.
See older blog post Build System Updates for new targets, Building for future Xojo targets and Building plugins for Linux on ARM.
Please know that the roadmap lists various items Xojo Inc. works on, but not all and not necessarily in the order they ship. The listed items tend to be the ones, which takes multiple releases to get finished. Smaller items, which can be done in a few days by an engineer, may not be listed there.
Client contact us in various ways. Mostly email, but some go via website chat, feedback form, text/iMessage/Signal messages, some use Skype or send private messages on LinkedIn, Facebook, Twitter or Xing. All the messages usually arrive and we get notified. But sometimes it fails.
If you don't get an answer within a reasonable time, e.g. 2 days, please contact us again using an alternative way. The idea with 2 days is that there may always be a holiday or time in an airplane while traveling, where we have no chance to look into your message.
Recently we had a client putting several support requests into a web form on our website which all were not delivered. Not sure what the outage was that let a few of many messages not come through. Other clients sent messages before, in-between and after and those worked. If the web form doesn't work, please come back via email. The client was of course very disappointed, but waited weeks before they contacted us via email about this. We could have helped quicker.
One thing not to forget is to put our domain monkeybreadsoftware.de on a white list for your spam filter or add our support email address to your contacts. This may prevent spam filters to block us. Regularly our emails get blocked and answers or even license key delivery fails. A way to overcome that is to provide a second email for us, so we can answer to that one. And finally typing your own email address into a form can be difficult. If we have you in the database or a previous email, we can correct a typo, but for new clients, we often have no way to answer them.
We also encourage users to post on the relevant forums. The community may help with questions about our plugins and often answer quicker than us. But even while we monitor a dozen forums for new posts regularly, we may still miss a message there. But feel free to refer to @Monkeybreadsoftware in your postings to call us specifically.
As always, please don't hesitate to contact us if you have questions.
We had NSSpellCheckerMBS class for macOS for years. But for Windows we had a missing spot in our class lists. Microsoft added spell checking for Windows 8 as a system wide service.
For MBS Xojo Plugins in version 21.2 we add the WinSpellCheckerMBS class to check for supported languages. Pick a country & language specification and initialize a new spell checker. Then you can check some text for error sand get an array of WinSpellingErrorMBS objects. Spell checking may suggest direct replacements, deletions or showing suggestions. We do have a Suggest() function to ask for suggestions and show them the user.
If you like, you can define auto corrections, ignore words and add words to teach the engine your custom words. Optionally you can use user dictionaries.
In general the functions work on Windows 8 and newer except a few newer functions like the Remove method, which needs Windows 10.
Please try and let us know how it works. You may need to develop your own integration to show in text area what is mistyped.
New in this prerelease of the 21.2 plugins:
- Added classes for spell checking on Windows: WinSpellingErrorMBS, WinSpellCheckerOptionDescriptionMBS and WinSpellCheckerMBS.
- Updated HIDAPI library to version 0.10.1.
- Removed WriteAsync for HIDAPIDeviceMBS class.
- Added GetInputReport and VersionString methods to HIDAPIDeviceMBS class.
- Changed iOS Simulator plugin parts to be universal.
- Added more key getters for NSURLMBS class.
- Added constructor for string to SQLDateTimeMBS class.
- Updated SQLAPI to version 5.1.4b6 with new DuckDB support.
- Patched SQLAPI to parse timestamps with fraction better.
- Added new constructor for CKDatabaseMBS class to create a copy with your subclass.
- Updated DynaPDF to version 126.96.36.199.
- Added ChangeFontEx function to DynaPDFMBS class.
- Added kcoDefaultNormalize, kcoDefaultPDFA1, kcoDefaultPDFA2, kcoDefaultPDFA3 constants for use with CheckConformance function to DynaPDFMBS class.
- Updated CURL library to version 7.76.1.
Or ask us to be added to our shared Dropbox folder.
For my birthday last Sunday I got a lot of nice emails, greetings and comments. But a few people went further and surprised me with letters, cards and even some presents!
We collected them all and put them on a fish net in the hallway, so we can remember them.
Thanks everyone for your good wishes and heart-warming texts. The Xojo people for example printed a special postcard with several pictures with me and staff on it.
See you all soon on the next conferences!
New in this prerelease of the 21.2 plugins:
- Added CopyCellValue method to XLSheetMBS class.
- Changes NSAttributedStringMBS and NSColorMBS classes to not reference macOS only function selectors.
- Changed parser in JSONMBS to be accept leading zeros on numbers.
- Updated DynaPDF to version 188.8.131.52.
- Implemented MacMousePositionX and MacMousePositionY functions for RemoteControlMBS module for macOS 64-bit.
- Added WinMouseClick taking integer parameters to RemoteControlMBS module and deprecated the boolean variants.
- Added TypoAscender and TypoLeading properties to DynaPDFFontMetricsMBS class.
- Added userDidAcceptCloudKitShareWithMetadata event for NSApplicationDelegateMBS class.
- Enabled RabbitMQ plugin for iOS.
Or ask us to be added to our shared Dropbox folder.
New in this prerelease of the 21.2 plugins:
- Added CDViewPortControlBaseMBS class and new RealTime ViewPort example for ChartDirector.
- Added code to use ICU libraries for SQLite. See new properties on InternalSQLiteLibraryMBS module.
- Added DynaPDFHeaderFooterMBS class.
- Added GetInfoReferer, OptionDOHSSLVerifyStatus, OptionDOHSSLVerifyHost, OptionDOHSSLVerifyPeer to CURLSMBS class.
- Added more methods to NSToolbarItemMBS and NSToolbarMBS classes.
- Added more NSVisualEffect* constants for NSVisualEffectViewMBS class.
- Added more properties for NSSharingServiceMBS class.
- Added new NSImageScale constants to NSImageViewMBS and NSImageCellMBS classes.
- Added optional ContentTypeMethod as parameter for AddAttachment in CURLEmailMBS class.
- Added RabbitMQ plugin wrapping the RabbitMQ message broker.
- Added scaleTo method for CIImageMBS class.
- Added workaround for error 561 in BarcodeGeneratorMBS class. We lower ECC level now if text doesn't fit otherwise.
- Changed CURL classes to not print password for SFTP transfer in debug log. Left overs from debug session in 21.1 betas.
- Changed DrawRotatedTextMBS, MeasureRotatedTextMBS and DrawCGPDFDocumentMBS methods to use newer API to get the CGContextRef for drawing.
- Changed functions returning CVImageBufferMBS to return CVPixelBufferMBS if the image buffer contains pixels.
- Enabled math and geopoly functions for internal SQLite library. see InternalSQLiteLibraryMBS
- Fixed a problem in CURL with OptionSSLKeyBlob in CURLSMBS not working correctly.
- Fixed an issue with Optimize method in DynaPDFMBS class complaining about no open output file.
- Fixed problem in UDPSocketMBS class with stack overflow exception if you happen to call poll within DataAvailable event.
- Fixed problem with NSAutoreleasePool problem with App Store.
- Fixed scaling issue with CDViewPortManagerMBS passing port size.
- Fixed scaling issue with setTickDensity method in CDAxisMBS.
- Rewrote DeclareCallBackMBS with a thread safe queue for asynchron mode.
- Updated CURL library to version 7.76.0.
- Updated DuckDB to version 0.25.
Please note that the binary format for files is not compatible with older version. Please export and import into new database.
- Updated DynaPDF to version 184.108.40.206.
Or ask us to be added to our shared Dropbox folder.
1st April 2000 I founded my company. Well, I registered as a business by getting my business registration (Gewerbeanmeldung) here in Germany.
That was 2 months before I finished school (Gymnasium). While alternative civilian service (Zivildienst) and my time at the university, the company run well and I didn't have to depend on my parents or student loans. Actually the company got me so busy over the years, that I spend less time at university and since 2007 this is my full time job.
I had a few clients in that time interested in development in REALbasic, a very young development environment which started two years earlier. At that time I had a website with a few freeware utilities, so people could see that I can do development. Two years later the demand for plugins got so high, that end of 2001 I started publishing my own plugins. And since 2006 I got into FileMaker Plugin development.
Thanks everyone for supporting me over the years!
PS: If you need a new license this weekend, use coupon code Birthday for an 21% discount.
In a good tradition to inform about a new Xojo release, please let me point to what's new and special. My point is different than the official announcement and I look forward to see other fellow Xojo developers to publish blog articles about their views.
Announcement Release Notes Download Announcement in Forum
The new release brings a few well needed bug fixes, a few new items and a few nice goodies for us. First the IDE itself is built for Apple Silicon, so you can enjoy native speed on the new Macs from Apple. On the way to this goal, the XojoScript plugin got updated for Apple Silicon and helpers are now built with Apple Silicon support. Xojo Inc. got their own LLVM based compiler to output code for Apple Silicon, update the linker and also the just-in-time compiler in XojoScript. Kudos to Xojo Inc. as they are one of the first to fully support the new CPUs.
A big change is the rewrite of JSONItem class. Under the hood they now use a C++ library alle yajl internally. This makes the JSON processing a lot faster in Xojo, but has a bit different behavior. Some of the subtile changes may cause trouble, so please try with your projects and see the improvements. Testers found and reported a few possible issues and Xojo Inc. already fixed them. There should be a big upside on performance with a little downside of smaller behavior changes. Web 2 benefits greatly from this change and gets a performance boost internally. Speaking of Web 2, the WebLocation control is back. Hurray!
If you do iOS, you may be happy to see that Apple no longer complains about some bundle identifiers used for the plugins. Now you can submit your Xojo app to the App Store once again including various plugins. Plugins enabled for iOS include the XML, SSL Socket, SQLiteDatabase, RegEx, Encodings and Crypto ones within Xojo itself.
The new UserAuthentication class looks interesting to do authentication via face or finger print on supported devices. But as far as I see it uses the same API as we do for our LAContextMBS class, which works for macOS and iOS.
The Web 2 framework got a lot of attention with new controls, a lot of bug fixes and small improvements. We still have to wait for something like a style editor and a way to get old projects migrated preserving the custom styles for individual controls. And we still have a couple of leaks in the web framework, but looks like they are not yet found and fixed. For the time being you may enjoy an improved WebFileUploader performance and the JSON speed-up.
MBS Plugin 20.5 and newer should work fine. Older versions may run into issues. Please check release notes for our plugin to learn what we changed over time. For iOS development with our plugins, please use version 21.1. Remember that our current 21.1 plugins support Xojo from version 2006r4 to 2021r1.
Nevertheless, this is a solid release and we used it for a few things the last weeks and had no issues with our projects. Please try it and report feedback to Xojo soon. What have you noticed?
We have a new video with a quick demonstration of a new example project for our MBS Xojo ChartDirector Plugin.
For next MBS Xojo Plugins we add a new RabbitMQ plugin part to wrap the open source RabbitMQ C library and bring the functionality to Xojo.
RabbitMQ itself is an open-source project implementing a message-broker software. It's a server software to do message queues and then there are various clients available to use the services.
We got a couple of classes for you:
We built the plugin for all platforms we support, which includes macOS, iOS, Windows and Linux for both 32/64 and Intel/ARM targets. We include OpenSSL library, so you can use with and without SSL options. As usually the plugin handles memory and error management and hides a couple of low level stuff, especially all the value serialization with arrays, tables and variants.
Coming soon for 20.2 pre-release for you to test. Let us know if you have questions.
Let me explain how to get started with MBS Xojo DynaPDF Plugin.
But first what is DynaPDF?
The DynaPDF library is a full featured PDF library for C developers and we provide you a Xojo integration as a plugin. With DynaPDF you get functionalities to create, edit, merge, analyze or sign PDF files within your Xojo application. With DynaPDF you can e.g. write an invoice for your customer in which you integrate a barcode with payment information and attach the always same terms and conditions to the PDF document. This invoice can also be converted to PDF/A for archiving purposes.
While your users can open a PDF and do some operations in Acrobat Reader (or the full Acrobat product), our plugin allows you to do things automatically in your code. You write the code to use the plugin to apply changes to many PDFs. Like process a folder of 100 invoices, extract text from each and look for vendor names in them to tag them automatically. Or use regular expressions to find the bank account and amounts.
If you want to use the MBS Xojo DynaPDF Plugin, you need a suitable license of DynaPDF and the MBS Xojo DynaPDF Plugin. You can of course just test the plugin without a license and try all functions before you order. There are four different license levels available for DynaPDF. Which license you need depends strongly on which methods you plan to use. For example, if you only want to insert links in a new PDF document, a starter license is sufficient. If you also want to add a page to an existing PDF document, you need a Lite license for the import feature. If you want to read images from existing PDF files or import single PDF pages from another PDF document, you need a Professional license. Same applies for rendering pages for display or printing. With the additional PDF/A converter license, you get the possibility to convert already existing documents from PDF to PDF/A. All MBS DynaPDF licenses can be used for Xojo, FileMaker, C/C++, C#, Delphi, Lazarus, PHP, VB, VBA, and VB .Net with the appropriate DynaPDF versions. (more)
Our MBS SQL Plugin turns 12 years old today.
Over the years we got requests for alternative database plugin classes for use with Xojo (formerly REALbasic). In 2009 a client requested a native plugin for Microsoft SQL Server, so we started writing a SQL Plugin and got a deal with SQLAPI to use this C++ library as the base of the plugin. Over the years, we contributed lots of changes and bug fixes and helped funding adding CubeSQL and SQL Anywhere support to SQLAPI.
As of today, we support CubeSQL, Centura SQLBase, DB2, Firebird, Informix, InterBase, MariaDB, Microsoft Access, Microsoft SQL Server, MySQL, ODBC, Oracle Database Server, PostgreSQL, SQL Anywhere, SQLite, SQLCipher and Sybase. Well received features include using named parameters for prepared statements, full unicode support, threaded connect & execution, bulk row transfer, streaming blob values, and offering database specific options for advanced features. And recently we got even edit/update support for RecordSet and newer RowSet classes. Yes RowSet is supported!
You can use our plugin with one of two interfaces and even mix them. SQLConnectionMBS is our native interface for using all the nice features. This includes SQLCommandMBS class for doing both statement preparation and handling the result set. With SQLDatabaseMBS class, we have a database subclass, which makes transition easier for existing Xojo developers and use PreparedStatement interface and RecordSet class.
If you like to try the plugin, please check the website. Watch SQL Plugin presentation and read Xojo Developer Magazine article in issue 14.1.
- Converting Xojo project to use MBS SQL Plugin
- RowSet in MBS Xojo SQL Plugin
- Connect to Oracle via MBS Xojo SQL Plugin
- Connect to Microsoft SQL Server with MBS Xojo SQL Plugin
- Accessing Microsoft SQL Database from Mac/Linux
- Edit and Update for SQLDatabaseMBS class
Last week the new books arrived from XDevMag.
Always great to have all the articles from one year of the Xojo Developer Magazine in one book, where you can just browse through when you have some time in your hammock.
We'll give away a few over the year at various Xojo meetings, once they start to take place again.
If you like to get one yourself, you can order them in the XDevMag book store.
When you consider ordering them, better pick several years and let them ship together at a package price. There are also academic and subscriber discounts available.
You may know that SQLite can use ICU extension to use the International Components for Unicode library to handle unicode properly. If the extension is enabled, you get unicode aware functions. For our InternalSQLiteLibraryMBS module, we add the capability to automatically use the libraries.
Upper and Lower
To map between lower and upper case, you can use those function and they should work perfectly for all unicode characters. But there are some language differences and so you may want to pass the locale specification with the function call.
lower('I') returns 'i'
lower('I', 'en_us') returns 'i'
lower('I', 'tr_tr') returns 'ı' (small dotless i)
If the second argument is omitted, NULL or empty text, you get the general case mapping for all languages.
This shows ÄÖÜSS as output. (more)
Recently I translated a C++ project to Xojo. To not confuse between property names and variables names, I prefixed a lot of properties with self within a class. This clearly shows that we access a property and not a local variable with the same name. Is this a good idea, what do you think?
Later I was curious whether Xojo's compiler takes the self really just like a scoping indicator or really does some more. A little test project built and then inspected with lldb shows me what is happening:
In the method, the rax is a register containing the reference to the object, named self. That is non nil always in a method as one of the pre-conditions of using methods. If self would be nil, there would be no way to find the right method since all methods in Xojo are virtual ones and go through a dispatch table.
Sample code is like this:
Where a is a property of the class. The disassembler shows, that Xojo compiler does well and just moves the value into the right spot:
a = 1
Now use self.a = 2 and we get this:
0x100133ef0 <+128>: movq $0x1, -0xe8(%rax)
In code the compiler asks the CPU to compare the value in the rax register (containing self) to zero. If that is equal, it jumps to another code block, which raises a NilObjectException! (more)
0x100133f06 <+150>: cmpq $0x0, %rax
0x100133f0a <+154>: je 0x100133f62 ; <+242>
0x100133f0c <+156>: movq -0x8(%rbp), %rax
0x100133f10 <+160>: movq %rax, %rcx
0x100133f13 <+163>: addq $-0xe8, %rcx
0x100133f1a <+170>: movq %rcx, -0x18(%rbp)
0x100133f1e <+174>: movq $0x2, -0xe8(%rax)
0x100133f29 <+185>: movq -0x38(%rbp), %rax
In this article I want to introduce you the new functionalities from the MBS Xojo Plugins in version 21.1.
BiggerNumber and BigNumber
With BigNumber you can already process very large numbers with a high accuracy, but for some applications it can be important to have an even higher accuracy and therefore we have now BiggerNumber too. Objects of the BiggerNumberMBS class can have a floating point number with 2560 bits. They have a precision up to 617 digits behind the decimal point. Compared to a normal double value we have 5 times as many bits available. If BiggerNumberMBS is so accurate, why would you need BigNumberMBS class at all?
The answer is, if the speed of your applications is more important to you than the accuracy, use BigNumber, but if you need high accuracy, use BiggerNumber. If you use large integer numbers, use LargeNumberMBS. This class provides integer numbers up to 1200 digits long. With the innovation of BiggerNumberMBS also some mathematical formulas are added, like the calculation of cosines, sinus and tangent. There are over 30 new methods available for BiggerNumberMBS and BigNumberMBS classes.
Just seven months till the XDC 2021 in London, England. Tickets are still available for $750 USD till 1st April 2021 instead of $950 later.
It will be held October 13-15, 2021 in London, England at the Holiday Inn Bloomsbury. This conferences is the best place to meet Xojo developers from around the world in real live, make contacts, present yourself as expert and learn what is new in Xojo. Tickets are available in the Xojo store and if you bring your partner, you can order an extra guest ticket for the dinner events.
Check out the conference highlights video if you want to see what it's like - or ask one of the many attendees from the forum!
Wether you are full or part time Xojo developer, this is your chance to learn all about the Web 2.0 framework, the Android progress and what's new in the Xojo world.
To get there, please use public transportation. The piccadilly line brings you right from Heathrow Airport to Russell Square Station, just next to the hotel. That trip should cost about 3 £ and you may just pay by tap in/out with your NFC enabled credit card or phone. Otherwise buy an Oyster card and load money on it if you don't have such a card. If you come by Eurostar train through the tunnel from France, you can exit Pancras station and just walk to the hotel. Otherwise take one station via subway to Russell Square Station. That station is right behind the hotel block.
See you soon there!
Let us show you a few of the new example projects included with the 21.1 version of our Xojo Plugins:
|MBS Xojo Plugins 21.1|
Watch on Youtube
Some links for the video:
00:30 NSDataDetectorMBS class
03:50 NSCollectionViewControlMBS shown
07:40 Leak Finder example project
13:00 BigNumberMBS and BiggerNumberMBS classes
16:00 iOSPictureMBS module
21:10 NSNetServiceMBS class
Please do not hesitate to contact us if you have questions.
Older blog entries: