The
CURL conference (or meet-up) in Prague was a great way to learn a bit more about CURL and how people use it. Especially I leant about the roadmap, HTTP/2, HTTP/3 or Quic and TLS news. The sessions give a great insight what's new in CURL since the last conference, how some internal works and how the project is organized.
The event is organized with great help of some local Czech people from Charles University, which also provided the room. Daniel Stenberg, the author of CURL was of course the star of the show. But there were other notable attendees from various bigger companies including Teamviewer, Akamai, Google, Red Hat, wolfssl, Apiary (part of Oracle) and a few startups where I forgot the names and a few self employed people. The maintainer of wget command line tool came as an attendee. Nice to see them working together on protocol details for their respective open source projects.
Overall the CURL project seems to work well. Activity is growing, more people contribute, the number of tests is growing and even the number of tests to source code lines is raising. They collect money via a donation service and plan to use it to fund a few things including some bug bounty program.
Looking forward to future events! Thanks everyone for organizing and interesting sessions.
Blog post about my presentation:
Using system SSL Certificates in CURL
When you build an application for MacOS or iOS, you may need to set some keys for info.plist. Apple requires for newer MacOS and iOS versions that applications have the info.plist entry and are code signed. If some malicious software would trick itself into getting loaded into a process and try to access your data, the app crashes if the entry is not in info.plist.
In
FileMaker, you can add those entries right away in Xcode for your iOS app made with FileMaker iOS SDK. Sometimes for some things, you may even need to add the info.plist entries to the FileMaker Pro app itself.
In
Xojo, you can create an info.plist file and drop into the project. Xojo will merge your info.plist file into the one for the application. This is a great way to automatically add the right entries. Other way is to use defaults app in a shell script, which can do that right away when you do code signing.
e.g. in a build script:
Dim App As String = CurrentBuildLocation + "/" + CurrentBuildAppName + ".app"
Call DoShellCommand("/usr/bin/defaults write " + App + "/Contents/Info ""NSCalendarsUsageDescription"" ""Exports events to your calendar.""")
The following table shows possible entries:
(more)
The
CURL library supports various SSL backends. We build currently CURL in three variants. The main one uses OpenSSL cross platform. For Windows we build a second copy using Windows own SSL. For MacOS and iOS we build the third variant with transport security. The native SSL libraries from Mac and Windows use the certificates installed on the system, while we need to supply our own certificates for SSL with OpenSSL. You can download cacert.pem with common root certificates from
CURL website. Or just use the certificate from your website if you only need to connect to the same server (certificate pinning). We need OpenSSL as SSH2 library uses it for the SSL part.
For MacOS we search the keychain for certificates. We copy the data for each certificate and use OpenSSL function
d2i_X509 to parse it. Than we store it in a global std::vector.
For Windows, we open CA, AuthRoot and ROOT stores with
CertOpenSystemStore function. We enumerate all certificates and add them to the same vector as for MacOS.
In CURL we use
CURLOPT_SSL_CTX_FUNCTION option to set our callback. In the callback, we get the X509_STORE from the SSL context via SSL_CTX_get_cert_store function. We loop over our certificates and add each via X509_STORE_add_cert function. Now all certificates are loaded and we can enable verification.
Sample code:
CURLSSLCertificatesWin.cpp and
CURLSSLCertificatesMac.cpp.
In our Xojo plugin, simply call UseSystemCertificates method in
CURLSMBS class to load certificates into this instance. In FileMaker, please call
CURL.UseSystemCertificates function on the CURL session.
You may know the problem that on Windows your app shows several windows and some are behind others windows from other applications. The user may need to click once on all your app windows or use alt-tab key combination to switch to another app and back to get all windows to front.
We'll change that with our plugins by adding new functions to bring a windows app to the front. We activate the frontmost window from the app and arrange all other windows behind it, but before other windows.
For
FileMaker Process.SetFrontMost function is now available for Windows in addition to MacOS. To bring an individual window to the front, you can use
Window.Activate function.
For
Xojo you can now set Application.
FrontmostMBS property on Windows, too. We add window.
ActivateWindowMBS method to bring a window to the front and set focus. For dealing with all windows on Windows, you can bring a window from another app to the front with ActivateWindow method in
WindowsListMBS class.
We hope those two new functions will help you to improve the user experience in your solutions.
e.g. you can bring all windows to front when user clicks on one window.
Coming soon in April with
MBS FileMaker Plugin 9.2 betas and
MBS Xojo Plugins 19.2 betas.
Our
MBS SQL Plugin turns 10 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.
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.
Monkeybread Software is pleased to announce the
European MBS Xojo Conference in metropolitan Cologne, Germany. We meet in the lovely Dorint Hotel in the center of Cologne. The hotel is in the city center and in walking distance to the main station. Beside our two conference days we have accompanying social programme with our dinner event and optional two training days. For the evenings we have casual get-together in the hotel bar or beer garden.
To give you an update, we have already over 30 attendees signed up, we got a few sessions already confirmed and listed on the website. A few more potential sessions are not yet confirmed. We are still looking for your developers to apply for a free ticket. If you like to join the conference and get the early bird ticket pricing, please sign up soon. If you like to speak, please send a proposal soon and please sign up for the conference soon. As of today we have people from seven countries already signed up.
The schedule:
Oct 23rd: Xojo Training in English
Oct 24th: Conference, first day with dinner event
Oct 25th: Conference, second day
Oct 26th: Xojo Training in German
Registration is open. The early bird offer available till 24th April is just 499 Euro plus VAT. Attending the conference costs regularly 699 Euro plus VAT, including food and beverage in the Dorint Hotel as well as an accompanying social program.
Sessions are to be held in English. Our conference is conceived as a networking event for the Xojo community. The conference is an ideal opportunity for sharing your thoughts and your own development experience with fellow users and developers. If you like to hold a presentation, please contact us as soon as possible. Speaker receive discounted tickets.
More details on the
conference website.
Recently we got a new
team website.
We thought we could add a few faces to the website and show you the people behind the products.
And we listed a few of our partners for development of a few plugin parts. Some of them may join us for the conference.
If you like to meet us, you can see us at the various conferences.
This year Stefanie will join me for
Xojo Developer Conference in Miami,
FileMaker DevCon in Orlando,
MBS Xojo Conference in Cologne and
FileMaker Konferenz in Hamburg.
Dana just reminded everyone that the hotel rate ends tomorrow:
There is still time to plan your trip to Miami and we are seeing great prices on flights (Roundtrip from Boston: $124, Denver $130, Raleigh $179, Chicago $161, Austin $179, San Francisco $236, Salt Lake City $201, Portland $209, Atlanta $118, London $407, Barcelona $572, Paris $678, etc. ! Our hotel room block (and amazing room rate of $149) only lasts through Monday, March 25th, so book your hotel room ASAP.
May 1-3, 2019 | Miami, Florida | Marriott Biscayne Bay
Sessions | Networking | Fun
Watch our 2018 highlights video to hear from attendees what it's like!
XDC Home Sessions List Agenda Register
The hotel offers the same rooms regularly for about $269 per night, so the rate is very good!
If you like to attend a conference, there is a the bigger official
Xojo Developer Conference in May 2019 in Miami and our
European Xojo conference in Cologne in October 2019.
As there is non XDC 2020 planned, if you though to skip 2019 and come next year, please reconsider. As posted in
Xojo forum, Xojo Inc. does currently not plan with a XDC 2020 and we expect an announcement for a 2021 XDC later this year.
Today I got a notice from Apple that I won their ticket lottery and got a ticket for WWDC 2019 in San José.
I am looking forward to get into their keynote presentation, get into a few interesting session and meet a few of the engineer who wrote the frameworks I use everyday.
Anyone else coming to WWDC?
This is my 5th attempt to get a ticket for WWDC, so I am happy to get there this year.
I'll certainly add a few extra days to do the sight seeing tour to Apple's two campuses. Maybe I can even stop by FileMaker Inc. and take a look where they do all the development work?
If people are interested we could even make some kind of local meet-up with people from San Francisco or San José area to talk about FileMaker and Xojo?
Today CURL library and command line tool turns 21 years old. It's a long time in software business and a great success with curl on nearly every computer device on earth as it ships for example with MacOS, Google Chrome, Linux, Android and others.
Since January 2007 and the MBS Xojo Plugin 7.0, we do include
CURL for up- and download via ftp/http.
Since January 2012 and the
MBS FileMaker Plugin 2.5, we include
CURL functions for FileMaker.
And as far as I see, FileMaker Inc. added CURL right to the database engine with version 11 of FileMaker, but only added CURL options for Insert From URL script step with version 16.
See
blog post from Daniel Stenberg.
For end of March we have the
CURL conference on the agenda in Prague. Please join it if you like to learn more about CURL. See
wiki page.
Interested in a meeting for FileMaker or Xojo?
If you are in Prague and like to talk with me, please contact me soon.
Marco Bambini and his team worked hard on an update to their products CubeSQL Server, SQLiteManager and SQLiteDoctor.
During the past months we worked hard in order to renew the look and the functionalities of SQLabs and of all its products. We are extremely proud to announce a complete website renovation and products updates.
To celebrate the new updates we are offering a time limited, huge discount for all our products.
Read the details here.
MBS Xojo SQL Plugin and
SQL Functions in
MBS FileMaker Plugin supports CubeSQL Server and SQLite beside a dozen other database types.
Xojo Inc. changed the name of the license option called Enterprise to Xojo Pro Plus.
As you see, it includes
Top Priority Support, so you get quicker answers from Xojo's support staff. Your messages and feedback cases should get priority to be read first.
Fast Fixes are included, so your problems are not just read, but also bugs fixed and workarounds found to help your app to work.
2X Activations allows you to install Xojo on up to 6 computers or virtual machines. This is very handy to install Xojo Pro on Linux, MacOS and Windows VMs and activate Xojo there, so you can build and test easily on each machine.
Anyone who invests into Xojo Pro Plus licenses, should also consider to go to the Xojo Developer Conferences and talk directly to Xojo staff. Geoff Perlman will be at the conferences in Miami in May and in Cologne in October.
We like to show you this example project included with MBS Xojo ChartDirector Plugin. This example shows several features of ChartDirector and our plugin how to:
- create a chart, here with lines.
- use dates for an axis
- use several data sets on a layer
- use gradients for background color
- handle mouse over for tracking
- how to dynamically draw a layer on top fo the chart
- how to do 2x resolution for support for HighDPI and Retina screens
- how to handle fonts and show text on linux
- how to format a label with custom font and formatting.
Check the example. You may need to enable HiDPI support option in shared build settings. Than you can build the project for Mac, Windows and Linux and it works nice in 32 and 64 bit.
(more)
In 2010 we collected a few MBS Plugin related articles into a
special edition of the
Xojo Developer Magazine (formally REALbasic Developer Magazine).
Third-Party Tools: Updater Kit
Christian demonstrates his MBS Updater Kit plugin which adds crossplatform self-updating capability to your REALbasic applications.
Easy Charts and Graphs (Part 1)
Christian shows how easy it is to create amazing charts and graphs using his ChartDirector plugin for REALbasic.
Easy Charts and Graphs (Part 2)
Christian shows how easy it is to create amazing charts and graphs using his ChartDirector plugin for REALbasic.
Making RB Plugins
Have you ever wondered how to make a plugin for REALbasic? Christian adapts his talk from the 2009 RB Summit and provides us with an overview of the process.
RB Summit 2009
In September Geoffrey attended the RB Summit in Boulder, Colorado, and he provides us with his report.
It's still a great way to read the articles about ChartDirector. We plan a few new articles this year, but this free PDF should be in everyone's Xojo library.
Download here
Dana just reminded everyone that the hotel rate ends soon:
There is still time to plan your trip to Miami and we are seeing great prices on flights (Roundtrip from Boston: $124, Denver $130, Raleigh $179, Chicago $161, Austin $179, San Francisco $236, Salt Lake City $201, Portland $209, Atlanta $118, London $407, Barcelona $572, Paris $678, etc. ! Our hotel room block (and amazing room rate of $149) only lasts through Monday, March 25th, so book your hotel room ASAP.
May 1-3, 2019 | Miami, Florida | Marriott Biscayne Bay
Sessions | Networking | Fun
Watch our 2018 highlights video to hear from attendees what it's like!
XDC Home Sessions List Agenda Register
The hotel offers the same rooms regularly for about $269 per night, so the rate is very good!
If you like to attend a conference, there is a the bigger official
Xojo Developer Conference in May 2019 in Miami and our
European Xojo conference in Cologne in October 2019.
We got notice from Norman, that he left Xojo Inc. and is now looking for new projects or jobs related to Xojo:
Norm Palardy, formerly Senior Developer at Xojo Inc., has become available if anyone is looking for additional resources to add to their development efforts.
After spending nearly 11 years at Xojo he is now seeking other opportunities to work with talented engineers and product specialists to make those designs come to life.
Anyone wishing to contact him can get in touch with him at npalardy at great-white-software.com
You may have met at the various Xojo conferences, read his articles in the Xojo Developer Magazine and he is one of the top posters on the Xojo forums. He knows Xojo in-and-out and could certainly help to move a project forward.
Nickenich, Germany - (March 12th, 2019) -- MonkeyBread Software today is pleased to announce
MBS Xojo Plugins 19.1 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 2400 classes and 64000 documented features, and the versatile plugins have gained more new functions:
As you may know we have an existing
BigNumberMBS class which provides a 320-bit floating point number. The new
LargeNumberMBS class adds an integer with up to 4128 bits in size. That is enough bits for 1200 digits. You can generate big prime numbers, use normal math operators and bitwise operations.
Our DirectShow classes for recording video on Windows got upgraded. We now have a
DirectShowAMVideoCompressionMBS class to configure video compression settings. Several classes got a ShowPropertyDialog method to show the standard configure dialog, so you can setup streams, camera controls, and video compression.
For SceneKit we added 28 new classes to handle basic geometry in 3D scenes, add actions, constrains and materials. We got a few nice example projects to show you how to construct items in 3D space and display them to the user.
The older
NSUserNotificationMBS class got deprecated, so we added
UNNotificationMBS and related classes for notifications on MacOS 10.14 or newer. This includes actions in the notifications, so user can respond directly.
For GraphicsMagick we got a new class to convert images threaded:
GMConvertMBS and
GM16ConvertMBS classes have properties for which image to load, what effect to apply and where to save it. As this works with preemptive threads, you can do various image operations in parallel to batch process a lot of images. Similar
CGImageSourceMBS.CreateThumbnailMT method can create thumbnails using MacOS frameworks threaded.
We upgraded
NSSpellCheckerMBS class for MacOS. The new
NSTextCheckingResultMBS class provides details on all the issues found. This includes both grammar and spelling errors.
The new
TextConverterMBS class converts between various text encodings, we got new UTF-8 related functions for
StringHandleMBS class, we upgraded StoreKit classes for MacOS 10.14 with new subscription methods. For Linux we got a new
LinuxIconMBS module to query file icons. For Windows we can now query all hard linked files to a given file path and
TimerMBS class got an enabled property.
For
SQLErrorExceptionMBS we now provide the SQL string causing the error,
JSONMBS class got a new delete item method and
PictureMBS has a new FilePath property for the temporary file used for memory mapping.
NSColorSpaceMBS class can now tell you the file for a colorspace,
PDFDocumentMBS class can now write file with options and
TiffPictureMBS can query scanlines scaled down.
Finally we updated CURL to version 7.64.0, DynaPDF to version 4.0.26.75, SQLAPI to version 4.2.5 and SQLite to version 3.27.1.
See
release notes for a complete list of changes.
(more)
New in this prerelease of the 19.1 plugins:
Download:
monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.
For the
MBS Xojo Conference in Europe, we may have something special for people staying a bit longer. Especially our guests from the USA are probably coming for a week, so we organize an extra sight seeing special.
For 22nd October, we'll organize a guided private tour to the roof of the cathedral (or with bad weather to the underground or backstage parts). We can invite up to 15 people for the tour. Let us know if you are interested to join us.
Participants need to be 16 year old. They do have a cargo lift, but if it's not available or broken that day, we may need to take the 240 steps to walk up. Please sign up for the conference, make your hotel reservation and let us know whether you have time. Same evening we may go for dinner after the tour. Start time is probably around 15:30 o'clock at the hotel.
New in this prerelease of the 19.1 plugins:
- Added AddMediaFile method to WordFileMBS class.
- Added simulatesAskToBuyInSandbox property for SKPaymentMBS class.
- Added restoreCompletedTransactionsWithApplicationUsername method to SKPaymentQueueMBS class.
- Added downloadContentLength, downloadContentLengths, downloadContentVersion and subscriptionGroupIdentifier to SKProductMBS class.
- Added TerminateForInvalidReceipt method to SKReceiptRefreshRequestMBS class.
- Added appStoreReceiptURL, requestReview and StoreReviewAvailable to StoreKitMBS module.
- Added new methods for UTF8 to StringHandleMBS class.
- Added NSTextCheckingResultMBS class.
- Added more methods to NSSpellCheckerMBS class.
- Manually applied CURL fix: vauth/oauth2: Fix OAUTHBEARER token generation #3377
- Removed manifest information from CURL plugin which stated a runtime DLL is needed, which was wrong.
- Fixed option passing for MKMapSnapshotterMBS constructor.
- Added more methods for LargeNumberMBS.
Download:
monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.
The March/April (17.2) issue of
xDev Magazine is now available. Here's a quick preview of what's inside:
Numbers Please! by Markus Winter
Creating a numbers-only textfield sounds easy, but as Markus demonstrates, it's trickier than it looks.
Dynamic DLL's by Eugene Dakin
If you're on Windows and need help managing DLL's, Eugene shows how to load them dynamically in your Xojo apps.
More Beyond JSON by Tim Dietrich
Last issue Tim showed how to create an API to generate barcodes. Now he's back to demonstrate an API for charts and graphs.
Alternating Row Colors for Dark Mode by Christian Schmitz
We've been making alternating row colors for our listboxes for years—but that was before Dark Mode. Suddenly it's a tricky problem, but Christian has the answer.
Rotating a Cube by Eugene Dakin
Some people think Xojo can't do graphics, but here's a great demo of a rotating 3D cube in pure Xojo code.
PLUS: Creating custom events, XDC 2019, new Xojo docs, Flashing windows on Windows, MarkdownDS, Best of the Web, and more!
Monkeybread Software is pleased to announce the
European MBS Xojo Conference in metropolitan Cologne, Germany. We meet in the lovely Dorint Hotel in the center of Cologne. The hotel is in the city center and in walking distance to the main station. Beside our two conference days we have accompanying social programme with our dinner event and optional two training days. For the evenings we have casual get-together in the hotel bar or beer garden.
We like to offer
young developers the possibility to meet the Xojo community, get in touch with other developers and maybe find first clients or an employer.
For the 2019 conference we decided to provide
three conference tickets free of charge to three young developers so they have the chance to join our conference. Please apply until 24th April 2019 to get one of the tickets.
Requirements:
- You speak english and you can follow the conference.
- You are 25 years old or younger.
- You have done your first Xojo projects and know Xojo a little bit.
- You are sure you can cover your cost of travel, food and hotel room.
- You have the required passport or Visa to travel to Cologne.
And it's perfectly okay for a parent to come to the conference and let their children apply for such a ticket. We had father and son combinations before as well as developer with trainee.
The schedule:
Oct 23rd: Xojo Training in English
Oct 24th: Conference, first day with dinner event
Oct 25th: Conference, second day
Oct 26th: Xojo Training in German
Registration is open. The early bird offer available till 24th April is just 499 Euro plus VAT. Attending the conference costs regularly 699 Euro plus VAT, including food and beverage in the Dorint Hotel as well as an accompanying social program.
Sessions are to be held in English. Our conference is conceived as a networking event for the Xojo community. The conference is an ideal opportunity for sharing your thoughts and your own development experience with fellow users and developers. If you like to hold a presentation, please contact us as soon as possible. Speaker receive discounted tickets.
More details on the
conference website. For any questions, please don't hesitate to contact us.
Recently we implemented some web applications for a client. We use cgi deployment with a linux server running apache, so the apache can handle the SSL stuff. If you have 20 people on one instance, it may get a bit slow for each user. To improve performance, we installed the application several times on the web server. For this we build the app several times with different app names and different identifiers. So we have MyApp1, MyApp2, MyApp3 and MyApp4. All have an unique identifier like com.company.myapp1 to 4. You can easily build that with a build script automatically.
Once you have all 4 copies of the app on the web server, you may need a little load balancing script. But first, each instance must be able to tell how many sessions it has, so we got a status query for the HandleSpecialURL event. The simple version looks like this:
EventHandler Function HandleSpecialURL(Request As WebRequest) As Boolean
#Pragma BackgroundTasks False
if Request.Path = "Status" then
Dim j As New JSONItem
Dim a As app = app
j.Value("MemoryUsed") = runtime.MemoryUsed
j.Value("ObjectCount") = runtime.ObjectCount
j.Value("SessionCount") = a.SessionCount
j.Value("Name") = a.ExecutableFile.Name
Request.Print j.ToString
return true
end if
End EventHandler
(more)
New in this prerelease of the 19.1 plugins:
Download:
monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.