A LiveCode Shell

by David Williams on December 10, 2014 5 comments

For some time, I have been wishing that I could have some kind of command-line oriented functionality to LiveCode, beyond writing scripts with LiveCode Server. What if I could pipe things directly to it, or run it as an interactive shell? Being able to very quickly make use of the text handling in LiveCode would be extremely handy for certain command line oriented types of tasks. Alas, this is not possible with LiveCode or LiveCode Server as it currently stands. However, after some thought, I concluded that it should be possible to put together a script to provide this functionality.

2014-12-10 11_55_44-MTPuTTY (Multi-Tabbed PuTTY)

Click to Zoom

After some time, I had produced a script which operates as a simple shell type interface. But how does it work? It’s actually fairly simple. The script is a LiveCode Server script, designed to be invoked via command line. When it starts up, it reads in the options passed to it on the command line to determine how it should behave. The options passed to it are in the $x variables, starting at $0. $# tells us how many were passed.

#!/usr/local/bin/livecode-server
## substitute this with the path to your livecode server executable

## array for storing the options passed to this program
local sOpts

## load options
repeat with x = 0 to ($# – 1)
       do “put $” & x && “into tReadOpt”
       if char 1 of tReadOpt is “-” then
              repeat with y = 2 to the number of chars in tReadOpt
                       put char y of tReadOpt into sOpts[(the number of lines in the keys of sOpts + 1)]
               end repeat
       else
            put tReadOpt into sOpts[(the number of lines in the keys of sOpts + 1)]
      end if
end repeat

 There are currently two modes: interactive and execute. We can also pass the -p option to tell it to expect data to be piped to it, and read it into a variable called ‘input’. If we pass it the -e option it starts up in execute mode, and expects you to have specified a command for it to run. It then exits after running the command. Usage for this would be like “lcsh -e ‘put hello world’”. Otherwise, it starts up in interactive mode.

## read from pipe
if optEnabled(“p”) then
       read from stdin until EOF
       put it into input
end if

## get command from last command line option and execute it, then quit
if optEnabled(“e”) then
       do sOpts[(the number of lines in the keys of sOpts)]
       put return
       quit
end if

## interactive mode
repeat
       put “lcsh[” & the folder & “]# “
       read from stdin for 1 line
       put it into tCommand
      if isCommand(tCommand) then
               put shell(tCommand)
      else
              try
                       do tCommand
               catch pError
                      put “Error:” & return
                      put pError
               end try
       end if
     put return
end repeat 

Execute mode simply takes the last command line option and uses do on it, then quits. Interactive mode reads 1 line from stdin at a time (i.e. it reads 1 typed line by the user at a time) and then determines what should be done with it. It uses the isCommand function to check the $PATH environment variable (which contains all of the directories which should be looked in for executable programs) to see if what was entered was a utility that is already installed, such as the standard Linux utilities. If it was, it uses shell() to execute the entered command. Otherwise, it uses the do command to execute it as normal LiveCode code, catching any generated errors so that they can be displayed without causing the program to exit:

## checks to see if the first word is a command in $PATH
function isCommand pCommand
       set the itemDel to “:”
       put the folder into tFolder
       put false into tIsCommand
       repeat for each item tDir in $PATH
               set the folder to tDir
               if word 1 of pCommand is among the lines of the files then put true into tIsCommand
       end repeat
       set the folder to tFolder
       return tIsCommand
end isCommand

There is also the optEnabled function that was referenced above. This checks to see if the program was loaded with a specific option enabled:

function optEnabled pOpt
       repeat for each key tKey in sOpts
               if sOpts[tKey] is pOpt then return true
       end repeat
       return false
end optEnabled

 This is quite clunky and has many, many problems – for example, there’s no ability to pipe the output of some LiveCode to another program in interactive mode, and you can’t open another program that requires interaction. However, I think that with a lot more work, this could become quite a robust and useful tool. It already provides some very handy functionality in it’s current state, namely that I can pipe to it for text parsing:

2014-12-10 12_44_57-MTPuTTY (Multi-Tabbed PuTTY)

Click to Zoom

I will probably keep chipping away at this until I can use it as my primary command line interface. You can get the full code here: http://jasminedavid.on-rev.com/lcsh.txt

 

read more
David WilliamsA LiveCode Shell

Have Your Eureka Moment with LiveCode

by Kevin Miller on December 5, 2014 4 comments

Editors note: Kevin sent a personal letter to the community today, and after reading it I asked permission to reprint it here. He agreed 🙂

As the CEO and custodian of LiveCode I believe passionately in a world where everyone can create apps. We’ve worked hard on finding ways to empower more of you to be able to build the app of your dreams. We’ve enjoyed a great deal of success over the years, doubling the interest and uptake of computer science courses wherever we’ve been adopted, and helping to transform many budding new coders into entrepreneurs running businesses small and large. I’d like to express a heartfelt thank you for your support over the years, not least with our hugely successful crowd funding campaigns and open source initiative. We couldn’t have done it without you.

We know LiveCode is the easiest, most productive way to build an app. But if I’m honest, we’ve always found it challenging to get a new user over the initial learning curve. After all, even the English-based LiveCode language still has vocabulary and concepts that need to be understood. And as easy as it is, like learning anything worthwhile – whether a language, an instrument or a sport, it requires some effort.

As CEO I’ve come to be very familiar with a pattern. A new user starts using our platform. For the first few days they orientate themselves. Ask a lot of questions. Scratch their heads. A few more days in and something clicks. The lightbulb moment occurs. We know, from all sorts of feedback from tens of thousands of users, that once you “get it”, once you get over that initial hump and have your “aha” moment, you never look back. You love LiveCode. You discover new horizons and are able to create things you never thought you could. The problem we’ve encountered has been that far too many people don’t make it through those first few days. Until now.

We’ve been searching for the right path for you, our audience, to get quickly and easily into coding with LiveCode and creating apps. We’ve tried a number of different approaches, with varying success. We’ve created academies, we’ve run summer schools, we’ve got involved with the Hour of Code initiative. Each has been successful to an extent, but we’ve been searching for ways to make it even easier.

That’s why I’m so very excited about our new Create it with LiveCode Course. 

Why is this course so different? Well firstly, it’s results based. You don’t learn theory, you learn to do a specific thing, and then start to gain understanding on how and why it worked like that. Secondly, it’s focused on modern mobile apps. You’ll learn transferable skills (that you can apply to the desktop and server too) but the focus is squarely on mobile. Thirdly, you’re learning to build apps that you already know. We’ll show you how to create perfect replicas of the apps that already ship on your phone. That way you’ll know when you’ve got it right. You’ll know how to do everything you need to do to create a successful app, such as access all the sensors on a device. If you can build these apps – the same ones the pro’s build – you’ll be able to build anything. Fourthly, we reveal one of the best kept secrets of the LiveCode environment – how to use it to seamlessly integrate cloud with your apps in a way no other language can approach. Next, we focus on not just the process of building an app but also everything else you need to know about the apps business, doing market research, promotion and marketing.

But most importantly of all, the thing that really convinced me, that made me go wow, yes, I have to get this course into the hands of potential coders everywhere, is the proven results. I saw the figures. 93% of students who took this course, were able to build their app at the end of it. And these were students with absolutely no past experience whatsoever. Impressive validation. If you go through this course, and put in the work and the hours, you will be able to build your app. We’re so confident of that we guarantee it. If you follow the course and can’t build the app you want at the end we’ll give you your money back. It’s as simple as that.

If you want to read more about the story of how this course came about, check out my blog post here.

Ways to Get Involved

This is far more than just a new course, its a massive opportunity to take the next step in delivering on our vision that everyone can create apps. If you believe in that vision then I’d like to ask for your support. Whether you’re just starting out or you’re an existing power user, there are so many ways to get involved. Here are some of the top ones.

Hour of Code

As you may be aware, the 8th to the 14th of December is CS Education Week. There’s been a lot of talk over the last year or so about the “Hour of Code” initiative. The world has woken up to what we’ve known all along – that coding is the new literacy, that everyone should be able to do it. We’ll be participating in the hour of code by making available the very first week of our Create it Course for free.

You can take part in the live webinar on the 11th of December at 10AM PST. 

Bring your relatives, bring your friends, bring your neighbors, bring your taxi driver, bring anyone else you can!

We’re excited about the Hour of Code but we know that while an hour is a great starting point, it isn’t enough by itself. The Create it Course is a great next step. We bridge the gap between that initial hour and becoming a professional coder. Learn more about the course here

Affiliate Program – Spread the Word!

If you’re an existing LiveCoder who would like to help spread the word, we’ve set up an affiliate program so you can support our vision and get rewarded. We invite you to evangelize LiveCode and the Create it Course. You can earn 25% of every sale you make to a  new LiveCoder. Feature the platform you know and love on your website, get posters you can put in shop windows, get a QR code to pass out, and earn credit every time someone signs up as a result. Email us at support@livecode.com to get started!

The Perfect Gift

For the first time ever, we invite you to give the gift of a new skill that will last a lifetime this Christmas. The Create it Course is battle tested on people with only basic computer skills, and no coding at all. This course is suitable for anyone aged 13+. This is a real opportunity to spread the deep digital literacy you’ve grown to know and love with LiveCode to someone else, a son or daughter, a grandparent or friend, anyone you think would appreciate it.

Not only do we cover everything you need to build apps but we’re bringing in business experts to walk you through the process of building a successful business around an app. Plus we have a great contest with prizes that include exposure for your app and a trip to the LiveCode World Conference in 2015. 

As a reward back to you we invite you to take the course yourself for free. This means you have a fantastic opportunity to mentor your nominee, and help them through their LiveCode journey. To give Create it with LiveCode as a gift, check the “this is a gift” box next to the purchase button, hereWe’ll send you a gift certificate you can print and instructions for full access to the course.

We hope you’ll get involved. Sign up now to get the first lesson in this course free and participate in Hour of Code next week. Give the course as a gift. Sign up as an affiliate. Or get the course if you haven’t already. Remember places are limited.

Thanks so much for all your support. 

Kind Regards,

Kevin Miller

LiveCode CEO  

read more
Kevin MillerHave Your Eureka Moment with LiveCode

From Fibonacci to Dr Seuss

by Hanson Schmidt-Cornelius on December 4, 2014 1 comment


blog-text

If you were a Kool-Aid kid then chance has it you are familiar with Dr Seuss and the bizarre, illogical language he uses in his books. What a wonderful mind that can think outside of the box in such a beautifully unconventional, educational and humorous fashion. How could one possibly dream up sentences like: “One fish two fish red fish blue fish…”? Especially as this is not your typical every day level of conversation. 

In this blog I demonstrate how computers can assist us in constructing sentences with similarly bizarre meanings. 

 As hardware has become more powerful and the algorithms explored have become more advanced, computers have been shown to mimic limited reasoning abilities that are most often associated with intelligent beings. I know I am touching on a controversial area here, and I am steering clear of suggestions of artificial intelligence or artificial self-awareness. I make a short reference to the Turing Test here, for the interested reader. This test assesses if a computer can convincingly mimic or simulate the communicative responses of a human being. 

It would takes a bit more effort to implement an algorithm that is worthy of being entered into a Turing Test than we can cover here, but we will be looking at one computational aspect that may well be part of a larger solution. 

If you read our blogs on a regular basis you will know that we have touched on different ways of implementing number sequence generators in blog “Recursion for Runaways“. We are building on the concepts outlined there to create a Natural Language Sentence Generator. 

Before we can get our hands dirty with a bit of LiveCode, we need to take a step back and understand some of the basics that underlie the English language. 

If you are starting to get a déjà vu experience of some long forgotten classes at school, do not worry. We are only scratching the surface of the topics involved, leaving you to explore the relevant fields in more depth at your leisure.  

According to the global language monitor, the English language passed the 1 Million Word mark on June 10, 2009 with 14.7 new words being added every day. Our application is not going to utilize all of these words, in fact we are only going to use a very small subset of these words to build our Natural Language Generator. But in order to utilize any number of words we need to understand how groups of words are arranged in the English language. 

There are eight “Parts of Speech” in the English language that are used to group kinds of words together. These parts are: articles, nouns, adjectives, verbs, adverbs, prepositions, pronouns, conjunctions and interjections. The order by which these “Parts of Speech” are arranged in sentences is determined by rules. For example, a very basic sentence can consist of an article, a noun and a verb, arranged in that order: 

   “A man walks.” 

or 

   “The cat sleeps.” 

 By interchanging the articles, nouns and verbs you can create a large arrangement of sentences with different meanings. From a coding point of view we may store the words in some kind of storage mechanism, for example variables: 

    article = “A,The” 

   noun = “man,cat” 

   verb = “walks,sleeps”  

This could form part of a word database that may allow us to create the two sentences shown, but it would also allow you to create further new sentences, for example: 

   “The man sleeps.” 

   “The cat walks.” 

   “A cat walks.” 

In order to build the English Language Generator we use a database of words, similar to the ones used in the examples shown here. Randomly picking words from the “Part of Speech” entries and placing them in the “article, noun, verb” order is then a perfectly workable approach, but this arrangement would limit our expressive creativity somewhat and probably be quite boring after a while. What we need is some formalism or grammar that allows us to present and order the words in a more flexible fashion. This would allow us to only make changes to the grammar in order to control how the words are ordered. 

We use an array as a database for both the words and the grammar rules and call this database “DCG”:  

    local DCG 

We then add the rule to the database that we used to create the aforementioned sentences:  

   put “-art -n -v” into DCG[“-s”] 

 The tokens are “-art” (article), “-n” (noun) and “-v” (verb) for a sentence “-s”.  

Next we populate the database with words. This time we add a few more words, giving us a bit more freedom to create sentences: 

 

put “the,a” into DCG[“-art”]

 put “man,woman,child,cat,dog,pie” into DCG[“-n”]

 put “walks,eats,combs,cooks” into DCG[“-v”]

Using our rule and understanding of how basic sentences are constructed in the English language, we can now create sentences like the ones we have already discussed. With the word database shown here, and the basic sentence rule, we can create a total of 48 unique sentences. 

Now let us look at how LiveCode can take this kind of database and convert the content into sentences: 

   function evaluateSegment pSegment 

      repeat for each word tItem in pSegment 

         if tItem begins with “-” then 

            put evaluateSegment (item random(the number of items in DCG[tItem]) of DCG[tItem]) after tResult 

         else 

            put tItem & space after tResult 

        end if 

     end repeat 

     return tResult 

   end evaluateSegment 

 Yes, that is it. These ten lines of code are our English Language Generator. It processes the database and randomly selects words to create sentences that are grammatically correct, based on the grammar rules we presented. If you look closely you can see that this function is recursive. The recursive design allows us to create this compact implementation. It also gives us powerful means by which a more complex grammar can be interpreted and processed. 

 You can put this generator together by creating a button and adding the following code to the button script: 

local DCG  

on mouseUp 

   // Grammar Rules 

   put “-art -n -v” into DCG[“-s”] 

   // Word Database 

   put “the,a” into DCG[“-art”] 

   put “man,woman,child,cat,dog,pie” into DCG[“-n”] 

   put “walks,eats,combs,cooks” into DCG[“-v”] 

   // Create Sentence 

   put evaluateSegment (“-s”) 

end mouseUp 

function evaluateSegment pSegment 

   repeat for each word tItem in pSegment 

      if tItem begins with “-” then 

         put evaluateSegment (item random(the number of items in DCG[tItem]) of DCG[tItem]) after tResult 

      else 

         put tItem & space after tResult 

      end if 

   end repeat 

   return tResult 

end evaluateSegment 

This script creates the database each time you hit the button, allowing you to update the entries and apply them for each run. This code opens the message box and displays a sentence. 

Okay nice, we can randomly create sentences, but as you can see, this blog has not quite reached the end yet. Let us now move on to creating sentences with a bit more complexity and start to utilize the recursive nature of the “evaluateSegment” function. 

In order to update your code and implement the following changes you only have to replace the code in the // Grammar Rules and // Word Database sections of your “mouseUp” handler.  

First we update the // Grammar Rules and add the concept of a “noun phrase” (-np):  

   put “-np -v” into DCG[“-s”] 

   put “-art -n” into DCG[“-np”] 

 Fundamentally, this logic generates exactly the same sentences as with the rule we used earlier. The “-art -n” part of the sentence rule has been replace with a “noun phrase” part that itself defines “-art -n”. This means that “evaluateSegment” has to complete the “-np” rule before it can complete the “-s” rule. 

Now why are we creating something more complicated when the simple sentence rule was sufficient? 

Well, this new representation allows us to expand the grammar even further. We can now also add a “verb phrase” (-vp) to our grammar replacing the // Grammar Rules with the following syntax: 

   put “-np -vp” into DCG[“-s”] 

   put “-art -n” into DCG[“-np”] 

   put “-v -np,-v” into DCG[“-vp”] 

 A “verb phrase” can be a verb, as with our original grammar, but it can now also be a verb and a “noun phrase”, which in turn is an article, followed by noun. So what kind of sentences does this new grammar give us? It produces the same sentences as before but can also generate more complex sentences, such as:  

   “A man walks a dog.” 

or 

    “The child eats a pie.” 

We are now getting to a point where the grammar can use different numbers of words to construct English sentences. That is where recursion is in its element. 

This is progress, but let us look at even more complex constructs that can create sentences with thousands of words. – Meet “conjunctions”. Conjunctions are words that bind sentences together.  

For the next step we update the grammar rules again and also add some more words to our word database. Let us start with the // Grammar Rules first and replace them with: 

   put “-np -vp,-s -conj -s” into DCG[“-s”] 

   put “-art -n” into DCG[“-np”] 

   put “-v -np,-v” into DCG[“-vp”] 

Essentially we are now allowing sentences to be constructed as before, but we are also creating sentences that are joined by a conjunction.  

The // Word Database is updated by adding the following words as conjunctions: 

    put “and,or,but,so,because,although” into DCG[“-conj”] 

We now have a grammar that has the potential to generate massive sentences. This is because the grammar can join an arbitrary number of sentences through conjunctions. 

So what can we expect to be generated after this update? 

We can expect sentences like the following: 

   “A man eats the pie because the dog cooks.” 

   “A cat cooks so the woman eats.” 

Now these make sense to a degree but may not reflect everyday situations. We can also expect a lot of very different sentences with varying lengths that are total gibberish. In fact I have generated sentences that are several times longer than this blog post and at times even hit the recursion limit. It is natural that we sometimes hit that limit as we do not set any restriction on the length of sentence that can be generated. 

You will probably find that only a very few of the sentence generated make any sense at all. So have we created an English Language Generator or is this maybe more a “Dr Seuss quote generator”? 

Seeing how easy it is to string words together in a grammatically concise way is nice, but adding meaning to what they represent is maybe a skill best left to those with a unique awareness and understanding of themselves and the environment they live in, or as René Descartes may have put it: “Cogito ergo sum”. 

The English grammar is certainly more complex than I let on in this blog, but you now have a basic LiveCode framework to build a language generator with a lot more complex grammatical constructs. Try expanding the word database and the grammar rules to update and create your own language generator. If you are a linguist or know other languages, why not see if you can get some meaning out of this code in a different language.

read more
Hanson Schmidt-CorneliusFrom Fibonacci to Dr Seuss

Breaking Into the App Business

by Kevin Miller on November 26, 2014 10 comments

What do you think about getting into the app business? Here are things we’ve heard again and again. Are any of these you?

  • “Why is it so difficult to build apps?”
  • “I’ve tried to learn in the past but never been able to build the app I wanted?”
  • “Can I really do it?”
  • “Its such a crowded space. How can I stand out?”

LiveCode has earned us a place in the top 100 Kickstarter campaigns of all time (top 0.1%) last year.

We’ve been featured in hundreds of articles and have customers in over 120 countries.

Yet we haven’t been satisfied. We’ve been searching for the perfect way to unlock the dream of anyone who has an app idea, and to empower everyone who wants to get into the app business to become a runaway success.

We’ve tried many different methods. And we’ve found something so successful we just had to share it with you.

How NOT To Learn

I’ve seen courses that attempt to teach coding in an hour. No matter how easy they make it, creating apps is too involved to build a meaningful app in that time.

We’ve seen courses that teach by going through the principles of computer science. You can learn this way, but its hard fighting to understand abstract concepts and then apply them. The material is dry and we’ve watched again and again as people struggle to go from concepts to building their dream app.

Most courses ignore the business side. Yet the fact is that technology matters and business matters equally. You need to become a master of both to make your app a success in the crowded app store. The millions of apps in the stores represent a tremendous opportunity. But only the top apps are successful.

Some courses teach languages and methods that are far more complex than they need to be. There are a multitude of languages available for app developers and most of them are so complex and inaccessible that you’ll quickly give up if you don’t have a degree in computer science.

There are courses that teach little portions of building an app. It takes a lot of hard effort to put those concepts together when it comes to apply that knowledge and build your own. Lots of people drop out when they can’t connect together the ideas to build their own app when the time comes.

Then there are the approaches that focus on pure point and click tools. “No coding needed.” Only as soon as your app has any degree of functionality, any of the features that will actually make it stand out and be competitive, you’ll hit the wall with nowhere to go. How many of these apps do you see doing well in the app store?

Finally, we’ve seen course after course where the learning curve is just too steep. The material starts easy but quickly gets to a depth where you can’t follow it.

None of these methods work. At best they lead to an underwhelming app that gets lost in the store, at worst to frustration and giving up.

The Easy Way To Break Into the App Business

Instead of learning complicated dry abstract concepts and a fiendishly difficult language, the secret is to learn step-by-step, starting from what you already know.

Here is how it works.

We show you how to build the apps you already know and use. Imitation is a great way to learn. You can see if you’ve got it right every step of the way. To become a pro, start by imitating the pros. Once you can make these apps you can make anything!

We partner with you to show you how to build a fabulous business around your app. Experts who run multi-million dollar app business will share with you their secrets on how to do insightful market research, create a website that sells, landing page design, content marketing and using social media for business.

We provide you with a tool that lets you drag-drop objects, code in English and build your app just once then deploy it to all the app stores including iOS, Android and optionally, Windows, Mac and Linux desktops.

Plus you get this FREE Bonus: enter your app into our App Contest. Top prize includes an all expenses trip to LiveCode World late in 2015.

Where did this new course idea come from?

Sometimes the best ideas have the most surprising beginnings.

Our friends at Digital Pomegranate originally developed this course to boost economic development in a small developing country – Armenia. Now you may be wondering why that’s relevant to you?!

Well, if you think about it, this is one of the most challenging environments to show people how to break into the app business. And if they can do it, so can you. Let me tell you the story…

Many of the people who signed up had barely used a computer. Even more had no past experience with programming of any sort. Nor did they have experience creating a business.

The Digital Pomegranate team did their homework, looking high and low for a platform and language that would be accessible enough for them to teach. They tried many different alternatives none of which were good enough. Then they discovered LiveCode, our platform that makes it easy to create apps for multiple different devices.

But the discovery of LiveCode alone wasn’t enough. The teaching had to be accessible enough to people who hadn’t barely even used a computer. And it had to fit into a part time course over 16 weeks.

The team tested multiple approaches:

One class got the traditional computer science route, of teaching program structure, concepts and principles. Even though the class was highly practical, 40% of the class dropped out and only 2 people were able to build their own app at the end!

The other class tried a different approach. They taught the class how to build the apps that they already had on their phone. All the same concepts were taught but only as they came up in each app. The students could immediately see if they had got it right. The results were incredible. 93% of the students were able to build their own app at the end of the class.

Astonishing, isn’t it? Some of the graduates from this course even went on to win a coding Hackathon against stiff competition.

Sharing the Love

I was blown away when I saw the success this new training program was having. I could not wait to bring it to a wider audience. We’ve partnered up with Digital Pomegranate, worked over the materials, added our experienced tech and training staff and we’re bringing you this course. I can’t wait to see the results. I truly believe this is a door opener and will take us closer to our aspiration that

Everyone Can Create Apps.

Make the UI for the Calculator App Today

As a special treat, here is a sneak peak of one of the early lessons. See what you think. Let me know.

read more
Kevin MillerBreaking Into the App Business

LiveCode Magic

by Jana Doughty on November 26, 2014 No comments

Disneyland:  Magic.  Wonder.  Splendor.  Mickey Mouse.

Working at LiveCode is what I imagine it would be like to work at Disneyland.

But really.

Walt Disney created a world that was ever-evolving and packed with innovation.  Everything was possible and it was always a treat to visit the park and see what the Imagineers had thought of next.

It’s the same with the tech world.  It’s always changing and morphing and stretching to become what it’s never been before and, perhaps, what it never thought it could be.

This is special to me.  It’s magic.

It’s also inviting.  As a 20-something American who fell into marketing by mistake (I was acting in New York City of all things and started doing some marketing outreach for a local business just to pay the bills), I never thought I’d be working with a company in the heart of Edinburgh where magic is always a possibility and we always seem to be on the brink of revealing the next big thing.

I imagine it’s much what Steve Jobs felt like in pushing Apple to be its best.  Always reaching for the new, the innovative, the cutting edge.  When they released the iPad, I was skeptical because I didn’t know why anyone would need a “pad” when they had a laptop with a keyboard, but the next thing I knew, I had an iPad – and so did everyone around me.  He made me need something I didn’t think I even wanted.  I can’t go anywhere without my iPad.

I think that’s what technology invites us to participate in.  To engage in what we don’t think we even want and to find out we actually need it.  We discover it is valuable and efficient and exceptionally fun to embrace the new.

And technology permeates everything.  From hospitals to schools to businesses to our homes – it’s even something we teach our kids.  The skillset is invaluable.

I suppose that’s why it’s been such a treat for me to work on the marketing campaigns for LiveCode.  Because if there’s a product that can teach everyone to code and enable everyone to create apps, I think we’re on to something that we need when we didn’t even think we wanted it.  I think we’ve found the next big thing.

LiveCodeMagic

read more
Jana DoughtyLiveCode Magic