Hi, we're Project Wonderful. We think online advertising doesn't have to be terrible. We think it can be done better.
[ Twitter | RSS ]
We want advertising to be as simple and as easy as possible, but there’s going to be a learning curve no matter what you do! To try to keep that curve flat (think more “tiny hill at the park” than “Mount Everest”) we’ve produced a “Getting started advertising” guide that walks you through the basics of advertising on Project Wonderful. Give it a look - even if you’re a seasoned pro, you might learn about some features you didn’t know were there!
Also, it features a robot.
When you take your funds out of Project Wonderful, we put that request in a queue that gets processed in one business day.
In the past, we’d just put in the request and then process it. But if you spent your funds during that waiting time, this could mean your withdrawal would then not go through because there were no longer enough funds in your account!
Today we’ve changed it so that when you request a withdrawal, those funds are put on hold until the withdrawal is processed. So if you have $100 and request a withdrawal for $90, your available balance will drop to $10 right away. If you decide you’d rather spend those funds than withdraw them, you can cancel your withdrawal request, and your balance will go back to $100 again.
It’s a pretty simple change, but it should help out our members who sometimes had their withdrawal requests fail when they became the high bidder again.
As always, thanks for being a Project Wonderful member!
The new code we mentioned in the last post is now live. We did the rollover today at noon, so today’s stats will be a half-and-half mixture of the two tracking mechanisms, but from tomorrow onward it’s all 1:1 sampling. Nice! As usual, drop us a line at email@example.com if you’ve got any questions. And thanks for being Project Wonderful members!
Tracking the traffic an ad box gets seems like a straight-forward problem, right? Mark whenever you get a display, and call it a day. If you see the same IP address (roughly equivalent to the same person) then you know they’ve hit the site twice.
Turns out it’s not that easy, and that’s one of the reasons you’re never likely to get matching data from two different hit-tracking applications.
Next, WHAT are you tracking? Do you care about people who load the site entirely, or who just access it before clicking away? Our answer is simple: we care about who sees the ads. So if you put an ad box at the top of your page, and one at the bottom, those two ad boxes will likely record different hits, because not everyone will always wait for the full page to load. You’ll see more traffic on your top ad box, and that’s great, because that ad box is actually seeing more traffic. More people are looking at it!
Finally, there’s the matter of volume. If you’re recording every hit on a page, that means at the minimum recording what page it was on and which IP accessed it - for every single hit across the entire network. And you need to be able to process, analyze, and summarize this data in real time. Imagine all the traffic from every single site on your network being funneled into your servers. You need to be keep up!
In the past, Project Wonderful’s hit tracking scaled up as sites did: if you got 100 hits a day, we tracked every one of those, but if you got 50,000 then we would randomly sample the traffic stream. It’s sort of like how surveys work: you don’t call up every single person in the country to ask them what they think about Doritos, you call up a representative sample and extrapolate from there. But the problem with random sampling is that there’s that pesky “accurate to within 1 percentage point, 19 times out of 20” phrase you’ve often heard afterwards. When you’re randomly sampling, you’re never 100% sure you’re capturing everything, because you are by definition missing some things. It’s really unlikely, but something could slip through!
Because of this, we’ve been investing in infrastructure behind-the-scenes to move away from random sampling. Very soon, Project Wonderful will be turning on our new hit tracking code. Every single page view is now logged, processed, and analyzed in real time, and random sampling is a thing of the past. It’s an impressive feat (one that’s normally only possible when you have Google-level infrastructure) but it was something we wanted and it lets us support some new features, so it’s been something we’ve been working towards for months. This code has actually been running in parallel with our current hit code a while, which has let us debug it and ensure everything’s working as it should, but very soon we’ll be switching over and displaying this new data exclusively.
We’ll make a new post when it’s online, so you’ll know. Smaller sites will notice no difference, as random sampling doesn’t affect them. Larger publishers won’t notice much of a difference in their numbers: page views will be almost identical, but unique visitors will likely be smaller (now that we’re tracking every single display, we can give more accurate numbers here).
Stay tuned, and we can’t wait to share the exciting new features we’ve got coming down the pipe!
UPDATE: Connectivity has been restored. While we still recommend you use our asynchronous code - it’ll prevent any future downtime from having an impact on your site - there’s a much easier way of getting it now. Just log in, go to “My ad boxes” and click on “code”. We’ll leave this up for reference, but didn’t want to force you with manually editing HTML if you don’t have to. :)
We’ve offered asynchronous code for a long time now: it’s an improved version of our basic code that means than when our site goes down, your ads still load quickly. Even though our site is currently down, you can still convert your older ad box code to the asynchronous version that won’t hold up your site.
First, look at the PW code already in your page source. It may have these lines:
d.projectwonderful_adbox_id = “#####”;
d.projectwonderful_adbox_type = “#”;
Or it may have this lines:
s += “src = http://www.projectwonderful.com/gen.php”;
s += “?id=#####&type=#”;
In either case, make note of the numbers marked by ##### and #.
* ##### is a three-to-five digit number, which is your ad box’s ID
* # is a number between 1 and 7, which indicates the ad box type (square, leaderboard, and so on)
There are two blocks of code to replace your old one with. The first is the same for every ad box, and begins the process of contacting our server for the winning bids:
<!— Project Wonderful Ad Box Loader —>
var d=document;var s=d.createElement(‘script’);
<!— End Project Wonderful Ad Box Loader —>
The second block should be pasted immediately below the first, and will display the ad box in your page once our server has sent a response. (That’s the part that will prevent your whole page from hanging if our servers go down.)
<!— Project Wonderful Ad Box Code —>
<div style=”text-align:center;”><div style=”display:inline-block;” id=”pw_adbox_#####_#_0”></div></div>
<!— End Project Wonderful Ad Box Code —>
Note, the ##### and # in that second block. Those are the spots where you’ll fill in the numbers you retrieved from your old code.
Generally you can simply grab the code from the “Publishing -> My ad boxes -> Code” page. Even though the site is down, we’re still available to help you at firstname.lastname@example.org if you run into any problems. Thanks for your patience - we’re working on getting connectivity restored!
Many of Project Wonderful’s servers are located in NYC, right there on Manhattan island. Before hurricane Sandy hit, we, along with our on-site hosts, took standard emergency preparedness procedures: making sure generators were on-site and fueled, making sure we had emergency contacts in place with our suppliers, and so on.
It’s helped, but we’re not out of the storm yet.
Before Sandy hit, we had enough diesel on site to ensure they could run 65 hours without needing more fuel. At around 8pm last night power was knocked out to one of our data centers and we switched over to diesel without interruption. Unfortunately, this data center then experienced severe flooding a few hours later, which has submerged and destroyed the pumps used to send fuel up to the generators, held above flood level. Here’s the notice we got:
The flooding has submerged and destroyed the site’s diesel pumps and is preventing fuel from being pumped to the generators on the mezzanine level. The available fuel reserves on the mezzanine level are estimated to support customer loads for approximately 5-7 hours. Once this fuel supply has been exhausted the generator will no longer be able to sustain operation and critical customer power loads will be lost.
The building itself is being evacuated and no remote hands support will be available to assist in any equipment shutdown. Life safety is our number one priority and we are making plans to completely exit the facility. No customer access to the building is possible at this time either. Due to the evacuation, Internap will not be able to provide any exact updates on when the fuel will be exhausted and critical customers loads lost, but as noted, we believe it will take place in approximately 5-7 hours from now.
So unless access can be restored, we may lose some servers in the next few hours. In addition, another one of our datacenters, while still running off of diesel, has had power interrupted twice overnight: this was responsible for the slowdowns and sometimes unresponsiveness that you may have seen from Project Wonderful between 3 and 6 this morning. The databases in that datacenter have been now restored to full functionality and should be fine going forward, but if there is another power interruption you may see similar slowdowns until the machines are brought back up to speed.
Currently, 7 of our 9 webservers are fully operational, and our database cluster is operating as expected. We have enough redundant servers that losing a few of them does not impact performance, and as long as we can keep those servers up, you should not notice any issues with your Project Wonderful account. If anything seems wrong, please let us know in our service email, and be sure to follow us on Twitter for up-to-the-minute status updates.
Thanks for your understanding!
UPDATE OCT 30 11:07 AM: No further issues have been encountered, however, the datacenter with the fuel tank underwater and fuel pump destroyed is on the edge of shutting down:
Our DC Ops personnel are actively engaged in sourcing fuel supplies from vendors in the local area. As of now we continue to run on the available fuel reserves on the mezzanine level could stop supporting customer load at anytime. Once this fuel supply has been exhausted the generator will no longer be able to sustain operation and critical customer power loads will be lost.
We’ve elected to keep things up as long as possible, and we may be able to keep running even if this data center goes dark by shifting load to other centers. However if we are unable to continue serving ads, then we will suspend charging until we can recover, so nobody will be forced to pay for service that is not being reliably provided.
Unlike most other advertising networks, we offer a more robust asynchronous code option. This causes our ads to load in parallel to your site. That way, if anything affects us, your sites don’t slow down at all. It’s now the standard code we provide, but some of our older members may still be using non-asynchronous code. You can update your code by logging in, going to “My ad boxes" and selecting "code".
UPDATE OCT 30 11:59 AM: Those generators have now failed, but load has been shifted to other datacenters. Project Wonderful remains up.
UPDATE OCT 31 6:00 AM: Two datacenters that provide fiber connectivity to the datacenter we’ve got our database machines in have lost power, which means we’re currently offline. We’re working hard to get things back up and will post as soon as service has been restored.
UPDATE OCT 31 1:00 PM: The servers are up, but we’re still working on getting a signal through to them. More information will be posted when we have it, and again we apologize for the downtime. If you find your site is loading slowly, we’ve put up a post on how to switch to the asynchronous code during this downtime that will remove any impact this service interruption has on your site.
UPDATE OCT 31 2:00 PM: Connectivity has been restored to the servers. Two servers are still offline, but we’ve build enough redundancy into the network that this isn’t a problem. We are back online!
UPDATE OCT 31 3:08 PM: One of our two currently-offline servers has been restored. These missing servers have had no negative impact to Project Wonderful, but they do add redundancy to the network. It’s nice to have them back :)
UPDATE OCT 31 3:23 PM: And now, all servers are back up and running! We’re back. We’re still running on diesel, but we’ve got enough fuel to last us. Hopefully there will be no more unexpected interruptions. Thank you for your patience and understanding so far.
UPDATE NOV 5 7:00 AM: All servers but one are off generator power and running on utility power again. We anticipate no further interruptions, but will post here when the final server has been taken off generator power. This may take several days.
UPDATE NOVEMBER 9 11:30 PM: All servers are now back on utility power. Hooray!