Monday, August 29, 2011

Vote for the Real Software Panels at SXSW 2012!

South By Southwest (SXSW) is an annual event held in Real Software's hometown of Austin, Texas that celebrates what's new and what's next in Music, Film and Technology. For SXSW 2012, Real Software has offered two panels for the Interactive conference.

Here is Geoff Perlman in a short video of what he's proposing for his panel Navigating the Sea of Programming Languages.

Not one to shy away from a challenge, the newest member of Real Software's Engineering team, Greg O'Lone offers his panel Web App Evolution - From Mainframe chat to Web 3.0.

Open voting for panels ends Friday...this Friday, September 2nd! Check out the Real Software panels and vote for your favorite. Full disclosure: You will have to create an account to vote and comment but it only takes a moment!

Thursday, August 25, 2011

Steve Jobs

Steve Jobs was born of educated parents then adopted by a working class family. While this wasn't by design, it couldn't have been a more perfect beginning. Intelligence and a strong work ethic make for a good shot at success.

He has always been ahead of his time. Apple didn't invent the first computer small enough and inexpensive enough to have at home. But the two Steves did recognize that every home should have a computer and effectively invented the notion of the personal computer. Jobs has never been short on vision- from the original Apple computer to the Macintosh to NeXT to Pixar to the iMac, iPod, iTunes, iPhone and iPad. But his vision is even greater than that. Every thread of the fabric of Apple is scrutinized by Jobs. I heard that when the first Apple stores were opening, Jobs personally chose the songs that would be playing in the store.

Jobs has always been a man of great vision and focus. The vision part, in some ways, is the easy part. You either have it or you don't. I think Job's vision is to make things as easy as possible for the customer and not let the current limitations of technology and others' lack of imagination get in the way. If you ever find yourself interviewing for the job of CEO somewhere, you'd better walk into that interview with your well-thoughtout vision of the future of the company. The board will either love it or thank you for your time but you'd better have it.

Focus, on the other hand, is much more difficult. When you are in the role of CEO and you have lots of great ideas for growing the business, it's easy to want to try just about everything you can think of. Having the discipline to focus very intentionally and directly on your value proposition is rare. I remember Jobs once saying, after being praised for the work Apple had done on some product, "I'm more proud of what we have not put into our products than what we have." Jobs believes that you should only put in features that 80% of your customers will use. Anything else distracts the user, making the product harder to understand and less elegant.

At All Things Digital Jobs was asked what it felt like now that Apple was bigger (in market value) than Microsoft. Jobs responded (and I'm paraphrasing here), "It's sort of surreal. But it's not what gets me up in the morning." That really says it all. Jobs doesn't spend much time thinking about Apple's competitors. His focus, and the focus on Apple, is on what is best for their consumer, their customer. Jobs believes that if you focus on your customer, you will win. I think he's right.

I have been guilty in years past of wanting to put every feature I could think of into Real Studio. But I have learned by careful study that that's a mistake. I've grown more focused over the years. That's something I have learned from watching Jobs: focus is an extraordinarily valuable thing. And of course that technology can be beautiful.

Jobs has made his share of mistakes. He's an extraordinary demanding CEO which is a nice way of saying that he's not an easy person to work for. He has very high expectations and if you don't see things the way he does, he will tell you, bluntly, rudely and in no uncertain terms. I think he has mellowed over the years a bit, but still, this is who he is. I think perhaps this comes, hand in hand, with his vision, focus and work ethic.

You probably already know the reason for this post today. Steve Jobs has resigned as Apple's CEO. He has formalized what has been the case for the last few years. How will this affect Apple? In the short term, not much. Jobs is going to continue to be as involved as he can at Apple. It's his baby after all. If he has imprinted himself on Apple (and I believe he has) then Apple will continue to be the great company that Jobs always knew it would be.

I hope Jobs is with us for many more years because I believe he still has a lot to contribute. But if that's not the case, he will certainly be going out at the top of this game.

Tuesday, August 23, 2011

Can a programming language be completely visual?

Google recently abandoned their App Inventor for Android development tool. To be totally accurate they open-sourced it, but it's clear they won't be investing it in any longer. App Inventor was designed to make it possible to build apps (though certainly not every kind of app) for Android without having any background in programming. It didn't take off to the degree that would be required for it to stay within Google's focus, so they dumped it. It might not be a popular move (especially with App Inventor users) but it's still likely the correct one.

There have been many attempts to make a programming language that is completely visual. The idea is that rather than type in lines of code, you would drag and drop icons that each represent an object or function and then chain them together to create your application's logic. It sounds great in theory and it demos very well. But does it work in reality?

If you are as old as I am, you've seen visual programming a few times before. There was a database development tool for the Mac back in the 1980's called Double Helix. Its programming language was completely visual and it was very easy to get started. However, as your functions became larger and more complex, the code became unwieldy. I remember visiting a friend who was building an application in Double Helix for his company. He had printed out some of his functions but they were so large (because icons simply consume more space than the equivalent text-based code) that he had literally covered an entire wall of his office. It was quickly becoming impractical.

There was also a series of products called VIP (Visual Interactive Programming) that attempted visual programming. And there was AppWare as well, which eventually failed. I looked at another one called Prograph which used a wiring diagram model which I'm sure made a lot of sense if you were an electrician or electrical engineer. The database development tool I used back in the 1980's through the mid-1990's, 4D, had a flowchart-based option (as opposed to the more popular text-based option) for writing methods but it wasn't very popular and I believe they eventually abandoned it.

There's an interesting Wikipedia article about visual programming languages. As I looked down the list of languages, I was surprised to see so many of them but I didn't recognize many names.

Why aren't visual programming languages more popular? Probably for the same reasons that visual instructions aren't always used in daily life. They can and do work just fine for simple things but the more complex and intricate the instructions need to be, the more difficult it becomes to describe them visually. We spend so much time reading and writing that it's really the only way we receive and communicate complex instructions. Of course there are times where visual instructions make sense but they are usually for dealing with physical things like Legos or building Ikea furniture.

I will continue to investigate future attempts at visual programming because I think it's an interesting area to research but I don't hold out much hope for a solution that can really be scaled to solve large, complex problems.

Wednesday, August 17, 2011

Ok who did it?

Like solving a tough mystery, debugging software can be challenging too, especially if you plan on targeting multiple platforms and even then you have multiple versions of multiple platforms (i.e. XP, Vista, Snow Leopard, Lion, Ubuntu, KUbuntu, etc.). Real Studio makes this task easier as you can run your app and debug it locally on each platform or with our remote debugger. However, there comes a time when you release your app to the masses, and you are faced with the possibility of some users who do things that you don't expect and crash your app. For simplicity sake we'll consider these two types of crashes:
  • a RealBasic exception (stack overflow, accessing a Nil Object, etc.)
  • an OS exception (memory corruption, buffer overflows, invalid operations, etc.)
Luckily a RealBasic exception is something that we generate and can be caught easily. An OS exception however, is more fatal and can usually be attributed to poorly written declares, invalid pointer manipulation, plug-ins, performing GUI operations in a separate thread, or something in our framework.

In most cases when a user encounters a RealBasic exception you can catch this and continue with your program execution. However, if the user encounters a RealBasic exception that you're not expecting, you can create a stack trace (also referred to as the call stack) to help you narrow this down. I'm not going to go into details about catching exceptions as Geoff's blog post explains it very well, but being able to receive a stack trace from your user(s) can help you locate the problem.

So what is a stack trace? In short, it's a stack of method calls. All apps begin at a main entry point and starting from there it calls other methods.
[   etc.  ]
[ Method2 ]
[ Method1 ]
[   Main  ]

Knowing in which method the exception occurred will help you narrow down the issue. Great, so how do I get this stack information? Those familiar with compilers and using debug symbols know that this information must be stored in the built app. Consider that a method call is really just a pointer to some executable memory location, we need a way to map that address to a human readable method name. To be able to generate a readable stack trace you will need to enable App.IncludeFunctionNames, which defaults to off. With this enabled, RuntimeException.Stack will now contain a readable stack trace.

Since the exception isn't handled by your app, you'll probably want to record the stack information in App.UnhandledException. Consider this less than real world example:

Sub Window.Open() Call Test End Sub Sub Test() // This will cause a NilObjectException Dim f As FolderItem f.Visible = True End Sub Function App.UnhandledException(error As RuntimeException) As Boolean MsgBox Join( error.Stack, EndofLine ) End Function

When you build and run this app, assuming you enabled App.IncludeFunctionNames, you should see something like this appear:
Window1.Window1.test%%o<Window1.Window1> Window1.Window1.Event_Open%%o<Window1.Window1> : [additional stack trace snipped for brevity] : %main

As you can see, the output is a bit mangled, but being able to record the stack trace can help you track down the issue when debugging isn't possible.

Tuesday, August 2, 2011

A Breath Of Fresh Air

Being a Real Studio developer can be lonely work, especially if you work on your own like many of us do. We often go to client sites, but the project work we do is usually done at home on our own. We are all used to having to work problems out ourselves using the forums, or occasionally by asking questions on the NUG.

In May, a client using several of my bespoke Real Studio databases asked me to recommend someone who could support them should I become unable in future. I found another experienced developer and we met a couple of times. It went so well we decided to form a user group in the midlands, UK. We planned to hold an event in Leicester on July 28th to get some UK-based developers together.

After getting the word out through Real Software and Christian Schmitz from MonkeyBread Software, and on the NUG, we hoped to get ten people from England to attend our event. The response was overwhelming and the event quickly sold out. One guy even asked if we had plans to stream the event live so he could watch from the USA! There is clearly a demand for Real Studio developer events and networking meetings.

The event was last Thursday. About ten of us socialized together in the hotel the evening before, which was a nice icebreaker. The event went very well. Seventeen developers from England, Germany and Belgium came for the day. The three guys from Belgium found they worked about two miles from each other and lived about seven miles apart!

The main reason people wanted to come was to meet other Real Studio developers, to socialize, to discuss technical issues and get help, and meet people who could maybe help in future projects.

The presentations were well received. We also had a video chat with Geoff Perlman, who demonstrated the latest Web Edition and also answered our technical questions and talked about the future direction of the IDE.

The benefits for me have been great. I discovered lots of simple but very useful things I didn’t know. I’ve also made useful contacts and have new development and training opportunities to explore. I learned how to make some of my coding quicker and easier, and got fresh ideas for my own projects. I now know how to get around some technical issues I had been struggling with and I helped a few other developers get over a technical problem too.

It’s been a breath of fresh air. I have new contacts and feel energized.

You don’t have to be alone if you work for yourself. You can get involved with a user group, and go to meetings. You can work out answers to your issues with others, find out how to do things better, and help others with their issues. You never know where it could lead.

Eric Gibbon (

MacTasks Limited

Co-Founder, RSDevsUK

@RSDevsUK and

Monday, August 1, 2011

Announcing Real World 2012!

We are very pleased to announce Real World 2012, the biggest Real Studio event of the year!

At Real World 2012 you can attend informative, educational sessions, network with other Real Studio users, meet the Real Software team and gain industry insight...Oh, and since it's in Orlando you will certainly have a bit of fun too!

The conference will be held May 24-25, 2012 in Orlando, Florida, at the Royal Plaza Hotel! Save the date, registration will open soon.

Just think, "I'm going to Real World 2012...and Disneyworld!"

For details visit the Real World website.