Adsense for Video…
I have recently been in the process of creating a new site that I want to launch and found that Googles Adsense for Video would be perfect for the readers as it should provide a lot higher return that standard text links. It so simple and seemingly less intrusive for people to click “play” than it is to click on a link that whisks them off to another site where the content isn’t really what they were looking for. I am hoping that the removal of the “another website” barrier will encourage clicks and hence provide a higher return.
One item that I have been having difficulty with is the youtube integration with the Google Adsense platform. A week ago I tried to set up my account only to recieve :
500 Internal Server ErrorSorry, something went wrong. A team of highly trained monkeys has been dispatched to deal with this situation. Please report this incident to customer service.
Also, please include the following information in your error report: HmVVAjnMHQqn6VSUYWKdTiI225odwW8TH6H63i6bPI8G2QyEQqHNDvxXz-zO 7YQJDjYW0XYIig4cYdaRkxmjqZustIgkbFxGmNB4Gl6FaNVlA89RHPsYLOWn xx7iVJ51YaPUk9oF8XMwrYgB-ORvAB8YNLPUsW3pIR7rFt05SYukbCNSnO6h zZU1OYoPCo9o4vFcobf-ZqhBzBev2J7-CJ-8s2ThXiD7NbMpmZtp5JvRtY-a cv1PV48y4EoN-17OGSXB4shRZ6StM8X4otf0M_JNLH7_7KBooi94FAfaZtV4 2LF84wvFxA_0YlxLW1EhJ5uPsBxF5bWNA_vdTqYll6F4cfSmh7k2GyZGS6pa TR7lue6U6IIwP1CRnMEQiWJFuP74w_9GlwoqsFWmnwFzQe8r8OFsEVnfSLn- VbU8o0qtmVkVHnwGHP6WZHtMf8z_CltjLpHDrtAzLXRn635P2ktfBLkURnkP 1-yE8JZBJth8fSLCd-L4X-7eq7a6nSFU-RYcRGpzNE5Q3KRooyAPe8nMCwjW ZgIT98tCF6hKX3kqaw-RHR5jCWcTEAc2tDBpF-Vm3FL4-KAZJ4aPTQlt_GOC nvwq1Snc6xF5GXsD9nckK_Ty1-ywya6ef1D0K3YrpZI8DcmeSFPqqi55IJBn abA-InS398ttIn2E2D4ix08W-4dUYwp4Yalj9_w0Z3dhOLoI3vxE1w5rSBaN FB75sJlE9gSjT-b5Cr6JxnoM22-Yilbmly1yneEVma2I1UlXA2HxBj29SsNH JuwjGrG-d_KyaQrvdDIwrExni6G7ZaYKHM6OyHCadP22b4D_FdV1tuEZnG83 Xr7aWFu4bZu_ntJKimBBze7ruCZ0nnSPGxX8EnVpVev6tolgqbX0EL31i6HV YdYjRjkxRrVhiWGvIIlx49OvCPUi0quuCz6iJujYeS0geZ5F3GZIB73T_VHi FLF9sEjVGI8s7N8ENbcn8mdijdgeJouis3i2-sroUftr_nlqe9V4JrwuztfS FFpLSqkFpLYqWoJWVjkAm-IHmH5Int3KwQVnauVawode46weMzcf1c9En_Gi Lqi9jwYcZdBHzTd7ktA2u82Yb_U2ViHl-fM3sxFXxPU0Z_Uc62hZ5iAFsGYZ ESvrRQX-zi4GDfI1USaZBcrWDRQ1wYslALogELTSaHjimUNGRpxq5iUrYfTE j6taycCMaO06ShIggLUWHyct3QiPLaxjgmWa5aKlep7ApSE59Xn7ETTG4mRf bOr2ZBuzITYRs-C8gO174mD93v-X4S98FC3DPz26oqedOuov_jrCjLipjIw_ WfXG_Q8HM6g8vxASVs7H32jpgvZ9UlNhGEmcThxceFsotpBatF7ywbsfUhvt MEF5A1agwigzZuvMT4qZJrvkAt0H941YuqBH5RmIDltfIuMUbXSjuHDi0WJA _qZxDzt_3qOD6oMeCk9uAb06Cy-pMjqC2ikHFkhp9JYms9hTKgMAcjI9kv58 3dn190dTuOD6hFD9_AE9-wO0TRlwhamR72HPmG9zqSoZB53JLO7l4RSoQNx_ wWeqic55i-qGRlUaM0e5FUwg9sJxFwSRMr9naDcA7m-3Qrt85sV7_F5GqrPp _KgSseS2JpJBoFNI5p-aSgo-deSP5rkh8h6E0ke03_HYorlZmjEhlxRKaiRu QH7d0WdC_JJhVDxspohO0vMeboP_Fs41sKA3DXd7ZNAcGhPKSZEdVFm1Cebm GhoS1DmYCANmiZGBHwLYxvWccEvmtfcauQTeCBRVeGaWjdEhJ6fIRi-vEgyB w3uOh0eHC7KLdPjaWkPPkWHV
Unbelievably annoying. Then some notices appeared on the youtube site to indicate that they were “undergoing some servicing – I though “fair enough – I’ll call back later.”. Calling back a few hours later and I was presented with the same error.
So I decided to leave it a few days and have just now tried again to setup the account and player. This time I was able to get in to customize the player and set categories, but as soon as I clicked “Generate Code” – it was back to the same old “500 Internal Server Error“. I don’t know what is going on …
Is anyone else experiencing anything similar?
RSS And Ajax – Is That What Web 2.0 Is?
When I wrote my post RSS: How to integrate feeds into your website with AJAX… I never imagined it would be as popular as it has been. People from all over the world have dropped in to either download the code or comment about it. It’s great to write something that people find interesting and feel that they can make use of as it makes you strive to keep on doing it.
When I check Google Analytics the post mentioned above is always the most popular link. It makes me wonder about the applications and situations that people have utilized its content for. Unfortunately the post is a consume, grab and run affair for most its readers.
This jump in, read, disect and apply mentality is a lot of what is driving the Web 2.0 movement. In knowing just how small this blog is and the amount of traffic my post has received – I can only assume that more professional sites are getting hammered for information about the two main Web 2.0 technologies. Namely RSS and AJAX.
RSS
RSS has been the cornerstone of bloggers traffic generation possibilites for years now and in nearly every popular website you will see reference to it on more than one occasion. The need to distribute content and market yourself all at the one time is key to RSS’s success.
AJAX
The savior of the webpage interface. The ability to update page content without refreshing the whole page and hence downloading less content and causing dramatically less flicker annoyance has cast AJAX to the front of the line when it comes to website/web application development. To say that your site doesn’t use AJAX is like saying there was no need to upgrade from Windows 3.11 for Workgroups.
These two technologies have really launched the term Web 2.0. They epitomise everything that it is. Developers rush to be the first out the door with another way to use the two – yet with no real need for the end application. A buzz is generated around the initial “Oh look what I can do!” and turns into “Hey – you should see what they can do”. This mentality creates the rolling stone movement and all other developers want to match or beat the coolness of the last “company’s” release.
In the end some big companies roll in and buy the main players and the smaller guys pull the shutters down. Then the large companies find they have applications that they dont really know what to do with.
RSS feeds have been pilfered beyond believe by Advert junkies. Simply taking the content from a feed and plugging it into their own sites with ads all around it. Creating enough of these types of sites, all linking together and you’ll end up having better pagerank that the site you stole the content from in the first place and as a result reduce the original authors income and killing their buzz into the bargain. Who wants to continue blogging when they don’t even get credit for their own work.
AJAX is a technology that puzzles me. I think that it has only been so widely accepted because there are no other proper alternatives. Its shocking that we are still programming webpages in HTML at this stage. Javascript is archaic as well. Where are the innovators when you need them? Who is saying “HTML is insufficient for anything dynamic and AJAX is just a service pack release for it”.
It is for these reasons that Web 2.0 is dying. Nothing tangible – just two technologies wrapped up in a little buzz.
I’d love to hear your thoughts on the matter…
Its now 2008…
Eight years into the new millenium and all the new year resolutions are set. The fun this year will be trying to accomplish them all. Its always been said that the most productive people have diaries and little lists of “things to do”. These little lists are like mini contracts with yourself that states what must be done before the end of the day/week/month/year. The buzz of fulfillment when all the items have been checked of is quite powerful.
This year I have decided to write my new years resolutions on a piece of paper and carry them with me everywhere in my wallet. I want to ensure that I am constantly reminded of what should be achieved this year.
Its very easy to just shrug your shoulders and say “ah well” when you look back on a year and wander where all the time went. I dont want 2008 to be like that. I am hoping that the resolutions in my wallet will be a poke in the right direction and a focus that will enable me to take major steps forward in the progression of McNicholl Holdings.
To think one year ago I was Buying the Domain. It seems so primitive now. Since then I have been programming frantically, in the evenings after work – trying to build a business and a future.
I find the festive time a very good chance to reflect and review on what the year has delivered and to prepare for what is to come.
I think now is a good time to reflect on my best blog posts of 2007 (listed in no particular order):
- Programmatical Database Optimisation
- sfGuard and Implementing Security in Symfony…
- RSS: How to integrate feeds into your website with AJAX…
- Learning AJAX with the Prototype Framework…
Heres hoping 2008 will be the start of something great.
May all of you have a happy and prosperous new year!
Categories: General
Christmas Cracker Jokes…
Crackers are the mainstay of any Christmas dinner and no matter how expensive they are they are still a source for the worst jokes. I thought a few jokes on the blog might brighten your day, but I appologise in advance for these :
- Why did the boy throw his toast out of the window?
- Because he wanted to see the butterfly.
- What do you call a train loaded with toffee?
- A Chew Chew Train
I hear you cry “Please stop, oh please please stop” – but no. Here are a few others :
- Why do cats have furry coats?
- Because they’d look silly in plastic macs.
- How do you keep cool at a football match?
- Stand next to a fan.
- Where do cows go on holiday?
- Moo York.
Ok! I’ll stop now.
I just want to know if they actually hire people to write these jokes or if a room full of monkeys with typewriters slap at keys until a few ledgible sentences are formed.
Does anyone else out there remember some cracker jokes?
Categories: General
Company Blogs and Adsense…
I have just finished reading Why AdSense Might NOT be Best for Your Blog on Darren Rowse’s Problogger Blog.
Everything that Darren has said is correct – its some of the comments that I find odd. The post itself revolves around 7 reasons that Google’s Adsense program may not be the best money making program for your blog – finished of with the customary “what do you think?” question to his readers.
A few of the commentators feel that Adsense on a company’s blog is a bad idea. I think they have missed the point entirely. For a start – there are many different types of companies. Most firms sell a product or service and this generates revenue – Revenue that they can utilise for their future endeavours. Other companies provide a service for free and require other revenue streams to survive.
Digg, Reddit, YouTube and their ilk had venture capital funding and their business model (in the early days) was ‘maximum exposure’ and ‘maximum userbase’ with a view to being bought over by a larger firm.
No Funding
Firms that do not get or do not want to get venture funding have to grease the coffers with something. Most advertising programmes will not entertain your website/blog with their ads until you have a certain amount of eyes glazing over your pages – so in the beginning (i.e Zero Pagerank, Zero visitors and Zero Income) some would say it’s best to have something coming in than nothing at all. This is where Adsense steps up.
Darren Rowse started with Adsense, as to did all the other bloggers that are popular today. This is now their business. Darren has now stated that on problogger.net – he has outgrown Adsense. If he can optimise the space on his blog and capitalise on its popularity then obviously private advertising will return higher than adsense – so the change is simple business logic. This takes time though, private advertisers don’t come running to your door just because you have a website.
So – back to point – Adsense is the best place to start generating income for any fledgling company/self-employed/part-time blogger simply because it brings in money until the higher return avenues open up.
p.s. Even established companies find Adsense to be a valuable avenue of income – e.g www.translink.co.uk – This is Northern Irelands main train company with gross income of close to £1million per day. They still use Adsense on their website.
Categories: Ads
It’s 2 Weeks Until Christmas : Are you Ready?
With only 2 weeks to go I have just realised that I haven’t bought any presents nor had any ‘christmasy’ inclinations. What made me realise? I hear you ask….. Well – every christmas the free TV channels start playing high budget films. Roll in ‘Oceans Twelve’.
Since I work a full time job alongside setting up a business of my own its been :
while (!(hasMentalBreakdown())) {
work();
home();
work();
sleep();
}
So here starts the countdown until Christmas! Do you have all your presents bought?
Are you ready for Christmas?
- Yes - I have everything bought! (43%, 6 Votes)
- It's nearly Christmas? (36%, 5 Votes)
- Just a few items left to buy. (21%, 3 Votes)
Total Voters: 14
Categories: Uncategorized
Programmatical Database Optimisation…
The application that I am programming at the moment dictates that an object can have many participants. For improved usability the owner of the object needs to be able to add and remove participants en massé.
Creating this functionality is simple but ensuring that it is done efficiently requires some further thought.
A = List of Users who currently have access to the object
B = List of Users that should have access to the object after updating
B can contain none, some or all of A.
Method 1
The easiest thing to do when updating the list of participants is to delete all current participants (A) and grant access to all new participants (B). In doing this we would be executing two, possibly bulky, of an RDBMS’s most time intensive SQL statements :
- DELETE FROM X WHERE Y in (A,B,C) and D=E
- INSERT INTO X VALUES (A, B, C)
Method 2
Another method of setting the new participants would be to only update what has changed in the list. Doing this incurs an additional SELECT statement in order to determine what needs to be added and removed :
- SELECT * FROM X WHERE Y=Z
- DELETE FROM X WHERE Y in (A,B,C)
- INSERT INTO X VALUES (A, B, C)
The question now is :
Which method is the most database efficient?
Method 1 gets the job done in two SQL statements but method 2 can possibly reduce the number of inserts and deletes necessary while at the same time adding an additional SELECT statement.
To emphasize this issue further – consider the following :
In my application an object (A) can contain child-objects (B). Each child-object can have an individual list of participants – this list is a subset of those participants in the parent object.
If a user is removed from the participant list of the parent – he/she should no longer be a participant in any of its child objects – and hence should be removed.
In doing this the same situation arises above :
Is it best to do a blanket DELETE statement across the participants table for the parent object and each of its child objects for the user ID?
OR
Execute a SELECT statement to find the list of objects and child objects that the user has access to and then DELETE as necessary?
Which method in these scenarios is the most efficient?
Any thoughts?
Answers on a postcard….
Categories: ALM, Programming
sfGuard and Implementing Security in Symfony…
Creating web-based applications using Symfony is extremely simple. This is something I stated last month in my post Symfony : Who Needs a Development Team?
Over the last 2 months I have created all modules that enable alpha release level functionality and at the moment I am attempting to secure the system.
This is where the true mental arithmetic begins. Creating the modules and UI for them in Smyfony is easy. Securing them is a different matter altogether. Security is one of the most difficult aspects of the appliciation to design. Getting it wrong can result in major issues.
Luckily, Symfony has an active community that will help as and where they can – which is great when learning how to get the best out of a framework. This same community has provided many plugins for a vast array of uses and this adds extra value to the use of Symfony. One plugin that initially caught my eye was sfGuard. Here is the sfGuard description :
The sfGuardPlugin is a symfony plugin that provides authentication and authorization features above the standard security feature of symfony.It gives you the model (user, group and permission objects) and the modules (backend and frontend) to secure your symfony application in a minute in a configurable plugin.
After installing the plugin via the instructions here I quickly discovered that it secures at system level. System level security is great for applications that have very generic user groups – but most applications aren’t like this.
I need item level security. This allows me to specify specifically what a user can and cannot Create, Edit, View or Delete. If I have a multi-site blogging system and an Editor is assigned to each site (much as an Editor is assigned to one magazine or newspaper) – Having a system level securitiy implementation means that groups are created like this :
- Editor
- Journalist
- Proof Reader
Having 3 sites means I should have 3 editors – one for each site. Giving each Editor the “Editor” privilege doesnt prevent them carrying out “Editor” functionality within each others site. This is one area where sfGuard falls short.
In creating a secure solution I am in half a mind whether to extend the sfGuard plugin to meet my needs or create an inhouse solution of my own. Extending the plugin or creating an inhouse solution means the alpha release date has to be put back. Also – extending a plugin is a bad idea as it means that any extension to in, in its current version, could be made redundant if a new version of the plugin is released.
Decisions, decisions…
Categories: ALM, Programming, Requirements
Symfony : Who Needs a Development Team?
I have recently been developing an application on a WAMP stack and found the exhaustive process of programming a framework counterproductive. At the moment my development team consists of 1 person. Me.
In order to maximise my time I found it necessary to investigate some of the available PHP frameworks that were on offer. Here are the key ones on offer :
There are many other frameworks available, but the ones highlighted above are my take on the best in the market.
After reviewing the frameworks on offer, I decided that the Symfony Framework was the one for me. I didn’t feel that PHP4 support was necessary and I wanted the framework code to be that bit more optimized. Programming for backwards compatibility means workarounds are necessary. Items such as MVC, caching, ORM were my main review points.
Onto Symfony itself.
I had read some reports of people having some difficulties understanding the folder structure that Symfony uses before I made my choice – but it turns out the people having the difficulty don’t really understand system design. I find the abstraction refreshing and after 1 week I now find it all straight forward.
The most difficult part of creating a viable application in Symfony is designing the GUI. Creating the business logic is as difficult as creating a database schema – one of the most pleasurable aspects of building a web application. Symfony takes the schema and creates modules containing all the functions necessary to update each table.
e.g If you have a notes table as follows :
`id` int(11) NOT NULL auto_increment,
`content` text,
`user_id` int(11) default NULL,
`created_at` datetime default NULL
… Symfony will create a module to interact with this table and create, retrieve, update, delete (CRUD) records in it. This is actually implemented by the Propel framework which Symfony has utilized for database abstraction.
It is this type of programming that is the usual repetitive mainstay of developers until they build up a library of low coupling modules. Since my development resources are so thin – my needs dictate that this unnecessary expenditure is focused in other areas of the systems development. In 3 weeks* from now Symfony will have created a functional application that just needs the GUI (read:: template) designed.
For this the Symfony Framework provides helper functions for creating forms, links, AJAX calls to name only 3. The possibility also exists to implement the Smarty Template Engine with Symfony as well – so I could theoretically outsource the template design – if I wanted.
It is for the above reasons that I ask the question : Who needs a development team?
Frameworks do all the leg work for you. The laborious tasks of writing SQL, adaptors for each database, individual modules that interact with the database are all taken care of. Symfony even creates the initial basic front end for you. All the developer has to do is add additional functionality, handle the interface for many to many objects and validate inputs. It will almost be embarrassing to say I programmed the application when it is released.
*3 weeks = 20hrs development time per week
Categories: ALM, Programming
RSS: How to integrate feeds into your website with AJAX…
Update 10th November 2007 : Please note the code attached to this post will no longer function correctly with the latest version of SimplePie.
This post is a continuation of Integrating RSS feeds into your website…
Here I will provide the step by step instructions and code samples to make this a simple task. As explained in the previous post, Simplepie is the feed parser that we will utilise for this example.
What you will need :
- Download the Simplepie application
- Download the Prototype AJAX framework
- A little knowledge of PHP, Javascript and HTML
On the front page of the McNicholl Holdings website you will be able to see the end result of this tutorial. Here is how it happens :
<div id="blog_news"><script type="text/Javascript">get_feed('blog_news');</script></div>
When the page loads the Javascript inside the div element above gets called. I have created a simple Javascript function called “get_feed” which handles the AJAX call. This will be included in the files at the end of the tutorial. Obviously you will want to include this Javascript file in your HTML in the HEAD section :