Written: June 30, 2011
With the recent growth of smart phone users (Android and iPhone) there’s an immediate question: How do I use email from both my computer and smart phone at the same time?
IMAP (Internet Message Access Protocol)
When you add a new email account to your smart phone you get to decide the type of account, you will want to choose IMAP. Make sure that your other computer is also setup for IMAP, and if it’s instead setup as POP then you’ll have to delete that account and then create a new IMAP account.
IMAP will leave your email on the mail server, so that you can have two or more devices simultaneously using the same account. This is perfect for when you have both a smart phone plus another computer to access your email using popular email clients like Outlook (PC) or Entourage (Mac).
Details
Check with your web hosting company to find out how to setup IMAP because it involves setting up your Incoming Server and Outgoing Server with:
Most web hosting companies also specify that you use a Security Type of SSL and a specific Port Number for both incoming and outgoing messages. My web host is 1and1.com and they have posted online details.
Summary
Enjoy your new smart phone where you can now send and receive emails, just like from your laptop or desktop computers.
Tags: Android, email, IMAP, iPhone, Outlook, smartphone, SMTPWritten: June 26, 2011
My client hosts several conferences each year and the registration process for one site had some interesting requirements:
One idea was to collect the basic information on page one, then present another form on page two for additional attendees and their session choices. I opted instead to keep a single page to gather registration info to keep it simple. Here’s a video summary of what a web visitor would see when they register for the conference:
Developer Details
In the HEAD section of my page I added a Javascript file with the AJAX function:
1 | <script type="text/javascript" src="ajax-page.js"></script> |
This file ajax-page.js is provided by Dynamic Drive:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | // JavaScript Document /*********************************************** * Dynamic Ajax Content- © Dynamic Drive DHTML code library (www.dynamicdrive.com) * This notice MUST stay intact for legal use * Visit Dynamic Drive at http://www.dynamicdrive.com/ for full source code ***********************************************/ var bustcachevar=1 //bust potential caching of external pages after initial request? (1=yes, 0=no) var loadedobjects="" var rootdomain="http://"+window.location.hostname var bustcacheparameter="" function ajaxpage(url, containerid){ var page_request = false if (window.XMLHttpRequest) // if Mozilla, Safari etc page_request = new XMLHttpRequest() else if (window.ActiveXObject){ // if IE try { page_request = new ActiveXObject("Msxml2.XMLHTTP") } catch (e){ try{ page_request = new ActiveXObject("Microsoft.XMLHTTP") } catch (e){} } } else return false page_request.onreadystatechange=function(){ loadpage(page_request, containerid) }<br /><br /> if (bustcachevar) //if bust caching of external page<br /><br /> bustcacheparameter=(url.indexOf("?")!=-1)? "&"+new Date().getTime() : "?"+new Date().getTime()<br /><br /> page_request.open('GET', url+bustcacheparameter, true)<br /><br /> page_request.send(null)<br /><br /> }</p> <p>function loadpage(page_request, containerid){<br /><br /> if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1))<br /><br /> document.getElementById(containerid).innerHTML=page_request.responseText<br /><br /> }</p> <p>function loadobjs(){<br /><br /> if (!document.getElementById)<br /><br /> return<br /><br /> for (i=0; i<arguments.length; i++){<br /><br /> var file=arguments[i]<br /><br /> var fileref=""<br /><br /> if (loadedobjects.indexOf(file)==-1){ //Check to see if this object has not already been added to page before proceeding<br /><br /> if (file.indexOf(".js")!=-1){ //If object is a js file<br /><br /> fileref=document.createElement('script')<br /><br /> fileref.setAttribute("type","text/javascript");<br /><br /> fileref.setAttribute("src", file);<br /><br /> }<br /><br /> else if (file.indexOf(".css")!=-1){ //If object is a css file<br /><br /> fileref=document.createElement("link")<br /><br /> fileref.setAttribute("rel", "stylesheet");<br /><br /> fileref.setAttribute("type", "text/css");<br /><br /> fileref.setAttribute("href", file);<br /><br /> }<br /><br /> }<br /><br /> if (fileref!=""){<br /><br /> document.getElementsByTagName("head").item(0).appendChild(fileref)<br /><br /> loadedobjects+=file+" " //Remember this object as being already added to page<br /><br /> }<br /><br /> }<br /><br /> }<br /><br /> |
My registration form has radio buttons for the attendee to choose their type of registration and here is where I add some Javascript to take action when the button is clicked:
1 2 3 4 5 6 7 8 | <p><strong>Conference Pass</strong></p> <p><input type="radio" name="conference" value="Member" onclick="update_price(this.form);my_sessions(this.form);"/> $359 Member<br /><br /> <em> ($459 less $100 in supporting funds from the Pacific Printing Industries Educational Trust)</em></p> <p><input type="radio" name="conference" value="Non-Member" onclick="update_price(this.form);my_sessions(this.form);"/> $599 Non-Member</p> <p><input type="radio" name="conference" value="None" onclick="update_price(this.form);my_sessions(this.form);"/> None </p> <div id='my-sessions'> <!-- ajax: my_sessions.php --> </div> |
Line two is where clicking the radio button calls the Javascript function my_sessions(this.form). This function will find out which radio button was clicked and then dynamically call a PHP page using AJAX. The results of the AJAX call will be to fill up the DIV statement named ‘my-sessions’ with new content.
1 2 3 4 5 6 7 8 9 | function my_sessions(f) { // My conference session choices choice = 'None'; for (i=0; i<3; i++) { // Which radiobutton was checked? if (f.conference[i].checked) { choice = f.conference[i].value; } } ajaxpage('my_sessions.php?conference='+choice,'my-sessions'); // Member, Non-Member, None } |
my_sessions calls a PHP file named my_sessions.php and passes along one variable named ‘conference’ with the value of the checked radio button. The function ajaxpage is defined in the file ajax-page.js which was included above. The second value passed to ajaxpage is ‘my-sessions’ which is the DIV where the new content is sent to.
Tags: AJAX, conference, form, registrationWritten: June 26, 2011
For the past week I’ve been using the latest browsers from Microsoft (Internet Explorer 9) and Mozilla (Firefox 5). They both installed easily and rendered web pages without much new surprise. On one of my client sites all of the text disappeared in IE 9, so a quick Google search uncovered that using Cufon fonts with IE 9 required an upgraded Javscript file to be compliant.

My Recommendation
If you love Microsoft then go ahead and upgrade to IE 9. Microsoft is the safe choice with some 54% of all browsers in use today, per NETMARKETSHARE. Firefox works well and is gaining market share against IE.
As a web developer I only use IE as a final browser check for compatibility reasons, and don’t develop with it. My daily favorite browser is Google Chrome because it consumes less memory, renders fast, and has a productive Inspect Element capability I use for debugging CSS.
Tags: Browser, Firefox, Internet ExplorerWritten: June 25, 2011
Many business owners and associations want to update their own web site content. WordPress is the number one way to let you do that. View this short 2 minute video to learn more.
Tags: WordPress, YouTubeWritten: June 24, 2011
Since most of my web clients are now using WordPress it was only logical to migrate my own site from a custom PHP implementation to a custom WordPress site. Here are the steps that I followed:
1) Decided on a new look for my site by making a Home page mock-up in Photoshop
2) Created a static HTML index.html page for my new Home page
3) Created a custom WordPress theme by dividing my index.html page into PHP, CSS and Javascript files
4) Add my favorite plugins
5) Imported my blog from www.blogger.com
6) Tested and went live
If you’re curious about the details drop me an email or leave a comment. This migration took me about 10 hours to complete and now I can update my new site using only a web browser instead of using Dreamweaver.
Of course I still use Dreamweaver, Photoshop and WordPress every day now to deliver customized features, pages, WordPress themes and WordPress plugins.
Tags: Custom Theme, Dreamweaver, PHP, WordPressWritten: June 20, 2011
I’ve been using software from Parallels to let me run Windows 7 on my MacBook Pro for almost one year now. All has been well until I noticed that my C: drive was getting full.

My first response was to use Google and find out how to increase my C: drive disk space. The first page of search results suggested that I use an App called Image Tool, however I had no such App and started getting upset about not finding it. Finally in a forum the suggest was to Read The Fine Manual (RTFM).
Tough for a guy to do, so once I read the PDF manual I found the gem that I needed:

I’m now a happy camper with more disk space on C:.
Tags: MacBook Pro, Parallels, Windows 7
Usually I don’t comment on yuor blog much but I get a broken theme everytime I load this post (http://tualatinweb.com/blog/windows-7-on-a-mac/). I dunno why but as far as I can tell it’s just with this particular one. Just FYI. Regards, Renelle
That page is working OK for me, try it again now.