Tag Archives: article

I have 10 days to bring an open source project to life

I am on a vacation until January, 23rd. Vuhu!

And you know what that means. Gym workouts every morning to make the spine muscles strong again. Relaxing afternoons on the good old couch. A quick walk in the park. And at last, a time to work on something that doesn’t have $$$‘s written on it. It’s been all capitalism for me in the past few years and a hippie college days were long gone. I want to do something for the open source community for a change.

Contributing to the open source has always been my desire. But times were tough and I only recently gained financial independence to stand on my own two feet. In the mean time I’ve been using open source software and made my living out of it. Even this post is written in a Firefox running on a Ubuntu installation. But enough about me let’s talk about the project.

Every day for the next ten days I will work on a open source project. I will use this blog to document as much as I can of my decision making process. This includes strategic decisions, requirements gathering, diagrams, architectural decisions, code samples, guides and anything else that I think will be interesting for a community to know and get a feedback on. I will try to put my knowledge, experience, and creativity to good use and you will be given an opportunity to witness the birth of an open source project.

I will try to make continuous stream of posts everyday:

  • For every open source project good documentation is crucial, and this is a step in a right direction
  • You will be given opportunity too give feedback and influence project future
  • We can collectively learn by discussing project development and learning from each other
  • Future users will know why is something implemented in a certain way
  • And interest from the community(if any) will give me a will to continue with my undertaking

And now on to the crucial thing that I need your feedback on. What project idea should I undertake? What software does the community need that I can fulfill with my field of expertise? Do you remember any library that you wanted to have and thought: “Oh, it would be cool if there was an open source project that implemented this for me”? I have an idea set on my mind and I will go on with it if there are no other options. But I would like to hear other opinions about this.

Also I am aware that 10 days isn’t much, but in my opinion it will be enough to get the basic stuff done and get to the version 0.1. Later on I will continue to maintain the project and hopefully get it to the version 1.0.

Like any other attention seeking blogger I will submit this post to Hacker News and Reddit because those two communities are the ones I respect the most and would like to hear their opinion so you can discuss this post over there.

If you are interested to be involved in the project then you should contact me on twitter and subscribe to keep yourself updated.

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. 

Always finish what you started

Past year was a very productive for me. I’ve been working as a web developer for a small Belgrade agency called KlanRUR. They base their business around computer games and my responsibility was everything that had to do with their websites. I was happy, worked with a bunch of really great people and the pay was acceptable. But something bothered me.

You see, I left college in order to get this job because I needed the money at the time. And whenever a thought about unfinished studies came to my mind I became depressed. That thought was something that was sitting at the back of my brain holding me back from dedicating myself completely to the job at hand. Decision to leave my employer at the time, was inevitable.

So I saved some money, set a New Year as a deadline for finishing my studies and resigned. But listen to this.

The very last day behind my desk, as I was packing my stuff and preparing to leave, my mobile phone rang. A gentle female voice on the other end of the line informed me that I was selected for a first round of interview at online startup Vast.

There were some job openings during August at Vast and I applied for a position of front end developer. And they were calling me like 2 months later. Completely forgot about them. To tell you the truth I was excited at first. My first thought was screw studies, I am only finishing them so I can work at a company like Vast.

It turns out I am not an idiot so I passed the first round. The second round was like a small test project done from home. I’ve received an assignment trough email and had 2 hours to send back a complete solution. Nothing really hard but somehow, I have managed to blew it. You see, I use a mobile internet, so I share ip address with everyone in the area who owns a mobile phone or mobile internet. Consequently the only response I was receiving from Twitter API was that I used up all of my API calls. It was very frustrating.

I managed to hack something up, and sincerely that was a complete pile of rubbish. I knew I’am not going trough this round. But that did’t kept me from fixing the project the next day. And it won’t keep me from publishing it on this blog.

In the next few days I will publish a series of posts which will hopefully explain, how you can finish this assignment yourself. Basically these posts are going to be tutorials about php, javascript, jquery and css, so stay tuned.

What is a CMS?

To most people CMS is just a buzz word. One word that sales people use when they want to sound important (or confusing). To state it simply, CMS is a short way of saying Content Management System. What these three words hide beneath this vague abstraction? Well first read my opinion on purpose of CMS:

The main purpose of Content Management System is to lower the cost of managing your content.

Real representation of cost can vary. It can be money, it can be time or anything else of value that you have to give up in order to manage your content.

Take a look at this diagram:

First of all CMS is a system. And according to Systems theory, a system is represented by input, system it self(attributes and behavior) and output.

So basically, CMS should represent a black box for you (in this case red). Theoretically all you have to do is input only necessary “stuff” into system and wait for desired output. Everything in between should not be of your concern. It should be the concern of the CMS developer. It is his response-ability to create a good system structure so that CMS can fulfill its purpose and lower your costs trough automation and efficacy.

In real life, CMS is represented by software. Usually a web software. And there is a lot of it. I mean thousands of different implementations. As if every developer on this planet tried to build one for you. Only thing that separates these software apart is their system structure. For example, they are adjusted to work with different content types (documents, slideshows, images, video). They have different behaviors, some are simple blogging platforms, some are enterprise software for holding sensible information and some are online stores.

Which one to choose? Well this is a broad topic and requires an article on it’s own. Usually it depends on what output you require and what inputs are available to you. CMS software should bridge these two together. And you should choose according to your requirements and CMS purpose, not it’s popularity.