SSL Security with CURL

With our plugin you can connect to FTP/HTTP/SMTP/POP3/IMAP servers and use SSL for the encryption of all the data going through network. Now a lot of users run into the fact that by default CURL library disallows unsecure SSL connections.

So you can of course simply disable security by setting the options OptionSSLVerifyHost and OptionSSLVerifyPeer both to zero. This will accept any connection and transfer all data encrypted, but people could read it with a simple man in the middle attack.

For security, you can set OptionSSLVerifyHost to 2 to verify the server identity and set OptionSSLVerifyPeer to verify the certificate. Also you need a cacert.pem file with certificates. You can download it on the curl website. Than use OptionCAInfo with the path to let CURL load the certificates from this file.

If you have connection problems, please collect debug messages and check the text there for details on why your connection failed.

MBS Real Studio Plugins, version 13.0pr9

New in this prerelease of the 13.0 plugins:
  • Fixed leak in Java exception handling.
  • Moved global CFCharacterSetMBS methods to shared methods in CFCharacterSetMBS class.
  • Changed AccessibilityMBS class to be a module.
  • Improved internal image handling for QTImporter plugin part on Cocoa. So PictureToStringMBS and other functions now works again there.
  • Added PackCursResourceMBS function.
  • Improved SplitCommaSeparatedValuesMBS to work better with non UTF-8 encoded text.
  • Changed WebResourceLoadDelegateMBS to take variant for identifiers, so you can use whatever you like.
  • Added CURLMBS.OptionAcceptEncoding and CURLSMBS.OptionAcceptEncoding.
  • Updated code for App.BundleFolderMBS and App.BundleResourceFolderMBS.
Download: Or ask us to be added to our shared Dropbox folder.

MBS Filemaker Plugin, version 3.1pr9

New in this prerelease of the 3.1 plugins:
  • Added WebView.GetFormSelectOptions function.
Download at

Expected 64 bit issues

We are preparing plugins for 64 bit target coming to Real Studio later this year. So we move a lot of integer parameters and properties to use RBInteger data type in C. This one is 32 bit or 64 bit depending on the target bit size. Also for other integer types we specify them more exact. Not simply unsigned int, but UInt32 or UInt64. For color values we no longer use integers, but RBColor in C which is a 32 bit unsigned integer in all cases.

Now for real 64 bit we have to check every integer in the plugin code. You also need to check your code and make it save for the future. For example how much code do you have like this:

dim n as integer = len(SomeString)

This will work as integer goes to 64 bit and a 5 GB string would not cause problems.

Good things happen as code like this will fix:

dim FileSize as integer = SomeFolderitem.Length

If the file is 3 GB big, this will give you a bad value in 32 bit target, but will be correct in 64 bit target. Still code like this is dangerous:

dim data as string = myBinaryStream.Read(myBinaryStream.length)

If you select a 10 GB file, in 32 bit this will return an empty string as the buffer can't be allocated, but on 64 bit target, the system will try to launch it and swapping virtual memory will block the computer for a few minutes.

Another thing is use of Memoryblocks and Ptrs. There will be a lot of code where we and you need to update the code to have different integer sizes. Also structures will change. You may even need to write Structures two times if one has UInt32 and one UInt64 as Real Studio has no general unsigned integer type.

In C we will have more issues. Starting from string functions which still work with 32 bit sizes to casting of pointers to integers and back loosing a few bits. Also bit operations like BitwiseXor, BitwiseShift or BitwiseNot may give you more bits than you may expect. Good luck for all of us!

Real Studio Developer Conference: Register now & save $100

The 2013 Real Studio Developer Conference
Register Now and Save $100
The Real Studio Developer Conference is the biggest Real Studio event of the year! At the 2013 event you can attend informative educational sessions, network with your peers, gain industry insight and even enjoy the magic of Disney!

The Real Studio Developer Conference will take place April 24-26, 2013 in Orlando, Florida, one of the top recreational and conference destinations in the world! The conference will be hosted at the Holiday Inn Downtown Disney, which boasts excellent amenities including free high speed internet, an on-site restaurant and bar, brand new 32" LG HDTVs, a zero-entry pool and an on-site game room, and is walking distance from Downtown Disney.

Register now to save $100!

Still not sure if you want to attend? Here are 10 reasons why you should!

  1. Learn from 30+ educational sessions about topics ranging from object-oriented programming basics to databases, the MonkeyBread Software Plugins, Real Studio iOS, Web Edition and tips for the new IDE. There are sessions for every level of Real Studio programmer. If you are new to Real Studio we have some great beginner-level sessions to help you get started or if you are a Real Studio pro, you are sure to learn something too!

  2. Hear directly from Real Software Founder and CEO, Geoff Perlman, during his keynote about what's new at Real Software, our product direction, and there are sure to be some secret announcements only for conference attendees!

  3. Talk directly with Real Software engineers, who are eager to learn about what you are doing with Real Studio or hear your feature request directly!

  4. Meet your peers at two exciting networking events geared to introduce you to that person you've talked to for years on the NUG or forums! We will gather for dinner on the 3rd floor deck of Fulton's riverboat for a networking dinner the first night and then we'll engage in some friendly competition (and dinner) at Splittsville on Thursday evening.

  5. See demos direct from Real Engineers during their sessions (yes, they are ALL doing a session on their area of expertise!) and catch major sneak peeks you won't see anywhere else!

  6. Since Orlando is one of the top conference and recreational destinations in the world, it is easy and inexpensive to fly to!

  7. We've arranged a steal of a hotel room rate (109USD) and Disney Theme Park Discounts. Real Studio and Mickey Mouse... what more could you ask for?

  8. This year we are doing a code battle! Attendees participating in the Gaming AI Battle will go head-to-head in this session. It should be exciting, so come and watch them battle to the death!

  9. BKeeney Software is doing a Training Day before the conference to help you get in conference-mode and learn from the experts about third party tools (utilities, controls, and libraries) to extend your app and database applications in depth! Learn more.

  10. Anything can happen! At the 2008 conference, Geoff Perlman played the drums (yes, there's video here), we "mocked" Back to the Future with comedians, Master Pancake ("Remote Debugger!"), who knows what will happen this year! It's sure to be full of surprises, lots of fun and lead to great opportunities!

Trip booked for Real World 2013

I just reserved my seat in the airplane and a hotel room. I'll be in Orlando from 21st to 27th and would love to meet all the Real Studio developers at the conference. So get your ticket soon.

If you need some consulting, private training and just like to chat about Real Studio, feel free to email me and we set an appointment. I'm always happy to find some people in the lobby or have someone to talk to while dinner. :-)

See you there!

MBS Real Studio Plugins, version 13.0pr8

New in this prerelease of the 13.0 plugins:
  • Added Locale.CDblMBS.
  • Added CURLSMBS.OptionTransferEncoding and CURLMBS.OptionTransferEncoding.
  • Fixed a leak in GZipFileMBS.OpenString.
  • Added CDblMBS function.
  • Added new functions for use with memoryblocks: QTGraphicsExporterMBS.ColorSyncProfileDataMemory, QTUserDataMBS.AddData, QTUserDataMBS.Memory, QuickTime.BuildPictureWithPicHandleDataMBS, ResourceForkMBS.GetResourceMemory, GWorldMBS.BMPdataMemory, GWorldMBS.JPEGdataMemory, GWorldMBS.PNGdataMemory, GWorldMBS.TIFFdataMemory, IconFamilyMBS.Data and MacPictMBS.PicHandleDataMemory.
  • Added GetVariantArrayUboundMBS and GetVariantArrayValueMBS.
Download: Or ask us to be added to our shared Dropbox folder.

MBS Filemaker Plugin, version 3.1pr8

New in this prerelease of the 3.1 plugins:
  • Improved WebView code to find front window even if Filemaker is not in foreground on Mac.
  • Added CURL.AddInputGIF, CURL.GetResultAsGIF and CURL.SetInputGIF.
  • Added PDFKit.AppendPages function.
  • Fixed String.ReadTextFile function to actually close the file correctly.
Download at

Filemaker Conference 2013 in Salzburg

The Filemaker Conference is 17th to 19th October 2013 in Salzburg, Austria.
We just booked out hotel, so we get a room.

Last time some people didn't get a room in the Crown Plaza as it was booked out.

CDbl and Format with locales

We recently added FormatMBS to format a number for different locales. So for a web app with German user and English user, you can display number formatted to them with the german one getting a command as decimal separator and the english one getting a dot.
Now today we added CDblMBS for next plugins to also get the value from text with given locale. So you can take input from users in web edition with their localization.

Some pictures from Real Studio Meeting in Paris

So far we are 10 12 people showed up:

Amazon EC2

Tonight I played a little bit with EC2 from Amazon. The good news is that you can use RS web app with EC2 Micro On-Demand Instances. And those are limited, but cost only $0.02 per hour which is just $15 a month. (comparable with jiffybox in Germany for 0.02€ a hour).
If you create an EC2 instance, you can choose Ubuntu 12.04.1 LTS in 32 bit. This way you already have all the required libraries preinstalled for Real Studio Web Apps.

I think this is a great way for Real Studio developers. Such an instance is setup in 5 minutes, you connect with SSH, upload your app and launch it!

MBS Real Studio Plugins, version 13.0pr7

New in this prerelease of the 13.0 plugins:
  • Added SetInput methods to various compression classes to also accept memoryblocks (in order to avoid extra conversion to string)
  • Added showUI parameter to TwainMBS.Acquire function.
  • Added environment functions to SQLGlobalsMBS.
  • Removed old LCMS plugin. Please use LCMS2 Plugin.
  • Added new GameCenter classes and methods for Mac OS X 10.8.2.
  • Reorganized array code in all plugin parts to make it more type save (C compiler can now verify types).
  • Added NSIndexSetMBS.Operator_Convert and NSIndexSetMBS.Values.
  • Fixed bug in NSTableViewMBS which causes events to not fire.
  • Changed our Socket extension functions to return -1 on error like OptionMaximumSegmentSizeMBS.
  • Fixed events in ABPersonViewMBS and ABPeoplePickerViewMBS.
Download: Or ask us to be added to our shared Dropbox folder.

MBS Filemaker Plugin, version 3.1pr7

New in this prerelease of the 3.1 plugins:
  • Added Twain functions.
  • Fixed a bug with reading from container with file referenced on disk and multiple paths for that one file.
  • Fixed some bugs in new Audit functions. Now we don't record extra fields you specify.
Download at

Reengineering plugins

Over the last days we have been working on reengineering plugins. We added additional type checking for arrays to all plugins. This means that for the last ten years, the compiler go a REALarray pointer and the plugin could read objects, doubles or strings from the array. Now we use dedicated array types like REALarrayDouble and all array functions have those types, too. This way the compiler can complain when we would try to read a double value from a string array. This showed a few potential bugs in our code and we fixed everything.

Also we are working to have the compiler verify for us that parameters to functions and events in C declaration match those in the Realbasic declaration. This is a lot of work, but also a good preparation for the day we move to 64 bit. Now we use RBInteger for all integer parameters instead of just int or long. And of course RBColor instead of integer types for colors.

With RBInteger and our now centralized array code we can easier change things once Real Software gives more details for 64 bit transition. Also for string access we centralize more to adapt to the new string access functions from the newer SDKs and also have the plugins honor text encodings better.

Real Studio meetings in Hamburg and Paris

Just a reminder for the upcoming events:

9th January, 6:30pm in Hamburg, Germany.
18th January, 9am in Paris, France.

See also our events website. You can meet me in Paris :-)

Real Studio Developer Issue 11.1

The January/February (11.1) issue of Real Studio Developer is now available.
Here's a quick preview of what's inside:
  • Real Studio in Birmingham * by Richard Duke
    Missed the Birmingham Conference? Here's what happened.
  • Intro to Fun, Part 2 * by Daniel Gross
    Daniel's back with more functional programming in Real Studio.
  • Command Line PDFs * by Marc Zeedar
    Looking for an easy, cross-platform way to generate PDFs without plugins?
    Marc explains how to use the command line tool htmltopdf.
  • Meet Christian Schmitz * by Marc Zeedar
    You use his plugins, but who is he? Meet Monkeybread Software's busy man.
  • What's New With R2 * by Marc Zeedar
    In December, Real Software released a new version of Real Studio. Here's how to use some of the new features.
In our regular columns we've got articles on optimization, creating SQL tables, web controls, public speaking, and much more. Enjoy!

MBS Filemaker Plugin, version 3.1pr6

New in this prerelease of the 3.0 plugins:
  • Added Modbus.CalculateRTUMessageCRC.
  • Added Audit.Delete2 and Audit.Change2 functions which take positive list of field names.
  • Changed Audit function to cache more values which doubles speed. Values are cached for up to a minute.
  • Added Audit.ClearCaches function.
Download at

Early price ending for Real World and BKeeney Training

Real World 2013 is just four months away. Sign up soon to benefit from Real World early bird pricing (Ends 5th January)
Register on conference website.

Also join the training with Bob Keeney and his team on the day before the conference. More details on the website.

I will probably join the evening before meeting and maybe even the training session.

MBS Real Studio Plugins, version 13.0pr6

New in this prerelease of the 13.0 plugins:
  • Fixed GKEventsMBS.PlayerAuthenticationDidChange event.
  • Fixed a couple of issues with documentation.
  • Added CSIdentityAuthorityMBS, CSIdentityMBS and CSIdentityQueryMBS classes.
  • Added TiffPictureMBS.JPEGQuality property and constants.
  • Changed PictureMBS Row functions to raise OutOfMemoryException if no memory is available instead of returning nil.
  • Added SQLCommandMBS.AsRecordSet.
  • Added Error, ErrorCode, ErrorMessage, SQLSelectAsRecordSet and SQLSelectAsRecordSetMT to SQLConnectionMBS class.
  • Added OptionMaximumSegmentSizeMBS, OptionReceiveBufferSizeMBS, OptionSendBufferSizeMBS and OptionTypeMBS methods to Socket class.
  • Added BuildRecordSetMBS function to build recordSet from arrays of strings.
  • Validated types for DynaPDF, SQL, SQLAnywhere and ChartDirector Plugin.
  • Validated types for XL Plugin. Fixed a couple of possible bugs.
  • Added XLBookMBS.BookVersion function and new offset parameters to XLSheetMBS.SetPicture.
  • Updated libXL to version 3.4.0
  • Added Picture.CopyABGRtoMemoryblockMBS, Picture.CopyARGBtoMemoryblockMBS, Picture.CopyBGRAtoMemoryblockMBS and Picture.CopyRGBAtoMemoryblockMBS.
  • Added ShowModalThreadSafeMBS and ShowModalWithinThreadSafeMBS for MessageDialog class.
  • Updated DynaPDF to version
Download: Or ask us to be added to our shared Dropbox folder.

Real Studio Meeting in Paris in two weeks

The next meeting of the Paris Real Studio developer group will take place Friday, January 18th, 2013 from 8h30 to 17h in Paris.
Save the date and join this meeting. The location is: Espaces reunion, 43 rue de Dunkerque, 75010 Paris.

There will be presentations by Stéphane Thiroux, Stéphane Pinel (RealSoftware), Jeremiah Leroy, Valdemar de Sousa and Christian Schmitz (MBS).

Attendance at this meeting is free (but if you want to donate to the organization, you're welcome). WIFI is available on site.

For more details, please visit:

New Year Nightmare

Well, the year ended with a broken hard disk. Not physically broken, but so many logical errors in the file system structure that Disk Utility could not fix them and the Mac at some point even stopped to boot from that disk. I had to reformat. :-(

So I spend the night with reinstalling Mac OS X and restoring from backup. The recovery mode on a Mac is quite mighty. While trying to fix it, I got the disk mounted read only, so I could use the terminal application there to find items modified within the last hours. I copied a couple of files from disk to an usb stick.

Time Capsules are a big help. I recommend everyone to have a couple in different locations! If you plan for the case you need a backup, please keep an eye on how the restore process will work and actually test it.

It looks like I lost no emails as I got back 99.9% from backup and the latest 10 over the USB stick. Also via USB stick, I got the projects out where I worked the last hours before the crash.

The rest of the day will be needed to recompile the plugins (temp files are not in backups), redownload some movies (also not in backup) and getting VMWare machines back online.

Have a great new year day!


Jun 2024
May 2024
Apr 2024
Mar 2024
Feb 2024
Jan 2024
Dec 2023
Nov 2023
Oct 2023
Sep 2023
Aug 2023
Jul 2023
Jun 2023
May 2023
Apr 2023
Mar 2023
Feb 2023
Jan 2023
Dec 2022
Nov 2022
Oct 2022
Sep 2022
Aug 2022
Jul 2022
Jun 2022
May 2022
Apr 2022
Mar 2022
Feb 2022
Jan 2022
Dec 2021
Nov 2021
Oct 2021
Sep 2021
Aug 2021
Jul 2021
Jun 2021
May 2021
Apr 2021
Mar 2021
Feb 2021
Jan 2021
Dec 2020
Nov 2020
Oct 2020
Sep 2020
Aug 2020
Jul 2020
Jun 2020
May 2020
Apr 2020
Mar 2020
Feb 2020
Jan 2020
Dec 2019
Nov 2019
Oct 2019
Sep 2019
Aug 2019
Jul 2019
Jun 2019
May 2019
Apr 2019
Mar 2019
Feb 2019
Jan 2019
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