<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>Fotiweb</title>
	<atom:link href="http://www.fotiweb.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.fotiweb.com</link>
	<description>All things Foti!</description>
	<pubDate>Fri, 12 Mar 2010 14:28:55 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.3</generator>
	<language>en</language>
			<item>
		<title>Google Voice Turns 1 But Still Needs Fixing</title>
		<link>http://www.fotiweb.com/2010/03/12/google-voice-turns-1-but-still-needs-fixing/</link>
		<comments>http://www.fotiweb.com/2010/03/12/google-voice-turns-1-but-still-needs-fixing/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 14:26:46 +0000</pubDate>
		<dc:creator>Peter Foti</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[Google Voice]]></category>

		<guid isPermaLink="false">http://www.fotiweb.com/?p=91</guid>
		<description><![CDATA[http://googlevoiceblog.blogspot.com/2010/03/google-voice-turns-1.html
We wanted to thank you for letting us know what you think, and we hope you like the improvements we&#8217;ve made since then.
Many users have voiced their complaint about certain missing call screening features.  In particular, I&#8217;m referring to the following:

Once a call screening name has been recorded, there is no way to delete [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://googlevoiceblog.blogspot.com/2010/03/google-voice-turns-1.html">http://googlevoiceblog.blogspot.com/2010/03/google-voice-turns-1.html</a></p>
<blockquote><p>We wanted to thank you for letting us know what you think, and we hope you like the improvements we&#8217;ve made since then.</p></blockquote>
<p>Many users have voiced their complaint about certain missing call screening features.  In particular, I&#8217;m referring to the following:</p>
<ol>
<li>Once a call screening name has been recorded, there is no way to delete it or force it to be re-recorded.  So if you friend calls you and hears the prompt to record his name and he says &#8220;What the F***?&#8221; as his name, that is what you will hear every time that person calls you.  This is especially not good if you have little ones that might answer the phone.</li>
<li>The proposed solution to that problem is not a solution at all.  Add that person to your contacts and their name will be &#8220;read&#8221; instead.  This is much more of a hack than a fix, and from what I&#8217;ve read it doesn&#8217;t even always work.</li>
<li>Suppose the person is calling via a business that has a phone system that gives every outbound call the same caller id?  For example, say my boss calls me from work and records his name.  Now any time anyone calls me from that company, I will hear my bosses name even though it could be any number of people calling me.</li>
</ol>
<p>It seems like a terrible oversight that users can not manage the recordings.   Also, it should be configurable to force a recording every time for certain numbers (which would solve the 3rd problem listed above).</p>
<p>In my opinion, Google Voice still has a long way to go, and it&#8217;s disappointing that it has been live for a year with not even a word of fixing these issues.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fotiweb.com/2010/03/12/google-voice-turns-1-but-still-needs-fixing/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Tasha Bit Me, and That Really Hurts</title>
		<link>http://www.fotiweb.com/2010/03/03/tasha-bit-me-and-that-really-hurts/</link>
		<comments>http://www.fotiweb.com/2010/03/03/tasha-bit-me-and-that-really-hurts/#comments</comments>
		<pubDate>Wed, 03 Mar 2010 15:24:52 +0000</pubDate>
		<dc:creator>Peter Foti</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.fotiweb.com/?p=88</guid>
		<description><![CDATA[As I learned last night, it is never a good idea to try hand feeding a pill to a dog when that dog is still chewing on food.
As I stuck my left hand in her mouth (to hold it open while I popped the pill in with my right hand), I had my thumb too [...]]]></description>
			<content:encoded><![CDATA[<p>As I learned last night, it is never a good idea to try hand feeding a pill to a dog when that dog is still chewing on food.</p>
<p>As I stuck my left hand in her mouth (to hold it open while I popped the pill in with my right hand), I had my thumb too far back near the molars.  As she continued chewing her food, she punctured right through the middle of my thumb&#8217;s fingernail with one of her pointy premolars.  Blood instantly started flowing out of the hole, and the pain was intense.  I washed it with antibacterial soap, and ran it under cold water for several minutes.  Eventually the blood stopped flowing and I could see the small, purplish splotch in the center of my nail surrounding the crack.  I put some antibiotic ointment on the wound and wrapped a bandaid around it.</p>
<p>A small amount of blood continues to make its way out of the hole in my nail today.  I&#8217;m not sure yet whether that nail is going to fall off or not.  A dull, throbbing pain continues, but it&#8217;s bearable.  My impatience cost me, but I&#8217;ve learned my lesson.  It was my fault, but I won&#8217;t make that mistake again.</p>
<p><a href="http://www.youtube.com/watch?v=HE4FJL2IDEs">http://www.youtube.com/watch?v=HE4FJL2IDEs</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.fotiweb.com/2010/03/03/tasha-bit-me-and-that-really-hurts/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Internet Explorer 6: You Had a Good Run&#8230; Now Please Die</title>
		<link>http://www.fotiweb.com/2010/02/16/internet-explorer-6-you-had-a-good-run-now-please-die/</link>
		<comments>http://www.fotiweb.com/2010/02/16/internet-explorer-6-you-had-a-good-run-now-please-die/#comments</comments>
		<pubDate>Tue, 16 Feb 2010 21:49:42 +0000</pubDate>
		<dc:creator>Peter Foti</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.fotiweb.com/?p=86</guid>
		<description><![CDATA[A recent look at some analytics showed that 66.82% of visitors to the NH Academie of Dance website were using Internet Explorer (IE).  Of those users, 26.04% were using IE 6, which was 17.4% of the total visits.  You people still using IE 6 (and you know who you are), it&#8217;s time to [...]]]></description>
			<content:encoded><![CDATA[<p>A recent look at some analytics showed that 66.82% of visitors to the <a href="http://www.nhadance.com">NH Academie of Dance website</a> were using Internet Explorer (IE).  Of those users, 26.04% were using IE 6, which was 17.4% of the total visits.  You people still using IE 6 (and you know who you are), it&#8217;s time to upgrade!  Several Web Applications are dropping support for IE 6, and I&#8217;d like nothing better than drop support for it as well.  So please&#8230; I&#8217;m begging you&#8230; help us put IE 6 to rest, and upgrade to a better browsing experience.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fotiweb.com/2010/02/16/internet-explorer-6-you-had-a-good-run-now-please-die/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Comparing JavaScript Frameworks</title>
		<link>http://www.fotiweb.com/2009/12/17/comparing-javascript-frameworks/</link>
		<comments>http://www.fotiweb.com/2009/12/17/comparing-javascript-frameworks/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 21:05:16 +0000</pubDate>
		<dc:creator>Peter Foti</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[Web Development]]></category>

		<category><![CDATA[javascript]]></category>

		<category><![CDATA[libraries]]></category>

		<category><![CDATA[speed]]></category>

		<guid isPermaLink="false">http://www.fotiweb.com/?p=83</guid>
		<description><![CDATA[While reading the YUI 3 forum, I came upon some links which perform some tests using multiple libraries.  I found them very useful and will probably use them as a reference from time to time:
http://yuilibrary.com/~msweeney/yui-tests/taskspeed/
http://yuilibrary.com/~msweeney/yui-tests/slickspeed/
]]></description>
			<content:encoded><![CDATA[<p>While reading the <a href="http://yuilibrary.com/forum/viewtopic.php?f=18&#038;t=1482">YUI 3 forum</a>, I came upon some links which perform some tests using multiple libraries.  I found them very useful and will probably use them as a reference from time to time:<br />
<a href="http://yuilibrary.com/~msweeney/yui-tests/taskspeed/">http://yuilibrary.com/~msweeney/yui-tests/taskspeed/</a><br />
<a href="http://yuilibrary.com/~msweeney/yui-tests/slickspeed/">http://yuilibrary.com/~msweeney/yui-tests/slickspeed/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.fotiweb.com/2009/12/17/comparing-javascript-frameworks/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Cross Browser XMLHttpRequest</title>
		<link>http://www.fotiweb.com/2009/11/19/cross-browser-xmlhttprequest/</link>
		<comments>http://www.fotiweb.com/2009/11/19/cross-browser-xmlhttprequest/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 15:12:53 +0000</pubDate>
		<dc:creator>Peter Foti</dc:creator>
		
		<category><![CDATA[AJAX]]></category>

		<category><![CDATA[General]]></category>

		<category><![CDATA[Web Development]]></category>

		<category><![CDATA[IE6]]></category>

		<category><![CDATA[MSXML]]></category>

		<category><![CDATA[XMLHTTP]]></category>

		<category><![CDATA[XMLHttpRequest]]></category>

		<guid isPermaLink="false">http://www.fotiweb.com/?p=80</guid>
		<description><![CDATA[I recently did a lot of investigating around the best way to create an XMLHttpRequest, as various resources on the web use slightly different methods.  Newer browsers (Chrome, Firefox, IE7+, Opera, and Safari) all have a native XMLHttpRequest object, so the exception is really IE versions less than 7.
Internet Explorer 5, 5.5, and 6 [...]]]></description>
			<content:encoded><![CDATA[<p>I recently did a lot of investigating around the best way to create an <em>XMLHttpRequest</em>, as various resources on the web use slightly different methods.  Newer browsers (Chrome, Firefox, IE7+, Opera, and Safari) all have a native XMLHttpRequest object, so the exception is really IE versions less than 7.</p>
<p>Internet Explorer 5, 5.5, and 6 all support XMLHttpRequest by means of an ActiveXObject.  But there are various versions of MSXML, and it was not clear to me which versions should be used, and in which order they should be declared.  Microsoft <a href="http://blogs.msdn.com/xmlteam/archive/2006/10/23/using-the-right-version-of-msxml-in-internet-explorer.aspx">recommended</a> some versions, but their recommendation was 3 years old and I wasn&#8217;t sure if it was still applicable (or applicable at all when using MSXML for creating XMLHTTP objects).  It turns out that it was.</p>
<p>Initially I wanted to support the widest range of browsers, including IE5 and IE5.5.  However, those versions of IE are no longer supported by Microsoft, so why should I try and support them?  I have no way to test in those versions.  More research suggested that IE5 and IE5.5 account for only about .02% of browser market share (2 people out of 10,000) from <a href="http://gs.statcounter.com/#browser_version-ww-monthly-200908-200910-bar">August 2009 - October 2009</a>.  It doesn&#8217;t make sense to try and support IE5.x, which means there is no need to support the legacy Microsoft.XMLHTTP ActiveXObject.</p>
<p>That just leaves IE6.  IE6 still has considerable market share, so I do want to support it.  IE6 shipped with MSXML 3.0, which is the &#8220;fallback&#8221; version to use recommended by Microsoft.  Previous versions of MSXML are <a href="http://en.wikipedia.org/wiki/MSXML">no longer supported</a> by Microsoft, so MSXML 3.0 will be my fallback version.  The recommended version is MSXML 6.0 (note, it is NOT recommended to use MSXML 5.0 or MSXML 4.0).</p>
<p>So now I&#8217;m going to be working with a set of 3 possible objects:</p>
<ol>
<li>a native XMLHttpRequest object</li>
<li>an MSXML 6.0 XMLHTTP ActiveXObject (IE6 only)</li>
<li>an MSXML 3.0 XMLHTTP ActiveXObject (IE6 only, when MSXML 6.0 not available)</li>
</ol>
<p>To see how I decided to format that code, visit:<br />
<a href="http://www.webmasterworld.com/javascript/4027629.htm">http://www.webmasterworld.com/javascript/4027629.htm</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.fotiweb.com/2009/11/19/cross-browser-xmlhttprequest/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Dependent Lists and Progressive Enhancement</title>
		<link>http://www.fotiweb.com/2009/07/02/dependent-lists-and-progressive-enhancement/</link>
		<comments>http://www.fotiweb.com/2009/07/02/dependent-lists-and-progressive-enhancement/#comments</comments>
		<pubDate>Thu, 02 Jul 2009 11:54:05 +0000</pubDate>
		<dc:creator>Peter Foti</dc:creator>
		
		<category><![CDATA[Web Development]]></category>

		<category><![CDATA[progressive enhancement]]></category>

		<guid isPermaLink="false">http://www.fotiweb.com/?p=54</guid>
		<description><![CDATA[I recently stumbled across a newsgroup post where someone needed dependent list boxes that let users select a car make from one list box and a second list box would be populated with car models.  He wanted to use AJAX to get the list of models from the server, but also wanted a solution [...]]]></description>
			<content:encoded><![CDATA[<p>I recently stumbled across a newsgroup post where someone needed dependent list boxes that let users select a car make from one list box and a second list box would be populated with car models.  He wanted to use AJAX to get the list of models from the server, but also wanted a solution that would work for users that didn&#8217;t have JavaScript (particularly, mobile device users).  My suggestion was to use <strong>progressive enhancement</strong>.  The end result can be viewed at <a href="http://www.fotiweb.com/samples/dependent-list-box/">http://www.fotiweb.com/samples/dependent-list-box/</a>, though some of this solution is PHP based (see below for that code).</p>
<p>My suggestion was to create a <em>web service</em> that would take a car make and return a list of models.  He could interact with this service via an AJAX call, parse the results, and populate the list box with the results.  Alternatively, his server side processing could determine if a make had been selected, and if so call the service to get the list and populate the list box that way.</p>
<p>I started by creating a basic HTML form:</p>
<pre name="code" class="php">
&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
 "http://www.w3.org/TR/html4/strict.dtd"&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" &gt;
&lt;style type="text/css"&gt;
select {
    width: 15em;
}
&lt;title&gt;Untitled&lt;/title&gt;
&lt;body&gt;
<div>
<form action="" method="GET" id='getMakeModel'>
<div>
<select id="make" name="make" size="10">
    &lt;?php
    echo $makeOptionList;
    ?&gt;
    </select>

    <!--
        If JavaScript is enabled, this submit button will be removed
        and replaced with AJAX methods to get the models.
    -->
<input type="submit" id="getmodels" name="getmodels" value="Get Models" />
<select id="models" size="10">
    &lt;?php
    echo $modelsOptionList;
    ?&gt;
    </select>
</div>
</form>
</div>

&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>I used placeholders where the list options will be.</p>
<p>Next, I created the web service at .  Here&#8217;s what that service looks like:</p>
<pre name="code" class="php">
&lt;?php
// This example returns just a simple comma separated list.
// A real world example would probably look up values from a
// database and might return a JSON or XML string with the
// results. This is just a proof of concept.
if (!isset($_GET['make'])) {
    // Exit nicely
    exit(0);
}
$make = $_GET['make'];
switch ($make) {
    case 'Ford':
        echo 'Focus,Explorer';
        break;
    case 'Nissan':
        echo 'Sentra';
        break;
    case 'Toyota':
        echo 'Prius,Tundra';
        break;
    default:
        echo '';
        break;
}
exit(0);
?&gt;
</pre>
<p>Next I needed to create the PHP behind my form page.  This PHP populates the vehicle makes and if the user has selected a make and clicked the &#8220;Get Models&#8221; button, will also populate the models by making a <strong>curl</strong> request to the web service.</p>
<pre name="code" class="php">
&lt;?php
// The 'makes' list might be populated from a database
$makes = array('Ford', 'Nissan', 'Toyota');
// 'models'
$models = array();
// 'selectedMake' The make selected by the user (if any)
$selectedMake = '';

// Check whether the make has been submitted
if (array_key_exists('getmodels', $_GET)) {
    if ( isset($_GET['make']) ) {
        $selectedMake = $_GET['make'];
        // Request model values for the selected
        $ch = curl_init("http://www.fotiweb.com/samples/dependent-list-box/getModels/?make=$selectedMake");
        // Return the transfer as a string
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        // $output contains the output string
        $models = curl_exec($ch);
        // Close the curl resource
        curl_close($ch);
        // Convert results to array
        $models = explode(',', $models);
    }
}

// Format variables for HTML output
$makeOptionList = '';
$modelsOptionList = '';

// Generate the options list of makes
foreach ($makes as $make) {
    $makeOptionList .= "&lt;option value='$make'";
    if ($selectedMake == $make) {
        $makeOptionList .= " selected='selected'";
    }
    $makeOptionList .= "&gt;$make&lt;/option&gt;";
}

// Generate the options list of models
if (count($models) &gt; 0) {
    foreach ($models as $model) {
        $modelsOptionList .= "&lt;option value='$model'&gt;$model&lt;/option&gt;";
    }
}
else {
    $modelsOptionList = '&lt;option value=""&gt;Select a Make&lt;/option&gt;';
}
?&gt;
</pre>
<p>So now the page is functioning for all users that don&#8217;t have JavaScript.  When the page loads, the makes will be populated. If the user clicks on the &#8220;Get Models&#8221; button, the selected make will be submitted back to the PHP above, which in turn will populate the models and show the form again, but this time with the populated results.</p>
<p>All that&#8217;s left is to use Progressive Enhancement to provide an AJAX alternative to the post back to the server. An AJAX solution will be more responsive, as the entire page doesn&#8217;t need to be reloaded.  Here&#8217;s the JavaScript code.  Note, I&#8217;m using the Yahoo UI Library for it&#8217;s DOM manipulation, Event handling utility, Element manipulation, and Connection Manager for it&#8217;s simplified AJAX interface.</p>
<pre name="code" class="php">
<script type="text/javascript" src="http://yui.yahooapis.com/combo?2.7.0/build/yahoo-dom-event/yahoo-dom-event.js&#038;2.7.0/build/connection/connection-min.js&#038;2.7.0/build/element/element-min.js"></script>
</pre>
<p>And then my own script:</p>
<pre name="code" class="javascript">
var make = new YAHOO.util.Element('make'),
    submitbtn = new YAHOO.util.Element('getmodels'),
    models = new YAHOO.util.Element('models');

// Remove the submit button
submitbtn.setStyle('display','none');

// Attach event listeners to 'make' that will call getModels
// service, parse the results, and populate 'models' options
make.on('click', function (e) {
    YAHOO.util.Connect.setForm('getMakeModel');
    var transaction = YAHOO.util.Connect.asyncRequest('GET',
            'http://www.fotiweb.com/samples/dependent-list-box/getModels/', {
                success: function(o) {
                    var i, op, old,
                        modelList = o.responseText;
                    // Remove the existing option elements
                    old = models.getElementsByTagName('option');
                    while (old.length &gt; 0) {
                        old[old.length - 1].parentNode.removeChild(old[old.length - 1]);
                    }
                    // Convert results to array
                    modelList = modelList.split(",");
                    // Generate the options list of models
                    for (i = 0; i &lt; modelList.length; i++) {
                        op = document.createElement('option');
                        op.text = modelList[i];
                        op.value = modelList[i];
                        models.appendChild(op);
                    }
                }
    }, null);
});
</pre>
<p>This will hide the submit button and perform the request to the getModels service when the user selects a make.  This is just one way you could use Progressive Enhancement to enhance your dependent lists.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fotiweb.com/2009/07/02/dependent-lists-and-progressive-enhancement/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Another Baby First</title>
		<link>http://www.fotiweb.com/2009/03/10/another-baby-first/</link>
		<comments>http://www.fotiweb.com/2009/03/10/another-baby-first/#comments</comments>
		<pubDate>Wed, 11 Mar 2009 04:40:19 +0000</pubDate>
		<dc:creator>Peter Foti</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.fotiweb.com/?p=52</guid>
		<description><![CDATA[Today my son Alex waved &#8220;bye bye&#8221; to someone for the first time.  I was surprised at how exciting I found it.  He&#8217;s growing up so quick.
]]></description>
			<content:encoded><![CDATA[<p>Today my son Alex waved &#8220;bye bye&#8221; to someone for the first time.  I was surprised at how exciting I found it.  He&#8217;s growing up so quick.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fotiweb.com/2009/03/10/another-baby-first/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Google Chrome</title>
		<link>http://www.fotiweb.com/2009/01/28/google-chrome/</link>
		<comments>http://www.fotiweb.com/2009/01/28/google-chrome/#comments</comments>
		<pubDate>Wed, 28 Jan 2009 16:02:14 +0000</pubDate>
		<dc:creator>Peter Foti</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[GMail]]></category>

		<category><![CDATA[Google]]></category>

		<category><![CDATA[Google Calendar]]></category>

		<category><![CDATA[Google Chrome]]></category>

		<category><![CDATA[Google Documents]]></category>

		<guid isPermaLink="false">http://www.fotiweb.com/?p=47</guid>
		<description><![CDATA[When I started heavily using Google apps like GMail, Calendar, and Documents, I decided to try out Google&#8217;s Chrome browser.  It still has some bugs, but overall I have been very impressed with it.
]]></description>
			<content:encoded><![CDATA[<p>When I started heavily using Google apps like <em><a href="http://gmail.google.com">GMail</a></em>, <em><a href="http://www.google.com/calendar">Calendar</a></em>, and <em><a href="http://docs.google.com">Documents</a></em>, I decided to try out Google&#8217;s <em><a href="http://www.google.com/chrome">Chrome</a></em> browser.  It still has some bugs, but overall I have been very impressed with it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fotiweb.com/2009/01/28/google-chrome/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Looking for Work as a Software Engineer</title>
		<link>http://www.fotiweb.com/2008/12/27/looking-for-work-as-a-software-engineer/</link>
		<comments>http://www.fotiweb.com/2008/12/27/looking-for-work-as-a-software-engineer/#comments</comments>
		<pubDate>Sun, 28 Dec 2008 00:37:03 +0000</pubDate>
		<dc:creator>Peter Foti</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[software engineer]]></category>

		<category><![CDATA[web developer]]></category>

		<guid isPermaLink="false">http://www.fotiweb.com/?p=45</guid>
		<description><![CDATA[There&#8217;s never a good time to be laid off, but I can&#8217;t think of a worst time than right before the holidays.  With the current economic downturn, its even harder to find work.  Now that the holidays are over and the new year is right around the corner, I&#8217;m hoping that new positions [...]]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s never a good time to be laid off, but I can&#8217;t think of a worst time than right before the holidays.  With the current economic downturn, its even harder to find work.  Now that the holidays are over and the new year is right around the corner, I&#8217;m hoping that new positions will open up.</p>
<p>Here is a little bit about me:</p>
<p><strong>Summary of Qualifications</strong><br />
Software Engineer and strong team player with 10+ years of experience, a keen eye for usability, and a proven ability to design and develop code that is clean and easy to maintain. </p>
<p><strong>Technical Skills</strong><br />
Java, JSP, JSTL, Servlets, JavaScript, AJAX, JSON, CSS, HTML/XHTML, Yahoo UI Library (YUI), , C#.NET, PHP, ASP, XML, Spring MVC, Hibernate, Java Persistence API, MySQL, PostgresSQL, C/C++, OOD, Semantic Markup, Progressive Enhancement, Unobtrusive JavaScript, Microformats</p>
<p>If you you know of any companies in the North East that are hiring Software Engineers (or possibly Web Developers), please let me know.</p>
<p>The job hunt continues&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fotiweb.com/2008/12/27/looking-for-work-as-a-software-engineer/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Goodbye Comcast, Hello Google</title>
		<link>http://www.fotiweb.com/2008/11/10/goodbye-comcast-hello-google/</link>
		<comments>http://www.fotiweb.com/2008/11/10/goodbye-comcast-hello-google/#comments</comments>
		<pubDate>Mon, 10 Nov 2008 17:11:12 +0000</pubDate>
		<dc:creator>Peter Foti</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.fotiweb.com/2008/11/10/goodbye-comcast-hello-google/</guid>
		<description><![CDATA[Recently, Comcast decided to &#8220;upgrade&#8221; it&#8217;s Webmail to something called SmartZone Communications.  This program sucks.  Seriously, it&#8217;s really bad.  It&#8217;s slow, has some serious usability issues, and it lacks features that were included in the previous webmail system.  For example, I have several Comcast email accounts that could all be accessed [...]]]></description>
			<content:encoded><![CDATA[<p>Recently, Comcast decided to &#8220;upgrade&#8221; it&#8217;s Webmail to something called <em>SmartZone Communications</em>.  This program sucks.  Seriously, it&#8217;s really bad.  It&#8217;s slow, has some serious usability issues, and it lacks features that were included in the previous webmail system.  For example, I have several Comcast email accounts that could all be accessed in the old webmail system, but in SmartZone Communications I have to add them as external POP accounts and even then I can&#8217;t reply to messages from the account they were sent to, I can only send mail as the account I am logged in to as the Primary account.  Comcast was unwilling to offer any form of resolution or compensation for the inconvenience this caused, nor does there seem to be any timeline for when this feature might be added to SmartZone.</p>
<p>Enter Google&#8217;s GMail.</p>
<p>I&#8217;ve had a GMail account for years that I haven&#8217;t used.  It was just one more account that I&#8217;d have to maintain, so I never used it for anything.  However, when complaining to a friend about Comcast he suggested that GMail had the ability to add POP accounts.  Sure enough, I was able to add all of my Comcast accounts, and I can send mail as those accounts.  Not only the that, the UI is fantastic!  It&#8217;s very simplistic, nothing flashy, but very easy to use.  I love the conversation views of emails, and the auto complete of addresses in the address book is great.  My only complaints would be that you can&#8217;t specify how often it checks those external POP accounts (though you can force it to &#8220;Check mail now&#8221; through the Settings), so it&#8217;s not as real-time as I&#8217;d like, but it works well enough for my needs.  My only other complaint is that I&#8217;d like the &#8220;Compose Mail&#8221; link to be more prominent.</p>
<p>In addition, I&#8217;ve also started using other Google online services regularly now.  Google Calendar is now keeping track of my schedule (and I like the ability to add other calendars to my calendar, like US Holidays).  And Google Docs is a great place to keep those documents I&#8217;d like to access from anywhere, and/or give access to other people.  My Christmas list is currently stored in a Google Doc.  And last, but not least, I&#8217;ve been using Google&#8217;s new Chrome web browser.  I have my Gmail account open in one tab, my Google Docs in another, and my Google Calendar in another.  I love it.  I still use Firefox for most of my web browsing, but I have been using Chrome more and more.</p>
<p>Kudo&#8217;s to you Google.</p>
<p>So goodbye to Comcast&#8217;s crappy SmartZone Communications.  I really wish Verizon FiOS was available in my area so I could drop Comcast altogether, but unfortunately, Verizon has sold much of it&#8217;s New England customer base to Fairpoint Communications, which doesn&#8217;t offer FiOS in my area (and even if it did, I&#8217;m not sure I&#8217;d switch to them).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fotiweb.com/2008/11/10/goodbye-comcast-hello-google/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
