/* jquery */ /* jquery accordion style*/ /* jquery init */

Minetest - Free Open Source Minecraft

Minetest is a construction game inspired by InfiniminerMinecraft and similar games where players can create and destroy various types of blocks in a LEGO-like three-dimensional world.

Here's a few key Minetest facts:

open source - GNU Lesser General Public License (LGPL)
download for on Windows, Mac OS X, Linux and Android
• play a single player game
• explore the collection of blocks and items
• have fun crafting and smelting
• beware of the hostile mobs
• apply texture packs for blocks, items and mobs
• join a multi-player game on a Minetest server
• experiment with downloadable mods
host your own server
create your own texture packs
create your own mods in in C++ or Lua
compile Minetest from source

See more Minecraft posts.

Python Turtle Graphics for 3D Printing

As we've seen in previous posts on Turtle Patterns and Turtle Shapes moving your turtle around the screen is done by simple dictional commands and angled turns.

A similar process happens in 3D printing with DIY plastic extrusion hardware, such as Rep Rap, RepRap Pro and Makerbot.

Here the 3D printing extrusion nozzle is moved in a particular direction and for a specific length, before it halts and waits for a new instructions.

So, we could use Python Turtle code to simulate a 3D printing layer. Then put it into a repeating loop to create multiple layers. This loop could subtly change the direction and length commands to build quite complex and intricate shapes.

Here's a video of a Turtle code driven 3D printer in action.

The video was part of this 3D Printing presentation at the IPSJ Summer Programming Symposium in 2014.

The presentation also included a 3D Printer Turtle Graphics Python module and a code example of the module in use.

More Raspberry Pi Python Coding Tutorials

Java 8 and BlueJ 3.14 on a Raspberry Pi

In late 2013 Oracle released a Java language development kit (JDK) optimized for the Raspberry Pi's platform..

A short time later the Raspberry Pi Foundation included Oracle’s JDK by default in its Raspbian OS image.

However, running a coder-friendly Java editor, like the BlueJ IDE, on the Raspberry Pi was still a problem.

The good news it that in a recent Java Magazine article Michael Kolling describes how to install and run BlueJ version 3.14 on the Raspberry Pi.

Even better, this version of BlueJ also includes the Pi4J library for direct access to the Raspberry Pi's hardware.

Minecraft Pi Edition's main 'pi' package in BlueJ

More Raspberry Pi Coding, Tips and Tricks

Fascia Understanding and Treatment

Are you suffering from persistent back, shoulder, neck or joint problems?
Did you realise a fascia malfunction could be the root cause?

While normally associated with muscle, fascia reacts quite differently to exercise and manipulation. And the timescales associated with fascia damage and repair are much longer.

So, we need to invoke a different mental picture, and a revised approach to treatment.

Fascia Understanding

Let's start with a few key facts about fascia:
• Fascia is a three-dimensional mesh-like web of fibres and lubricating goo.
• Fascia wraps and supports muscle fibres, bones, organs, blood vessels, nerves, and so on.
• Fascia is composed of three major components: collagen, elastin and ground substance.
• Collagen fibres are tough non-stretchy threads that provide strength and support.
• Elastin are rubber-like fibres that stretch and recoil.
• Ground substance is a thick lubricating goo which provides shock absorption.

For a more detailed picture read Julia Lucas's excellent fascia overview article Understanding Your Fascia: Fascia may be the missing piece for your lingering injury written for the Runners World magazine .

Fascia Treatment

Fascia takes much longer to stretch and contract than muscle. So, to be effective a massage needs to be administered using gentle pressure and slower movements.

You can see this in action at Heather Wibbels website. Within the series she has treatments for the lower back and neck, plus practical self-treatment ideas using a door frame.

There's a useful collection of self-treatment stretches at this illustrated stretching guide page. But remember, for fascia you'll need to stay completely relaxed, perform slow, gentle stretches and hold each stretch for many minutes rather than just ten to thirty seconds.

Also see Fascia Repair Foods and Understanding Trigger Points

Fascia Repair Foods

Fascia is a composed of three major components: collagen, elastin and ground substance.

Collagen fibres are tough non-stretchy threads that provide strength and support.
Elastin are rubber-like fibres that stretch and recoil.
Ground substance is a thick lubricating goo which provides shock absorption.

There's a number of nutrients required for effective formation, integrity and repair of collagen and its associated connective tissue.

Collagen is a protein, so make sure there's adequate levels of protein in your diet. Fish, white meats, nuts, beans and legumes all work well.

Vitamin C is needed to to build collagen via the conversion of lysine and proline into hydroxylysine and hydroxyproline. Natural vitamin C sources are best, such as oranges, strawberries, pineapple, kiwifruit, papaya, broccoli, brussel sprouts and kale.

Manganese is needs for cartilage, bone, ligaments, tendons and fascia formation. So make sure your diet includes foods like brown rice, chickpeas, spinach, pineapple, pumpkin seeds.

Zinc is required for protein synthesis. Zinc rich foods include oysters, venison, lamb, grass fed beef, scallops, sesame seeds, pumpkin seeds, prawns.

Copper is also important for collagen repair. Sources include sesame seeds, cashews, soybeans, sunflower seeds, tempeh, chickpeas, lentils.

Sulphate combines with chondroitin to to produce glucosamine sulfate and help facilitate cartilage repair and collagen production. Sources include broccoli, cauliflower, garlic, cabbage, onions, radishes, mustard, egg yolks and whey protein.

Other nutrients required for proper sulfation include Magnesium, B12, B6, B9. Think broccoli, cauliflower, garlic, cabbage, onions, radishes, mustard, egg yolks and whey protein.

Also see Fascia Understanding and Treatment and Understanding Trigger Points

Understanding Trigger Points

Trigger points is another health topic that's difficult to research. Nevertheless, trigger point identification and treatment can provide rapid relief for both long-term and frequently recurring pain.

The best information source I've found so far is Clair Davies's excellent book The Trigger Point Therapy Workbook: Your Self-Treatment Guide for Pain Relief (available from Amazon or other online bookshops).

This comprehensive manual is often cited as the definitive reference by physiotherapists. And whenever I decide to re-read a particular topic I invariably discover a little more about the root causes, symptoms and treatments.

Also see Fascia Understanding and Treatment and Fascia Repair Foods

Python 2 to 3 Conversion Tips

Even a well loved language like Python has its downsides.
One tricky issue is that there are two main Python versions, namely 2 and 3.
And, unfortunately, version 2 code often fails to run in a Python 3 environment, and visa versa.

So here's my quick guide.

Key Elements

The focus of your conversion efforts should be on:
• print and print()
• exception handling
• module import errors
• integer handling
• unicode characters
• using bytes

There's a very helpful guide on each of this topics at the Python 3 porting site.
And more useful information can be found on this blog page from Alexandre Vassalotti.

No Conversion Required

Do you want to create code that works in both versions?
Then head over to the no conversion chapter and find out how the Six utility works its magic.

More Raspberry Pi Python Coding Tutorials

Microsoft and Minecraft: New Possibilities

Microsoft's purchase of Minecraft was certainly a surprise. But what does it actually mean for the Minecraft community?

Gamers have little to fear. It makes no sense to make radical changes to this global phenomenon and risk losing its revered position among kids, parents and educators. There might even be new materials, animals, creatures and social interaction options.

As far as modders it's potentially good news too. This purchase could lead to a whole new collection of cool technology, tools and gaming enhancements.

Here's just a few of the Minecraft modding possibilities:

New Languages. While Java is almost certain to remain, Microsoft's .NET technology would enable developers to use multiple languages on the same project. The C# language syntax has a striking similarity to Java, so the learning curve would be minimal. While a Visual Basic or JavaScript option might attract a whole new generation of Minecraft modders.

New Tools. Microsoft Visual Studio development environment is, quite rightly, recognised as a leader in ease-of-use, productivity and multi-language flexibility. Both novice and experience developers would benefit from such an advanced tool. So, maybe Microsoft will release a free community edition of Visual Studio specifically for Minecraft modding activities.

New Platforms. The Raspberry Pi edition of Minecraft, with its built-in Python hacking API, has been a huge success. Microsoft could take this concept and roll it out to PCs and various mobile platforms. This new product could offer enhanced gameplay features, a larger and more powerful API and the choice of development language.

Azure Hosting. Microsoft could release tools which make it a simple operation to build a Minecraft modding server on its Windows Azure cloud network. This would free up modders from having to create their own internet-connected PC setup.

Read more Microsoft analysis posts.

Windows 10 (Threshold) Features

At Microsoft's press event on 30 September the audience is expected to see a sneak preview of the next version of Windows, codenamed Threshold.

In the following months developers can expect to have an early preview of Windows 10 to play with, and a public release could happen by the middle of 2015.

So, what changes can we expect?

Reincarnated Start Menu

Rumours are surrounding about a new Start Menu. The existence of a Start Menu has been partly fuelled by a particular Microsoft screenshot, briefly shown at its Worldwide Partner Conference in July.

Indications suggest this wont be a rehash of the old-style start menu, but something quite new, taking design hints from the existing Start Screen.

A new Start Menu is likely to exhibit both compact and full-screen configurations. The latter might look rather similar to the current Start Screen.

Interactive Live Tiles

The latest incarnation of the Modern UI is said to feature both interactive Live Tiles and a new Notification Centre. The existence of interactive Live Tiles was reported back in April 2014.

An interactive Live Tile allows users to perform a range of app-specific tasks without actually opening the application. Although, in reality, this functionality would only applicable to a limited subset of Live Tiles.

Form Factor Modes

Windows 10 might offer different startup modes depending on the host device form factor. This would ensure the most appropriate interface is presented by default.

So, desk-bound and laptop devices would obviously go straight to desktop mode. But as yet it's unclear if this would be a single, hardwired mode or whether users would have the option to select the startup mode they prefer.

This would be a significant change from Windows 8.1, and one that's sure to please the business community.

Virtual Desktops

Virtual desktop functionality has been an integral part of Mac OS X and Linux for many years now. The ability to switch between multiple desktops - each with their own collection of windows - is an important productivity feature for power users.

So far Microsoft hasn't gone the down this route. However, with its increased desktop focus Threshold could sport virtual desktop capability. So look out for a new taskbar button and keyboard shortcuts in Windows 10.

Charms Rethink

The Charms Bar has also been the focus of much discussion. Strong indications point to the removal of the current screen corner mouse activation.

Yet many applications rely on the Search, Share, Devices and Settings charms. So, it's unlikely they will disappear altogether. But exactly how they'll be accommodated in the UI is unclear.

Cortana Integration

Cortana is Microsoft's answer to Siri. Owners of smartphones running Windows Phone can ask (or type) questions for Cortana's artificial intelligence software to answer.

Up to now Cortana hasn't appeared on Windows desktops and tablets. But Windows 10 might be the point when we see a dedicated Cortana Live Tile. Though it remains to be seen if Microsoft retains the famous 'typical dark' interface.

Cortana in Windows 10 could offer enhanced voice input features to improve accessibility. And may incorporate an improved interpretation and analysis feedback mechanism.

New Update Strategy

Microsoft might change its current Windows update cycle to a month-by-month one. In this way consumers would receive new and updated features much more promptly. And the whole update process could receive a streamlined makeover.

However, enterprise customers generally evaluation new updates before deployment. So monthly updates would put their IT departments under a lot of pressure. And recent events suggest even Microsoft has its own problems with testing.

Read more Microsoft analysis posts.

Raspberry Pi Model B+ HATs

HAT stands for Hardware Attached on Top.

It's an optional set of hardware and software rules for add-on boards.

The guidelines, provided by the Raspberry Pi Foundation, illustrate how the extra 14 pins on the Model B+ can be used to improve the user experience by delivering a 'plug-and-play' capability.

HAT-compliant expansion boards will be recognised by the host Raspberry Pi's operating system. This means the board can be automatically configured, for instance by transparently installing the necessary drivers. A great solution for anyone with limited Linux experience.

In overview a HAT is a rectangular (65mm x 56mm) board which has four corner-positioned mounting holes that align with the Model B+ mounting holes.

Two GPIO pins, namely ID_SD and ID_SC, are reserved for an I2C compliant Electrically Erasable Programmable Read-Only Memory (EEPROM) chip. This EEPROM stores the board manufacturer's information, GPIO setup and a 'device-free' fragment - which describes the attached hardware and so enables Linux to load the required drivers.

As you'd expect the HAT specification is open source and available on GitHub. So anyone can design a HAT add-on boards for the Model B+.

While it's entirely optional, the Raspberry Pi Foundation is encouraging everyone to commit to the HAT standard and make life easier for Pi owners.

It's too early to know how successful the HATs initiative will be. Yet I'd be surprised if it wasn't embraced by the majority of bigger players in the Raspberry Pi add-ons and accessories marketplace.

Visit my Raspberry Pi page for news, reviews, advice and tutorials.

Microsoft Surface M

Will we see a Microsoft Surface M device, running on Intel's new Broadwell 14nm Core M processor chip, before the end of 2014?

The Core M operates at lower power levels and generates less heat. Yet it still runs Windows 8 applications at performance levels similar to existing Intel Core chips.

All models in the Core M chip range have two physical cores plus a 4MB L3 cache. Speeds can by dynamically scaled for both the CPU (800MHz to 2GHz or 1.1GHz to 2.6GHz) and GPU (100MHz to 800MHz).

This means a Core M powered device would have:

• a Sleek, Thin and Light design (no cooling fan required)
• improved Battery Life (compared to Surface Pro models)
• full Compatibility with Windows software (unlike the Surface RT)
• Intel Core-like Performance (superior to an Atom processor)

One form factor for the Surface M would be an ultra-lightweight 10.5 inch device. Or it could be stretched out to 12 inches (like the Surface Pro 3) without incurring much weight penalty.

In fact, Intel partners have already demonstrated Core M powered 12.5 inch reference tablets at Computex. One was just over 7mm thin, weighed less than 700g and yet still had a 32 watt-hour battery (the Surface Pro 3 is 9.1mm and weights 800g).

So, the Surface M would be an excellent replacement for the Surface RT. And now that Satya Nadella has announced Microsoft is to focus on a unified cross-platform OS, it slots beautifully into this new strategy.

With Microsoft's Surface Pro 3 sales already exceeding early predictions, a Surface M could be the perfect addition to the family.

But Microsoft need to hurry. I'm sure Apple have plenty of ideas for Intel's Core M chip too. For example a new range of Macbooks or even a hybrid iPad/Macbook.

Read more Microsoft analysis posts.

Samsung vs Xiaomi

Samsung's meteoric growth, quality approach and R&D investment has already killed off threats from the previously dominant Japanese. Even a giant like Sony now relies on insurance to bolster its slim profit margins. While Panasonic is in dire straights and continues to make hefty annual losses.

These days it's countries like China that provide the biggest threat. In fact one of Samsung's strongest competitors is China-based Xiaomi (pronounced she-yow-mee).

One of the fastest growing technology companies in the world, Xiaomi has a recent venture capitalist valuation of $10 billion. It's already the sixth largest handset maker, behind Samsung and Lenovo, in 2013 Xiaomi shipped 18.7 million smartphones. And the smartphone targets for 2014 and 2015 are 40 million and 60 million respectively.

These smartphones aren't simply clones of Samsung or Apple products but offer unique features.

For instance, the latest flagship Xiaomi Mi 4 device is light and thin with a brilliant 5 inch display (17% more pixels than the iPhone 5S) and a high-performance Qualcomm processor.

In addition it has a wristband that acts as an ID authenticator for phone unlocking.

And Xiaomi's regular software updates often incorporate popular requests from device owners.

Yet Xiaomi is expanding well beyond smartphones. Today it manufactures millions of tablets, large HDTVs, set-top boxes, routers and much more.

With lower labour costs and easy access to raw materials Xiaomi products are increasing seen alongside Samsung alternatives on high streets around the world.

Read more Samsung analysis posts.

Samsung Tizen: Android Rival

In June 2014 Samsung announced its intention to reduce its reliance on Google's Android by introducing a rival operating system.

Named Tizen it's a Linux-based operating system offering high levels of system and app performance, tight software integration plus increased security levels.

Tizen has a complex genealogy. It takes influences from many other mobile-focussed predecessors, such as MeeGo, LiMi and Bada. With such a background it's no surprise to learn that Tizen Association participants include Intel, Huawei, Fujitsu, NEC, Panasonic, KT Corporation, Sprint Corporation, SK Telecom, Orange, Vodaphone and NTT DoCoMo.

But there's another, more commercial reason for the Tizen move. Although Samsung operates its own app store, currently most app purchases are made via Google Play. However, Tizen devices push consumers towards the Samsung app store.

Tizen App Potential

Launching a new operating system that competes directly with Apple iOS and Google Android is a bold move. Success isn't guaranteed. But Samsung already has 30% of the global smartphone marketplace (compared to Apple's 15%), plus an equally strong position in the tablet and wearable marketplaces.

For the app developer Tizen appears to be yet another lucrative marketplace. For instance, back in July 2013 Samsung announced a Tizen App challenge with $4 million in prizes.

Yet it's not just about money. Tizen's developer community can code apps using familiar web-development languages, tools and libraries. An attractive alternative to battling with Apple's proprietary languages and unfamiliar tools.

Available Now

In February 2014 Samsung unveiled its Gear 2 Tizen-powered wearables. This range includes the Gear Fit smart-bands for fitness fanatics and Gear Neo smartwatches, with customisable colours and themes.

In June Samsung launched its Z range of smartphones with the SM-Z910F model. And there's plans to put Tizen in cars and smart TVs.

Samsung Plays Smart

Tizen may well play a big part in Samsung's future. But it isn't about to place all its eggs into a single basket.

Although most of the Gear 2 wearable range is Tizen-based, the Gear 2 Live smart watches use the new Android Wear platform, as announced the Google I/O 2014 developer conference.

So, for the foreseeable future, Samsung will continue to work closely with Google to develop Android, Android Wear and Android Auto products. Meanwhile its keen to demonstrate commitment to open standards by participating in open source hardware and software working groups.

Read more Samsung analysis posts.

Apple vs Samsung Design Battle

In the battle between Apple and Samsung to design the next round of mobile devices, wearable tech, multi-platform operating systems and user-experience interfaces who will come out on top?

If it was a numbers game Samsung would win hands down.

Samsung has six Korean R&D centres plus more than a dozen others in America, India, Russia and other strategic locations around the world, including a strong European base in countries such as the UK, Poland and Finland.

These Samsung centres employ over 1,000 designers who work with advanced materials, user interfaces, graphics, digital media, printing, communications, cloud-computing and, of course, hardware and software engineering.

In stark contrast Apple employs less that 20 designers. They are housed in a single, super-secure R&D centre built into the heart of its head quarters building. So secure in fact that only Tim Cooke and few other top executives are allowed entry.

Samsung is said to lead the world in digital photography research. And its chip designs are so good even Apple sources the processors for its iOS devices from Samsung.

Samsung R&D labs developed the Galaxy Note range of smartphones and tablets. Devices which offer fast and smooth multi-tasking, multi-windowed interfaces, along with the much admired S-Pen technology. Innovations that are unmatched by others, including anything in Apple's product line.

And Samsung isn't afraid to invest when in-house innovations don't meet its own high quality standards. For example it is reportedly in talks to acquire Nuance, the accepted world leader in voice recognition technology.

Interestingly, Nuance technology also underpins Apple's Siri - for the time being at least.

Read more Apple and Samsung analysis posts.

Apple To Launch Liquidmetal Products?

Apple seems to be close to announcing new products based on brand new materials.

This June Jonathan Ive himself dropped hints about new product materials when he said ...

"I would love to talk about future stuff - there are materials we haven't worked in before. I've been working on this stuff for a few years now. Tim is fundamentally involved in pushing into these new areas and into these new materials."

Back in June 2012 I wrote an magazine article about liquidmetal material science, Atakan Peker, the Liquidmetal Technologies company and Apple's interest in this technology.

Two years later, almost to the day, it seems this might finally be the year Apple brings Liquidmetal into its product line.

Whatever Jonathan Ive is cooking up in his super-secret Apple design studio, chances are we'll find out soon.

Read more analysis posts about Apple.

Raspberry Pi Page

My new Raspberry Pi Page is designed specifically for Pi enthusiasts.

The page has links to all my Pi-centric tutorials, articles plus posts offering tips, tricks and advice.

Enjoy.

Apple's Swift Language - The Wrong Direction

So, Apple has a brand new coding language to supplant it's ageing Objective-C.

Swift certainly is a much needed replacement and it solves numerous flexibility and performance roadblocks faced by Objective-C developers.

Yet it's a move in the wrong direction. Times have changed.

These days developers wish to make their own decisions about languages and tools. They favour standard-based technology that's platform-independent. And they like to get involved by suggesting new features or even writing their own enhancements.

Swift is another proprietary language attempting to lock developers into a platform. One that is unlikely to attract the open source coding community. And one that's more likely to alienate some current members of the Objective-C tribe.

A much better solution would be take a popular language and add it the Xcode toolbox. Maybe something similar to Microsoft's TypeScript language for instance.

Nevertheless, there was a encouraging note in the WWDC keynote announcements. The new Interactive Playground in Xcode 6 shows plenty of promise. Great tools do turn developer's heads - often much more easily than a new language.

Interactive Playground's features still might not make a huge difference in attracting new iOS and OS X developers. But I'd expect similar features to appear in Microsoft, Google and many open source community offerings soon.

For example, there may be refinements to the similar, and already well received, IPython Notebook initiative.

Read more analysis posts about Apple.

Start Coding: Over To You

Software is vitally important to our modern lives. And, as you've seen, there are many different ways to start coding.

The key to success is to start with a few straightforward programming exercises. Every day you'll enhance your knowledge and skills.

Just like any journey they'll be ups and downs. It's those early successes That are the key to staying on track period debugging in particular can be a little taxing. So build your cold gradually, testing frequently as the program grows in size.

Enjoy your coding.

Online TuitionStart Coding SeriesIntroduction

Start Coding: Online Tuition

In recent years the range and quality of web-based training has improved enormously. In fact it's easy to become overawed by the sheer number of choices available for budding coders and computer science teachers.

One piece of advice is to stay clear of sites that employ novelty languages. While they might seem a little easier at first, all too soon you'll hit a dead end. Far better to select websites that base their content around well-known languages. In this way you'll benefit from a wider set of learning materials and have the support of an active coding community.

A website that acts a little like a coding portal is code.org. The collection of information and links have a quality feel and the scope encompasses both pupils and tutors.

If you have a younger audience in mind then take a look at The Hello World Program. Here puppets are used to used to convey key coding concepts in a memorable and interactive manner.

Code Academy is an often cited example for software tuition. It offers video-style tutorials for popular languages such as JavaScript, PHP, Python and Ruby, plus web-centric frameworks like jQuery. In addition there's a number of hands-on assignments, such as building a web project or using YouTube and Twitter application programming interfaces (APIs).

Khan Academy is another extremely popular educational website. Here the scope is much wider than just programming, with topics surrounding area such as Maths, Science, Economics and Humanities. Khan's computer science studies are centred around the Python scripting language. While the Discovery Lab element has a practical hands-on approach to learning, with a number of interesting robotic elements.

Does the sheer volume of online web tutorial material seems a little daunting? Then why not visit the World Wide Web Consortium (W3C) website's tutorial page. As the W3C is responsible for defining the HTML, CSS and XML standards you can rely on the validity of the information presented.

Fun BooksStart Coding SeriesOver To You

Start Coding: Fun Books

With so many books available, on such a wide variety of coding topics, it's impossible to provide a definitive list. So, let's pick out a few that have a strong emphasis on fun.

Books for younger coders are just as applicable for the young at heart. Python for Kids is geared around problem solving, and has a number of related coding puzzles on its website.

Super Scratch Programming is a recommended read by MIT, who created the highly-visual, jigsaw-like Scratch programming language.

If you're looking for something unconventional the Computational Fairy Tales book might fit the bill. First it takes the reader to a world with kingdoms, castles, dragons, goblins, magic spells and other fantasy concepts. Then it encourages the reader to develop a code war chest to overcome numerous challenges, with a view to introducing coding concepts and computer science topics.

Functional programming is an interesting yet challenging aspect of coding. For those wishing to find out more Conrad Barski's Land of Lisp book is an excellent place to start. The numerous practical exercises have an underlying gaming theme, while the informal style and well-paced content is brought to life by a collection of wacky-yet-informative cartoon-style illustrations.

Learning ResourcesStart Coding SeriesOnline Tuition

Start Coding: Learning Resources

A decade ago books and magazines were an essential resource for the budding coder. Today the learning experience has been enhanced by a wealth of online blogs, tutorials and purpose-made training sites.

Nevertheless, it's all too easy to find webpages that contain errors and misinformation. So, the printed word still has an important role to play.

Choose a book from a reputable publisher, such as O'Reilly , and you can be confident that the contents have been thoroughly checked by an editor plus numerous technology experts. And a good quality reference book will only extend and reinforce information gather from other sources.

With a book you can dip into a particular section in seconds, quickly scan the contents, glossary or index for a particular subject, or skip backwards and forwards between topics. Trying to do the same with a collection of web pages can be a frustrating experience - and it's even trickier with a video.

Magazine tutorials are important too. Typically written by seasoned professionals they're able to introduce a coding language in just a few pages, complete with verified code examples and recommended places for further reading and research.

Maker ProjectsStart Coding SeriesFun Books

Start Coding: Maker Projects

Maker projects are typically a blend of software development and hardware hacking. For some the desire to become a maker is a strong incentive to write coding.

Electronic circuit construction and interaction with external devices add a new dimension to coding. As a maker you'll acquire skills in circuit board design, soldering and prototype hardware construction techniques.

Home automation, remote control, and robotics are just a few of the possibilities. Websites like Adafruit's Learning Centre have a wide range of project ideas, kits and step-by-step tutorials.

As I mentioned in the previous post, the Raspberry Pi is an excellent maker-centric platform. But there are a number of other options.

While Arduino boards may not offer the same flexibility as the Pi, they are an excellent choice for hardware hacking projects. Arduino technology aims to simplify the construction of programmable interfaces to a wide range of digital and analogue components. The popularity is demonstrated by a highly active Arduino community, who've constructed an amazing diversity of devices and gadgets.

The LEGO® Mindstorms delivers a straightforward introduction to robot construction and programming. The latest EV3 kit comes complete with remote controller, motors, sensors, bricks and over 550 Lego Technic components. And the Mindstorms community is a great source of ideas and assistance, with regular maker challenges.

A sign of the worldwide interest in hardware hacking is the popularity of Maker Faire events. These gatherings simply buzz with innovation from an eclectic mix of participants spanning all age groups. One of the biggest is the New York Maker Faire, while the UK has its own Elephant & Castle Mini Maker Faire.

Raspberry Pi ProjectsStart Coding SeriesLearning Resources

Start Coding: Raspberry Pi Projects

The availability of a fully functioning Linux computer for under £30 has attracted enormous worldwide interest. The result is a profusion of guides, tutorials and helpful resources for anyone wishing to dip their toes into the coding waters.

While a Pi supports dozens of languages the Raspberry Pi Foundation chose Python as its default development language.

With over 2.5 million boards now in circulation there's a wealth of Python resources (including my own Learn Python on the Raspberry Pi tutorial). Even if you're not a Pi owner much of this material is applicable to PCs running Windows, Mac OS X or Linux.

Once you've acquired a few basic Python skills why not try your hand at the Pi version of Minecraft. After a quick and easy installation process you can begin building using just a few lines of Python code.

With it's built-in, multi-pin General Purpose Input Output (GPIO) connector the Raspberry Pi is ideally suited to maker projects. The Python and Scratch languages both have simple GPIO interfaces for experiments with LEDs, sensors, integrated circuits and much more.

Once your creation is complete you could demonstrate the fruits of your efforts at a local Raspberry Pi Jam event or hardware hacking convention. These are great places to meet like minded individuals and discover new ideas.

Scripting ProjectsStart Coding SeriesMaker Projects

Start Coding: Scripting Projects

If your focus is on building stand-alone applications then scripting languages are a good first choice.

One of most flexible is Python. It's a free-to-use language that runs on every popular operating system. A blend of power and simplicity, plus the clear, easy-to-grasp syntax, means it's an ideal choice for the first-time coder.

Python's large module collection offers a rich set of built-in functionality, including user-interfaces, graphics, games, websites, robotics, maths, scientific research and much more.

Many similar scripting languages are available, most of which also run on virtually any computing platform. Ruby, PHP, Perl and Lua are particularly popular.

BASIC is the classic introductory coding language. Windows PC owners can give Microsoft's Small BASIC a try. The associated website includes numerous graphical and game-themed projects, with full source code listings.

Mobile App ProjectsStart Coding SeriesRaspberry Pi Projects

Start Coding: Mobile App Projects

Mobile app development is a particularly enticing area. Uploaded to a suitable app store your creation can be seen and downloaded by millions of users.

Novel app ideas, when combined with some focussed coding effort, can result in monetary return. In fact some app developers earn enough to fund a comfortable lifestyle.

Nevertheless, creating high quality apps isn't a trivial exercise. So don't expect to create an engaging, interactive game with quality graphics, multiple levels and so on in a couple of days.

Apple iOS

Apple iPhone, iPad and iPod development might seem an obvious choice. After all, the large Apple community regularly checks the Apple App Store for new apps. However, there are a few points to consider.

Firstly, you'll need an Apple Mac PC to install the Xcode development environment plus the iOS SDK. Secondly, native iOS apps are coded in the Objective-C language. And thirdly, you'll need to register with the iOS Developer Program to upload apps to the App Store, something that costs $99 per year.

Google Android

Google's Android development environment is just as comprehensive. But there are a couple of key differences.

Firstly, it uses the cross-platform Java language, which means you're free to use a Windows, Mac OSX or Linux PC for the development. And secondly, the Google Play app store registration has a single upfront cost of just $25.

Windows Mobile and Firefox Mobile OS

If you're already familiar with Microsoft technology you might want to consider creating Windows Mobile smartphone apps. The registration cost can be a low as $19. And as the Windows Mobile app store is much smaller the Apple App Store or Google Play there's far more chance of your app being noticed.

It's too early to say if the new Firefox Mobile OS will make a dent in the smartphone marketplace. However, there are a couple of interesting factors. One is this OS should be available on entry level smartphones. Another is that Firefox Mobile apps are developed using standard web languages, namely HTML, CSS and Javascript.

Mobile App Frameworks

A dedicated, platform-specific development environment isn't the only way to start mobile app coding. There's also a number of powerful third-party frameworks.

For example, the Appcelerator and PhoneGap solutions offer a complete set of app development tools and resources. Importantly you can code using the standard HTML, CSS and JavaScript languages. After testing the underlying framework builds a native app for the specified platform (iOS, Android, Windows Mobile, Blackberry, Symbian or WebOS).

The big difference is that don't have to learn a different language or new set of tools for each platform. The only slight snag it that you'll still need to use an Apple Mac PC to create iOS apps.

Server-Side Web ProjectsStart Coding SeriesScripting Projects

Start Coding: Server-Side Web Project

The vast majority of websites are built using a mix of client-side and server-side technology.

In fact, some of the most popular website (Google and Twitter for example) present a distinctly minimal user interface. Here all the clever stuff going on at the server end.

Arguably it's a little harder to get started in server development. But it doesn't take too long. And it's the only choice for data-driven scenarios, such as product comparison information and e-commerce catalogues.

First you'll need a web server. Apache is a popular choice and offers everything required for a content-rich, high-performing web service.

But there's quite a few free, open source web servers around. Most come pre-configured with at least one server-side development language (invariably PHP), and a working SQL database (typically MySQL).

PHP is a powerful and flexible scripting language, with a rich library of web-friendly functionality and built-in database support. Yet it's also easy to learn. PHP source code can be embedded inside an HTML file or stored in separate '.php' files.

Another approach is to use a template-centric PHP framework. This allows the developer to focus on high level design and page content. A popular example is the open source Drupal product.

Databases are the key to efficient information management. An SQL database stores data in tables, each table designed for a specific purpose. SQL's english-like statements are easy to learn - for example CREATE, INSERT, UPDATE and SELECT.

Client-Side Web ProjectsStart Coding SeriesServer-Side Web Projects

Start Coding: Client-Side Web Projects

An ideal way to start coding is with scripts that run in a web browser. Web languages are easy to learn. And any text editor can be used to create basic pages.

A key strength of HTML coding is its simplicity and immediacy. You can learn a handful of the most commonly used HTML tags in an hour or two. After saving your script as an '.html' file simply open it in a browser to examine your handiwork. Repeat this edit and review process as you experiment with different HTML tags.

As your confidence and experience grows you'll be able to incorporate small fragments of complementary web technologies, such as CSS page-styling and small pieces of JavaScript.

There's masses of web development information and tutorials in magazines, books and online. A great way to learn is by studying the work of others. All browsers have a view source code menu option. This allows a sneaky look at the code behind any Internet-hosted web page.

And don't think it's just about building personal websites or blogs. With HTML5, CSS3 and the powerful JavaScript language you can create all kinds of web apps, including stunning graphics and highly-playable 2D or 3D games.

Mozilla, the company behind the Firefox browser, have an excellent introduction to web coding at its WebMaker site. WebMaker's tools include Thimble (a page builder), Popcorn Maker (a video and audio editor) and X-Ray Goggles (which displays the hidden HTML code behind the page elements as the mouse cursor hovers over them).

Choosing Your ProjectStart Coding SeriesServer-Side Web Projects

Start Coding: Choosing Your Project

When it comes to choosing an appropriate coding project it's your motivation to code that has the greatest influence. It's the project which dictates the programming languages and coding skills you'll need.

Take a website development for instance. It's relatively easy to define the languages and tools up front, which will certainly include HTML, CSS and JavaScript. However, you'll also need to draft out the website design and page layouts - which is all part of the fun.

For mobile app development it's the target platform (iOS, Android, etc) and development framework (Appcelerator, PhoneGap, etc) which will dictate your learning path. Of course, you'll also need a good app idea.

A rather different approach is required for open source or community projects. Here you'll have to look around to find a project that interests you. Then scan the associated task list to identify the items you wish to work on.

Regardless of your final choice it's important to have patience and realistic expectations. Thinking you'll be able to construct a complete website in a few hours, or build an app in a couple of days, will only lead to disappointment.

Make It Fun

Regardless of your motivation or project coding should always be fun. One approach is to consider the development process as a sort of game. Here's a few ideas:

Split tasks into levels. Ensure the initial levels are easy wins and leave all the ambitious stuff to the end.

Keep score. Keep a note of your coding progress. It's always encouraging to look back on past achievements when the going gets a little tough, such as during a tricky debugging session.

Reward yourself. Identify a reward for each level, say a foody treat or a special drink at your local cafe. And maybe a software/hardware purchase at the end of a successful project.

MotivationStart Coding SeriesClient-Side Web Projects

Start Coding: Motivation

Personal motivation is a key factor in deciding how to get started. So, it's a good idea to spend a little time thinking about this question.

Maybe it's so you can say, "I did that." Even a tiny piece of code can engender a deep sense of achievement.

Start with just a couple of lines, then slowly add more code. Just as the wise philosopher knows every journey begins with a single step, the wise coder knows every program starts with a single code statement.

Let's explore a few more reasons to code.

A Web Presence

Maybe you want a presence on the web. Creating a simple web page doesn't take too long. And, as your knowledge increases, you'll be able to build a web site that showcases your individuality, imagination and design flair.

It's also a low-cost entry into programming. Everything you'll need to create a rich website is freely available. Some organisations offer simple web hosting services for free, while others can cost as little as a few pounds per month.

Community Involvement

Maybe you've been inspired to become involved in a community project. There's thousands of open source projects to choose from. Some aim to bring brand new technology or apps to the market place. While others have a scientific or environmental focus, offering the opportunity to take part in in worthwhile, or even world-changing, challenges.

Open source projects provide full access to the source code. It's a great opportunity to learn coding techniques from other developers. There's usually a list of tasks that require attention. These tasks can involve fixing bugs, making small refinements to existing code or adding new functionality.

Though need to gain a little coding experience before uploading your own contributions.

Becoming a Software Professional

Maybe your goal is to become a software professional. Unsurprisingly this will take some time, not to mention dedication and focus. But the rewards are considerable.

The world is full of software opportunities, and every year tens of thousands of new ones become available. And coding positions tend to offer salaries well above the national average.

The ever changing technology landscape means it's possible to be an expert in a burgeoning field relatively quickly. Nevertheless, the professional software developer invariably has many years of coding experience.

Today, most software projects involve more than one language. For example website construction typically involves HTML, CSS, JavaScript, PHP and SQL. So, a primary goal should be to learn a few complimentary software languages.

Why Code?Start Coding SeriesChoosing Your Project

Start Coding: Why Code?

There are many reasons to attain at least a basic level of coding expertise.

For a start it will help you appreciate what makes your computing devices tick.

Take mobiles devices for example. Did you know the Android smartphone and tablet operating system has around 12 million lines of code? Printed out the stack of paper would be as high as a typical family house. And every single one of those characters has been typed by human hand.

Today most road vehicles rely on tens of millions of lines of code for engine management, safety devices and entertainment systems. With the next generation this figure could rise to over 100 million.

Another reason is to take back a level of control in this digital age. Without any coding skills you're just a consumer. One who's only choices are restricted to off-the-shelf products, from companies who've already decided what you want.

Digital counterculture figure Douglas Ruskoff explores this theme in his Program Or Be Programmed book and talks. While technologist and musician Jaron Lanier expresses a similar point of view in his books You Are Not A Gadget and Who Owns The Future.

For yet more reasons take a look at this well produced video on the 'why code' question.

IntroductionStart Coding SeriesMotivation

Start Coding: Introduction

Software is the invisible ingredient that powers our technological lives.

Without the magic of software a smartphone, tablet, PC, game console or any other digital gadget is just an expensive collection of electronic components; unable to perform even the simplest function.

But how do you get started in software development?

My series will guide you on a journey to coding success.

Why Code?
Motivation
Choosing Your Project
Client-Side Web Projects
Server-Side Web Project
Mobile App Projects
Scripting Projects
Raspberry Pi Projects
Maker Projects
Learning Resources
Fun Books
Online Tuition
Over To You

Raspberry Pi JavaScript with Nashorn and Java 8

Would you like to write programs on your Raspberry Pi using the popular JavaScript language?

Well you can. Oracle's latest Java 8 release has a built-in JavaScript engine, known as Nashorn.

Here are a few of Nashorn's capabilities:
• run standalone JavaScript programs (no web server required)
• run JavaScript interactively from the command line
• access the complete Java library
• interoperate with existing Java code and APIs
• enjoy high runtime performance from the Rhino-based technology

That's a powerful feature set. For example, you could hack a Minecraft Pi Edition game in JavaScript by calling the functions defined in Mojang's Java API.

Oracle's technetwork site has an informative how to use Nashorn article. There's loads of code examples plus details of using the jjs command line tool, embedding JavaScript commands in Java programs and how to interact with JSON.

Benjamin Winterberg's blog post is another useful source in information.

The official Nashorn scripting reference documention is hosted on the Oracle docs website.

More Raspberry Pi Coding, Tips and Tricks

Raspberry Pi Hardware Announcement

On Monday the Raspberry Pi Foundation announced a new hardware initiative.

The Raspberry Pi Compute Module contains the guts of a Raspberry Pi in a brand new format. In essence it offers just the brains, including the Broadcom BCM2835 system-on-a-chip (SoC), along with 512MB of RAM and 4GB eMMC flash storage.

The design is implemented on a DDR2 SO-DIMM laptop memory model format. This means it's only 68mm x 30mm in size. In addition it connects to the host circuit board through an industry standard SODIMM connector (although the pin assignments on the board are completely different from a memory DIMM).

As with the original Pi, these chips are all soldered to the host board, so they can't be upgraded (check out Adafruit's Compute Module blog post for more images).

DIY Hardware Hacking

The whole point of the Pi Compute Module is to entice hardware hobbyists and device builders to create their own printed circuit boards (PCBs). The small footprint and standardised connector immediately opens up a host of opportunities for low cost DIY projects.

As Eben Upton admitted, "Currently, you need a significant amount of space to accommodate the PI inside a product, and a wiring loom to connection the various ports on the board." Upton went on to say this had now changed because, "The Compute Module lets you accomplish this in a smaller space, with all signals routed on the carrier PCB."

Design Freedom

So what does this mean for hardware hackers? Well, they have much more freedom. The host circuit board can be specifically designed for each individual project.

Need six USB ports, or none at all? No problem. After four camera ports? Go right ahead. Want to interface to a proprietary IO connector or host wi-fi, bluetooth and NFC wireless chips? It's all possible.

Robotic driving and flying vehicles can be sleeker. Portable computing devices can be lighter. And operational power requirements are largely in the hands of the designer.

Who knows what might emerge. Could we see a range of Pi-powered laptops? Maybe even a Pi smartphone? The possibilities are endless.

Visit my Raspberry Pi page for news, reviews, advice and tutorials.

Raspberry Pi-Friendly Java Code Editors

Oracle's Java 8 has a number of new features to excite Raspberry Pi owners, as I mentioned in my Oracle Java 8 for Raspberry Pi post.

However, you'll still need a good code editor. Unfortunately some of the traditional Java IDEs (for example Eclipse and Netbeans) are large, memory-hogging applications.

In the posts below I describe a few Pi-friendly alternatives:

Raspberry Pi Java with Geany
Raspberry Pi Java with Dr Java
Raspberry Pi Java with Greenfoot
Raspberry Pi Java with BlueJ
Raspberry Pi BlueJ Learning Videos
Raspberry Pi Minecraft with BlueJ

More Raspberry Pi Coding, Tips and Tricks

Appcelerator Titanium Development

Creating even simple desktop applications usually requires significant development expertise and knowledge.

Creating applications for mobile phone platforms is typically even more complex, often requiring developers to understand and use numerous platform-specific tools and languages.

Wouldn't it be great to create useful desktop and mobile applications with just a few HTML statements and a little JavaScript? Well, not only is this possible, but your creation can be packaged as native application for the most popular desktop or mobile platforms.

Sound interesting? Well, in this series of posts I'll explain what Titanium from Appcelerator is all about and how it's able to create native look-and-feel desktop and mobile applications using straightforward HTML, CSS and JavaScript skills.

• The Platform
WebKit Engine
Getting Started
Mobile SDKs
Titanium API
Kitchen Sink App
Mobile App Testing

Oracle Java 8 for Raspberry Pi

Oracle Java 8 is out. And it includes a first-step implementation of the long proposed Compact Profiles, a modularisation of the Java libraries (part of Project Jigsaw).

And that's good news for Raspberry Pi owners. Why? Well the memory footprint of Java 8 SE Embedded has been significantly reduced, down to under 11MB in some scenarios. That's much smaller that the 44MB memory footprint of the Java 7 SE Embedded solution.

Want to find out more? The Oracle Learning Library is about to launch a free online course called Develop Java Embedded Applications Using a Raspberry Pi.

The course is presented as a series of short videos and includes expert tuition from people like Stephen Chin, Jim Weaver, Simon Ritter, Angela Caicedo and Tom McGinn, plus source code examples. It kicks off on 31st March 2014.

You'll find more information on Java editors for the Raspberry Pi and the Pi Java Minecraft API in my post Raspberry Pi friendly Java Code Editors.

More Raspberry Pi Coding, Tips and Tricks

Web Skills: Patience and Perseverance

Creating a world class website isn't a five minute activity. The best sites have pages and pages of interesting, informative, topical and captivating content; all interlinked into a cohesive, easy-to-navigate experience.

Building such a collection takes many months of creative effort. Even then there's no time to relax. The appeal of a static, unchanging website will soon dwindle.

A lively, topical, frequently refreshed website will entice visitors to return time and time again to discover what's new. Even spending just 15 minutes a day to update and refine your pages will give you the edge on rival websites.

Of course, at times building a great website can seem a little daunting to even the most patient and committed person. One way to provide encouragement is to regularly review search engine statistics. Noting how the audience swells as your website content expands in quantity and quality is a extremely motivational.

Web Skills: Project Management

Self-motivation and drive is all well and good, but it's easy to become swamped by a mountain of important and urgent tasks.

With so many design, development, research and marketing activities to coordinate, prioritise and monitor, applying even a few project management techniques can make all the difference.

It isn't necessary to own a sophisticated tool or attend a training course. A simple prioritised paper-based list approach will work.

Even better, why not record each new activity on a separate card or post-it note. It's a fast way to capture a fleeting thought or idea, and offers a simple way to reorganise the task list.

The trick is to allocate a short period each day to review and maintain your task list.

Web Skills: Page Design

A good eye for design is another important skill. Regardless of the content, no web surfer will stay long on a website with messy layouts, clashing colours, difficult to read fonts and humdrum images.

As you'd expect audience empathy is key. Bright, bold designs that works for one audience might be an instant turn-off for another. Equally, delivering a straight-to-the-point, business-like format might not be lively enough for some.

You'll need to visualise the complete site experience. Once the design is in your head, or sketched out, it's easier to harness the tools and languages and bring it to life.

Many designers prefer to create the layouts with advanced graphical-interface editors. Such a tool allows them to focus on the visual layout and flow aspects of the design, without getting bogged down in HTML or CSS specifics.

Adobe's range of tools are a firm favourite with many designers, even though the price may be prohibitive to some. However, there's plenty of free and open source alternatives, so give them a try and you'll learn a great deal about the mechanics and nuances of website design in the process.

Remember design is an ongoing process. Whether it's new ideas, audience feedback or interoperability with the latest techniques and technologies, there's always room for improvement and subtle refinement.

Web Skills: Audience Empathy

You might consider empathy to be a rather peculiar skill for website creation, but that's not the case at all. Establishing an empathy with your prospective audience is at least as important as any technical prowess.

Any successful website will have a target audience in mind. It could be aimed at business people, sport-minded individuals, technology experts, bookworms or those with a social media addiction. Delivering a website with plenty of frequently updated, audience-specific content will give them reason to return to your site time and time again.

An empathic perspective enables you to determine who these people really are and what makes them tick. The trick is to understand what's likely to grab their attention and, just as importantly, what will turn them off. In effect you're attempting to detach yourself from the website technicalities and try to think like a visitor who is assessing the site for the first time.

There are many questions to ask...
• As a first-time visitor can you quickly determine what the site is about?
• Which elements immediately grab your attention?
• Is the content relevant, fresh and topical?
• Does the flow and navigation appear intuitive and consistent?
The more questions you ask the better your assessment will be, and the more successful your people-focussed changes will become.

Web Skills: Image Management

Images are a critical ingredient to great looking websites. A typical site will incorporate numerous images in a wide range of sizes and formats. Each image file format (such as JPG, PNG and GIF) has it's own virtues and capabilities. For example GIF files can contain animations.

Today we have access to an assortment of professional-grade image manipulation products and tools, both free and commercial. At the very least your chosen image tool software should be able to crop, scale, rotate, resize and adjust the colour balance of an image. And be able to save it in a variety of image formats.

Applying advanced techniques such as colour fades and tints, rounded edges and shadows, blurs and soften effects, masks and layers, will add a touch of class and individuality to your page banners and inline images.

The ever popular Adobe Photoshop product range has many fans. Fans who have generated a wealth of web-located tutorials, in both written and video formats.

Photoshop isn't free, but there are many open source alternatives, including the immensely powerful GIMP editing tool. Version 2.8 sports a more intuitive single-window interface. It can be downloaded from the GimpShop website, where you can also see how it in action via these tutorial videos).

The Lua Language

Origins and People

Lua, named after the Portuguese for moon, is a fast, lightweight, embeddable scripting language based around a relatively simple 'C' application programming interface (API).

Roberto Ierusalimschy first created the language in 1993 as part of his work with the Computer Graphics Technology Group (Tecgraf) at Brazil's Pontifacal Catholic University of Rio de Janeiro. Brazil's restrictive trade agreements of the time helped to boost the significance of home grown technology solutions from this and similar technology groups.

Lua's design takes syntactic influences from SQL, DEL (a data entry language), Modula and Scheme. The friendly syntax and multi-platform availability makes it an ideal choice for products that encourage end users to modify or extend the software's behaviour, without exposing them to the inner complexity.

After initially using BSD-like licensing, from version 5.0 onwards Lua was released under the open source MIT license.

Developer Highlights

The intention of Lua's smallish data structure collection and relatively limited feature set is to strike a balance between approachability, flexibility, performance and implementation size. However, another benefit of these design principles is that they help reduce the learning curve to a minimum.

Built on top of the ISO C language Lua offers maximum portability and a tiny binary footprint. The interpreter is typically just 180kB in size. Yet Lua still manages to support automatic memory management and desirable functional language traits such as first-class functions and closures.

Lua is considered an ideal scripting language solution by numerous technology companies and open source projects. It has also found a niche in the video gaming world, with game-enhancing Lua scripts available for World of Warcraft, FarCry and Sim City 4. Lua scores highly with game developers because of its easy to embed nature, fast execution speed and easy-to-grasp syntax.

The LuaForge website hosts a comprehensive collection of Lua modules.

Developer Lowlights

Lua was always intended to be a small, efficient scripting language, rather than a fully-featured, general purpose one. This invariably means it's more suited to a complementary tool role for existing commercial products and open source initiatives.

An intrinsic part of Lua's design philosophy is its limited number of data types and slimmed down feature set. Yet, such restrictions may lead more experienced developers to focus on other, more flexible scripting languages such as JavaScript, Python and Go.

Lua's bare bones Unicode support may trouble some programmers, especially in web development scenarios. And its pattern matching functionality is rather limited when compared to the power of regular expressions.

The Future

Lua scripts are already incorporated into a surprisingly diverse range of products. Lego Mindstorms, Adobe's Lightroom, MySQL's Workbench, Propellerhead's Reason Digital Audio Workstation, Canon's Hack Development Kit for cameras, the Celestia astronomy app and numerous Linux apps are just a few of the many examples.

In January 2012 Lua won a Front Line Award from the Game Developer magazine in the Programming Tools category. And the fast growing open source Machine To Machine (M2M) Communication development world has recognised its potential. With such a pedigree Lua's future appears to be assured.

The C++ Language

Origins and People

In the early 1980s at Bell Laboratories the Danish computer scientist Bjarne Stroustrup decided take the C language and add classes. The result was the birth of C++, and this higher-level, object-oriented language became an instant hit.

Microsoft and Intel and other software organisations soon created their own C++ compilers. Such high profile support ensured a rapid rise in popularity. Mass adoption of C++ by programmers in the 1990s provided huge momentum, and it soon became a major force in the operating system and application development arena.

Bjarne Stroustrup also wrote the classic The C++ Programming Language textbook. New revisions of the book reflect the language's evolution, with the third edition describing features such as virtual functions, the standard template library, exceptions and namespaces.

Developer Highlights

As C++ is a superset of C, the compiler will also compile C programs. In fact, a C++ compiler tends to be superior when it comes to reporting syntax errors and possible coding issues. With its C foundation the cross-platform portability of C++ is equally impressive. And the resulting binary programs are just as efficient on devices with low-powered CPUs and restricted memory.

The ability to encapsulate complex functionality in a collection of flexible object-oriented classes resulted in a plethora of GUI and domain-specific libraries. Developing large, GUI-centric applications in C++ is far easier than with C.

In the years before alternatives like Java and the birth of the web, C++ gained a reputation as the language of choice for coding power, flexibility and control - features still highly valued by today's C++ developer.

Developer Lowlights

With its comprehensive specification and expressive syntax C++ demands a significant learning curve. Competent C++ developers must be just as comfortable with its low-level capabilities as they are with classes. A design-centric mentality is particularly important when working with object-oriented languages. It's a shift that programmers sometimes find difficult.

The scale of some C++ developments can be daunting, even for experienced programmers. Navigating around hundreds or thousands of libraries and source code files isn't easy. Ensuring all this code is subjected to the rigorous testing necessary to achieve reliable, glitch-free operations is an even bigger challenge.

Despite its class extensions the C++ syntax still has a low-level feel, especially when compared with Java, Python, PHP and the like. This can make life difficult for less-experienced developers trying to maintain existing libraries and applications.

The Future

Linux, Microsoft Windows, Apple OS X and Google Android operating systems contain millions of lines of C++ code. And, as many of their respective applications - such as Microsoft Office and Libre Office - are also heavily reliant on C++ code, it's unlikely to be superseded any time soon.

C++ first became an ANSI/ISO standard in 1998. The ISO committee's latest 2011 work, C++11, is a major enhancement, with improvements for multithreading and generic programming. Plans to create new C++14 and C++17 standards will ensure C++ remain a highly relevant language in the coming decade.