<?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"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>b.wilhelm</title>
	<atom:link href="http://www.bwilhelm.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bwilhelm.com</link>
	<description>E-commerce, Internet Marketing, Design and Everything Else</description>
	<lastBuildDate>Fri, 18 Jan 2013 14:32:16 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.8.19</generator>
	<item>
		<title>Q&#038;A: What&#8217;s the best way to throttle sends using Interact Program?</title>
		<link>http://www.bwilhelm.com/2013/01/17/whats-the-best-way-to-throttle-sends-using-interact-program/</link>
		<comments>http://www.bwilhelm.com/2013/01/17/whats-the-best-way-to-throttle-sends-using-interact-program/#comments</comments>
		<pubDate>Thu, 17 Jan 2013 19:03:23 +0000</pubDate>
		<dc:creator><![CDATA[Brian Wilhelm]]></dc:creator>
				<category><![CDATA[E-mail]]></category>
		<category><![CDATA[Internet Marketing]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[Responsys]]></category>

		<guid isPermaLink="false">http://www.bwilhelm.com/?p=276</guid>
		<description><![CDATA[You could use program to split up your group and then insert delays to send to the rest of your list days later, or exclude them all together. In the example below, I send immediately to 20%, take another 40% and wait 3 days before sending, and take another 40% and exclude them all together.]]></description>
				<content:encoded><![CDATA[<p>You could use program to split up your group and then insert delays to send to the rest of your list days later, or exclude them all together. In the example below, I send immediately to 20%, take another 40% and wait 3 days before sending, and take another 40% and exclude them all together. </p>
<p><a href="http://www.bwilhelm.com/wordpress/wp-content/uploads/2013/01/Screen-Shot-2013-01-17-at-1.43.38-PM.png"><img src="http://www.bwilhelm.com/wordpress/wp-content/uploads/2013/01/Screen-Shot-2013-01-17-at-1.43.38-PM.png" alt="Responsys Program" width="546" height="458" class="aligncenter size-full wp-image-277" srcset="http://www.bwilhelm.com/wordpress/wp-content/uploads/2013/01/Screen-Shot-2013-01-17-at-1.43.38-PM.png 546w, http://www.bwilhelm.com/wordpress/wp-content/uploads/2013/01/Screen-Shot-2013-01-17-at-1.43.38-PM-300x251.png 300w" sizes="(max-width: 546px) 100vw, 546px" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.bwilhelm.com/2013/01/17/whats-the-best-way-to-throttle-sends-using-interact-program/feed/</wfw:commentRss>
		<slash:comments>25</slash:comments>
		</item>
		<item>
		<title>Q&#038;A: Can you do a nested SQL query in Responsys?</title>
		<link>http://www.bwilhelm.com/2013/01/17/can-you-do-a-nested-sql-query-in-responsys/</link>
		<comments>http://www.bwilhelm.com/2013/01/17/can-you-do-a-nested-sql-query-in-responsys/#comments</comments>
		<pubDate>Thu, 17 Jan 2013 18:56:05 +0000</pubDate>
		<dc:creator><![CDATA[Brian Wilhelm]]></dc:creator>
				<category><![CDATA[E-mail]]></category>
		<category><![CDATA[Internet Marketing]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[Responsys]]></category>

		<guid isPermaLink="false">http://www.bwilhelm.com/?p=271</guid>
		<description><![CDATA[Although I have not heard this directly from Responsys, I believe you can execute any SELECT statements that can normally be executed on an ORACLE database. We run this SQL statement, where you can see nested select statements: SELECT * FROM ( SELECT RANK() OVER (PARTITION BY A.EMAIL_ADDRESS_ ORDER BY A.CREATED_DATE_) RNK, A.* FROM $A$ [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Although I have not heard this directly from Responsys, I believe you can execute any SELECT statements that can normally be executed on an ORACLE database. We run this SQL statement, where you can see nested select statements: </p>
<p><code>SELECT * FROM ( SELECT RANK() OVER (PARTITION BY A.EMAIL_ADDRESS_ ORDER BY A.CREATED_DATE_) RNK, A.* FROM $A$ A JOIN (SELECT EMAIL_ADDRESS_ FROM $A$ GROUP BY EMAIL_ADDRESS_ HAVING count(EMAIL_ADDRESS_) > 1) B ON (A.EMAIL_ADDRESS_ = B.EMAIL_ADDRESS_) ) WHERE RNK <> 1</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.bwilhelm.com/2013/01/17/can-you-do-a-nested-sql-query-in-responsys/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Steve Jobs: 1955 &#8211; 2011</title>
		<link>http://www.bwilhelm.com/2011/10/06/steve-jobs-1955-2011/</link>
		<comments>http://www.bwilhelm.com/2011/10/06/steve-jobs-1955-2011/#respond</comments>
		<pubDate>Thu, 06 Oct 2011 12:35:06 +0000</pubDate>
		<dc:creator><![CDATA[Brian Wilhelm]]></dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Mobile]]></category>

		<guid isPermaLink="false">http://www.bwilhelm.com/?p=263</guid>
		<description><![CDATA[]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.bwilhelm.com/wordpress/wp-content/uploads/2011/10/rip-steve-2011.png"><img src="http://www.bwilhelm.com/wordpress/wp-content/uploads/2011/10/rip-steve-2011-300x196.png" alt="" title="Steve Jobs 1955 - 2011" width="300" height="196" class="aligncenter size-medium wp-image-264" srcset="http://www.bwilhelm.com/wordpress/wp-content/uploads/2011/10/rip-steve-2011-300x196.png 300w, http://www.bwilhelm.com/wordpress/wp-content/uploads/2011/10/rip-steve-2011.png 520w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.bwilhelm.com/2011/10/06/steve-jobs-1955-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introducing the New Jewelry Television Mobile App</title>
		<link>http://www.bwilhelm.com/2010/12/03/introducing-the-new-jewelry-television-mobile-app/</link>
		<comments>http://www.bwilhelm.com/2010/12/03/introducing-the-new-jewelry-television-mobile-app/#comments</comments>
		<pubDate>Fri, 03 Dec 2010 19:48:56 +0000</pubDate>
		<dc:creator><![CDATA[Brian Wilhelm]]></dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Home Shopping Network]]></category>
		<category><![CDATA[IPhone]]></category>
		<category><![CDATA[Jewelry Television]]></category>
		<category><![CDATA[Streaming media]]></category>

		<guid isPermaLink="false">http://www.bwilhelm.com/?p=231</guid>
		<description><![CDATA[Our team recently finished the new Jewelry Television iPhone app, and I wanted to show off some of the features. Take a look! The Jewelry Television iPhone and Android apps are now available in their respective app marketplaces. Feel free to go download them and have a look while you read through my brief overview. [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Our team recently finished the new Jewelry Television iPhone app, and I wanted to show off some of the features. Take a look!<br />
<span id="more-231"></span></p>
<div style="margin:20px auto; text-align:center"><object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/dJZS75pH_yo?fs=1&amp;hl=en_US"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/dJZS75pH_yo?fs=1&amp;hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object></div>
<p>The <a href="itms://itunes.apple.com/us/app/jtv/id402114612?mt=8">Jewelry Television iPhone</a> and Android apps are now available in their respective app marketplaces. Feel free to go download them and have a look while you read through my brief overview.</p>
<p>Take a look at the home screen below. It features some banner space, a live refreshing current item on air, links to recent items shown on TV, and a featured item category.</p>
<div id="attachment_233" style="width: 210px" class="wp-caption aligncenter"><a href="http://www.bwilhelm.com/wordpress/wp-content/uploads/2010/12/home.png"><img class="size-medium wp-image-233" title="JTV App Home Screen" src="http://www.bwilhelm.com/wordpress/wp-content/uploads/2010/12/home-200x300.png" alt="JTV App Home Screen" width="200" height="300" srcset="http://www.bwilhelm.com/wordpress/wp-content/uploads/2010/12/home-200x300.png 200w, http://www.bwilhelm.com/wordpress/wp-content/uploads/2010/12/home-570x855.png 570w, http://www.bwilhelm.com/wordpress/wp-content/uploads/2010/12/home.png 640w" sizes="(max-width: 200px) 100vw, 200px" /></a><p class="wp-caption-text">JTV App Home Screen</p></div>
<p>We also included the ability to watch JTV live through the app, as long as you are connected to 3G or wi-fi. This section features the current item which refreshes below the video, so you can tap the item and buy it if you so desire.</p>
<div id="attachment_236" style="width: 210px" class="wp-caption aligncenter"><a href="http://www.bwilhelm.com/wordpress/wp-content/uploads/2010/12/liveshow.png"><img class="size-medium wp-image-236" title="JTV Live Show" src="http://www.bwilhelm.com/wordpress/wp-content/uploads/2010/12/liveshow-200x300.png" alt="JTV Live Show" width="200" height="300" srcset="http://www.bwilhelm.com/wordpress/wp-content/uploads/2010/12/liveshow-200x300.png 200w, http://www.bwilhelm.com/wordpress/wp-content/uploads/2010/12/liveshow-570x855.png 570w, http://www.bwilhelm.com/wordpress/wp-content/uploads/2010/12/liveshow.png 640w" sizes="(max-width: 200px) 100vw, 200px" /></a><p class="wp-caption-text">The live broadcast streaming within the app.</p></div>
<p>Let me say that writing an app for a home shopping network provides unique challenges that most app developers don&#8217;t have to contend with, namely, streaming video of your live broadcast. Getting this right and working has been a fairly complex challenge filled with consideration for all sorts of devices, connection speed, and bit rate scenarios to make sure that its available to as many devices as possible and looks good at the same time.</p>
<p>We also included some non-live video in our video library section. Here we have pre-defined categories of video that we can update on the fly for app users.</p>
<div id="attachment_239" style="width: 210px" class="wp-caption aligncenter"><a href="http://www.bwilhelm.com/wordpress/wp-content/uploads/2010/12/videolibrary.png"><img class="size-medium wp-image-239" title="Video Library" src="http://www.bwilhelm.com/wordpress/wp-content/uploads/2010/12/videolibrary-200x300.png" alt="Video Library" width="200" height="300" srcset="http://www.bwilhelm.com/wordpress/wp-content/uploads/2010/12/videolibrary-200x300.png 200w, http://www.bwilhelm.com/wordpress/wp-content/uploads/2010/12/videolibrary-570x855.png 570w, http://www.bwilhelm.com/wordpress/wp-content/uploads/2010/12/videolibrary.png 640w" sizes="(max-width: 200px) 100vw, 200px" /></a><p class="wp-caption-text">The video library section of the JTV app.</p></div>
<p>Education is a big part of what Jewelry Television stands for, and the Gemopedia section features information about gemstones, including pictures and video, and is a convenient little gemstone guide you can keep in your pocket.</p>
<div id="attachment_242" style="width: 210px" class="wp-caption aligncenter"><a href="http://www.bwilhelm.com/wordpress/wp-content/uploads/2010/12/gemopediahome.png"><img class="size-medium wp-image-242" title="Gemopedia" src="http://www.bwilhelm.com/wordpress/wp-content/uploads/2010/12/gemopediahome-200x300.png" alt="Gemopedia" width="200" height="300" srcset="http://www.bwilhelm.com/wordpress/wp-content/uploads/2010/12/gemopediahome-200x300.png 200w, http://www.bwilhelm.com/wordpress/wp-content/uploads/2010/12/gemopediahome-570x855.png 570w, http://www.bwilhelm.com/wordpress/wp-content/uploads/2010/12/gemopediahome.png 640w" sizes="(max-width: 200px) 100vw, 200px" /></a><p class="wp-caption-text">The Gemopedia, a mobile gemstone guide.</p></div>
<p>We also provide some tools in the app, such as a ring sizer, program guide, and channel finder that uses your GPS to tell you what channel Jewelry Television is on in your immediate area.</p>
<div id="attachment_243" style="width: 210px" class="wp-caption aligncenter"><a href="http://www.bwilhelm.com/wordpress/wp-content/uploads/2010/12/channelfinder.png"><img class="size-medium wp-image-243" title="Channel Finder" src="http://www.bwilhelm.com/wordpress/wp-content/uploads/2010/12/channelfinder-200x300.png" alt="" width="200" height="300" srcset="http://www.bwilhelm.com/wordpress/wp-content/uploads/2010/12/channelfinder-200x300.png 200w, http://www.bwilhelm.com/wordpress/wp-content/uploads/2010/12/channelfinder-570x855.png 570w, http://www.bwilhelm.com/wordpress/wp-content/uploads/2010/12/channelfinder.png 640w" sizes="(max-width: 200px) 100vw, 200px" /></a><p class="wp-caption-text">The JTV Channel Finder</p></div>
<div id="attachment_244" style="width: 210px" class="wp-caption aligncenter"><a href="http://www.bwilhelm.com/wordpress/wp-content/uploads/2010/12/ringsizer.png"><img class="size-medium wp-image-244" title="Ring Sizer" src="http://www.bwilhelm.com/wordpress/wp-content/uploads/2010/12/ringsizer-200x300.png" alt="Ring Sizer" width="200" height="300" srcset="http://www.bwilhelm.com/wordpress/wp-content/uploads/2010/12/ringsizer-200x300.png 200w, http://www.bwilhelm.com/wordpress/wp-content/uploads/2010/12/ringsizer-570x855.png 570w, http://www.bwilhelm.com/wordpress/wp-content/uploads/2010/12/ringsizer.png 640w" sizes="(max-width: 200px) 100vw, 200px" /></a><p class="wp-caption-text">The JTV Ring Sizer</p></div>
<p>Of course the app wouldn&#8217;t be complete without the ability to shop. We have a full shopping experience built in to the app, where you can browse the roughly 30,000 jewelry and gemstone items on JTV.com and purchase, right from your mobile device.</p>
<div id="attachment_245" style="width: 210px" class="wp-caption aligncenter"><a href="http://www.bwilhelm.com/wordpress/wp-content/uploads/2010/12/shopping.png"><img class="size-medium wp-image-245" title="App Shopping" src="http://www.bwilhelm.com/wordpress/wp-content/uploads/2010/12/shopping-200x300.png" alt="App Shopping" width="200" height="300" srcset="http://www.bwilhelm.com/wordpress/wp-content/uploads/2010/12/shopping-200x300.png 200w, http://www.bwilhelm.com/wordpress/wp-content/uploads/2010/12/shopping-570x855.png 570w, http://www.bwilhelm.com/wordpress/wp-content/uploads/2010/12/shopping.png 640w" sizes="(max-width: 200px) 100vw, 200px" /></a><p class="wp-caption-text">Shopping inside the JTV app.</p></div>
<p>All in all the app is a solid version 1.0. Keep an eye out for more features rolling out soon.</p>
<p>Download the apps: <a href="itms://itunes.apple.com/us/app/jtv/id402114612?mt=8">JTV iPhone App</a></p>
<p>QR Code for the Android App<br />
<div id="attachment_248" style="width: 160px" class="wp-caption alignleft"><a href="http://www.bwilhelm.com/wordpress/wp-content/uploads/2010/12/qrcode_android.gif"><img src="http://www.bwilhelm.com/wordpress/wp-content/uploads/2010/12/qrcode_android.gif" alt="QR Code for Android App" title="QR Code for Android App" width="150" height="150" class="size-full wp-image-248" /></a><p class="wp-caption-text">QR Code for Android App</p></div></p>
]]></content:encoded>
			<wfw:commentRss>http://www.bwilhelm.com/2010/12/03/introducing-the-new-jewelry-television-mobile-app/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Creating Timed Events in Your iPhone App with Titanium</title>
		<link>http://www.bwilhelm.com/2010/11/20/creating-timed-events-in-your-iphone-app-with-titanium/</link>
		<comments>http://www.bwilhelm.com/2010/11/20/creating-timed-events-in-your-iphone-app-with-titanium/#comments</comments>
		<pubDate>Sun, 21 Nov 2010 03:54:35 +0000</pubDate>
		<dc:creator><![CDATA[Brian Wilhelm]]></dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Appcelerator]]></category>
		<category><![CDATA[Appcelerator Titanium]]></category>
		<category><![CDATA[IPhone]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Titanium]]></category>

		<guid isPermaLink="false">http://www.bwilhelm.com/?p=212</guid>
		<description><![CDATA[Timers are core elements of games. I&#8217;ll show you how to write a basic timer function that will let you trigger an event on an interval for your iphone app, using Appcelerator&#8217;s Titanium. Since Titanium allows you to write code in Javascript, you can write functions to do a bunch of stuff for you and [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Timers are core elements of games. I&#8217;ll show you how to write a basic timer function that will let you trigger an event on an interval for your iphone app, using Appcelerator&#8217;s <a class="zem_slink" title="Appcelerator Titanium" rel="homepage" href="http://www.appcelerator.com">Titanium</a>.<br />
<span id="more-212"></span></p>
<p>Since Titanium allows you to write code in Javascript, you can write functions to do a bunch of stuff for you and make writing your app much easier.  I wrote a simple timer function that can be used to fire other events within your app. This might be useful for games, cooking apps, etc.</p>
<p>So here&#8217;s the code:</p>
<pre lang="JAVASCRIPT">function setTimer(timetowait,context) {

mt=0;
mtimer = setInterval(function() {

    	mt++;
	Ti.API.info(mt);

    if(mt==timetowait) {
        // do something;
	clearInterval(mtimer);
 	Ti.App.fireEvent(context);
        }

},1000);
};</pre>
<p>So let&#8217;s break it down to understand what it does. First let&#8217;s look at the variable we pass into the function: <em><strong>timetowait</strong></em> and <em><strong>context</strong></em></p>
<p><em><strong>timetowait</strong></em> simply represents the number of seconds the timer should count to until you want your event to fire.</p>
<p><em><strong>context</strong></em> is the name of the event that you want to fire when the timer reaches timetowait</p>
<p><em><strong>Ti.API.info(mt)</strong></em> simply writes out the Titanium debug window the value of <em>mt</em>, which is our variable that increments every second. This is optional, but helpful in the development process to see exactly when the timer stops.</p>
<p><em><strong>clearInterval(mtimer)</strong></em> tells the setInterval function in Titanium to essentially stop/reset.</p>
<p><em><strong>Ti.App.fireEvent(context)</strong></em> fires the name of the event we passed in as the variable <strong><em>context</em></strong>.</p>
<p>Let&#8217;s look at a couple of examples of how this could be used. Let&#8217;s say we have a basic game where the player has to do something in a specific amount of time. We could use our setTimer function to time the game, and then show a game over alert message in the app:</p>
<pre lang="JAVASCRIPT">//set the timer for 30 seconds, and after that show the game over message
setTimer(30, 'showGameOver');

//create an event listener for our Game Over alert
Ti.App.addEventListener("showGameOver", function() {
	alert("Game Over!");
});</pre>
<p>That&#8217;s a pretty simple example. Let&#8217;s say we wanted to continuously loop the timer:</p>
<pre lang="JAVASCRIPT">//set the timer for 30 seconds, and then call the timer function again
setTimer(30, 'loopTimer');

Ti.App.addEventListener("loopTimer", function() {

	//call the timer function again
	setTimer(30, 'loopTimer');
});</pre>
<p>In both of these cases we can add as much complexity to our event listeners (the event that is fired when the timer ends) as we want…we could update the on-screen display, fire off multiple events, write data to the local database, load a remote file, check network connectivity, etc.</p>
<p>Timers can be used for all sorts of things in iPhone apps. Hope this helps someone get started using them.</p>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><img class="zemanta-pixie-img" style="border: none; float: right;" src="http://img.zemanta.com/pixy.gif?x-id=6cdf010d-c626-4348-8654-12c1a0452ac7" alt="" /></div>
]]></content:encoded>
			<wfw:commentRss>http://www.bwilhelm.com/2010/11/20/creating-timed-events-in-your-iphone-app-with-titanium/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Apple will sell an iPhone with Verizon &#8211; or die</title>
		<link>http://www.bwilhelm.com/2010/11/17/apple-will-sell-an-iphone-with-verizon-or-die/</link>
		<comments>http://www.bwilhelm.com/2010/11/17/apple-will-sell-an-iphone-with-verizon-or-die/#comments</comments>
		<pubDate>Thu, 18 Nov 2010 03:22:27 +0000</pubDate>
		<dc:creator><![CDATA[Brian Wilhelm]]></dc:creator>
				<category><![CDATA[Mobile]]></category>

		<guid isPermaLink="false">http://www.bwilhelm.com/?p=199</guid>
		<description><![CDATA[The stars are aligning for Apple and Verizon to finally come together in a deal that will bring the iPhone to the biggest mobile carrier in the US. While some are still in denial, you can&#8217;t ignore the circumstantial evidence that points to a not-so-distant partnership. First, let&#8217;s look at the tidbits of data we [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>The stars are aligning for Apple and Verizon to finally come together in a deal that will bring the iPhone to the biggest mobile carrier in the US. While some are still in denial, you can&#8217;t ignore the circumstantial evidence that points to a not-so-distant partnership.<br />
<span id="more-199"></span><br />
First, let&#8217;s look at the tidbits of data we have; there was <a href="http://online.wsj.com/article/SB10001424052702304370304575152242601774892.html">this article</a> back in March from the guy who tends to get things right regarding apple (he is suspected to be the official guy that apple goes to for these tidbits, and also the guy who wrote the latest article about iphone coming to verizon).</p>
<p>There was <a href="http://techcrunch.com/2010/08/08/verizon-iphone-january/">this report</a> regarding this mysterious Qualcomm chip order.</p>
<p>Then there’s AT&amp;T’s comments about the Verizon iPhone (essentially saying the people are ‘stuck’ in their current contracts, so bring it on):</p>
<p>“Stephenson couldn&#8217;t dodge questions about the looming loss of AT&amp;T&#8217;s exclusive iPhone deal. But he did play down its importance, saying that two thirds of iPhone owners were long-term AT&amp;T users before they signed up for the iPhone service, saying they&#8217;re unlikely to switch. He threw out the stat that 80 percent of the iPhone base is either in a family talk plan or in a business relationship with AT&amp;T, saying that those customers are &#8216;very sticky.&#8217; Stephenson emphasized the &#8220;extended array&#8221; of smartphones Apple subscribers can pick from, which reads as AT&amp;T saying it&#8217;s not too reliant on Apple” [<a href="http://www.cnbc.com/id/39293540">Read more here</a>]</p>
<p>The timing is perfect as well. How best to minimize the sales of Android devices during the holidays? Right before the holiday buying season, leak a story that you are selling the iPhone in January on Verizon. Coincidentally Apple’s annual event is in January, perfect to announce the availability. CES is also in January, which gives Verizon its podium to announce it as well.</p>
<p>Now the fact that Verizon is selling it&#8217;s iPad in Verizon stores is just the first step in that partnership.</p>
<div class="zemanta-img" style="margin: 1em; display: block;">
<div style="width: 183px" class="wp-caption alignleft"><a href="http://commons.wikipedia.org/wiki/File:Steve_Jobs_Headshot_2010-CROP.jpg"><img class="  " title="Steve Jobs shows off iPhone 4 at the 2010 Worl..." src="http://upload.wikimedia.org/wikipedia/commons/thumb/b/b9/Steve_Jobs_Headshot_2010-CROP.jpg/300px-Steve_Jobs_Headshot_2010-CROP.jpg" alt="Steve Jobs shows off iPhone 4 at the 2010 Worl..." width="173" height="158" /></a><p class="wp-caption-text">Image via Wikipedia</p></div>
</div>
<p>If you think about it, Apple really doesn&#8217;t  have an option &#8211; they have to find another carrier if they want to expand their market share. Google and the Android platform are eating Apple&#8217;s lunch right now in terms of growth, and long term handset projections are not pretty if you are Steve Jobs. Apple may have had the upper hand with their smartphone play early on, but all they did was spur the rapid adoption of these smart devices, essentially helping to make them mainstream. While they arguably have the best interface and are continuously ranked high in customer satisfaction, they cannot afford to sit out a round. They have to make a move in January 2011 or risk falling behind.</p>
<p><strong></p>
<p>Update:</strong> <a href="http://www.crunchgear.com/2010/11/18/woz-apple-almost-launched-a-phone-in-2004-android-will-win-the-race/">Crunchgear today is reporting</a> that Steve Wozniak, co-founder of Apple, has stated that he thinks that Android will eventually win the mobile platform race. Surely Steve Jobs is not going to stand for that!</p>
<p>Disclosure: I own shares of Apple stock.</p>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><a class="zemanta-pixie-a" title="Enhanced by Zemanta" href="http://www.zemanta.com/"><img class="zemanta-pixie-img" style="border: none; float: right;" src="http://img.zemanta.com/zemified_e.png?x-id=b5115896-6a4a-400d-81d9-a89882a077e9" alt="Enhanced by Zemanta" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.bwilhelm.com/2010/11/17/apple-will-sell-an-iphone-with-verizon-or-die/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Spring Cleaning: It&#8217;s Time To Clean Your Email List</title>
		<link>http://www.bwilhelm.com/2010/03/30/spring-cleaning-its-time-to-clean-your-email-list/</link>
		<comments>http://www.bwilhelm.com/2010/03/30/spring-cleaning-its-time-to-clean-your-email-list/#comments</comments>
		<pubDate>Tue, 30 Mar 2010 04:04:21 +0000</pubDate>
		<dc:creator><![CDATA[Brian Wilhelm]]></dc:creator>
				<category><![CDATA[E-mail]]></category>
		<category><![CDATA[Internet Marketing]]></category>
		<category><![CDATA[subscribers]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://www.bwilhelm.com/?p=173</guid>
		<description><![CDATA[It&#8217;s that time of year again &#8211; spring cleaning time. Why not apply the same vigor to cleaning your email list as you do with cleaning out that flower bed full of weeds? Have you begun to see your email open rates slowly declining, along with your click-through rates? Are you still experiencing moderate list [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>It&#8217;s that time of year again &#8211; spring cleaning time. Why not apply the same vigor to cleaning your email list as you do with cleaning out that flower bed full of weeds?<br />
<span id="more-173"></span><br />
Have you begun to see your email open rates slowly declining, along with your click-through rates? Are you still experiencing moderate list growth, but feel your not getting the most from all your subscribers? Are your spam complaints beginning to climb? Then it may be time to do a little house keeping.</p>
<p>Keeping a fresh list clean and free of &#8216;weeds&#8217; is important to maintain quality scores and to your bottom line. If you are like a lot of companies, you have a set number of emails you can send in a year, so getting the most of those emails you do send is critical. That&#8217;s where our email list cleaning comes in.</p>
<p>Undoubtedly, you have subscribers to your email list that have stopped opening your emails, stopped clicking links, and in general have displayed no behavior that indicates they are interested in your product or service. Therefore, there&#8217;s no need to send emails to these people. Cleaning out these &#8216;weeds&#8217; will leave more room for more &#8216;flowers&#8217;. Here&#8217;s a quick step-by-step list of how to clean out the &#8216;weeds&#8217; from your garden.</p>
<p>1. <strong>Identify the Weeds</strong> &#8211; (i.e. the inactive subscribers on your list). Do this by creating a list of subscribers that did not open or click on any of your emails in the last 6 months. This will give you a list of subscribers who have been inactive, which we can then use for multiple purposes.</p>
<p>2. <strong>Create a &#8216;Last Chance&#8217; Email</strong> &#8211; This email is designed to re-engage the inactive subscribers, by asking them to re-subscribe to your email list, or if they chose not to respond, be removed from your list entirely. They also have the option to unsubscribe themselves right then and there.</p>
<p class="alert">Note: You might ask why we would provide them the opportunity to unsubscribe so easily. Really, if the user chooses this route, you didn&#8217;t want them on your list to begin with. Remember, these are people who haven&#8217;t engaged with you in the last 6 months. If this is the only engagement you get, be thankful, because they have removed themselves from your list, and they are no longer inflating your active subscribers numbers.</p>
<p>This email should be designed to talk about what the subscriber would be missing out on if they decided not to continue to receive emails from you. Don&#8217;t clutter up the email with images &#8211; make it clear to the user they have 2 options. Here&#8217;s an example of a campaign I ran at DenTek.</p>
<div id="attachment_175" style="width: 580px" class="wp-caption aligncenter"><a rel="attachment wp-att-175" href="http://www.bwilhelm.com/2010/03/30/spring-cleaning-its-time-to-clean-your-email-list/picture-1-3/"><img class="size-large wp-image-175" title="Inactive Subscribers Email" src="http://www.bwilhelm.com/wordpress/wp-content/uploads/2010/03/Picture-1-570x467.png" alt="" width="570" height="467" srcset="http://www.bwilhelm.com/wordpress/wp-content/uploads/2010/03/Picture-1-570x467.png 570w, http://www.bwilhelm.com/wordpress/wp-content/uploads/2010/03/Picture-1-300x246.png 300w, http://www.bwilhelm.com/wordpress/wp-content/uploads/2010/03/Picture-1.png 600w" sizes="(max-width: 570px) 100vw, 570px" /></a><p class="wp-caption-text">An example of a no frills direct message to your subscriber.</p></div>
<p>As you can see, its obvious we are encouraging them to click the orange button and remain on our list by opting in again. Essentially, they aren&#8217;t really opting in, they are just registering a click on the email, so we can then track that click as an engagement by that user in our campaign dashboard later on. The opt-out button in this case is a one click unsubscribe, so the user is removed immediately from the list.</p>
<p class="alert">Tip: It&#8217;s important <strong>not</strong> to incentivize the user to click the opt-in button. <strong>Don&#8217;t</strong> offer them anything in the email for staying a subscriber. We are trying to determine their true feelings about being subscribed to your list, and do not wish to prolong their subscription with bribery. Instead, when the user decides to re-opt-in, that click should go to a page <strong>on your site</strong> that thanks them for sticking with you, and offers them some coupon, say 20% off their next purchase on your site. Never miss an opportunity to surprise a user with an offer, especially in this case where they may have forgotten why they were subscribed to your list in the first place. It&#8217;s a chance to make a second first impression of sorts. This approach rewards the the opt-in behavior, but on the backside of the user action, and affirms the user&#8217;s motives for re-opt-in was not based on the incentive.</p>
<p>3. <strong>Gather the Results</strong> &#8211; So now we have engaged those inactive users, and you&#8217;ll notice that some users have decided they really really like you so they clicked through the opt-in link, and others have decided to opt out. A majority of the users you tried to re-rengage, will indeed still be unengaged, and will not open or click this email either. Shocking I know! These actions will determine our final filter list against which we can filter for our regular email campaigns. Now run your collection again like in step 1 &#8211; gather all the non-openers and non-clickers into one list, and you have a list of subscribers who have not opened or clicked any of your emails in the last 6 months (including our re-engagement email). You now have your final &#8216;Inactives&#8217; list.</p>
<p>4. <strong>Apply Your Inactive List To Your Campaigns</strong> &#8211; With your newly created Inactive List in hand, you now have some options. You can use it as an exclude filter when you send out campaigns, or you can use it to unsubscribe all of those users from your global subscriber list. If you have multiple lists you manage within one company, using the Inactive list on a per list basis as a filter may be the best option, as inactive users on one list may not be inactive on another list within the same company, for example.</p>
<p>5. <strong>Watch Your Open and Click-through Rates Spike</strong> &#8211; Once your remove the weeds, watch your flowers bloom! OK enough of the spring references. Seriously though, you will see a marked improvement. At DenTek, after we ran our re-engagement program, we saw open rates go as high as 40%, up from 10-15%. Click-through rates also doubled with our new clean list.</p>
<p>Keep in mind that this can be performed a few times a year, and it will keep your list nice and clean, full of active users &#8211; the kind who like to buy stuff. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.bwilhelm.com/2010/03/30/spring-cleaning-its-time-to-clean-your-email-list/feed/</wfw:commentRss>
		<slash:comments>36</slash:comments>
		</item>
		<item>
		<title>Online CPG Sales Heat Up</title>
		<link>http://www.bwilhelm.com/2010/02/20/online-cpg-sales-heat-up/</link>
		<comments>http://www.bwilhelm.com/2010/02/20/online-cpg-sales-heat-up/#comments</comments>
		<pubDate>Sat, 20 Feb 2010 21:33:39 +0000</pubDate>
		<dc:creator><![CDATA[Brian Wilhelm]]></dc:creator>
				<category><![CDATA[E-Commerce]]></category>
		<category><![CDATA[CPG]]></category>

		<guid isPermaLink="false">http://www.bwilhelm.com/?p=135</guid>
		<description><![CDATA[As retailers like Walmart begin to offer more and more lower priced consumer packaged goods (CPG) for sale online, all signs point to a race to be the leader in sales of everyday household items. In the world I work in on a daily basis, the CPG world, one thing is for sure: The way [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>As retailers like Walmart begin to offer more and more lower priced consumer packaged goods (CPG) for sale online, all signs point to a race to be the leader in sales of everyday household items.<span id="more-135"></span></p>
<p>In the world I work in on a daily basis, the CPG world, one thing is for sure: The way consumers get their CPG items is changing. While a vast majority of consumers still shop for toilet paper and toothpaste at their local Supercenter, more and more shoppers are finding that with a little planning, they can get the same goods without leaving their homes, and various online startups and established retailers and CPG manufacturers want to make it possible.</p>
<p>In the past I have written about <a href="http://www.bwilhelm.com/2009/07/30/e-commerce-comes-to-facebook/">Alice.com</a>, a newer site dedicated to selling CPG directly to consumers. The whole idea behind Alice is to give CPG manufacturers a way to sell directly to consumers, and give consumers a convenient way to purchase those necessities on a regular schedule. Alice.com has enjoyed lots of positive press which has propelled interest, not to mention the company was founded by a <a href="http://flywheelblog.com/">couple of internet veterans</a> with a successful track record.</p>
<p>Big online retailers have begun to transform their own online offerings, typically filled with higher ticket items like electronics, and added lower priced CPG items. Recently, Amazon.com has increased it efforts to bring on board CPG manufacturers to round out their offerings online. Walmart.com, who until very recently didn&#8217;t sell lower priced CPG items online, has begun to sell multi-packs of lower priced items to make them more viable to online shoppers who aren&#8217;t looking to pay $6 shipping for an item priced $2.99. Now you can buy a pack of 3 items, for example, to make your cart-to-shipping-cost ratio more acceptable. Target is in the middle of a <a href="http://www.internetretailer.com/dailyNews.asp?id=33140">major online redesign</a>, so look for them to come at swinging on CPG items too when their new store comes online in 2011.</p>
<p>Sales and Marketing teams at major retailers aren&#8217;t the only one&#8217;s with their eye on the direct-to-consumer CPG sales.  As a not-so-sublte push back on retailers who are exerting more and more control over CPG companies, the largest CPG manufacturer in the world, Proctor &#038; Gamble, is dipping their big toe into the direct-to-consumer waters as well. Recently, <a href="http://online.wsj.com/article/SB10001424052748704363504575003333381682138.html">P&#038;G announced a &#8216;test&#8217;</a> where they would sell direct to consumers to try to learn about consumer buying habits for their brands, and all learnings would be shared with their retailers. Personally, I think what&#8217;s really happening is an experiment to see how viable selling direct to consumers is for them. If it proves successful, look for the &#8216;test&#8217; to continue. The question remains how much P&#038;G want to invest in their fulfillment operations to facilitate these sales, but most likely they will leave that to a third party to figure out if they ever get to the point where it becomes a viable sales channel for them.</p>
<p>Stay tuned as the race heats up to sell everyday items online. It could get interesting.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bwilhelm.com/2010/02/20/online-cpg-sales-heat-up/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Online Font Recognition Website Can Save Designers Precious Time</title>
		<link>http://www.bwilhelm.com/2010/01/16/online-font-recognition-website-can-save-designers-precious-time/</link>
		<comments>http://www.bwilhelm.com/2010/01/16/online-font-recognition-website-can-save-designers-precious-time/#comments</comments>
		<pubDate>Sat, 16 Jan 2010 05:13:11 +0000</pubDate>
		<dc:creator><![CDATA[Brian Wilhelm]]></dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[fonts]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://www.bwilhelm.com/?p=103</guid>
		<description><![CDATA[Occasionally designers have to have a quick way to find out what font is used in an image in order to create complimentary works. Sometimes the original designer or layered file are not always available to make it easy. There is a website that can help. I have run into this scenario a number of [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Occasionally designers have to have a quick way to find out what font is used in an image in order to create complimentary works. Sometimes the original designer or layered file are not always available to make it easy. There is a website that can help.<br />
<span id="more-103"></span><br />
I have run into this scenario a number of times as a designer &#8211; your given a piece of work that you need to base your design off of, and you have a limited time to get your piece finished. There&#8217;s no time to get the original file from the original designer, so you have to try guess which font are used in the original, and try to match up yours. This is very time consuming, and granted, lots of graphic designers can pick out some fonts just by eyeballing them, yet there are still other fonts that escape identification. This is where <a href="http://new.myfonts.com/WhatTheFont/">myfonts.com&#8217;s WhatTheFont</a> (WTF) tool comes in.</p>
<p>I had a real world use for this just today, where I needed a quick font match for an email, so I tried out the WTF machine. Here is what I did. First, I took a snippet of the font I wanted to identify, pictured here. </p>
<div id="attachment_109" style="width: 324px" class="wp-caption aligncenter"><a href="http://www.bwilhelm.com/2010/01/16/online-font-recognition-website-can-save-designers-precious-time/fontcheck/" rel="attachment wp-att-109"><img src="http://www.bwilhelm.com/wordpress/wp-content/uploads/2010/01/fontcheck.jpg" alt="" title="fontcheck" width="314" height="99" class="size-full wp-image-109" srcset="http://www.bwilhelm.com/wordpress/wp-content/uploads/2010/01/fontcheck.jpg 314w, http://www.bwilhelm.com/wordpress/wp-content/uploads/2010/01/fontcheck-300x94.jpg 300w" sizes="(max-width: 314px) 100vw, 314px" /></a><p class="wp-caption-text">The snippet of font I wanted to identify.</p></div>
<p>On the WhatTheFont site I uploaded my sample and clicked the continue button, which then showed me a series of smaller images that represented the individual letters of my snippet that had been recognized by the tool, as seen below.<br />
<div id="attachment_114" style="width: 510px" class="wp-caption aligncenter"><a href="http://www.bwilhelm.com/2010/01/16/online-font-recognition-website-can-save-designers-precious-time/characterrecognition/" rel="attachment wp-att-114"><img src="http://www.bwilhelm.com/wordpress/wp-content/uploads/2010/01/characterrecognition.jpg" alt="" title="characterrecognition" width="500" height="331" class="size-full wp-image-114" srcset="http://www.bwilhelm.com/wordpress/wp-content/uploads/2010/01/characterrecognition.jpg 500w, http://www.bwilhelm.com/wordpress/wp-content/uploads/2010/01/characterrecognition-300x198.jpg 300w" sizes="(max-width: 500px) 100vw, 500px" /></a><p class="wp-caption-text">WhatTheFont recognizes individual letters in your snippet.</p></div></p>
<p>If WhatTheFont doesn&#8217;t correctly identify some of your letters, you can change the letter designation in the boxes below each letter image. Once you have confirmed that each letter breakout is correctly identified, then you can continue, after which WhatTheFont shows you what it thinks are the best matches for the font you are trying to identify.</p>
<div id="attachment_115" style="width: 510px" class="wp-caption aligncenter"><a href="http://www.bwilhelm.com/2010/01/16/online-font-recognition-website-can-save-designers-precious-time/finalfonts/" rel="attachment wp-att-115"><img src="http://www.bwilhelm.com/wordpress/wp-content/uploads/2010/01/finalfonts.png" alt="" title="finalfonts" width="500" height="389" class="size-full wp-image-115" srcset="http://www.bwilhelm.com/wordpress/wp-content/uploads/2010/01/finalfonts.png 500w, http://www.bwilhelm.com/wordpress/wp-content/uploads/2010/01/finalfonts-300x233.png 300w" sizes="(max-width: 500px) 100vw, 500px" /></a><p class="wp-caption-text">WhatTheFont shows you the closest matches to your font.</p></div>
<p>And that&#8217;s about all there is to it. The service did pretty well matching up the font, but I haven&#8217;t tried any script fonts to see how well it performs with a larger challenge. If you use WTF, let me know how it works for you.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bwilhelm.com/2010/01/16/online-font-recognition-website-can-save-designers-precious-time/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>Get XML Data into Magento via the Magento API</title>
		<link>http://www.bwilhelm.com/2010/01/05/get-xml-data-into-magento-via-magento-api/</link>
		<comments>http://www.bwilhelm.com/2010/01/05/get-xml-data-into-magento-via-magento-api/#comments</comments>
		<pubDate>Tue, 05 Jan 2010 19:13:59 +0000</pubDate>
		<dc:creator><![CDATA[Brian Wilhelm]]></dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[E-Commerce]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[magento]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://www.bwilhelm.com/?p=63</guid>
		<description><![CDATA[Recently I needed to write some code to get a dropshipper&#8217;s xml product data into Magento to update my products price, quantity available, and stock status. This is how I went about it. NOTE: Before you get started, you need to make sure you have created an API user in Magento. Here is a good [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Recently I needed to write some code to get a dropshipper&#8217;s xml product data into Magento to update my products price, quantity available, and stock status. This is how I went about it.<br />
<span id="more-63"></span><br />
NOTE: Before you get started, you need to make sure you have created an API user in Magento. <a href="http://www.yireo.com/tutorials/magebridge/administration/119-step-by-step-create-a-magento-api-user">Here is a good step-by-step tutorial for doing that.</a></p>
<p>I decided that because of the potentially massive amount of data in my dropshipper&#8217;s XML feed file, that I should save the file to my server before attempting to process any data. I set up a cron job to use CURL to fetch the file. First I created a file called &#8216;importproducts.php&#8217; and added the following code:</p>
<p><strong>importproducts.php</strong></p>
<pre lang="PHP" line="1">
//my dropshipper's feed URL - replace with your dropshipper's feed
$myFeed = 'http://www.mydropshipperssite.com/feedurl.xml';

// specify the name of the file you want to save
$myFilename = 'product_feed.xml';
	
	
	if ($myFeed != '') {
	//  Initialize the cURL session
	$ch = curl_init();
	curl_setopt($ch, CURLOPT_URL, $myFeed);
	//Create a new file
	$fp = fopen($myFilename, 'w');
	// Save to file
	curl_setopt($ch, CURLOPT_FILE, $fp);
	// Execute the cURL session
	curl_exec ($ch);
	//Close cURL session and file
	curl_close ($ch);
	fclose($fp);
	
	echo "Feed Imported Successfully!";
	
		
		//check the file size - if its 0 then my dropshipper didn't provide any updates, so don't let me know
		if (filesize($myFilename) > 0) {
		
			// send email to me when executed
			$to = "youremail@yourdomain.com";
			$subject = "Feed Imported";
			$body = "Hi,\n\nThe latest product data for YOURSITE has been downloaded on ";
			$body .= date('l jS \of F Y h:i:s A')."\n\n File Size: ".filesize($myFilename) . " bytes";
			
				if (mail($to, $subject, $body)) {
				  echo("<p>Message successfully sent!</p>");
					 } else {
				 echo("<p>Message delivery failed...</p>");
				}
			
		}

	
	} 
</pre>
<p>Now that we have this script written, we need to process the data. Before that, let me show you an example of the xml data I am working with in the xml file we just saved with the import script. Here is sample xml:</p>
<p><strong>product_feed.xml</strong></p>
<pre lang="xml" line="1">
<?xml version="1.0" ?>
<products>
<product sku="15569" mfg_part_number="405970-1" upc="082324027055">
<inventory quantity="13"/>
<price your_price="143.18" list="159.99"/>
<description short="A product description"/>
</product>

<product sku="16128" mfg_part_number="406350-1" upc="082324029301">
<inventory quantity="0"/>
<price your_price="128.18" list="149.99"/>
<description short="Another product description"/>
</product>
</products>
</pre>
<p>Now we can talk about the next file, the one that takes the XML data and uses it to update products in Magento via the API. We&#8217;ll name this file &#8216;processupdates.php&#8217;.</p>
<p><strong>processupdates.php</strong></p>
<pre lang="php" line="1">
//include the Magento API file - replace with your server path to the file
require_once('/some/path/to/public_html/app/Mage.php');

// ***** Configuration ******
$myDomain = 'http://www.yourdomain.com';
$myAPILogin = 'username';
$myAPIKey = 'password';

//calculate the price markup - useful if you have a standard markup you apply
$myMarkUp = .30;
$defaultMarkup = .30;

// get my saved file name
$myFilename = 'product_feed.xml';
	
//load up local xml file for processing
$feed_xml = simplexml_load_file($myFilename);

// Begin SOAP Requests
$client = new SoapClient($myDomain.'/api/?wsdl');
$session = $client->login($myAPILogin, $myAPIKey);

$updatedProducts = "";

//some counters - counting loops this way lets me see and set where the count increments
$x = 0;

//some filter date to pass to the API - add more to filter your results further - see Magento API docs
$filterData = array('type'=>'simple');

//get all my database products into an array
$products = $client->call($session, 'catalog_product.list', array($filterData));


//loop through my product array
foreach ($products as $product) {

echo "Starting product loop...<br/><br/>";


//get my database product sku - for cleaner reference in the code
$mysku = $product['sku']

//search directly in the product sku attribute in the xml for my sku
$res = $feed_xml->xpath("//product[@sku='$mysku']");


// if we find one, lets process it
if(!empty($res)) {

	//matched - make updates
	echo "Matched: ".$mysku;
	
	//price updates
	if ($res[0]->price['list'] != '') {
		$newprice = $res[0]->price['your_price'] + (($res[0]->price['list'] - $res[0]->price['your_price'])*$myMarkUp);
	} else {
		$newprice = $res[0]->price['your_price'] + ($res[0]->price['your_price']*$defaultMarkup);
	}
	
	//build my array to pass to the magento API
	$fieldPriceData = array('cost'=>$res[0]->price['your_price']*1, 'price'=>$newprice, 'upc'=>$res[0]->product['upc']);
	//update magento with price data
	$client->call($session, 'catalog_product.update', array($product['sku'], $fieldPriceData));
	
	//qty and stock updates
	if (($res[0]->inventory['quantity']*1) != 0) {
		$fieldQtyData = array('qty'=>$res[0]->inventory['quantity']*1, 'is_in_stock'=>1);
		echo "In Stock<br/>";
	} else {
		$fieldQtyData = array('qty'=>$res[0]->inventory['quantity']*1, 'is_in_stock'=>0);
		echo "Out of Stock<br/>";
	}
	
	//update magento with quantity and stock data
	$client->call($session, 'product_stock.update', array($product['sku'], $fieldQtyData));
	
	//record the updated product for emailing later
	$updatedProducts .= "SKU: ".$mysku." - ".$res[0]->description['short']."\nPrice: ".$newprice."\nCost: ".$res[0]->price['your_price']."\nQty: ".$res[0]->inventory['quantity']."\n\n";
	
	//increment my counter
	$x = $x + 1; 

} else {

echo "no match<br/><br/>";

}



// send mail to me
$to = "you@yourdomain.com";
$subject = "Feed Processed";
$body = "Hi,\n\nThe latest data for ".$myDomain." has been processed on ".date('l jS \of F Y h:i:s A')."\n\n";
$body .= "Products Updated: ".$x."\n\n".$updatedProducts;
if (mail($to, $subject, $body)) {
  echo("<p>Message successfully sent!</p>");
	 } else {
 echo("<p>Message delivery failed...</p>");
}

</pre>
<p>Now all you need to do is set up the cron jobs to call your import file at one interval, and your process file at another interval. Note that this works for me because I have a limited number of database products. If you have thousands of products you might want to have your site updating products by category, for example. If anyone has any better ideas on how to do any of this, please let me know. I always like to learn new stuff!</p>
Download Files: <a href="http://www.bwilhelm.com/downloads/Magento_API_XML_Import.zip" title="Downloaded 1739 times">Magento API XML Import</a> - 15.82 KB - 1739 Downloads
]]></content:encoded>
			<wfw:commentRss>http://www.bwilhelm.com/2010/01/05/get-xml-data-into-magento-via-magento-api/feed/</wfw:commentRss>
		<slash:comments>45</slash:comments>
		</item>
	</channel>
</rss>
