Happy new Year 2011

We wish you and your family a happy new year 2011!

Map of blog visitors

Since we started counting on 24th May 2010, we had over 6000 different visitors on this blog:

This does not count people using twitter or RSS feeds to read this. Thank you all for reading our blog.

Tipp of the day: Blank HTMLViewer

On Mac OS X you can see sometimes that a page in htmlviewer does not show. The HTMLViewer turns white. That's bad for batch processing if you need to do something on the webpage.

For my application I solved this by using ScreenshotWindowRectMBS in the DocumentComplete event. I get a picture form the control. Now I use pic.CountColorMBS(&cFFFFFF) to count the white pixels and if that number is more than 95% of width*height, I set a flag. This flag causes another part of the app to reload the same URL in the htmlviewer. This may not be a solution for everyone, but for me it works :-)

Tipp of the day: Mac App Store

If you plan to submit an application to the Mac App Store, please make sure you build an Intel only application. Submitting universal applications to the Mac App Store will not work. Apple rejects your application due to using private APIs.

Actually all our plugins for PPC use Apple's library glue code which uses a private API, but that was Apple's decision 10 years ago when they designed Mac OS X and someone created this glue code. But for Intel, the plugins are clean.

New video with a Web App for comments

This video shows you how you create a simple comments web application with REAL Studio Web Edition. Take a look:

All videos.

Improvement in plugin dependencies

I get often reports from users about compile errors. Normally they need to install a plugin as we have dependencies. Today I had an idea on how to tell users what to do. See the first entry here? It tells you to install our CocoaBase Plugin to resolve the errors:

Added 20 FAQ entries related to REAL Studio Web Edition

Merry Christmas

Frohe Weihnachten und ein gutes neues Jahr!

Merry Christmas & Happy New Year

Joyeux Noël et Bonne Année

Buon Natale e Felice Anno Nuovo

Michael, Monika & Christian Schmitz

A webapp to play a christmas song

Check our WebApps here

This is just another example app I made today. It plays a christmas song. The audio file is provided by the application to the server, so no external web server is needed and this application can run stand alone. To compile and run you need REAL Studio 2010r5.

In the open event we search the audio files and open them as binarystreams. We create the two webfile objects. Those webfiles are part of the app class, so we have them globally. There we set the data with the content of our streams. We also define file names and mime types. They are needed so browser know what we have here:

audioFileM4V = new WebFile
audioFileM4V.Data = bM.Read(BM.Length)
audioFileM4V.Filename = "music.m4v"
audioFileM4V.MIMEType = "audio/mpeg"

audioFileOGG = new WebFile
audioFileOGG.Data = bO.Read(BO.Length)
audioFileOGG.Filename = "music.ogg"
audioFileOGG.MIMEType = "audio/ogg"

Next in the open event of the webpage we have a PageSource control. The location is set to be before content. In the open event we define the html code for this. First we pick the URLs for the audio files. Than we build the html to use the audio tag. As you see, we give it an ID for later use and have it preload automatically. If you add an autoplay tag, you can have the audio play right away. Inside the audio tag we have two sources so we provide audio for both Firefox (OGG) and Safari (MPEG4). Finally we have a text to display if HTML5 audio tag is not supported.

dim urlo as string = app.audioFileOGG.URL
dim urlm as string = app.audioFileM4V.URL
PageSource1.Source = "<audio id=""mymusic"" preload=""auto""> <source src="""+urlo+""" type=""audio/ogg"" /> <source src="""+urlm+""" type=""audio/mpeg"" />Your browser does not support the audio element.</audio>"

Next in the Play button we execute code to play the audio. This is a short javascript code which searches in the html document for the element with the ID "mymusic" which is the ID of our audio tag above. Once we got the object, we call it's play method to start playback.


same for pause:


and finally for changing volume:


Good luck with your own Web Apps!

MBS REALbasic Plugins, version 10.6pr11

New in this prerelease of the 10.6 plugins:
  • Changed QTKitMovieMBS constructor so this constructor without parameters creates an empty video.
  • Updated DynaPDF to version
  • Fixed bug with PictureMBS constructor when using large pictures (50000 Pixel wide and high) on Windows. Also optimized creating backstore file in this case.
  • Fixed a bug in PictureMBS scaling.
  • Added GetTrackMatrix and SetTrackMatrix methods to QTTrackMBS class.
  • Added SignalHandlerMBS SendSignal.
  • Added SignalHandlerMBS SendSignalToSelf.
Download: macsw.de/plugin/Prerelease

News on DynaPDF 3.0

DynaPDF 3.0 brings three new major features:

* A completely new, fully PDF 1.7 compatible PDF parser
* A new memory management to reduce the memory usage
* Functions to raster PDF pages and entire PDF files

The new PDF parser depends no longer on the PDF version that will be imported. Therefore, new features which are not yet defined in the PDF Reference will be supported, also if DynaPDF has no native support for them. In addition, only required parts of the file are read into memory. The access time to arbitrary pages of a document does no longer depend on the file size and the memory usage will be reduced to a minimum. The new parser is also able to repair damaged PDF files and the error handling is generally less restrictive.

When creating new PDF files it is now also possible to write the pages in memory into the output file while the document is kept open. This enables the creation of very large PDF files with minimal memory requirements.

DynaPDF 3.0 contains now finally functions to raster PDF files. Many users of DynaPDF are waiting on this feature since a long time. The bad news is that this feature is not fully finished yet. For the integration of the new PDF parser some very considerable changes were required in the class structure of DynaPDF and these changes require unfortunately a lot of time consuming tests. The base is finish but there is still some remaining work to do.

The planned publication date in December this year may therefore unable to met. The beta phase of the base library, that is anything that was already available in DynaPDF 2.5 plus a few additional features, can probably start in the first or second January week 2011. The functions to raster PDF files will be delivered, depending on how many bugs will be found, about two till four weeks later. The release date is planned for the end of February 2011.

DynaPDF 3.0 will be fully backward compatible to DynaPDF 2.5. Applications which use DynaPDF 2.5 can be easily upgraded by replacing the dynapdf library.

Registration started for REAL Studio Conference 2011 in Essen, Germany

Join us from 20th to 22nd May 2011 for our REAL Studio Conference in Essen, Germany. Connect to other REAL Studio developers, watch detailed presentations and enjoy a great time with us. Especially I'm happy to have our DynaPDF creator Jens Boschulte there to answer all your PDF related questions and show the latest version of DynaPDF.

Sessions will be in German and English as there will also be a lot of international guests there. We also hope to have an accompanying social programme. Registration starts today for 179 Euro (incl. VAT).

Registration and more Information here:

MBS REALbasic Plugins, version 10.6pr10

New in this prerelease of the 10.6 plugins:
  • Fixed crash with wrong classdata size in PictureMBS on Windows (and other classes).
  • Updated PictureMBS constructor to work on Cocoa.
  • Changed the Linux JPEG plugin to link to the libjpeg on the system instead of it's own one.
  • Fixed crash with Picture.ScaleMBS function on Linux.
  • Fixed crash with picture functions on Linux including Picture.BlurMBS.
Download: macsw.de/plugin/Prerelease

MBS REALbasic Plugins, version 10.6pr9

New in this prerelease of the 10.6 plugins:
  • Added QTKitModuleMBS module and a lot of methods to existing QTKit classes.
  • DarwinResourceUsageMBS class works on Linux.
  • In console applications the plugin has problems accessing the Graphics.DrawPicture method, so all the picture functions combining a picture and a mask to a new picture will fail. This affects for example the StringToPicture methods if you have a mask. See Feedback Case 15019. We include a work around for some cases with our own code for non scaling DrawPicture commands.
  • Added MemoryBlock.ExpandBitsMBS.
  • BMPStringtoPictureMBS now supports upside down images.
  • ExchangeFilesMBS works now better on Windows.
  • Changed memory management of the JPEG functions on Windows to avoid temporary files (like Mac and Linux).
  • Changed the Eyeone Plugin for Windows. The Windows DLL is now longer included. You need to order you own SDK first. Than you can still drag and drop the current DLL into your project and call LoadInternalDLL passing the string with the DLL data.
Download: macsw.de/plugin/Prerelease

Some Feedback Reports you may want to support

With more than 4000 active reports in feedback app, we want to point to a few which you may be interested in. This time everything is related to the REAL Studio Web Edition:
  • 13839: WebEdition: Leaking memory
    • Any Web Application crashes after something like 200 sessions.
  • 14950: Please add WebPicture constructor taking a picture
    • Recompressing JPEGs makes the quality go down. Better pass JPEG/PNG data directly.
  • 14949: application launch timed out message annoying
    • Didn't you see that dialog, too?
  • 14947: We need a way to check the files selected by a user before uploading using WebFileUploader
    • The user should not upload 1 GB big files or videos into a picture list.
  • 15042: Need targetweb constant
    • For conditional compilation of code in external project items
Check also the older list of urgent feedback items.
If you like, please add them to your favorites, rank them in your top 5 and add your comments.

PS: If you find something in our plugins, please report as soon as possible. Especially if you have a function, you'd like to use and it's not available in console application.

To release or not to release

REAL Software released an update to REAL Studio last tuesday. We need at least a week to check if there are changes in the plugin interface and we need to update our plugins.

Originally we planned to release 10.6 in early december. But you can imaging that we won't release the same week as a new REAL Studio version and not a week with Christmas. So instead of a 10.6 release close to Christmas, we decided to wait with the release until January. This gives us time to also test with first alpha versions of REAL Studio 2011r1.

10.6 prereleases will be available till end of December, so if you license times out end of year and you don't want to upgrade, you can download the last one for your archives.

REAL Studio 2010r5 is available

A new version of REAL Studio is available. And there is a specialty: The Web Edition.
There is a lot of progress on Cocoa and a few very old bugs have been fixed. The good thing is that finally the Web Edition is available to all the developers out there. Take a look and please remember that this is a version 1.0. It has errors, bugs and some things don't work. Some of them are already fixed for the next release and will soon be available with the next alpha and beta versions.
So if you have a few days over after Christmas, take the time to check it out.

For us the new release means we have to check a lot of things and fix a few plugin bugs here. So we may need to move the 10.6 release into 2011. But please enjoy our prerelease versions.

Registration started for 2011 trainings

Registration started for our REAL Studio trainings here in German speaking countries. If you'd like to attend, please register soon:
  • (DE) Leverkusen, 13th to 15th January 2011
  • (DE) Munich, 7th to 9th April 2011
  • (DE) Hannover, 5th to 7th May 2011
  • (AT) Vienna, 22th to 24th September 2011
  • (CH) Zürich, 29th September to 1st Oktober 2011
  • (DE) Aachen, 10th to 12th November 2011
  • (DE) Frankfurt am Main, 24th to 26th November 2011
For registration go here: brainworks-training.de

MBS REALbasic Plugins, version 10.6pr8

New in this prerelease of the 10.6 plugins:
  • Added BuildConstantsMBS module.
  • Updated Picture.ScaleMBS to support console targets. This will be useful with the REAL Studio Web Edition.
  • Added one more EncodingToURLMBS option.
  • Updated DynaPDF to version
  • Fixed a bug in DynaPDFMBS.SetFillColorEx function.
  • Fixed a bug in DynaPDFMBS.CreateDeviceNColorSpace function.
  • Added CMYK support to PictureMBS.
  • Added TiffPictureMBS.Scanline variant where you pass your own memoryblock.
Download: macsw.de/plugin/Prerelease

Notes about Web Apps

First, those web apps like to use all CPU power available. I mean with a few users using them, you need to slow them down to keep the server running. So I use "renice 20 " on each of them. This way the priority of the processes is lowered and one of them can't block the server.

Next you will want to make the swap partition big enough. A REAL Studio app with a leak will go until 4 GB until it crashes. If the server does not crash before. So I'm now using 10 GB for the swap partition. But currently we don't need it. 7 web apps are running and total memory usage is just 300 MB (including the LInux OS and other system applications).

New Web Apps for testing

To show what the REAL Studio Web Edition can do with help of a few plugins, I put 7 apps on our virtual server here. Please try:
  • Infos
    shows a few details on the session and the server
  • Map
    shows a scrollable map to show you where you can find REAL Studio users
  • Pie Chart
    shows a pie chart
  • Create PDF
    shows an easy PDF generation
  • Chat
    shows a chat application
  • Cards
    shows custom PDF creation
  • Addressbook
    shows a little database application
If an app does not work currently, please come back later. We are still fixing bugs.

Host a REAL Studio Web Application

If you look for a hosting solution like me, you can check out the jiffybox. This is from the provider which hosts my websites, so I'm quite happy that they offer an on demand virtual server.
Jiffybox costs you in the cheapest variant 0.02 Eurocents per hour. That's less than 15 Euro per month for a virtual server with 1 GB RAM, 50 GB hard disc, 2 CPU cores and root access. You can test it for 24 hours for free. And if you sign up this year, they give you a 50 Euro bonus which makes it free for more than three months.
Okay, once you got the server with e.g. a 32 bit Ubuntu, you need to install the libgtk2.0-dev package to get REAL Studio applications running. Use commands like this: "app-get update", "app-get upgrade" and "app-get install libgtk2.0-dev". Now you can upload your app with scp and run it with "nohup pathtoapp &" in the background.
I'm happy that I have now a way to host. This won't use fast cgi as I think the stand alone solution is better for this showcase.

PS: It may be a good idea to make the swap partition 10 GB big just in case your apps need more than 1.5 GB of memory.

Build Time Constants

Years ago I asked for constants like __TIME__ and __DATE__ in C/C++. You can see my feedback case here: Feedback Case 2143
Today I had an idea: I can write a plugin which provides those constants. Okay, not real time values, but at least the plugin can query on REAL Studio launch the current date and time and provide them as constants. As REAL Studio copies those constants into your application, they won't change. The plugin will also not update those constants as the plugin is not part of the application.
So next plugin prerelease will have a BuildConstantsMBS module with constants named time, date and datetime.
I thought about possibly other constants like the name of the user or the machine so you know who compiled the application. What do you think?

Tipp of the day: Download trouble

Sometimes you try to download a file with CURL or a HTTPSocket and you receive an error 403 (forbidden). Often this happens because the webserver does a few checks to make sure you are a real visitor and not a mass download tool.
Typically a webserver will check the referrer in the http request. Often they check for referrers and redirect people without referrer to a start page to avoid deep linking. Second webservers like to check for the user agent and if your user agent shows things like CURL, they may block you. Some servers set cookies to verify you visited a page with ads before you download something. So you may need to carry a cookie for the downloads.
So best you capture the http request from the browser so you see values they pass for referrer, user agent and cookie string. Than you can use those values and build your download like it.

Update: Another thing to check is the accept header in the http request.

App Store Submission for REAL Studio applications

If you want to submit an application for Mac App Store from Apple, you can find all the details about this and the steps for it on the Apple website. But you can also read an article about this from Thomas Tempelmann on the ARBP website.

see arbpmembers.org/articles

REAL Studio Web Edition

The REAL Studio Web Edition will be released soon. That is a great news for us as we are now able to create web apps easier than ever before. Yes, I know some HTML and some PHP/Perl for writing little scripts here and there. But in general I'm a developer for REAL Studio and a few C variants. Now I can turn my REAL Studio knowledge into web apps and that's the key point. My existing code for databases, PDFs and image processing can be reused. The GUI changes and needs to be rewritten, but all the other stuff will hopefully simply work.

Of course this is a version 1.0. You'll certainly miss a few things and you'll certainly find a few bugs. But the time between the years may give you and me a day or two for trying a few things. Get started and try a few ideas. If you find a bug or you have a feature request, please report it. In three months we'll probably see the next version where tons of bugs fixed and we may be able to use this for production.

To give you a few ideas on what we can do, I made this list:
  • First all kind of database clients. Simple things like a form to fill by an user like an event registration. Or more complex things like a full order database for a company.
  • Second all those PDF related tools. Like you upload a few pictures, enter some text and download a nice PDF for printing.
  • Third you could do custom things with hardware. Take a phidget devices and build your own weather station. Your web app on your home server queries temperature and other values and with the web app you can query them from everywhere.
  • Or why not a web app for people to choose music on a party? Your web app has access to your iTunes music, people could search and add their favorites to a playlist where the DJ can play them?
Thousands of ideas can be realized. And when you see Geoff's video on youtube on how it is to create a chat application with 15 lines of code, you'll be amazed what you can do with a few more lines...

For the PDF thing above, please check our DynaPDF example web apps. For the Phidget devices, please check the Phidgets.com website as well as our classes in the USB plugin.

MBS REALbasic Plugins, version 10.6pr7

New in this prerelease of the 10.6 plugins:
  • Fixed a bug with DynaPDF plugin which showed missing license dialogs for some users.
  • Updated Phidget plugin classes to version 2.17 of the phidget SDK.
  • Added PhidgetIRMBS, PhidgetIRCodeInfoMBS, PhidgetSpatialMBS and PhidgetSpatialEventDataMBS classes.
  • Updated DynaPDF to version
  • Changed the Linux PNG plugin to link to the libpng on the system instead of it's own one.
  • Added MatrixDimension parameter to the PictureMBS.ApplyMatrix.
Download: macsw.de/plugin/Prerelease

MBS Filemaker Plugin, version 2.2pr6

New in this prerelease of the 2.2 plugins:
  • Added WebView.GetImageCount and WebView.GetImage functions.
Download: monkeybreadsoftware.de/filemaker/files/

REAL Studio Trainings in 2011

Here is our schedule for trainings in 2011:
  • (DE) Leverkusen, 13th to 15th January 2011
  • (DE) Munich, 7th to 9th April 2011
  • (DE) Hannover, 5th to 7th May 2011
  • (AT) Vienna, 22th to 24th September 2011
  • (CH) Zürich, 29th September to 1st Oktober 2011
  • (DE) Aachen, 10th to 12th November 2011
  • (DE) Frankfurt am Main, 24th to 26th November 2011
Each training is from Thursday to Saturday. First day for beginners, second day for advanced and third day for databases. Trainings are in German.

In May 2011, MonkeyBread Software and Application Systems Heidelberg hold the next conference for REAL Studio developers from Germany and abroad. Spoken languages at the conference are German and English. The agenda is still being defined, and we expect to offer a still more comprehensive programme than at the 2010 event in Koblenz. Speakers/Presenters are welcome:
  • (DE) Essen, 21th and 22th May 2011; "realcon2011" / REAL Studio Conference 2011.
    (additional get together evening on 20th May at 7pm)

A little joke

Translated to english: Why do you wear an helmet? Because I got inside the stollen.
The German word Stollen is both a sweet German bread with raisins and icing sugar as well as an adit in a mine.

Source unknown. Tell me if you know whether this is from and who made it.

Birthday of our video page

Three years ago we started created tutorial videos and today our video page has birthday. Enjoy a video and learn about our plugins.

And do you have wishes for new videos? Please email us or post a comment here.

REAL Studio Trainings: Last chance for Zürich

Our training for Zürich is starting tomorrow. If you want to attend and you have no yet a registration, please call Brainworks as soon as possible.

For more information and registration visit:
REAL Studio Einführungskurs (beginners)
REAL Studio Intensivkurs (advanced)
REAL Studio Datenbankentwicklung (database)
The biggest plugin in space...


Jul 2024
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