Tuesday, 18 April 2017

Advanced C Programming – Pointers. NEW COURSE!

Get this $95 course for just $15.

Pointers. In C, there is just no getting away from them. Understanding and being able to use pointers correctly (and safely) – well, it’s the difference between a professional programmer and an amateur. But pointers are really difficult to use. Aren’t they?

The fact of the matter is, they needn’t be. If you understand them. And that’s what my new course is all about. “Advanced C Programming: Pointers” explains pointers from the ground up. What exactly is a pointer variable and how does it work with addresses in memory? What is indirection? How can you avoid common pointer problems such as memory leaks and program crashes?

Topics covered include:

  • Pointers and addresses
  • Indirection and multiple indirection
  • Pointers and arrays
  • Pointers to structs
  • Data-type alignment
  • Generic pointers and casts
  • Null pointers
  • Memory allocation and reallocation
  • Freeing memory safely
  • Pointer arithmetic
  • Singly and doubly linked lists
  • Queues and stacks
  • Pushing and popping
  • Function pointers
  • Deep and shallow copying
  • Common pointer errors

…and much more

NOTE: This is not a course for beginners. It is aimed at programmers who already have a good working knowledge of C programming and who need to take the next step in mastering C by gaining a deep understanding of pointers. (If you are a beginner, you should sign up to my C Beginners Course first).

Course contents:

  • 58 Lectures
  • Over 3.5 hours of video instruction
  • Downloadable source code of all examples
  • Quizzes and course notes
  • Lifetime access

Advanced C Programming: Pointers
Regular Price: $95
Sign up today for just $15
(Offer runs until end of May, 2017)

Wednesday, 5 April 2017

NetBeans Day - in London!

If you are a fan (as I am) of the cross-platform, multi-language programmer's editor/IDE, NetBeans, then you may be interested in the forthcoming NetBeans Day event at The University of Greenwich on Tuesday, 25th April 2017.The free day will include a wide range of talks related to cutting edge Java and JavaScript technologies and tools, both for beginners and experts alike.

This is the line-up:

10:00 - 10:30: News from the NetBeans Community (Geertjan Wielenga)
10:30 - 11:00: 
Graal: A Polyglot VM for a Polyglot IDE (Chris Seaton)
11:00 - 12:00: NetBeans 101 (Zain Arshad & Mark Stephens)
12:00 - 13:00: Lunch & Networking
13:00 - 14:30: Workshops (The two below will run in parallel, you'll need to choose!)
 - Baking a Java EE 8 Micro Pi (Andrew Pielage & Mike Croft)
 - Diving into the Newest Jigsaw and Java 9 Features (John Kostaras, Geertjan Wielenga)
14:30 - 15:00:
 Tea & Networking
15:00 - 16:30: Workshops (The two below will run in parallel, you'll need to choose!)
- Rapid JavaScript Development with Enterprise Technologies (Geertjan Wielenga)
- Extending NetBeans IDE (Zain Arshad, Mark Stephens, Neil Smith) 
16:30: Wrap Up and Prizes

There are very few spaces left so if you want to go be sure to register NOW!

Tuesday, 4 April 2017

Media 100 - Mac video editor, now free!

Media 100 Suite, a well-established video editing suite for the Mac is now available free. This news was just announced by MacVideo Promo, a company that specializes in deals on Mac software, in partnership with Media 100's developers, Boris FX.

According to the press release, key features include: "4K/2K/HD Video Editing with Professional Video I/O Support Media 100 supports dozens of video standards in 4K, 2K, HD, and SD resolutions at frame rates from 23.98 to 60 frames per second. Acquisition interfaces for AVCHD, AVC-Intra, FireWire, Panasonic P2, and Sony XDCAM are provided as well as support for AJA and Blackmagic Design video I/O interfaces.

"Boris RED: Professional Transitions and Titling The Boris RED plug-in for Media 100 is included free with each Media 100 download. Boris RED is integrated 3D titling and visual effects software that launches a user-friendly custom interface directly from the Media 100 timeline for advanced title animation and effects.

"Eye Scream Factory’s 100 Essential Transitions Each free Media 100 Suite download includes Eye Scream Factory’s “100 Essential Transitions” package, a $49.95 value. 100 Essential Transitions features a variety of designer transition effects ranging from the familiar to the inspired, including Artistic Dissolves, Glow Dissolves, Luma Dissolves, PullSwaps, Rays Dissolves, and Wipes. Editors can tap into a variety of looks featuring glints, lens flares, waves, ripples, and DVE effects. The customizable transitions can be applied at any duration."

Download the software from:

Tuesday, 7 March 2017

VEGAS Movie Studio 14 Platinum review

VEGAS Movie Studio 14 Platinum $79.99 (£69.99)

VEGAS Movie Studio 14 is a low cost video editing package that provides the essential functionality of MAGIX’s more expensive VEGAS Pro software. The entry-level product costs $49.99 while the more powerful Movie Studio Platinum (which I am reviewing here), costs just $79.99.

In common with the more expensive VEGAS Pro video editing package, Movie Studio lets you create videos by importing clips onto a multi-track timeline where you can edit them by cutting, copying, pasting and trimming them. You can merge one clip into another by adding a range of fades and transitions. And you can also apply a large range of video effects to alter colour and brightness, glows, lens flares, pixilation effects and so on. The transitions and effects are arranged in a panel at the top-left, a previewer is shown to its right and the timeline is docked underneath. As with VEGAS Pro, multiple effects can be added to a single clip and when you do this they are arranged as a linked list or ‘plugin chain’ which can be shown in a popup dialog. Here you can delete unneeded plugins or select a specific effect from the chain in order to edit its parameters.

You can render videos in a large range of formats suitable for internet, mobile devices, DVD or viewing on desktop computer
Other essential features of Movie Studio include the ability to pan and crop videos to zoom in and out or move the viewing area up or across a video clip; you can record and edit audio tracks and apply effects such as reverb and distortion or apply an audio restoration filter to remove unwanted clicks or background noises; and when you are finished you can create your final video either by selecting the ‘Make a movie’ option (the simplest way) or by producing the video in a large number of rendering formats such as Quicktime, Video For Windows and MPEG-2, each of which provides a large range of options to tailor the output.

There are a few new features in this latest release such as ‘hover scrub’ editing – that is the ability to select and trim clips simply by moving the mouse over a popup video preview; there is a multi-camera editor to help you edit together clips taken simultaneously with more than one camera; and various new video effects and transitions have also been added. As an extra bonus, all editions of Movie Studio now come with a separate music editing application called Music Maker. This lets you record and edit music either by ‘playing’ an on-screen keyboard or mixing together pre-recorded sounds (‘loops’) on a multi-track timeline, editing them in much the same way you would edit video clips in Movie Studio. As the stand-alone edition of Music Maker costs around $60, this is a pretty good deal. The software provides a limited range of instruments and loops as standard and you can buy more if you need them. If you want to add royalty-free music to your videos (even if you aren’t a musician!) this is a pretty good way of doing so.

There is even a music-making program supplied as an added extra. This lets you make music tracks even if you can’t play an instrument!
Overall, Movie Studio Platinum is a good video editing product for serious amateurs or even professionals on a tight budget. Its interface can be a bit over-fussy (all those popup dialog boxes – see my review of VEGAS Pro) so it is not, in my view, as easy to use as MAGIX’s other video editor, Video Pro X. Even so, at a price of around $80, it packs a lot of punch and is great value. If you decide that this is the program for you, I would recommend that you get the Platinum or Studio edition rather than the slightly cheaper entry-level edition. The entry-level version omits some important tools such image stabilization and colour correction, multi-camera editing and hover-scrubbing, it lacks the ‘DVD Architect’ for burning DVD and Blu-ray discs and its timeline is limited to 10 video tracks (rather than the Platinum’s 200).  Given the fact that there is only a $30 difference between the price of the entry-level and Platinum editions, I’d say that opting for the Platinum would be $30 well spent!

The VEGAS range – spoilt for choice?

MAGIX has a bewildering range of video editing software. In addition to its well established Video Pro X, it has now released two separate ranges of VEGAS video editing packages. In theory, the high-end range, VEGAS Pro, is aimed at professional users while the less expensive VEGAS Movie Studio range is aimed at novices and amateurs. However, this distinction is not entirely clear-cut. Gary Rebholz  (MAGIX Software Product Owner) explains that “VEGAS Movie Studio Platinum is a great next step, which introduces pro-level features and techniques.” At any rate, this is a list of the full VEGAS range:

  • VEGAS Movie Studio 14 $49.99
  • VEGAS Movie Studio 14 Platinum $79.99
  • VEGAS Movie Studio 14 Suite $139.99
  • VEGAS Pro 14 Edit $399
  • VEGAS Pro  14 $599
  • VEGAS Pro Suite 14 $799

As you would expect, the range of editing features and addins (such as 3rd party effects) is more limited in the cheaper packages than in the more expensive editions. In fact, it’s bit more complicated than that. For example, the top of the Movie Studio range (Movie Studio Suite) seems to have some things that are missing from the bottom of the VEGAS range such as NewBlue Titler Pro Express plugin (which is not in VEGAS Pro 14 Edit). In addition, while the low-cost Movie Studio products include a copy of the Music Maker application, the higher cost VEGAS Pro products do not. At any rate, even by making a close comparison of the product features (see the Movie Studio and VEGAS Pro feature comparison charts, it is by no means easy to determine which edition provides the best mix of features in its price range. To be honest, I think the mix of features spread across six alternative editions is confusing. In my opinion, six editions is a few editions too many.

Wednesday, 1 March 2017

Getting Started with C Programming

In the last article in this series, I gave a quick overview of the C programming language and showed how to write a very simple program. Here I will explain how to pass arguments to your programs and display formatted strings.

Passing Arguments

To pass values to the program, you can just run the program at the command prompt and put any arguments after the name of the program itself, with spaces between each item. For example, if I wanted to pass the arguments “hello” and “world” to a program called HelloWorldArgs.exe (on Windows) or (on OS X) I would enter this at the command prompt or Terminal:

HelloWorldArgs hello world

We’ll assume that the program has a main() function with argc and argv arguments like this:

int main(int argc, char **argv)

My program ‘receives’ the two bits of data (the strings “Hello” and “world”) which I entered after the program name itself and it stores them in the second argument, argv. The first argument, argc is an automatically calculated value that represents the total number of the arguments stored in argv. This is the program code:

int main(int argc, char **argv) {
int i;
for (i = 0; i < argc; i++) {
 printf("Hello World! argc=%d arg %d is %s\n", argc, i, argv[i]); }
return 0;

When I pass the program the two arguments: hello and world, this is the output which is displayed:

Hello World! argc=3 arg 0 is 03_HelloWorldArgs
Hello World! argc=3 arg 1 is hello
Hello World! argc=3 arg 2 is world

This shows that the count (argc) of arguments is 3 even though I have only passed two arguments. That’s because the program name itself, HelloWorldArgs, is automatically passed as the first argument. The first argument here has the index number 0. The arguments at index 1 and 2 are the arguments that I passed to the program: hello and world.

Note: the two asterisks before argv are important:

char **argv

They indicate that argv is a list of strings. Strictly speaking argv is an ‘argument vector’ or a pointer to an array of character-string arguments.

The block of code that starts with the keyword for is a loop that causes the code that follows it, between the curly braces, to execute for a certain number of times. Here the code executes for the number of times indicated by the value of the argc argument). The printf statement prints the string "Hello World! argc=%d arg %d is %s\n" and it substitutes the values of argc, i, argv[i], at the points marked by %d, %d and %s in the string. At each turn through the for loop the string at the index i in the argv array is printed.

puts and printf

There are several functions that can be used to display (print) information when your C programs run. Both printf and puts, can display a simple string.

printf("hello world\n");
puts("hello world again\n");

The printf function also allows you to embed ‘format specifiers’ into a string. A format specifier begins with a % and is followed by a letter: %s specifies a string. %d specifies a decimal or integer. When format specifiers occur in the string, the string must be followed a comma-delimited list of values. These values will replace the specifiers in the string. The programmer must take care that the values in the list exactly match the types and the number of the format specifiers in the string otherwise the program may crash. Here is an example:

printf("There are %d bottles standing on the %s.\n", 20, "wall\n" );

When run, the code produces the following output:

There are 20 bottles standing on the wall


It is a good idea to add comments to your programs to describe what each section is supposed to do. C lets you insert multi-line comments between pairs of /* and */ delimiters, like this:

/* This program displays any 
 * arguments that were passed to it */

In addition to these multi-line comments, modern C compilers also let you use ‘line comments’ that begin with two slash characters // and extend to the end of the current line. Line comments may either comment out an entire line or any part of a line which may include code before the // characters. These are examples of line comments:

// This is a full-line comment

for (i = 0; i < argc; i++) // this comment follows some code

This series of C programming lessons is based on my book, The Little Book Of C, which is the course text for my online video-based course, C Programming For Beginners, which teaches C programming interactively in over 70 lessons including a source code archive, eBook and quizzes. For information on this courses see HERE.

Friday, 10 February 2017

Visual Studio 2017 Launches March 7th

The latest version of Microsoft's powerful multi-language Windows-based programming environment, Visual Studio, is launched on March 7th, 2017. For more information see this Microsoft blog post: - For more technical details (and a download of the release candidate if you can't wait for the finished version) to to:

Friday, 3 February 2017

Introduction to C Programming

This is the first in a series about the basics of programming in C. These lessons are taken from my book, The Little Book Of C, which is the course text for my online video-based course, C Programming For Beginners, which teaches C programming interactively in over 70 lessons including a source code archive, eBook and quizzes. For information on this courses see HERE.

What is C?

C is a general-purpose compiled programming language. It was first developed by Dennis Ritchie in the late ‘60s and early ‘70s. The C language is widely used for all kinds of programming: everything from general-purpose applications, programming language tools and compilers – even operating systems. The C language is also widely used for programming hardware devices.

A C compiler (and an associated tool called a ‘linker’) is the program that translates your source code (the text you write in an editor) into machine code that is capable of being run by your operating system. C compilers are available for all major operating systems including Windows, OS X and Linux.

Editors and IDEs

In order to write C code you will need a programming editor or IDE (Integrated Development Environment) and a C compiler. For beginners, I recommend the CodeLite editor which is freely available for several operating systems: However, if you already use an editor or IDE that supports C programming, that’s fine. Suitable IDEs include NetBeans, Microsoft Visual Studio, Code Blocks and many others.

Once you have a C compiler and a C source code editor installed you are ready to start programming in C.

Hello World

This is the traditional “Hello World” program in C…

#include <stdio.h>

main() {
printf("hello world\n");

This program uses (that is, it ‘includes’) code from the C-language ‘standard input/output library, stdio, using this statement:

#include <stdio.h>

The code that starts with the name main is the ‘main function’ – in other words, it is the first bit of code that runs when the program runs. The function name is followed by a pair of parentheses. The code to be run is enclosed between a pair of curly brackets:

main() {


In this case, the code calls the C printf function to print the string (the piece of text) between double-quotes. The “\n” at the end of the string causes a newline to be displayed:

printf("hello world\n");

The anatomy of a C program

This shows the essential features of the simple ‘Hello world’ program…

The program above could be rewritten like this:

#include <stdio.h>

int main(int argc, char **argv) {
printf("hello world\n");
return 0;

In fact, if you create a new C project using the CodeLite environment, the code above will be generated automatically. When this program is run, you will see no difference from the last program – it too displays “Hello world” followed by a newline. The main differences are that this time the name of the main function is preceded by int. This shows that the function returns an integer (a full number) when it finishes running. The number 0 is returned in the last line of the function:

return 0;

This return value is unlikely to be of any significance in your programs and, for the time being at any rate, you can ignore it. By tradition, a value of 0 just means that the program ran without any errors. Any other value might indicate an ‘error code’.

The other difference is that this program contains two ‘arguments’, called argc and argv, between parentheses:

int main(int argc, char **argv)

 These arguments may optionally be initialized with values passed to the program when it is run. I’ll shown an example of this in the next lesson.