April 9th, 2008 — ActionScript, Flash
PlanetFlash.org is here!
Planet Flash is a central place to look for news from the Flash community. It downloads news feeds published by blogs from Flash designers and Flash developers all around the world and aggregates their content together into a single combined feed, latest news first.
Let me know if you don’t find your Flash blog there
April 2nd, 2008 — ActionScript, Flash
While working on a recent campaign we had a bit tricky production pipeline. Our 3D artist was working with modo but needed to export to Collada (which is not supported by modo and currently one of the best supported formats in Papervision3D). To be able to export his work to be used with Papervision we needed to export all the models as object files (.obj) and import them into Blender (which supports Collada export).
To overcome this two-step process (and since I knew the OBJ-format from my Computer Graphics course at college) I started to dive into writing my own an OBJ-parser for Papervision3D.
It went pretty well actually. I got some help on the Papervision mailinglist and ended up with this result (see OBJ-parser source).
It’s really simple to use actually. You can just use it as the other parsers that comes with Papervision by default. Download OBJ.as, put it together with the rest of the parsers in the GreatWhite branch. Here’s a simple example from my prototype:
var fish:OBJ = new OBJ("fish.obj", "fish.mtl");
scene.addChild(fish, "Fish");
This code loads all the geometry data from the fish.obj-file and material data from the fish.mtl-file and store it in the Papervision object model. Then the object is added to the scene so it will be visible when the scene is rendered.
The OBJ-parser currently supports:
- Geometric vertices, Texture vertices and vertex normals
- Seperate objects for each group
- Parsing materials from Material Library File (.mtl)
Get the source (OBJ.as)
December 17th, 2007 — PHP, Prado
The December issue of International PHP Magazine includes my latest article “Seamless AJAX with PRADO - An introduction to ActiveControls”. In this article I discuss some AJAX design patterns and show you how to make use of them in AJAX enabled components that ships with the PRADO framework.

Get your copy. I hope you like it.
November 27th, 2007 — eZ Publish
I recently implemented a multilingual portal in eZ Publish and was faced with how to handle the translation workflow between the editors and translators. During the project I got to know the translation features in eZ Publish and got a better feeling about what’s missing. This ended up as a requirement specification that I suggested for Open Funding a few days ago. At the time of writing it has gotten 25 votes so it seems like someone agree with me. Please cast your votes if you like it
November 27th, 2007 — eZ Publish
Packt Publishing recently released their new book “Managing eZ Publish Web Content Management Projects” written by Martin Bauer from designIT.

I just went through it and this is the first book ever written about managing content management projects in general and using eZ Publish in particular. There’s a lot of technical documentation and end user documentation about eZ Publish, but there has not been any documentation for project managers besides the more general project management literature.
This book contains information on all phases in a typical eZ Publish projects life cycle. From gathering requirements, writing a project brief, planning a workshop with the client, get to the right estimates, writing the requirement specification, managing risk and find the right pricing. To managing the production using concepts from agile development, managing the information architecture with content modeling, testing, training, maintainance and support.
The nice thing about this book is that it’s not technical. It’s closely related to eZ Publish, but it also goes a far way on the content management part.
If you are a project manager responsible for any eZ Publish projects in your organization you should definitely read through this book. Developers, designers and end users can look somewhere else. However, developers and project managers work tightly together and need to understand each other. So your job as a developer is to continuously educate your project manager to understand your world - the first thing you can do is buying him/her this book
So, a last tip from me: Most real life content management projects is a job for “The Three Musketeers” (the designer, the developer and the project manager).
- You need a solid interaction designer to create all the nice looking web interface so both the client and user gets happy (no one likes a bad interface even though the back-end solution is fantastic).
- You need a good developer that now how to slice the web design, know the eZ Publish product, the template language and how to create custom extensions.
- And you need the project manager to manage everything described in this book.
November 17th, 2007 — ActionScript, Flash
I’m not sure if I got the latest source of Revolt, however I just cleaned up the Revolt source code so it compiles with strict mode in ActionScript 3.
Download the source code under the CreativeCommons Attribution-ShareAlike 2.5 license and compile the demo with:
mxmlc -compiler.strict Revolt.as
NOTE: The command-line compiler mxmlc comes with Flex SDK.
November 16th, 2007 — ActionScript, Flash
I’ve always been a fan of the demoscene - both the music and how visual appealing animations are created out of algorithms.
SoundMixer.computeSpectrum() in the Flex 2 SDK let you extract the current sound wave and place it into the specified ByteArray object so you easily can use it to draw your own effects.
Antti Kupila has written Revolt, an ActionScript 3 based spectrum analyzer. In addition to use the the computeSpectrum() in a sound processor class it contains drawers, scalers, effects and presets which make it really easy to create cool demos in Flash 9.
Here’s my attempt on creating a demo with Revolt. It’s built up of 4 different custom written effects put together in Revolt.




If you are interested in what’s going on in the Flash scene check out flashscene.org and AS3 Sound Spectrum Contest Results at The Flash Blog.
November 11th, 2007 — ActionScript
A spectacular thing you can do with Flash is detect motion in your web camera. This is done by continuously compare bitmap data from the current image with the previous image.

Here’s a demo where you can try to head the ball - it’s true
(you’ll need a web camera)
The whole process is described in this tutorial. I also found some other examples. If you have any references on using webcam motion detection, please post it in the comments.
November 10th, 2007 — CSS, News
In August, Olav Frihagen Bjørkøy launched Blueprint, a CSS framework to cut down CSS development time. Blueprint contains an easily customizable grid, some sensible and nice typography, relative font-sizes, typographic baseline, perfected CSS reset for all browsers, a stylesheet for printing and an extendable plugin system.
Check out the tutorial, some of the samples files, the coverage at Wired and Ajaxian, and an interview with Olav.
November 10th, 2007 — lighttpd
The lighttpd web server is chosen by a lot of Web 2.0 services because of it’s high-speed io-infrastructure. During a recent ad campaign one of our web servers where running out of file descriptors because of too many connections and lighttpd started to reject connections. The reason for this is because of how Keep-Alive works.
Keep-Alive is an extension to HTTP, defined by the HTTP/1.1 draft, to allow persistent connections. These long-lived HTTP sessions allow multiple requests to be send over the same TCP connection and in some cases results in an almost 50% speedup in latency times for HTML documents with a lots of images.
Keep-Alive also behave differently in HTTP/1.0 and HTTP/1.1.
HTTP/1.0
If the browser support Keep-Alive, it adds an additional header to the request:
Connection: Keep-Alive
When the server generate a response to this request it also adds this header:
Connection: Keep-Alive
This way the connection is kept open and the client will reuse the current connection upon the next request. This continue until either the client or the server decides to drop the connection.
HTTP/1.1
In HTTP 1.1 all connections are kept alive, unless stated otherwise with the following header:
Connection: close
The Connection: Keep-Alive no longer has any meaning.
lighttpd configuration
The default configuration for Keep-Alive in lighttpd is (in /etc/lighttpd/lighttpd.conf):
server.max-keep-alive-requests = 128
server.max-keep-alive-idle = 30
server.max-read-idle = 60
server.max-write-idle = 360
Which means it can handle 128 Keep-Alive requests in a row on a single connection waiting 30 seconds before an unused Keep-Alive connection is dropped.
To handle more connections at once under high load you can lower both number of Keep-Alive requests allowed and the idle timeout:
server.max-keep-alive-requests = 4
server.max-keep-alive-idle = 4
Hosting an ad campaign typically means serving a lot of static Flash-files that are to be shown on external websites. The client need to perform the TCP handshake to the ad server anyway, therefor you don’t get the gain of Keep-Alive. So I found it best to just disable it:
server.max-keep-alive-requests = 0
After this configuration change and a restart of lighttpd the surveillance graphs showed that the web server could handle at least 50 times more the traffic we had. No need to think about load balancing
Disabling Keep-Alive like I did in this case is only suited for situations where serving these types of single requests, for web applications I would suggest tuning the values of server.max-keep-alive-requests and server.max-keep-alive-idle and see how it effects your performance.
Read more about lighttpd performance here.