<?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>View from the Swamp &#187; programming</title>
	<atom:link href="http://www.viewfromtheswamp.com/tags/programming/feed" rel="self" type="application/rss+xml" />
	<link>http://www.viewfromtheswamp.com</link>
	<description>Life in South Florida Can Skew Anyone&#039;s Perspective</description>
	<lastBuildDate>Thu, 01 Apr 2010 21:26:11 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Why So Many Clueless Programmers?</title>
		<link>http://www.viewfromtheswamp.com/2008/06/10/why-so-many-clueless-programmers</link>
		<comments>http://www.viewfromtheswamp.com/2008/06/10/why-so-many-clueless-programmers#comments</comments>
		<pubDate>Tue, 10 Jun 2008 12:49:00 +0000</pubDate>
		<dc:creator>Sonjay</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[eBay & ePN]]></category>
		<category><![CDATA[incompetence]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.viewfromtheswamp.com/2008/06/10/why-so-many-clueless-programmers</guid>
		<description><![CDATA[Recently, I&#8217;ve the distinct joy of dealing with incompetent programmers on two different, unrelated, projects. Or perhaps they&#8217;re competent but simply don&#8217;t give a damn.
First up: A new regional service provider for an association of professionals. I have nearly a dozen clients whose websites depend on a datafeed, which was provided by the previous service [...]]]></description>
			<content:encoded><![CDATA[<p>Recently, I&#8217;ve the distinct joy of dealing with incompetent programmers on two different, unrelated, projects. Or perhaps they&#8217;re competent but simply don&#8217;t give a damn.</p>
<p><strong>First up:</strong> A new regional service provider for an association of professionals. I have nearly a dozen clients whose websites depend on a datafeed, which was provided by the previous service provider for this association. The old datafeed was excellent &#8212; clear and concise, comprehensive, and easy to use. The new provider first hemmed and hawed and offered vague responses to direct questions&#8230;.. Somewhat important questions such as, &#8220;Will you still provide us with a datafeed?&#8221; If this service provider was not going to provide a datafeed, I would have to rewrite all the programming on my clients&#8217; sites to use a different datafeed from a secondary source, which wasn&#8217;t as good as the one we were currently getting, but at least it was something. If the new provider would be providing a datafeed, I needed the schema for it as soon as possible, because the old datafeed was going to cease on a particular date, and any new datafeed would likely require rewriting my programming.</p>
<p>The new provider, though, simply couldn&#8217;t seem to tell us if they would be providing a datafeed or not. First the answer was &#8220;yes,&#8221; then it was &#8220;no,&#8221; then it was &#8220;maybe,&#8221; then it was &#8220;yes, and it will be compliant with the national standard,&#8221; then it was &#8220;if you pay us for the custom programming we will.&#8221; I was just about at the point where I would have to use the other available datafeed in order to get my clients&#8217; sites updated by the deadline, when this new provider made a datafeed available.</p>
<p>And when I finally got a look at it: <strong>Oh boy, does it suck.</strong> First of all, and I&#8217;m actually very glad of this, the datafeed <strong>omits some of the crucial information</strong> that my clients need. I couldn&#8217;t believe that a large professional service provider such as this one would omit such critical information from the datafeed they provide to their members. Keep in mind, the members, including my clients, provide the data in the first place, and <strong>pay the service provider handsomely</strong> to maintain it for them. This isn&#8217;t some free service where you get what you pay for.</p>
<p>As I said, I was glad they omitted this information, because it allowed me to recommend to my clients that we use the secondary datafeed from a different provider. My clients wouldn&#8217;t have understood, or cared, about my other objections to the datafeed, but the missing information they understood and cared about.</p>
<p>And what are my other objections to this new feed? Well, first, it <strong>completely ignores the flexibility of relational databases</strong>, and has never even been in the same room with the concept of <a rel="nofollow" href="http://bytes.com/forum/thread585228.html">normalization</a>. As an example, for a particular feature, the datafeed has 5 fields for characteristics of that feature. What will happen when 6 characteristics are needed? The datafeed will have to be restructured to add a 6th field, and my database that uses the datafeed will have to be restructured, and the programming code that selects the data and displays it in a web browser would have to be re-written (again) to accommodate the 6th characteristic. And then a 7th characteristic will appear at some point, and I&#8217;d have to go through that pointless exercise all over again. The datafeed is structured this way for about 9 different features &#8212; and it&#8217;s almost certain that these will need to be changed on a regular basis.</p>
<p>It also means that for a feature, say, &#8220;surface,&#8221; a particular characteristic, say &#8220;fuzzy,&#8221; might appear in field #10, or field #11, or field #12, or field #13, or field #14&#8230;. Well, you probably get the idea. There&#8217;s no consistency at all with respect to what goes where in the database. So that if I wanted to search the database for items that have a fuzzy surface, I have to write the code to search multiple different fields. This is both stupid, and highly inefficient.</p>
<p>The previous service provider understood relational databases and had structured their datafeed so that they could add a 6th characteristic, and a 7th, and even an 8th, 9th, and 10th, and it would continue working with my database &#8220;as is,&#8221; with no re-programming required. It&#8217;s not that I&#8217;m lazy &#8212; when re-programming is required, I do it. But I have better things to do with my time than waste it re-writing code that shouldn&#8217;t need to be rewritten, and my clients have better things to do with their money than pay me for that time.</p>
<p>And they did silly things like break up a single 1,200-character text field into 5 separate text fields, breaking up the text between words in a sentence, if needed, to fit them into the shorter text fields. That&#8217;s easy enough to handle in my code &#8212; I would simply concatenate all 5 fields into 1 in my database query. But it shouldn&#8217;t be necessary</p>
<p>The complete lack of normalization, and the moronic handling of the large text field, are indicative of a programmer who doesn&#8217;t know jack shit about databases. And that was my biggest concern of all. Even if I were to use the database as provided, what would they do with it down the road? They might decide to remove or add fields without telling anyone, or make other changes that would totally break the sites that depend on the datafeed.</p>
<p>We ended up using the secondary provider&#8217;s datafeed. It&#8217;s not as good as the previous one we were getting, but it&#8217;s infinitely better than the datafeed from the new provider.</p>
<p><strong>Second: eBay,</strong> of all people! You would think a company the size of eBay would have highly competent programmers who know what they&#8217;re doing.</p>
<p>News flash: They don&#8217;t.</p>
<p>I have a number of sites that earn affiliate commissions from eBay&#8217;s Partner Network program. I can view reports on my earnings within eBay&#8217;s ePN website. I can also download those reports, for importing into a spreadsheet or database.</p>
<p>I want to be able to view and manipulate these reports in different ways than the ePN interface allows, so I&#8217;ve been working on a program that will import the downloaded reports into a database and allow me to search, sort, and analyze in a variety of ways. I think it&#8217;s a very cool program, and I may develop it further in order to release it publicly.</p>
<p>But the transaction reports that I get from eBay made my shake me head. One day, the report might contain 9 fields, and the next day it might have 11, and on another day it might have 13. I think there are some other possible permutations possible, too, but until I get such a report in my account I won&#8217;t know exactly how many fields it will have or in what order.</p>
<p>This makes it much more difficult to import the data into my database. I can&#8217;t just &#8220;LOAD DATA INFILE,&#8221; nor can I simply parse the files and do a standard INSERT query. Instead, I have to parse the files and check for the number of fields, and check to see what headings the fields have, and write several different MySQL queries to use, depending on the results of the parsing.</p>
<p>These are basic tab-delimited files. eBay&#8217;s programmers should know enough to just put a zero or a null value, along with the tab, for the fields that aren&#8217;t needed for a given report &#8212; such that all downloaded reports would have exactly 13 fields, always, and they would all have the same fields, in the same order, always.</p>
<p>I sometimes feel overwhelmed and outclassed on the programming forums where I hang out. There are so many extremely competent, highly skilled programmers who can toss off a complex INNER JOIN of 5 different tables as easily as I can type my name.</p>
<p>These programmers would laugh their asses off if they were to see these datafeeds and reports that I&#8217;m dealing with.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.viewfromtheswamp.com/2008/06/10/why-so-many-clueless-programmers/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reporting Tool for eBay ePN Affiliate Program &#8211; Free Download</title>
		<link>http://www.viewfromtheswamp.com/2008/04/10/reporting-tool-for-ebay-epn-affiliate-program-free-download</link>
		<comments>http://www.viewfromtheswamp.com/2008/04/10/reporting-tool-for-ebay-epn-affiliate-program-free-download#comments</comments>
		<pubDate>Thu, 10 Apr 2008 13:40:00 +0000</pubDate>
		<dc:creator>Sonjay</dc:creator>
				<category><![CDATA[eBay & ePN]]></category>
		<category><![CDATA[ePN]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.viewfromtheswamp.com/2008/04/10/reporting-tool-for-ebay-epn-affiliate-program-free-download</guid>
		<description><![CDATA[This is a script that you can download for free and run on your own hosting server to see what items you&#8217;re selling through your eBay affiliate program. If your server is running php5, you can also see the item name and a thumbnail image of it, along with the number of bids, buyer, seller, [...]]]></description>
			<content:encoded><![CDATA[<p>This is a script that you can download for free and run on your own hosting server to see what items you&#8217;re selling through your eBay affiliate program. If your server is running php5, you can also see the item name and a thumbnail image of it, along with the number of bids, buyer, seller, and other information.</p>
<p><a href="http://www.tropicalwebworks.com/epn.html">read more</a> | <a href="http://digg.com/software/Reporting_Tool_for_eBay_ePN_Affiliate_Program_FreeDownload">digg story</a></p>
<div style="text-align: center;">Check out a screenshot: (click to enlarge)<br /><a href="http://www.tropicalwebworks.com/images/epn/ReportDemo.jpg" target="_blank"><img src="http://www.tropicalwebworks.com/images/epn/ReportDemo-t.jpg" height="93" width="500" /></a></div>
<div style="text-align: center;"><a href="http://tropicalww.nichestore.hop.clickbank.net"><img src="http://www.buildanichestore.com/affiliate/images/468x60/ebay-sellers.gif" width="468" height="60" border="0"/></a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.viewfromtheswamp.com/2008/04/10/reporting-tool-for-ebay-epn-affiliate-program-free-download/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>eBay on CJ to ePN</title>
		<link>http://www.viewfromtheswamp.com/2008/04/09/ebay-on-cj-to-epn</link>
		<comments>http://www.viewfromtheswamp.com/2008/04/09/ebay-on-cj-to-epn#comments</comments>
		<pubDate>Wed, 09 Apr 2008 23:44:00 +0000</pubDate>
		<dc:creator>Sonjay</dc:creator>
				<category><![CDATA[eBay & ePN]]></category>
		<category><![CDATA[Affiliate Marketing]]></category>
		<category><![CDATA[Commission Junction]]></category>
		<category><![CDATA[ePN]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.viewfromtheswamp.com/2008/04/09/ebay-on-cj-to-epn</guid>
		<description><![CDATA[Wow, have I been busy this past week, getting all my eBay affiliate sites converted over to use the ePN (eBay Partner Network) affiliate program.
I&#8217;ll still be using Commission Junction for some other affiliate programs I use, but eBay has gone in-house, and of course I&#8217;ve gone with &#8216;em.
I wrote a little php script to [...]]]></description>
			<content:encoded><![CDATA[<p>Wow, have I been busy this past week, getting all my eBay affiliate sites converted over to use the ePN (eBay Partner Network) affiliate program.</p>
<p>I&#8217;ll still be using Commission Junction for some other affiliate programs I use, but eBay has gone in-house, and of course I&#8217;ve gone with &#8216;em.</p>
<p>I wrote a little php script to read eBay&#8217;s &#8220;transaction download&#8221; file and give me clickable links to the eBay items sold. I&#8217;m giving that script away for free (at least for now). You can <a href="http://www.tropicalwebworks.com/epn.html">download my ePN Report Tracker</a> for free and run it on your own server &#8212; no need to worry about giving up your transaction report data to some anonymous stranger on the internet.</p>
<p>If you like my little script, please say &#8220;thank you&#8221; by giving me a link. <img src='http://www.viewfromtheswamp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.viewfromtheswamp.com/2008/04/09/ebay-on-cj-to-epn/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Customizing BANS</title>
		<link>http://www.viewfromtheswamp.com/2008/03/29/customizing-bans</link>
		<comments>http://www.viewfromtheswamp.com/2008/03/29/customizing-bans#comments</comments>
		<pubDate>Sat, 29 Mar 2008 12:20:00 +0000</pubDate>
		<dc:creator>Sonjay</dc:creator>
				<category><![CDATA[Affiliate Marketing]]></category>
		<category><![CDATA[eBay & ePN]]></category>
		<category><![CDATA[BANS]]></category>
		<category><![CDATA[ePN]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.viewfromtheswamp.com/2008/03/29/customizing-bans</guid>
		<description><![CDATA[I&#8217;ve been using the BANS software (Build a Niche Store) for the past couple of months to quickly and easily create eBay sites that are automatically populated with the categories, sub-categories, and product listings from eBay. I had been wanting to diversify my income stream, which was coming primarily from AdSense. BANS is only $97, [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been using the BANS software (<a href="http://tropicalww.nichestore.hop.clickbank.net/">Build a Niche Store</a>) for the past couple of months to quickly and easily create eBay sites that are automatically populated with the categories, sub-categories, and product listings from eBay. I had been wanting to diversify my income stream, which was coming primarily from AdSense. BANS is only $97, and the license is for use on unlimited sites. Best of all, you get the full source code, so it&#8217;s possible to modify the script as much as I want.</p>
<p>I figured what the heck, I&#8217;ll try it out. I had used Commission Junction for my affiliate marketing attempts, but had never had much success. It seemed that no matter what approach I used, it just didn&#8217;t result in a lot of sales. I tried targeted product ads on pages that talked about that specific product. I tried banner ads. I tried product listings from CJ&#8217;s datafeed. I tried it with photos of the product, with text links within the copy, with and without listing the price. I only got the occasional commission, and AdSense continued to dominate my passive income streams.</p>
<p>Almost immediately upon launching my first BANS site, I started getting commissions. My commission income is now at about one-third of my AdSense income, but it&#8217;s growing, and I expect that it may well exceed my AdSense income within the next few months.</p>
<p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://tropicalww.nichestore.hop.clickbank.net/"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px;" src="http://www.tropicalwebworks.com/images/misc/CJgraphic.gif" alt="" border="0" /></a>The above graph shows my CJ earnings trend. My first affiliate commission was last May. Earnings stayed pretty moribund throughout 2007. It was in mid-December of 2007 that I bought BANS. It was in January that I started building BANS sites in earnest. You can see the progress I&#8217;ve made with affiliate commissions since starting to work with <a href="http://tropicalww.nichestore.hop.clickbank.net/">BANS</a>.</p>
<p>I love that the script comes as full php source code &#8212; I&#8217;ve spent a lot of time customizing and modifying my BANS script so that it looks and behaves more the way I want it to. Some of the modifications I&#8217;ve done include:</p>
<p><span style="font-weight: bold;">Code Output/CSS/HTML</span></p>
<p>I edited the core files to remove the stupid non-breaking spaces, hard-coded table widths and table cell widths, and various other presentational code that was hard-coded into the script files.</p>
<p>The navigation is automatically populated with eBay&#8217;s categories and subcategories, and the navigation elements are indented by one, two, three or more non-breaking spaces. I removed those and added specific classes to each level of indent, along with specific ids for each level when the link is the current page. This allows me to target each category level with my css &#8212; I generally make the top-level categories bold-face and in fairly large type, then the sub-categories indented by a few pixels, and non-bold face but still in large type, then the sub-sub-categories indented by more pixels, non-bold-face and small type, and so on.</p>
<p>Also, by removing the hard-coded table and table cell widths, and adding specific css classes to each table cell, I can target those easily with my css as well. I&#8217;ve done this with the product listings, the search form, the site navigation, the &#8220;view more on ebay,&#8221; the pagination &#8212; pretty much all the code that&#8217;s output by the script. This gives me much greater flexibility in targeting these page elements with my css, which is very important to me, as I don&#8217;t use any of the boring default templates that come with a BANS purchase.</p>
<p><span style="font-weight: bold;">Call To Action</span></p>
<p>I edited the core source files to add a line of text below the item name, which reads either &#8220;Buy now,&#8221; &#8220;Bid on this item now,&#8221; or &#8220;Buy or bid now,&#8221; depending on whether the item is BIN only, auction only, or both. That line of text is a clickable link that takes the user to the product on eBay, just like the item name. This is the classic marketer&#8217;s &#8220;call to action.&#8221; You must tell the visitor what you want them to do. I&#8217;ve seen my click-through rate to eBay go way up since implementing this little hack.</p>
<p>I also edited the source files to make the Buy It Now button a clickable link. It struck me, whenever I&#8217;m looking at one of my own BANS sites, that I expect to be able to click that Buy It Now button, so probably other people do too. Let &#8216;em click it! Get that cookie planted!</p>
<p><span style="font-weight: bold;">Search Form</span></p>
<p>I edited the source files to automatically populate the search box with the user&#8217;s search query after they conduct a search. If someone searches for, say, &#8220;<a href="http://www.masonicmemorabilia.org/search/masonic+rings">Masonic rings</a>&#8221; they might want to refine their query to search for &#8220;<a href="http://www.masonicmemorabilia.org/search/masonic+gold+rings">Masonic gold rings</a>.&#8221; I say, make it easy for them. Along with their search results, I give them a search box that contains their already-searched-for term so that they can easily refine that search.</p>
<p><span style="font-weight: bold;">View More Items on eBay</span></p>
<p>There&#8217;s a line automatically displayed at the bottom of each listing page that says &#8220;View more items on eBay.&#8221; This line is a link that takes you to the appropriate category on eBay, with your custom query already applied. This is a nice touch. I edited that line so that instead of the default &#8220;view more items on eBay&#8221; text, it reads &#8220;Visit eBay to see more [product name].&#8221; For example, on my Knife site, on the page for <a href="http://www.bladesonline.net/kitchen-cutlery/santoku-knives">Santoku knives</a>, below the listing of Santoku knives it reads &#8220;Visit eBay to see more Santoku Knives.&#8221;</p>
<p><span style="font-weight: bold;">Fixing Stupid Listing Formatting</span></p>
<p>I noticed that a lot of eBay sellers write item titles like this:</p>
<p>Product&#8212;feature&#8212;feature&#8212;feature&#8212;feature&#8212;feature</p>
<p>or this:</p>
<p>Product~feature~feature~feature~feature~feature~feature</p>
<p>This approach forces the product name to not wrap, which forces the listing to take up way too much space horizontally. I design my templates so that this doesn&#8217;t kill my page layout, but it does force a page width that&#8217;s way too wide for users on smaller monitors.</p>
<p>I used php&#8217;s simple string replacement function to replace instanced of &#8212; or ~ with space &#8211; space or space ~ space. This allows the product name to wrap appropriately.</p>
<p><span style="font-weight: bold;">Fixing BANS Quirks</span></p>
<p>I also added php&#8217;s mysql_real_escape_string in appropriate spots in the source code to fix a few bugs that shouldn&#8217;t exist. It&#8217;s impossible, for example, with the default BANS script, to use apostrophes in the page content, or to use quotation marks around a custom search query, or to use apostrophes in the link name for a category page.</p>
<p>The BANS programmers did such a bang-up job with this script, I&#8217;m astonished that they didn&#8217;t use the escape string everywhere that apostrophes and quotation marks might need to be inserted into the database. But they didn&#8217;t. Fortunately, with source code in hand, I&#8217;m able to fix that myself.<br /><span style="font-weight: bold;"><br />Custom Templates</span></p>
<p>I use my own template designs &#8212; none of that default stuff for me.  I generally rotate among 4 or 5 different standard templates, which I&#8217;ve designed specifically to make it easy for me to place a product-related photo in the header. My templates use different color schemes, and I generally just choose whatever color scheme seems most appropriate for the particular niche I&#8217;m targeting.</p>
<p>I use a detailed stylesheet to style the navigation links, item listings, and other items just as I want them to appear. I generally remove the PayPal logo from the product listings, place the search box at the bottom of the page instead of the top, and repeat the navigation in the footer. Since I applied special css classes to my navigation links, I can target the main categories, sub-categories, and sub-sub-categories differently in my footer than in my header. I&#8217;ve been experimenting with showing only the main categories in the footer, by using display:none for the sub-categories in my css for the footer nav links.</p>
<p><span style="font-weight: bold;">Easy Privacy Policy</span></p>
<p>With the requirement of a privacy policy for all sites that use CJ and AdSense, I made that easy, too. I wrote a generic privacy policy, which lives on one of my websites, and I have a very basic, very easy page on each site that simply pulls in that page as a php include. It&#8217;s linked to from my footer. It exists as an actual page, so it automatically gets included in each site when I upload my files &#8212; I don&#8217;t have to mess around in the BANS admin area creating a new content page every time. It&#8217;s just automatically there. And by including the actual policy, if I ever need to rewrite the policy, I can re-write it once and have it updated on every single site. I love timesaving techniques.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.viewfromtheswamp.com/2008/03/29/customizing-bans/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
