Monthly Archives: January 2011

Does being vindictive pays off?

Yesterday redditors brought Remember to always pay your developer up to the front page. In case you missed it here is the screanshoot of the now famous webpage. In a nutshell, some developer haven’t been payed for his work and he thought this is the right way to remind his customer of that.

I’ve been in these situations before and I know how it feels not to be payed for your work. But I wonder, is this the real way to deal with these kind of customers? Beside legal implications, one more thing to think about here is reputation. If it comes to notion that you are a person who do these type of things to your customers, you are in trouble.

Let’s give it a thought. What are the reasons for a customer to avoid paying you? First and obvious reason is, customer doesn’t have any money. In that case you can only wait for him to get some money so he can pay you for your work. Of-course denial of service is no option here. You should let him run his site so he can earn some money. In my opinion this type of misunderstanding should be solved at the beginning of cooperation by evaluating customer’s ability to pay you.

But what are the reasons if customer has the money? I think there are two options:

  1. Customer doesn’t value your work so he thinks you don’t deserve to be payed.
  2. Customer planned from the beginning not pay you and deceived you intentionally to work for free.

In my opinion every other case is just a variation of these two. Let’s see the first option. If customer believes your work is of no value you need a way to prove him otherwise. Maybe this developer is doing just that. He brought the website down and allowed the customer to recognize the value of developer’s work by measuring his losses.

The second option is the worse one of all three mentioned. Because customer never had any intention to pay you. His only intention was to use you. You can’t change his opinion in any way. These kind of people only submit to the hand of law. Only contract can save you here because they never going to sign one. If customer doesn’t want to sign a contract then there is something fishy going on.

For the end only advice I can give is that whatever your preference might be in dealing with nonpaying customers you should always try to put feelings to the side and think of the outcome you are trying to get. 

Chrasks – Chrome plugin

During New Year holidays I wanted to learn more about creating Google Chrome plugins and using localStorage. Logical decision was to unite these two into one idea and create something useful.

Result is Chrasks Chrome plugin. A simple task managing application.

You can download packed version here. Nothing fancy, just enter a task in textbox, press “Create task” button and your task is hopefully saved. Local storage is used as persistence mechanism. You can checkout main javascript file here.

I also have to give credit to for lovely icons.

Twitter accounts feed application

This post is a continuation of my previous post. I will explain how to implement a job interview application I was given last year. Let’s call it Twitter accounts feed. In case you missed it here are our tasks:

  • Build PHP script that will pull Twitter feeds for each selected account, merge them and sort by time of post and return as JSON.
  • Create JavaScript code that will send request to the above PHP script and print response as HTML.
  • Implement sliding functionality for switching the panels on page (existing panel moves to the left, new one arrives from the right side replacing existing one).

Clearly this application can be done without the PHP part, but the purpose of this is to also test applicant’s PHP programing skills. As you may assume I already written this application and shared it on github. You can find source code here and demo here.

Basically it goes something like this:

You have an index.html file which is the first file that is pulled when you visit demo page. Within it’s <script> tags it tells browser to load two javascript files twitter-accounts-feed.jquery.js and sliding.panels.jquery.js. First file is the main javascript file that handles the execution of this application and the second one is jQuery plugin for adding that super cool sliding effect to the panels.

First file handles the submit event of the main form. After submitting the form it pulls feeds from fetchfeeds.php script in JSON format and renders it as HTML panels. Also after html is generated the sliding effect is applied. fechfeeds.php script is using two classes TwitterFeed which represents the feed for the account and TwitterFeedCollection for representing collection of feeds.

For now you can just look at the source code and code comments on github but eventually I will write proper tutorial on specifics of each file.