Friday, December 27, 2013

Thursday, December 19, 2013

Pondering Making Money with Google Adsense

The Goal

So here is a scenario.  You want to make 60,000 USD per year using Google Adsense.  Note this is the pre-tax amount.  Let's break down the numbers.
  • A good conversion rate would be gaining a $1 of ad revenue per 1000 hits.  The click through rate from what I've read is about 20%, and the rate you receive per click is dependent on your specific niche, but for our purposes let's shoot low and say that 200 click throughs results in one dollar of revenue.
  • So using simple match, we are going to need 60 million hits a year to generate the income we are targeting. That is 5 million hits a month, and taking an average month being 30 days that means we need about 167,000 thousand hits A DAY.

Getting Real - Part Time Blogging Revenue 

For most of us generating that many hits probably isn't going to happen.  Let's look at a more realistic scenario.
  • You generate a 1000 hits a day, 365 days a year.
  • This gives you a yearly income of $365 USD  a year.
Now the question is how much time does it take to generate a 1000 hits on a blog a day?
  • You are going to have write content fairly often , say at least 5 times a week, spending at least 5 hours a week doing so.
  • You are going to have to spend sometime engaging in promotion using social media.  Say you spend another hour doing this per week.
  • So, saying you do this 50 weeks a year, you are making a total of $365 dollars year by spending 350 hours of labor.  You will be making just slightly over a dollar an hour...
  • But remember this is pre-tax income.  So obviously you aren't going to live of $365 dollars a year, so you will have to work another job.  Both Google and Paypal report your earnings to the federal government, so they are going to take a bite out of that $365 bucks, depending on how much money you make at your other job.  Also Paypal (if you get pain by Google through them) are going to take a 3% cut (roughly) in transaction fees.  So you most likely will be netting under 300 dollars for 350 hours of labor.  NOT WORTH IT.

Additional Scenarios 

OK, let's say you invest instead of 7 hours a week, 49 hours a week in generating content.  That, using the current formula above, would generate you a little over $2500 bucks a year.  That, combined with government assistance or a third world life style in some of the lesser developed nations might be sustainable. But for most of you who might read this it absolutely isn't.  

Now let's say you get a better niche, where you actually make something along the lines of $5 per 1000 clicks.  Well that would help, you would only need about 34,000 hits a day to reach that 60,000 dollar net income mark.  With our 7 hours a week / 1000 hits a day scenario that would generate a little over $1800 bucks a year, that would increase your net pay to about $5.14 an hour before taxes.

So, for the vast majority of us it isn't even worth our time to embrace Google Adsense.  How could we still make this work?  What are we missing?

Changing the Equation

  • Some content has a long tail, and even after the content is published, it will continue to generate hits.  From my experience blogging anyway only a few articles will be long tail ones.  But if you can find a niche where the subject you write about is fairly static, you might be able to boost your weekly revenue with existing articles.
  • Things like posting quick links to other people's content, acting like a meta directory of info in some circumstances might boost the number of post that you get.
  • Some how getting people to write post for free, maybe because they have a passion for the subject, will create additional post.
  • Ways to automate detecting and posting links to other articles might help.
Let's say you do fairly well, and get 3000 hits a day at a 7 dollar per 1000 hits range. You would have to work part time at this, say 20 hours a week for 50 weeks or about 1000 hours of labor.  This would bring you about 7700 bucks of revenue.  Or would bring your pre-tax pay rate to about $7.7 an hour.  In most cities in America this is roughly about minimum wage.

Conclusion

Most of us are better off getting a part time job in the service sector than trying to use Google Adsense as a primary or even secondary revenue source.

Wednesday, November 13, 2013

Mobile

We all know mobile is the next big thing (has been for about 5 years and just getting bigger).  This slide deck lays it out nicely though if you still have doubts.  Social will be a big part of the mix.


Happy coding.

Tuesday, September 03, 2013

JavaScript Scope and IIFEs

I ran into an issue I've never run into before.  I have some JavaScript files included in most pages on a website. These files define objects and populate them with properties like user options, site root URLs, an ajax callback function, etc...  Well there were a few pages that end up being pop ups on modals, and in that case one of the JavaScript objects wasn't getting created, so I was getting undefined errors.

Initially I created an immediately invoked function on the offending pages that I would pass the object into to make sure it existed and if not populate it.  However you cannot pass a variable or object to an IIF if it isn't defined.  The solution to the problem was simple, but I'd never done this before.  In any function you have access to the window object, which is where all the globals are kept, so you can actually declare global variables in functions without having to declare them outside a function first like I had been doing for years.



 (function () {  
       if (typeof window.SomeObj == 'undefined') {  
        window["SomeObj"] = {};  
        window["SomeObj"].property1 = 'blah blah';  
        window["SomeObj"].property2 = 'some option';  
       }  
 })();  


While I will probably circle back at one point an fix the scripts so that this little hack will not be needed, I thought it was cool you could do this and it had never occurred to me to try it.  Probably not a best practice, and most likely JavaScript 101 to those who develop JavaScript aps, but to me it was new and interesting.  I hope this technique helps someone else as well.

Update

For nested objects, this code snip might be of value as well http://jsfiddle.net/EGZxJ/ which came from http://joonhachu.blogspot.com/ though I haven't tested this yet.

Wednesday, June 19, 2013

HTML 5 Game Tutorial

Here is a link to a great HTML 5 game creation tutorial.  Even if you are not a game creator there are still some Javascript object creating techniques that I think are worth looking at.

http://blog.sklambert.com/html5-canvas-game-html5-audio-and-finishing-touches/

The link is to the final tutorial in the five part series, but I would suggest starting from the first part and walking through the code through till the last part.

Wednesday, May 29, 2013

Mind Mapping Software Review

OK, I'm on a "Gotta get a side business going again.  I like to hash out ideas with mind mapping software.  I usually use FreeMind but I decided to take a look at what is out there. I was looking for something free or low cost that was still full featured.  For reference my main research sites where these-

Wikipedia List of concept- and mind-mapping software
Hive Five: Five Best Mind Mapping Applications
http://mindmappingsoftwareblog.com/

Well, the skinny of it is I'm keeping FreeMind but I might play with TheBrain.  Honorable mention is bubble.us for quick and simple mind maps.

  • It looks like for the open source world, the FreeMind file type has become a standard, with multiple mind mapping web and desktop applications exporting and importing the FreeMind file type.
As far as software-
  • Google now has entered the fray, with their not so advertised "Coggle" software.  I use a lot of Google products, so this looked interesting.  But after getting burned with Google's RSS reader going away I think I'll stay away from Google's fringe products for a bit.  Coggle is not as nearly as full featured as the alternative I will present here either.
  • Mindmeister looked promising.  It is web based and looks nice, both pluses, but it didn't seem to have a lot to it yet.
  • If you just need to do simple mind maps and would like to make them "in the cloud", the winner would be Bubbl.us hands down.  Very simple web interface and has all the basic stuff you need.  I might use it in a pinch.
  • TheBrain looks really cool.  It is a desktop app but there are versions of it for the big three OS's (Linux, Windows, Mac).  You can link any kind of files directly into your mind maps which I found interesting.  I held off because it is a download the pro version download and then after 30 days TheBrain downgrades itself to the free version.  I might test it out later but Idon't want to get sucked into buying stuff when I don't have to, as my budget for my business is very, ah, lean...
  • FreeMind reigns supreme right now still.  I don't like that it is a desktop application and I don't like that it has a Java dependency.  It doesn't look quiet as cool as say Mindmeiser or TheBrain.  But it works for my purposes for now I guess.  Maybe I'll revisit this in the future.
There are other tools out there, most of them cost $$$ or didn't look as promising as the above.  Disagree? Know a better tool?  If so let me know in the comments.

Monday, May 06, 2013

Webmatrix 3: Hold Off

I found a bug with Webmatrix 3 that may only happen to specific machine setups, which is this

http://stackoverflow.com/questions/16392844/webmatrix-3-sql-server-ce-4-busted


Not saying this will happen to you, I've read a bit and apparently most people claim everything is working great for them with Webmatrix 3.  But to be honest unless you are doing a lot with Azure or non razor development I would HOLD OFF installation of Webmatrix 3 just in case.

More info here http://forums.asp.net/t/1903867.aspx/1?WebMatrix+3+SQL+Server+CE+Database+Read+Only+ID+Column+Cannot+be+Modified


Monday, April 08, 2013

SQL Server Join Hints

Here is a link to a great article explaining SQL Server Join hints...the how, the when, and the why to use them.

http://www.mssqltips.com/sqlservertip/2917/sql-server-join-hints/

From the article-


"In summary, here's when to use the various types of join:

LOOP JOIN
Query has a small table on the left side of the join
One or both tables are indexed on the JOIN predicate

HASH JOIN
Tables are fairly evenly-sized or are large
Indexes practically irrelevant unless filtering on additional WHERE clauses, good for heaps
Arguably most versatile form of join

REMOTE JOIN
Same as hash join, but good where right side is geographically distant
Only suitable for INNER JOINs
Not suitable for local tables, will be ignored.

MERGE JOIN
Tables are fairly even in size
Works best when tables are well-indexed or pre-sorted
Uses very efficient sort algorithm for fast results
Unlike hash join, no memory reallocation, good for parallel execution

And if in doubt - let the optimizer decide!"

Wednesday, March 20, 2013

HTML 5 DataList Key Value Work Around

I like the new HTML 5 datalist element.  But most of the time when I deal with autocomplete drop down type stuff it is usually in key value pairs read from a database.  The datalist doesn't (too my knowledge) support this out of the box.  But you can add an attribute of say id to each option in your datalist, and then use a little jQuery to grab that id value for pushing back up to the server onsubmit.  Here is a basic example just to get you going.



 <!DOCTYPE html>  
 <html lang="en">  
   <head>  
     <meta charset="utf-8" />  
     <title></title>  
     <script src="http://code.jquery.com/jquery-latest.min.js"></script>  
   </head>  
   <body>  
     <form name="test" method="post" action="">  
     <input id="datalisttestinput" list="stuff" ></input>  
       <datalist id="stuff">  
         <option data-id="3" value="Collin" >  
         <option data-id="5" value="Carl">  
         <option data-id="1" value="Amy" >  
         <option data-id="2" value="Kristal">  
       </datalist>  
     <br /><br />  
       <a href="javascript:GetValue();">test</a>  
     </form>  
     <script>  
       function GetValue() {  
         var x = $('#datalisttestinput').val();  
         var z = $('#stuff');  
         var val = $(z).find('option[value="' + x + '"]');  
         var endval = val.attr('data-id');  
         alert(endval);  
       }  
     </script>  
   </body>  
 </html>  
Update: You can also do <option value="3">Collin</option> like you would expect on some browsers, hopefully all soon.

Friday, January 18, 2013

Sharepoint 2013

If you are an old SharePoint hack, the latest release of SharePoint 2013 might be exciting for you.  If you are coming into SharePoint as a complete noobie, I'd advise taking a pass. I've been fooling around with it for a few weeks off and on now, and so far I'm very under impressed.

I've run into all sorts of configuration issues that cause needed admin menu links (like to the design manager) to be missing or some features to not even work at all.  I'm having a hard time getting simple jQuery plugins to work even though 2013 SharePoint is advertised as being HTML 5 / Javascript friendly.  I'm sure I'm doing things wrong, but it shouldn't be as hard as it is.  Sometimes if things seem to have a steep learning curve to get hello world working I lose enthusiasm for them quickly.  Might be my bad I guess.  As I get older I just want things to work as advertised and not have to f**k with them to get basic functionality going.



Wednesday, January 02, 2013