Hello Folks,

My name is Andre Alves Garzia, I am 32 and Live in the state of Rio de Janeiro in Brazil. I’ve been working with LiveCode for some years and been a speaker on LiveCode conferences on an yearly basis. This page is both a story of cool things and a pledge. LiveCode is the most up to date HyperCard descendant on the market and it can create applications for Mac OS X, Windows, Linux, iOS, Android and the Web.

At this moment LiveCode is a commercial offering but they have a kickstarter going on that will end in about 24 hours to make the language open source and free under the terms of the GPL. This page is an effort to make a case for LiveCode and show why it is a wonderful language for beginners and seasoned developers, why I think this kickstarter could be revolutionary and try to convince you to pledge.

That being said lets take a look at what LiveCode is…

What is LiveCode in 5 minutes

LiveCode IDE

Above, you can see a glimpse of LiveCode IDE 5.5.4. LiveCode is both the IDE and the language behind it. In LiveCode you build your apps by dragging and dropping controls into the application stack (aka window) and scripting them with code that looks like english.

In the example above we have a field called name, a button labeled Say Hello and a field called output. If you fill your name in the text input and press the button, you see the Hello, name message in the output field. The script that does this is seen below

Some LiveCode Code

As you can see, the programming language is very english like and easy to grasp. Thats the main advantage for beginners because LiveCode looks like english. With LiveCode, the beginner programmer need only to learn a single language to be able to deploy his applications to Mac OS X, Windows, Linux, iOS and Android. Normally this hypothetical programmer would require at least Objective-C and Java to deploy to all these platforms, both languages are not the easiest thing on earth.

Inventive Users

LiveCode is interesting for inventive users, those that need to solve their problems and are not seeking to build products. For example, your friend who has a little cupcake hobbie can create his own tool to manage his recipe/inventory the way he sees fit without a degree in CS and learning SQL and another language. LiveCode is easy enough for curious people to learn enough to build stuff for their own personal use. I like to write Science Fiction short stories, I am not Asimov but I am good enough for me and some friends (I was actually published twice!), what I mean by this is that you don’t need to be Dennis Ritchie or Rob Pike or Douglas Crockford (listing my heroes here) to be able to build applications for your needs.

Inventive users are a market (for the lack of better word) that exists and thrived while HyperCard was alive. These days, the learning curve is way more steep when using traditional languages such as C. Even with the current HTML5 solutions, inventive users would require knowledge of HTML, CSS and Javascript before they could start working on their problem.

How many friends you have that are not on fields related to Computer Science that created tools in Excell or Word Macros to solve their problem? They would be much better served by a tool such as LiveCode.

Some inventive users might be amazed by this new found powerful skill of building software and go on to learn more thru formal education or books and turn their life carreer into programming. Many real world applications started with an annoyed inventive user with a problem.

You may be thinking that you would not trade your favorite language for LiveCode but this is not only about you and me or about favorite languages. This is about making better tools available to everybody. If LiveCode is Free and Open Source then anyone can pick it up and start coding with ease. Its all about empowerment.

Building an Assembly Language Interpreter To Study For An Exam (circa 2007)

I am an C.S. undergrad and while I was coursing my “Computer Architecture 101” class we had assignments to be done in Assembly. The problem was that the university used a tweeked Assembly interpreter that was x86 like but not really. It was an educational interpreter made for D.O.S. probably in the 90s.

I had an exam in the next day and I could not study because the interpreter would not run in my Macbook Pro. I a moment of desperation and maybe some hubris, I decided to build my own Assembly interpreter. It would mimic the one used by the univerisity and I would only implement the minimum code needed to run the examples from the book. I started coding in the afternoon. By 4:00 AM I had the following application running:

CuteX86 Assembly Interpreter

It could execute assembly programs line by line which is a boon for learning. I built it all in the span of some hours. The code is horrible inneficient but it is good enough to study for a class. It could run all the books examples and worked on Mac OS X, Windows and Linux. This is the kind of tool that would not exist if I had to code it in Objective-C or if I had to hire someone to do it. It is a simple product, a solution for my study needs and I shared it with my classmates.

Part of CuteX86 source code

The main program is 300 Lines of Code and implement a very small subset of Assembly language. Above you can see part of the source code, more specifically the command that jumps to a label by changing the value of the tCL variable that holds the currently line that is being executed. You can also see the command that is used to parse a register, it receives a string such as ax,bx,cx or dx and change it to the value of the given register. LiveCode is typeless so I can change the value of a string variable to a number and then treat it as I would treat a number. (of course there are ways and practices to handle this).

In the end I had only 3 hours left to study for the exam. It was not my best exam, I received 8 out of 10 but I had so much fun building this tiny interpreter that was more than enough.

Building a Tiny WebServer That Ended Up On Production (against my wishes)

The first LiveCode stack (aka app) that I built that was noted by the LiveCode community was a tiny web server. These days everyone and his dog has web servers and we can get stellar performance out of simple languages and tools such as go and node. In 2004, I decided to learn more about the web by building a tiny server in LiveCode. I had no hopes and aims for this server mostly because LiveCode is single threaded and I would not try to solve that. I built a tiny server that would accept requests and be able to serve static files or LiveCode based CGIs. The application was a success and I got a chance to speak on a conference. Yay!

RevHTTP Interface

Some people asked when this was going to replace Apache (of course it was a joke) and I kept warning users that single threaded servers with blocking IO had no place in production environments, that this was a learning tool and yet it found its way into many production environments. Before you have a heart attack, it was not used as a internet facing webserver. People often used this together with other LiveCode based tools to exchange data on intranets. A person used it on an internal process to issue serial numbers for his application over email. Another used it to monitor the health of his home machine while he was at his office.

All those guys and gals who took this tiny webserver and adapted it to solve their needs could have used another technology that is more suited to web work but they decided to use my little LiveCode server because they already had other apps in LiveCode and could easily embed my stuff. They were inventive users, sysadmins, former HyperCard users.

I used it even today, after seven years, to exchange data between the LiveCode IDE (which is built in LiveCode itself) and my mobile development apps so that while I am developing/testing mobile apps, I can see my log messages directly on the desktop much like weinre and phonegap but built in half an hour and fully customized to my needs.

Building a Web Micro Framework

After some years, RunRev, the company that makes LiveCode released a new LiveCode engine that was modeled after PHP. Finally we had an engine that could be used for real web work. At that time I was enamoured with Ruby and Sinatra. I decided to create a micro framework for LiveCode web engine (aka LiveCode Server). The result was RevSpark that can be seen at http://www.andregarzia.com/page/revspark.

An example of source code built to use RevSpark is:

<?rev include "revspark.inc" if match_get("/") or match_get("/hello") then put "Hello World!" end if if match_get("/hello/:name") then put "Hello," && para("name") end if if match_get("/sum/:num1/:num2") then put "Hello," && para("num1") && "+" && para("num2") && "=" && para("num1") + para("num2") end if if match_get("/hi") then put "Hi There!" end if ?>

Anyone who ever worked with these micro framework will have an understanding of what is happening on the example above. LiveCode english like syntax makes it very easy to understand source code, even if the above code has no comment at all.

Building a Whole Web Backend

As LiveCode Server grew, more featured frameworks became available such as RevIgniter by Ralf Bitter. It is modeled after PHP CodeIgniter and me and the monks at Kauai Hindu Monastery used it to build our whole web framework that can be seen at:

Himalayan Academy Publications and Kauai Hindu Monastery

This website has a lot going on behind it including multimedia archives that dates back to 1979, online eBook readers and more. Our whole system is built with LiveCode and some may argue that it would be better if done with another tool but this tool served our purpose and we already knew how to use it. It can be used by me and by monastic people alike. We’re all inventive users in the path of Dharma there.

Building an Admin UI

LiveCode is specially suited for building Desktop applications and in the case of our Hindu Monastery Website we created a desktop app to serve as management UI. These days people often build very complex administration interfaces for their websites when sometimes there is no need at all for it to be web based. Using the same language we used to build the website, we built (even reusing parts) a desktop app for management of our media resources.

HAPMAN interface

So from the convenience of a Desktop app we can manage all our media resources. It is not as pretty as software from Panic but its way better than an HTML interface.

Building Mobile Games

The current trend is mobile and LiveCode can deploy applications to both Android and iOS. I was always interest in mobile games so I went on to build a couple games for an upcoming book on building mobile games with LiveCode.

Apple Catcher on iPad

LiveCode is a wonderful tool to create mobile casual games and much easier to learn than the alternatives. Soon my book will be ready and I will unleash some casual games for both iOS and Android (from the same code).

A pledge

If you made this far, you have now a glimpse of what an inventive user can build with LiveCode. Also check out this blog (1001 things built with LiveCode)[http://livecode1001.blogspot.com.br/] for more examples.

LiveCode has a huge potential to be a very friendly introduction to programming for new developers and is a powerful tool in the hands of inventive users and seasoned developers. Please help us make it open source by pledging on our Kickstarter

https://www.kickstarter.com/projects/1755283828/open-source-edition-of-livecode

Thanks in advance for making it Open and Free Andre Alves Garzia