You can use various Amazon web services in FileMaker using our CURL functions in MBS FileMaker Plugin. You need to build the URL and her payload and either pass data in the URL or as POST data, depending on the service. You may easily translate an existing sample call on the AWS documentation for the call you like to make and translate that to setting the various options.
The special thing for the AWS requests is the signature to properly encode and hash the credentials. For years we have CURL.SetupAWS function to help signing the requests. But since CURL got the AWSSigV4 Option, we can use our CURL.SetOptionAWSSigV4 function to sign the request on the fly. There we pass the names of the provider, region and service, so CURL can include this in the signature.
To try this, let us use the Amazon Simple Notification Service to send a text message to a mobile phone. For this we need a phone number and since people like to use brackets and spaces, we filter the text to only have the digits and the plus symbol for the country.
(more)
Check out the FMTraining.tv website. Richard Carlton and his team do a daily free live stream about FileMaker to watch.
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.
We walk over some of the doors of our advent calendar. We talk about installation, DragDrop, DynaPDF, Contacts, web services and archive functions.
(more)
In Xcode we enjoy some automatic analyzer features to find memory leaks for CoreFoundation and Cocoa object. I used them in the past to find leaks related to various objects in the code. In the last months, I got to use these for our Xojo objects and strings.
I defined my own function annotations to inform the compiler whether the function returns a REALobject or REALstring with +1 reference count or +0 reference count.
To give you an idea how many annotations I needed, here are the numbers:
REALOBJECT_RETURNS_RETAINED | 13012 |
REALOBJECT_RETURNS_NOT_RETAINED | 17 |
REALSTRING_RETURNS_RETAINED | 2814 |
REALSTRING_RETURNS_NOT_RETAINED | 7 |
Once the annotations work, we use analyze command in Xcode to find issues. I setup an example for you:
The functions NewDictionary, REALNewVariantString, REALNewVariantInteger, CString2RB and many others are annotated to return a retained object. Xcode can report that we allocated a dictionary, a string and objects in the method. And since we don't free them, it can complain.
Adding this took months and on the way, I found a couple of memory leaks. Mostly in edge cases where memory was not released property on case of an exception or with a lot of nested branches.
In future we will enjoy this and I hope it helps us ship less memory leaks.
Nickenich, Germany - (January 14th, 2025) -- Monkeybread Software today is pleased to announce MBS FileMaker Plugin 15.0 for Claris FileMaker for macOS, iOS, Linux and Windows, the latest update to their product that is easily the most powerful plugin currently available for Claris FileMaker produce line. As the leading database management solution for Windows, macOS, iOS and the web, the Claris FileMaker Pro Integrated Development Environment supports a plugin architecture that can easily extend the feature set of the application. MBS FileMaker Plugin 15.0 has been updated and now includes over 7500 different functions, and the versatile plugin has gained more new functions:
For macOS Sequoia we like to use more of Apple Intelligence. As part of that you can show the image playground window. The user can generate a picture based on a prompt and an input image using our ImagePlayground functions.
We work on integrating the Saxon XML processing libraries into FileMaker. Once completed this will allow you to use XSLT 3.0 for transformations, XQuery 3.1 for queries, XSD 1.1 for document validation and XPath 3.1 for navigation within documents. This version includes a preview of the functions for you to try.
For DynaPDF we got the DynaPDF.CheckEmbeddedFileCheckSum function to validate whether a checksum for an embedded file inside a PDF is valid. The DynaPDF.ConvToFreeTextCallout allows you to convert a regular FreeText annotation to a FreeTextCallout annotation. And with DynaPDF.DeleteOutputIntent you can delete an output intent, e.g. if you like to define a different colorspace as output intent.
For the menubar we sort the hidden window list alphabetically. We improved the auto complete feature for custom functions and added a checkbox for it to the preferences dialog.
We improved our field picker enhancements in FileMaker to work in more places. We show you details for a field in the tooltip and show the arrow control on the top right to jump to the last used table occurence. The SyntaxColoring.AddContextMenuCommand function can add context menu commands for layout and browse mode instead of just Script Workspace.
In XL functions we added ways to get and set properties for a document like title or subject. You can also remove the properties and query the default format for a row or column. The XL.Sheet.CellWriteTexts function can optionally use blank cells for empty texts.
For macOS we can set key equivalents for our dialog boxes for each button using Dialog.SetKeyEquivalent. The AVAsset.TrackInfo function can query format information and Process.LoadFramework function can explicitly load a macOS framework.
The DragDrop.GetPathList function returns the list of all paths received. We added JSON.SetVariables and JSON.ClearVariables to match similar XML functions, we allow you to merge output and error streams for shell functions, we added an Archive.IsOpen function and you can set whether audit ignores empty field for creating a record.
Finally we updated the curl library to version 8.11.1, DynaPDF to 4.0.96.273, expat library to 2.6.4, LibXL to 4.5.0, mongo-c-driver to 1.29.1, SQLAPI to 5.3.5, SQLite to 3.47.2, ssh2 to 1.11.1, taglib to 2.0.2, zlib to 1.3.1 and zxing to version 2.3.
See release notes for a complete list of changes.
Nickenich, Germany - (January 14th, 2025) -- Monkeybread Software today is pleased to announce MBS Xojo Plugins 25.0 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 have been updated and now includes over 3000 classes and 82,000 documented features, and the versatile plugins have gained more new functions:
For macOS Sequoia we like to use more of Apple Intelligence. As part of that you can now show the image playground window to have the user generate a picture based on a prompt and an input image using ImagePlaygroundMBS class.
If you like to add writing tools features to your application, you can set allowsWritingTools to true for your text fields using NSTextFieldMBS class. You can show the writing tool item in the toolbar and you can exclude text to be rewritten by writing tools using the NSWritingToolsExclusionAttributeName in NSAttributedStringMBS class. To show the writing tools panel when needed, you can use showWritingTools method on NSTextViewMBS class.
We work on integrating the Saxon XML processing libraries into Xojo. Once completed this will allow you to use XSLT 3.0 for transformations, XQuery 3.1 for queries, XSD 1.1 for document validation and XPath 3.1 for navigation within documents. This version includes a preview of the classes for you to try.
In XL Plugin we added ways to get and set properties for a document like title or subject with the XLCorePropertiesMBS class. You can also remove the properties and query the default format for a row or column.
For DynaPDF we got the CheckEmbeddedFileCheckSum function to validate whether a checksum for an embedded file inside a PDF is valid. The ConvToFreeTextCallout allows you to convert a regular FreeText annotation to a FreeTextCallout annotation. And with DeleteOutputIntent you can delete an output intent, e.g. if you like to define a different colorspace as output intent.
We updated the Phidgets library and added PhidgetMotorVelocityControllerMBS class as well as numerous properties, constants and methods to our phidget classes.
For iOS we added MPNowPlayingInfoCenterMBS and MPMediaItemArtworkMBS classes, so your iOS app can update the now playing screen. The AVPlayerViewControllerMBS class provides you the possibility to easily play videos fullscreen.
Our Bluetooth classes for Windows got a new WindowsDeviceInformationCustomPairingMBS class to start a custom pairing of BluetoothLE devices. We improved the stack trace logging and exception handling for Windows in SignalHandlerMBS class.
For the WebView2ControlMBS control on Windows we added the BasicAuthenticationRequested event, so you can pass username and password to websites for basic authentication.
You can use Shell class and merge error and output streams, the TagLibFileRefMBS class got a ID3v2Tags method, and UTTypeMBS module got constants for JPEG XL, HEIF and HEIC.
Finally we updated the curl library to version 8.11.1, DynaPDF to 4.0.96.273, expat to 2.6.4, LibXL to 4.5.0, mongo-c-driver to 1.29.1, SQLAPI to 5.3.5, SQLite to 3.47.2, ssh2 to 1.11.1, taglib to 2.0.2, zlib to 1.3.1 and zxing to 2.3.
See release notes for a complete list of changes.
14. Januar 2025 - Monkeybread Software veröffentlicht heute das MBS FileMaker Plugin für Claris FileMaker in Version 15.0, mit inzwischen über 7500 Funktionen eines der größten FileMaker Plugins überhaupt. Hier einige der Neuerungen:
Für macOS Sequoia können wir mehr von Apple Intelligence nutzen. Als Teil davon können Sie das ImagePlayground-Fenster einblenden. Der Benutzer kann mit unseren ImagePlayground-Funktionen ein Bild auf der Grundlage einiger Stichwörter und eines Eingabebildes erzeugen.
Wir arbeiten daran, die Saxon XML-Bibliotheken in FileMaker zu integrieren. Sobald dies abgeschlossen ist, können Sie XSLT 3.0 für Transformationen, XQuery 3.1 für Abfragen, XSD 1.1 für die Dokumentenvalidierung und XPath 3.1 für die Navigation in Dokumenten verwenden. Diese Version enthält eine Vorschau der Funktionen, die Sie ausprobieren können.
Für DynaPDF gibt es die Funktion DynaPDF.CheckEmbeddedFileCheckSum, mit der überprüft werden kann, ob eine Prüfsumme für eine eingebettete Datei in einem PDF gültig ist. Die Funktion DynaPDF.ConvToFreeTextCallout ermöglicht die Umwandlung einer regulären FreeText-Anmerkung in eine FreeTextCallout-Anmerkung. Und mit DynaPDF.DeleteOutputIntent können Sie einen Output Intent löschen, z.B. wenn Sie einen anderen Farbraum als Output Intent definieren möchten.
In der Menüleiste wird die Liste der ausgeblendeten Fenster nun alphabetisch sortiert. Wir haben die Autovervollständigung für benutzerdefinierte Funktionen verbessert und eine Checkbox dafür in den Einstellungsdialog eingefügt.
Wir haben unsere Erweiterung für die Feldauswahl in FileMaker verbessert, damit sie an mehr Stellen funktioniert. Wir zeigen Ihnen Details zu einem Feld im Tooltip an und zeigen das Pfeil-Steuerelement oben rechts an, um zum zuletzt verwendeten Tabellenvorkommen zu springen. Die Funktion SyntaxColoring.AddContextMenuCommand kann Kontextmenübefehle für das Layout und den Browse-Modus hinzufügen, anstatt nur für den Script Workspace.
In den XL-Funktionen wurden Möglichkeiten zum Abrufen und Setzen von Eigenschaften für ein Dokument wie Titel oder Betreff hinzugefügt. Sie können auch die Eigenschaften entfernen und das Standardformat für eine Zeile oder Spalte abfragen. Die Funktion XL.Sheet.CellWriteTexts kann optional leere Zellen für leere Texte verwenden.
Für macOS können wir mit Dialog.SetKeyEquivalent Tastenäquivalente für unsere Dialogfelder für jede Schaltfläche festlegen. Die Funktion AVAsset.TrackInfo kann Formatinformationen abfragen und die Funktion Process.LoadFramework kann explizit ein macOS-Framework laden.
Die Funktion DragDrop.GetPathList gibt die Liste aller empfangenen Pfade zurück. Wir haben JSON.SetVariables und JSON.ClearVariables hinzugefügt, ähnlichen zu unseren XML-Funktionen. Wir erlauben Ihnen die Ausgaben und Fehler für Shell-Funktionen zusammen auszulesen, wir haben eine Archive.IsOpen-Funktion hinzugefügt und Sie können festzulegen, ob Audit leere Felder bei der Erstellung eines Datensatzes ignoriert.
Schließlich haben wir die curl-Bibliothek auf Version 8.11.1, DynaPDF auf 4.0.96.273, expat-Bibliothek auf 2.6.4, LibXL auf 4.5.0, den Mongo-C Treiber auf 1.29.1, SQLAPI auf 5.3.5, SQLite auf 3.47.2, ssh2 auf 1.11.1, taglib auf 2.0.2, zlib auf 1.3.1 und zxing auf Version 2.3 aktualisiert.
Alle Änderungen in den Release Notes.
For MBS Xojo Plugins 25.0, we add a way to better use our NSMenuMBS and NSMenuItemMBS class with Xojo MenuItems class.
The NSMenuPopupEventsMBS class allows you to intercept a menu before the system shows it. These events are available:
For a popup menu, the popUpMenuAtPosition method fires first. Then for any context or popup menu, you may see a willOpenMenu event just before the menu shows. Later you get a didCloseMenu event for the menu closing.
(more)
Every January people make a new year resolution and let's think about a few we can suggest to you:
Visit old friends
Make a list of distant relatives and friends you didn't meet in person in 2024. Try to meet them in 2025 and see next Sylvester who you missed. For some of our relatives or old friends in their 70s or 80s, you never know if you have another chance if you don't do a visit this year.
Meet colleagues
Visit a conference in your profession. You regularly interact with various other co-workers over forums, remote meetings and emails.
If you have multiple conferences available to join, pick one where you like the place and you may enjoy a few days of vacation on the same trip.
Delay purchases
Beside maybe your groceries, please consider a wait time for a purchase. Don't instantly buy stuff. Wait a night to see if you really want the item the next day. Take a bit time to tell friends or parents that you think about purchasing something. I was surprised how often parents (in-law) just tell me that they have the item and would love to pass it to me.
For a lot of videos I see online presenting me a product, waiting a day to order can save a lot of money. The next day the excitement is far down or I forgot it already.
Loose weights
Changing habits is difficult, but almost everyone would like to loose some weight.
How about trying to avoid drinking sugar? Order sparkling water in the restaurant. Great if you dine with family. By ordering a bottle of sparking water first, some people in the family may decide to not order a drink and just join using the bottle. And even if someone orders a coke, they may just later join the bottle instead of a second drink. Of course the weight loss can only happen if you don't compensate the saved calories on the drink with some extras like a desert.
More active
Whenever you need to get somewhere, consider walking or take a bike. Try to enjoy the walk to the mailbox or post office to send a letter as time to be active and maybe listen to some podcast on the walk. Try to walk more, take the steps instead of the lift and avoid taking a car for short distances.
Don't waste your money on a gym to do sports. Try to do it everyday as a regular habit.
Your waist will be thankful.
Have a great new year!
In this article I want to introduce you the new functionalities from the MBS Xojo Plugins in version 24.5.
DynaPDF
In this release, DynaPDF once again brings us a number of new features. On the one hand, we have new parser functionality with which we can remove all or individual images from a page of a document. We can also use DynaPDFParserMBS.ListImages to get a list of all images on a page.
Then we have a few new Get methods in the DynaPDFMBS class with which we can query settings. With GetAnnotColor we retrieves the color of an annotation. The function GetAnnotTextAlign returns us the text alignment of an annotation. Last but not least, GetTextBBox calculates the exact bounding box of a text string.
(more)
The January/February (23.1) issue of
xDev Magazine is now available. Here's a quick preview of what's inside:
When It Rains, It Pours by Marc Zeedar
Wondering why this issue was a week late? In November, Marc suffered a retinal detachment in his right eye that required emergency surgery and no computer use for two weeks. Then, just as things were getting better, he broke two ribs!
AI on Pi by Eugene Dakin
How would you like to make your own AI server that runs on a Raspberry Pi? Eugene shows how to set one up using free tools so you can use AI privately on your own equipment. You don't even need internet access!
Image Batcher by Marc Zeedar
With Xojo adding preemptive threads, Marc was prompted to create a program that uses XojoScripts to batch process images. In this early version, you can crop and resize, or add a frame, watermark, and a drop shadow on a batch of dropped images.
Alternative & Supplemental Income by Tim Dietrich
In this issue's "The Business of Xojo" series, Tim explores supplementing your income. He offers tips and suggestions on how to make extra money on the side, using your Xojo skills. Who couldn't use more money?
Plus: An interview with Anthony Cyphers, the genius behind GraffitiSuite; the internals of Xojo; how to add information to an Apple Contact; and how to use ffmpeg to extract frames from videos, and more!
New in this prerelease of version 15.0 of the
MBS FileMaker Plugin:
- Fixed an issue with Path.NativePathToFileMakerPath on Linux adding an extra / to the path.
- Fixed Path.AddPathComponent function for Windows to automatically use slash or backslash depending on what the path has already.
- Improved Time.Format function to return empty result for empty timestamp.
- Changed functions returning CURL errors to mark this as error, so IsError function returns true. This affects CURL.Perform, CURL.FormClear, CURL.FormFinish, CURL.Upkeep, CURL.SendText, CURL.SendData, CURL.PerformAsync, CURL.WebSocketSend, CURL.WebSocketReceive, CURL.SetSocketNonBlocking, CURL.SetSocketNonBlocking, SendMail.PrepareCURL and various CURL.SetOption functions.
- Added variable list to Saxon.XPathQuery function.
- Added functions to set properties and parameters for Saxon.
- Fixed a timing problem with DragDrop functions for macOS where not all paths arrived when you had a lot of files.
Download at
monkeybreadsoftware.com/filemaker/files/Prerelease/
You can subscribe to our FileMaker mailing list to get notified for new pre-release and release versions.
New in this prerelease of the 25.0 plugins:
- Fixed an issue with WebView2ControlMBS control not initializing sometimes.
- Fixed crash with DynaPDFImageMBS destructor.
- Fixed an issue in MemoryBlock.AppendMBS copying wrong data if one of the MemoryBlock has no size set.
- Added more methods to Saxon classes.
Download:
monkeybreadsoftware.de/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared DropBox folder.
You can subscribe to our Xojo mailing list to get notified for new pre-release and release versions.
This year in April our company will turn 25 years old.
We'll plan to have a big party here in Germany near our office with over 100 guests.
Invitations went out in several batches. Sadly the web form malfunctioned the last weeks and we may not have all registrations. So we will email everyone who not yet confirmed and ask them again.
If you like to join and you miss an invitation, you can contact us and ask whether your invitation got lost.
As people confirm they are coming, we'll add them to the guest list. If we run out of space, we may put people on the wait list.
If you can't make it, please respond soon, so we don't need to contact you again later.
The hotel has some rooms left and would like to know if someone likes to reserve a room for the night before or after. Otherwise the room allocation expires 25th January.
(more)
In this article we want to introduce you the new functions from the MBS FileMaker Plugin in version 14.5.
Barcode
Let's start with a really cool new function. The Barcode.DetectAsJSON function. This function can recognize multiple barcodes on an image and then returns a JSON with the appropriate information. You can even limit the selection of barcodes to be recognized to its type. The following types are available: Aztec, Codabar, Code39, Code93, Code128, DataMatrix, EAN8, EAN13, ITF, PDF417, QRCode, UPCA and UPCE. But you do not have to limit the recognition and so different types of barcodes can be recognized at one time.
As a result, we have a lot of information about the individual barcodes in the JSON. Here you can see an output of a barcode of type UPCE that was recognized.
(more)
You can use the Saxon library in your projects with MBS Plugin to work on XML:
-
XSLT 3.0 for transformations
-
XQuery 3.1 for queries
-
XSD 1.1 for document validation
-
XPath 3.1 for navigation within documents
You can get a Pro or Enterprise Validation license from us.
(more)
You can use the Saxon library in your projects with MBS Plugin to work on XML:
-
XSLT 3.0 for transformations
-
XQuery 3.1 for queries
-
XSD 1.1 for document validation
-
XPath 3.1 for navigation within documents
You can get a Pro or Enterprise Validation license from us.
(more)
New in this prerelease of the 25.0 plugins:
Download:
monkeybreadsoftware.de/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared DropBox folder.
You can subscribe to our Xojo mailing list to get notified for new pre-release and release versions.
New in this prerelease of version 15.0 of the
MBS FileMaker Plugin:
- Fixed a problem with Container.IdentifyData not recognizing a HEIF file.
- Updated zxing library to version 2.3.
- Improved menu sorting to ignore bracket on the beginning.
- Improved overlay to allow moving window with webviewer for macOS.
- Improved Math.FormatNumber function to work better with 11 or more digits.
- Added DoBlanksForEmptyText parameter to XL.Sheet.CellWriteTexts function.
- Improved exception handling for Saxon.
- Added Barcode.Version function.
Download at
monkeybreadsoftware.com/filemaker/files/Prerelease/
You can subscribe to our FileMaker mailing list to get notified for new pre-release and release versions.
Before you install our plugin new or as an update, please make a backup of your databases. Best is to have an automated hourly backup to make sure you have a copy of all the databases, external files and the current software, so in case something breaks, you could go back.
You should have:
- Real Time backups.
An application like Backblaze watches for new files and uploads them directly. This allows you to have it keep multiple versions and provide a history.
- Hourly backups
e.g. Time Machine on a Mac or the built-in backup for FileMaker Server can do an hourly backups to a folder.
- Daily backups
to another computer. In general you should have at least 3 backups in 2 different locations.
- Monthly backups
e.g. rotating various backup disks between a safe in a bank and the office.
(more)
Recently I remarked on a meet-up that the majority of FileMaker Servers uses Linux nowadays as far as I know. In August 2023 Linux overtook Windows, then in July 2024 the Linux share crossed to over 50%. The share for Linux increased by 25 points from 42 to 67% from January 2024 to 2025, all within one year!
If we continue with that adoption, I'd expect Linux to be over 90% end of 2025 and Claris can retired the MacOS and Windows servers in 2026. You all vote withy your wallet, so no complains please. Of course this assumes that Claris sees similar statistics.
Here is a graphics for the OS share:
(more)