WWDC 2025 by Marc Zeedar
Last year Apple made big announcements regarding "Apple Intelligence" that were supposed to ship piecemeal throughout year; only they eventually backtracked and delayed the most significant ones. This year's WWDC was a lot more muted, though Marc argues that some of the new features are significant.
AInalyzing Documents by Marc Zeedar
While "AI" isn't intelligent, it can do pattern matching and analysis that is useful. Marc builds on last issue's Image Tagger app to send other kinds of documents to ChatGPT and be able to ask it questions about the file. You can even send it Xojo code and get back suggestions for improvements!
Installing Xojo on Raspberry Pi by Eugene Dakin
Did you know that the Xojo IDE can now run on a Raspberry Pi? It used to be that you had to compile your Pi apps on another machine and transfer them over, but now you can install Xojo itself on a Pi and program natively. Eugene shows you the steps to getting Xojo onto your Raspberry Pi device.
Plus: An interview with Christian Wheel, XAML, Xojo Tennis, unit testing, and more!
Added Plugin.RegisterFunction function to register custom functions on the fly. These show up in calculation dialogs just like regular custom functions.
MBS Xojo SQL Plugin connects to CubeSQL, Centura SQLBase, DB2, DuckDB, Firebird, Informix, InterBase, MariaDB, Microsoft Access, Microsoft SQL Server, MySQL, ODBC, Oracle Database Server, PostgreSQL, SQL Anywhere, SQLite, SQLCipher and Sybase)
We recently got an example project for SQLite with MBS Xojo SQL Plugin and let's explain a bit on how it works.
First you decide which database client library to use. For SQLite this can be a sqlite3.dll/dylib/so library to load or you use the built-in library inside our plugin. The one in InternalSQLiteLibraryMBS module includes various extensions and encryption support, so we can activate it with the Use method.
Create a database connection object with SQLDatabaseMBS class. That is our MBS class subclasses from Database, so it supports the database interface in Xojo. But alternatively we also have the SQLConnectionMBS class, which implements the our own interface and works with Xojo Lite. Which side you use doesn't matter much as both can do about the same things.
A few days ago Christian Schmitz from Monkeybread Software joined a live episode to talk a bit about the MBS FileMaker Plugin. Watch it on YouTube.
A question and answer round for the MBS FileMaker Plugin. We talk about automatically installing the plugin with scripts. The we check DynaPDF functions to merge PDFs and convert HEIF/HEIC images to add them to the PDF. We render PDF pages and generate barcodes. A PDF form gets build, filled with data and exported. The user updates data and we import the changes back to FileMaker. We check toolbar functions to customize the toolbar in the FileMaker window on macOS. Finally we check email related functions like the EMailParser functions.
Recently we had the idea that we could draw charts ourselves with the GraphicsMagick functions. It's more a fun project, but I was able to draw a simple bar chart with a few drawing commands. We use a few filled rectangles to draw bars and calculate them on the fly in the while loop.
In Filemaker you sometimes want to export text. For that people usually use the Export Field Contents script step in Filemaker. There you can specify a field and a filename. Filename can include variables and specify different paths on Mac and Windows. Field can be a field you select or the current field. If you export a container, you get the file written there (make sure you have right extension!) and for text it writes an UTF-16LE encoded text file.
Now sometimes you need more. Like you want to export values in a variable without putting them in a field. You may want to export text as UTF-8, MacRoman, Windows ANSI or some other text encoding instead of UTF-16LE. With Text.WriteTextFile you can specify the text encoding you want. Maybe you want to pass text before through Text.ReplaceNewLine to make sure the right newline character is used. For example CR for Classic Mac, CRLF for Windows or LF for Unix Mac OS X. Next you may want to write a log file and just append to a file with Text.AppendTextFile.
For containers you can export them with Container.Export. There you can specify a container as field or variable and a path to write to. And you select what to export. Like if your container contains a TIFF picture, you can either export the TIFF or the preview JPEG. The function Container.GetTypes tells you which types are in a container.
Sometimes you may have a project where you need to output bidirectional text. If you output any of the following languages, you may need to think about how to handle the right to left direction:
Arabic
Aramaic
Azeri
Dhivehi/Maldivian
Hebrew
Kurdish (Sorani)
Persian/Farsi
Urdu
When you use DynaPDF in FileMaker with MBS FileMaker Plugin, you can use the DynaPDF.SetBidiMode function to enable bidirectional mode and set it to RightToLeft layout. Of course you need to load a font with unicode code page to have it cover all the characters. The bidi algorithm makes sure you can mix left to right and right to left text within a text, but you still need to define whether the layout is left to right or right to left.
Apple announced some changes for their Intel support. Version 26 is the last one to run on Macs with Intel CPUs. And for at least version 27, the Rosetta translation layer is supported. After that it may continue to run older software like games, which may never get recompiled.
When you build a mail solution using our CURL functions in MBS FileMaker Plugin, you may use sample code to do an IMAP upload. Commonly you use this to upload an email to the Sent folder when you sent it via SMTP.
New in version 15.2 is the CURL.SetOptionUploadFlags function to pass the flags for uploads. In older CURL versions there was a default to set seen flag, but now you can and shouuld control it.
For example we can use this to set the seen flag for an email, when we upload it to the sent folder, so it doesn't appear as a new email. Or you can set the Flagged flag value to mark the email as flagged.
For years we had a QuickLook plugin to provide a preview into Xojo projects and show the version number. I don't know about you, but I have current 12 different Xojo versions installed.
Our extension shows the version number of Xojo projects and if space is available, we show the type (Binary, Text or XML) below the number.
Did you know that you can use JSON in our Saxon functions? Originally Saxon is a XML library, but it can take JSON as input in various queries. The queries internally work with maps and arrays and these can be filled by JSON.