Rapid Development Strategies

Web sites have become exponentially more complex and the expectations of site visitors have soared as well.

The only way to build powerful pages is to use sophisticated tools, quickly and effectively.

:!: Choose tools that have decent documentation and a good community. You will need help. Be ready to reciprocate.

B) Use sample code. Everytime you have to learn something new, start with someone else’s posted code. It might not work exactly as you want it to, but you can tweak it, one piece at a time, until it does.

:>> Be very aware of the code architecture. Use an MVC approach, since it is likely you will have at least two views - through a template or HTML and AJAX/JSON.

:crazy: Abandon ideas that are too difficult. This isn’t lazy, it is smart. You’re smart, if you can’t get something working quickly, find another one. Many smart people posted great ideas - use them (and share yours). Abandon tools or libraries that don’t work quickly, too. There is one caveat - if you can see a tool’s potential and are humble enough to admit the problem is a learning curve, it may be worth persisting a little longer. eZ publish is a great example of this - it was well worth learning.

:idea: Be creative.

|-| Use abstract data structures and concepts. Multi-dimensional arrays are incredibly powerful.

:lalala: Be persistent, if it is almost working, keep trying. Try things that don’t make sense, because sometimes, they work - and well.

:oops: Don’t be afraid to be wrong.

:!: Use every available resource, carefully. LAMP is a stack of technology and some parts are better suited for tasks than others. Don’t use bash for page design, don’t use javascript to write large amounts of HTML.

:?: Explore, learn, try. Very little of what I have learned has been useless. Even mistakes and bad ideas are valuable, to avoid.

:yes: Be independent. Don’t ask for help right away. Try to solve your own problems, then ask.

Admin console user interfaces

  • Should give the user the information necessary to make decisions on the page displayed, as well as links to access additional resources
  • Should be consistent, throughout the application
  • Should be configurable
  • Should be attractive, polished, and easy to work with
  • Must include the requisite security
  • Should help the user enter valid data, and protect the server from malicious submissions
  • Should include AJAX
  • Should include a template system
  • Usually require access control management
  • Should have password recovery
  • Should not offer actions the user cannot perform, buttons should be suppressed or disabled visibly
  • Should make use of common navigation methods through lists and data sets

Social notworking

‘Social networking’ is passing. People who want to interact on the web have found their communities and enjoy them. The ‘net can only support so many social networks. People can only be part of so many social networks.

The cost of the sites and servers and the difficulty in creating sustainable revenue have made the pursuit of a social network as a service or product less attractive.

Most users don’t want to pay to be part of the community.

Most people don’t click on pay-per-click advertisements, just as they don’t watch most television commercials.

Professional networking will continue to be valuable, but as a cooperative resource. These networks will likely be fairly well-funded voluntarily by members that can afford to contribute - as they benefit greatly.

Web business - stable markets

  • High quality sites for mid-sized businesses
  • Attractive, easy to manage sites for small businesses
  • Robust open source applications, distributed as a free, possibly limited version, and more powerful system for a fee
  • Interface systems, to make it easier to connect different systems
  • Web security and disaster recovery
  • Maintenance and upgrades of existing sites
  • CDNs
  • Search systems
  • Personal portals that allow people to assemble a view into the Internet as they want to work with it. This includes supporting many applications with flexible interfaces.
  • Plugins for applications, especially those that improve data connections between PC and web based applications
  • Mobile access
  • Architecture definition to allow legacy sites to grow gracefully
  • Design, high quality design
  • Tools
  • Content moderation
  • Advertising management. This is the analysis of the cost of advertising and determination of revenue.
  • Dynamic partnerships that allow many organizations to seamlessly contribute to a system, with loose coupling
  • Archival of content
  • Advanced content caching closer to the last mile
  • Greater offline power with asynchronous web interfaces, and the PC based applications to take advantage of it.
  • Increasingly sophisticated site development methods
  • Training, at all levels
  • Hosting
  • Support and consulting
  • Project management

Web client side development tips

As web pages become increasingly complex, more logic is running on the client side, which requires debugging and resolution of browser compatiblity issues. Even with a great tool like dojo, a page may be processed differently and require fixing.

FireFox is my favorite browser for developing web applications. Get the FireBug plugin as well, and YSlow.

Tips:

  • console.debug(variable/expression/string) - allows you to monitor the state of the code as it executes
  • Breakpoints are okay, but it is often faster to let the code run and track it with console.debug
  • alert(variable/expression/string) - can be used as a break point. It is a great way to stop the code and then restart it to isolate problems
  • Comment out code to isolate problems
  • Use the FireBug console to evaluate code and expressions
  • Use the FireBug console to navigate through objects, probing to find properties and methods. Get the commands to work on the console, then add them into the code
  • Use FireBug, under FireFox, to solve problems with IE, once you have identified them
  • Send extra values back in JSON to debug server side logic under AJAX
  • Inspect the POST data to see what was passed down
  • Use a single function to handle all AJAX errors, and then an alert and echo to display text from the server. Include code to disable this for security
  • Create browser specific CSS files from the start, and use server-side logic to deliver them. Use these files to override the other CSS files for browser issues
  • As mentioned before, use server side logic to detect the browser (if possible) and deliver appropriate HTML and javascript. A good example is plugin player code. The objective is to only send the code for the browser in use to the client
  • Set padding and margins to zero
  • Keep things simple
  • Use background colors and the layout area of FireBug to solve layout issues. Keep CSS as lean as possible.
  • Clear the cache/temporary Internet files for CSS updates and JS changes that in separate files