The Next Generation: Widgets & Themes

by Kevin Miller on July 8, 2014 45 comments

Watch this video to see me demonstrate a first prototype of the Widgets & Themes project. This is one of the most exciting parts of our entire Next-generation project. We’re now at a stage where it is working well enough that I can show you this first version working. This work has been enabled by all the work we’ve done under the hood over the last year or so.

In this video, I show a prototype widget that displays a PDF, the code that makes it work, then explain the potential for using this feature in a variety of ways to extend LiveCode. Finally I give a brief tour of the first early prototype widget editor, which demonstrates how you will be able to create these widgets yourself and install them into the IDE with a single click.

I hope you enjoy the video!

read more
Kevin MillerThe Next Generation: Widgets & Themes

Multimedia on Mac OS – A quick progress update

by Panagiotis Merakos on July 7, 2014 16 comments

Things are running smoothly regarding the update of the player object. In this post I will briefly describe what has been done so far.

The first step was the refactoring of the MCPlayer related code. Formerly, the MCPlayer class used ifdefs in most functions, based on whether it was using the ‘platform player’, ‘quicktime’, or was on Linux. Now, MCPlayer is split into two classes in separate files (player-legacy.cpp/.h and player-platform.cpp/.h). The former is the pre-platform API version; the latter the platform API version. This made it easier to update the platform-player version to use its own controller.

The next step was to implement a custom controller bar. For the reasons described in the previous blog post for Multimedia on Mac OS, we had to implement our own controller. After some discussion, and some research on the appearance of modern video controllers, we are almost there! Below is a preview of the current, and probably final version.

 playerpurple

 

Because some users may not like this color, we thought it is better to make it customisable. So we added some properties to the player object. In fact, we tied in some existing properties that were not used for the player object. For example, the hiliteColor. For the player object, the hiliteColor is the color of the played area, as well as the color of the volume area in the volume popup window. It is also the color of a button background when this button is clicked. So, if you don’t like the purple color that is set by default, all you have to do is add a new button (or just type in the message box) with the following code:

on mouseUp

set the hiliteColor of player 1 to red 

end mouseUp 

The result is the following:

 playerred 

In the player object, you can also set the foreColor, which is the color of the selected area, i.e. the color of the area between the selection handles. This is dark grey by default.

 player3

 

Modify the code in your button, to change both the hiliteColor and the foreColor: 

on mouseUp

set the hiliteColor of player 1 to127,255,0″

set the foreColor of player 1 to “106,156,56”

end mouseUp

The result is the following:

player4 

Finally, we had to move from Quicktime/QTKit to AVFoundation. This transition is now done, and the new player object seems to work perfectly with the AVFoundation APIs. Some tweaks have still to be done, in order to ensure similar (or at least as similar as possible) behaviour with the old Quicktime/QTKit controller. Next, and final step as far as the player object is concerned, is to test it thoroughly and fix any bugs that may arise.

read more
Panagiotis MerakosMultimedia on Mac OS – A quick progress update

Let’s Bring HTML5 to LiveCode

by Kevin Miller on July 1, 2014 1 comment

Our campaign to add Web Deployment to LiveCode has launched! The aim is to raise enough funds to add deployment to HTML5 to LiveCode’s existing line-up of mobile and desktop platforms. We’ll keep you updated on progress here on this blog throughout the campaign.

Get involved! Help us to make this a huge success and pledge today. Tell all your friends, relatives and any developers you know. Help us to #CompleteLivecode.

Click here to return to the HTML5 Campaign

read more
Kevin MillerLet’s Bring HTML5 to LiveCode

The present and future LiveCode

by Ben Beaumont on June 30, 2014 16 comments

2013 was a big year for the LiveCode technology if not the biggest to date. The Kickstarter campaign allowed us to not only take LiveCode open source, but provided us with the funding we needed to completely refactor the way the LiveCode language was processed internally. You’re starting to see the fruits of that work with LiveCode 7 and transparent Unicode support, but that is just the tip of the iceberg. 2014 looks set to be an even bigger year for the technology with team members being committed to some of the most exciting projects I’ve seen in my 9 years working on the technology.

In the year since the Kickstarter campaign we’ve put out 15 new releases of LiveCode spanning versions 6 and 7. New features include:

  • Core Refactor: Modernise 500,000 lines of code paving the way for another decade of innovation
  • New Graphics Layer: Modernise the graphics to pave the way for ‘Resolution Independence’, ‘Fullscreen Scaling’, ‘Stack Scaling’ and other scheduled projects.
  • Resolution Independence: Apps takes advantage of high DPI displays
  • Fullscreen modes: Apps scale to any device for you with just 1 line of code
  • Stack scaling: Helps you work on your projects on small laptops
  • Unicode: Seamless easy Unicode in any app on any platform
  • Cocoa / CoreText: LiveCode on Mac OS now works with the latest API’s
  • Image Cache: LiveCode apps are now smoother and faster on mobile and desktop
  • OpenSSL: Apps can now be as secure on mobile as they are on desktop
  • Proxy Support / Secure sockets: Your apps can now work seamlessly from behind proxy servers
  • WebKit Browser: New webkit browser helps you make better cross platform apps
  • Integrated Fonts: Apps load and use fonts with no hassle
  • Server Graphics: Create graphics using LiveCode on the server
  • 9 way image stretch: Create skinned apps even more easily

We’re also in the process of finalising a couple of other features on our roadmap which will be out in testing in the coming week or two.

  • Multimedia: We’ve replaced the MacOS video player with the latest API’s (AVFoundation)
  • GDK: LiveCode on Linux now works with modern windowing API’s

Much of the work we’ve completed in the last 12 months was on our public roadmap, but you’ll notice that a number of items were not. With the desktop and mobile platforms constantly evolving we’ve been working hard to deliver on the commitments we made while keeping LiveCode at the cutting edge of cross platform development. So where does that leave us on our journey?

Roadmap

Active

Performance

Open Language

Themes / Widgets

IDE

Regions
LiveCode to use more intelligent region data to reduce the number of pixels rendered.
Awaiting build – LiveCode 6.7 DP5
Effect: 0 – 5x Speedup
Evaluator
Write a new evaluator
Prototype complete
Widget Architecture
LiveCode to have pluggable themed controls that can be written in the LiveCode language by inhouse developers or community members.
Prototype in progress
Widget IDE
Widgets provide an ideal focal point for the new IDE. We’re prototyping a basic IDE to help test and progress the widget prototype. This builds on other IDE prototypes created in the past.
Prototype in progress
Multicore Rendering
LiveCode to use all CPU cores when rendering
Prototype complete
Effect: 2x Speedup
Parser + Specs
Write a new parser
Prototype complete
File Format
New file format to save new controls into stack as well as provide for better versioning system integration
Stack Views *
A stack view in LiveCode will enable us to load stacks as a view and create a single windowed IDE
Multicore Accelerated Rendering
LiveCode to use all cores when generating data for GPU allowing LiveCode to use the GPU by default
Network / Sockets
Use new open language feature to implement
Cross browser player object
Use widget framework to wrap video playback on all platforms into a single object
Full IDE Prototype *
A full prototype of a new IDE based on a solid architecture
Database
Use new open language feature to implement.
Vector Shape Object
Use widget framework to write this control

Performance: We’ve made substantial changes to the graphics architecture in the last 12 months. The core has been replaced with a modern abstraction providing a foundation upon which much of our future tech will be built. However, Resolution Independence has required this library to do work it never had to in the past. A retina display requires the graphics library to render 4 times the number of pixels to the screen. Every pixel takes time to calculate, so the more you have, the longer it takes. This project was added to our roadmap to address the slowdown caused by this increase in pixels. We’ve created a generalised threading library that the engine can use to take advantage of all the cores available on a given system. We’re also looking at ways to reduce the number of pixels LiveCode renders taking advantage of features in our new graphics library. Most of these changes have been prototyped and are now being implemented for release in 6.7 or 6.7.1.

Open Language: With the core refactoring almost complete (LiveCode 7.0) we’ve started to turn our attention to the final aspect of this project which is to open up the language for extension by anyone. We have been prototyping for quite some time now and plans are in place to move this project forward at a rapid pace once LiveCode 7.0 is released. We will complete network, socket and database libraries with easy to use English like syntax as part of the development and testing of this feature. This is currently slated as one half of our next major release, currently imaginatively named “8.0”.

Theme / Widgets: Another important prototype we’ve invested time in is codenamed “Widgets”. Our aim is to provide a means for any LiveCode developer to extend the control set. This builds on “Open Language” making it possible for any developer to extend the language and the UI. While still in its infancy, we are really excited about the results which will make LiveCode 8.0 a groundbreaking release.

We’re looking forward to showing these prototypes at the upcoming conference which we hope will give you a flavour of where the technology is going in 2014/2015. This is going to be another special 12 months for LiveCode!

* These features are reliant on strands 1-3.

Queued

That leaves us with only 2 queued projects. Physics is best implemented using the features in planned for LiveCode 8.0. It will take advantage of the new controls as well as have wonderful English like syntax to power it. The Windows 8 port can take place as soon as engineers are available to work on it. The platform layer underpins the LiveCode 6.7 Cocoa port making this Windows port much easier to tackle.

Physics Engine
Incorporate Box2D into LiveCode along with an animation loop feature.

Windows 8
Port LiveCode to Windows 8 on mobile platforms using the new platform API developed for the Cocoa port.

Summary

We’ve shared at length over the last few years our dreams for the technology and creating a “Next Generation” version of LiveCode. A bold step forward to make LiveCode a mainstream language with awesome tools to make app development efficient and easy. Our vision as a company is to make programming simple. For professionals, that means achieving amazing result with a small team. For those new to programming, it means a chance to learn a skill that we see as vital in the 21st century.

LiveCode’s roots are in Hypercard, a wonderful vision to make programming simple brought to us by Bill Atkinson and his team at Apple well over 20 years ago. We share their vision many years on and in a new technological landscape. The first Kickstarter campaign that you supported enabled us to prepare the LiveCode technology to be opened up to every developer.

After 14 months of hard work we are now starting to see the fruits of our labours. LiveCode 7 is a huge milestone which sees your existing LiveCode projects running on completely new foundations. LiveCode 8 builds on these changes bringing the LiveCode language into the mainstream and providing a way for anyone to extend LiveCode to do exactly what they need.

read more
Ben BeaumontThe present and future LiveCode

BBC Connected Studio – Coding for Teenagers

by Elanor Buchanan on June 24, 2014 11 comments

On Tuesday 17th June we were invited to take part in a BBC initiative called Connected Studio.  This is a BBC initiative for collaborative innovation with some of the best of the UK’s online creatives.  Over the last few years they have run a set of events on a variety of topics including Weather & Travel, The Commonwealth Games and The Natural History Unit, each aiming to develop innovative ideas for digital media output with the resources, experience and power of the BBC behind them.

The event we were invited to take part in was Coding for Teenagers, a day long brainstorming and briefing event taking place across three sites in Salford, Cardiff and Glasgow. The challenge was to “Inspire your people to realise their creative potential through technology”. The UK is currently facing a severe skills shortage in the technology sector and the goal of the day was to come up with ways to encourage and inspire 13-16 year olds to get more involved with technology, in a creative way rather than just as end users, the brief was 

“to create an appealing digital experience with a coding component for teenagers aged 13-16.”

Needless to say we were excited to be invited to take part in such a  fun event with such an important goal, and so in line with the ideas and message behind LiveCode. So on one of the warmest, sunniest mornings of the year Kevin, Ben, Neil and I headed across to Glasgow ready sit inside watching presentations in the dark and coming up with some ideas.

The day started off with an introduction and live link up between the three sites. This was followed by an ideas board and team forming, and some presentations on the research that has been done in this area to help inspire us and point us in the right direction when coming up with ideas.

A lot of the issues that inspired this event are of interest to me. As a female developer I’m in the minority and I think that its important to help teenagers, and in particular girls, realise how varied and creative the work can be. 

The briefing document we were provided with specifically mentioned some of these points.

The Audience

Your challenge is to make sure we inspire not just teenagers in general, but teenage girls aged 13-16 in particular. That’s because only 

18% of computing professionals are women (E-Skills, 2012) and the number of female computer science graduates is down 13% (HESA, 

2013). A study for Nesta (TNS, 2014) suggests girls are less likely to make things using digital technology. They are also twice as unlikely to 

learn about it outside of school. 

Ideally, we’re looking for ideas that appeal to both boys and girls, however, we’re particularly keen to see ideas that appeal to girls. It’s 

always difficult to generalise but here are some insights that could help you understand our audience: 

Constantly connected 

Teenagers stay in constant contact. Unsurprisingly, mobile phones are more important to them than any other device, even TV. Girls are 

particularly prolific communicators; in 2012, 12-15 year old girls sent 35% more texts than boys (Ofcom, 2012). 

Visual self-expression 

Teenagers can be highly visual, and use photography and video to express feelings, forge friendships and share their lives (Boyd, 2014). 

Examples include the appeal of emojis to express emotion; Vine to easily edit and share video and Snapchat or Instagram to share photos. 

Developing identities 

Teenagers become increasingly conscious of shaping the way they present themselves to others (Sherbert research for BBC, 2013). Social 

media now plays a key role in how they maintain and develop their identity (Doster, 2013). For example, the photos that they stage, share 

and comment on help them express not only who they are but also how they want to be seen. Some also use social media to connect with 

cultural icons and earn kudos from their peers. 

The full document can be found at

http://www.bbc.co.uk/partnersandsuppliers/connectedstudio/events/coding.html

 Our idea

We wanted to come up with an idea that would somehow combine the things that teenagers enjoy using in technology while also inspire an interest in the creation of technology. 

We came up with an app that would allow users to create a photo story or small comic using their own pictures, videos and sounds and adding speech bubble, text, graphics, transitions etc. These stories could then be passed on and added to by their friends.

The coding element would come in because the feature set would initially be full but basic. The stories would be created using a drag and drop interface which also output real, readable and editable code allowing the user to extend the features of the app to acheive the effect they want.

For example initially we might provide 3 text colours for speech bubbles black, white and red, but if you really wanted green text you could go into the code editor and add this option. The initial code would be well commented and simple enough that this basic type of extension would be easy to accomplished by copying and pasting an existing line and just change the relative part of the line, ideally getting people coding without even realised that that is what they are doing. The hope is that this would lead to the users adding more complex features to their stories.

Another element of this that we hoped would encourage the use of code would be to see a story one of your friends had made with a really nice feature in it that your version doesn’t have. If you want that feature you either have to add it in yourself or ask your friend to share it with you. This sharing of features would itself expand the users understanding of coding and the creative possibilities.

sketch

Audience Feedback

In the afternoon we had the chance to put our idea forward to a panel of genuine young people, luckily they liked the idea and gave us plenty to think about, both for our pitch later and for things to think about if our idea gets taken forward. This included thinking about how ownership of a story would work and pass on through each page, and the variety of ways it could be used, including as a story board or inspiration board for sharing ideas for a theatre production.

The pitches

At the end of the day each team, 36 in all, did a 2 minute pitch of their ideas. It was interesting to see how many teams had independently come up with similar ideas and the range of ideas that were put forward.

Some of the ideas that were pitched included

– a secret message that is sent to you by a friend,  you have to change the code to uncover the message

– a dream house creating tool

– a Hackstage Pass where you unlock content and experiences from musicians by completing coding tasks and challenges,  presented by a team including CoderDojoScotland @CoderScot

– using magic tricks to teach coding concepts

The next stage

Following the Creative Studio 10 teams are invited to the Build Studio, a 2 day event where the selected ideas are developed further and refined. If we are selected I’m sure you’ll be looking forward to another blog post on that event.

read more
Elanor BuchananBBC Connected Studio – Coding for Teenagers

An Unusual Office

by Heather Laine on June 13, 2014 6 comments

I recently read this article, which had me chuckling for a week. Do read it, it’s brilliant. But it got me thinking. Really, the LiveCode offices are not your typical place to work, and LiveCode is not your typical programming language. It’s Easier with LiveCode.

livecodeoffice 

Our development team are a pretty happy bunch overall (unless they’re faking it really really well!). I think this is down to a number of things. We expect you to work hard, but we also listen to your input, and there is a certain amount of flexibility in the working hours. Some members of our team regularly spend a day working from home – others prefer always to work from the office. We have monthly whole team meetings, where every member of the company presents their work for the month. This leads to a feeling of inclusiveness – I may not always understand Mark Waddingham’s presentation but I have at least a vague idea of where the tech is heading! Equally, the tech team gets an overview of what is happening in marketing or customer support.

Pets Galore

Possibly the relaxed atmosphere is assisted by the Office Dogs.

devsintraining

Developers in Training?

I frequently get asked why the servers running our hosting service have such odd names. Meg, Diesel, Tio, Jasmine, Pancake … what’s that all about? Well, they are the names of the office pets. A number of members of staff have pets who regularly come in to the office, providing entertainment and light relief. Your code not doing what you wanted? That bug proving intractable? Spend a few minutes playing tug of war with Tio, or throw the squirrel for Meg, and the problem may magically resolve itself. No, I cannot tell you why Arnaud’s cat (now sadly deceased) was called Diesel. You’d have to ask him that.

Programmers and Beards

An interesting phenomenon – almost all of our team have beards. And some have an uncanny resemblance to each other. I’m not sure why this is, does coding attract this genotype, or does working in code all day cause long hair and beards?

 

aliandseb 

Spot the difference: Ali Lloyd and Sebastian Nouet.

We’re a creative bunch, and coding after hours for the sheer joy of it seems to be the norm, rather than the exception. A case in point – shortly after coming to work for us, we discovered that Fraser Gordon had a love of Raspberry Pi… to the point where he had picked up the embryonic LiveCode implementation for this platform and turned it into something useable, in his spare time. Way to go Fraser – don’t forget to sleep sometimes.

Yes, its definitely not a typical place to work. But friendly, fun and awash with creative atmosphere.

We’re hiring

Do you like dogs? Love working long hours for a deadline? Got some serious Programming Experience and credentials? Have a beard? Apply here.

read more
Heather LaineAn Unusual Office