Blog

How to Bake an App

by Neil Roger on April 27, 2015 , 2 comments

nb1

There are many comparisons out there that try to explain what programming is. These range from building things with Lego to bringing up a child, but there is one that I like to use and it’s:

Programming is Like Baking Cakes!

Let me explain…

read more
Neil RogerHow to Bake an App

The Evolution of Dragons

by Ian Macphail on April 22, 2015 , No comments

One of the new features introduced in the upcoming LiveCode version 8 release is the ability to create self-contained custom controls called widgets. These widgets are written in a variant of LiveCode called LiveCode Builder (LCB) and have full control over their appearance and behaviour.

In a similar way to Hanson’s previous blog post on fractals, I’ll be showing you how to draw a fractal shape. However this time, I’ll show you how to do it with a custom widget control that can draw the fractal for us.

dragon

read more
Ian MacphailThe Evolution of Dragons

How to be Hands On

by Neal Taylor on April 17, 2015 , No comments

Success is sweet. Neal Taylor and Dr. Jeroen Lichtenauer certainly think so. They just completed their first LiveCode App! It’s Hands On Turkish, an EU-funded Business Turkish course that is now available for smartphones on the Play and iOS App Stores. We asked them to share a little bit about their LiveCode experience. Here’s what they said: 

Where did you get your app idea?

NT (Neal Taylor, Project Coordinator): Basically, a good friend who was trying to start a business lost his entire starting stock in Turkey due to “misunderstandings.” Dismayed by his plight, we wondered if we could do something about it and make sure this doesn’t happen to European entrepreneurs. We are a consortium of developers, programmers, and linguists and we have previously developed a range of eLearning resources, particularly for language learning. We noticed that, despite the growing importance of Turkey on the world stage, there are very few decent Turkish language learning resources ­that will enable learners to prepare themselves culturally and linguistically for dealing in Turkey or with Turkish businesses. As a result, we put together a fine proposal to develop a Turkish language course with a vocational focus and a clear emphasis on culture geared towards an internationally recognised standard and, most importantly, made available on a wide range of devices. The European Union, through the UK National Agency, funded this project. This is quite a significant development since, for the first time, the European Union recognises the importance of Turkey and is now actively making strategic decisions accordingly. The aim of the project is, therefore, to give learners a good understanding of the Turkish language and culture (considered ‘high context’), thereby improving their chances for success and mitigating any costly errors (unlike our good friend!) when doing business in Turkey.

How did you discover LiveCode?

NT: We started looking around for solutions to make our development efficient, scalable, and versatile. We are a relatively small team and, due to the nature of our project (i.e. simultaneously developing content and tech), we cannot dedicate all our resources to programming, so we needed one solution to cater for our time constraints and the team’s capacity. LiveCode seemed like a suitable solution, so we carefully followed LiveCode’s progression for quite awhile and then tried the open source version. After doing some trials, we were convinced … so we continued!

   Turkish_iPhone_App

How did LiveCode help you to complete your app?

NT: LiveCode was flexible enough to create the iPhone and Android apps for a wide range of screen sizes.

JL (Dr Jeroen Lichtenauer, Programmer and Partner): I had never programmed mobile apps before and LiveCode gave me the confidence that it was going to be feasible to at least make a relatively straightforward application within the time available for this project and without having to worry about learning multiple languages at once or having to take into account all the possible OS versions, devices, and screen sizes out there.

What did you learn in the process of making your app?

JL: While using LiveCode, I kept discovering more advanced possibilities, such as creating, shaping, formatting, programming, and deleting any kind of object from code. This limitless flexibility allowed us to have our app literally build itself at run time, making use of the same xml files that we were already using for our online course software, but without having the app look or feel like a web interface. Adding course content to our mobile app is now almost as simple as just copying some files, which allowed me to spend more time on creating a better user experience with all the possibilities that mobile devices have to offer.

hipster modern stylish blonde man with phone

What will you do with the app now that it’s complete?

NT: We are still refining the app (layout, design functions) and continuously adding more Turkish language content and more activities.

JL: We will be reporting any bugs we find when building our app with the developer preview versions of LiveCode 8 in order to use LiveCode 8′s widgets functionality and enable our exercises with microphone recording on Android devices, too.

What would you tell a first­time LiveCode user?

JL: The possibility to drag­-and-­drop new objects into an app, and to let an app scale automatically to all screen sizes are both wonderful features of Livecode for absolute beginners. However, if you already have some basic programming skills, it might be worth learning how to create, format and scale objects from code as soon as possible, allowing you to create much more flexible apps that will work and look perfect on any screen size and aspect ratio.

newturkishlogo01

Will you be building any other apps? If so, what kinds of apps?

NT: Yes! We have built quite a flexible system from the ground up, so there is no reason why we cannot develop more language learning apps.

JL: My background is in computer vision and I have long wished to use mobile devices for building some augmented reality applications. I am hoping that LiveCode 8 may bring that wish closer to reality by allowing me to program the data processing algorithms efficiently in native device code while also having the ease and flexibility of LiveCode to quickly make a solid user interface that will work well on all devices.

Anything else you’d like to add?

NT: During my initial discussions with the LiveCode Team, I was very encouraged by their supportive responses and enthusiasm. I am looking forward to seeing the HTML5 release.

JL: I’m very happy and encouraged by the progress that has been made by LiveCode over the last two years. Our app wouldn’t have been possible in its current form if it wasn’t for the many improvements made to LiveCode since our project has started. But it is not only important that an application development software such as LiveCode can currently deliver what we need it to do now, but also that it continues to adapt to new technologies that will be coming out in the near and far future. The enthusiasm, the high frequency of updates, the quick response to bug reports, and the initiative to include HTML 5 support have indeed given me a lot of confidence in our choice for LiveCode.

llp-logo

read more
Neal TaylorHow to be Hands On

How LiveCode Got Me From Idea to App

by Sean Miller on April 14, 2015 , 3 comments

For those of you who are convinced you’ve got a great idea for an app but may be intimidated by the prospect of learning to code, I’d like to share with you my experience with LiveCode. It’s enabled me to overcome my fear of learning to code. LiveCode has also helped give me the confidence to strike out on my own as an entrepreneur.

I’m an academic by trade. In 2010, I earned a PhD in English from the University of London. Shortly after graduating, I managed to land a two-year postdoctoral research fellowship at Nanyang Technological University in Singapore. While there, I published my doctoral thesis on the cultural currency of string theory as a scientific imaginary with the University of Michigan Press.

As you may know, the academic job market is ridiculously competitive. When the fellowship ended, like most newly minted PhDs, I was unable to find a permanent academic post. So I moved back to Portland, Oregon with my family and got a job as a software trainer for a regional hospital network. It wasn’t exactly the most exciting work, but it paid the rent. If you’re familiar with the dysfunctional healthcare system here in America, then you can appreciate how valuable it was to have decent health coverage.

But I’ve always had the entrepreneurial urge. Toiling away in a big bureaucracy only exacerbated that itch. Last spring, while daydreaming at my day job, I had an idea for an app. A cross between an Oxford-style tutorial and a Choose Your Own Adventure book, the app would teach high school students how to read with critical acumen. The benefits: not only would it raise their scores on the standardized exams they have to take to get into college here in the States, it would give them the confidence they need to conquer the difficult reading they’d face at university. Inspired by a passage from the great French literary critic Roland Barthes, I called the app Readerly.

Shopping around for a suitable tool to build Readerly, nothing seemed to fit the bill. Objective-C is too arcane. So is Java. They’re also bound to their operating systems. And JavaScript, while essential for the web, isn’t designed for mobile apps. On the other end of the spectrum, development platforms like PhoneGap and Appy Pie are too limited in their capabilities.

Then I lucked into the right keywords to land on LiveCode’s home page. It didn’t take much convincing to fork over the not insignificant sum of 500 bucks to get a commercial license.  (That price has since gone down to the affordable $29 a month.) I also took the course bundled with the license. But with all my other commitments, I didn’t have much time to spend on mounting what felt like a steep learning curve, however gentler than other programming languages.

So I hired the one programmer I could find on oDesk that worked with LiveCode.

Together, we built a prototype of Readerly. Genie Mae Lorena Lolo’s hourly rate was very reasonable. And she did a good job with the app. But the fact that she lived halfway around the planet–in the Philippines–made progress slow. And besides, oDesk’s Work Diary creeped me out. I didn’t relish the role of Big Brother.

I realized that if I was really going to make this app a reality, I’d have to roll up my sleeves and take ownership of the code–as well as my own professional destiny. I quit my job (thank you, Affordable Care Act) and dedicated myself full-time to starting, along with my wife, a business: Ivy League Edge. Ivy League Edge is dedicated to helping high school students get into their first-choice college–and succeeding academically when they get there. Using Genie’s code as a model, in 3 weeks I successfully rebuilt Readerly from scratch.

Early this year, I got the idea for another, complementary app, called Foyl. Foyl would help high school students ace their college interviews. It’d be the calling card for Ivy League Edge. We’d plan to offer Foyl for free as a way of getting exposure, building credibility, and distinguishing ourselves in a crowded marketplace.

When I shared the idea for the new app with my wife, I blithely told her it’d take a week or so to pound out a minimum viable product. In spite of all the pesky obstacles that define the coding process, my persistence paid off. Eight weeks later, I’m happy to say that Foyl is now in beta testing on iTunes Connect.

LiveCode enthusiasts can probably guess why it took so long. It might very well have taken an experienced LiveCoder a week to whip Foyl together. But I had to wrap my head around basic functionality like SQL queries, data grids, mobile controls, and get and post commands. (A shout-out to Monte Goulding is in order here for his nifty extensions mergMicrophone and mergSocial.) Forgetting to set the item delimiter got me a bazillion times. Along with the put and set commands, repeat loops are the bread-and-butter of LiveCoding, but they can be tricky to get just right.

Still, when it comes to app development, even eight weeks is pretty darn fast. Especially when the payoff is one code base for iOS, Android, Mac, Windows, Linux, and soon, HTML5. As Todd Fabacher, the knowledgeable and admirably patient leader of the Create It With LiveCode course, is fond of saying, for its users, LiveCode’s short development cycle is a “tremendous competitive advantage.”

Thanks to LiveCode, after twenty years of procrastination, it’s gratifying to finally say I know how to code.

Foyl will be available in the Apple App Store at the end of April.

Now it’s on to finishing Readerly.

Dr. Sean Miller

Co-founder, Ivy League Edge

http://ivyleagueedge.com

read more
Sean MillerHow LiveCode Got Me From Idea to App

Testing And Building LiveCode Builder With Tests

by Peter Brett on April 9, 2015 , 1 comment

We recently launched the first developer preview (DP) release of LiveCode 8, which provides a first look at LiveCode’s new “LiveCode Builder” language. This is a powerful new compiled language which can be used to quickly and efficiently develop new controls and code libraries for use in LiveCode apps.

I’d like to tell you about some of the techniques we’ve been using to make sure that LiveCode Builder is robust and reliable.

Rigorous Testing

During the LiveCode Builder development process, we’ve had several members of the Engine Development Team working simultaneously on different aspects of the LiveCode Builder platform. We’ve had people developing new widgets using LiveCode Builder, but at the same time major changes and improvements to the LiveCode Builder core library and compiler itself have been taking place.

To help us ensure that compiler changes don’t break the core library, and that library changes don’t break our in-house widgets, we have been doing a lot of testing. This is with a “unit testing” approach: each unit test deals with a very small, clearly-defined element of the core library. At the moment we have 556 individual unit tests.

One of the things that’s made the unit tests so effective is that they are written in LiveCode Builder — and even the test harness (the program that runs each of the tests and checks their output) is written in LiveCode Builder, too. Since the test harness is a fairly non-trivial program which makes use of some of LiveCode Builder’s more advanced capabilities, it gives the compiler and runtime environment a pretty good workout and lets us spot issues early.

We’ve even added some syntax to the language to make writing unit tests easier. Here’s a snippet of some unit tests for operations on “List” values:

public handler TestPush()
	variable tList
	put ["x", 1, true] into tList

	push "y" onto tList
	test "push" when the tail of tList is "y"

	push "z" onto front of tList
	test "push front" when the head of tList is "z"

	push "w" onto back of tList
	test "push back" when the tail of tList is "w"

	test "push (result)" when tList is ["z", "x", 1, true, "y", "w"]
end handler

The “test” syntax lets us quickly and efficiently associate test descriptions (e.g. “”empty (empty list)””) with conditions (e.g. “tList is empty”). Each “test” generates a line of log output in Test Anything Protocol format. For example, part of the output of the “List” tests looks like this:

### stdlib/list TestEmpty 

ok - empty (empty)
ok - empty (empty list)
ok - empty (empty literal)
ok - empty (no elements)

### stdlib/list TestPush 

ok - push
ok - push front
ok - push back
ok - push (result)

The test harness parses all of the log output from all of the tests to generate a summary. For example, as of our latest build the summary looks like:

================================================================
All 556 tests behaved as expected
	10 expected failures
	1 skipped
================================================================

We have the ability to mark tests as expected to fail by writing “broken test” instead of “test”. For example, the 10 expected failures that we currently report are because LiveCode Builder isn’t yet able to tell the difference between integers and real numbers. We can also “skip test” — this is used for tests that are only relevant on specific platforms.

Continuous Integration

Tests are only any good if you run them — so over the last couple of months we’ve been using the Travis continuous integration service to build LiveCode and run all of the LiveCode Builder unit tests for every single change that we make. This has been absolutely invaluable for catching problems before they occur.

At the moment, we only do continuous integration testing for the x86-64 Linux platform. However, it’s been so successful that we’re soon going to move to an in-house solution that’ll let us add Windows and Android support, followed shortly by support for OS X and iOS.

Building on tests

Unit tests have been very useful for us, so we want to bring the benefits of unit testing to everyone writing LiveCode Builder extensions — both widgets and libraries. We currently plan to add easy-to-use unit testing functions to the IDE’s extension builder that’ll use exactly the same “test” syntax that we use for the core library unit tests.

Adding unit tests and running them as part of our continuous integration testing has made a really big impact on the quality of LiveCode Builder and the LiveCode 8 DP 1 release. This is just one of a number of measures we’re taking to further improve our quality assurance processes. I’m sure you’ll be hearing about some of the other steps we’re taking in the future.

read more
Peter BrettTesting And Building LiveCode Builder With Tests

Top Ten Tips for Great Customer Service

by Heather Laine on April 7, 2015 , No comments

customerservice

1. Listen carefully. This is probably the number one,­ which is why I’ve put it as number one! Really listen. Read that email three times and be sure you’ve understood it. If you don’t understand it, ask the customer to explain it again. Feed back to them on the phone “So what you are saying is, that pink elephant sprouted wings, but it was completely unable to jump over that tall building?” Use the same words and phrases the customer used, to ensure clear communication. Make sure you answer every point raised, even if the answer is “I don’t know” or “I can’t answer that”.

read more
Heather LaineTop Ten Tips for Great Customer Service

Why Being at the UN is More Empowering on April 2nd

by Wendy Glavin on April 6, 2015 , No comments

photo (47) (1)

Yesterday, I had the great pleasure of attending The UN 2015 World Awareness Autism Day Event “Employment: The Autism Advantage.” Todd Fabacher and I attended in response to the UN’s Call to Action for companies to offer vocational training and employment for individuals on the autism spectrum.

While I sat in the General Assembly listening to speeches by Ban Ki-Moon, Secretary-General of the United Nations, Keynote Jack Markell, Governor of Delaware, and other representatives from the U.S. Counsel for International Business, Autism Europe, Hewlett-Packard, and young adults with autism, I was moved.

Throughout the day, I heard so many speak about the need for persons with special needs to be treated equally and that diversity should be viewed as a competitive advantage in our innovative economy.

On April 2, LiveCode and its partners launched its initiative to teach and mentor 3,000 individuals with autism to code apps and become professional software developers. As I listened and read through all the enthusiastic tweets, retweets and news coverage of LiveCode’s campaign, I knew we had made a difference.

read more
Wendy GlavinWhy Being at the UN is More Empowering on April 2nd

Empower Individuals With Autism Through Coding

by Jana Doughty on April 2, 2015 , No comments

Our friend, Todd Fabacher, has a son on the autism spectrum. As his son grows closer to adulthood, Todd asked himself what he wants most for his son. The answer? Opportunity.

Todd approached the National Autism Society, Autism Initiatives, and Specialisterne along with LiveCode to create a partnership in which 3,000 young adults on the autism spectrum can learn to code. LiveCode will provide the learning materials. the National Autism Society and other partners will provide the training support.

It’s an honor and a privilege to collaborate with Todd and the leading organizations that work with those on the autism spectrum. You can find out more about the partnership in the video below and share the movement here.

read more
Jana DoughtyEmpower Individuals With Autism Through Coding

LiveCode workshops – learning & coding with others

by Dave Kilroy on March 23, 2015 , 7 comments

Sometimes nothing is better than having someone right beside you showing you how to do something. It’s nice to have someone with whom you can discuss a tricky point or who can observe you making the mistake you weren’t aware you were making.

In other words, sometimes there is nothing better than being around people!

read more
Dave KilroyLiveCode workshops – learning & coding with others

If You Read One Article About Pitching and Selling, Read This One

by Iain Morrison on March 18, 2015 , 1 comment

Developing and selling a commercial app is an entrepreneurial endeavour by any definition of the phrase and, as such, anyone considering app development should read some literature on the subject. I have some experience in entrepreneurship and never one to pass up an opportunity to ramble on about some past event or knowledge I have gained, I thought it would good to bore you with it.

First, step away from the issue of what the app is, how it works, how much it will cost, etc, because first you will probably need to convince others that your business is a good idea. This usually begins with trying to explain that you have identified some problem or total lack of a current product or service in a particular field. Part of this process, even if you have the resources to develop the app from your own funds, is attracting investment.

read more
Iain MorrisonIf You Read One Article About Pitching and Selling, Read This One