As an Amazon Associate I earn money from qualifying purchases.

Sunday, May 12, 2013

Google AdSense: All Hail Our Digital Overlords

Welcome to the new, advertisement free blogs of yours truly. Apparently, I have violated Google's AdSense policy, and as such, my AdSense account has been disabled. The specific reason(s) for my account being disabled are not known, because such things are secret. Basically, "we could tell you but then we'd have to kill you." Seriously -- it's almost that bad! Check out the information:
"Because we have a need to protect our proprietary detection system, we're unable to provide our publishers with any information about their account activity, including any web pages, users, or third-party services that might have been involved."
So you don't know why your account was deleted, other than that "something" happened that they deemed in violation of their policy. I have a guess as to what may have happened to me (people on my local IP clicking ads, including perhaps young children -- also potentially frequent refreshing of web pages from my home IP), but what's bothersome is this: if Google, at their sole discretion, deems any clicks or page hits to be invalid, they already remove those clicks and/or hits from your earnings. You don't get paid, you don't get warned, and they still shut down your AdSense account. How does anyone make money (other than Google, naturally) from AdSense!? (Other possibilities: me linking BTC and LTC at the bottom of each post may have been a violation, or perhaps any Amazon Affiliate links -- either could potentially be "cause for concern".)

What bothers me most is the timing of this. I've had an AdSense account for about seven months. During that time, I have not had any violations that I'm aware of (not that they'd tell me, I suppose), and I have basically been using my blog sites in the same way as far as I can tell. Right now, I have "potential earnings" but have not received any actual money as I have not met the minimum payment threshold of $100. Based on my traffic, I should have hit that $100 mark this month, but wouldn't you know it: I violated their policies and now any and all AdSense revenue is gone. Seems like a great way to get out of paying a blogger $100 while still keeping all of the revenue from the actual advertisers!

Nearly 50,000 page views, fought and scrapped for, have all been for naught, at least as far as advertising income goes. Obviously, I'm not doing this blogging for the direct advertising money (I'd be making something like $0.10 per hour I think, if I were to get that $100 AdSense payment). However, the principle of the matter is greatly frustrating. Lately I've been averaging around $20-$30 in revenue per month, which if nothing else is a nice little surprise when you actually get paid. ("Hey honey, let's go out to eat -- my treat!") Barring people actually donating via BTC/LTC, about all that I've gotten out of these blogs is a few nice comments and maybe $5 or so in Amazon Affiliate links. Woohoo! I'm rich! (LTC mining, incidentally, even at the current increased difficulty continues to generate more than $20 in income per day from my computers -- 30X more profitable than AdSense, and thankfully it can't be arbitrarily seized by Google.)

I can also look at my blog traffic (where I don't even include my own visits, as I have the potential to open the site on upwards of a dozen different PCs each day), and from that I can see that at least 75% of all traffic is 100% guaranteed to not be from me (i.e. the traffic comes from the wrong browser -- I never use Internet Explorer, Safari, Android, or iOS, and rarely use Firefox). Of course, the Blogger statistics are also a fair estimate, showing around 200-500 Pageviews every day (and at best only 2% or so would possibly come from me). And any and all YouTube traffic would have been valid -- I don't have time to visit YouTube and watch a video so that I can click on an advertisement, so I only go there when I'm uploading a new video. So most likely, of the blog traffic that actually earned revenue, all of it was legit (since the 2% that wasn't legit was already removed by Google -- I assume if a page hit or click came from my home IP, it didn't count, right?) But, their system has detected some violation, I don't know what exactly, and so I'm out of luck and Google keeps the $90 or whatever that I had almost earned.

Naturally, I have appealed the decision, and I even admit some clicks and refreshes came from my home IP address. (I view my own blogs, duh. So if there's a typo or comment, I'm going to reload a page several times, plus hitting the URL so that I can post it to Facebook. And on occasion, there's an advertisement that is either so bad or in rare instances potentially useful that I've clicked it.) We'll see how the appeal goes, and I'll be sure to report the result here, but I suspect this blog entry alone will be enough to ensure I don't get reinstated. I do love this part of the appeal FAQ: "Once we've reached a decision on your appeal, further appeals may not be considered, and you might not receive any further communication from us." So, they will come to a decision, it will be final, and most likely you'll never hear more from Google again. Nice, guys. Way to take your ball and go home.

Over the many years that I've been in the tech industry, I've heard people express concern about the success of Google -- and their size, data mining, etc. Most of the time someone says, "I wouldn't trust my data to Google..." you'll hear someone else jump to their defense. Well, actions like this in regards to AdSense are part of the reason people don't trust Google. They can do whatever they want, and it's your privilege to serve them. Blogger/Blogspot was one of their many acquisitions, along with DoubleClick and many other companies. People used to be afraid of the size of Microsoft or Intel; these days, I'd say Google and Apple are far scarier propositions!

On the bright side, I won't worry about trying to generate any other revenue through advertising. I suppose there's a chance my AdSense appeal will be heard and those will start showing up again, but it doesn't seem likely. Big Brother was watching, and I got the one strike you're out ruling. Don't bother to try signing up again, as they'll notice that at some point (probably right before you get your first $100 check) -- and if you're related to me, that might be enough for Google to question your account as well!

As for me, I continue to write on the Internet, here and elsewhere. This sort of stuff is nothing new, and as one of the largest and most successful businesses around, Google knows how it's done. One thing is for certain: there is no stopping them; Google will soon buy out any remaining competition. And I for one welcome our new digital overlords. I’d like to remind them that as a trusted blogger personality, I can be helpful in rounding up others to toil in their underground spambot search optimization networks.

BTC: 1JSrAuxPUhD2rS6yYLiPPT6X8fvz7c7k1W
LTC: LXpEZcNJtikd263z7Ha3vrdYDcLU7hiKWv

Friday, May 10, 2013

Sapphire: Trying to Deny My $20 Mail-In Rebate

Sapphire, for shame. Your rebate process is a joke, with documentation that doesn't make it clear what you're after. What's more, when someone provides the correct UPC, your rebate department rejects it thanks to your incompetence. This all started with me ordering a bunch of GPUs for Litecoin mining. Sapphire was offering $20 off via rebate, and since their cards were already the cheapest it was a free $20 per GPU discount, right? Wrong. But I'm getting ahead of myself. Let's start with the rebate email. This is what I received from their rebate company:

"Your Rebate was not approved for the following reason(s)
- Original UPC Barcode Label (#840777061794) (Not the shipping label barcode) is missing"

Okay, here's an image from a second card that I ordered, since I'm sure no one can get a rebate from it now. Let's just send this little box to the scrap heap (or recycle bin), shall we?
What's the problem? Well, it appears Sapphire is reusing boxes, so the original UPC on the box is hidden under the new UPC sticker (which they call the "shipping label barcode" in their email). So the UPC I cut out (from a different box, but it has a similar number) says "HD7950 3G DDR5 PCIE" but the rebate people want the code underneath that sticker where you can see the label, "HD7950 3D GDDR5 PCI-E HDMI/DVI-E/DUAL MINI DP WITH BOOST".

The good news is that I called the support number for the rebate, and when they tried to tell me I didn't have a Boost card I argued with them and said, "It most certainly does have Boost -- it's right there on my Newegg order, and the same Newegg page links to the Sapphire rebate form." He checked out the order apparently and then agreed I had the right card and made whatever "changes" were necessary to process my rebate. And it only took 35 days since the time I placed my order. How's that for fast? (/sarcasm)

I guess the real question is: who's to blame on this one? Newegg.com, perhaps -- did they reuse a box somehow, or slap on a new UPC code? Maybe Sapphire is the one slapping new UPC codes on boxes, which would make it rather difficult to actually get a rebate. My feeling is that this is more than just an accidental slip-up, and in fact when I called the support line I could hear a conversation going on in the background:

Support Guy: "Is this that same guy again?"
Support Gal: "No, this is someone different."
Support Guy: "And he's got the exact same problem?"
Support Gal: "It would appear so."
Support Guy: "Okay, let me talk to him...."

There's more to the story of course. I purchased more than one of these cards, on the assumption that I could get the $20 rebate on each card. Oops: it's only one rebate per household! So not only did they try to rip me off for $20, they did so after I purchased five of their cards (actually, eight counting those from a friend -- the Dual-X cards are definitely worth the extra $25 in my opinion). My advice, then, is something I've said many times to people:

Never buy a product because of the mail-in rebate. If you're not willing to pay the asking price, then don't buy it. If you want the product anyway and the rebate is simply a nice bonus, go ahead -- just don't have your heart set on getting that money, because there's a good chance the "paperwork got lost", or "you have the wrong UPC code", or even "sorry, the company the processed our rebates went out of business; we're not the ones that offered the rebate, that was a third party." I've heard all of the above over the years, and others besides. In some instances, there was no communication and the rebate simply never came; any attempts to find someone to call or write about the problem met with no success. The whole mail-in rebate thing feels like a red herring to me; I think I've received rebates about 50% of the time, and it's always about two or three months after the initial purchase.

BTC: 1JSrAuxPUhD2rS6yYLiPPT6X8fvz7c7k1W
LTC: LXpEZcNJtikd263z7Ha3vrdYDcLU7hiKWv

Sunday, May 5, 2013

Detailed Settings for ~600kHash/sec Litecoin with Radeon 7950

So I have a few Litecoin mining rigs running, and the latest has three Radeon HD 7950 cards in it. I detailed most of the hardware in my previous post, but this time I wanted to provide some clear steps and settings for mining that get close to 600kHash/sec on a single 7950. If you look at a list of scores, for example this list, you might think hitting 600kHash is trivial. Well, I suppose it can be, but don't expect it to happen by just running with the default settings. Here's what I ended up doing to get there.

First, my latest HD 7950 cards are from Sapphire, this time the dual-fan model with a stock clock of 925MHz on the cores. (As far as I can tell, that's the stock clock and not the Boost Clock.) They're available for $300 each, and they come with the Never Settle Reloaded bundle of Bioshock Infinite, Crysis 3, and Far Cry: Blood Dragon -- you can typically get close to $50 for the bundle via eBay. As I already have three other Radeon 7950 cards, you'd think I have a decent handle on settings by now, but I'm still tweaking and learning.

My main PC has a single 7950 in it, and I game occasionally on this system. I also use it to surf the web, email, write, etc. If you're not using a PC that's mining Litecoin, you can go for Intensity 20, but for a PC that you're actually trying to use for other things you'll never be able to use it properly with Intensity more than 13. So, I have two folders, with two different CGminer configuration files: one for when I'm not using the PC, and the other for when I'm working. The Intensity 13 version gets about 10-15% less hashing performance, but there's a catch: I'm using practically all of the GPU's 3GB of RAM! With a single thread, I get around 330kHash, but with two threads I'm at 510kHash. Here are the two cgminer.conf files I'm running on my "daily use" PC:

cgminer.conf Usable:
{
"pools" : [
{
"url" : "coinotron.com:3334",
"user" : "[USER].[WORKER]",
"pass" : "[PASS]"
},
{
"url" : "newlc.ozco.in:9332",
"user" : "[USER].[WORKER]",
"pass" : "[PASS]"
}
],

"intensity" : "13",
"vectors" : "1",
"worksize" : "256",
"lookup-gap" : "2",
"thread-concurrency" : "17920",
"shaders" : "1792",

"gpu-engine" : "900-1025",
"gpu-fan" : "40-100",
"gpu-memclock" : "1550",
"gpu-powertune" : "20",
"gpu-vddc" : "1.100",
"temp-cutoff" : "99",
"temp-overheat" : "95",
"temp-target" : "80",

"api-port" : "4028",
"expiry" : "120",
"failover-only" : true,
"gpu-threads" : "2",

"log" : "5",
"queue" : "1",
"scan-time" : "60",
"temp-hysteresis" : "3",

"scrypt" : true,
"kernel" : "scrypt",
"kernel-path" : "/usr/local/bin"
}

cgminer.conf High Hashing:
{
"pools" : [
{
"url" : "coinotron.com:3334",
"user" : "[USER].[WORKER]",
"pass" : "[PASS]"
},
{
"url" : "newlc.ozco.in:9332",
"user" : "[USER].[WORKER]",
"pass" : "[PASS]"
}
],

"intensity" : "20",
"vectors" : "1",
"worksize" : "256",
"lookup-gap" : "2",
"thread-concurrency" : "21712",
"shaders" : "1792",

"gpu-engine" : "900-1025",
"gpu-fan" : "40-100",
"gpu-memclock" : "1550",
"gpu-powertune" : "20",
"gpu-vddc" : "1.100",
"temp-cutoff" : "99",
"temp-overheat" : "95",
"temp-target" : "80",

"api-port" : "4028",
"expiry" : "120",
"failover-only" : true,
"gpu-threads" : "1",

"log" : "5",
"queue" : "1",
"scan-time" : "60",
"temp-hysteresis" : "3",

"scrypt" : true,
"kernel" : "scrypt",
"kernel-path" : "/usr/local/bin"
}
That might seem like a pretty simple configuration for some, but let me run through some of the specifics. First, the "Usable" configuration has thread-concurrency at 17920. I arrived at that number by trying different values until I could get cgminer to start; I think I'm hitting maximum RAM use perhaps, though maybe I could increase it slightly. Either way, it's not running much faster I don't think so I leave it alone. The second configuration file is basically what you often see recommended for Radeon 7950, but I usually see talk of 650+ kHash, which is only going to happen with some serious overclocking and tuning!

There's more to starting CGminer going than the above, however. First, nearly all of my 7950 cards have default voltages that are far too high to run reliably without water cooling, at least in my ~75F environment. The dual-fan Sapphire cards for instance all come set to 1.250V, but under mining load even at lower intensities I can hit 95C and higher on some of the cards. What's more, three of the cards at 1.250V running slightly overclocked settings consume 1000W and more from the outlet, with an 80 Plus Platinum PSU even. Wow! The trick for me has been undervolting and overclocking, which isn't what you'd immediately expect.

MSI Afterburner is a great little utility for overclocking and undervolting, but it doesn't work with all cards -- the dual-fan Sapphire cards for instance don't allow voltage adjustments with it. Sapphire has their own TRIXX utility that works with their cards, however, so that's what I used. Here are my standard settings for reasonably reliable operation:
Vcore: 1.100V
GPU Clock: 1025MHz
RAM Clock: 1550MHz (6200MHz effective)
PowerTune: +10 (or +20 -- this doesn't seem to matter much)
I've managed to use those settings successfully on six different Radeon HD 7950 cards now, so I'm pretty confident they'll work for most users (at least if you're in a decent climate -- if the room is above 85F, you'll probably have issues). Okay, that gives us the overclock/undervolt settings as well as CGminer settings, so we're done, right? Not quite!

The final step is launching CGminer properly. For that, I created a batch file (a sequence of commands for Windows to run). Since I have CGminer starting up with Windows, I had to play around a bit. MSI Afterburner (or Sapphire TRIXX) is set to load automatically and restore my clocks, but depending on the PC this can take 10-30 seconds before it's complete (more on a slower CPU/HDD). If CGminer launches before the clocks and voltage are set properly, there's a very good chance your PC will crash and require a hard reboot! The other lines are to ensure the thread-concurrency options work properly, and then to tell CGminer to automatically tune fan speed. Here's the batch file (paste this into "LaunchCGminer.bat"):
@echo off
set GPU_MAX_ALLOC_PERCENT=100
setx GPU_MAX_ALLOC_PERCENT 100
@ping 1.1.1.1 -n 1 -w 30000>nul
cgminer.exe --auto-fan --failover-only
Create a shortcut to that batch file and place it in C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup and you should be set. But there are a few final items to mention! I have two different CGminer (currently 3.1.0) folders, one for high intensity and one for low intensity. There appears to be a bug with AMD's drivers or CGminer or something, with the result being that if I run CGminer, quit, run it again, quit, etc. then maybe on the third or fourth cycle I usually get a system crash. Ugh. So rebooting between runs is often required. Also, you'll want to close out of most other programs (especially your web browser!) before starting CGminer, as if it can't get enough VRAM it won't run properly. Oddly, after it's started and working well, you can start Firefox, Chrome, etc. without issue. Also also, if you run Photoshop, I suggest just exiting CGminer until you're done -- it's not worth the potential hassle, trust me!

I think that's it for now. Happy Litecoin mining! My latest build is named "Frankenmine" because it's sort of in a disassembled mess right now while I wait for a few more pieces to arrive (specifically the PCIe slot extenders). It's definitely not safe for kids to be around at this point in time! If there's interest, I can provide the cgminer.conf files for this as well, and I have some other stories to relate involving the joys of Linux. But for now, this is what I'm using to get ~1800kHash/sec:
As always, if you find this stuff useful, please feel free to kick a few digital pennies my way!

BTC: 1JSrAuxPUhD2rS6yYLiPPT6X8fvz7c7k1W
LTC: LXpEZcNJtikd263z7Ha3vrdYDcLU7hiKWv

Or if donating directly is too much, go play at the LTC4You faucet and typically win 0.04 LTC every hour. That's a free $1.20 for clicking a button and typing a captcha. :-)

Update: Need help? See my Toubeshooting Guide.