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.

Tuesday, 17 January 2017

VEGAS Pro Edit 14 Review

The is the first new release of VEGAS since MAGIX bought it from Sony early in 2016. In spite of its new ownership, the software looks and works pretty much the way it did when it was owned by Sony. There have been only very minor changes to the look of the user interface such as some slightly redesigned icons. Apart from that, if you are accustomed to an older version of VEGAS (see for example my review of version 11 of VEGAS Movie Studio from 2011), then you should feel very much at home with this new release.

VEGAS is a video editing program for Windows. It lets you import and edit video and audio clips by placing them, onto tracks in a timeline area. There you can cut, copy, trim and move the clips. You can add effects, transitions, zooms and pans. And when you are happy with the end results you can create your final video in a large variety of configurable formats.

Scrubbing and Trimming

One of the new features that MAGIX are keen to highlight is the ‘hover scrubbing’ mode in the trimmer window. You can edit individual clips by loading them into the trimmer window where you can preview the clip and cut out a section to create a smaller subclip. By tradition, the trimming is done by selecting regions on a track shown beneath the video preview. By enabling hover scrubbing, you can work much more quickly by simply hovering your mouse from left to right over the video preview in order to scroll rapidly through the clip. When you see an appropriate start-point for your subclip you just click the mouse then carry on hovering until you find a suitable end-point, then click again.

You can hover your mouse over the clip preview to scroll quickly through it.

One curious feature of the Trimmer window is that the popup menu from which you select options is disabled when you turn off hover scrubbing. I spent some time trying to find out how to turn that option on again, but since the appropriate menu no longer popped up, it seemed impossible. Finally I discovered that if I opened up the wave-form track displayed beneath the window, I was able to click on that in order to display the menu. I presumed that the vanishing Trimmer menu was a bug and I have reported it to MAGIX. I am told it will be fixed in a forthcoming update.

If you want to speed up a clip you can do that by adding a ‘velocity envelope’ that now speeds up the clip by up to 40 times. The velocity envelope is shown as a horizontal line on the clip and you can add points to the line to increase or decrease the speed at selected points. The velocity only applies to video, however, and any accompanying audio is not synchronized when changes are made.

High Definition

There have also been a few additions to support high definition and high frame-rate video. For example, if you are working on a 4K video project and you need to include lower resolution video clips, VEGAS can ‘upscale’ those clips to improve their appearance when viewed at a higher resolution than the one in which they were recorded. If you are making slow-motion videos, you can simplify the inclusion of videos recorded at a high frame rate (say 120 or 240 frames per second) into your lower frame-rate videos by selecting the desired playback rate and letting the software automatically calculate the necessary adjustments. Other additions for 4K video include support of Black Magic and RED Digital 4K cameras and rendering in HEVC/H265 video formats.


A new Smart Zoom plugin has been added. That lets you select the plugin from a list, then, in a dialog, pick the zoom level and the centre of the zoom to add panning or cropping to a video clip. The Smart Zoom plugin is an alternative to the regular pan/crop tool and it is aimed at preserving the sharpness and resolution of a video when zooming.

At this point, it’s probably worth mentioning that VEGAS makes fairly extensive use of plugins. To use one, you click an icon in a clip on the timeline to pop up the plugin selector. Plugins can do everything from correcting the colour balance to adding blurs, light rays and vignettes. Each plugin comes with its own dialog in which you can set and adjust parameters. When multiple plugins are selected, this creates a ‘plugin chain’ - in effect, a linked list of plugins that are shown at the top of the plugin editing dialog. You can switch from one plugin to another by clicking the button in the chain, then make adjustments as necessary. This is a useful and flexible capability but, especially for a new user, it can be confusing. The problem is that while some plugins are selected from the plugin dialog, others provide video effects which are selected from a docked pane in VEGAS. Those effects are also added to the plugin chain. Each time an effect, or a plugin, is added to the chain, you are obliged to work in a popup dialog. This means you you regularly have to switch ‘modes’ from editing within the integrated environment to working in popup editors - the same is true for pan-and-crop and transitions (blurs, fades and animated effects) between clips: they all come with their own popup editors. Long-time users of VEGAS are, of course, used to working in all these popup editors and probably MAGIX has good reasons for retaining this way of working. Even so, I have to say it seems quite an inelegant way of editing at times.

When multiple effects or plugins are selected, these are added to a ‘plugin chain’ seen at the top of this dialog. Each plugin in the chain can be selected in order to change its parameters. But this does mean that you have to work a great deal in dialog boxes.

By comparison, many of the effects such as zooms and traditions in MAGIX’s other video editing package, Video Pro X (see my review), are added and edited in a docked window so that you can see the effects immediately applied in the preview window alongside. Personally, I prefer Video Pro X’s more integrated approach to VEGAS’s innumerable popup dialogs. Moreover, the entire user interface of Video Pro X is altogether sleaker and more modern-looking than that of VEGAS.

Video rendering speed (when producing your finished video) in VEGAS is unremarkable. It’s always hard to make direct comparisons, since rendering varies greatly according to the hardware, the video output format, the selected options and the video resolution. However, it is certainly the case that VEGAS does not provide rendering at anything like the speed of the fast video rendering of Cyberlink’s PowerDirector (see my review).

VEGAS Editions

VEGAS comes in three different editions: Pro Edit - which is the one I’ve been reviewing ($399), Pro ($599) and Pro Suite ($799). The two higher level products include DVD creation functionality and a number of additional third-party plugins and tools for colour correction, text and title design. The Suite edition also includes Boris FX Match Move and FX Key Blend for enhanced motion tracking and chromakey (green screening). For a full list of features see the product comparison chart

If VEGAS is beyond your budget, there are also three lower-end editions which are called VEGAS Movie Studio (see the product comparison chart These have more limited capabilities (fewer effects, a more limited timeline etc.) and this product range is still at version 13 rather than 14.

Overall, VEGAS Pro Edit 14 is a solid performer with lots of editing options for producing pro-quality videos. Its interface is a bit fussy for my tastes, but on the plus side the fact that this remains little changed from earlier versions makes it easily accessible to existing users. In spite of various useful additions to this release, there are no real show-stoppers. My impression is that this first new release from MAGIX is primarily aimed at providing an upgrade to current VEGAS users rather than trying to attract substantial numbers of new users. Given the increasingly competitive market in video editing software, I’d like to see some more substantial innovations in version 15.

Sunday, 15 January 2017


Get my best-selling video-based C course – SAVE 80%

73 lessons, plus code and eBook for just $29

THE C LANGUAGE is consistently one of the most in-demand of all programming languages. Good C programmers command some of the highest salaries in the business. But C is a notoriously difficult language to learn. I have already taught C to over 9,500 students online – now I can help you too!

In this course, I take you step-by-step from the basics of C programming right up to advanced topics such as using pointers, buffers, multidimensional arrays, the stack and heap, structs, typedefs, header files, type casts, memory allocation and file-handling.

SIGN UP NOW! Get C Programming For Beginners for just $29:

This is what you get
  • 73 Lectures
  • Over 6 Hours of video instruction
  • 92-page eBook, The Little Book Of C
  • 10 interactive quizzes
  • C source code archive – all the code ready-to-run
  • Lifetime access