Good bye Phoenix!


Leaving soon from Phoenix airport.
I enjoyed a great week in Phoenix with the FileMaker DevCon and seeing so many developers:



I look forward to come back in one of the next years. There is still plenty left to see.
The picture above is from Dobbins Lookout in the South Mountain Park, a viewing place you can drive to south of downtown up on the hill (700m high).

And thanks to the Xojo developers who came to my Xojo developer meetings in Tucson and Phoenix.

FileMaker Excellent Awards


I was pleased to see my logo once again on the nominee list:



Thanks for suggesting me!

Push Notifications for FileMaker iOS SDK


Use the MBS FileMaker Plugin for FileMaker iOS SDK to receive push notifications. First on opening the solution, register for receiving them and query the device token. This device token is needed to send push notifications to the device from your servers. Push notifications can show a message to user, set the app badge or transfer data to the app:



First please review our documentation for the UNNotification functions. When you add the MBS Plugin to the project, please also add our MBSInit framework. You may need to split both to only include the arm versions in the final app to run on a device.

After your app launched on a device, you may be asked to allow notifications. This happens only if MBSInit framework is loaded and triggers the early initialization of our plugin. The function UNNotification.RemoteNotificationsDeviceToken returns you the device token as a long text with hex encoding. If something goes wrong, you get an empty text there and the function UNNotification.RemoteNotificationsError will give an error message, e.g. that this is not available in simulator.

You can check permissions with UNNotification.IsRegisteredForRemoteNotifications later. The new functions UNNotification.AuthorizationGranted and UNNotification.AuthorizationError let you know about whether you can work with notifications. But most likely you will check with UNNotification.NotificationSettings directly for what is available or allowed. The user can for example allow you badge changes, but not popups.

Let me know if you like to try this and need assistant. You should be able to get notifications to show messages to the user, launch the app and trigger scripts. Even the sending of notifications to devices should work via MBS Plugin by using CURL functions to talk to Apple's web service.

MBS Booth ready for FileMaker DevCon


Please come and visit me in the booth #25 at FileMaker DevCon:

MBS Booth

As usual you can come by, read the posters, ask me questions and talk with me about existing and future features.

FileMaker DevCon to start soon


You can already go downstairs and register.
And you can see the posters from sponsors as well as the floor plan to find the booths:



Meet me at booth #25 tomorrow and let me know your favorite plugin function!

Face detection via CoreImage in FileMaker


If you like , come to my booth at FileMaker DevCon and ask me about using CoreImage's detectors to find faces, text, rectangles and QRCodes on a picture. You can check whether faces are like in this picture on the right.

So the example database has a script to detect faces and than color them in yellow with some dots for eyes and mouth. Check out our example script for this:

Set Field [ Core Image Detection::Result ; MBS( "CoreImage.Detect"; Core Image Detection::Image; Core Image Detection::Type; "Smile¶EyeBlink" ) ] 

# Show areas

If [ MBS("IsError") = 0 ] 

Set Variable [ $json ; Value: MBS( "JSON.Parse"; Core Image Detection::Result ) ] 

Set Variable [ $count ; Value: MBS( "JSON.GetArraySize"; $json ) ] 

Set Variable [ $image ; Value: MBS( "GMImage.NewFromContainer"; Core Image Detection::Image ) ] 

Set Variable [ $imageHeight ; Value: MBS( "GMImage.GetHeight"; $image) ] 

If [ $count > 0 ] 

# for loop

Set Variable [ $index ; Value: 0 ] 

Loop

Set Variable [ $item ; Value: MBS( "JSON.GetArrayItem"; $json; $index) ] 

# draw area

Set Variable [ $x ; Value: MBS( "JSON.GetPathItem"; $item; "x" ; 1  ) ] 

Set Variable [ $y ; Value: MBS( "JSON.GetPathItem"; $item; "y" ; 1  ) ] 

Set Variable [ $w ; Value: MBS( "JSON.GetPathItem"; $item; "width" ; 1  ) ] 

Set Variable [ $h ; Value: MBS( "JSON.GetPathItem"; $item; "height" ; 1  ) ] 

Set Variable [ $y ; Value: $ImageHeight - $y -$h /* coordinates from CoreImage are swapped vertically */ ] 

Set Variable [ $r ; Value: MBS( "GMImage.SetFillColor"; $image; "#FFFF00" ) ] 

Set Variable [ $r ; Value: MBS( "GMImage.DrawRectangle"; $image; $x; $y; $x+$w; $y+$h ) ] 

# left eye

Set Variable [ $hasLeftEyePosition ; Value: MBS( "JSON.GetPathItem"; $item; "hasLeftEyePosition" ; 1  ) ] 

If [ $hasLeftEyePosition = 1 ] 

Set Variable [ $x ; Value: MBS( "JSON.GetPathItem"; $item; "leftEyePositionX" ; 1  ) ] 

Set Variable [ $y ; Value: MBS( "JSON.GetPathItem"; $item; "leftEyePositionY" ; 1  ) ] 

Set Variable [ $y ; Value: $ImageHeight - $y /* coordinates from CoreImage are swapped vertically */ ] 

Set Variable [ $r ; Value: MBS( "GMImage.SetFillColor"; $image; "blue" ) ] 

Set Variable [ $r ; Value: MBS( "GMImage.DrawRectangle"; $image; $x-20; $y-20; $x+20; $y+20 ) ] 

End If

# right eye

Set Variable [ $hasRightEyePosition ; Value: MBS( "JSON.GetPathItem"; $item; "hasRightEyePosition" ; 1  ) ] 

If [ $hasRightEyePosition = 1 ] 

Set Variable [ $x ; Value: MBS( "JSON.GetPathItem"; $item; "rightEyePositionX" ; 1  ) ] 

Set Variable [ $y ; Value: MBS( "JSON.GetPathItem"; $item; "rightEyePositionY" ; 1  ) ] 

Set Variable [ $y ; Value: $ImageHeight - $y /* coordinates from CoreImage are swapped vertically */ ] 

Set Variable [ $r ; Value: MBS( "GMImage.SetFillColor"; $image; "blue" ) ] 

Set Variable [ $r ; Value: MBS( "GMImage.DrawRectangle"; $image; $x-20; $y-20; $x+20; $y+20 ) ] 

End If

# mouth position

Set Variable [ $hasMouthPosition ; Value: MBS( "JSON.GetPathItem"; $item; "hasMouthPosition" ; 1  ) ] 

If [ $hasMouthPosition = 1 ] 

Set Variable [ $x ; Value: MBS( "JSON.GetPathItem"; $item; "mouthPositionX" ; 1  ) ] 

Set Variable [ $y ; Value: MBS( "JSON.GetPathItem"; $item; "mouthPositionY" ; 1  ) ] 

Set Variable [ $y ; Value: $ImageHeight - $y /* coordinates from CoreImage are swapped vertically */ ] 

Set Variable [ $r ; Value: MBS( "GMImage.SetFillColor"; $image; "red" ) ] 

Set Variable [ $r ; Value: MBS( "GMImage.DrawRectangle"; $image; $x-50; $y-20; $x+50; $y+20 ) ] 

End If

# next

Set Variable [ $index ; Value: $index + 1 ] 

Exit Loop If [ $index >= $count ] 

End Loop

End If

Set Variable [ $r ; Value: MBS( "JSON.Release"; $json ) ] 

Set Field [ Core Image Detection::Output ; MBS( "GMImage.WriteToPNGContainer"; $image; "test.png" ) ] 

End If


As you see we just get back a JSON block with an array of items, where we loop through and draw each area in yellow and if available we draw eyes and mouth. The JSON looks like this with one face:

[

  {

    "rightEyeClosed" : false,

    "mouthPositionX" : 279.5625,

    "hasRightEyePosition" : true,

    "leftEyePositionY" : 1606.5,

    "hasLeftEyePosition" : true,

    "trackingFrameCount" : 0,

    "hasMouthPosition" : true,

    "type" : "Face",

    "x" : 66.9375,

    "mouthPositionY" : 1452.9375,

    "y" : 1350.5625,

    "trackingID" : 0,

    "hasFaceAngle" : true,

    "width" : 401.6250,

    "height" : 401.625,

    "leftEyePositionX" : 212.625,

    "hasSmile" : false,

    "leftEyeClosed" : false,

    "rightEyePositionY" : 1606.5,

    "hasTrackingID" : false,

    "hasTrackingFrameCount" : false,

    "faceAngle" : -7,

    "rightEyePositionX" : 366.1875

  }

] 

This can be very useful for some databases as we can leverage Apple's libraries to find faces, detect QRCodes, find text and rectangle areas. For the text areas, you can pass those to OCR functions later.


PS: CIDetectorMBS class does the same in Xojo.


MBS FileMaker Plugin 7.3 - More than 4800 Functions In One Plugin


Nickenich, Germany - (July 18th, 2017) -- MonkeyBread Software today is pleased to announce MBS FileMaker Plugin 7.3 for macOS, iOS, Linux and Windows, the latest update to their product that is easily the most powerful plugin currently available for FileMaker Pro. As the leading database management solution for Windows, Mac, iOS and the web, the FileMaker Pro Integrated Development Environment supports a plugin architecture that can easily extend the feature set of the application. MBS FileMaker Plugin 7.3 has been updated and now includes over 4800 different functions, and the versatile plugin has gained more new functions:

This plugin got a couple of features for use with iOS SDK. You can offer the user a configurable email or message composer. Your script configures the message and provides recipients, content and attachments. The user can edit the email or text message and send it. Similar is our social composer which allows you to post on Facebook, Twitter, SinaWeibo and TencentWeibo. Again your solution can provide content including text, URL and image and the user can edit and post. For iOS you can now use DynaPDF functions to process PDFs on iOS devices.

Our BinaryFile function allows to read and write any file type. Raw file reading and writing can be very useful to handle import or export in application specific file formats.

For the script workspace our zoom controls can now be triggered with command + and - keys. Script lines which are set to gray color by FileMaker now keep the gray color so you can identify incompatible script steps easier. Our variable check can now detect declarations via comments.

When handling big XML documents, you can now parse them once using XML.Parse and than query the object in memory often. As parsing is done only once, the performance is much better.

When playing a movie inside an interactive containers on Mac and iOS, you can now identify the AVPlayer used by FileMaker and control it from our plugin. For example you can get pictures for the current playing frame.

For FileMaker 16 we updated the WebView functions for website passwords (HTTP Authentication), so you can set the passwords and avoid login dialogs. For the new card window type, we can watch for mouse clicks on the side and trigger a script to close the card window.

We got SSE2 enabled PNG reading, Audit with UUIDs, Dialog positioning, Metafile conversion (EMF/WMF) for DynaPDF, lower memory usage for queued email sending and speak commands for iOS.

Finally we updated OpenSSL to 1.1.0f and 1.0.2l, libPNG to version 1.6.30, discount library to 2.2.2, SQLite to 3.19.3, DynaPDF to 4.0.11.31 and we use the FileMaker 16.0.2 Plugin SDK now.

See release notes for a complete list of changes.

MBS FileMaker Plugin 7.3 - Über 4800 Funktionen in einem Plugin


18. Juli 2017 - Monkeybread Software veröffentlicht heute das MBS Plugin für FileMaker in Version 7.3, mit inzwischen über 4800 Funktionen eines der größten FileMaker Plugins überhaupt. Hier einige der Neuerungen:

Dieses Plugin hat viele neue Funktionen für das iOS SDK. So können Sie dem Benutzer einen Email oder iMessage Dialog anbieten. Per Skript konfigurieren Sie die Nachricht mit Empfänger, Inhalt und Anhängen. Der Benutzer kann dann die Nachricht bearbeiten und abschicken. Ähnlich funktioniert der Social Composer Dialog, mit dem man auf Facebook und Twitter posten kann. Wiederum können Sie per Skript den Text, URLs und Bilder übergeben und der Benutzer die Nachricht bearbeiten und absenden. Für iOS können Sie jetzt auch die DynaPDF Bibliothek verwenden zum Editieren von PDF Dateien direkt auf dem iOS Gerät.

Unsere BinaryFile Funktionen erlauben jeden Dateityp zu lesen und zu schreiben. Das direkte lesen von Bytes in Dateien kann sehr nützlich sein für den Import und Export von anwendungsspezifischen Dateiformaten.

Beim Skript Arbeitsbereich können Sie jetzt unsere Vergrößerungsknöpfe per Tastatur ansprechen mit der Tastenkombination + und - mit der Befehlstaste. Zeilen im Skript, die von FileMaker auf grau gesetzt werden, bleiben jetzt auch grau, so dass Sie inkompatible Skriptschritte leichter finden können. Die Überprüfung von Variablennamen kann nun auch Variablennamen berücksichtigen, die per Kommentar deklariert wurden.

Wenn Sie große XML Dateien verarbeiten möchten, können Sie die Datei nur einmal mit XML.Parse einlesen und dann Abfragen im Speicher durchführen. Da das XML nur noch einmal gelesen wird, können ihre Skripte viel schneller einzelne Werte abfragen.

Wenn Sie einen Film in einem interaktive Container auf macOS und iOS abspielen, können Sie jetzt die Referenz zum AVPlayer bekommen und ihn via Plugin steuern. Zum Beispiel um ein aktuelles Bild vom Film abzufragen.

Für FileMaker 16 funktionieren jetzt auch die Authentifizierungsfunktionen im Webviewer, so dass Sie dem Plugin Passwörter mitgeben und diese automatisch benutzt werden ohne dass der Benutzer einen Passwort Dialog sieht. Für die Karten können Sie via Plugins auf Mausklicks außerhalb der Karte reagieren und diese per Skript schließen.

Außerdem haben wir noch SSE2 Beschleunigung für PNG Dateien, Audit mit UUIDs, Dialogpositionierung, Metadateien konvertieren (EMF/WMF) mit DynaPDF, geringere Speicherverbrauch beim Emailsenden und Sprachausgabe für iOS.

Wir haben die OpenSSL auf Version 1.1.0f bzw. 1.0.2l aktualisiert, libPNG auf 1.6.30, discount auf 2.2.2, SQLite auf 3.19.3, DynaPDF auf 4.0.11.31 und wir verwenden jetzt das FileMaker Plugin SDK 16.0.2.

Alle Änderungen in den Release Notes

FileMaker Spanish Devcon 2017


In October all around Europe are conferences for FileMaker.
You can meet me at the German conference in Salzburg and this year also at the Spanish conference in Madrid:



20th to 21st October 2017 in Madrid. See Website
Maybe I can get a short session to talk a bit about my plugin :-)

4800 functions in MBS Plugin


Did you notice we just passed the 4800 function mark with version 7.3?

Just a new record reached just before DevCon.
And well, the posters are printed already for 4700...

The number of functions is always outdated.

Recent additions where new BinaryFile functions, more XL functions and the XML functions for incredible performance.

Did you notice we added over 100 iOS only functions for 7.3 release?

MBS FileMaker Plugin, version 7.3pr7


New in this prerelease of the 7.3 MBS FileMaker Plugin: Download at monkeybreadsoftware.de/filemaker/files/Prerelease/ or ask for being added to the dropbox shared folder.

MBS FileMaker Plugin, version 7.3pr6


New in this prerelease of the 7.3 MBS FileMaker Plugin:
  • Added Text.ReplaceAll function.
  • Improved speed of XML functions.
  • Added Plugin.PNGVersion function.
  • Updated libPNG to version 1.6.30.
  • Updated DynaPDF library to version 4.0.11.31.
  • Updated to FileMaker 16.0.2 SDK.
  • Enabled SSE2 extension for libPNG for macOS as all Macs with Intel CPU should have SSE2.
Download at monkeybreadsoftware.de/filemaker/files/Prerelease/ or ask for being added to the dropbox shared folder.

3 Monate bis zur FileMaker Konferenz in Salzburg


In gerade mal drei Monaten startet die FileMaker Konferenz in Salzburg.
So langsam füllt sich die Konferenz und inzwischen steht auch das Programm.

Vom 12. bis 14. Oktober 2017 treffen sich wieder ca. 200 Teilnehmer im Pitter in Salzburg. Die deutschsprachige FileMaker Entwickler treffen sich um Neuigkeiten zu FileMaker zu erfahren, mit den Mitarbeitern von FileMaker in Kontakt zu kommen und um alte Freundschaften zu pflegen.



Bitte bald anmelden um ein Ticket zu bekommen. Die Konferenztickets und die Zimmer im Hotel Crowne Plaza Salzburg waren in den vorherigen Jahren schon vor der Konferenz ausverkauft.

Für die MBS Plugin Schulung am 11. Oktober sind noch Plätze frei. Nehmen sie sich einen Tag Zeit zu erfahren, was alles im MBS Plugin steckt, was dieses Jahr neu ist und probieren wir direkt einige Funktionen aus. Je nach den Wünschen der Teilnehmer bauen wir gerne neue Beispiele, die dann bestimmte Funktionen zeigen.

FileMaker updates to version 16.0.2


FileMaker Inc. just released an update to it's FileMaker Platform:

FileMaker, Inc. has released FileMaker Pro 16.0.2, FileMaker Pro 16.0.2 Advanced, FileMaker Go 16.0.2, and FileMaker Server 16.0.2. The FileMaker 16.0.2 Platform includes bug fixes and security updates.

Learn more:
FileMaker Pro
FileMaker Go
FileMaker Server
FileMaker Go (App Store)
iOS App SDK (FileMaker Developer Subscription required for access)
FileMaker Server 16.0.2

FileMaker Plug-in SDK

We'll soon update plugins for new plugin SDK and start testing with new version.

MBS FileMaker Plugin, version 7.3pr5


New in this prerelease of the 7.3 MBS FileMaker Plugin:
  • Changed script coloring to keep gray script lines (deactivated or incompatible) in gray.
  • Updated OpenSSL to 1.1.0f and 1.0.2l
  • Calling StoreRegistration function now also invokes Register to test the key before storing it.
  • Changed SQL.GetFieldAsNumber and SQL.GetParamAsNumber to return numbers outside 32-bit integer as text (now corrected).
  • Added Filter column functions for Excel functions.
  • Changed linux linking to avoid loader to connect function to wrong library if several versions of the library exists.
Download at monkeybreadsoftware.de/filemaker/files/Prerelease/ or ask for being added to the dropbox shared folder.

New Country and Territory promotion


As you may know our MBS Plugins are used in over 55 countries (FileMaker) and 74 countries (Xojo).

But still there are a lot of countries left, so we’d like to offer a promotion:

Get a second year of updates for free when purchasing a new license from us in July when the order comes from a country we not yet have customers from. For some bigger countries, new state/province is also fine.

After a purchase, we can definitive say whether you are from a not yet listed country, so please contact us before/after purchase to check.

You may wonder which countries we don’t have clients from?

FileMaker:
In Europe for example Poland, Ukraine, Serbia and Bulgaria.
In North America for example Alaska, New Mexico and Maine in USA, Ontario in Canada.
In South America for example Peru, Ecuador, Panama and Guyana.
In Asia for example Vietnam, Indonesia or Pakistan.
In Africa there is a lot of space between Egypt and South Africa.

Xojo:
In Europe for example Lithuania, Montenegro or the islands Sardinia and Corsica.
In North America for example Alaska and South Dakota.
In South America for example Peru or Nicaragua.
In Asia for example Vietnam, Bangladesch and Papua-Neuguinea.
In Africa anything between Namibia and Egypt.

So if you like to get a license and contact us and we give you a free update if you add an entry to our country list or at least live somewhere we have no customers yet.

FileMaker error 1506


Please be aware about the FileMaker error 1506. It is supposed to mean that an email was not sent correctly.
But I just learnt that it could mean the opposite. So you can get this error, if the email connection is dropped or server doesn't answer quick enough after email was sent.
Now for some servers this means that checking attachment for viruses takes a second too long and FileMaker considers it as an error (timeout), but email is still sent.

So please don't use error 1506 as the truth about the email sent / not sent status. More like an "Email was most likely not sent" error, but you can't be sure.

Otherwise, if you use MBS Plugin with the SendMail functions, you could of course always check the debug logs from our CURL functions for exact status.
There you would see difference between timeouts and error from server.

MBS Plugin vs. Insert From URL in FileMaker 16


Recently clients wondered what the can do with the new CURL functions in FileMaker 16 and how it compares to the plugin functions.

So I spend some time to put together a table to show the differences. FileMaker implemented new options so you can do all the REST API calls you need to do and they include a lot of options for various HTTP and SSL options.

But our plugin can do much more. We include SSH library for SFTP, do much more for email transfers and allow it to run in background. Please review the table: (more)

Archives

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