The Complete Guide to Selling Your Unwanted Crap for Money

By Alan Henry, LifehackerFebruary 04, 2013 at 11:00AM

The Complete Guide to Selling Your Unwanted Crap for Money We’ve shown you how to kick your clutter habit, but why trash all of those things you don’t need when you could make some money off of them? In this guide, we’ll walk you through how you can appraise your items, where to sell them to make the most cash, and how to avoid geting screwed in the process.

One of the reasons it’s so hard to declutter is because we look at an item that we don’t need and remember how much time or energy or cash it cost from us to obtain. Selling that stuff may not bring back the time or energy, but it can bring back some of the money—money you can put towards the things you really want, (or save for your future).

Of course, you could definitely donate your unwanted items to worthy charities that will accept them, and even get valuable tax deductions in the process while helping a good cause. But if you’re looking to make a little more money back, that’s what we’re going to focus on here.

Table of Contents

Choose What to Sell and Determine Its Value

The Complete Guide to Selling Your Unwanted Crap for Money In 2005, Kyle MacDonald, a canadian blogger, rose to internet stardom thanks to some savvy appraisal skills and amazing bartering techniques. He started with one red paperclip, and managed to barter item for item until he ended up with a two-story farmhouse. His story is an amazing read, but all Kyle was really able to do is identify people who valued his stuff more than he did, and who had something valuable to him. Photo by Katherine Johnson.

This is the nature of appraisal and bartering. We’re not going to suggest you barter all of the junk you want to get rid of, but we are going to talk about how you can look at the junk you think has no value at all and figure out how much it might be worth to someone who wants it. Here’s how:

  • Look up the item’s retail value, brand new. The first thing to do is find out how much it would cost you to replace an item you want to get rid of. While you’re searching, pay attention to how easy it is to obtain the item again. If you can’t find the same item, look for reasonable, similar replacements and note how much they cost.
  • Look up the item’s sale value, used. Now look around at sale sites like Amazon, Craigslist, and eBay to see how much people are selling the same item for. Make a note of how much they’re asking for, and what prices auctions close around. Also keep an eye on how many people are selling the item and what condition they’re selling the item in.
  • The Complete Guide to Selling Your Unwanted Crap for MoneyThen, determine your selling price. If you see the item widely available new but not available used, you may be able to sell your item easily as long as you price it well. In contrast, if you see the item is difficult to find new but widely available used, you may have a hard time selling unless you’re willing to undercut everyone or the condition of your item is better than most. The same is true if an item is easy to find both new and used. However, if your item is difficult to find both new and used but sale prices are high, you may have something unusually rare and can price accordingly. Assess the condition of the thing you want to sell, compared to the sale listings you’ve seen, and set your price. Don’t shoot for new retail unless you know your item is rare—your best bet is to use other used or sale prices are a barometer. Photo by Steve Snodgrass.

You can follow these steps for just about anything you want to sell, assuming you want to get the most possible money back for it. Remember, there are other factors to consider: if you’re selling to someone online, you have to account for shipping and insurance. If you’re selling locally, people may expect values because they’re picking something up or taking it right off your hands.

Similarly, if you plan to sell at a garage, yard, or community sale, the culture may play a role in how much you can get—not just the value of the item. We’ve discussed some of these specifics before, and we’ll offer item-specific tips later, but keep it in mind when you’re appraising the things you want to clear out of your home.

Finally, remember: if you can find someone to whom the item you want to get rid of is extremely valuable, moreso than it is to you, make sure to get how much they think it’s worth. That’s what made Kyle’s experiment a success.

Electronics, Books, Video Games, and Computer Equipment

The Complete Guide to Selling Your Unwanted Crap for Money We’re no strangers to selling electronics, gadgets, and even video games for the most possible cash. Check out those guides for more detailed suggestions, but here’s a crash course in your best options for consumer electronics:

  • Amazon Marketplace has, far and away, the best overall selling experience. If you have an Amazon account, you can sell your unwanted electronics and consumer goods, and the site even helps you set pricing for your items and lets you note the condition of your item in your listing. The biggest benefit of using Amazon Marketplace though is that you get to attach your item directly to the Amazon listing for the product, so anyone shopping for it will see your used item listing along with new ones. If it’s not available new, they’ll still see it under “new and used.” Just watch out for the cut that Amazon will take, which can be pretty steep. Photo by digitpedia.
  • eBay, despite all of its changes over the years that have made the site far more hostile to sellers, is still a popular destination if you’re looking to offload a ton of stuff. Price yourself close to or better than the competition and your item will be sure to sell. The only thing you have to watch out for is the fees that eBay takes from the sale of the item, and then you’ll likely have to deal with PayPal to process payment for the item. You’ll also need to carefully craft your listing to make sure it’s easily found, eye-catching, and better than the competition. It’s not difficult to do: all you need is a good photo, a well-written description, and some savvy timing. If your item is valuable, eBay is probably worth it. If you’re selling small, cheap stuff, skip it or sell it on eBay as parts, targeted at DIYers and hackers who’ll buy it and fix it up. You never know who’ll be interested in your old gadgets.

Depending on what it is you’re selling, you may be able to find specialty sites that are willing to make the process easier. We’ve mentioned a few for video games, and a few more for cell phones, but your best chance to make the most money is still with the big guys. You could also turn to Craigslist here since you can set your own price and no one takes a cut, but whether you’ll waste months waiting for decent offers is impossible to guess. Craigslist is great for some things (as we’ll see shortly,) but it’s a crapshoot with small electronics.

Books are a bit of a special case. We still think Amazon and eBay are great avenues to get the most money back, but if you’re selling textbooks, don’t forget sites like Chegg and Half.com. Check out our guide to selling textbooks for more tips there. If you’re looking for more places to sell your books, the five best places to buy cheap textbooks are a good starting point for sellers too.

Clothing and Apparel

The Complete Guide to Selling Your Unwanted Crap for Money Clothing can be a difficult sell. You have to hope that someone needs the size you have available and that someone is willing to pay what you’re willing to sell. That doesn’t mean you can’t get some decent cash for them, you just have to set up shop in the right conditions. Here are a few suggestions:

  • Etsy is well known and highly regarded as a great place to sell crafts and things you make yourself, but it’s also a great place to sell clothing you already have. The community there is already looking for items like apparel and unique clothes, so it’s a great place to put your own up for sale to see if you can get some good money for it. Photo by Maureen Didde.
  • Threadflip is a relatively new site that shows a lot of promise. The community is bustling, and while the site does have some restrictions on the kinds of clothes you can sell, it’s a great marketplace for your brand name and good-condition clothing.
  • Craigslist lets you sell to your community directly instead of the internet at large. In some cases, that can work to your advantage, since more people in your community may be surfing Craigslist for bargains on things like children’s clothes, but at the same time your audience will shrink. Again, your best bet here is to lot your items and sell them together.
  • Organize a community sale, yard sale, or sell at a local market. Sometimes the best way to get the most money back is to avoid selling your item online entirely. With apparel, sometimes people just need to see it in order to buy it, and an item sold is better than an item cluttering up your home because the listing has been up on Craigslist for three months. Get together with your neighbors and organize a community sale for your block or apartment building. If you have a local message board or neighborhood community page, sell your items there—odds are people will be more likely to buy clothing directly from a neighbor, childrens and baby clothes especially.
  • eBay is kind of a last resort here. If you can pimp your sale on your own, it might be worth it to draw attention to your clothing items. The trouble with eBay is that you depend on someone searching for your exact item or type of item to find yours and bid on it. Your best bet if you’re going to use eBay is to bundle your clothing into lots and sell them all together. This works really well with children’s and baby clothes.

There are tons of speciality and custom sites for selling clothes on the web, and they’re worth exploring (you can grab some suggestions from this Quora thread.) You can also consider listing your clothing items on speciality clothing forums, subreddits (like /r/malefashionadvice), or message boards, if the listing fits.

Keep in mind that most of them have small communities, are targeted at specific markets (women’s clothing, baby clothing, designer clothing, vintage clothing, etc), and thus have relatively small communities. Still, if you have a closet full of what those communities want, by all means sign up and sell.

Toys and Children’s Items

The Complete Guide to Selling Your Unwanted Crap for Money We mentioned children’s clothing, but toys and games also tend to sell fairly well, assuming we’re not getting into collectibles and rare toys. Remember, do your research—especially with toys—before just throwing them up online somewhere, or else you may be selling a rare collectible for five bucks in a lot of “old toys” on Craigslist. As long as the items you have to sell are in good condition and not collectibles, here are some places to get decent cash for them:

  • Amazon Marketplace is a great resource for selling toys and games, you might be surprised to know. Since they’re items with clear names and descriptions, you can sell them easily as long as they’re in decent condition and able to be boxed up and sent out. Action figures out of their packaging or a full playset that’s been put together already might be a tougher sell, but if you have some games still in their boxes, puzzles, or small toys easily packaged, it’s a great way to go. Again, just mind the selling fees. Photo by John Morgan.
  • eBay has a wide audience of people looking specifically for individual toys and games at decent prices. If you do your research, it’s also a great place to offload items that have become collectibles that you want to get rid of. Again, mind the fees from eBay and Paypal when you do this, and set your prices accordingly so you get the most bang for your buck.
  • Host a community yard or garage sale, or look for local consignment shops. Selling toys online can be particularly rough—almost as much as selling clothing. There aren’t too many sites dedicated just to buying and selling toys, but you may be able to organize a Family-to-Family sale in your community where parents can get together to swap and sell items they no longer need for their children (including clothing) for items they do need. Alternatively, local consignment shops that may be picky about clothing may be less so about toys and games. Hit up Yelp to find some near you that accept secondhand items and give them a call.

Expensive or rare collectibles are a bit out of scope for us here, but if you have something that’s especially valuable, you’ll hopefully find out when you do the research we suggested you do earlier. If that’s the case, you can always eBay or Craigslist it for its appropriate value, but your better bet may be to find a real appraiser who specializes in that type of item and seek their advice on keeping it in good condition or selling it appropriately.

Household Items and Small Appliances

The Complete Guide to Selling Your Unwanted Crap for Money Small appliances like blenders, microwave ovens, kitchen gear, and even household small electronics like humidifiers, space heaters, vacuum cleaners, and other items are all great things to sell online. Selling them in person works too, but they often have specific model numbers that can be easily researched. You’re better off putting them in the hands of someone who really wants exactly what you have. Also, selling them online offers you the broadest audience possible. Try these sites:

  • Amazon Marketplace is perfect here because you can tie your item directly to an Amazon product listing, and we can’t stress how beneficial that really is. When someone is researching specific models of appliance, they’ll usually wind up at Amazon, and they’ll see your listing. That’s a huge benefit. Again, Amazon takes a huge cut for this because they know they’re popular, so be warned. Photo by Chris Hunkeler.

Of course, yard sales, and community sales are an option here, but these types of items are more likely to hold their value than some others that people want to touch and feel before purchasing. You can definitely sell household items and electronics at a yard sale, but odds are you’ll get the same or better money for them online.

Furniture and Large Appliances

The Complete Guide to Selling Your Unwanted Crap for Money Large appliances and furniture items break off from smaller household goods largely because they’re next to impossible to ship—and even if you did ship them, it’s unlikely the money you’d make from the sale would make them worth the shipping cost. In this case, offline methods rule. Here are a few to consider:

  • Craigslist has all but replaced the newspaper classifieds (which isn’t as lucrative, but worth checking) so it’s a natural place to list large furniture items. Couches, entertainment centers, beds, dressers, even large TVs that you want to get a good price on but don’t want to ship anywhere are perfect. Since you’re selling to your neighbors and your local community, you can specify that you want the buyer to pick up the item. Everyone wins. Photo by The Living Room.
  • Bring them to a community sale or flea market, or hold an open-house or moving sale. Flea markets, open-air markets, and neighborhood yard sales or community sales are a great way to offload furniture like old dressers, bed frames, and even large electronics you want to get a good price for. Culture may play a role in how much you make this way, and be prepared to haggle and negotiate. You’ll also have to deal with the hassle of getting the item to the sale in order to sell it, but it might be worth it to deal with a large number of buyers and set your own price. Check Yelp for open-air markets in your area and see if they’re willing to rent you a table for a weekend, or organize a collaborative sale with your neighbors for your block, community, or building. Together you’ll be able to turn a tidy profit on some old large items. Alternatively, you can do it yourself and have an open-house moving sale, and let people come in and make offers on the things you want to get rid of. Just make sure to keep an eye on a bunch of strangers in your home, okay?
  • Sell them at auction. Long before there were sites like Craigslist and eBay, most people who had a lot of large items to get rid of but didn’t want to sell them in their yard would put them up at local auctions. The auction scene is still bustling, and there are plenty of sites that can help you find one near you. Auction Zip and the National Auction List can all help you find an auction by location or category. Once you’ve found one, you can reach out and find out how to list your items. Of course, the trouble with auctions is that they’re auctions: you have no control over your final sale price, and it’s a roll of the dice that the item will sell at all, much less for what you wanted to get. Still, it’s a great option for large items, especially if they’re in good condition.

Obviously, Craigslist gives you the most control here and we’d suggest going that route first. I can’t count how many people have quickly sold large items on Craigslist and all they had to do was wait for the buyer to show up, take it away, and collect the money. Be careful though, it’s not all roses.

Art, Collectibles, and Other Personal Items

The Complete Guide to Selling Your Unwanted Crap for Money Art and collectibles are tricky things to sell because you really want to make sure you get your item in front of someone who explicitly wants it. It’s not impossible, but in this case it’s absolutely critical that you do your homework before selling to properly judge its value. If you don’t think you can do it alone, or if you’re looking at something you know is antique but have no idea how much it’s really worth, stop now and get it properly appraised by a professional. Photo by _e.t.

That professional can then give you some advice on where to sell your item to get the best result, or even work with you (for a cut of the sales price, of course) to get it in front of the people who are most likely to buy it, whether it’s at auction or a private sale. If you have a lot of antiques, collectibles, or other items in your home you need to get rid of, consider holding an estate sale to get rid of it all quickly.

If you have collectibles that don’t warrant that kind of attention, you can always head over to Craigslist or eBay to list it with other collectibles there.

Go Forth and Sell, But Don’t Get Screwed

The Complete Guide to Selling Your Unwanted Crap for Money If you’ve been following along, you should have options to sell all of your excess junk for the most possible money. Remember, the best way to sell furniture isn’t necessarily the best way to sell electronics, and that’s not the best way to sell books or clothing. Regardless of what you sell and where you sell, check out our tips to avoid getting scammed to make sure your transaction goes as smoothly as possible. Photo by Quazie.

Similarly, we have some useful tips to help you craft the perfect listing, get all the details right, and avoid coming off like a scammer yourself so your listings get the most attention and sell quickly. Selling on Craigslist deserves its own guide since it’s so easy to get screwed selling there. If you’re buying on Craigslist, we have some tips there too. Do your homework, appraise properly, and pick the right venue for the right gear, and you’ll make some good money from the things that either have no value to you, or you know you could just do without. In the end, you’ll have a cleaner, clutter-free home and money you can use to buy the things you really want, spend on the important things in life, or spend on experiences instead of things.

Title photo by Dustin and Janae DeKoekkoek.

5 Security Holes Almost Everyone’s Vulnerable To

By Thorin Klosowski, LifehackerJanuary 30, 2013 at 09:00AM

5 Security Holes Almost Everyone's Vulnerable ToProblems with security seem to pop up all the time—from an easy to hack router to apps that leak your data into the world. Thankfully, it’s pretty easy to protect yourself. Here’s how to do it.

Unless you keep up to date on all the security news, it’s easy to miss a bit here and there about what has been exploited and what hasn’t. We’re all vulnerable at some point, and if you haven’t touched the settings on your computer since you took it out of the box, it might be time to take another look.

Already know about these security holes and have them patched up? Good for you! Send this along to your friends who don’t to help keep them safe.

UPnP Allows Access to Your Gear from Outside Sources

5 Security Holes Almost Everyone's Vulnerable ToUPnP (Universal Plug and Play), a component meant to make devices like routers, printers, and media players easy to discover on a network, has been accused of having security holes for a long time, but this week the US Government suggested you disable it yet again. The most recent study suggests 40 million to 80 million network-enabled devices responded to discovery requests from the internet and are vulnerable to an attack that gives hackers access to webcams, printers, passwords, and more. This means routers and devices with the bug can be accessed from the internet to remotely screw with your system even if you don’t have malware installed.

The good news is that most of the affected hardware is old, and the problem likely isn’t as widespread as it seems. That said, in the case of most devices, you can turn UPnP off in the settings (look in your manual for directions). The UPnP setting on your router doesn’t have anything to do with the protocol that lets you stream media over a network, print from inside the network, or anything similar. Turning it off on the router level only blocks you from controlling these devices over the internet, which most people don’t need to do.

To turn it off on a router level, you pop into the admin page and disable UPnP. If you want to check your hardware, security site Rapid7 has made a tool to scan devices on your network.

As far as security risks go, this one’s easy to fix and it’s not going to affect a lot of people these days. The rest of these are much worse.

WEP/WPA Passwords on Your Router Are Easy to Crack

5 Security Holes Almost Everyone's Vulnerable ToChances are that your router is using either a WPA (Wi-Fi Protected Access) password or a WEP (Wired Equivalent Privacy) password. Unfortunetly, it’s pretty simple to crack a Wi-Fi network’s WPA password and a WEP password.

Both of these vulnerabilities exist for different reasons. In the case of WEP, it’s as simple as cracking the password with an automated encyrption program (and a lot of time), while in WPA, it’s more about a vulnerability in WPS (Wi-fi Protected Setup) on certain routers. This can be corrected by turning WPS off. If you can’t turn WPS off, you can install DD-WRT or Tomato so you can. DD-WRT should add a nice security layer to your home network.

Browsing Without HTTPS Leaves Your Vulnerable to Snoopers

5 Security Holes Almost Everyone's Vulnerable ToHTTP Secure is the protocol used to secure everything that you send online that’s important. This includes your bank information, social networks, and just about everything else that needs security. For your home network, you can simply install the HTTPS browser extension that ensures you’ll always use the secure version of a site so your data doesn’t fall into the wrong hands. Without HTTPS, your personal data is far more likely to fall through a security hole and into the hands of some nefarious person.

While it’s important to use HTTPS at home, it’s far more important to always use it on public Wi-Fi. At places like hotels, airports, or libraries, someone is probably snooping out your passwords. Your best solution for public Wi-Fi is to use a VPN (virtual private network) to route your traffic safely and securely.

All the Apps, Software, and Websites You Use Might Accidentally Leak Data

5 Security Holes Almost Everyone's Vulnerable ToIt happens time and time again. A hacker finds an exploit, and suddenly all your favorite software and web sites are vulnerable to people snagging your passwords. This might make your entire system insecure, it may give your passwords away, or they’re leaking your personal data like name and address. This happens with Java constantly, but it has happened to pretty much everyone at some point, including: Mega, Google Wallet, Apple, Skype, Path, Zappos, LinkedIn, and Facebook.

First off, you need to keep your software up to date. This means both your operating system and your mobile software. Generally, when your data is leaked, someone notices, and the software is patched up right away.

It’s not exactly the perfect solution, but since the security holes are on the service or software side, it’s all you can do. That said, make sure you have: two-factor authentication enabled where you can, you use a different password for every site, and use a a password system like LastPass to ensure your leaked data doesn’t reveal enough information to get your login information for another service.

Strong Passwords Aren’t Enough to Protect Against Everything

5 Security Holes Almost Everyone's Vulnerable ToWhen it boils down to it, a good password only gets you so far. Certain security holes, like social engineering hacks can happen when a skilled hacker bypasses technical protections (like a strong password) to get the information they want from talking to a person—no “real” hacking is required. It’s exactly what happened last year when the Apple and Amazon exploits were uncovered in Mat Honan’s hack.

In short, people are one of the biggest security holes in the larger chain. Hackers can use psychological tricks to get your information, they might pose as someone important, as a Facebook friend, or even as you when talking with customer support. With a little information, they can then gain access to your account. If that account uses the same password as everywhere else, they essentially get access to everything you do. Thankfully, you can protect yourself with a few simple tips.

The main goal is to make sure you don’t have all your eggs in one basket. That means if someone gets one password to one site, they can’t get in elsewhere. So, never use the same password more than once, use two-factor authentication, get creative with your security questions, and monitor your accounts.

Plugging up these security holes isn’t exactly a fun way to spend an afternoon, but it’s certainly more entertaining than waking up one morning to find someone has stolen your identity. It’s also a pretty easy process, and once you’re set up you don’t need to do much else.

PhoneClean Scans Your iOS Device to Reclaim Storage Space

By Thorin Klosowski, LifehackerJanuary 30, 2013 at 10:30AM

PhoneClean Scans Your iOS Device to Reclaim Storage SpaceWindows/Mac: Your iOS device has a limited amount of storage. It can store a lot of junk you don’t need over time like temp files, scripts, and failed sync files. PhoneClean is an app that deletes all that junk for you.

All you need to do is launch PhoneClean, attach your iOS device to your computer, and click the “Start Scan” button. PhoneClean will dig through your device for a few minutes, and will give you a report on what it can safely delete. Check the boxes for the junk you want to delete, and PhoneClean does it. I didn’t reclaim much space myself, but your mileage may vary.

PhoneClean (free) | iMobie via CNET

Man Detained By TSA For Writing 4th Amendment On His Chest Wins 1st Amendment Argument In Court

By Mike Masnick, Techdirt.January 28, 2013 at 12:34PM

Nearly two years ago, we wrote about how Aaron Tobey was suing the US government after he was detained by the TSA for trying to go through airport security without his shirt on, but with a paraphrased version of the 4th Amendment on his chest:




At the time, I figured his case had little chance of succeeding. For reasons that don’t make much sense, the courts have given the TSA an amazing amount of deference as long as they keep claiming something along the lines of “but we’re all going to die!!!!!!” before defending any and every action to violate our basic privacy rights. However, it turns out I was wrong. Because, you see, the 4th Amendment might not matter any more, but the First Amendment is still important. And the court saw this as a clear attack on his attempt to speak freely:


Here, Mr. Tobey engaged in a silent, peaceful protest using the text of our Constitution—he was well within the ambit of First Amendment protections. And while it is tempting to hold that First Amendment rights should acquiesce to national security in this instance, our Forefather Benjamin Franklin warned against such a temptation by opining that those ‘who can give up essential liberty to obtain a little temporary safety, deserve neither liberty nor safety.’ We take heed of his warning and are therefore unwilling to relinquish our First Amendment protections—even in an airport.

The ruling hit back on the claims by the TSA that the detention made sense because Tobbey’s actions were “bizarre.”


Appellants contend that Mr. Tobey has not pled a cognizable First Amendment claim because their actions were “reasonable” given Mr. Tobey’s “bizarre” and “disruptive”
conduct….

Even conceding that Mr. Tobey’s behavior was “bizarre,”
bizarre behavior alone cannot be enough to effectuate an
arrest. If Appellants caused Mr. Tobey’s arrest solely due to
his “bizarre” behavior, Appellants’ cannot be said to have
acted reasonably. This is especially the case given that the
First Amendment protects bizarre behavior

The court also pushes back on the claims of “disruption,” noting that the TSA seems to say that removing clothes itself is disruptive, but the court points out that there’s an awful lot of clothing removal that happens at TSA checkpoints, so it is not obviously disruptive (though it leaves open the possibility of more evidence of disruptive behavior by Tobey).

This was an appeals court panel, overturning a lower court decision against him. It’s worth noting that the panel (a standard 3 judge panel) included one dissenter, who bizarrely and ridiculously argued that, not only do you give up your First Amendment rights at the airport, you do so because the TSA needs you to shut up so it can find the real terrorists. I’m not joking:


Had this protest been launched somewhere other than in the security-screening area, we would have a much different case. But Tobey’s antics diverted defendants from their passenger-screening duties for a period, a diversion that nefarious actors could have exploited to dangerous effect. Defendants responded as any passenger would hope they would, summoning local law enforcement to remove Tobey—and the distraction he was creating — from the scene.

How does one become a judge at the appellate level when arguing that you have different free speech rights during airport passenger screening because you shouldn’t distract the TSA agents? That’s quite an incredible statement.

Either way, the case still has a long way to go. This part just sends it back to the lower court to permit the case to move forward on First Amendment grounds.

Permalink | Comments | Email This Story



1.5x … 9x faster queries with PHP and MySQL 5.6, really?

By Ulf Wendel, Planet MySQLJanuary 28, 2013 at 11:18AM

I am telling no secret saying MySQL 5.6 GA can be expected to be released soon, very soon. Time to test one of the improvements: MySQL 5.6 speaks SQL and Memcache protocol. In your PHP MySQL apps, try using the Memcache protocol to query MySQL. A key-value SELECT ... FROM ... WHERE pk = <key> can become 1.5x-2x faster, an INSERT INTO table(pk, ...) VALUES (<key> ...) can become 4.5x-9x faster, says the InnoDB team! Read on: background, benchmark, usage, PECL/mysqlnd_memcache, PHP Summit

Background

Since at least 2009, power users have tried to access MySQL bypassing the SQL layer. SQL is a very rich and powerful query language. But parsing and optimizing SQL takes time. So does a wire protocol that supports all SQL features. A less featured query language and protocol can significantly improve performance. See Key Value stores such as Memcache or Redis: simple queries, simple but fast protocol.

Application
MySQL SQL Client Memcache Client
| |
  • rich SQL queries
  • strong persistence, safe data store
  • no stale data
  • simple and fast key lookup
  • weak persistence, data loss in case of crash
  • memcached: often stale data copies from DBMS
| |
MySQL Server Memcached

Thus, for simple MySQL queries there should be a simple and fast protocol. But which? Many MySQL web deployments use Memcache, I would not be surprised to learn that its the case for 30% of the MySQL web users. The MySQL manual has a chapter dedicated to using Memcached with MySQL. Given the popularity, the choice of a fast protocol for simple key value style queries was easy: MySQL had to learn Memcache protocol.

MySQL SQL Client Memcache Client
| |
  • rich SQL queries and/or simple and fast key lookup
  • persistence: configurable from strong to weak
  • no caching, no data copy to sychronize
|
MySQL 5.6 with InnoDB Memcache Plugin
InnoDB table

In an ideal world one can run an existing Memcached application against MySQL 5.6 without any code modifications. Future user experience will tell whether the MySQL 5.6 InnoDB Memcache plugin is good enough to replace Memcached installations. There are reasons for considering MySQL as a Memcached replacement (related: Couchbase 2.0) . However, it is the enormous popularity and developer familarity (clients, APIs, usage, …) with Memcached that counts. From an application developer perspective there is little new to learn: change server IP from Memcached to MySQL, done. No more hassles with cold or stale caches…

Benchmarks… never trust them

Really, can MySQL 5.6 replace a Memcached installation? I do not know. As a poP (plain old PHP developer), I focussed on the question whether replacing key value style SQL queries with Memcache access to MySQL could improve PHP application performance. This may be the first step in an evaluation of the new feature.

Of course, I could not resist to run a benchmark MySQL vs. Memcached. As always, never trust benchmarks, run your own tests! All tests have been run on a plain i3-2120T CPU (2 cores, 4 cores counting hyper-threading), 8GB RAM, OpenSuSE 12.1 desktop. Disk configuration is as worse as it can get: soft RAID-1. Due to the poor disk setup I tried to avoid disk access whenever possible, and keep tests running entirely in main memory. Albeit iostat -x has not hinted significant bottlenecks I will not say more on write performance than this. Writes using memcache protocol have been 2x faster than writes using SQL (single INSERT) at the average of some 20 test runs.

Rest of the stack: MySQL 5.6.9-rc (not GA!), memcached 1.4.15, libmemcached 1.0.15, PHP 5.4.11 all compiled using their default settings. Test runs are short, sample variation had to be considered, load generator and server are running on the same machine. This setup is far, far from an ideal one but still something a poP may use.

[mysqld]
innodb_buffer_pool_size = 3072M
daemon_memcached_w_batch_size=1000
daemon_memcached_r_batch_size=1
innodb_flush_log_at_trx_commit=2
innodb_doublewrite=0

Please note, the daemon_memcached_w_batch_size setting is not relevant for the following read performance result. The chart shows the reads per second observed with bin/memslap --servers=127.0.0.1 --concurrency=4 --execute-number=20 --test=get --binary --debug --flush –initial-load=100000. memslap does not report reads per second but you can compute them with the formula: reported_runtime * 10000 / concurrency. Key lenght is 100 bytes, value lenght is 400 bytes, set size is 10,000 rows – memslap defaults…

MySQL 5.6.9-rc InnoDB Plugin, memslap, read

MySQL to replace Memcached?

Memcached performed best if using socket connections. Setting daemon_memcached_option="-s/tmp/mmemcached" made the MySQL 5.6.9-rc1 (non GA) release bind to the socket set but no client was able to perform any queries. Thus, for the question whether MySQL can replace Memcached, we have to look at TCP/IP connection figures.

MySQL 5.6
Memcached running as a MySQL plugin
(as part of the MySQL process)
Memcached cache_policy=cache_only main memory storage
|  
cache_policy=innodb_only
|
InnoDB

The chart shows two TCP/IP figures for MySQL. One shows the results for the MySQL InnoDB Memcached cache policy cache_only, the other one shows results for cache_policy=innodb_only. The MySQL InnoDB Memcached plugin is basically a Memcached running as part of the MySQL process. Memcached supports custom storage backends. The cache_policy sets whether InnoDB or main memory shall be used. In the latter case, the plugin is no different from a standalone Memcached.

Armed with this knowledge you can start comparing MySQL InnoDB Memcached plugin with standalone Memcached. To compare apples and apples you have to compare cache_policy=cache_only with standalone Memcached. Result: little difference. If you compare cache_policy=innodb_only with standalone Memcached you compare apples and oranges! Result for my particular setup: InnoDB turned out slower than Memcached. But recall that you compare apples and oranges: different system architecture, different persistence, possibly no more caching layer…

SQL SELECT versus Memcache get

Sometimes, comparing apples and oranges is perfectly valid. For example, when asking whether to refactor a key value style SQL access (SELECT ... FROM table WHERE pk = <key>) into a Memcached access to MySQL. These kinds of queries are quite typical for applications that use frameworks.
MySQL 5.6.9-rc InnoDB Plugin, SQL vs. Memcached access using PHP

My own benchmark and the InnoDB team benchmark show similar results: try replacing simple SELECT with Memcached accesses, it can give 1,5x … 2x faster queries. The PHP script used is given at the end of the blog post. It is using defaults similar to memslap defaults: key length 100 bytes, value length 400 bytes, 10,000 rows. To minimize impact of the slow disk system on the test computer, the script sleeps for 30 seconds after populating the test table. The SQL access is done using mysqli (w. mysqlnd).

[...]
$res = $mysqli->query($sql = "SELECT c2 FROM demo_test WHERE c1='" . $pairs[$idx][0] . "'");
if (!$res) {
  printf("[%d] %s\n", $mysqli->errno, $mysqli->error);
  break;
}
$row = $res->fetch_row();
$res->free();
assert($pairs[$idx][1] == $row[0]);
[...]

The equivalent Memcached access is done using PECL/Memcached.

[...]
if (false == ($value = $memc->get($pairs[$idx][0]))) {
  printf("[%d] Memc error\n", $memc->getResultCode());
  break;
}
assert($pairs[$idx][1] == $value);
[...]

Please note, the benchmark does not take connect times into account. If you replace only few SQL SELECT queries with a Memcache access to MySQL, the connect overhead for the additional Memcache connection to MySQL may outweight performance gains. As always: run your own tests.

PECL/mysqlnd_memcached

Last year Johannes has published PECL/mysqlnd_memcached. PECL/mysqlnd_memcached monitors all queries run by mysqlnd using any PHP MySQL API compiled to use the mysqlnd library. If a query matches a regular expression for a key value style SELECT, then the plugin transparently performs a Memcached access instead of a SQL access to MySQL. Back then, we found cases in which this gave a slight performance increase of some 20…30%. With my recent benchmark I got some performance loss using PECL/mysqlnd_memcache compared to a plain SQL access with mysqli. As always: run your own tests. However, this hints that an automatic and transparent runtime replacement may not be fast enough.

Finding SQL SELECT key value style queries

Refactoring existing applications may be a better solution. There are two mysqlnd plugins that can help to identify queries that qualify for refactoring: PECL/mysqlnd_uh (PHP 5.3 only), PECL/mysqlnd_qc (PHP 5.3 and above). PECL/mysqlnd_uh enables you to rebuild PECL/mysqlnd_memcached using PHP instead of C. The blog post
Uh, uh… extending mysqlnd: monitoring and statement redirection gets you started. A PHP 5.4+ compatible alternatives are the mysqlnd_qc_get_normalized_query_trace_log() and mysqlnd_qc_get_query_trace_log() functions provided by PECL/mysqlnd_qc. The functions help you to find the origin of SQL SELECT key value style queries by providing traces of all queries executed. Please note, it is not necessary to turn on the actual caching functionality of the client-side cache plugin PECL/mysqlnd_qc to access the query traces.

Apples, oranges and other peoples benchmarks…

Albeit artificial benchmarks hint a significant performance benefit, real life gains have to be evaluated on a case by case basis. For example, you may decide not to commit after each read/get and run InnoDB in read-only mode on a slave server. Thus, you set daemon_memcached_r_batch_size=64 and/or innodb_read_only in your MySQL configuration. Setting either one can double reads per second, peaking around 21,000 reads/s from MySQL 5.6 on an Intel-i3 based desktop. Still slower than Memcached but the features are different…

MySQL 5.6.9-rc InnoDB Memcache Plugin, PHP script, read

Really, there is something here…

A look at the performance shows that there is something here. Next, one will have to take a look at the feature difference and compare with other approaches in MySQL land. That’s the story to tell in my talk at the PHP Summit.

Finally, stability: good enough to start testing. MySQL 5.6.9-rc was reasonable stable to run benchmarks against it but not perfectly stable. PECL/mysqlnd_memcached beta needs to be brushed over to reflect the latest changes. We will do that once MySQL 5.6 GA has been published.

Happy hacking!

@Ulf_Wendel Follow me on Twitter

PHP benchmark script used

<?php
define("MYSQL_HOST", "127.0.0.1");
define("MYSQL_USER", "root");
define("MYSQL_PWD", "");
define("MYSQL_DB", "test");
define("MYSQL_PORT", 3307);
define("MYSQL_MEMC_PORT", 11211);

define("NUM_VALUES", 10000);
define("REPEAT_READS", 10);

/* Wait time e.g. for background commit */
define("REST_TIME_AFTER_LOAD", 30);

/* Make sure the schema matches! */
define("KEY_LEN", 10);
define("VALUE_LEN", 100);

/* match MySQL config to be fair... */
define("WRITE_COMMIT_BATCH_SIZE", 1000);

/* number of parallel fetch worker (processes) */
define("FETCH_WORKER", 2);




function store_fetch_results_in_mysql($run_id, $pid, $results, $num_values = NUM_VALUES, $repeat = REPEAT_READS) {
  $mysqli = new mysqli(MYSQL_HOST, MYSQL_USER, MYSQL_PWD, MYSQL_DB, MYSQL_PORT);
  if ($mysqli->errno) {
    printf("[%d] %s\n", $mysqli->errno, $mysqli->error);
    return false;
  }
  if (!$mysqli->query("CREATE TABLE IF NOT EXISTS php_bench(
       run_id INT, pid INT UNSIGNED,
       label VARCHAR(60),
       runtime DECIMAL(10, 6) UNSIGNED, ops INT UNSIGNED)")) {

     printf("[%d] %s\n", $mysqli->errno, $mysqli->error);
     return false;
  }
  foreach ($results as $label => $time) {

     $sql = sprintf("INSERT INTO php_bench(run_id, pid, label, runtime, ops)
              VALUES (%d, %d, '%s', %10.6f, %d)",
             $run_id,
             $pid,
             $mysqli->real_escape_string($label),
             $time,
             ($time > 0) ? ($num_values * $repeat / $time) : 0);
     if (!$mysqli->query($sql)) {
       printf("[%d] %s\n", $mysqli->errno, $mysqli->error);
       return false;
     }
  }
  return true;
}

function generate_pairs($num = NUM_VALUES, $key_len = KEY_LEN, $value_len = VALUE_LEN) {
  $pairs = array();
  $anum = "0123456789ABCDEFGHIJKLMNOPQRSTWXYZabcdefghijklmnopqrstuvwxyz";
  $anum_len = strlen($anum) - 1;

  for ($i = 0; $i < $num; $i++) {
    $key = "";
    for ($j = 0; $j < $key_len; $j++) {
      $key .= substr($anum, mt_rand(0, $anum_len), 1);
    }
    $value = $key . strrev($key) . $key . strrev($key);
    $pairs[] = array($key, $value);
  }

  return $pairs;
}

function load_pairs_memc($memc, $pairs) {
  $inserted = 0;
  foreach ($pairs as $k => $pair) {
    if (false == $memc->add($pair[0], $pair[1])) {
      printf("[%d] Memc error\n", $memc->getResultCode());
      break;
    }
    $inserted++;
  }
  return $inserted;
}

function load_pairs_sql($mysqli, $pairs) {
  $inserted = 0;
  $mysqli->autocommit = false;
  foreach ($pairs as $k => $pair) {
    if (!$mysqli->query(sprintf("INSERT INTO demo_test(c1, c2) VALUES ('%s', '%s')", $pair[0], $pair[1]))) {
      printf("[%d] %s\n", $mysqli->errno, $mysqli->error);
      break;
    }
    $inserted++;
    if ($inserted % WRITE_COMMIT_BATCH_SIZE == 0) {
      $mysqli->commit();
    }
  }
  $mysqli->commit();
  $mysqli->autocommit = true;
  return $inserted;
}

function timer($label = '') {
  static $times = array();
  if (!$label)
    return $times;

  my_timer($label, $times);
  return $times;
}

function my_timer($label, &$times) {
  if (!$label)
    return;

  if (!isset($times[$label])) {
    $times[$label] = microtime(true);
  } else {
    $times[$label] = microtime(true) - $times[$label];
  }
}


function fetch_sql($mysqli, $pairs, $repeat = REPEAT_READS) {
  $fetched = 0;
  for ($i = 0; $i < $repeat; $i++) {
    $fetched += _fetch_sql($mysqli, $pairs);
  }
  return $fetched;
}
function _fetch_sql($mysqli, $pairs) {
  $fetched = 0;
  $num = count($pairs);
  while (count($pairs)) {
    do {
     $idx = mt_rand(0, $num);
    } while (!isset($pairs[$idx]));

    $res = $mysqli->query($sql = "SELECT c2 FROM demo_test WHERE c1='" . $pairs[$idx][0] . "'");
    if (!$res) {
      printf("[%d] %s\n", $mysqli->errno, $mysqli->error);
      break;
    }
    $row = $res->fetch_row();
    $res->free();
    assert($pairs[$idx][1] == $row[0]);
    $fetched++;
    unset($pairs[$idx]);
  }
  return $fetched;
}

function fetch_memc($memc, $pairs, $repeat = REPEAT_READS) {
  $fetched = 0;
  for ($i = 0; $i < $repeat; $i++) {
    $fetched += _fetch_memc($memc, $pairs);
  }
  return $fetched;
}
function _fetch_memc($memc, $pairs, $repeat = 1) {
  $fetched = 0;
  $num = count($pairs);
  while (count($pairs)) {
    do {
      $idx = mt_rand(0, $num);
    } while (!isset($pairs[$idx]));

    if (false == ($value = $memc->get($pairs[$idx][0]))) {
      printf("[%d] Memc error\n", $memc->getResultCode());
      break;
    }
    assert($pairs[$idx][1] == $value);
    $fetched++;
    unset($pairs[$idx]);
  }
  return $fetched;
}


function generate_and_load_pairs($num = NUM_VALUES, $key_len = KEY_LEN, $value_len = VALUE_LEN) {

  $mysqli = new mysqli(MYSQL_HOST, MYSQL_USER, MYSQL_PWD, MYSQL_DB, MYSQL_PORT);
  if ($mysqli->errno) {
    printf("[%d] %s\n", $mysqli->errno, $mysqli->error);
    return array();
  }
  $memc = new Memcached();
  if (!$memc->addServer(MYSQL_HOST, MYSQL_MEMC_PORT)) {
    printf("[%d] Memc connect error\n",  $memc->getResultCode());
    return array();
  }

  timer("generate pairs");
  printf("\tGenerating pairs...\n");
  $pairs = generate_pairs($num, $key_len, $value_len);
  timer("generate pairs");


  timer("load pairs using SQL");
  printf("\tLoading %d pairs using SQL...\n", load_pairs_sql($mysqli, $pairs));
  timer("load pairs using SQL");

  $mysqli->query("DELETE from demo_test");

  /* server think and commit time */
  sleep(REST_TIME_AFTER_LOAD);

  timer("load pairs using Memcache");
  printf("\tLoading %d pairs using Memcache...\n", load_pairs_memc($memc, $pairs));
  timer("load pairs using Memcache");

  sleep(REST_TIME_AFTER_LOAD);

  return $pairs;
}


function fetch_and_bench($pairs, $pid, $indent = 1, $repeat = REPEAT_READS) {
 $times = array();

 $mysqli = new mysqli(MYSQL_HOST, MYSQL_USER, MYSQL_PWD, MYSQL_DB, MYSQL_PORT);
  if ($mysqli->errno) {
    printf("[%d] %s\n", $mysqli->errno, $mysqli->error);
    return $times;
  }
  $memc = new Memcached();
  if (!$memc->addServer(MYSQL_HOST, MYSQL_MEMC_PORT)) {
    printf("[%d] Memc connect error\n",  $memc->getResultCode());
    return $times;
  }
  $prefix = str_repeat("\t", $indent);

  my_timer("fetch using plain SQL", $times);
  printf("%s[pid = %d] Fetched %d pairs using plain SQL...\n", $prefix, $pid, fetch_sql($mysqli, $pairs, $repeat));
  my_timer("fetch using plain SQL", $times);

  mysqlnd_memcache_set($mysqli, $memc);
  my_timer("fetch using Memcache mapped SQL", $times);
  printf("%s[pid = %d] Fetched %d pairs using Memcache mapped SQL...\n", $prefix, $pid, fetch_sql($mysqli, $pairs, $repeat));
  my_timer("fetch using Memcache mapped SQL", $times);

  my_timer("fetch using Memcache", $times);
  printf("%s[pid = %d] Fetched %d pairs using Memcache...\n", $prefix, $pid, fetch_memc($memc, $pairs, $repeat));
  my_timer("fetch using Memcache", $times);

  return $times;;
}


$run_id = mt_rand(0, 1000);

$pairs = generate_and_load_pairs(NUM_VALUES, KEY_LEN, VALUE_LEN);
$load_times = timer();

$pids = array();
for ($fetch_worker = 1; $fetch_worker <= FETCH_WORKER; $fetch_worker++) {
   switch ($pid = pcntl_fork()) {
      case -1:
         printf("Fork failed!\n");
         break;

      case 0:
         printf("\t\tFetch worker %d (pid = %d) begins...\n", $fetch_worker, getmypid());
         $times = fetch_and_bench($pairs, getmypid(), 2);
         store_fetch_results_in_mysql($run_id, getmypid(), $times, NUM_VALUES, REPEAT_READS);
         printf("\t\tWorker %d (pid = %d) has recorded its results...\n", $fetch_worker, getmypid());
         exit(0);
         break;

      default:
         printf("\t\tParent has created worker [%d] (pid = %d)\n", $fetch_worker, $pid);
         $pids[] = $pid;
         pcntl_waitpid($pid, $status, WNOHANG);
         break;
   }
}

foreach ($pids as $pid) {
  pcntl_waitpid($pid, $status);
}



printf("\n\n");
printf("Key settings\n");
printf("\t%60s: %d\n", "Number of values", NUM_VALUES);
printf("\t%60s: %d\n", "Key length", KEY_LEN);
printf("\t%60s: %d\n", "Value length", VALUE_LEN);
printf("\t%60s: %d\n", "SQL write commit batch size", WRITE_COMMIT_BATCH_SIZE);
printf("\t%60s: %d\n", "Parallel clients (fetch)", FETCH_WORKER);
printf("\t%60s: %d\n", "Run ID used to record fetch times in MySQL", $run_id);

printf("\n\n");
printf("Load times\n");
foreach ($load_times as $label => $time) {
  printf("\t%60s: %.3fs (%d ops)\n", $label, $time, NUM_VALUES / $time);
}

printf("\n");
printf("Fetch times\n");

$mysqli = new mysqli(MYSQL_HOST, MYSQL_USER, MYSQL_PWD, MYSQL_DB, MYSQL_PORT);
if ($mysqli->errno) {
 die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));
}
$res = $mysqli->query("SELECT DISTINCT label FROM php_bench WHERE run_id = " . $run_id);
if (!$res)
  die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));

while ($row = $res->fetch_assoc()) {
  $sql = sprintf("SELECT AVG(runtime) as _time, AVG(ops) AS _ops FROM php_bench WHERE label = '%s' GROUP BY run_id HAVING run_id = %d",
    $mysqli->real_escape_string($row['label']),
    $run_id);
  if (!($res2 = $mysqli->query($sql)))
    die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));

  $row2 = $res2->fetch_assoc();
  printf("\t%60s: %.3fs (%d ops)\n", $row['label'], $row2['_time'], $row2['_ops']);
}
$mysqli->query("DELETE FROM php_bench");
printf("\n\n");
printf("\t\tTHE END\n");

The post 1.5x … 9x faster queries with PHP and MySQL 5.6, really? appeared first on Ulf Wendel.

PlanetMySQL Voting:
Vote UP /
Vote DOWN

What Is Fair Use? A Basic Explanation For Aspiring Creatives [MakeUseOf Explains]

By Joshua Lockhart, MakeUseOfJanuary 23, 2013 at 09:31PM

fair useHalf of the videos I find on YouTube always have some note in the description about how it’s totally legal for the creator to use songs from their favorite band as background music. Their reasoning tends to always be in the form of two words: fair use.

Unfortunately, this is often because of complete ignorance. Other times its just a total disregard for the law. Either way, most people don’t understand what fair use actually is, and in an effort to educate the general public, I’ve decided to pen a delightful article detailing what fair use actually is.

Gather around, children, for Papa Lockhart is going to tell you the story of the Four Determining Factors And The Big Bad Copyright Infringer.

The Four Determining Factors

According to USC Title 17, Section 107, there are four traits to consider when deciding if something is actually under fair use law:

  • Purpose And Character Of The Derivative Work.
  • Nature Of The Copyrighted Work.
  • Amount Of The Copyrighted Work Used.
  • Effect On The Potential Market Of The Copyrighted Work.

Some people like to skirt around the four determining factors, totally bending the rules to justify their own means. For instance, you’ll see people who say they don’t make any money from the derivative work. Sometimes they will say it’s “educational” without it having any academic value at all. This really doesn’t matter.

Bear in mind that the law doesn’t change according to your interpretation. It also doesn’t change for ignorance.

Disclaimer: this article isn’t legitimate legal advice. I’m not an attorney, nor would I even be a good one. Just make sure to contact a lawyer for professional legal consultation. Regardless, I feel as though I know fair use pretty well, and I’d like to break down the four determining factors for you.

Purpose & Character Of The Derivative Work

fair use

This is the factor that most people claim to have some knowledge about. However, the purpose and character of your work goes a bit deeper than “I don’t make money off this” or “this is for educational purposes”. Courts tend to decide if the derivative is meant to stimulate creativity of the public or solely bring personal profit to the author. Ultimately, you must decide if your new derivative work advances progress of the arts by adding something new.

This means you can’t just steal the work, and I’d even go as far to say that it extends into putting a popular song on a video. Unfortunately, even education is suffering in this area because profit can be made in this sector, but on the other hand, parody is protected. Do bear in mind that the next three factors apply even if you got by this one scott-free.

Nature Of The Copyrighted Work

what is fair use

While artistic value doesn’t matter to copyrighted work, fair use takes it into consideration (along with other items such as its fiction or nonfiction status). To keep it simple, you should ask yourself whether the resulting derivative work is creative or informative.

A work that can be considered creative (generally fiction) will likely fall out of favor with fair use. However, if it is something that is factual (generally nonfiction), you will be more likely to stay under the glorious umbrella that is fair use. Furthermore, this applies to work that hasn’t been published. Take secret letters from your Perlupian lover, for instance – it’s all protected.

Amount Of The Copyrighted Work Used

what is fair use

Admittedly, this is a bit of an unclear factor. The general rule is this – the less of the derivative work that is included, the better chance at qualifying for fair use it has. The key is to focus on how substantial it is.

For instance, if you publish an entire book that supposedly critiques another one, yet in the process you add the entirety of the critiqued work in your own, this is definitely copyright infringement. However, a simple attributed quote should be completely fine (just make sure you reference it).

Likewise for music, it seems as though everything is in the favor of record labels these days. For a video, I would apply for something called a sync license by writing to the label and explaining how you plan to use the music. If you are just making a fun video, they may let you use it without cost, but more often than not, you will have to pay.

Effect On The Potential Market Of The Copyrighted Work

fair use

Here’s the kicker: how does your derivative work affect the original creator’s income? There’s a lot of wiggle room here, and it’s typically not in the favor of the derivative work.

For example, consider how your creation affects search rankings online. Could it be possible that more people are watching your homemade lyric video instead of the official one? Let’s say that your video only got a thousand views in a month. Based on standard CPM prices, that’s $3-5 (minimum) that the artist’s company missed out on in advert income. Albeit small, this is lost revenue for the artist’s company. Even if it’s a small amount, your derivative work likely affects the product’s market in some way, and only the copyright holder can decide how much is too much.

Rationalization Often Results In Failure

All four of the above factors are taken into consideration when it comes to fair use, and I’m aware most of them are arbitrary. For the first three, use your gut, and I mean really use your gut. Don’t play the rationalization game. Usually, when you start rationalizing, you end up being wrong. The last one is pretty black and white when you get right down to it.

Some creatives may talk about how dirty it is that big media companies prevent consumers from using their work in derivative creations. I’ve done my share of using copyrighted music in the past (who hasn’t?), but to this argument I still say, “So what? They created it. They decide how it can be used.” 

What is your opinion on fair use? Have you ever received a DMCA takedown notice?

Image Credits: Phil RoedorDiego3336theeruditefrogzigazou76artist in doing nothing

The post What Is Fair Use? A Basic Explanation For Aspiring Creatives [MakeUseOf Explains] appeared first on MakeUseOf.