
Our
transparent screensaver is still the choice of screensaver for computers running in an office. You can see the statistics of your running applications, the console log or activity monitor to check quickly what's going on. Only when you move mouse or touch a key, you need to enter your password or use Touch ID. But otherwise the view is free to see stats.
Try it today and let me know how you like it.
On all commenters here on this blog article, we raffle on free license on Sunday.
Below the
announcement from the last update:
(more)

New in this prerelease of the 18.2 plugins:
- Added NSApplicationMBS.runModalForWindow function.
- Added over 50 more CURL options.
- Added more constants for CURL.
- Added NSURLConnectionFilterMBS class for timeout change for Xojo.Net.HTTPSocket on Mac.
- Added CURLSSSLBackendMBS class.
- Added GetInfoActiveSocket, GetInfoHTTPVersion, GetInfoProtocol, GetInfoProxySSLVerifyResult and GetInfoScheme methods to CURLSMBS.
- Added brotliVersion, brotliVersionNumber, iconvVersionNumber, libidnVersion, libsshVersion, SupportsBrotli, SupportsConv, SupportsGSSAPI, SupportsHTTPSProxy, SupportsKerberos5, SupportsMultiSSL, SupportsNTLMWB, SupportsPSL, SupportsTLSAUTHSRP and SupportsUnixSockets properties to CURLSVersionMBS class.
- Added CURLSMBS.LasterrorText property.
- Changed CURLSMultiMBS and other variants of it to have Pipelining be an integer property and added constants for it.
- We filter events for OverlayMBS.MouseWheel which have a zero delta.
- Updated to Xojo 2018r1 plugin SDK.
- Changed CURLSMBS.SetupAWS to no longer complain for empty path string as this is needed for AWS Translate.
- Updated DynaPDF to version 4.0.18.49.
- Improved fields functions for WordFileMBS class to better read/write fields.
Download:
monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

Xojo 2018 Release 1 is released. Some highlights from the
announcement:
- Windows IDEs can now Run and Debug 64-bit Windows applications.
- Windows framework updates to reduce flicker.
- iOS builds now use iOS 11 SDK and support iPhone X screens.
- You can now display server stats for you Xojo Cloud servers.
- WebFileUploader has many improvements, including: Drag&Drop, multiple file selection, filtering, upload progress, supports files > 2GB.
Personally I have other highlights including those:
- Currency comparison works correctly under 64-bit.
- Windows IDE no longer pre-compiles plugins unnecessarily.
- SQLiteDatabase: When compiling a prepared statement fails, we now return the error that SQLite reports, instead of a custom "unable to prepare" error message.
- Converting floating point to unsigned integer types now works correctly under 64-bit.
Complete
release notes. What are your favorites?
If you use MBS Plugins, please be aware that you need recent plugins (17.5 or newer) as the IDE is 64-bit and the plugins must support 64-bit. See
Xojo versions supported by MBS Plugins.

For writing a web service client with Xojo you can go three ways for your socket stuff. First you can use HTTPSocket class, which still is in a lot of old projects. Or you go with newer
Xojo.Net.HTTPSocket class, which sadly misses some features like timeouts. Or you go via plugin and use for example CURL class.
Last year I moved a client app from old HTTPSocket to Xojo.Net.HTTPSocket to get HTTP 1.1 support and proxy handling. Oh, well, I should have gone the plugin way as now client asks for a timeout. Some requests take longer than 2 minutes on server to provide responds and we get timeout errors in the app.
Before we switch everything to CURL, I checked for an easier way and looked into patching the Xojo class to use new timeout. Looking on a stack trace on how it works, you see this:
4 Window1.Window1.Event_Open%%o (in test.debug) + 574
4 Xojo.Net.HTTPSocket.Send%%oyy (in test.debug) + 63
4 HTTPSocket_Send (in XojoFramework) + 83
4 HTTPSocketImpNS::Send(Text const&, Text const&) (in XojoFramework) + 312
4 HTTPSocketImpNS::StartConnection(Text const&, Text const&) (in XojoFramework) + 478
4 -[NSURLConnection initWithRequest:delegate:startImmediately:] (in CFNetwork) + 43
4 -[NSURLConnection(Private) _initWithRequest:delegate:usesCache:maxContentLength:startImmediately:connectionProperties:] (in CFNetwork) + 190
4 -[NSURLConnectionInternalConnection initWithInfo:] (in CFNetwork) + 1301
As you see the Xojo.Net.HTTPSocket class is implemented in C++ code and uses NSURLConnection class on Mac for the job. So I created a new
NSURLConnectionFilterMBS class, which allows you to filter the call to initWithRequest:delegate:startImmediately: function. All calls to initWithRequest:delegate:startImmediately: are intercepted, our event FilterConnection event is triggered and you can modify the request, before the connection is created. So for Mac at least we can fix the timeout issue.
Coming soon in next prerelease for MBS Xojo Plugins 18.2.
Yesterday I did make a presentation about how to use
mimetic library with curl to parse email:
We use mimetic library for our
MBS Xojo and
FileMaker plugins.
The location is excellent for such a conference with all the technic decoration and there is much to learn. I met a few interesting people ranging from students, small companies to big players like Apache organization or Google Inc.

Monkeybread Software today is proud to announce Combine PDFs 5.2.8, an update to their popular PDF merge and split tool for Mac OS X. With a focus on ease-of-use, Combine PDFs is a lightweight utility which allows anyone to merge PDF files and images into a single PDF file. The user need only drag & drop files onto the program icon. The main window appears, allowing the user to set the order in which the files are joined.
Version 5.2.8 is a port to 64-bit, which we provide now for testing. Let us know if you see an issue. If it works fine for everyone, we can push it to the users next week via auto update.
Combine PDFs Website
Requires MacOS 10.9 or newer for 64-bit. Older 32-bit version stays available and still works well.
Greetings from the CURL conference in Stockholm
We'll going to learn more about CURL and how to use it. See
agenda.

NICHENICH, Germany (April 13rd, 2018) -- Monkeybread Software Releases IP in menubar v4.6, an application to show the current IP address in the menubar.
This small application runs in the background and shows the current IP address of your Mac in the menu bar. There are options available to customize the appearance of the menu entry. The IP address is updated regularly. Switch on the Router option if you are behind a router or gateway. You can still see your local IP address in the menu.
You can quit this application using the menu or by using the Activity Monitor (see /Applications/Utilities folder).
This application is freeware and provided as is.
IP in menubar is an example of what you can do in Xojo using the MBS Plugins and their NSStatusItemMBS class.
New in version 4.6 is 64-bit support.
With Xojo moving this app to 64-bit was just a switch in the settings and rebuilding the application. As far as we see everything works fine and we hope you enjoy this application.
The application is freeware, but contributions are accepted through PayPal.
Download at the
IP in menubar website.

New in this prerelease of the 18.2 plugins:
Download:
monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

Just five months left for our
European MBS Xojo Conference 2018 in Munich. If you like to join, please sign up soon.
Already over 25 attendees are registered from six countries and the schedule is filling quickly. Reserve your ticket and reserve your hotel room as soon as possible.
The schedule:
Sep 5th | Evening | optional get-together with everyone arriving early |
Sep 6th | 9:00 to 18:00 | First day of conference with keynotes |
| Evening | Dinner event in Augustiner Keller |
Sep 7th | 9:00 to 18:00 | Second day of conference with more sessions |
| Evening | Optional dinner together |
We all look forward to presentations about Android, the new Web Framework other news in the Xojo keynote.
Registration is open. The late bird offer available till 7th June is just 599 Euro plus VAT if needed. Attending the conference costs regularly 699 Euro plus VAT, including food and beverage in the Maritim 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.

Whenever I come to a hotel room, I first need to check if everything is right. Do I have light, power and warm water? Does the toilet work, is the bed tidied and doesn't the room smell strange? Do we have good Wifi reception?
Next I check if it's silent and can be made dark at night. I really hate noise when sleeping so I routinely unplug power supply for fridges or TVs with LEDs blinking all night. Usually I need to turn off a thermostat to find sleep. Sometimes it can even happen that the room next door contains the heating or air conditioning engine which may make sound day and night.
If anything is really bad, I need to request a different room before I made myself comfortable there. What do you check?
One think I always do at the first day, is to walk down the stairs, so I know the way in case of an emergency. Depending on the hotel layout, it can even be more convenient to take the steps next to my room than walking a long way to the lifts.
When choosing a hotel, I usually check if they have a lift, a restaurant, a 24h reception for checking in & out at any time, Wifi and free parking if possible.
What criteria do you have?

Today I had a workshop with a client for Xojo Web Apps. Check out our
Events & Training page if you like to have a training or join an event.
In the training we had a problem with
WebImageView control in Xojo. It always shows images at 100% size and centers them. But we wanted to load existing images hosted on a server based on the URL from a database query. So we query the database and get back URLs for images already, but they may be of a different size as the thumbnails we need. That is normally no problem as a browser can load an image and scale it down easily. We tried various hacks on the WebImageView and indeed you can overwrite the CSS styles for the view to scale down the image. Sadly Xojo resets the style to fix it when you resize the website. And the feature request from 2015 to get a scale options shows no progress (
Feedback case #40994). They may have other priorities...
But Xojo got in early 2017 an improvement to allow raw html tags in
text for a label. Yes, a label is now used in our web app to show images! The label gets the img tag in the open even with the right URL, e.g.:
<raw><img src="http://www.mbsplugins.com/CoreML-thumbnail.jpg" style="max-width:100px; max-height:100px;"></raw>"
You can write this in the text property in the IDE or late assign it in an open event:
Sub Open()
me.
Text =
"<raw><img src=""http://www.mbsplugins.com/CoreML-thumbnail.jpg"" style=""max-width:100px; max-height:100px;""></raw>"
End Sub
As you see we define the rectangle here with max-width and max-heigh in CSS to make sure the image is scaled proportionally down. You can add more CSS tags, e.g. to center the image.
An important property is the multiline property on the
WebLabel. Only if you set Multiline = true, your image will have the right size. Otherwise it's cut to 27px height by Xojo.

You can download and try MBS Xojo Plugins for free. Just play with examples and start development your application. A few days into development and certainly a few days before shipping to testers or clients, you should order a license. By default you order our regular plugin licenses for commercial use.
If you qualify for academic status, e.g. as a student learning to program, you can order academic licenses from us. Sometimes on a case by case decision we may include a hobbyist or unemployed user for academic status. Academic licenses do not allow commercial development, so if you receive any compensation for your development, you need a commercial license. Also we do not sell academic licenses to companies.
Speaking of a company, we expect a company to buy licenses based on the number of developers using them. The reason is obvious: If you have several developers, you should contribute more to the plugin development. Of course if you have a few developers, there may be a volume discount.
As a consultant, there are two ways:
First if you just deliver a compiled app to the client and they don't see source code with a license key, you can just get a license yourself as constant and deliver the compiled application.
But if as a consultant the client wants:
- Source code in a repository
- Be able to read code or make changes themselves
- Be able to build the application themselves
- Get a backup copy of the source code
The client will probably need a Xojo Pro license as well as their own MBS licenses and you use the client's license keys in that project, but of course not in your own projects. For your own projects, we expect you to have your own license.
A violation of the license agreement can lead to have a license key voided and not valid for future releases or update orders. And of course legal actions are possible which would require you to stop using our plugins and destroy all copies of applications using the plugins.
If you have questions, please do not hesitate to contact us.

New in this prerelease of the 18.2 plugins:
Download:
monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

Due to the
CURL conference, we will come to Stockholm in April.
So let's organize a Xojo developer meeting! Anyone interested?
Currently we'd like to know if there is interest for a dinner meeting or more?
Please fill the
survey.
We meet 16th April 2018 in Stockholm in the evening.
For a dinner, we would just meet in a restaurant and chat. If we get a bigger group, maybe get a separate room and with a screen and projector, so you an show something if you like.
If you are interested in some private consulting or training, let me know and we can arrange an appointment.

1st April 2000 I found my company. Well, I registered as a business by getting my Gewerbeanmeldung (business registration) here in Germany.
That was 2 months before I finished school (Gymnasium). While alternative civilian service (Zivildienst) and my time at the
university, the company run well and I didn't have to depend on my parents or student loans. Actually the company got me so busy over the years, that I spend less time at university and since 2007 this is my full time job.
I had a few clients in that time interested in development in
REALbasic, a very young development environment which started two years earlier. At that time I had a website with a
few freeware utilities, so people could see that I can do development. Two years later the demand for plugins got so high, that end of 2001 I started publishing my own plugins.
Thanks everyone for supporting me over the years!
PS: If you need a license (update) this weekend, use coupon code Birthday for an 18% discount.

For a few months now we have been working closely with Xojo, Inc. to port all the MBS Xojo Plugins to the iOS target in Xojo with the upcoming Xojo Plugin SDK for iOS. As it turned out last week the SDK is quite portable, so with building a C++ version with Android system headers allows us to generate an Android version, too!
As of today things compile well and most of the plugin parts including DynaPDF, Encryption, ChartDirector and SQL plugins are building for both iOS and Android. This includes building ARM for 32-bit and 64-bit for both targets. For iOS we target iOS 10.4 or later, but it is yet unclear what version Xojo will require as minimum with the new plugin SDK. For Android we support all version from the last years. The market there is so fragmented, we have to go back to tasty Donuts to cover a serious amount of devices out there. But still recent Ice Cream Marshmallow and Jelly Bean Oreo versions are our main targets.
iOS is working well on device, but testing for Android requires the upcoming Xojo 2018r1.4 release, which is not yet publicly available. Testing all the functions on all the devices, all Android versions in all combinations will take some time, so we expect to buy at least 20 test devices and hire a couple of testers. Nevertheless we expect to test all 60000 documented MBS Plugin functions within the next century.
The new plugin SDK uses the newer data types, so all classes now use text instead of string and auto instead of variants. In cases where this causes trouble, we may need to overload methods with xojo.core.memoryblock to take memory directly. Although array handling and passing big data structures seems to be difficult, we may switch to pass them as JSON encoded blocks for simplicity. Performance may be catastrophic, but at least you can easily read the data in the debugger.
If you like to join to sign up for the beta, please contact us soon via our contact forms. Deadline to sign up is 1st April.
PS: This was our
joke for 1st April 2018. There is no beta test as there is no plugin SDK for iOS and Android is not yet available.
Spending a few days in Bavaria (guess which city), before the trips to Hamburg, Stockholm and Denver...
Wir wünschen frohe Ostern
Happy Easter - Buona Pasqua - Feliz Pascua - Joyeuses Pâques
As you may know Xojo has internally a list of all objects, but does not provide an official way to quickly (!) query all thread objects. Of course we could manage ourselves a list of thread objects, but that is inconvenient for projects with a lot of thread subclasses. A few years ago I made a feature request for a threads list:
Feedback Case 26912.
As we just needed this today, we got the following function to find all thread objects in memory. We need this in an app to cancel all transfers when the app is quitting:
Function Threads() As Thread()
#pragma DisableBackgroundTasks true
dim threads() as Thread
Dim o as Runtime.ObjectIterator = Runtime.IterateObjects
While o.MoveNext
dim v as Variant = o.Current
if v isa Thread then
threads.append v
end if
Wend
return threads
End Function
Sadly runtime's IterateObjects method is quite slow as it does some introspection stuff which takes a lot of time (see
Feedback case 47148. Probably to filter some objects from the list, which we should not see here. But maybe the method above is still useful for you?
On my next visit to Berlin, I'd love to make another Xojo developer meeting:
Wer hat Interesse an einem Xojo Entwicklertreffen am Anfang Juni in Berlin?
Einfach gemütlich zusammen sitzen in einem Restaurant oder Biergarten und über Xojo schnacken.
Gerne zeige ich auch neue Pluginfunktionen oder helfe bei Problemen mit Xojo Projekten. Einfach Computer mitbringen und was zeigen.
Bei Interesse bitte eintragen in die Umfrage hier:
Berlin Stammtisch