Introducing YippieMove '09. Easy email transfers. Now open for all destinations.

Here’s a little trick we’ve been using for a long time here at Playing With Wire. Virtual desktops. The idea with a virtual desktop is that it’s like having multiple monitors, except that you don’t have multiple monitors. Instead you have several ‘spaces’ or separate desktops and you can go to them very quickly.

The only way we can really explain how amazing this is is by video (Flash Required):

As you can see I went from checking out Playing With Wire in Safari, to iTunes and then back over Safari and on to to an entirely clean desktop where I could have launched the next program I needed.

Why is this useful? Well, imagine if you’re a person who likes to work in more than one application at the same time (lets face it, that’s pretty much everyone). Well before, you might have been forced to minimize your applications or leaf through them using Exposé in order to go from one to another. With virtual desktops each application can have its own space to live in, and you can get there in the blink of an eye.

Not only does this make us so much more productive, but it also garners plenty of ‘ohhs’ and ‘ahhs’ from our impressed friends. It’s just plain cool to spin to a different desktop as you work. On one desktop I’ll have Safari, perhaps composing my latest Playing With Wire post. On the other desktop I’ll have iTunes. When I want to switch to another track, I can go to the desktop with iTunes and I don’t even have to reach for my mouse. It’s computer wizardry at its best.

Where’s the magic?

A little app called Virtue Desktops. If you have a Mac without an enormous screen you need to have this software. It’s productivity and style in one.

Author: Tags: ,
Introducing YippieMove '09. Easy email transfers. Now open for all destinations.

Continuing our series “Building the Base-camp,” we continue with a CRM-system. In a modern corporation a CRM-system is a crucial element to optimizing your business.

There are a couple of Open Source CRM systems available, but we decided to use a software called SugarCRM, which filled our needs just fine. The user-interface of SugarCRM is really appealing, which certainly is a benefit if you’re working with it several hours per day.

SugarCRM offers a variety of features, including an e-mail client, a bug-tracker and of course, a customer database. It’s also available in 40 different languages.

Installing SugarCRM was really easy. On FreeBSD using the ports, the entire installation probably took less then 15 minutes, where most of the time was spent customizing the installation for our needs.

SugarCRM screenshot

Instead of changing memory_limit in php.ini as the installation document states, we made this change to the local .htaccess file in the sugarcrm directory. By doing so, we didn’t need to raise the memory_limit for the entire server to 32Mb, instead we only applied this to SugarCRM.


php_value memory_limit 32M
php_value session.save_path /tmp

/usr/local/etc/apache/httpd.conf or ssl.conf

Alias /sugarcrm /usr/local/www/sugarcrm
<directory /usr/local/www/sugarcrm>
AllowOverride All
Order allow,deny
Allow from all

After changing these files to include the data above, you just surf to http://yourserver/sugarcrm and follow the steps.

For the installation you will need a mysql-account with a database that SugarCRM will be using.

When you’ve finished the installation and try to access SugarCRM, you might receive an error. At least we did. This was caused by the fact that the installation assumed that .htaccess-file was empty, and therefore corrupted the changes we did above. Just go in and edit it by hand, and make sure it all looks proper.

For more screenshots, visit the screen gallery at

Author: Tags: ,
Introducing YippieMove '09. Easy email transfers. Now open for all destinations.

Picture of The Definitive Guide to symfony.Symfony is a PHP web development framework, similar to Ruby on Rails. The framework is currently gaining in popularity; a few months ago it was announced that it is used by Yahoo! Bookmarks, for instance. Recently, version 1.0 of symfony was released. A print manual, “The Definitive Guide to symfony” by François Zaninotto and Fabien Potencier, was prepared in conjunction with this major update of symfony.

As the title suggests, the Definitive Guide to symfony is a guide book. Every chapter explores a certain component or part of symfony, ordered in such a manner that someone who hasn’t touched symfony before can easily get started. The book is not a tutorial; even that the chapters are sensibly ordered, the book does not take the reader through the process of developing an application.

The sections of the guide are,

  1. The Basics: An introduction to symfony, who made it and why, and a primer to the underlying technologies used by symfony including PHP itself. Later chapters in the first part delve into an overview of how symfony works and how to set up an application in the framework.
  2. The Core Architecture: This part of the book is essentially a description of the MVC pattern and how it is employed in symfony. The chapters talk about how the Control, View and Model layers work in symfony.
  3. Special Features: If the previous parts are about the foundation of symfony, the Special Features part of the book is really about the bells and whistles of the framework. The routing system, the form helpers, Ajax, caching and internationalization are described here.
  4. Development Tools: A description of the tools and mechanisms in symfony used during the development tools, just like the name would imply. Generators, unit testing and other important tools are described here. Towards the end there is an oddly placed chapter about extending symfony.
  5. Becoming a symfony Expert: This is a very interesting section which gets into performance optimization for symfony. The authors pool some very valuable practical experience about deploying symfony applications into this part of the book.

The book places almost no requirements on the reader. Obviously you will need to know PHP 5, but apart from that the book carefully introduces almost every concept used in the framework. At the same time I don’t think that a more experienced programmer would find the hand-holding excessive – the 450 or so pages went by quickly when I read the book, and I have worked with symfony before.

The book also features a good selection of sample code and examples. This is in line with the general pragmatic feeling of the book. There is no key concept left without an illustrative code sample. Anyone who has worked with symfony and its developers before will recognize this. The official website is absolutely brimming over with code samples, and Mr. Zaninotto in fact even wrote ‘snipeet’, a code snippet repository. The book is right in line with this demonstrate-by-code philosophy.

The book has some shortcomings. The chapter about Generators feels incomplete for one. Ostensibly the chapter is about the automatic generation of code, called scaffolding, that is a common feature for many modern web development frameworks. This kind of generation makes it faster to develop web applications since it creates a foundation (hence the term scaffolding) for building the web application. But the Generators chapter is really hijacked by the automatic admin generation feature of symfony. While this is a very powerful and impressive feature, the very strong focus on this feature may leave the reader wondering about the ordinary, non admin, scaffolding functionality. For example, it is not at all clear how to customize what generated scaffolding should look like. With such a lengthy description about how to customize the generation of the admin interface, the omission of a corresponding general section is conspicuous.

(For the record, this is how to theme or customize the generated scaffolding:

  1. Copy the default theme from




  2. Edit the files in data/generator/sfPropelCrud/default/theme/templates as you would with an admin template.
  3. Generate like usual: symfony propel-generate-crud <app> <module> <base>.

The generated code will be built to specification.)

Another shortcoming of the book is that there are a few instances of bugs in the provided source code. It might have been useful if the authors had taken a day to test-run their code. For example, in the database section, page 156, the following sample databases.yml listing can be found:

    class:                sfPropelDatabase
      encoding:           utf-8     # Default charset [...]

When I tested this code I got an error message: Unknown character set: 'utf'. Turns out that “utf-8″ is not the correct identifier – “utf8″ is correct.

These shortcomings are minor though. A few typos are to be expected, and with so much to cover omissions may accidentally be made. All in all the book is a friendly and pragmatic one. The material is described in a light and fluffy way – there is no ‘academic’ dead weight or terse theoretical descriptions, but rather a hands on description about what symfony programming is like. The book can be used both as a primer and as a reference for a person who is not yet a symfony expert.

If you want to know more about the book, you can actually finds its whole contents online. At the time of this writing, the online edition is available at The Definitive Guide to symfony. This is very generous and a great aid when you want to quickly search for something. Curiously enough Apress, the publisher of the book, has a full page ad for an eBook version in the print edition. They charge $10 for this pleasure, which is a bit odd.

Update 1: The original article credited Mr. Potencier with the Snippeet application. Snippeet was in fact written by Mr. Zaninotto. I apologize for the mistake.
Update 2: Jason Gilmore, the book’s editor, wrote to let us know that Apress sells the $10 ebook as an additional means to support GFDL work. Take a look at the comments section below for the full clarification.

Author: Tags: , ,
Introducing YippieMove '09. Easy email transfers. Now open for all destinations.
Comments Off
Category: Uncategorized

Did you know you could create an infinite loop with the ‘cp’-command? I didn’t. I managed to create an infinite loop with the following commands:

cd dir
mkdir backup
cp -rfv ../* ./

Before I knew it, I had a 20-some level deep folder.

Author: Tags:
Introducing YippieMove '09. Easy email transfers. Now open for all destinations.

A new startup blog has opened its doors with two smash hits in a row. First they secured interviews with several well known founders of web startups, and then they got Slashdotted on their second blog post. The blog is called Startupping, created by Mark Fletcher.

Since we’re a startup, it’s always good to see new resource collections pop up like this. There is a lot to learn and figure out when starting up a company. After you have checked out all the essential Playing With Wire articles like, Notes about Filing for an LLC, Getting a Business Name and Filing for an EIN, you might as well head on over to Startupping and check out the coolest thing on their site: a startup wiki.

By the way, one of the people they interview is actually Paul Graham who wrote the great 18 mistakes that kills a startup article which we have mentioned before.

Author: Tags:

© 2006-2009 WireLoad, LLC.
Logo photo by William Picard. Theme based on BlueMod © 2005 - 2009, based on blueblog_DE by Oliver Wunder.