C++ Development and Consultancy - Open-Source Flash


Benjamin Wolsey

I am a software developer and consultant based in Munich. My specialities:

  • Software design development (C++, Java)
  • Open-Source Flash
  • Deployment and customization of Free Software
  • Technical documentation and translation

I am one of the top contributors to the FSF high-priority Gnash project.

Boost Program Options accumulator type

After various requests, I've licensed my boost program_options extension code accumulator.hpp under the Boost Software License 1.0. It also now supports taking an argument on construction to store the value as well as the notifier function.

To recap: the accumulator type adds support for repeated options used to increment a particular value. Often this is used for verbosity, so that -v sets a verbosity level of one, -vvv a level of three.

Weekend adventures in noise

Perlin noise in Gnash

My graphic design skills are poor, a fact all the more frustrating because I have a good enough eye to recognize when something looks bad, but not the aptitude to improve it.

Unlike less restrained people, I haven't inflicted the unreadable crimes of Word Art on my fellow humans since I was a teenager (though as previous work on implementing gradients for the MovieClip drawing API shows, when you have an excuse, playing with garish gradients is still fun!). But along with other design-incompetents, I'm fascinated by adventurous graphics and patterns.

Most concise C++ FizzBuzz

What is the most concise C++ FizzBuzz?

The following code appears initially to be a pretty good candidate:

#include <iostream>
#include <ostream>

using std::cout;

int main()
    for (int i=0;i++<100;)

New features for Gnash 0.8.10?

Milk Quest

As well as many stability fixes, Gnash 0.8.9 brought improvements in sound playback, gradient rendering, RTMP remoting support, and implementation of important parts of the BitmapData class.

For the next version, provisionally 0.8.10, there are already some exciting new improvements in the development repository: the Qt4 GUI supports clipboard setting and mouse wheel input, the BitmapData implementation is optimized and extended, and the XML class is finally fully implemented.

Gnash 0.8.9 released!

There's no official announcement yet, but the tarballs of Gnash 0.8.9 are available from GNU mirrors.

Gnash 0.8.9 brings many bugfixes and some new features, including:

  • Fixed playback for some MPEG4 streams, playback of PCM sound with the FFmpeg media handler and ADPCM sound with the Gstreamer media handler.
  • Support for embedded ScreenVideo.
  • Fixes for several crashes.
  • Improved ActionScript performance processing, especially for interactive applications.

Flash versions

SWF version 1: The Goddamn George Liquor Program

For the age of the internet, Flash has an extraordinarily long history, stretching for almost 15 years since its introduction in 1996. It's had to adapt continually during this time, developing from a simple animation format with limited user interaction to add network connections, video, camera and microphone access, remoting and two separate versions of an extensive scripting language.

Windows installer for Gnash

The Windows 32 builds of Gnash available from this website now use an installer for easy installation and removal of Gnash. Like the executables themselves, the installer is created under Debian GNU/Linux using only free software.

The Gnash for Windows installer is available in the download area. See also the page about Windows binaries for more information.

Boost Program Options

Boost's program_options library does a lot of things (such as formatting help messages and adding default values) automatically, and it means different program modules can add and handle their own options. This is exactly what we need it for.

Its main disadvantage is incomplete documentation. There are some common command-line behaviours that aren't built in, which is fine as long as they can be added. And indeed program_options is fairly extensible and flexible, which in turn is fine as long as you have documentation to tell you how to do it.

New possibilities

For the first time in its history and after years of redesigning large swathes of code, Gnash's core libraries are re-entrant!

Why is this interesting? Until we use it properly, it's not! But it allows Gnash to be used in more powerful and flexible ways.


So what is the excitement about? Re-entrancy here means the ability to use as many objects from Gnash's core library as you like without their interfering with each other, or even crashing.

Syndicate content