The right chair gets the job done!

I’ve been using this one chair since years until last week when it started making this weird noise whenever I move. I started to wonder if I became too fat or its just the chair. I made up my mind to think its the chair and decided to get a new one. So I went to office depot and got a nice not so expensive and not so cheap office chair.

Although I loved using the new chair I always felt something incomplete about it. I thought may be I got used to the old one little too much or I am really becoming fat. I used it for a week and I noticed few things. I wasn’t spending as much time as I use to earlier on the desk. I was coming up with reasons to go to starbucks to work.  I was less productive. It’s then I realize that my freaken economical chair isn’t working for me. I took the pain of disassembling the chair and returned it to get a new one. This time I had to up my budget and get a little expensive one out there. Its been just a day since I started using this one, but I really like it.

So, the moral of the story is: Get the right chair if you are serious about working from home. This is the reason why most companies spend millions of dollars on getting best in quality products for their offices. If are on the right chair, you will get the job done!

Video: Scrum in 10 Mins

Since most of us are quite familiar with SCRUM (the agile software development methodology), I thought I’ll post a quick video that my manager put up on our sharepoint site for the team. I liked it so much that I wanted to share with my blog readers. You may have already seen this video, but it never hurt to watch it again.

I wonder if we can apply SCRUM in freelance projects?

Freelancers, fire a client today.

I fired a client today. It was difficult. This was my first client I had to let go since years. But I think I took a right decision. Things weren’t so good with us and the project was going beyond what I’ve expected. I did work with the client previously on other projects and I never really enjoyed that experience. I tried hard to look for a win-win situation, bent a lot of rules, but never could find it. It was always loose-win.

Today I feel I have taken the most important step in re-structuring the way I do business and like I said, I feel good about it. I am trying to get rid of some client if:

  • The client doesn’t enjoy working with me but sticks around because either I am skillful or affordable
  • I don’t enjoy working with the client but I am sticking to him because I dont have anything else to do

When it comes to freelancing I think it all comes down to enjoying the work and not stressing yourself out. Stress is ok if you are a new comer to freelancing world. But for an established freelancer, one must always work with clients you enjoy working with.

Time to filter some of my clients 🙂

myView: iPhone will remain favorite among developers

Apple has been really mean to a lot of app developers. You can read about it here, here and here. But even then the bottom line will remain same; App developers will continue to worship iPhone with their lousy spent million dollar apps.

Although there are new app stores coming into the market from Nokia, Microsoft, Android (yeah, this ones quite old. I know), etc. the Apple App Store will remain the develooopa favoritiz. There are some good reasons to make a note of:

  • Apple will make sure iPhone stays consumer favorite. They’ve done it with Mac, iPod and iPhone is already super hot
  • Growth of iPhone will continue to prosper. Soon, Verizon will join the party. I can see things getting really big for iPhone
  • Developing for Nokie’s ovi will be a challenge for developers as there will be n-number of devices from Nokia… supporting each will be difficult
  • Microsoft will try and never find success with WM7. Microsoft has never been good with mobile. Stupid people.
  • Developing for Apple doesn’t require anything. Seriously, no money, no idea, no programming knowledge (ok, little bit), no purchasing costly IDEs)

So the bottom line still remains the same. App store dogs will continue to serve the master.
Hey, I’m one among them 😉

About myView: myViews are totally my point of view of things I see in the industry. Could be a good analysis or just stupidity.

Nitty bitty tip of the week (or month):

You’ve been carrying your photos, documents, project files on a removable portable drive for sometime now. But have you ever thought about carrying the whole development environment? Image if you could carry PHP, Apache, MySQL, Perl, Java, NetBeans and Python environment in your USB Thumb Drive. So that all you have to do is, plug your USB Drive to any computer and have all the environment ready to use, code, debug, deploy etc. give you open source and free tools to take your favorite applications and/or environments in a portable drive (USB thumb, iPod, External HDD). So that if you are stuck at your friends place without your work laptop, you can just stick in this USB and get all the files, environment you every wanted?

I currently carry PHP, Apache, MySql, NetBeans, FileZilla and Subversion in my pocket and find it really easy to just plug it to either my work laptop or my friends laptop if I have to work on something urgent. I am also trying to load Visual Studio Express and MS SQL Express on my USB drive.

Nitty bitty tip of the week (or month):

Well how many times dint it happen that we the designers and/or developers had to test our work on different browsers for cross browser compatibility issues. It could be difficult to do so since there are quite a lot of them in different forms and versions. People still use IE6 and some nut cases have already migrated to IE8. Firefox releases a new version every other day and some grand pas’ still want to use netscape 4. Not to forget Safari. Like I said it could be difficult to test out on all these 50+ browsers.

Come in A neat online tool that shows you how exactly your site looks in more than 50 web browsers with or without flash, javascript, activx, etc. You can also set the resolution of the screen you’d like to view. The premium account at costs about $30 a month but there is free access to guest if they can wait for 30 mins for processing the shot. The guest access could get litre annoying as you are required to extend the timer every 30 mind if you have multiple shots to view.

All in all a nitty bitty pinky tinky tool to capture those boring shots and cry about fixing the never ending cross browser compatibility issues.

A tip for clients: Use browser shots to annoy your developers on cross browser issues. Designers and developers always loose their minds when it comes to cross browser compatibility.

Update: Screw Use FireFox and get this addon. You can add a lot of browsers to it. Just follow these steps:

To add more than 50 user agents, download and select “import”! (without the override option!) by Hellman658

myView: Free open source is not really free. It’s expensive!

Free Open Source is not really Free

Free Open Source is not really Free

So here’s another story that I wanted to share with fellow freelancers and my clients on how expensive so called “free” open source software can get.
This incident occurred a couple of times but only today that I realize how much expensive the open source bang wagon could be. You can call me a tube light for realizing this so late.
I worked on a Joomla 1.0.x (open source and quite an established php cms software) based project a year back for a niche community of houseboaters. We spent weeks configuring the site to make it work the way my client wanted. Adding new components, creating new components, complex customizations, design, SEO, templating, etc. etc. and it all looked good at the end. The client was very pleased and so was I for what I have created out of Joomla.

It all went fine until yesterday when the site got hacked and Google kicked it out of its search results. The traffic went down drastically leaving nothing but few thousand users. Turns out that my client wasn’t really paying attention to the growing security concerns of Joomla nor was he really interested in upgrading the scripts to the latest version. Anyways, I had to act quickly and figure out the best possible way of getting the site back on Google and make the site secure once again.
I spent one whole night researching and trying to figure out the problem.. finally I found the malicious code and removed it. You can read it here.
After getting it back on Google, our challenge was to make it secure. And the only way to do that was to upgrade to the latest version of Joomla and all the components, customizations etc.
The site has grown exponentially over the year and with so much customization, it has become quite difficult to bulk upgrade the site. Now the whole upgrade project costs almost same as getting a new site.
The point here is, although free open source software comes for free, you still need to shell out quite good amount of money to make it work the way you want. Plus, maintenance and regular monitoring is essential. This hidden cost of maintenance and upgrades could hurt your business model. So, make sure to include it.
Freelancers, a tip for you would be to explain the hidden costs to your clients and sign them for a maintenance contract!

About myView: myViews are totally my point of view of things I see in the industry. Could be a good analysis or just stupidity.

Google marked the site as malware

My client reported to me that his Joomla site has been marked as malware by Google and in Firefox and Chrome the users are alerted to avoid visiting the site. At first I assumed someone might have flagged the site as malware just to have fun or out of curiosity. But I still went ahead and did my little detective work and learned that a malicious user might actually have posted something creepy in the forums or in comments. After regorus searching through the database for scripts for hours I couldn’t come up with any. Then I researched a little more about the problem and learned that hackers are finding ways of inserting an iframe content on popular cmses like joomla, wordpress and drupal with ease. So my next step was to download the whole site on my local computer and do full directory scan for keyword “iframe”. Turns out, there where plenty of instances, most of them were pure hidden iframes to some malicious urls.

One at a time I removed them and then uploaded the files back. I then requested a review in Google Webmaster Tools and the next day… voila… the site was back normal.

The lesson I learned was to insist my clients to keep their sites up to date on software upgrades and backup daily.

At the end I felt quite happy to knock this one down.

Optimze SQL Queries for UserControls in Sitecore


Many times we have to deal with the process of getting content from a database, then sorting it and then displaying it to the user. Recently I was given a task of optimizing a user control on the website that pulls upcoming and past events for a particular category. The way this thing was programmed was something like this:

  • Pull all the event data  irrespective of the category. More than 1000 records.
  • Put all events starting from current datetime in upcoming list
  • Put events dated prior to current date in past list
  • Grab the page category name and filter both upcoming and past lists
  • Display events in respective placeholder/view

This logic was spun across the site as the upcoming/past event controls were almost everywhere. It was taking up to 5 seconds to run this whole process for each user, thereby making it really slow when there are 1000s of users. The first thing I did to fix this is analyzed the queries using Sitecore’s built in X-Path query builder. I could clearly see that although grabbing all the events from the parent directory was taking less time than filtering out events per category. But I was certain that when we fit this filtered data into respective user controls things will be faster. Here’s what I did:

  • Modified sitecore query to grab events per field name.
    Using something like (C#): /sitecore/content/calendar events/calendars/meeting events//*[@@templatename = ‘Meeting’ and @Short Title = ‘” + Sitecore.Context.Item.Name + “‘ or @Short Title = ‘” + Sitecore.Context.Item.Name.ToUpper() + “‘]
  • Now that I have events specific to just one category. Only 10 to 20 records. I sorted them based on currentdate to see if its an upcoming or past event.
  • Display events in respective placeholder/view

This logic took less than a second to process the whole thing. Not sure why the previous designers thought about it before. So, the moral of the story is, If data is huge collectively (as in all categories here), pull only what you need. Others may argue.

myView: Open Source hobbies slowly shifting to earnings

I used to see people create open source scripts/softwares and give out for free to the community and rely on donations to make few bucks out of it. Not really a good source of income but wouldn’t hurt if you do something as a hobby and people donate you some cash when they use it. But relying on donations may not fetch you as much as it would if you sell your script for a buck or two.

The way I see it, open source hobbyists are becoming smarter in business models and instead of giving the product for free, they are charging 99 cents to 5 bucks. A silly Magento CAPTCHA module I came across sells at $4.99 and most of the scripts from the vendor are of the same price. The vendor also has a community forum for people to help each other if they fall short of handling support tickets.  With this kind of business model you (vendors or freelancers) are sure to make good profit. iPhone Apps are another good example of how people are being tempted to own an app for just 99 cents. Considering millions of downloads of each app, you will be quick to make a million.

My advice to freelancers building products in free time, sell your product for a buck or two rather than put it free.

About myView: myViews are totally my point of view of things I see in the industry. Could be a good analysis or just stupidity.