Welcome to David M Varner's Portfolio. This site showcases my abilities in an operating system style. Please click on the gear below to see my work. Windows are draggable by top bar. Click F11 to experience full screen as OS. Click F11 once complete.

I would like to say please understand this is only a very small portion of my work. Most is proprietary and can not be displayed here or is long in the past.

Thank you for visiting.
Biography
I have always been a person who liked figuring out how things worked. I can honestly say as a kid I spent hours studying pictures in the "How Things Work" book; it was my favorite. As I got older personal computers started to become popular and once one was in my house; it became my life. As I grew with computers and they made me go deeper into the rabit hole I came to a point where I wanted to make games. And that is when it started at the age of 12 some friends and I wanting to build a MMO (Massive Multi Player) game. We spend almost 2 years drawing out this game and designing it. It was then I realize it was my job to make it a reality and I was up for the challenge. And so my adventures into programming started. For the next 6 years I researched and tried to build our game; had a few launches but nothing successful enough to sustain how big we wanted to go. During that period I studied over 15 different languages finding that I enjoyed web development the most for its fast turn around. I also did work during these years for people in Australia, UK, Cananda, and United States learning the tricks of the trade and tring to get ahead of everyone else. I at this point I had enough experience I decided to try my hand at getting the newly released Zend PHP Certification. I passed it first time being within the first 500 people to pass it and 2nd in North Carolina. After that I went and got my first job and everything is history from there. I still to this day work on developing my MMO but the scale and features I want it to have are still not quite viable with the current technologies. I dream and strive to accomplish this goal but use my love of development and passion to help other businesses succeed with all the things I have learned.
Languages
HTML, xHTML, dHTML, CSS, CSS3, PHP4/5, MySQL4/5, Python, NodeJS, JSON, XML
Development Environments
LAMP = Linux, Apache, MySQL, PHP
WAMP = Windows, Apache, MySQL, PHP
WIMP = Windows, IIS, MySQL PHP
Software
Apache 1.3/2.0/2.2/2.4 (Mod_Rewrite and more)
Linux (CentOS, Debian, RedHat, Ubuntu)
Windows Server 2003, 2007, 2010, 2013
SVN
PhoneGap - HTML to Mobile Apps across multiple platforms
Frameworks
codeIgniter, ZendFramework
CMS
WordPress, Drupal, Custom
Other
SOAP/REST API, Agile Development
KawaiiPetsu.com was is a virtual pet website my wife and I just recently relaunched. It allows users to follow quests and buy, feed, and play with pets. There is a community aspect with a custom coded forum which allows users to communicate with others and setup shops. Eventually we will be adding a battle system, breeding, and an actual shop system. My wife did all the graphics for KawaiiPetsu and I did all the HTML, CSS, jQuery, PHP, and MySQL.
KawaiiPetsu
WURLRadio is a Southern Gospel Radio Station. I did all the programming from HTML to custom backend CMS. My wife did the graphics.
WURLRadio
This is a class I wrote which has some random functions for doing time, mailing, and other things
class syUtility {
	public function mailer($to,$subject,$msg,$from,$reply_to=false,$html=false){
		$headers = 'From: ' . $from . "\r\n";
		if($reply_to !== false) $headers .= 'Reply-To: ' . $reply_to . "\r\n";
		if($html === false){
			$headers .= 'X-Mailer: PHP/' . phpversion();
		}else{
			$headers .= "MIME-Version: 1.0\r\n";
			$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
		}
		mail($to,$subject,$msg,$headers);
	}
	public function rand($min,$max){
		$rnd = rand(1,9);
		$min_len = strlen($min);
		$max_len = strlen($max);
		$diff = $max_len - $min_len;
		for($z=1;$z<$min_len;$z++) $rnd .= rand(0,9);
		for($y=0;$y<$diff;$y++) if(rand(0,1) > 0) $rnd .= rand(0,9);
		return $rnd;//.' : '.strlen($rnd);
	}
	public function tm2date($date){
		return date('m/d/Y', $date);
	}
	public function tm2time($date){
		return date('g:i a', $date);
	}
	public function tm2datetime($date){
		return date('m/d/Y g:i a', $date);
	}
	public function rnd_pass($length=9) {
		$str = 'abcdefghjkmnpqrstuvwxyzABCDEFGHJLMNPQRSTVWXZ23456789!@#$';
		$arr = str_split($str);
		$len = count($arr);
		
		$password = '';
		for ($i = 0; $i < $length; $i++) {
			$rnd = rand(0,$len-1);
			$password.= $arr[$rnd];
		}
		return $password;
	}
	public function byteconvert($val, $end='B'){
		if($val >= pow(2,50) && $val < pow(2,60) )
		{
			$val = round($val/pow(2,50),2);
			return $val.'P'.$end;
		}
		elseif($val >= pow(2,40) && $val < pow(2,50) )
		{
			$val = round($val/pow(2,40),2);
			return $val.'T'.$end;
		}
		elseif($val >= pow(2,30) && $val < pow(2,40) )
		{
			$val = round($val/pow(2,30),2);
			return $val.'G'.$end;
		}
		elseif($val >= pow(2,20) && $val < pow(2,30) )
		{
			$val = round($val/pow(2,20),2);
			return $val.'M'.$end;
		}
		elseif($val >= pow(2,10) && $val < pow(2,20) ){
			$val = round($val/pow(2,10),2);
			return $val.'K'.$end;
		}else{
			return $val.$end;
		}
	}
	public function print_r($arr){
		ob_start();
		echo '<pre>';
		print_r($arr);
		echo '</pre>';
		$data = ob_get_contents();
		ob_end_clean();
		return $data;
	}
	public function state_arr(){
		$state_list = array(
			'AL'=>"Alabama", 'AK'=>"Alaska", 'AZ'=>"Arizona", 'AR'=>"Arkansas",  
			'CA'=>"California", 'CO'=>"Colorado", 'CT'=>"Connecticut",  
			'DE'=>"Delaware", 'DC'=>"District Of Columbia",  
			'FL'=>"Florida", 'GA'=>"Georgia", 'HI'=>"Hawaii",  
			'ID'=>"Idaho", 'IL'=>"Illinois", 'IN'=>"Indiana", 'IA'=>"Iowa",  
			'KS'=>"Kansas", 'KY'=>"Kentucky", 'LA'=>"Louisiana",  
			'ME'=>"Maine", 'MD'=>"Maryland", 'MA'=>"Massachusetts", 'MI'=>"Michigan", 'MN'=>"Minnesota",
			'MS'=>"Mississippi", 'MO'=>"Missouri", 'MT'=>"Montana",
			'NE'=>"Nebraska", 'NV'=>"Nevada", 'NH'=>"New Hampshire", 'NJ'=>"New Jersey", 'NM'=>"New Mexico",
			'NY'=>"New York", 'NC'=>"North Carolina", 'ND'=>"North Dakota",
			'OH'=>"Ohio", 'OK'=>"Oklahoma", 'OR'=>"Oregon",  
			'PA'=>"Pennsylvania", 'RI'=>"Rhode Island", 'SC'=>"South Carolina", 'SD'=>"South Dakota",
			'TN'=>"Tennessee", 'TX'=>"Texas", 'UT'=>"Utah", 'VT'=>"Vermont", 'VA'=>"Virginia",  
			'WA'=>"Washington", 'WV'=>"West Virginia", 'WI'=>"Wisconsin", 'WY'=>"Wyoming"
		);
		return $state_list;
	}
	public function display_error($err=false){
		$str = '';
		if(isset($err) && count($err) > 0){
			//$tpl_arr['err'] = Core::display_err($err);
			if(isset($err['bad']) && is_array($err['bad']) && count($err['bad']) > 0){
				foreach($err['bad'] AS $v){
					$str.= '<li class="err_bad">'.$v.'</li>';
					unset($v);
				}
			}
			if(isset($err['good']) && is_array($err['good']) && count($err['good']) > 0){
				foreach($err['good'] AS $v){
					$str.= '<li class="err_good">'.$v.'</li>';
					unset($v);
				}
			}
		}
		return $str;
	}
	public static function get_file_name($cnt=1)
	{
		$file = $_SERVER['PHP_SELF'];
		$file_arr = explode('/',$file);
		$file_cnt = count($file_arr);
		return $file_arr[$file_cnt-$cnt];
	}
	public static function duration_last($num){
		$html = '';
		if($num >= 24*60*60){
			$d = floor($num/(24*60*60));
			$num-= $d*24*60*60;
			$html.= $d;//str_pad($d,2,'0',STR_PAD_LEFT);
		}else{ $html.= '0'; }
		$html.= 'd ';
		if($num >= 60*60){
			$h = floor($num/(60*60));
			$num-= $h*60*60;
			$html.= $h;//str_pad($h,2,'0',STR_PAD_LEFT);
		}else{ $html.= '0'; }
		$html.= 'h ';
		if($num >= 60){
			$m = floor($num/(60));
			$num-= $m*60;
			$html.= $m;//str_pad($m,2,'0',STR_PAD_LEFT);
		}else{ $html.= '0'; }
		$html.= 'm ';
		if($num < 60){
			$s = $num;
			$html.= $s;//str_pad($s,2,'0',STR_PAD_LEFT);
		}else{ $html.= '0'; }
		$html.= 's';
		return $html;
	}
	public function money($m){
		return '$'.number_format($m,2,'.',',');
	}
}
Check out the source to my Portfolio here to how I made this function similar to an OS.
LinkedIn Profile