Pursuit of Perfection - Engineering

One of the most difficult aspects of engineering is ensuring the requirements are satisfied without exceeding the budget.

There are two cases, the first is scope creep, where requirements are added. The second is polishing and refinement, where the product is improved continuously.

As a rule, scope creep is driven by the customer, and polishing and refinement are the pursuit of the engineers.

RIA offers such powerful tools, with little effort, that it is easy to push code farther than before.

The only solution is careful and cooperative management by all parties.

robots.design(tm) - Code Architecture

robots.design™ is a hosted tool, because it can be, and it makes it accessible to everyone.

By reading an image, and extracting the colors from CSS files, then generating sed commands, the design is changed in an extremely efficient manner. There are also shell commands that will find the images, either in a directory or in a CSS file, then display them in a browser, so you can simply create new images, with the same dimensions, with the same names and copy them to complete the transition.

This is also an example of how the whole LAMP stack can be used to reduce the amount of code that has to be written.

Key elements:

  • ImageMagick is used for the image processing
  • sed handles all substitution. It could have been done with PHP, but sed is already there. The commands displayed are run on the CSS files for the blog - exactly as displayed
  • Two open source components were also used to handle the color coding and analysis. They are identified in the credits area
  • Providing shell commands gives the user complete control. They can be adjusted to better fit the requirements

The one hesitation people may have about the tool is that they must submit an image. There are several ways the images can be protected. One option is to use software to extract the image colors and paste them into the textbox on the page, in the correct syntax. Another solution would be to create an image with the colors, but no identifying text or images, or use a piece of the image that has the colors. The images are deleted immediately after the colors are extracted, they are not analyzed, viewed, stored or collected in any way.

The code isn’t offered for download for several reasons:

  • It isn’t distribution quality code, it is a utility and the code reflects that. The PHP is interspersed with the HTML, and the CSS is in the same document.
  • It relies on components from other sources (which are given credit), so distribution would either have to include those components or provide instructions to go get them and install them
  • Thus far, the level of interest has not justified a significant investment beyond what has been done

The project began as an investigation to find a cost-effective way to change the colors of an existing design without manually recoding it. This solution meets that requirement.

Profit or Passion - Analyze a 'Social' Network

There are at least two types of social networks, those started by individuals or organizations with the objective of helping people work together and support each other toward a common goal, and those begun by businesses striving to make money.

Common indicators of ‘for profit’ networks:

  • Broad mission
  • Membership fee plans, and restriction of access to some or all content without joining or paying
  • Ads
  • Partners, organizations that want you to see them, and their affiliation with the network. They often paid to become partners and then they usually gain some level of access to the membership data.
  • Rewards, any mechanism to persuade you to participate by delivering tangible value for your action.
  • Registration data collection which requests or requires a significant amount of information.
  • Very polished interfaces.
  • Publicity for the network, deliberate posts on other sites directing traffic to the network. Includes all other media as well.
  • Referral rewards, encouraging you to bring new members.
  • Usually names the company that developed the code and manages it.

Common indicators of networks run by people for people:

  • Clear, niche mission.
  • Loose registration requirements, only enough authentication necessary to prevent spamming and automated abuse.
  • Wide range of content on the subject from a very diverse community
  • Few to no ads, few to no partners. The network is a sustainable entity that is not intended to drive traffic to other sites.
  • No rewards, other than the benefit of helping others. Ratings mey be used to help moderate posts/content.
  • Simple interface.
  • Well organized categorization of content, clearly indicates the site managers undertand the material and needs of the site visitors.
  • Some areas may require payment to cover costs of valuable services
  • Often acknowledges contributions of equipment, skills, or services donated to support it.

There are many instances where a network may transition to a ‘for profit’ site, and, if it retains the positive qualities that predicated its success, that’s the best of both worlds.

If you are participating on a site to gain rewards, a ‘for profit’ site is better. If your goal is to contribute to the common good, it may be better to join a site with like minded individuals.

Share your code

If you built an interface to a commercial system - the interface code should be considered a marketable commodity and can be shared.

First - be sure you own it. If you built it under contract for a client, the agreement with the client should state who owns the code.

Next - the code should have been written such that the interface can be separated from the remaining application logic and the design. You may only want to share some of the code.

Be sure to state, up front, that the code is ‘AS-IS’ - meaning you will not maintain it, and you are not responsible for errors.

Finally, offer it to the interface owners. They may share it with clients. Be sure to get your name associated with the work, so that you get credit.

The benefits are that you’re sharing something of value (helping others), demonstrating your technical skill (the code should definitely be high quality), and associating your company name with these actions. The interface providers gain by helping their clients reduce their development costs.

Choosing javascript Libraries and Toolkits

If you want to add sophisticated client side functionality to a site, and are considering a javascript library like jQuery, dojo, scriptac….us, etc, remember:

  • Powerful tooks often add significant overhead. It isn’t worth using a library to support a single pull-down menu.
  • Try to find on-demand loading, where only the code required is downloaded.
  • Consider themes offered by the toolkits before designing the site. They can greatly improve your design and will work better with the library functions.
  • If you’re using AJAX, definitely use a library.
  • Remember that you can limit the library’s impact by placing it only on those pages which truly require the functionality.
  • Set up caching headers for the library code and CSS. They will probably never change (you shouldn’t change them).
  • Try the libraries out before choosing one. Use more than one if you feel it is worthwhile.
  • Use a CDN.
  • Be prepared to invest a significant amount of time in learning curve.