MySQL: Database for Web 2.0 and Security for the Web, Including OpenSSO and OpennID

MySQL: Database for Web 2.0

If you are a developer using MySQL, you should learn enough to take advantage of its strengths, because having an understanding of the database can help you develop better-performing applications. This session will talk about MySQL database design and SQL tuning for developers.
    Some topics include:
  • MySQL Storage Engine Architecture
  • Schema, the basic foundation of performance
  • Think about performance when choosing Data Types
  • Indexes and SQL tuning
  • Understanding SQL Statements using EXPLAIN
  • Scans and seeks
  • Solving performance problems in your queries
  • A Few Things to consider for JPA/Hibernate devlopers, Lazy loading and Optimistic locking

    Key Technologies:

    MySQL

  • Demos:
  • Build a CRUD JSF, JPA application using Netbeans, Glassfish, and MySQL
  • Demo MySQL workbench and maybe Query tool

Security for the Web, Including OpenSSO and OpennID


The OpenSSO project was launched to bring its access control, single sign-on and federation technology to the open source community. Since then, the entire code base of Sun's Access Manager product has been released as open source and work is proceeding on Sun Java System Federated Access Manager 8.0 in the OpenSSO community. Come find out how OpenSSO can work in your identity project. Also, learn about some of the web services security standard, like SAML that are supported in the technologies and products can be integrated as part of a complete security and identity solution.

Ajax and Frameworks and web evolution

Ajax and Frameworks


As a key technology to enable Web 2.0 applications, Ajax (Asynchronous JavaScript and XML) has generated a renaissance of rich web client development. However, this development model posses issues of complexity for developers, they have to know the AJAX interaction model very well and get involved with extensive JavaScript programming. This session will first give an overview about how AJAX works and delve into details of jQuery and jMaki.
  • jQuery is a javascript library targeting AJAX developers who love to do raw JavaScript programming. jQuery stands out the JavaScript library crowd for its powerful selector, efficiency, good documentation, plenty of plugins and most important of all, a very active community.

  • jMaki is a framework to combine the best breed of JavaScript widgets from different vendors into one page. It provides a component model to wrap up third party widgets and glue mechanism based on publish/subscribe to tie them together. Using jMaki you don't need to worry about how widgets from different vendor communicating with each other and will be able to compose a user friendly interface quickly.

    Demos:

  • Demos about how to use different jQuery features
  • Demos of using jMaki

Cloud Computing: A Developer Perspective


Cloud computing, the delivery of IT over the Internet as services, is changing the industry in ways that bring both opportunities and challenges to developers. Cloud computing allows developers to write applications that are much more connected and easier to adopt, to revise those applications at a much higher rate, and to form a tighter bond with their users. Unfortunately to gain these benefits, developers need to become much more closely involved in the deployment and operation of their code. Furthermore they will have to ensure that their code can be run efficiently, potentially at Internet scales. Fortunately, another aspect of cloud computing, infrastructure and platform as a service (IaaS and PaaS), provides solutions to these problems. By leveraging an IaaS or PaaS provider, developers can bring new applications to market quickly while minimizing their risk. This session will talk about these opportunities and challenges and demonstrate how technologies like Project Caroline can be used to develop and deploy cloud computing applications.

Connecting the World with REST


Lightweight RESTful approaches have emerged as a popular alternative to SOAP-based technologies for deployment of services on the Internet.


The goal of the Java API for RESTful Web Services (JAX-RS) is to provide a high-level declarative programming model for such services that is easy to use and encourages development according to REST tenets. Services built with this API are deployable with a variety of Web container technologies and benefit from built-in support for best-practice HTTP usage patterns and conventions.

This session provides a brief REST primer, followed by an overview of the JAX-RS API that leads developers through the design process for a sample RESTful service. The API discussion is illustrated with live code demonstrations.

Developing Web Applications using Comet and Ajax


Join the asynchronous web revolution! Emerging Ajax techniques variously called Ajax Push, Comet and HTTP streaming are bringing revolutionary changes to web application interactivity, moving the web into the Participation Age. Because Ajax-based applications are almost becoming the de facto technology for designing web-based applications, it is more and more important that such applications react on the fly, or in real time, to both client and server events. Comet is a technology that enables web clients and web servers to communicate asynchronously, allowing real-time operations and functions previously unheard of with traditional web applications to approach the capabilities of desktop applications.

This session provides an brief introduction to the asynchronous web, explaining its underlying protocols and discussing the challenges. Then it will walk though step by step on how to use Comet and Ajax technology to develop a two-player distributed game application. Attendees will take away the information they need in order to add multiuser collaboration and notification features to their application, whether they develop with Dojo, jMaki, or Prototype and whether they deploy on Jetty, Tomcat, or the GlassFish project. Multiple demos and sample codes will be demonstrated throughout the session.

EJB 3, Spring and SEAM


This session looks at the implementation of the same web application developed with three open source frameworks and highlights what was done differently with each one. First it explains the implementation of the sample application with JavaServer Faces and Enterprise JavaBeans 3.0 (EJB 3.0) technology and the Java Persistence API (JPA). Next it looks at how this application was developed with JavaServer Faces technology, JPA, and Spring 2.5. Finally, it looks at this application developed with JavaServer Faces and EJB 3.0 technology, JPA, and Seam 2.0. The presentation highlights differences in the frameworks, such as the Seam context model for stateful components. Note: This is a how to use these frameworks session, not a which framework recommendation.

All three versions were deployed on GlassFish, and the source code is made available in the session.

GlassFish and the Future of Java EE





Since its launch in 2005, GlassFish (Sun's Open Source implementation of Application Server) has come a long way, with an estimated 5 million downloads a year and a thriving community. While continuing to deliver a compact and high-fidelity Java EE Application server, GlassFish v2 has expanded to deliver production quality and performance (Project Grizzly), clustering, support for dynamic languages (AJAX, Ruby on Rails), high availability, Comet, SIP and interoperable web services. You no longer need to chose between open source and high production quality with rich enterprise features and high performance. What's next? GlassFish V3 is the next generation application server. It is OSGi modular based, light weight architected, and aligned with Java EE platform 6. The GlassFish project v3 implementation concentrates on two important aspects of modern server-side software: modularity and extensibility.


This session will provide the highlights of GlassFish v2, its clustering capabilities, Metro web services stack with .Net interoperability, Web tier (Grizzly, Comet, jMaki, etc), tools support, and administration features. It will then give an overview of the innovation in GlassFish v3 and demonstrate how Sun used these innovative implementation technique to make GlassFish project v3 the extensible server-side platform. Finally, it explains how distribution building works in GlassFish project v3 to empower everyone to build their own GlassFish project v3 distribution with a controlled set of features. What's new in Java EE 6 will also be discussed in the session. Demos and sample code will be shown throughout the session.

Java ME SDK (CLDC with on Device Debugging, CDC, Blu-ray)


JavaME (CLDC/MIDP) is by far the most prevalent Java platform deployment. It is readily available on billions on handsets. It is a powerful platform for developers to develop and deploy their applications to. Further more, JavaME developers can exploit handset natvie capabilities like SMS, GPS, address book, camera etc, to make interesting and addictive applications.

In this presentation, we will look at how to use some of the APIs in the Mobile Services Architecture (MSA) stack to develop MIDP applications. We will also explore data payloads, presistence options, connectivity options, etc. Finally we will look at how these mobile applications can connect back to the server.

(J)Ruby on Rails

It is a well known fact that Ruby on Rails is gaining quite a bit of popularity among developers and deployers of Web applications.. and for good reasons. Rails is considered a well thought out Web application framework based on several design principles such as Don't Repeat Yourself (DRY), Convention Over Configuration, which enable an agile yet practical development environment. JRuby provides another benefit by allowing them to leverage the stability and the reliability of the Java platform as well as vast array of Java libraries available.


This session will go through briefly the basics of Ruby (and JRuby) programming language first, especially meta-programming features, that make many features of Rails possible. The usage of Java libaries is then talked about. The rest of the session will be devoted to learning Rails functionality such as Active Record, Active Controller, and Active View. If time permits, a couple of real-life applications are going to be built and demonstrated.

The contents of this talk will be from the free "Ruby/JRuby/Rails Development (with Passion!)" online course - http://www.javapassion.com/rubyonrails/ .

NetBeans New & Cool


This session covers the Sun's award-winning open-source IDE NetBeans and demonstrates how it can help Java and Scripting developers can become more productive. This session starts with an introduction of some of the basic features of IDE showing code completion, refactoring, testing and debugging. Also will show what all features are included for free in the base IDE and how to use them. For example: bundled Application servers, database, version control etc.

Then this session covers several features in NetBeans 6.1 and 6.5 beta as listed below:

  • Scripting support for Ruby, PHP, JavaScript
  • Hibernate Framework Support,
  • Eclipse project import, and compile on save
  • Profiler
  • UML
  • Java EE, EJB, Java Persistence and Web Services development -
  • Swing Application Framework and Beans Binding technology support
  • Localization support
  • Plugins support and how to use them

This session is geared towards beginning and intermediate Java and Scripting developers.

Project WebSynergy: Developer and Administration Basics


In this talk, we present some background on Project WebSynergy, we cover the terminology of Web 2.0 development and the development trends. We describe the integration of project WebSyergy with other key Sun products such as JavaCAPS and FAM8 and we go over the developer tools for multi-language portlet generation.

Lastly a live demo showing the development and deployment of portlets on demonstrates the concepts just explained.

Social Computing using Zembly and SocialSite

At zembly, you easily create and host social applications of all shapes and sizes, targeting the most popular social platforms on the web. And, you do it along with other people. Using just your browser and your creativity, and working collaboratively with others, you create and publish Facebook apps, Meebo apps, OpenSocial apps, iPhone apps, Google Gadgets, embeddable widgets, and other social applications. In some ways, you can think of zembly like Wikipedia for social applications---a wiki for live, editable code that is more than just about trivial widgets, but rather about full-fledged social applications that can tap into the social graph and reach millions of users. At zembly, you can easily and instantly...
  • author social applications using your browser
  • participate and collaborate with others around live, editable code
  • use the richness of popular web APIs to create your applications
  • publish your social applications to multiple social platforms with a single click

In this session, you are going to learn how to create and host these social applications step by step.

Troubleshooting Java Applications

Java applications have become very large in sacle. It is not easy to find out what is going wrong in the context of millions of lines of code. There are various tools available to help the developers to address problems in Java applications, by tracking the memory usage, threads, cpu times spent on every single method call, etc...

In this session you will learn by case studies of how different tools can be used for trouble shooting different kind of problems. The involved tools are VisualVM, JConole, JDK commandlines like jinfo, jps, jstack, jmap, and jhat.

What's New on the Java Platform


The next generation of technlogies are currently being defined and evluated by JCP and the Java community at large to bring more productivity and enhancements to developers and organizations developing and deploying Java applications. These new technologies will impact the Java Platform infrastructure, the Java language and core libraries. In this session we will look at modules ( JSR 277 ), Swing application framework ( JSR 296 ), beans binding ( JSR 295 ), closure (BGGA) support and others. See how these new technologies will impact you in the not too distant future.

20 Excellent Websites for Learning Ajax

Ajax (asynchronous JavaScript and XML) is a technology that allows
for for highly-interactive and responsive browser-based applications.
By leveraging the XMLHttpRequest object, seamless communication with
the server can be achieved for a smooth and dynamic user experience.


If you’ve ever wanted to learn about Ajax, there are many sites out there that’ll help you "grok" Ajax and the various technologies surrounding it. Here are 20 top-notch websites that cover the subject of Ajax.


1. Ajax resource center (developerWorks)



Ajax resource center (developerWorks) - screen shot.



developerWorks, a resource center for developers and IT professionals by IBM, has a dedicated Ajax resource center
that hosts plenty of tutorials on Ajax. developerWorks tutorials are
in-depth and lengthy, and you can learn a variety of information and
techniques from them such as creating RIA applications with jQuery and Ajax, learning about Ajax security tools, and building an Ajax-based chat system.


2. Mozilla Developer Center (AJAX)



Mozilla Developer Center (AJAX) - screen shot.


The Mozilla Developer Center has an AJAX section that’s a great starting point for beginning developers or those that need to brush up on Ajax. The Getting Started
guide on MDN is an excellent starting point to learn about the basic
concepts of Ajax. Another MDN guide you might be interested in reading
is the entry on XMLHttpRequest, the primary mode of communicating with server-side scripts in typical Ajax approaches.


3. AJAX Today



AJAX Today - screen shot.


AJAX Today is a community-driven website where members can
submit links on the topic of Ajax. AJAX Today organizes submitted links
in useful categories such as AJAX Tutorials and Ajax Podcasts;
you can subscribe to each individual category via RSS so that only
topics that you’re interested in will be displayed in your RSS feed
reader.


4. ajax.solutoire.com


ajax.solutoire.com - screen shot.


ajax.solutoire.com is a large, one-page directory-style listing of online Ajax resources created by Software Engineer, Bas Wenneker. ajax.solutoire.com is conveniently sub-divided into various categories such as Ajax news and Ajax/JavaScript security. Bas Wenneker also runs Solutoire.com, a personal weblog that talks about web development topics such as JavaScript and MooTools.



5. SitePoint: JavaScript & Ajax Tutorials


SitePoint: JavaScript & Ajax Tutorials - screen shot.


SitePoint, a web publication focused on providing web professionals useful and relevant information, has a JavaScript & Ajax Tutorials
section that’s great for developers who learn well by reading practical
tutorials. You can follow along (and learn from) tutorials such as "Use AJAX and PHP to Build your Mailing List" and "Take Command with Ajax".



6. Encosia


Encosia - screen shot.


Encosia is a blog by Dave Ward,
who writes about the subject of web development (primarily ASP.NET and
Ajax). Encosia has plenty of tutorials that discuss topics such as how to display data updates in real-time and how to use jQuery for interactively searching data.
Encosia is an top-notch resource on Ajax - especially for developers
working with ASP.NET as you can read ASP.NET/Ajax-specific articles
like "Are you making these 3 common ASP.NET AJAX mistakes?".



7. Ajax Technology Center


Ajax Technology Center - screen shot.


The Ajax Technology Center is a part of the Adobe Developer Connection,
a resource site for web developers and designers. The Ajax Technology
Center provides handy articles and tutorials on topics such as Adobe AIR for Ajax developers and Adding Ajax components to Dreamweaver projects.


8. Ajax Blog



Ajax Blog - screen shot.


Ajax Blog is a weblog on the topic of Ajax. Ajax Blog has
plenty of categories to help you quickly find specific information
you’re looking for. If you’re searching for Ajax tutorials and
examples, jump right to the Ajax Tutorials and Ajax Examples category.


9. AJAX Matters


AJAX Matters - screen shot.


AJAX Matters is a weblog on Ajax technology. Launched in
2004, AJAX Matters is one of the first blogs dedicated to discussing
Ajax. They have plenty of helpful tutorials on matters like getting
started with Ajax and PHP or learning about the Google Web Tookit



10. Ajaxonomy


Ajaxonomy - screen shot.


Ajaxonomy is a blog by a group of web developers whose
intent is to share and discuss information on Ajax. If you’re seeking
out Ajax tutorials, you can go directly to blog posts tagged with Tutorials where you’ll find an aggregate of posts that either share tricks and techniques related to Ajax technologies (such as server-side caching in PHP) or reviews of tutorials elsewhere on the web.


11. Ajaxian


Ajaxian - screen shot.



Ajaxian is the premier weblog dedicated to reporting new
developments in Ajax. Ajaxian publishes a variety of regularly-updated
Ajax topics, including a Tutorial topic which shares Ajax-related tips and tutorials. With a staff full of top web professionals in the field of web development, Ajaxian is a foremost resource for Ajax news and information.


12. Ajaxlines


Ajaxlines - screen shot.


Ajaxlines is a website that aims to provide its audience
with Ajax-related news, resources, and tutorials. It reports on news
and information from a wide variety of resources, and gives readers the
opportunity to discover articles in one site.



13. AJAX Magazine


AJAX Magazine - screen shot.


AJAX Magazine, which is part of the PHP Magazine Network,
is a webzine that covers the subject of Ajax. There’s a wide range of
categories to help you find information that you’re interested in
including an Ajax tutorials category that reports on useful Ajax tutorials and more specific categories like the Ajax and .NET category.


14. InsideRIA



InsideRIA - screen shot.


InsideRIA is an O’reilly Media community website on Rich Internet Applications (RIA for short). You will find a host of articles pertaining to building highly-interactive web applications such as writing your first YUI Application (YUI is Yahoo!’s JavaScript library), and Ajax Frameworks for High Traffic Sites. Check out articles tagged with ajax to conveniently find Ajax-specific topics.



15. AJAX Impact


AJAX Impact - screen shot.


AJAX Impact is committed to delivering information on Ajax. Check out the Ajax Tutorial section to find a list of tutorials on Ajax. If you’re curious on finding examples of websites (organized into types of websites) be sure to go to the "Sites Using Ajax" section on AJAX Impact.


16. AJAXwith.com



AJAXwith.com - screen shot.


AJAXwith.com is a community-driven site where you can submit resources on "Ajax with [fill in the blank]" (i.e. "Ajax with PHP"). They have an AJAX forum with close to 4,000 members which may be useful when you’re in need of help on a specific issue.


17. David Walsh Blog


David Walsh Blog - screen shot.



Web developer David Walsh provides useful tips and tutorials for all
levels of web designers and developers on his personal blog, David Walsh Blog. He writes about a range of topics related to web development, and has an Ajax topic to help you speedily find articles that discuss Ajax. His tutorials on Ajax include "Ajax Username Availability Checker Using MooTools 1.2" and "Periodical Ajax Requests Using MooTools 1.2".


18. Ajax Projects


Ajax Projects - screen shot.


Ajax Projects is a directory-style listing of Ajax web projects. They have an excellent Tutorials section which lists plenty of Ajax-related tutorials from several resources such as "PHP ajax login form using Jquery", "Google Analytics: Tracking AJAX and Flash", and "How to structure your JavaScript code".



19. Agile Ajax


Agile Ajax - screen shot.


Agile Ajax is a section on Pathfinder Development
(a software development and UX design company) that shares information
on the topic of Ajax. Some posts you’ll see in Agile Ajax include "App Security: Throw Out the Org Chart!" and "Scriptaculous: Fixing Hover After Highlight".


20. Ajax Patterns



Ajax Patterns - screen shot.


Ajax Patterns is a wiki-style, community-driven website for
Ajax information. If you’d like to see common Ajax design patterns,
check out the Examples entry. Ajax Patterns also has a section on Ajax demos
which showcases demonstrations of Ajax patterns (great for individuals
who want to see practical applications of Ajax techniques).

10 Ways to Cut Down Web Development Time

In today’s development environment: faster is better.


Present-day buzzwords and buzz terms like "rapid application development", "Agile", and "Asynchronous JavaScript and XML" (we can’t even wait for web pages reload anymore) gives you an insight of the fast-paced world we live in.



But getting things done rapidly doesn’t mean working harder - just working smarter. In this article, you’ll find 10 general, time-saving tips to cut down on your development time.


1. Use frameworks


logo of frameworks.



Frameworks abstract regular code to provide you a structure and foundation for developing web applications.



A classical example of a framework is Rails,
a web application development framework for the Ruby language. By
providing pre-made packages of code (for example - user input
validation methods) - not only do you save time from writing your own
code in Ruby - but you’re also assured that the packages have already been tested and inspected by other developers, saving you trouble in extensive testing as well as potential bugs due to the lack of testing.


The same goes for JavaScript frameworks like MooTools;
it saves you time by providing you methods that have been already been
widely tested by the core developers and the community for
cross-browser support. Other options for client-side scripting
frameworks include jQuery, Prototype JS, and YUI. If you want to use a less mainstream JS framework, check out this list of promising JavaScript frameworks.



For server-side frameworks: check out CakePHP, CodeIgniter, Zend, or symphony (for PHP), or if you like writing in Microsoft-supported languages like VB and C#, consider the .NET Framework.


You can even use CSS frameworks like 960 Grid or BluePrint to standardize and rapidly write your styles and web page structure.



2. Use an Integrated Development Environment


IDE logos.


Yes, you can create web applications and web pages using a simple text editor like Notepad
and an FTP, but I think most would agree that it’s not the most
time-efficient way of developing complex and robust web projects.


An Integrated Development Environment (IDE) is an application that
brings you all the tools you’ll need to create and manage even the
largest web projects. IDE’s vary in features, but some common features
include:



  • project management and team collaboration features


  • debugging and diagnostic features

  • syntax suggestions and auto-fill (it guesses what you’re trying to write)

  • syntax highlighting


  • built-in FTP that syncs your local and remote files


"IDE" is a fancy term that some might be unfamiliar with, but most have probably heard of Adobe Dreamweaver.
Dreamweaver can be considered as an integrated development environment
because it has the features above and helps you write code faster (it’s
typically used for front-end authoring but it supports server-side
languages like PHP and ASP.NET).


There’s plenty of IDE’s out there, and all you’ve got to do is pick
one for you (or your team). Some popular, fully-featured IDE’s include Eclipse, Komodo IDE, NetBeans, Visual Studio, and Aptana Studio.



If you’re still intent on just using a text editor at least check out this collection of text editors for coders.


3. Modularize (appropriately)


Modularization
is a key practice for creating maintainable, complex and scalable
applications. It essentially means authoring code in components rather
than big files.


Modularizing has its initial time costs (since you have to put more
careful thought in the design of the file structure), but you can save
time in the end when you need to change certain components or scale
your application.



Modularization also keeps bugs contained; if something breaks down, you will have an easier time finding the particular issue.


But too much modularization can lead to bloated code and too many unnecessary include’s that can slow down your application drastically. So try to hit the sweet spot between too much and not enough.


Some modularization patterns include the MVC and PAC model.



4. Debug front-end issues more effectively with browser tools


Firebug screen shot.


Nothing’s worse than cross-browser incompatibilities and rendering issues. It can drive you nuts and wanting to destroy something
in frustration. But using in-browser debugging tools makes finding and
diagnosing front-end issues much quicker and more efficient.


Firebug and Web Developer are essential time-savers and is a staple
amongst front-end web developers. Firebug can easily inspect the DOM to
see how things work, tweak CSS/HTML/JS on-the-fly, debug and profile
your JavaScript, and help you promptly find what’s causing your scripts
to break. Web Developer gives you access to useful tools like being
able to click on an element to see what style declarations affect it
and allows you to quickly disable JavaScript and CSS to see how your
pages work without either one disabled by the user.



If you need to debug in Internet Explorer, check out the IE Developer Toolbar
which is similar in function to Firebug and Web Developer. Some more
in-browser tools for IE that can help you cut down on debugging in IE
can be found here.


5. Code for re-usability


If you find yourself doing the same thing over and over again,
chances are you should rethink your code’s structure. Consider learning
about common design patterns that help you create methods, functions, and objects that are flexible and reusable.


For example, if you frequently connect to a database, you may want to create a Database Access Class to handle connection, querying, and rendering of data.



6. Collaborate and track project status online


Basecamp screen shot.


Chances are - you don’t work alone. Whether you’re working
as a development team or working for someone (perhaps managers or
clients) - you should take advantage of collaborating and tracking your
project’s status on the web.


The less time you spend on administrative tasks and being stuck in endless meetings (or worse – traveling for a face-to-face meet) - the more time you have towards writing code.


Tools like Basecamp, Lighthouse, and activeCollab

give you a "one stop shop" for team collaboration and keeping track of
the project’s status. You can set milestones and project goals in your
collaboration application – so that everyone’s always in sync, saving
you time from answering frequent emails and status-check meetings
asking you how everything’s going.


These tools also help you prioritize things and keeps things organized and documented in a centralized location.


7. Automate code formatting and standardization


You need to standardize all of your code’s formatting, not only
because it’s good practice, but also so that you can quickly understand
your code when you go back to them later on.


Automated code formatting gives you the ability to format your code
with a click of a button instead of going line by line and making sure
you’re following your authoring guidelines consistently. Automation
also reduces the risk of errors due to manual correction.


There are many tools out there to help you do the job, and many are even web-based. For CSS, a popular open source solution is CSSTidy (Clean CSS is an online version based on CSSTidy). For HTML, there’s HTML Tidy.



For scripts, there’s PHP Source Code Formatter, Ruby Script Beautifier, and Code Beautifier Plus (which formats C#, ActionScript, and Java).


8. Invest time in requirements-gathering and planning phases


An ounce of prevention is worth a pound of cure. Though some schools of thought emphasize on not wasting too much time on planning out the path from start to completion – it’s still

essential to appropriate enough time in making sure you’ve gathered all
the information you need to know. Not committing time to
requirements-gathering can also lead to feature creep because of unanticipated feature requirements.


9. Use code that’s already written


PHP Classes Repository Screen shot.


There’s no need to re-invent the wheel. If you’re thinking
of a particular feature that you’ve seen somewhere else, chances are
someone’s already written it for you (well not just for you, but for all of us). For PHP, PHP Classes Repository provides a collection of classes and scripts that you can use and download. Hot Scripts provides scripts in many languages. If you want code snippets, you can check out devSnippets.



Beware though: this only really works when you know
what you’re doing and have enough experience to tell the difference
between good and bad code. Otherwise you might find yourself with a
buggy or poorly-written end-product.


10. Have less features


You have to evaluate the need for certain web application features
and if the time-investment of building in the feature is worth it. Do
your users really need a custom RSS feeds for categories of an infrequently updated CMS? Do you really need to have a style switcher that detects where the user is geographically?



Make feature incorporation an uphill battle;
features that don’t help the end-user in any way not only costs
unneeded development time, but also complicates the interface.

10 Ways to Improve Your Web Page Performance

There are a million and one ways to boost your website’s performance. The methods vary and some are more involved than others. The three main areas

that you can work on are: hardware (your web server), server-side
scripting optimization (PHP, Python, Java), and front-end performance
(the meat of the web page).

This article primarily focuses on front-end performance since it’s the easiest to work on and provides you the most bang for your buck.

Why focus on front-end performance?


The front-end (i.e. your HTML, CSS, JavaScript, and images) is the most accessible
part of your website. If you’re on a shared web hosting plan, you might
not have root (or root-like) access to the server and therefore can’t
tweak and adjust server settings. And even if you do have the
right permissions, web server and database engineering require
specialized knowledge to give you any immediate benefits.

It’s also cheap. Most of the front-end optimization

discussed can be done at no other cost but your time. Not only is it
inexpensive, but it’s the best use of your time because front-end
performance is responsible for a very large part of a website’s response time.


With this in mind, here are a few simple ways to improve the speed of your website.

1. Profile your web pages to find the culprits.


Firebug screen shot.


It’s helpful to profile your web page to find components that you
don’t need or components that can be optimized. Profiling a web page
usually involves a tool such as Firebug to determine what components (i.e. images, CSS files, HTML documents, and JavaScript files) are being requested by the user, how long the component takes to load, and how big it is. A general rule of thumb is that you should keep your page components as small as possible (under 25KB is a good target).


Firebug’s Net tab (shown above) can help you hunt down huge files
that bog down your website. In the above example, you can see that it
gives you a break down of all the components required to render a web
page including: what it is, where it is, how big it is, and how long it
took to load.

There are many tools on the web to help you profile your web page - check out this guide for a few more tools that you can use.

2. Save images in the right format to reduce their file size.

JPEG vs GIF screenshot.

If you have a lot of images, it’s essential to learn about the
optimal format for each image. There are three common web image file
formats: JPEG, GIF, and PNG. In general,
you should use JPEG for realistic photos with smooth gradients and
color tones. You should use GIF or PNG for images that have solid
colors (such as charts and logos).


GIF and PNG are similar, but PNG typically produces a lower file size. Read Coding Horror’s weigh-in on using PNG’s over GIF’s.

3. Minify your CSS and JavaScript documents to save a few bytes.

Minification
is the process of removing unneeded characters (such as tabs, spaces,
source code comments) from the source code to reduce its file size. For
example:

This chuck of CSS:
.some-class {
color: #ffffff;
line-height: 20px;
font-size: 9px;
}
can be converted to:
.some-class{color:#fff;line-height:20px;font-size:9px;}
…and it’ll work just fine.

And don’t worry - you won’t have to reformat your code manually.
There’s a plethora of free tools available at your disposal for
minifying your CSS and JavaScript files. For CSS, you can find a bunch
of easy-to-use tools from this CSS optimization tools list. For JavaScript, some popular minification options are JSMIN, YUI Compressor, and JavaScript Code Improver.
A good minifying application gives you the ability to reverse the
minification for when you’re in development. Alternatively, you can use
an in-browser tool like Firebug to see the formatted version of your
code.

4. Combine CSS and JavaScript files to reduce HTTP requests

For every component that’s needed to render a web page, an HTTP request
is created to the server. So, if you have five CSS files for a web
page, you would need at least five separate HTTP GET requests for that
particular web page. By combining files, you reduce the HTTP request
overhead required to generate a web page.

Check out Niels Leenheer’s article on how you can combine CSS and JS files using PHP (which can be adapted to other languages). SitePoint discusses a similar method of bundling your CSS and JavaScript;they were able to shave off 1.6 seconds in response time, thereby reducing the response time by 76% of the original time.


Otherwise, you can combine your CSS and JavaScript files using good, old copy-and-paste‘ing (works like a charm).

5. Use CSS sprites to reduce HTTP requests


CSS Sprites on Digg.


A CSS Sprite is a combination of smaller images into one big image. To display the correct image, you adjust the background-position CSS attribute. Combining multiple images in this way reduces HTTP requests.

For example, on Digg (shown above), you can see individual icons for user interaction. To reduce server requests, Digg combined several icons in one big image and then used CSS to position them appropriately.


You can do this manually, but there’s a web-based tool called CSS Sprite Generator that gives you the option of uploading images to be combined into one CSS sprite, and then outputs the CSS code (the background-position attributes) to render the images.

6. Use server-side compression to reduce file sizes

This can be tricky if you’re on a shared web host that doesn’t
already server-side compression, but to fully optimize the serving of
page components they should be compressed. Compressing page objects is
similar to zipping up a large file that you send through email: You (web server) zip up a large family picture (the page component) and email it to your friend (the browser) – they in turn unpack your ZIP file to see the picture. Popular compression methods are Deflate and gzip.


If you run your own dedicated server or if you have a VPS - you’re
in luck - if you don’t have compression enabled, installing an
application to handle compression is a cinch. Check out this guide on
how to install mod_gzip on Apache.

7. Avoid inline CSS and JavaScript

By default, external CSS and JavaScript files are cached by the
user’s browser. When a user navigates away from the landing page, they
will already have your stylesheets and JavaScript files, which in turn
saves them the need to download styles and scripts again. If you use a
lot of CSS and JavaScript in your HTML document, you won’t be taking
advantage of the web browser’s caching features.

8. Offload site assets and features

Amazon S3Fox for Six Revisions.

Unloading some of your site assets and features to third-party web
services greatly reduces the work of your web server. The principle of
offloading site assets and features is that you share the burden of
serving page components with another server.

You can use Feedburner to handle your RSS feeds, Flickr to serve your images (be aware of the implications of offloading your images though), and the Google AJAX Libraries API to serve popular JavaScript frameworks/libraries like MooTools, jQuery, and Dojo.


For example, on Six Revisions I use Amazon’s Simple Storage Service (Amazon S3
for short), to handle the images you see on this page, as well as
Feedburner to handle RSS feeds. This allows my own server to handle
just the serving of HTML, CSS, and CSS image backgrounds. Not only are
these solutions cost-effective, but they drastically reduce the
response times of web pages.

9. Use Cuzillion to plan out an optimal web page structure

Cuzzillion screen shot.

Cuzillion is a web-based application created by Steve Souders
(front-end engineer for Google after leaving Yahoo! as Chief of
Performance) that helps you experiment with different configurations of
a web page’s structure in order to see what the optimal structure is.
If you already have a web page design, you can use Cuzillion to
simulate your web page’s structure and then tweak it to see if you can
improve performance by moving things around.

View InsideRIA’s video interview of Steve Sounders discussing how Cuzillion works and the Help guide to get you started quickly.


10. Monitor web server performance and create benchmarks regularly.

The web server is the brains of the operation - it’s
responsible for getting/sending HTTP requests/responses to the right
people and serves all of your web page components. If your web server
isn’t performing well, you won’t get the maximum benefit of your
optimization efforts.


It’s essential that you are constantly checking your web server for
performance issues. If you have root-like access and can install stuff
on the server, check out ab - an Apache web server benchmarking tool or Httperf from IBM.

If you don’t have access to your web server (or have no clue what I’m talking about) you’ll want to use a remote tool like Fiddler or HTTPWatch to analyze and monitor HTTP traffic. They will both point out places that are troublesome for you to take a look at.

Benchmarking before and after making major changes will also give
you some insight on the effects of your changes. If your web server
can’t handle the traffic your website generates, it’s time for an
upgrade or server migration.

Advanced Linux Distributions You Should Try

Some people will argue with me in that these GNU/Linux distributions are as advanced as you want them to be. Well, of course Linux is all about choice. I took the user base perspective though and what I have for you today is a few distros which do not hide the manual (or for people like me, beautiful) underlying configuration. Also, by using the distro itself, you will learn a lot about Linux and how an operating system works. It is a fun and useful experience, believe me and never be scared of the command line :) It is your friend.

Arch Linux


A distro I am currently playing with right now, Arch is focused on simplicity and elegance. A great Beginners Wiki
Article guides you through the process of setting up your first Arch
Linux system. There is a lot of manual editing in nano and other
command line tools, but it is not very difficult and it is all
explained in great detail and a very beginner-friendly manner. Arch’s pacman
package manger system turned out to be a very lightweight and quality
tool for managing the software installed on your system. If you cannot
find something, just check the community repository.
The resulting system is always pretty stable and fast. Plus, as it is a
rolling-release distro, pacman takes care of your packages so you’re
never behind on the newest in FOSS. Two thumbs up!



Slackware


While I am not very familiar with the original Slackware (I have used many derivatives, like SLAX and Vector Linux), Slackware also concentrates on a type of KISS principle,
in part at the cost of user-friendliness. Many people run Slackware on
servers, some even on laptops. What they like is the stability and the
experience gained from using such a system. As for package management -
Slackware’s can do the basic tasks, like remove, install and upgrade,
however it cannot track dependencies, so it is up to you to solve them
or you can use one of the many automatic dependency-resolving tools
such as slapt-get.


“In this context, “simple” refers to the viewpoint of system
design, rather than ease of use. Most software in Slackware uses the
configuration mechanisms supplied by the software’s original authors;
there are few distribution-specific mechanisms.”



Gentoo


By the way, I would like to hear a Gentoo user in the comments
explain some more about what the benefits of Gentoo Linux are. Most of
the newer Linux users connect Gentoo with compiling apps locally. I
personally like to use other distros, because I mostly just use
binaries (Gentoo has some binaries too) for some programs and in other
cases compile my apps when I really want to, which I am already able to
do in any other distro. So, why would you choose Gentoo? Well, first if
you would like to learn how compiling works, Gentoo is an excellent
choice. You will be able to get a distro specifically tailored for your
system (brings in a slight increase in overall speed). The package
management system is called Portage with the emerge tool (I think it is written in python), based on Ports in the BSDs (what is different is that Portage contains ebuilds).
Compiling everything enables you to have softer dependencies, more
bleeding-edge packages and you can install the system in three
different “Stages”, depending on how much of the system you wish to
compile yourself (only Stage 3 installs are officially supported!).



  • Stage1: System must be bootstrapped and the base system must be compiled.

  • Stage2: System has already been bootstrapped, but the base system must be compiled.

  • Stage3: System has already been bootstrapped and the base system already compiled.


Well, I hope this short article made you at least a bit curious
about how it is to use these distros. Why not give them a try? At least
visit their homepages and take a look at some more information. Is
there anything you’d want to add? I’d love to read some comments from
users and people new to Linux!

Why Leadership ?


Leadership - Training by Spreadminds

From: mhdbadr,
1 month ago





A presentation on Leadership prepared by Spreadminds, used as part of a training workshop on leadership.



SlideShare Link

Advanced searching with Views and ApacheSolr


ApacheSolr presentation from "Do it With Drupal"

From: robertDouglass,
2 days ago





Here I show you how to get the most out of Drupal in terms of search. The focus of the presentation is how faceted search will change the way you approach finding things. The ApacheSolr Drupal module is featured.



SlideShare Link