Responsive Sites for Mobile Devices

Responsive Sites for Mobile Devices

A responsive website changes its appearance and layout based on the size of the screen the website is displayed on ...

View details »
Web Applications

Web Applications

A web application or web app is any software that runs in a web browser. It is created in a browser-supported programming language (such as the combination of JavaScript, HTML and CSS) and relies on a web browser to render the application. ...

View details »
Data-driven Sites

Data-driven Sites

A data-driven website is a website that uses a database to store information that is captured during an Internet session or a site that uses data from a database to dynamically assemble web pages using live data from a database ...

View details »
Relational Databases

Relational Databases

A Relational Database is a database that stores information about both the data and how it is related. Data and relationships are represented in a flat, two-dimensional table that preserves relational structuring ...

View details »
Dynamic Web Sites

Dynamic Web Sites

A Dynamic Web Site is a web site that displays different content each time it's viewed. For example, the page may change with the time of day, the user that accesses the web page, or the type of user interaction ...

View details »

Responsive Sites for Mobile Devices

Responsive Sites for Mobile Devices What does that mean?

A responsive website changes its appearance and layout based on the size of the screen the website is displayed on.

Responsive sites can be designed to make the text on the page larger and easier to read on smaller screens. They can also be configured to make the buttons on a phone's screen easier to press. More sophisticated ways of using responsive design on a mobile device include: formatting the website to hide or present entirely different information, radically changing the graphics and colors, or even reducing the site to emphasize just its most important piece.

How might this concern you ...

As more people are beginning to use mobile devices, like smartphones and tablets, for every task that used to be only capable on desktop, one thing has become clear: mobile is taking over Internet surfing. And, it's not even just surfing. It's everything from browsing social media outlets, checking emails and doing online shopping.

With a responsive website design, you don't have to have worry about having different websites for various devices or making sure that your site runs properly on a mobile device.


Web Applications

Web Applications What are they?

A web application or web app is any software that runs in a web browser. It is created in a browser-supported programming language (such as the combination of JavaScript, HTML and CSS) and relies on a web browser to render the application.

Why you might want one ...

One attractive feature of a Web App is that you can run them from anywhere. They are not Operating System specific therefore you can work from a Mac, a Linux box, or Windows. This is in contrast to working within a Desktop application which only runs on the specific OS it was built for. You don't have to be sitting at your computer at work, you can access the Web Application from your tablet or laptop at the coffee shop or in your living room.

Web applications are popular due to the ubiquity of web browsers, and the convenience of using a web browser as a client, sometimes called a thin client. The ability to update and maintain web applications without distributing and installing software on potentially thousands of client computers is a key reason for their popularity, as is the inherent support for cross-platform compatibility.


Data-driven Sites

Data-driven Sites What it means?

A data-driven website is a website that uses a database to store information that is captured during an Internet session or a site that uses data from a database to dynamically assemble web pages using live data from a database.

When you have a data-driven site, you are collecting data on the fly and then building the pages from that data.

They are typically connected to a server to get their data from either flat files, or most commonly from a database. Relational Databases are the most common and provide the most power for data manipulation such as filtering the data you want to see, querying for specific information, combining data to form complex relationships.

Most, but not all data-driven websites are "authenticated" sites. An authenticated site requires that the visitors identify themselves using a login ID and password.


Relational Databases

Relational Database What is it?

A relational database is a database that stores information about both the data and how it is related. Data and relationships are represented in a flat, two-dimensional table that preserves relational structuring.

Data is only stored once. This avoids data duplication. For example: If you use a spreadsheet to contain a list of people, you might have a column for City. If 10 of your people live in the same city, you would have that city entered 10 times. In a relational database it would be in only one place.

Advantages:

  • Ease of use: The revision of any information as tables consisting of rows and columns is much easier to understand.
  • Flexibility: Different tables from which information has to be linked and extracted can be easily manipulated by operators such as project and join to give information in the form in which it is desired.
  • Precision: The usage of relational algebra and relational calculus in the manipulation of the relations between the tables ensures that there is no ambiguity, which may otherwise arise in establishing the linkages in a complicated network type database.
  • Security: Security control and authorization can also be implemented more easily by moving sensitive attributes in a given table into a separate relation with its own authorization controls. If authorization requirement permits, a particular attribute could be joined back with others to enable full information retrieval.
  • Data Independence: Data independence is achieved more easily with normalization structure used in a relational database than in the more complicated tree or network structure.
  • Data Manipulation Language: The possibility of responding to query by means of a language based on relational algebra and relational calculus e.g SQL is easy in the relational database approach. For data organized in other structures the query language either becomes complex or extremely limited in its capabilities.


Dynamic Web Sites

Dynamic Web Sites What are they?

A dynamic Web Site is a site that displays different content each time it's viewed. For example, the page may change with the time of day, the user that accesses the web page, or the type of user interaction.

There are many static websites on the Internet. You won't be able to tell immediately if it is static, but the chances are, if the site looks basic and is for a smaller company, and simply delivers information without any bells and whistles, it could be a static website.

Static websites can only really be updated by someone with a knowledge of website development. Static websites are the cheapest to develop and host, and many smaller companies still use these to get a web presence.

Dynamic sites on the other hand can be more expensive to develop initially, but the advantages are numerous. At a basic level, a dynamic website can give the website owner the ability to simply update and add new content to the site.

For example, news and events could be posted to the site through a simple browser interface. Dynamic features of a site are only limited by imagination.

Some examples of dynamic website features could be: content management system, e-commerce system, bulletin / discussion boards, intranet or extranet facilities, ability for clients or users to upload documents, ability for administrators or users to create content or add information.


Object-Oriented Coding

Object-Oriented Coding Why should you care?

Creating software applications typically involves designing how to represent the application data and determining how to implement operations performed on that data. Procedural programs pass data to functions, which perform the necessary operations on the data. Object-oriented software encapsulates data and operations in objects that interact with each other via the object's interface.

Spaghetti code can be caused by several factors, including inexperienced programmers blindly obeying their supervisors' mandates on how to write code and a complex program which has been continuously modified by several people over a long life cycle. Structured programming greatly decreases the incidence of spaghetti code.

How might this concern you ...

Object Oriented Programming provides a clear modular structure for programs which makes it good for defining abstract datatypes where implementation details are hidden and the unit has a clearly defined interface.

OOP makes it easy to maintain and modify existing code as new objects can be created with small differences to existing ones.

OOP provides a good framework for code libraries where supplied software components can be easily adapted and modified by the programmer. This is particularly useful for developing graphical user interfaces.


State of the Art Technologies

State of the Art Technologies Why you should care.

The term state of the art refers to the highest level of general development, as of a device, technique, or scientific field achieved at a particular time. It also refers to the level of development reached at any particular time as a result of the common methodologies employed.

The State of the Art in PHP

Not long ago, back in the heyday of Drupal, Wordpress, and phpbb, the style of PHP was mostly procedural, with a typical app consisting of dozens, or even hundreds of PHP files, each of which contained a snaking nest of HTML, PHP, and SQL, used conditional includes for flow control, and was littered with global state.

Some of the wiser folks in the php community knew this was not the right way to do things. This highly-coupled code was hard to test, hard to change, and hard to reuse. The more elegant solutions to these problems took a few years to build, and were spurred by the addition of namespacing to PHP’s OOP model, the race to build MVC frameworks to compete with Ruby on Rails, and the emergence of git and github as the de-facto standards for open source.

Now there’s a new breed of PHP applications and libraries. They represent the current State of the Art in PHP development.

Namespacing and Object-Oriented Programming

Object-oriented programming in PHP has been around since PHP 5.0, but it was not until the addition of namespaces that the PHP community really started taking it seriously. Most importantly, the addition of namespaces made it possible to share code and components without massive rewrites or name collisions.

With the wider adoption of OOP code in PHP, a lot of the bad practices like interspersing HTML, PHP, and SQL have faded, and mature, well-factored patterns and practices have rapidly proliferated. We’ve also ended up with a lot of libraries that are modular and well-tested, thanks in no small part to their object-oriented designs.

Composer

Composer is, hands down, the most influential change in PHP in the past 5 years. It solves the dependency management problem for PHP, eliminating the weird quirks of PEAR, the obvious problems with copy-paste, and providing frictionless integration with git.

Composer is an elegant, well-design solution that supersedes even the de-facto tooling in ruby, python, and java. In short, it’s a best-in-breed dependency management tool. This provided the PHP community the much-needed ability to share, reuse, and improve code, and has contributed to a surge in innovation in PHP projects, components, and libraries.

Combined with git and github, it’s now trivial to incorporate an open source library or 10 into your projects, and also trivial to keep those libraries up to date with new features and bug fixes. This is a huge boon to library authors as well as users, since the more people using your project, the more patches you get, and the positive feedback loop continues.

PHPUnit

A lesson any professional software engineer learns very quickly is that software maintenance costs far more than the initial development. Good test coverage makes your product easy to change and reliably evolve over time. PHPUnit is the best testing tool for PHP, and aside from proving excellent unit test coverage, has helped PHP developers integrate with Selenium for browser-based functional testing.

Combined with Travis CI or Jenkins, you can have continuous integration and testing running on your project with very little effort.

Symfony Components

The first version of the Symfony framework was build using a monolithic MVC architecture and backed by the Doctrine ORM (or optionally Propel). The code quality was very high, but documentation was rather poor and the framework itself was rather complicated.

In Symfony 2, the framework was split into components, each indepdent with a small, purposed scope. For example, the console component makes writing command line tools trivial. The finder component can be used to enumerate and filter files on the filesystem using the familiar foreach idiom. The translation component provides flexible internationalization functionality so your applications can reach users around the world. There are a dozen or so other components that you can use ad-hoc, or together as the Symfony 2 framework.

The components are of the highest quality. They solve common problems in PHP using the best patterns and practices, which means that you can take advantage of heavily tested and well designed code with virtually no effort. The components eliminate boilerplate and make PHP productive and fun to write. Being able to take the components as individual, isolated pieces also makes them much easier to learn.

The Symfony components are being incorporated into numerous other projects, including Drupal, and this is representative of a great shift in the PHP community towards sharing and reusing code to build better products.

PHP Standards Group

The PHP Framework Interop Group is a community collaboration to define common standards for PHP projects. Standards facilitate reusing components between projects, as well as making developer experience more easily transfer between them.

PSR-0 describes how to make your code work with a standard autoloader, such as the one provided by Composer. If you’re not already familiar, autoloading is PHP’s compliment to OOP packaging, and eliminates having to write a bunch of includes and other boiler-plate code to get your application working with various libraries.

PSR-1 and PSR-2 describe coding style, so you can stop arguing about tabs vs. spaces and get back to work. Since dredging through code and verifying that it conforms to the spec is tedious, Fabien Potencier made php-cs-fixer to do it for you. The coding styles outlined in PSR-1 and 2 help you avoid silly bugs, make code more readable, and eliminate compatibilities issues between different PHP configurations.

PSR-3 describes a shared logging interface, incorporating the eight Syslog levels of The Syslog Protocol (RFC 5424): debug, info, notice, warning, error, critical, alert and emergency.

PSR-4 describes a specification for autoloading classes from file paths. It is fully interoperable, and can be used in addition to any other autoloading specification, including PSR-0. This PSR also describes where to place files that will be autoloaded according to the specification.


Industry-Standard Methodologies

Industry-Standard Methodologies Why this matters. A Lot

Development methodologies function much like recipe books, laying down guidelines for others to follow or adapt. But, as every cook knows, you can follow all the rules and still make a dog's dinner.

Celebrity chefs may be able to knock up a gourmet meal on a whim and a bottle of claret, but for the rest of us, successful cookery means sticking more or less faithfully to the recipe. The same applies in the world of IT, where methodologies have emerged that aim to ensure that software development projects deliver palatable and predictable results, served up on time and within budget.

Development techniques have changed radically over the past 15 years, moving from lengthy 3GL-based projects based around a waterfall lifecycle, to object-based projects using an iterative approach and lasting weeks or months rather than years. Tried and tested development methodologies have gone through a series of metamorphoses to keep pace with these changes, and new ones have appeared to support the changing requirements of 21st century software building.

But software specialists agree that in the end the important issue is not so much which methodology you use, as having some kind of framework for structuring your project. The early evangelism over a methodology-based approach has given way to a more realistic view, which acknowledges that sometimes you need to adapt your recipe to the ingredients you have to hand and to the preferences of the people who are going to consume the results.

In theory at least, a methodology contributes to successful project completion in three ways. It provides a framework for evaluating the problem the project is intended to address. It provides a roadmap for the project, ensuring that no important stages are left out and that everything is proceeding to schedule. Thirdly, it provides a way of representing aspects of the developing system to system engineers, software developers, user representatives, management and other stakeholders in the project, via standard diagrams that generally form part of the methodology. Using industry standard notations also makes it easier to get newly recruited IT staff up and running quickly, or enable staff to move between different projects without a steep learning curve.