General Articles (10)


The Intersection of Mobile Devices and Computers

Introduction

Over the past ten years, I have programmed software for a number of platforms using a number of different technologies. During this time, I have began to recognize some fascinating trends in software development. Namely, everything is moving towards the web. In this paper, we will look at the different mobile and desktop computers that consumers use. Then, we will explore how they all are converging on the web as a common platform. Finally, we will look at what this means for businesses, IT managers, and consumers.

Overview of Mobile Devices

There are a number of types of mobile devices, but for our purposes, we will be specifically analyzing mobile phones. We will be essentially ignoring tablet computers because, by and large, tablet devices either run the same operating systems as mobile phones or the same operating systems as desktop computers, so we will already be covering their platforms either directly or indirectly.

Distribution of Platforms

Right now, there are a number of operating systems running on mobile phones, though, according to late-2010 data from Gartner, a technology research and advisory company, there are four key players: Symbian, Android, Blackberry (RIM), and iOS (Gartner Says Worldwide Mobile Device Sales to End Users Reached 1.6 Billion Units in 2010; Smartphone Sales Grew 72 Percent in 2010, 2011). You can see their complete data table below. Keep in mind that there are other mobile platforms in use, but with their market share so low, they are not worth exploring.

Mobile Operating

System

2010

Units

2010 Market Share (%) 2009

Units

2009 Market Share (%)
Symbian 111,576.7 37.6 80,878.3 46.9
Android 67,224.5 22.7 6,798.4 3.9
Research In Motion 47,451.6 16.0 34,346.6 19.9
iOS 46,598.3 15.7 24,889.7 14.4
Microsoft 12,378.2 4.2 15,031.0 8.7
Other Oss 11417.4 3.8 10432.1 6.1
Total 296,646.6 100.0 172,376.1 100.

Source: (Gartner Says Worldwide Mobile Device Sales to End Users Reached 1.6 Billion Units in 2010; Smartphone Sales Grew 72 Percent in 2010, 2011).

Symbian

Symbian devices currently account for close to 38% of the market (Gartner Says Worldwide Mobile Device Sales to End Users Reached 1.6 Billion Units in 2010; Smartphone Sales Grew 72 Percent in 2010, 2011). Right now, all versions of Symbian include a web browser that is based on the Webkit engine (Symbian Web Browser versions and device support, 2010). Webkit is an open-source framework for processing web pages that is standards-compliant and in use by Safari, Chrome, and a number of other platforms, both for mobile devices and desktop computers (Welcome to the website for the WebKit Open Source Project!, 2011). Also, the newest versions come packaged with a version of Flash  (Symbian Web Browser versions and device support, 2010).

Android

Android is an operating system developed by Google and sponsored by the Open Handset Alliance, an organization representing over eighty different mobile companies working together to streamline mobile computing (What would it take to build a better mobile phone?, 2011). It is probably rising in popularity faster than any other platform and, as a developer, I expect it to overtake Symbian in the next year or two. Android currently comes packaged with a browser that, like Symbian, is based on the webkit browser (What is Android?, 2011). Additionally, it has Adobe Flash available through the Android Market (Flash Player 10.2, 2011).

Blackberry

Blackberry is a product of the company Research in Motion. It currently holds a large market share, 16%, though it is losing ground from 19% in 2009 (Gartner Says Worldwide Mobile Device Sales to End Users Reached 1.6 Billion Units in 2010; Smartphone Sales Grew 72 Percent in 2010, 2011). It ships with a webkit-based browser, just like all of the other mobile platforms we have looked at (Developing The NEW BlackBerry Browser, 2010).

iOS

Apple offers an operating system for their iPad, iPod, and iPhone products called iOS (iOS Overview, 2010). When reading the statistics concerning Apple’s market share, keep in mind that this does not include their iPad or iPod product lines, so the number of devices running this operating system is actually much greater than this statistic shows. Apple’s iOS ships with a webkit-based browser closely resembling Safari (Android 2.2 Webkit Browser Faster than iOS Safari at Javascript, 10). Unfortunately, it does not come with flash support, though it can be obtained by illegally jail breaking an iOS device (Adobe Flash ported on to iPhone, iPad iOS 4 [Jailbreak], 2010).

Other Platforms

The only two other notable platforms that we have not yet covered are Windows Mobile and Palm OS. For the purposes of our discussions, all you need know is that they both represent a relatively small market share and their newest versions come equipped with a relatively full-featured browser (Palm WebOS 1.4 vs. Windows Mobile 7, 2010).

Overview of Computers

When we talk about computers, we are talking fundamentally about devices that are typically larger than phones and that do not run phone operating systems. Below is a chart showing the distribution of desktop operating systems. Keep in mind that this data is collected based upon how many people visit their website from one operating system or another, so statistics vary widely in this area. Wikipedia cites eleven different sources which all produce different statistics, but the overall distribution tends to be relatively similar (Usage share of operating systems, 2011). For our purposes, we will look at Windows and Apple because they are the only two operating systems that have a large enough market share to be worth mentioning.

OPERATING SYSTEM TOTAL AVG OCT ’10 NOV ’10 DEC ’10 JAN ’11 FEB ’11 MAR ’11
Windows 87.03% 87.61% 87.23% 87.00% 87.03% 86.82% 86.59%
Mac 12.21% 11.72% 11.96% 12.27% 12.29% 12.42% 12.52%
Linux 0.58% 0.53% 0.64% 0.55% 0.52% 0.58% 0.65%
Undetected 0.17% 0.14% 0.17% 0.17% 0.15% 0.17% 0.22%
Other 0.01% 0.00% 0.00% 0.01% 0.01% 0.01% 0.01%

Source: (Operating Systems Market Share, 2010).

Microsoft Windows

Microsoft has been producing Windows since the year 1984 (The Unusual History of Microsoft Windows). It began as an extension of MS-DOS, Microsoft’s previous console operating system, and sought to add on a graphical user interface. Today, around 87% of computers with access to the internet use some form of the Microsoft Windows operating system (Operating Systems Market Share, 2010). Windows 7, their most recent rendition, ships with Internet Explorer version 8, a powerful and near standards-compliant browser (Windows 7 Features – Internet Explorer). Many new POS terminals and devices now include an installation of Windows 7 Embedded Standard, which is really just Windows 7. This means that many POS terminals likely have a web browser (Windows Embedded Standard 7).

Apple Mac OS

Apple began producing a graphical version of Mac OS in 1983 (The Graphical Age at Apple, 2004), just a little before Windows 1.0 was released. As you can see from the statistics, Microsoft Windows has been wildly more successful than Apple Mac OS, though Mac is making a steady comeback (Operating Systems Market Share, 2010). The most recent version of their operating system, Mac OSX version 10.x, includes an extremely powerful, webkit-based browser called Safari (Safari).

The Common Platform

If you have been reading this paper start to finish, by now you will have noticed a common theme between all of these platforms: they all ship with standards-compliant web browsers. In my personal opinion, this sort of convergence will mean big changes for businesses, IT managers and their customers. In this section, we will cite what industry experts are expecting in terms of these phenomena.

Change for Businesses

Dan Matthews, Chief Technology Officer of IFS, an Enterprise Resource Planning firm founded in 1983, believes that technology can help businesses to go green, though this presents a major challenge for businesses (Environment aware: How business can be green, 2011). As devices merge, I expect that we will see more and more mobile devices being used as point-of-sale systems, such as the square for iOS. This particular device allows you to turn a iPad, iPod, or iPhone into a credit card scanner (Square’s On-the-Go iPhone Credit Card Scanner Will Cost $1, 2010).

I think this is just one example of this kind of innovation, but as time goes on, we may see more and more of these sorts of accessories available. For instance, your point-of-sale application could be web-based and your credit card scanner could just be a simple keyboard. Then, you just get a different scanner for the different platforms that your business software runs on, but the underlying software never changes. I have personally programmed a loyalty card and gift card that works this way and is in use by close to twenty businesses, One Loyalty Network (Login Page).

Change for IT Managers

According to Donald Ferguson, Chief Technology Officer of software firm CA, the biggest problem today is the complexity of IT. He says that IT departments spend the majority of their funds supporting existing platforms. Because of all of the different platforms they have to maintain, this makes innovation very difficult (The mantra of CA Technologies’ Donald Ferguson: Simplify, 2010). Perhaps, with only one or two web applications to maintain in the cloud, businesses will be able to focus more on innovation and less on maintaining all of their different platforms.

Change for Consumers

Stephen Herrod, CTO and senior vice president of VMWare, said in a recent interview, “What I’m really excited about is how we let individuals choose the best device for what they want to do, how do we let them have the freedom to bring that productivity-enhancing device to work”  (VMware CTO on giving staff choice of their own devices, 2011). Here, I believe Stephen is beginning to discover that we will see desktop and mobile technologies begin to merge. He does also point out that, as these sorts of devices become more standardized, a major concern for the consumer is going to be how to keep their work-data secure and separate from their private data”  (VMware CTO on giving staff choice of their own devices, 2011). As consumers, we should keep this in mind as we look at our next IT purchase.

Conclusion

Because both mobile and desktop computers include web browsers, both platforms are converging on the web as a common platform for application development. This could mean big changes for the IT industry. Businesses, IT managers and consumers can expect to see more and more applications universally available through a web browser. For those entering the IT industry, learning basic web authoring skills could prove invaluable in the coming years, regardless of whether you personally work as a programmer, an artist or a manager. If you want to be successful in your career in IT, it is important that you stay on top of the trends. So, get on out there and start a blog, build a website, and otherwise seize the day! Your career will thank you.

Resources

Adobe Flash ported on to iPhone, iPad iOS 4 [Jailbreak]. (2010, 7 4). Retrieved 4 7, 2010, from TaranFX: http://www.taranfx.com/flash-on-iphone-ipad-ios-4

Android 2.2 Webkit Browser Faster than iOS Safari at Javascript. (10, 7 8). Retrieved 4 7, 2010, from Pocket Now: http://pocketnow.com/tech-news/android-22-webkit-browser-faster-than-ios-safari-at-javascript

Developing The NEW BlackBerry Browser. (2010, 8 4). Retrieved 4 7, 2011, from Inside Blackberry’s Developer Blog: http://devblog.blackberry.com/2010/08/developing-new-blackberry-browser/

Environment aware: How business can be green. (2011, 1 26). Retrieved 4 7, 2011, from BBC News: http://www.bbc.co.uk/news/business-12291673

Flash Player 10.2. (2011). Retrieved 4 7, 2011, from Android Market: https://market.android.com/details?id=com.adobe.flashplayer

Gartner Says Worldwide Mobile Device Sales to End Users Reached 1.6 Billion Units in 2010; Smartphone Sales Grew 72 Percent in 2010. (2011, 2 9). Retrieved 4 7, 2011, from Gartner: http://www.gartner.com/it/page.jsp?id=1543014

iOS Overview. (2010, 7 8). Retrieved 4 7, 2011, from iOS Developer Library: http://developer.apple.com/library/ios/#referencelibrary/GettingStarted/URL_iPhone_OS_Overview/_index.html

Login Page. (n.d.). Retrieved 4 7, 2011, from One Loyalty Network: http://oneloyaltynetwork.com/loyalty/users/login

Operating Systems Market Share. (2010, 4 1). Retrieved 4 7, 2010, from Stat Owl: http://statowl.com/operating_system_market_share.php

Palm WebOS 1.4 vs. Windows Mobile 7. (2010, 2 21). Retrieved 4 7, 2010, from The MX Web: http://themxweb.com/2010/02/21/palm-webos-1-4-vs-windows-mobile-7/

Safari. (n.d.). Retrieved 4 7, 2011, from Apple Developer: http://developer.apple.com/technologies/safari/

Square’s On-the-Go iPhone Credit Card Scanner Will Cost $1. (2010, 2 16). Retrieved 4 7, 2011, from Read Writer Start: http://www.readwriteweb.com/start/2010/02/square-iphone-scanner-1-dollar.php

Symbian Web Browser versions and device support. (2010). Retrieved 4 7, 2011, from Forum.Nokia: http://library.forum.nokia.com/index.jsp?topic=/Web_Developers_Library/GUID-D5C6212A-5EF2-44BF-B1F0-650A5F57D501.html

The Graphical Age at Apple. (2004, 2). Retrieved 4 7, 2011, from Kernal Thread: http://www.kernelthread.com/publications/appleoshistory/3.html

The mantra of CA Technologies’ Donald Ferguson: Simplify. (2010, 12 8). Retrieved 4 7, 2010, from BBC News: http://www.bbc.co.uk/news/business-11944966

The Unusual History of Microsoft Windows. (n.d.). Retrieved 4 7, 2011, from About.com: http://inventors.about.com/od/mstartinventions/a/Windows.htm

Usage share of operating systems. (2011, 4 5). Retrieved 4 7, 2011, from Wikipedia: http://en.wikipedia.org/wiki/Usage_share_of_operating_systems

VMware CTO on giving staff choice of their own devices. (2011, 3 9). Retrieved 4 7, 2010, from BBC News: http://www.bbc.co.uk/news/business-12682026

Welcome to the website for the WebKit Open Source Project! (2011). Retrieved 4 7, 2011, from The WebKit Open Source Project: http://www.webkit.org/

What is Android? (2011, 4 1). Retrieved 4 7, 2011, from Android Developers: http://developer.android.com/guide/basics/what-is-android.html

What would it take to build a better mobile phone? (2011). Retrieved 4 7, 2011, from Open Handset Alliance: http://www.openhandsetalliance.com/

Windows 7 Features – Internet Explorer. (n.d.). Retrieved 4 7, 2011, from Windows: http://windows.microsoft.com/en-US/windows7/products/features/internet-explorer

Windows Embedded Standard 7. (n.d.). Retrieved 4 7, 2010, from Windows Embedded: means that many POS terminals likely have web browser support

  • Share/Bookmark



How To Scrape Data Using Standard PHP

Alright, so you want a website that displays live stock quotes? Or maybe you want it to download and save financial reports off from the SEC (Security and Exchange Commission) database? In this tutorial, I show you how to do it in 10 minutes using PHP.

Alright, for the novices out there, I suggest you read my article on how the internet works before we begin and the first few pages of w3 school’s html tutorial.

Alright, lets begin. Scraping involves several steps:

  1. Downloading the contents of the other page
  2. Interpreting/Reading the other page
  3. (Possibly) Using information gained to go back to #1

For example, Google “spiders” through every page on the internet. How does it do this? Well, it follows the steps above and, in number 2, it searches for “links” within each page and then uses those links to loop back to number one. Simple, right?

Alright, so lets pick a site that we want to scrape. How about we scrape tutorials off from w3schools. Below is the contents of http://www.w3schools.com/ in plain html code. To view this, go to http://www.w3schools.com/ and then click view->source in your browser. (The verbiage is a little different in each browser, but same basic idea). I have chosen to not only show the html code that interests us by searching for the specific html code that we want to read first.

<tr>
<td id="leftcolumn" width="150" valign="top" align="left" style="padding:4px;border:none">
<h2><span>HTML</span> Tutorials</h2>
<a href="html/default.asp" target="_top">Learn HTML</a><br />
<a href="xhtml/default.asp" target="_top">Learn XHTML</a><br />
<a href="css/default.asp" target="_top">Learn CSS</a><br />
<a href="tcpip/default.asp" target="_top">Learn TCP/IP</a><br />
<br />
<h2><span>Browser</span> Scripting</h2>
<a href="js/default.asp" target="_top">Learn JavaScript</a><br />
<a href="htmldom/default.asp" target="_top">Learn HTML DOM</a><br />
<a href="dhtml/default.asp" target="_top">Learn DHTML</a><br />
<a href="vbscript/default.asp" target="_top">Learn VBScript</a><br />
<a href="ajax/default.asp" target="_top">Learn AJAX</a><br />
<a href="jquery/default.asp" target="_top">Learn jQuery</a><br />
<a href="e4x/default.asp" target="_top">Learn E4X</a><br />
<br />
<h2><span>XML</span> Tutorials</h2>
<a href="xml/default.asp" target="_top">Learn XML</a><br />
<a href="dtd/default.asp" target="_top">Learn DTD</a><br />
<a href="dom/default.asp" target="_top">Learn XML DOM</a><br />
<a href="xsl/default.asp" target="_top">Learn XSLT</a><br />
<a href="xslfo/default.asp" target="_top">Learn XSL-FO</a><br />
<a href="xpath/default.asp" target="_top">Learn XPath</a><br />
<a href="xquery/default.asp" target="_top">Learn XQuery</a><br />
<a href="xlink/default.asp" target="_top">Learn XLink</a><br />
<a href="xlink/default.asp" target="_top">Learn XPointer</a><br />
<a href="schema/default.asp" target="_top">Learn Schema</a><br />
<a href="xforms/default.asp" target="_top">Learn XForms</a><br />
<br />
<h2><span>Server</span> Scripting</h2>
<a href="sql/default.asp" target="_top">Learn SQL</a><br />
<a href="asp/default.asp" target="_top">Learn ASP</a><br />
<a href="ado/default.asp" target="_top">Learn ADO</a><br />
<a href="php/default.asp" target="_top">Learn PHP</a><br />
<a href="aspnet/default.asp" target="_top">Learn ASP.NET</a><br />
<a href="dotnetmobile/default.asp" target="_top">Learn .NET Mobile</a><br />
<br />
<h2><span>Web</span> Services</h2>
<a href="webservices/default.asp" target="_top">Learn Web Services</a><br />
<a href="wsdl/default.asp" target="_top">Learn WSDL</a><br />
<a href="soap/default.asp" target="_top">Learn SOAP</a><br />
<a href="rss/default.asp" target="_top">Learn RSS</a><br />
<a href="rdf/default.asp" target="_top">Learn RDF</a><br />
<a href="wap/default.asp" target="_top">Learn WAP</a><br />
<a href="wmlscript/default.asp" target="_top">Learn WMLScript</a><br />
<br />
<h2><span>Multimedia</span></h2>
<a href="media/default.asp" target="_top">Learn Media</a><br />
<a href="smil/default.asp" target="_top">Learn SMIL</a><br />
<a href="svg/default.asp" target="_top">Learn SVG</a><br />
<a href="flash/default.asp" target="_top">Learn Flash</a><br />
<br />
<h2><span>Web</span> Building</h2>
<a href="site/default.asp" target="_top">Web Building</a><br />
<a href="browsers/default.asp" target="_top">Web Browsers</a><br />
<a href="cert/default.asp" target="_top">Web Certification</a><br />
<a href="hosting/default.asp" target="_top">Web Hosting</a><br />
<a href="w3c/default.asp" target="_top">Web W3C</a><br />
<a href="quality/default.asp" target="_top">Web Quality</a><br />
<a href="semweb/default.asp" target="_top">Web Semantic</a><br />
<br />
</td>
<td valign="top" align="left">
<table border="0" width="100%" cellpadding="0" cellspacing="0">
<tr>

Alright, so upon basic analysis, what do we find? Well, this portion of code STARTS with “<td id=”leftcolumn” width=”150″ valign=”top” align=”left” style=”padding:4px;border:none”>” and ends with “<table border=”0″ width=”100%” cellpadding=”0″ cellspacing=”0″>“. So, if we wanted to “grab” this section of html code from the whole of the site, then we’d be all set.

Alright, so lets go back to our steps again.

  1. Downloading the contents of the other page
  2. Interpreting/Reading the other page

Downloading the contents of the other page in PHP is easy. We can just use the file_get_contents function like this:

$pagecontents = file_get_contents("http://www.w3schools.com/");

The above code assigns the php variable $pagecontents the contents of w3schools.com (in html, of course).

Now, we need to “grab” the html code of interest. To do this, we need to write a function that can search for the “start”, the “end” and then grab what is in between. Here is a php function that does just that:

function getBetween($str, $start, $end, $searchpos=0) {
$startpos = strpos($str, $start, $searchpos);
if ($startpos === false) return ""; // didn't find start
$endpos = strpos($str, $end, $startpos + strlen($start));
if ($endpos === false) return ""; // didn't find end
return substr($str, $startpos + strlen($start), ($endpos - $startpos - strlen($start)));
}

So, to wrap it all up, we’ve learned how to download a list of the tutorials on w3schools.com. This is hardly a complete project, as you could continue to loop through each “individual” link by searching for things between “<a” and “</a>”, but this is a great start! The complete code is below.

<?php

function getBetween($str, $start, $end, $searchpos=0) {
$startpos = strpos($str, $start, $searchpos);
if ($startpos === false) return ""; // didn't find start
$endpos = strpos($str, $end, $startpos + strlen($start));
if ($endpos === false) return ""; // didn't find end
return substr($str, $startpos + strlen($start), ($endpos - $startpos - strlen
($start)));
}

$pagecontents = file_get_contents("http://w3schools.com/");
$part = getBetween($pagecontents, '<td id="leftcolumn" width="150" valign="top" align="left" style="padding:4px;border:none">', '<table border="0" width="100%" cellpadding="0" cellspacing="0">');

print($part);

?>

– Jacob Beasley

  • Share/Bookmark



Applied Theory: How Facebook Works

After having studied my articles on Relational Databases and How the Internet Works, here are the basics of how Facebook works. I will only concentrate on the users and their friends (as Facebook is a HUGE undertaking).
Tables
Below are the tables for the users and friends features. Notice how Jen & Jake are friends and Rob & Davy are friends.

Users

id username password
1 jacob beasley
2 jennifer hamilton
3 rob mohr
4 davy stiles
5 charles beasley
Friends

id userid friendid
1 1 2
2 2 1
3 3 4
4 4 3
Login Process:

  1. You go to Facebook.com. Facebook.com shows you a login form. You type in your username/password and click login.
  2. Your browser sends a request to Facebook containing your login information
  3. The web server receives the requests, recognizes that it is for a PHP file, and it starts up the PHP interpreter.
  4. The PHP Interpreter reads the Facebook programmer’s code. The code realizes that you are trying to login and queries up the MySQL database to see if the email/password is valid. The “query” is sent using SQL (structured query language).
  5. The mysql database searches the table and finds the user. It then sends this back to the php script
  6. The php script continues running where it left off. It recognizes that the data was valid. It tells the browser to save a cookie with the user’s information and outputs the rest of the page.

Viewing another page:

  1. You click on your inbox.
  2. Your browser requests the inbox page. It sends the cookie that was set in the login process over to the web server.
  3. The web server recognizes it is requesting a PHP file and runs the code through the PHP interpreter.
  4. The php code sends a request to the mysql server to see if the information stored in the cookie is valid.
  5. The mysql server sends back a response.
  6. The php code sees that the cookie does checkout. It then queries the mysql table for a list of messages
  7. the mysql servers sends back a response with the messages
  8. the php code then outputs the rest of the page with the messages
  9. The web server sends what the php code outputs to the browser
  10. The browser, finally, displays the page to you, the user.
  • Share/Bookmark



Relational Databases In Ten Minutes!

Database Crash Course
How do you store large amounts of information? How does a person store, say, 20000 users each with 4 different purchases? It does this using a database system. Below are two different types of database systems. We will be focusing on a relational database system, as a flat database systems are really only hypothetical these days… most everything we do will be relational in nature.

Flat Database
A flat database simply is a list of items. For example, if you just have a list of people have signed up for a newsletter.
Relational Database
A relational database combines flat databases (or tables) and links up entries from one flat database (table) with another. For example, if you have a flat database (or table) of newsletters and a flat database (or table) of people who have signed up for newspapers. Each entry (or row) in the list of people who signed up for newsletters could be linked to several entries in the newsletters flat database (or table).

Database

A database is a collection of tables.

Table

A table is a bit like an excel spreadsheet; it has rows and columns. Each row is called a row, record, or entry (the terms are used interchangably). A column is like a “field.”

Field

Each table contains a number of fields. Each field has a type. For example, if I have a table that is meant to store customer information, I could call it “customerinformation” and give it the fields “id”, “firstname”, “lastname”, and “phonenumber”.

Rows/Records/Entries

Each Row is an entry in a table. For example, in the above customer example, an entry in the “customerinformation” table might have an id of 1, a firstname of jacob, a lastname of beasley, and a phone number of 612 210 7533.

Indexes

Each table “should” have an Index. In other words, something unique. You might set it to autoincrement, too. For example, when you are put on a school system, you are given a “school id” number. Same idea… everything is given an “index” so you can tell it apart.


Relational Database Example: Customer Orders
Lets say that we have a bunch of orders and each order, for whatever reason, can only have one product related to it. This would mean that we could have two tables: one that is orders and one that is products. Below, there are three orders. Two of the orders were for donuts and one was for a crescent roll:

Products Table

id name price
1 donut $3
2 crescent roll $2
Orders Table

id products_id status date
1 1 done 9/13/2009
2 2 done 9/13/2009
3 1 still need to ship 9/14/2009


Relationship Types
Fundamentally, there are 4 relationship types you need to be familiar with: one-to-one, one-to-many, many-to-one, many-to-many.

One-To-One

Description

Customers

id name phone sex
1 john smith 555-555-5555 male
2 ivy, poison 555-654-6456 female
Purchases

id customer_id (make it an index along with id) amount date
1 1 $3245 9/13/2009
2 2 $234 9/13/2009

One-To-Many

Allows you to have one table have many associations on another table. For example, a person may have received, say, 50 messages. Each user has a one-to-many relationship between themselves and the messages they have sent. They also have a one-to-many relationship between their user account the messages they have received.

Customers

id name phone sex
1 john smith 555-555-5555 male
2 ivy, poison 555-654-6456 female

Purchases

id customer_id (but not an index so multiple products can be associated) amount date
1 1 $3245 9/13/2009
2 2 $234 9/13/2009

Many-To-One

Just like one-to-many above, but flip left and right around.

Many-To-Many

In some cases, you may have many of one table associated to many of another table. For example, you may have 50 employees and 10 different office locations. Each employee may work out of several office locations and each office location may have many employees, thus you have a many-to-many relationship between the office locations and the employees table. Below is a demonstration of what this might sort of look like. Below, Jacob works at all locations, Davy works at lakeville, and Rob works in san diego:

Employees Table

id firstname lastname
1 jacob beasley
2 davy stiles
3 rob mohr
Employees_OfficeLocations Table

index employee_id index location_id
1 1
1 2
1 3
2 2
3 3
OfficeLocations Table

id city state
1 farmington mn
2 lakeville mn
3 san diego ca

  • Share/Bookmark



How The Internet Works

Technology Diagram
SERVER SENDS THE RESULTS OF THE PHP/ASP CODE BACK
<—–
RESULT IS SENT BACK TO PHP/ASP CODE FOR PROCESSING

<—–

CLIENT: BROWSER WEB SERVER DATABASE SERVER
—->

BROWSER SAYS: GIMME ______ PAGE AND THE USER FILLED IN ______ FORM ELEMENTS

—->

PHP/ASP CODE SENDS QUERIES THE DATABASE SERVER TO LOOKUP USER ACCOUNTS OR STORE INFORMATION

WEB SERVER INTERPRETS OUTPUT WEB SERVERS: APACHE IS THE MOST COMMON ONE FOR LINUX AND INTERNET INFORMATION SERVER FOR WINDOWS
HTML/CSS/JAVASCRIPT

FLASH

JAVA APPLETS

PHP/ASP CODE MAY BE EXECUTED HERE, OTHERWISE FILES MAY SQL IS USED TO COMMUNICATE BETWEEN PHP/ASP AND MYSQL/SSQL MYSQL/MSSQL – DATABASE SERVERS

Above, one can see that the browser sends requests to the server. The server then either returns the request immediately or, if it is PHP/ASP or other “server side” languages, reads and “parses” the “code.” The PHP/ASP code may connect to a database server such as MSSQL or MySQL and send a request using SQL. The server then sends back a response. When the PHP/ASP is done, it sends back HTML/CSS/Javascript code (generally). The browser receives it and displays it for the user. Below are a list of key vocabulary terms.


Client-Side Languages
Client side languages are executes on the clients’ browser. This means HTML, CSS, and Javascript, generally, though Flash and Java applets are also executed on the client. Below is an explanation of each.

HTML

HTML, Hyper-text markup language, was given its name because it allowed for people to “link up” different “pages.” It is a “markup” language because it “marks up” things. In other words, it describes information; generally, it describes how information is organized on the computer screen. HTML is the foundation of describing how we contents is to be displayed and interpreted on a webpage.

XML
XML, Extensible Markup Language, is a “general” language that is similar to HTML but can describe any type of information (not just HTML). It can be a pain to work with, but it is MUCH easier than proprietary file formats like, say, Microsoft Office! When sending data between different programming languages (say, PHP and ASP and Javascript), XML is a great way to do this.

XHTML
HTML was not “uniform.” Each browser interpreted things differently. The solution was SUPPOSED to be XHTML. By using XML and CSS to describe HTML, the theory was that all browsers could talk the same language and display things identically. The reality? It was a huge pain in the butt… Internet Explorer, the most common web browser, failed to do XHTML right. XHTML failed, but generally speaking you should try and have things done according to “XHTML” standards, but NOT AT THE EXPENSE OF COMPLETING WITHIN BUDGET.

CSS

CSS, cascading stylesheets, is an “add-on” to HTML. HTML does not allow you to specify “specifics” very well. For example, if I want to set the colors of the scrollbar in a web browser, there exists no way to do this in HTML. CSS, however, has allowed this to be done. Additionally, I can make a change throughout the entire document with CSS, such as making all table borders disappear by default.

Javascript

HTML didn’t allow things to move. The solution? Well, one of the solutions was javascript. Javascript can “change” html after the page loads. For example, in a dropdown menu, javascript can be set to be run when someone moves their mouse over an element, it shows the menu. When they click on a menu item, it goes to another page. It can do things like verify that fields have decent information, popup new windows, or popup “are you sure you want to?” prompts. Ask your programmers… they’ll explain what it does. Keep in mind that Javascript is run on the client, not the server, so you STILL MUST VERIFY THAT ALL DATA ENTERED IS CLEAN using a server-side language. For example, I once had a client who had a Captcha system (one of those “type in the word from the image below” things) written in javascript… was useless when spammers wrote programs that would automatically spider through pages, find web forms, and post junk data. The spiders don’t execute javascript code, thus the Captcha was ABSOLUTELY USELESS. We got a few hundred to fix that 😀

Java

Java was invented as compiled-interpreted language. What this means, in short, is that java code will run on any operating system that has Java installed: Windows, Linux, or even Mac. Java, however, takes a long time to load, is EXTREMELY time consuming to program, and requires a very high level of expertise to know how to use (compared to PHP/HTML, for example). Flash has replaced Java on websites, though Java does creep up for uploading large files, though you can often times find pre-made java tools that you can have a programmer sort of “plugin” to the site. For video sites, build on top of something that is already out there such as clipshare that ALREADY HAS THIS BUILT FOR YOU. Java is also used occassionally on the server end in a technology called JSP (Java server pages) much as PHP would be used, but it failed… not many people use it anymore.

Flash

Have you ever seen the Lion King? That was done in Adobe Flash. Flash has, in the past few years, become more powerful than Java in many respects (when it relates to web pages, at least). It is highly media intensive and supports communications with web servers directly (bypassing the browser). Whenever you have a site that needs a lot of “movement”, flash will be involved. Contact your team member who is a flash expert for advice on this. Oftentimes, you can use a CMS but just modify the template so that a flash item is put at the top of the page in the place of, say, a large image banner.


Web Server Programs
Web Servers are computer programs. They sit and wait for incoming requests from a client. When a client connects, the client sends a request. The request contains what domain it is for, what page it wants, and any “form” information that is needed.

Apache Web Server
Linux Web Servers are very common and Apache Web Server is the most used web server on a Linux system. It is 100% free and can handle millions of requests per second, depending on how powerful your server is, of course. There are other web servers, but this is the most common.

Internet Information Server
Windows web servers are the second most common type of web server. The “Internet Information Server” web server is provided with professional versions of windows and windows server addition. Generally speaking, if you want to run ASP/MSSQL, you will need a windows web host and they most likely will have Internet Information Server.


Server-Side Programming Languages
Most websites use server side programming these days. For example, you login to Facebook. What language do you think does all the processing to decide what to display on the page? What language decides how it is displayed? What language figures out that it needs to query up the database server, look up your login information, and log you in? Server-Side languages do this.

PHP
PHP has been around for awhile. All of the new “upstart” companies have done their work in PHP. Youtube, Myspace, and Facebook, to name a few. Why? Because it is totally free, easy to learn, and has a HUGE COMMUNITY OF DEVELOPERS. Our entire business model is built around this language.

ASP
Perhaps the second most common server-side language today is ASP. ASP, or Active Server Pages, is a language that was created by Microsoft and allows automation. Aside from Microsoft’s own sites, few major “upstart” companies have grown off from this technology. It requires a Microsoft server license on all of your servers and it requires that you use Microsoft technologies for everything, thus tripling your costs across the board.

Others
Just about any programming language has been adapted by someone for server side coding. The most notable are Perl, Ruby, and Java (JSP). I used to do it in C++ when I was a kid and had too much time on my hands (as did Ebay when they first started out, I think). Those listed here are about 98% of the server side scripting.


Database Server
Database servers store information. They allow you to get access to that information fast and to do all kinds of cool searches on it. For example, if I have a list of 100,000 companies in a plain text file and I wrote a php program to search through it, it could take 20 to 30 seconds. If I send that over to mysql running on an optimized server, it could take just about .1 seconds… obviously, much better.

MySQL
This software is a lot like MsSQL, but totally free. PHP, out of box, integrates with MySQL completely. Combined with PhpMyAdmin (and other tools), a programmer can add/remove tables and otherwise manage the database very easily.

MsSQL
This software is a lot like MySQL, but made by Microsoft and rather expensive. It has a few more features than MySQL, but most projects won’t take advantage of those so they don’t matter anyways.


Browser Comparison
Every browser seems to do things differently these days. Below are a description of the major browsers and how they compare

Internet Explorer
Internet Explorer was created by Microsoft therefore it sucks. It is NOT standards compliant and each different version seems to display things different. It, until recently, had not had an “auto-update” feature thus there are lots of people out there still using IE6 and that IE6 does not do CSS right. This means that you can’t rely on all of the CSS features and will need to develop sites with tables instead of just css. Your programmers will know what that means.

Firefox
Firefox is a great, standards-compliant browser. Through its partnership with google, it has become the second most popular browser out there and the #1 choice among programmers. It has a ton of add-ons and mows your lawn while you’re not busy.

Opera/Safari
They both, for the most part, are “standards compliant” meaning they display XHTML how it is supposed to be displayed. If it works in firefox, it will work in these 99% of the time.


CPanel
Finally, CPanel is a tool you will most likely run into in the course of your work. On most reputable Linux servers, you are given a Cpanel account. Through this account, you can manage mysql databases, php settings, files, ftp accounts, mail accounts, etc. You can give the cpanel password to trusted programmers. When you have to terminate someone, change all ftp and cpanel passwords.


FTP
FTP, or File Transfer Protocol, is a method sending files between a client (the programmer) and a server (the web server, generally). My personal favorite FTP client is File-Zilla Client. When a programmer wants to access a server, he generally wants an FTP Account or a CPanel account or both.


Cookies
Cookies are simply a way to store data between page loads. For example, lets say that you login to a site and then you want to remember what user is logged in. Generally, a PHP programmer will have PHP tell the browser to save a cookie with the person’s username/password and/or session information. This way, when they click on a link to go to another page in the site, the browser will send the cookie contents to the web server and the php script can validate the session and know that the user is logged in.


More Reading
There are several topics not covered in this article in any way that are important to learn and become familiar with if you wish to continue your studies:

  1. DNS – How domain names work.
  2. Protocols – What underlying “methods of communication” that the browsers are using (namely, HTTP, HTTPS, and TCP/IP)

  • Share/Bookmark



Just a few paid template websites

With a Pre-Designed Website Template, you do not need to have as many artists and programmers. Some templates are already pre-programmed. At times, you will want to use one template that was made for one CMS with another, in which case you will need a programmer. Other times, you will want customization of a template, in which case you may need both a programmer and an artist. It varies. These templates are also useful when you want to figure out what general “image” a client is wanting to project.

KEEP IN MIND THAT SOMETIMES THEMES FOR ONE VERSION OF A CMS ARE NOT COMPATIBLE WITH THEMES OF ANOTHER VERSION. THIS IS VERY IMPORTANT WHEN DRAWING UP A COST-ANALYSIS.

Template Monster
http://templatemonster.com/
The premier paid themes site. They are awesome.

Free Templates
Just about every CMS has free templates. Here are some sites I turned up with a quick google search
http://wordpressthemesbase.com/
http://drupal.org/project/Themes
http://joomla2u.net/
http://themes.cmsmadesimple.org/
http://drupal2u.com/

  • Share/Bookmark



Review of a number of free, specialized systems

There
are a number of systems out there that don’t really fit into any
category but are useful and could be used as a platform for
development. Below are a few.
SugarCRM

http://www.sugarcrm.com/crm/

An Opensource, PHP/MySQL CRM (Customer
Relationship Management) tool. CRMs are for managing and tracking
marketing campaigns, client communications, and, mainly, the entire
sales process. Things is sort of an “opensource” salesforce, though
Salesforce may be better. Recently, it allowed for an individual to
extend SugarCRM by creating custom modules, which is VERY useful.

 

Benefits
Easy to use
Easy to extend
MANY features
Easy to install
CostDoesn’t integrate with as much software as Salesforce

Hosted version costs money, but you can get it on your own server too.

OrangeHRM

http://www.orangehrm.com/

A tool for managing human resources. Costs
money for full features and doesn’t have every feature you can think
of, but does timecards, does healthcare stuff, and is relatively
inexpensive. Is PHP/MySQL and could be integrated with phone systems
and things to do INCREDIBLE stuff, such as letting people mark
timecards through their cell phone… etc…

 

Benefits
Opensource
Cheap/Free
Easy to figure out
Has Helpful Technical Support
CostMaybe doesn’t have all the features your client will need out of box

not sure if it allows for templating

Phreebooks

http://www.phreebooks.com/

A free, PHP/MySQL accounting system. Not
perfect… but gets the job done. Quickbooks online is probably better,
but if for some reason you felt the need to integrate an opensource
accounting system with another piece of software, this might be the way
to go.

 

Benefits
Free
A number of reports
Does what it needs to do
CostNot use friendly…
reporting is difficult
Not always pretty
dropdown menus are funky

Moodle

http://moodle.org/

A tool for doing online classes. Could be
used by colleges, universities, bible studies, or a host of other
groups. Could also be used by businesses to train staff. Integrates
with tons of tools. Huge community. Entirely PHP/MySQL.

 

Benefits
Large Community
Virtually Bug-Free
Many Addons
Many templates
Lots of Integration
CostNone

Zoho

http://www.zoho.com/

Though not PHP/MySQL based, it has a
number of useful tools that can be used as an alternative to google
technologies. Also, has tools for converting MS Access databases
DIRECTLY OVER into Zoho database systems. The advantage, of course,
being that multiple users can access it at once! Might be able to
develop custom solutions using “Zoho Create” otherwise can make client
love you by getting them setup and moved to Zoho.

 

BenefitsLarge Community
Virtually Bug-Free
Easy to figure out
Relatively inexpensive
Backed up regularly!
CostCosts a little bit of money.
IfByPhone
http://ifbyphone.com/
Though not PHP/MySQL based, it has a number of phone tools. Namely, it as an “API” for creating phone-based applications. This could be integrated with something like PHP or ASP. I believe it is SOAP or some proprietary XML-based protocol. It comes equipped out of box with tools for
call queues, call lists, click-to-call (client types in their phone number and it calls you), etc. Very useful if you want to make a website/application that uses phone systems.
  • Share/Bookmark



Reviews of Several Video Systems (Youtube Clones)

Youtube was a cultural phenomenon. The reality is that videos sell products more than anything else. A video site can be modified into an ecommerce website or it can be used as a video sharing site. Needless to say, programming this yourself (from scratch) would be horribly time consuming… using something out there that is pre-built is a must. Below are a few of these systems that are relatively well-known and have most every feature that you will ever want.

Clip-Share

http://www.clip-share.com/

A commercial, opensource PHP/MySQL system. It is tops: bug-free, fast, and full-featured. Only downside is that it costs money. Their provided web hosting through the site is through a company that backs up everything once a week, so for the average mid-size company that is no big deal. May want to implement some kind of daily email mysql backup that shoots them an email with the database or something, just in case, but you generally should be fine. Their webhosting is DIRT CHEAP in terms of space/bandwidth. Free server install if you purchase hosting from clipshare.

Benefits
bug free and tested
many templates
large user base
Cost

Costs around $250, depending on options and things

need to have special software one your server, of course, due to video editing needs

PHPMotion

http://www.phpmotion.com/

A script similar to clip share but with less features. Thought technically free, costs money to remove the phpmotion logos. Server install is not free. All in all, not too much different from clipshare, except that most seem to think clipshare is better.

Benefits
“free”
lots of features
large community
lots of templates
Cost

free unless you want to remove the phpmotion logo

need to have special software one your server, of course, due to video editing needs


  • Share/Bookmark



Reviews of Several Social Networking Systems

Almost everybody these days has a Facebook. Wouldn’t it be nice to be able to have your own Facebook or MySpace? Well, look no further! The scripts below can do just that! A client who is setting up a networking group can use a tool like this or can build upon a tool like this. I do not suggest starting from scratch, as that is just a TON of work and then you never benefit from the work of other programmers who have “added on” to these platforms.

Elgg

http://elgg.org/

The premier, free social networking platform. Though not as full-featured as dolphin, it has a huge community of users. Checkout the site for more information. Entirely PHP/MySQL.

Benefits
free
easy to use
huge community
opensource
Cost

doesn’t have as many features as dolphin

Dolphin

http://www.boonex.com/products/dolphin/

Without a doubt the most feature-rich and professional of any social networking tool out there. It is expensive, however, and requires its own VPS to run. Sort of the “facebook” of the group.

Benefits
Most features
Most professional
opensource
Cost

Most expensive
Smaller community due to cost

Ning

http://about.ning.com/product.php

A great tool. Really feels like a “myspace” clone. Check the site to learn more.

Benefits
Tons of pre-built templates
Cost

Costs money, but cheaper…
Not particularly opensource

PHPBB

http://www.phpbb.com/
An industry standard forum system. Not a full “social networking” system, though.

Benefits
Can make custom templates
excellent forum system
very configurable
opensource
Cost

has a “box” it fits in and that’s all it does

  • Share/Bookmark



Reviews of Several E-Commerce Systems

E-Commerce systems generally operate on a few basic principles: A person lists products for certains prices and certain shipping amounts. Users can browse and search the site and then add quantities of products to their “cart.” Upon clicking “checkout” in the cart, they are sent to a payment processor (such as Paypal or authorize.net) where credit card are processed. It then logs that a payment was received/sent and vuala, a business sells products! Below are a list of a a few notable cart systems that you might consider using.

OSCommerce
http://www.oscommerce.com/
Without a doubt the best most powerful PHP/MySQL carts out there. Pretty old but not bad. Best of all, it is totally free! It is, compared to X-Cart, much less configurable, but not bad at all for a startup company. Consult your programmers before you do any templating work.

Benefits
Free
Powerful
Easy to figure out

many templates
large community

Costs
Less Add-ons

X-Cart
http://www.x-cart.com/
X-Cart is, arguably, the “premier” paid PHP/MySQL cart system out there. It has many features and a great community. The biggest challenge is that it costs quite a bit up front to get access to. Its biggest benefit is that there are tech support plans available, to a certain extent. Check their site for more information.

Benefits
Powerful
Templatable
Easy to figure out
Many addons
Costs
Not Free

ZenCart
http://www.zen-cart.com/
An offshoot of OSCommerce, ZenCart has many of the features of OSCommerce, though a larger developer community.

Benefits
Free

Powerful

Easy to figure out
many templates
large community

Costs
More Add-ons


  • Share/Bookmark