Thursday, December 17, 2009

Sale Announcement

"Beginning REALbasic: From Novice to Professional" is on sale for $10 today only at Apress!

Tuesday, December 15, 2009

REALbasic and REAL Studio 5.1 is Now Shipping

REALbasic and REAL Studio Release 5.1 is now shipping. This release fixes some important issues with the new REALSQLDatabase plug-in. To view all of the improvements in this release, please view the release notes on the product download page: <>.

Thursday, December 3, 2009

Your REAL Software Website Account & Other Tips

Hi REALbasic Users,

It's been a year since we introduced the new REAL Software Website and the feedback has been very positive! Following are some tips on how to take full advantage of all the great features.

How to Register your Account:
To register your Account select the "Create New Account" button at the login page:

Enter the email address linked to your REAL Software Account to receive an email with instructions on how to create a log in. If you are unsure what email address is linked to your Account email Customer Service.

Once logged into your Account you can access all your License Keys, your Order History and any Previous Downloads available for those keys.

Did you Register but don't see all of your keys in your Account? It's possible you have created more than one account. Send an email with your keys and/or email address to Customer Service and we can merge all your accounts together. You may find you have expired keys you didn't even remember you owned! Just yesterday a long time user of REALbasic was planning on purchasing a new Windows Pro key, upon registering his Account he learned he owned an expired Windows Pro key already! He purchased a Renewal instead and saved $149!

In your Account you can also update your contact information. Keeping your email address current will keep you informed of REAL Software special offers and discounts throughout the year.

You can contact us at if you have any questions about your Account, or anything else REALbasic, and we will be happy to assist you further.

Wednesday, December 2, 2009

5.1 is coming

Due to some important issues with the new REALSQLDatabase plug-in, we are going to release 5.1 around the middle of the month.

Tuesday, December 1, 2009

REAL Software Ships REALbasic and REAL Studio 2009 Release 5

REAL Software began shipping REALbasic 2009 Release 5 today. This release continues with a focus on quality and addressing the needs of our customers by adding 68 improvements and 17 new features. This release introduces support for Linux distribution Ubuntu 9.10 and includes an updated SQLite version.

"We recently introduced a new feedback system that allows users to rate the importance of bugs and new feature requests," commented Geoff Perlman, REAL Software Founder and CEO. "This new system has allowed us to really focus on the quality improvements for this release that are most important to our customers."

The complete list of improvements and new features in REALbasic 2009 Release 5 can be found in the release notes in the product download section,

Monday, November 23, 2009

Chrome OS

A topic has recently come up on our forums regarding our reaction to Chrome OS and the possibility of REALbasic supporting it.

Chome's hidden agenda is to improve WebKit adoption in order to force Microsoft's hand into better supporting modern web technologies such as CSS3 and HTML5. Google doesn't plan to make money from Chrome, they intend to improve web standards and compliance so they can in turn write better web apps that run on all platforms. It is those web apps such as Google Docs where they can make money. Remember, Google is a business, they're not simply going to devote so many resources to Chrome OS just to help people. There is always a bigger agenda.

Now, I'm all for this tactic. Microsoft really does need to get their act together, and competition from Mozilla, Apple, and Google has already forced them into putting a ton more resources into IE. Will it work? I'm not sure, there are already signs that Microsoft is again trying to fight standards with IE9 just as they did in the Netscape days.

Chrome OS is an interesting concept, but I'm not betting on it. Apple tried the webapp-only model on the iPhone and failed horribly. Why would Chrome OS be any different? For example, Macs are frequently bashed for not playing games well. Chrome OS won't be able to play games at all (flash doesn't count, I'm talking about real games) and does anybody expect that gamepad, joystick or G15 keyboard to work? That's just an example, there are a TON of things users will be unable to accomplish with Chrome OS. Enough that I believe Chrome OS will remain nothing more than an interesting concept.

Now, I'm a power user for sure, so my view could easily be skewed. But it does not make sense for REAL to put significant resources into coding for an operating system that will likely have an adoption rate lower of that of Ubuntu. The only consumers who will get this will be the ones who recieved it on their netbooks, and only if said netbook will have it pre-installed. That said, since everything runs on the web, there isn't much we'd need to do. REALbasic can already compile code for Linux (most popular web server) and has an included CGI template, so go write a web app right now.

Wednesday, October 28, 2009

The future of REALbasic and REAL Server

A customer recently asked what our long term vision is for REALbasic. That's a good question that I haven't discussed in a while.

Currently we are working on supporting Cocoa for Mac OS X to replace the Carbon framework we currently support. We will begin beta testing very soon.

The web continues to be a platform we are interested in supporting and we are doing research into the best way to support it.

Supporting the iPhone is the number one feature requested by our users. That fact is not lost on us. The Cocoa work we are doing now, as well as other prerequisites to iPhone support, are in the works.

REAL Server will also play an increasingly important role for those deploying multi-user applications.

I can't promise you a time-frame for these technologies, but I can promise you that they are important to us and that we continue to move towards supporting them. We are more focused than ever on listening closely to what is most important to you, our customers, and delivering the technologies that enable your success.

Thursday, October 22, 2009

Windows 7 has arrived

I've been running the pre-release of Windows 7 since they made it available earlier this year. It's a terrific upgrade and a great improvement over Windows Vista. Vista had a lot going for it. In some ways it was much better than Windows XP. It certainly managed memory better. For example, for some time now we have been trying to fix a memory leak with the Windows IDE that occurs only on XP. On Vista it's a non-issue. But while Vista was better than XP under the hood, it's the features the user can see like the GUI and the features they use daily that get people to upgrade.

Microsoft was smart to admit that Vista could have been better and they have made up it for it and them some with Windows 7. Windows 7 feels like a big upgrade for Vista users but it's going to be an even bigger upgrade for Windows XP users. The majority of Windows users are still running XP but I believe that tide will finally start to shift with Windows 7. It's a good sign that it just shipped today and yet the market share web sites are reporting that it's already got 1.5 to 2% of the market. Obviously those are all users running the pre-release but that's an even BETTER sign. Microsoft has really focused on the right things with Windows 7.

There's some cool stuff in Windows 7 but we need to know what is most important to you. If there are Windows 7-specific features you'll like to see natively supported in REALbasic/REAL Studio, make sure you request them using Feedback, our new system for reporting bugs and requesting features. And if they are a high priority for you, make sure to use Feedback's ability to rank your cases. That will help push up the priority.

If you're a REALbasic/REAL Studio developer running the IDE on Windows XP, upgrade to Windows 7. The memory leak that causes the IDE to take longer and longer each time you run your project does not occur on Vista or Windows 7. Not to mention, the user experience on Windows 7 is far superior to XP. So upgrade to Windows 7. You will be happy you did.

Wednesday, October 21, 2009

Windows 7 Compatibility

REAL Software today announced that its products, REALbasic and REAL Studio 2009 Release 4, and REAL Server 2009, have been tested and are compatible with Windows 7.

Tuesday, October 20, 2009

Apple's Next Big Thing

When Apple introduced the iPod, they entered the music distribution business. They didn't do this because they wanted to, they did it because they had to. In order to sell iPods, they had to make it even easier than we were imagining it could be to get the music we had and the music we would later want, into our iPods. It worked and Apple has been selling a lot of iPods ever since.

Apple saw that the iPod was another thing for people to carry around along with their cell phones. Both have a lot of the same technology inside them and it was just a matter of time before someone combined them. I think they tried partnering with Motorola because the technology for the iPhone just wasn't there yet. The Motorola iPod/cell phone was a failure almost certainly because Apple wasn't running the show. They probably shouldn't have even done it in the first place.

Then they got the technology they needed for iPhone. iPhone was (and for the most part still is) light years ahead of other smartphones. Notice that the Palm Pre and now the Motorola Droid focus not on what makes them cool, but what the iPhone doesn't have. The things they are focusing on will get the attention of only a very small percentage of smartphone shoppers. They both talk about how the their phones run multiple apps at the same time. Not super useful to most smartphone users and the iPhone notification system provides most of what people need from that. They focus on how they have camera with more megapixels. A higher resolution camera in the iPhone would be great but most people are quite happy with what it has now. Heck, Apple has the technology to record video in HD in the iPhone 3G right now, but they don't enable it. Why? Because your battery would run out in no time. Apple knows that battery life is critical and they don't want to get dinged for it. So the reasons are a bit esoteric. They will capture the interest of a few but what Apple has done is greatly expand the market for smartphones. I see a lot of people that have iPhones that would not have had a smartphone before. Still, at some point years from now, everyone that is going to buy an iPhone will have bought one and while they will be able to sell new ones to people that have old ones, the market will be saturated. So what's Apple's next big thing?

Apple got into the music distribution business to sell iPods. They got into the movie/tv show distribution business to sell Apple TVs and iPhones (and iPods that have a nice screen). The Apple TV is probably one of Apple's least successful products because it doesn't add quite enough value to make it insanely great when compared to the DVR from your local cable company. But the first signs of Apple's Next Big Thing are now here. Look at the new iMac. It's got a bigger, more high resolution screen. They say it's higher resolution than HD. And it's 16 x 9 which is the widescreen format for movies and for HDTV. They added a wireless keyboard and mouse standard. And they introduced a new Apple Remote as well that is starting to look a whole lot like a TV remote. Now make the screen even bigger, exchange the stand for a mounting bracket, add something like Apple TV (only way better) and you've got a great new device that would be the center of any high tech living room. Steve Jobs is so well connected in Hollywood, he can make the deals happen to do for movies/TV what Apple has already done for music.

I just moved into a new house this past weekend. I had to reconnect my HDTV, DVD player, A/V Receiver and surround sound speakers. It was a huge hassle. I actually have a diagram I created so I could remember where all the cables connect. And with each device having its own remote, the confusion is so bad that I bought a $300 Harmony Remote (the best remote on the planet by the way) so my children can press one button and play their Wii games. Best Buy has their Geek Squad service just to hook up these systems up for people. It shouldn't be so complex. It took the A/V industry forever just to put the audio and video into a single cable (HDMI). They should have made it all plug and play a long time ago but they didn't. Apple will. They will make all of this so easy and make it do things well beyond what we are imagining today.

I don't know what they will call it but it is coming. It will make existing technology look pathetic and it will seamlessly work with your iPod, iPhone and iMac. And it will help Apple grow and stay insanely profitable.

Tuesday, September 29, 2009

Linux HTMLViewer now uses WebKit

With REALbasic 2009 Release 4 we've finally updated the HTMLViewer on Linux to use WebKit if it's available. This has been a long requested feature and we're happy to finally deliver this to you, but the unfortunate part of this is that WebKit is not typically installed by default by any of the major Linux distros. However, the WebKit libraries are easily accessible, and are usually included in the Linux distros' DVD/CD download. For those not as familiar with installing new packages on Linux, I offer this basic tutorial for Ubuntu users. I like to use the Synaptic Package Manager to find and install packages that are on my Ubuntu DVD/CD, here's how:

Once that is loaded, you can now search for WebKit. Knowing that WebKit is a library I prepend my search of WebKit with Lib, so instead of just searching for webkit (which actually turns up quite a few hits), I'll search for libwebkit:

You want to mark the first hit of libwebkit-1.0-1 for installation, then apply. For those who like the command line approach, you can launch the terminal and type:
sudo apt-get install libwebkit-1.0-1

You are now ready to enjoy the new HTMLViewer using WebKit!

REALSQLDatabase/SQLite Update

We had originally planned to update the REALSQLDatabase class to use the latest version of SQLite in REALbasic 2009 R4 (released today). The work was done but we also took the time to substantially overhaul the internals of the REALSQLDatabase class. We reduced the amount of code by quite a bit making it easier for us to maintain and made it faster as well. Unfortunately, the side effect of such a big change is that it requires more testing time and it was ready too late in the beta cycle for us to feel comfortable releasing it for R4.

The good news is that we are planning to have another release this year primarily to ship the updated REALSQLDatabase class.

Cocoa Update

Now that REALbasic 2009 R4 is shipping, many of you are wondering about the status of our transition to Cocoa for our Mac OS X framework. For those of you are are not aware of this, we are transitioning our underlying Mac OS X framework from Carbon to Cocoa. For the most part, this won't affect the code you write in that we are making these changes under the hood so you will continue to use the same classes you use today.

We are nearly feature complete on our Cocoa framework. There are only a handful of controls left to do. Those on the beta list have been seeing our progress as we have released betas of previous releases (including R4). Once we are feature complete, we will start the final beta process, most likely within the next 30 days. At that point, we will take as long as is necessary to make sure the Cocoa framework is stable. And our plan is to ship the IDE based on Cocoa at the same time. The IDE is a large, complex project and is a good test case for the stability of the new Cocoa-based framework.

If you are interested in beta testing the new Cocoa-based framework, make sure you join the beta list. You can do so by signing into your account on our web site and clicking on the Beta Program link on the right side of the page.

REALbasic/REAL Studio 2009 Release 4 Now Shipping

Adding 97 improvements and 39 new features, REALbasic 2009 Release 4 offers the most requested feature from REALbasic users, reporting! Also included in this release for REAL Studio only is build automation. Finally, our new feedback system is now live.

The new report editor allows developers to visually create a layout for printing by dragging and dropping labels, fields, images and more. Reports can be created to print a single page or multiple pages. The layout is divided into sections (header, body, footer as well as grouping sections for reports that have sorted data).

Reporting in REALbasic

The new build automation feature of the Project Editor is only available in the REAL Studio Edition. With Build Automation, developers can visually drag and drop build steps to execute common actions (like copying files and running IDE scripts) before and/or after their application is built. All of this can be done from within their project.

Build Automation

The complete list of improvements and new features in this release can be found in the release notes in the product download section, REALbasic and REAL Studio are available in a free 30-day trial edition. To view a video demonstration of all of the new features in this latest release, please visit:

Thursday, September 17, 2009

Our New Feedback System

Any company that expects to succeed had better listen to its customers. We listen in many different ways: We follow threads on the forums and mailing lists, we read the emails you send us directly, conduct surveys, and monitor the feedback you provide via our Feedback system.

Over the years we have had many different systems for gathering bug reports and feature requests. We used to have a system that was pretty transparent. You could search it, contribute additional information to a particular issue, etc. We could get a sense of how important a case was based on the number of you that added that case to your watch list. This system was very specific to your needs, which are the needs of a software developer. As a result, this system was created in-house.

A few years ago, an argument was put forth internally here at REAL Software that we shouldn’t be re-inventing the wheel by building and continuing to maintain our own, custom bug database system but instead should use one of the commercially available systems. There was a lot of sense in this argument. These systems had features that our system did not and they were maintained by others allowing us to focus on what we do best. But these systems were not without their downsides. The theory behind FogBugz, the system we use today, is to make the system of entering a bug as simple as possible for the end user because if you ask too much, users won’t provide feedback. The other assumption is that most users don’t need to search through your bug database. These assumptions are all quite reasonable for 95% of software users. It became obvious to us late last year that you, our customers, are not in that 95%. You are like us. You are software developers. You understand the importance of providing lots of detailed information. You want to search our bug database to see if a report has been filed before and see if a workaround exists. You will tell us which cases are more important than others.

With this in mind, we decided early this year that we needed a new Feedback system. FogBugz is fine for most software companies whose customers are not software developers, but it’s not ideal for customers who are. However, if you are looking for a feedback system for your product, I would certainly recommend it. We spent some time looking at what was good and bad about our old system and what was good and bad about FogBugz. We then set out to build a new Feedback system that would give you and us the best of both systems.

While the old system was designed to be opaque, the new system is almost totally transparent. You can search, and the searching is actually very cool. It’s simple and yet very powerful. It also includes relevancy information to help you track down the case that is the most likely match. You can filter reports by product, version, status and more. You can keep a list of your favorite cases to make it easy to keep track of them. You can contribute to existing reports, adding workarounds, example projects, etc. that others can use. If there is information that should be for our eyes only, you can mark the information you add as private. And last but most certainly not least, you can put your most important cases in order of your personal priority. This and the priorities of others are put together to create a score. This allows us to see what the most important cases (both bugs and feature requests) are. You will be able to see them too because the new Feedback system will show you the top 20 cases by score. We have added this because we want you to see that we are making an effort to address the most important cases first. That’s not always possible of course and some bugs get addressed as soon as they come in because they are very easy to fix and an engineer might be working on that part of the code when the bug is reported.

In the past, the score of a case was essentially the number of people that added that case to their watch list. Anyone could add any number of cases to their watch list to increase the priority. The problem with this is that it didn’t give us a true picture of what your priorities are. In the new Feedback system the only cases that are scored are those that are within the top 5 open cases on your personal priority list. The new Feedback system makes it easy for you to reorder your cases so that we can see your personal priority. Also, in the case of REALbasic, the edition of REALbasic you are using affects the score your top 5 open cases receive. Professional Edition users are given 3 times the priority of Personal Edition users. REAL Studio Edition users are given 10 times the priority. We are doing this because the more you invest in us, the higher we feel your priority should be. That doesn’t mean that a Studio user would always get higher priority. For example, if fifteen Personal Edition users put a particular case at the top of their list, that would have a higher score than a case at the top of a single REAL Studio Edition user’s priority list. This scoring system will help us understand which cases should be addressed to have the maximum impact on you, our customers.

When we have changed systems in the past, we have asked you to go through your cases and help us move them over to the new system. For some of you, this was a lot of work. We will not be asking that of you this time. We have automated the process of moving the cases over. However, we will need you to do one thing. Because you can’t search our current Feedback system, it is implied that all cases are private in that others outside of REAL Software can’t view them. We would not want to accidentally expose to everyone a case you thought was private. As a result, you will need to tell us (via a web page) which of your reports should be private and which should be public.

This new Feedback system runs on Mac OS X, Windows and Linux and will ship soon with REALbasic 2009 R4. It’s going to help us better serve you and it’s going to better allow you to help each other - whether it’s providing a workaround for a bug, or discussing the pros and cons of a particular feature. We look forward to your comments and suggestions.

Use the following links to view larger versions of the screenshots:

Friday, August 28, 2009

Announcing 2 Regional REAL World Events!

We are very excited to announce today that we are taking REAL World on the road this Fall! We'll be heading to Atlanta on November 3 and Chicago on November 5th for full day conferences in each city. The Atlanta event will take place at the Marriott Marquis Hotel and the Chicago event will be at the Hilton downtown.

The REAL World Regional Events are the definitive events for anyone who wants to get the most out of REALbasic, REAL Studio and REAL Server. This conference will give users the opportunity to hear from other REALbasic, REAL Studio and REAL Server users and experts on how to improve their knowledge and skills as a developer. These events will feature a keynote presentation from Geoff Perlman, REAL Software's Founder and CEO that will cover upcoming features, like Reporting and Cocoa, along with REAL Software's strategic direction.

We are currently looking for speakers to present at each event. We do offer speakers a free pass to the event. Those interested in presenting REALbasic, REAL Server and software development-related sessions are welcome to submit their proposal with their preferred session topic(s) and a brief description, along with their name and contact information to me at The deadline for applying to speak is September 15, 2009. There are a limited number of speaking opportunities available.

Registration for these regional events will open soon. Conference pricing has been set at $250, with an early registration price of $200 through October 20th. Attendance is limited to 50 attendees, so please register early to guarantee your spot.

More details about the sessions, along with a more complete agenda, will be available in the coming weeks.

Thursday, August 20, 2009

Drawing multiple color gradients

I've seen many examples over the years regarding gradients. Start with one color, then progressively blend it into another. What I haven't seen yet is how to create complex gradients with 3 or more colors. If you can create a two color gradient, a multi-color gradient is conceptually similar.

Pairs are handy for this, because we can prepare a list of percentages and colors and pass that to our method. The left value will contain the percentage, the right value will contain the color. Our gradient will be a simple red-yellow-green gradient:

dim colors(2) as pair
colors(0) = 0.0 : &cFF0000
colors(1) = 0.5 : &cFFFF00
colors(2) = 1.0 : &c00FF00

This basically says that at 0%, it should be red. At 50%, it should be yellow. At 100%, it should be green. We'll pass this array a method which defines the width, height, and direction of the gradient:

Function CreateGradient(Width As Integer, Height As Integer, Points() As Pair, Vertical As Boolean = false) As Picture
  dim p as new picture(width,height,32)
  dim i,x,w,nextstart as integer
  dim pointOne,pointTwo as pair
  dim colorOne,colorTwo,blendedColor as color
  dim pct as double
  for i = 0 to ubound(points) - 1
   pointone = points(i)
   pointtwo = points(i + 1)
   colorone = pointone.right
   colortwo = pointtwo.right
   if vertical then
     w = (pointtwo.left.doublevalue * height) - nextstart
     w = (pointtwo.left.doublevalue * width) - nextstart
   for x = 0 to w
     pct = x / w
     blendedcolor = rgb(( * (1 - pct)) + ( * pct),( * (1 - pct)) + ( * pct),( * (1 - pct)) + ( * pct)) = blendedcolor
     if vertical then,x + nextstart,p.width + 1,x + nextstart)
     else + nextstart,-1,x + nextstart,p.height + 1)
   nextstart = nextstart + w
  return p
End Function

And that's all you need to create better gradients on-the-fly. Just for fun, here's the colors you need to draw a gradient similar to Apple Mail's toolbar buttons:

dim colors(3) as pair
colors(0) = 0.00 : &cDADBDD
colors(1) = 0.50 : &cD6D7DA
colors(2) = 0.51 : &cC8CBCE
colors(3) = 1.00 : &cDDE0E3

Monday, August 17, 2009

Turning a weakness into a strength

REAL Server is not yet well-known outside of the REALbasic community. We are working on that, but in the mean time, there is an area where this weakness is a strength.

When it comes to database servers, the well-known products have names like MySQL, Oracle, Microsoft SQL Server, Sybase, DB2, etc. If you are building a commercial product that uses a back-end database server, there is a good chance that it uses one of these. If your customer is big enough to have a dedicated IT department, it might make sense to support the database server the company is already using. If the product is going to be used across the company, this is a good thing as it makes it easier for the prospect to purchase your product since they won't get any grief from IT about it. Could using the corporate database server or some other well-known database server ever be a bad thing?

Yes, it can. In many companies, if the IT department even recognizes the name of the database server you are using, they will feel it should be their responsibility to support it. That may bring IT into the decision making process. If your product is sold at a departmental level, they may want to purchase it but have to fight the IT department because IT doesn't want to have yet another database to support. So what's the solution?

There are many IT departments that don't get involved if the product is departmental and they think the database server is proprietary. Our own REAL Server for example, comes across that way. Even though it's based on SQLite, arguably the most installed database engine in the world, REAL Server is not nearly as well-known and, as a result, comes across as a proprietary database server. This can make it easier to sell departmental products because you can keep the IT department out of the sales cycle.

We have a customer right now that is switching from MySQL to REAL Server for this very reason. That's turning a weakness into a strength!

Thursday, August 13, 2009

Reduce Flickering on Windows

On Mac OS X and Linux, windows are double-buffered, meaning everything is drawn to an external source and sent to the screen all at once. On Windows however, changes are drawn to the screen the moment something changes. If you're drawing to a canvas, this can result in a flickering effect that is very annoying.

I've got a few tips to reduce or eliminate flickering:

  1. Turn on the Canvas.DoubleBuffer property.
  2. Turn off EraseBackground. EraseBackground causes the drawing area to be erased first, which will be flushed to the screen immediately causing flicker. This is important for both Canvas and ContainerControl classes. In ContainerControls, make sure the instance has it disabled, and if your code creates one of your ContainerControl subclass "out of thin air" then make sure your subclass has this disabled as well. Keep in mind that sometimes control artifacts can be left behind depending on the type of drawing you're doing, since they weren't erased first. My only suggestion is to try it and see how it works for your case.
  3. Only draw using the Canvas.Paint event. As much as we programmers like to say "Canvas, display this now" using the backdrop property, it is the wrong way to do it. Instead, when you want the canvas to forcefully update, use the refresh method. The backdrop property is only useful from the window editor, when you want to display a static / non-changing graphic.
  4. Whenever you call RectControl.Refresh, pass the optional EraseBackground parameter to it with a false value. This will prevent the control from erasing itself pre-refresh. See tip 2 above.

If you are already double buffering manually, there is no need for tip 1 in your case. In fact, you're better off leaving it disabled if you're going to do the buffering yourself. If your code looks similar to

Dim Buffer As New Picture(G.width,G.height,32)
// do your drawing to Buffer.Graphics

then you're buffering manually. If your paint event has more than a single call to the "G As Graphics" object, then you need to enable the DoubleBuffer property.

Buffering will prevent transparency however, so you might want to fill your area with a color first. This will also help prevent artifacts left over from disabling EraseBackground. Something like:

If Self.TrueWindow.HasBackColor Then
  Buffer.Graphics.ForeColor = Self.TrueWindow.BackColor
  Buffer.Graphics.ForeColor = FillColor

will work well to fill the buffer with the same color as the window it's placed on.

And there you go. Follow these tips, and the flickering effect on Windows will be greatly reduced.

Monday, August 3, 2009

Colorado REALbasic Summit from the Association of REALbasic Professionals

The Association of REALbasic Professionals and Inspiring Apps are pleased to announce the Colorado REALbasic Summit.

Join us in scenic Boulder, Colorado for a REALbasic conference that aims to help REALbasic professionals (and aspiring professionals) get ahead. A healthy mix of in-depth, advanced technical sessions and business topics will sharpen your skills and help you better run your business.

The Summit begins the evening of Thursday, Sept. 24th, and ends Saturday afternoon on Sept. 26th. The registration fee is $199 for ARBP members, or $249 for non-members.

Registration will open soon, and is capped at 40 attendees. For more information, please visit:

Wednesday, July 29, 2009

Creating great demonstration videos


One of the great things about so many people having broadband internet access is that it makes it practical to have a video-based demonstration of your product available via your web site. If you've never done this before, it's not that hard but there are a few gotchas that can cause you some grief. Since they have already caused me that grief, please learn from my mistakes rather than your own. If a picture is worth a thousand words then a video must be worth at least two thousand.

Here are my top 10 tips on creating an effective demo video:

Tip #1: Keep it short

Some people don’t have a long attention span. The longer your video is, the more likely you will lose your audience. So make your video only as long as it needs to be and no longer. Decide up front what the point of your video is and focus only on making that point. For example, in the Introduction to REALbasic video, I don’t mention most of REALbasic’s features. That’s because the point of the video is not to familiarize the viewer with all of REALbasic’s features, but instead to give them a general feel for what it’s like to use REALbasic. The two things you do most in REALbasic are build a user interface and write code, so the video focuses on those two topics. If you can’t seem to keep the video under 10 minutes, considering breaking it up into a series of videos.

There may be other factors that limit the length of your video. For example, if you are going to put it on YouTube, it must be no more than 10 minutes long. You should determine ahead of time how you will host your videos so you know about limitations like this. Another potential limitation can be file size which can affect the length of your video and, in some cases, video quality.

People also like to know how much time they will need to devote to watching your video so make sure that’s clear before they start. Ideally, you should put the length of the video on the web page where the video is displayed.

Tip #2: Get feedback early in the process

It can be really frustrating to spend hours on your video only to find out that you left out something important or communicated something in a way that makes sense only to you. The best way to avoid this is to record a rough draft and get feedback from others. I use Screenflow for Mac OS X to create screen recordings. With it you can simply start recording the screen, do your demonstration and talk. Screenflow will record everything. Don’t worry about ANY polish at this point. Just record your demonstration so that you can see how it flows. Don’t worry if you make mistakes. The point of this rough draft is to look for any major flaws in the overall demonstration. If you find any, record another rough draft until you think your demonstration (both on screen and what you will say) is pretty solid.

At that point, get feedback from appropriate people (ideally those that are the intended audience). Let them know you want any and all constructive criticism they have. Takes lots of notes and take the criticism seriously. Keep recording rough drafts until the only feedback you are getting is that the video needs polish.

Tip #3: Know your aspect ratio ahead of time

There are a few different aspect ratios. For example, standard television uses a ratio of 4:3 which is the ratio of the width of the screen to its height. If the width of the area of your screen you intend to show is 800 pixels,for example, then the height would have to be 600 pixels. For more information on aspect ratios, see this article on Wikipedia.

YouTube recently switched to 16:9 which is the widescreen format used by most of the movies you watch on DVD. So if you plan to host your videos via YouTube, you will want to be prepared to use the 16:9 format.

How do you prepare? After you record your video, Screenflow will let you crop the video to a specific size in pixels. If you are using something other than Screenflow, make sure it provides this feature. Experiment to find the right height or width and then adjust the other size to match the ratio you are using. For example, if you are using 16:9 and the width that works for you is 1250 pixels, divide 1250 by 16 (78.125), drop the decimal portion (if there is one) and then multiply that value by 9 to get the height. In this case, that would be 702 (78 * 9 = 702).

Getting this right will take some experimentation. In almost all cases, the person watching your video does NOT need to see your entire screen. Doing that will only distract them and make it more difficult for you to get your message across. Instead, make sure you arrange your windows so that you show just what is needed and so that it can be cropped to the aspect ratio you will be using. I do this by doing a short Screenflow recording (perhaps 30 seconds) then cropping it to 16:9. I use iMovie to create titles and apply transition effects. So my next step is to create an iMovie project using the same ratio (16:9) and import my video. Then I can preview the video to see that it is going to work correctly. Getting this right for your rough draft will save you hours of time and a lot of frustration later on.

Tip #4: Write a script

Ten minutes may seem like a long time but it goes by pretty fast. If you are going to get your point across, every word must count. Write a script of exactly what you intend to say and follow it. This will help you keep your message focused. When recording without a script, people tend to add non-words like "um", "uh", etc. These non-words will make your presentation sound less professional. Make sure you include any directions you need to remind you what to demonstrate as well. Remember that your on-screen actions take time so you may not have as much time to talk as you think. You can then time yourself following your script to make sure you will stay within whatever time limit you have.

Tip #5: Keep the presentation focused

The best demonstrations are those that are extremely focused. Don’t allow anything to distract the viewer from your message. Keep this in mind when determining what you will show. If it doesn’t support your message, don’t show it. Remember, time is at a premium. Don’t assume the viewer will watch the entire video. If you don’t keep them interested, they may stop watching. When recording your video, make sure there isn’t anything that could be a distraction, like unnecessary icons on your desktop or edges of other windows in your video.

Tip #6: Make use of pan and zoom

When you introduce a topic, the viewer needs to understand the context. Showing them the entire window, for example, will help. After that, you can zoom-in on the part of the window or screen where the action is. This will help keep the viewer focused. If you are hosting your video on YouTube, it will really help the user to be able to see what you are demonstrating. I didn’t consider this when I made the first Introduction to REALbasic video and as a result, it was difficult to follow. The updated version makes extensive use of zooming and is much better as a result. Screenflow makes it easy to zoom in and out and this can be done after you finish recording. It also makes it easy to pan from one place to another. I do this quite a bit in the Introduction to REALbasic video so that I can stay zoomed in, but still keep the viewer focused on what I’m showing them. Screenflow also has some other effects you can use. One feature allows you to highlight the foreground window. This causes everything else to be shaded. I use this effect in the Introduction to REALbasic video. Screenflow can highlight just the cursor as well. I do all my video recording on Mac OS X so I can use Screenflow, but there are almost certainly tools for Windows and Linux that provide similar features.

Tip #7: Make sure you’ve got quality audio

I’ve seen some video demonstrations that use text rather than voice to guide the viewer. While there may be times when this makes sense, try to avoid this if possible. Effective demonstrations should be similar to what they would be if you were standing in front of the person to whom you are demonstrating. Explaining your point with audio will be far more effective than using text. Text is fine when you are introducing a new topic but not for the entire demonstration.

The quality of your audio is another important factor. Make sure you have a quiet place to record so that background noise won’t be recorded and provide another distraction. The microphone built in to your computer is fine for recording a scratch audio track, but it’s not good enough for your final version. It will pick up too much of the sound around you and it will sound like you are too far away from the microphone (because you are). As a result it will not sound professional. Invest in a decent USB microphone. Logitech makes some good ones. This will allow make your audio sound much more professional. If you happen to own the video game, Rockband, the USB microphone that comes with it works with the Mac quite well. I haven’t tried it on Windows or Linux but I suspect it will work there as well.

Don’t try to record your audio and video at the same time for your final version. You will make too many mistakes and this will just be an exercise in frustration. Plan to re-record the final audio after you have finished editing the video. Screenflow provides this ability and any good screen recording/editing software will offer this. You don’t have to record all the final audio at once either. You can record segments of it and insert them as you go.

Finally, if you don’t have a voice that comes across well when recorded, find someone who does. You don’t need to sound like a radio or TV announcer but your voice does need to be clear and easy to understand.

Tip #8: Introduce yourself

People want to know who is talking to them. At the beginning of your demonstration, make sure to introduce yourself. This will make your demonstration feel more personal. If you have the opportunity, record a thirty seconds of yourself talking with video, or include a picture of yourself.

Tip #9: Fix your mistakes

The more polished your demonstration is, the better. A polished demonstration is a more credible one. Since you can re-record both the video and audio as many times as it takes to get it right, there’s really no excuse for having mistakes in your demonstration. The kinds of mistakes I’m talking about are things like selecting the wrong menu, clicking the wrong button, spelling mistakes, using nonsense words (as I described earlier), etc.

If you try to record your entire demonstration perfectly, you will end up doing it over and over again and just get frustrated. Instead, think of your demonstration as a movie. Movies have scenes, each of which is shot separately and not necessarily even in chronological order. You can shoot a scene from your demo, make sure it’s right and then move on to another. Screenflow makes it easy to do this because it allows you to make a new recording and add it to an existing project. You can add new audio tracks as well. As I mentioned earlier, it’s a good idea to record a scratch audio track while you are recording the video from your computer. If you don’t do this, you might find that you don’t actually have enough time to say what you want to say. When you are done with the video and the scratch audio, you can use the scratch audio as a guide and re-record the audio to get it just right. When you’re done, it’s easy (at least in Screenflow) to delete the scratch audio track.

Tip #10: Export to the highest quality you need, but no higher

When you are finished with your demonstration, you will need to export it via whatever software you used to put the final version together. That might be Screenflow, it might be iMovie, etc. The higher quality, the better your demonstration will look and the easier it will be to watch. However, the higher quality, the larger the file will be, which may exceed the limit of your hosting service. So be careful. Also, you’ll probably be surprised at how good a movie exported at a medium level of quality looks. Again, experimentation will help a lot.

Tip #11: Bonus tip - Creating cross-platform videos

Screenflow is great for recording videos on the Mac. I’m sure there are applications like Screenflow for Windows and Linux but I’m not familiar with them. However, if you have a Mac or access to a Mac, there is a way to use Screenflow to do screen recordings on Windows and Linux. You can run Windows or Linux using Paralells or VMWare on the Mac and use Screenflow to do your recording. You can do this when running Windows/Linux in a separate window or in full screen mode. Either way, you can use Screenflow to crop your recording to the appropriate size. The downside to this method is that a few of Screenflow’s features that help you to enhance your video (such as highlighting the foreground window) won’t work. However, Screenflow does detect the cursor on Windows so you can enhance the cursor but this doesn’t appear to work on Linux.


Demonstration videos take far longer to create than screenshots or feature descriptions but can be far more effective at getting a message across (and closing a sale as a result). They can also be more effective at teaching your users how to be effective with your software product. The better they are at using your product, they more productive they will be. This will almost certainly lead to your users recommending your product to others and that leads to more sales.

Wednesday, July 22, 2009

Take Full Advantage of the REAL Software Website!

Hi REALbasic Fans,

In case you were not already aware, I want to point out some convenient features of the REAL Software website. As of December you can see all your REALbasic, REAL Studio & REAL Server license keys, their expiration dates & renewal and upgrade options in one place. Just log in and go to Account -> My License Keys.

Another great option, even when you are not logged in, is the Renewal & Upgrade Assistant, located on the right side of the Store page. Simply enter a license key into the Assistant to view all the Renewal and Upgrade options for that key.

Want to know the most recent release you can access with your expired REALbasic key? Log in and go to Downloads -> Previous Versions. Previous versions available for the keys in your account are available here to download (releases from 2007-present only).

Have you registered but don't see you license keys in your account? Most likely you have multiple accounts, perhaps under different email addresses or names. Send me an email with your keys and/or the email addresses you use and I can merge all your accounts together!

Contact us at if you need help with your account or anything else.

Tuesday, July 7, 2009

REAL Software Ships REALbasic 2009 Release 3; Adds OpenGL for 3D Images and Animation

AUSTIN, Texas, USA (July 7, 2009) — REAL Software, creator of REALbasic, a cross-platform development tool for creating software for Mac, Windows and Linux, is now shipping REALbasic and REAL Studio 2009 Release 3. This release boasts more than 100 improvements and 31 new features, including the addition of OpenGL support for 3D images and animation.

"REALbasic is powerful enough to allow me to develop 2D applications requiring a complex interface faster than any other compiler," commented Stephan Keith, a REALbasic Developer. "With the introduction of OpenGL to REALbasic, and its extraordinary interface development tools, I should be able to develop 3D applications 50% to 70% faster over those using traditional C-programming methods."

The new OpenGLSurface control does require a knowledge of the OpenGL language. However, there are some open source projects that are implementing a RB3D-compatible API on top of the OpenGL for developers who currently use RB3D.

REALbasic was recently named 'Best Programming Language' during The Code Project's First Annual Members Choice Awards.

The complete list of improvements and new features in this release can be found in the release notes in the product download section, REALbasic and REAL Studio are available in a free 30-day trial edition. REAL Software recently published an Introduction to REALbasic video on

Wednesday, June 24, 2009

Free eBook: How to Avoid Economic Ruin

If any of you have an application and are looking for marketing ideas or helpful hints on writing a press release, then this free eBook might come in handy for you. Also, if you know someone who might be interested in or benefit from learning to create their own software, please feel free to pass this eBook on to them.

Description: The economy is still in bad shape and there is no promise of things looking up anytime in the near future. So, why not take your finances into your own hand? This eBook will show you how you can supplement your income, or even launch a new career, by starting your very own software company, even if you don't have any programming experience. All you need is an idea and a good development tool to get you started. This free eBook includes the tools you will need to get your new company up and running.

Table of Contents
    Chapter 1: The Idea
      Determining If There is a Market for your Idea
    Chapter 2: Software Made Simple
      Choosing a Development Tool
      Choosing a Platform
      Choosing a Language
      Testing Your Application
      Naming Your Creation
      Spreading the Word
    Chapter 3: Creating a Website
      Text and Organization
      Get Found: Search Engine Optimization
      What Not to Do
      Creating a Demo Video
    Chapter 4: Selling on Your Website
      Available E-commerce Tools
    Chapter 5: Marketing your Product
      Viral Marketing
      Free Listings
      Public Relations
      Press Release Template
      Sample Press Release
      Paid Search Engine Advertising
    Chapter 6: Conclusion
    Appendix A: Resources
    About the Author

Wednesday, June 17, 2009

Linux Personal Free for Open Source Projects

We recently changed the price of REALbasic Personal Edition for Linux to $99, which is the same as the Personal Edition for Mac and Windows. However, if you are developing an open source project, Personal Edition for Linux is still free for you.

To obtain your free Linux key contact Customer Service and provide them with documentation about your project, such as your name on an open source website.

We are making this change because most commercial software that has a free version for Linux is typically free only for open source projects.

Thursday, June 11, 2009

Say what you mean

In code it's very important to say exactly what you mean and mean what you say.

Why ?

I just happened to reproduce and fix a bug in the IDE that was the result of code not being explicit about what was intended.

The particular bit of code was in a listbox cellkeydown handler and read

If me.ListIndex <> -1 and key = SpecialChars.EnterChar or key = SpecialChars.ReturnChar then

dim tag as string = me.CellTag(me.Listindex, 0)

But this was throwing an out-of- bounds exception sometimes when you'd press return. But, why?

If you look at the expression you will see that the boolean operators AND has a higher precedence
than OR. This means that
me.ListIndex <> -1 and key = SpecialChars.EnterChar
gets evaluated BEFORE the OR.
This expression turns out to behave as though you wrote

((me.ListIndex <> -1) AND (key = SpecialChars.EnterChar)) or (key = SpecialChars.ReturnChar)

The end result was IF you pressed return the code for the THEN portion WOULD execute when it should not and this caused the out of bounds exception.

What this expression should have said was:

(me.ListIndex <> -1) AND ((key = SpecialChars.EnterChar)) or (key = SpecialChars.ReturnChar))

So the listindex had to be <> -1 before the code in the then would execute.

A very small change, but a very big difference.

Be clear and be safe out there :P

Our 64 bit future

Most desktop computers have used 32 bit processors for a long time now. Among other things, a 32 bit processor limits the amount of memory a computer can access to 4 GB (or to be more precise, 4096 megabytes). The world is moving towards 64 bit processors which can, in theory, address 16 exabytes (16 billion GB!) of memory. Most 64 bit computers don't support that much memory of course but 64 bit computers will certainly allow for a lot more memory than we have today.

For most REALbasic users this change won't require much, if any, work. When we ship a 64 bit native version of REALbasic, integers will be 64 bits rather than 32 bits. That doesn't mean much to most of you. For those of you that are doing bit manipulation and using certain classes, it will most likely mean your code will need to be updated.

Today you have the ability to specify that you want an integer that is 32 bits or 64 bits. Rather than using Integer, you can use Int32 to specify a 32 bit integer. If you are reading and/or writing integers using the MemoryBlock or BinaryStream classes, use the methods provided in those classes to read/write 32 bit integers if you are using the regular Integer methods today.

If you are doing integer bitwise operations or are using integers with binarystreams or memoryblocks, you can update your code today so it will continue to function properly once we provide the ability to compile your project as a 64 bit native application.

64 bit is something we will be addressing to allow your applications to be 64 bit native. I don't have a timeframe to announce just yet. However, those of you that are depending on 32 bit integers (and if you are, you know you are) can update your code now so you won't have any hiccups when compiling 64 bit native applications arrives.

Wednesday, June 10, 2009

REALbasic Yearbook

What is your "day job"?  Are you a school teacher, engineer, librarian, graphic designer, piano teacher, chef, or something else during the day and also a REALbasic developer at night?  Submit your photograph to the REALbasic yearbook and be displayed on our website!

Send me your picture at

Help Grow the REALbasic Community, Post on The Code Project

Do you have some cool code you want to share?  Post it on The Code Project and share it with the world!  Sharing code with others is both an excellent way to help other developers, but it also helps you become a better programmer.  The Code Project has more than six million members, so by sharing your code you will get a lot of great feedback, bug fixes, free testing and suggestions.  

Submit your article to The Code Project.
Learn more about The Code Project.

Tuesday, June 9, 2009

You need what language supported ?

Something that every developer seems to hope they don't have to deal with.

But I'd say you should want to deal with localization, because if you're localizing your application into many languages then it's also very likely that your application is widely used and hopefully really successful.

REALbasic makes doing most localizing very easy. Just use dynamic string constants and that will take care of the bulk of your needs.

If you plan ahead and use dynamic constants for captions on buttons, strings shown in message dialogs and all the other strings you show in your application you can be ready to localize into any of the languages that REALbasic supports.

But what do you do if after you've created your application you need to localize it into a new language ? And you don't need to do anything else but localize it? You don't need to recompile the application to do this.

You use Lingua.
First you need to export the localizable strings from your application (under File > Export Localizable Values )
Specify what language localization you are creating as the target language.
Import this .rbl file into Lingua and make whatever changes you need using Lingua to add in the new values for this localization.
Then, when all your changes are done, choose "Export to Application" under File > Export.
This will add a new localized file to your application that is set up for the new language.
This works for OS X, Windows and Linux.

That's it. All done.

Note that your application MUST be set up with dynamic constants BEFORE you do this. You cannot change an already compiled application that does not use dynamic constants into one that does by this process.

On OS X there's an alternate way that does not require Lingua and can actually be done by anyone at any time.  You can open the application package and navigate to the Resources directory inside the package. Inside will be any number of directories named with a .lproj extension. There you will see a file called Localizable.strings which holds all the strings that can be localized.

If you need to create a new localization you can use TextEdit on OS X (see the Creating Strings Files Manually section here).  You can duplicate an existing localization (the directory named ending in .lproj) and rename it. The prefix of the directory name is the localization (en.lproj is English, fr.lproj is French, de.lproj is German, and so on)

Once you've created this you have a new localization without recompiling your application.

Monday, June 8, 2009

Good, fast or cheap

There is a saying that you can have something "good, fast or cheap" but you have to pick one. If it's good, you won't get it fast or cheap. If it's cheap, it probably won't be good or fast. You get the idea. That saying is not new and it's not even always correct as it's highly subjective. But it is true more often than not.

As most of you probably know by now, we are working on a new Mac OS X framework for REALbasic. The framework is code that lies beneath your code and translates what you've written in REALbasic into operating system-specific API (Application Programming Interface) calls. For example, in REALbasic you put w = new window1. Behind the scenes we call CreateWindowEX on Windows, gtk_window_new on Linux, and NewWindowReference on Mac OS X.

Our current Mac OS X framework uses the Carbon APIs. These APIs were created to be compatible with Mac OS 9 (Classic Mac OS) as a means to port these apps to Mac OS X. The other set of APIs for Mac OS X is called Cocoa. These were part of NeXTStep which eventually became Mac OS X.

It's become increasingly clear over the years that Apple is focusing its attention on Cocoa. It's understandable that they would want to do this rather than have to update two APIs for each new feature. Several years ago we started a project to create a new Cocoa-based framework for REALbasic. This wouldn't change how you work with REALbasic or how you support Mac OS X (well, not much anyway) but it would provide users with a better experience and allow us to expose new Mac OS X features faster. The project failed. But we are nothing if not tenacious so 15 months ago we started a new Cocoa project with a new approach. Based on our experience developing frameworks for Mac, Windows and Linux, we believed that we would be in beta by Q1 2009 and shipping by the end of Q2 2009. It hasn't worked out that way.

We are making terrific progress. It was slow going at first but we able to move faster now that we have laid the groundwork. At this point, we should be feature complete by the end of the summer and shipping some time this fall. So our schedule has slipped by one quarter. I know many of you were hoping to have Cocoa sooner and I'm sorry to disappoint you. But we would rather do it right than have to do it over again.

So when it comes to good, fast or cheap, we are choosing good.