AJAX for speed and polish

With a good toolkit (think dojo), AJAX can let you make a beautiful site.

One strategy I adopted was to use a dual delivery approach on the server side, so server side code can deliver either HTML or JSON. This allows you to reuse the server side logic.

Although I used custom code, with PHP 5.2’s json_encode function and Smarty, an even better implementation would probably be to wrap the delivery logic with a framework like Zend to completely separate the delivery form from the application logic.

There is a tremendous bandwidth savings, and the site interface becomes much smoother, since the only parts of the page that are refreshed reflect the content updates.

In addition, with a toolkit, there are often great widgets and features to create better and more powerful interfaces.

If AJAX will be used, the HTML architecture may need to be adjusted, so it may be worth building up a single page fully, prior to coding the remaining pages. A bit of server side logic can really help as well.

mod_security

With the plethora of powerful open source applications available, the great premium on rapid development and deployment of sites, and the ever present threat of malicious server attacks, security is extremely important.

mod_security is an open source Apache firewall that places outstanding protection on the server, before site visitors ever get to the applications.

In addition to its power, it is easy to use. I installed it on XAMPP, configured it very lightly, and ran the two quick tests to ensure it was set up correctly. http://localhost/cmd.exe was blocked, as was an SQL injection attempt on the application.

mod_security operates with rules that allow you to customize it to run well with your server. There is a robust set of core rules. It has great logging capabilities.

To download it, you will need to register. It’s worth it, especially if you are running your own servers, with many applications, from many sources.

Web Open Source Strategy

To succeed as an open source company:

  • Allow people to download, install, and run the code. There is no other way to evaluate software
  • Offer a free version
  • Revenue could be created by offering a more powerful ‘full’ version, by selling specialized modules, allowing removal of a license/copyright notice, support - both technical and end user, training, books and materials.
  • Foster a community with forums, welcome contributions
  • Choose a product carefully. No product can be everything to everyone. Even within the chosen market, be sure you can do an excellent job with your stated mission.
  • Strive to keep hosting requirements simple. A good framework can be a tremendous help
  • Partner with complimentary software toolkits, and integrate them in such a way that they can be reused within a site
  • Provide a modular, extensible architecture so the application can be customized
  • Separate the application and design, and allow multiple views into the application. Thus, web, modile, and applications can perform the same functions without application changes.
  • Provide a robust documentation structure, online. Allow contributions from the community
  • Present successful implementations of your software (links to sites), so people can see what it can do.
  • Provide good upgrade mechanisms
  • Connect with commonly used applications, such as OpenOffice and Microsoft products
  • Offer a loose partnership program to help people find companies which support your product, but avoid complex agreements and fees.

dojo readOnly indicator

A contribution to dojo, a read only indicator for text inputs. It uses an existing image from the tundra theme to place the ubiquitous circle with a line through it in the right hand part of read only text inputs.


.dijitReadOnly
{
        background: #fff url('../dojo/dijit/themes/tundra/images/no.gif') no-repeat right !important;
}

Management by Chocolate

I needed an email forwarder created, definitely a trivial task. The type of task that is easily lost in the “I’ll get to it later” collection and forgotten, both by the requestor and the person responsible.

Instead of the usual mundane email, I took 5 pieces of chocolate with me. I started in one cube and explained why I wanted the forwarder. The cube resident agreed it was a valid request, accepted a chocolate, and sent me to the person that could create the forwarder.

I took the 4 remaining pieces of chocolate to another cube and explained what I wanted, handing the chocolate to the guy with the privileges.

2 hours later, I had my forwarder.

I replied to the email with a thank you, and an image of an ice cold beer.

Management principles - why this was more successful than some of my other requests -

  • emails are easy to read and close. A person, with chocolate, is more memorable

  • A reward or incentive (chocolate), regardless of how trivial or small, is of value in that it represents appreciation.

  • There was cooperation. Although I knew what I wanted, I did take the time to ensure it was a valid request with a good application.

  • The request was clear. Even though it was verbal, it was easy to understand what I wanted, so that’s what I got.

  • Finally, it is important to say thank you. After all, as Horton might say, “a request is a request, no matter how small.”

* Horton credits to Dr. Seuss