Thursday, July 28, 2011

Setting up Control Arrays in Real Studio Web Apps

The way that you set up a control array in a web app is a little different than the way you create one in a desktop app.


Let's say that you have put a Label control named Label1 on a window and you want to make a copy of it. First you set the Index property of Label1 to 0 in the properties pane.


I put this code in the Action event of a push button but it could go a number of different places.



dim myLabel as Label1 = self.AddLabel1


myLabel.top = 160 //now move the new label so that we can see it



That's it! Now you have a copy of the Label. If you want to set the text in both labels the code looks like this:



Label1(0).text = "Real Studio"

Label1(1).text = "Web App"



Of course, you have more than one copy of this Label and other controls in Real Studio.


Monday, July 25, 2011

Real Studio, Sandboxing, and the Mac App Store

As some of you have heard, Apple is going to require all applications submitted to the Mac App Store to be sandboxed starting in November.

Sandboxing is a security feature that limits the amount of damage your application can do if it was to be exploited. The way this works is that an application, by default, is unable to see or manipulate any of the world around it. Not only does this mean that there are fewer attack vectors to compromise your application, but also that it would be unable to harm the user if it was.

However, applications running in complete isolation would not be very useful. What Apple has done is added controlled holes in the sandbox called entitlements. These entitlements let your application access only the bits of the outside world that it absolutely has to. For example, there are entitlements that allow you access the computer's video camera, access the user's address book, or make outgoing network connections.

One entitlement in particular is interesting: the ability to use open and save dialogs. Since the application does not have access to the entire file system, normal open and save dialogs would be completely useless. So what Apple has done is design a system they call Powerbox that seamlessly shows the open box in another process. When the user selects a file from the dialog, it then pokes a hole in your application's sandbox and then you can use that file.

Unfortunately Powerbox is very broken in Carbon applications. We've filed all of the appropriate bug reports with Apple (rdar://9695639, rdar://9695604, rdar://9695574) but it is unclear if they will ever be fixed. It is our opinion that Apple is moving Carbon into a maintenance mode and is only doing updates to keep applications fitting the look and feel of Mac OS X as it changes.

What does this mean for your application built with Real Studio? Basically, it means that the Real Studio Carbon framework cannot be used for applications targeting the Mac App Store. By November, you must switch to using the Real Studio Cocoa framework to submit applications to the Mac App Store.

We realize that our Cocoa framework, in its current state, may not be stable or complete enough for some of your applications. However, we have not stopped working on it and it is improving with each release.

We hope to have addressed all of your important Cocoa framework issues by November. In order to do that we need your feedback. So please test your projects under Cocoa and report issues in Feedback so we can ensure a seamless release.

Thursday, July 21, 2011

Real Studio July Upgrade Sale

Good news everyone! Now through July 31st you can get 20% off any Real Studio upgrade to Pro or Enterprise editions. Just use Promo Code UPSALE and get access to more powerful Real Studio features & functionality!

Working in Personal but want to cross compile? Using Pro but want Web Edition or the Profiler? This is your opportunity to upgrade at a 20% discount!

For a comparison of Real Studio editions visit this chart.

Wednesday, July 20, 2011

Now Forming! Real Studio User Groups

If you get the Real Software newsletter or follow us on Facebook or Twitter, you know that Real Studio User Groups are really taking off - we now have user groups in four countries and on three continents! User groups can be great resources for new and long-time Real Studio users; they offer unique networking opportunities, training and technical assistance. In June the San Fransisco Bay Area user group held a virtual Web Edition demo + question & answer session with Geoff Perlman. On July 28th, the UK group (RSDevUK) will host a sold out event in Leicester, UK and the Auckland, New Zealand group is preparing for their first meeting!

These groups are further proof of the extensive and active user community surrounding Real Studio. Our community is easily one of Real Studio's greatest resources. If you are interested in starting or just participating in a user group in your area, please let us know.

For a full list of Real Studio User Groups visit our updated Community page.

Thursday, July 7, 2011

An update on Mac App Store compatibility

We have gotten some reports that people can't submit their applications to the Mac App Store with Application Loader 1.4.1. Specifically, it would give an error about missing required architectures. It is possible to work around this by using Application Loader 1.4. However, it is likely that Application Loader 1.4 will stop working in the near future.

At WWDC we spoke with an Apple engineer about this and we are pleased to announce that this issue has been fixed in Real Studio 2011r2. We highly encourage all users who are currently submitting or intend to submit their applications to the Mac App Store to upgrade to the most recent release.

In terms of technical details, the problem was that the Real Studio linker was not emitting the LC_UUID load command in generated Mach-O binaries. This load command is essentially a unique identifier for your program and allows Apple to group together crash logs (and other information we don't even know about). We now generate the proper information, which can be verified by running 'otool -l', like so:

[joe@Mac-Pro.local ~] otool -l "/FancyApp.app/Contents/MacOS/FancyApp"
...
Load command 11
cmd LC_UUID
cmdsize 24
uuid 15416171-690E-4D46-B15F-AD456B1EA572

Wednesday, July 6, 2011

The multi-platform era

In a blog post today, Horace Dediu explains that the Post-PC era will be a multi-platform era:

"So the very reasons which are driving developers to spread their bets across all and any new platforms should indicate the potential for new platforms and the sustainability of small platforms. The thesis that one dominant platform wins the mobile “war” is naive. The post-PC era will be a multi-platform era. Developers already understand this. Platform vendors know this. It’s time to unlearn the lessons of the PC era."

I agree with him and our vision for Real Studio has always been to allow developers to learn one set of tools to leverage as many platforms as possible. We started with the three major desktop platforms (Mac, Windows and Linux) then added the web in 2010, mobile platforms will be next. 

Providing platform abstraction is how we maximize the value of Real Studio- letting Real Studio developers focus on what makes their solutions unique rather than the details of so many diverse platforms.