Mar 9, 2010

Voucher template

One of the document which you would use quite regularly when you start your own firm is a voucher or an expense report. You would have to file a voucher pretty much for every expense you would incur apart from salary, be it travel or adhoc purchases for your grocery. It helps when your books get audited at the end of the financial year. When you file your travel expense report in your company, you are actually filing a voucher which would become part of the supporting documents for the audit.

I have had a issue with vouchers in the past - they are generally very cumbersome. They waste your time and are badly designed from a user experience point of view. One of the companies I worked at, Talisma, had a great travel expense report template. Years later, when I started my firm, my CA asked me to get vouchers printed. Working in an IT environment, obviously I rebelled at the idea. I took the travel expense report template which we used in Talisma and modified it to make a voucher template which we use currently at Cheese.

Badly designed administrative tools act as a morale dampner. In a startup you have things more important to do than to convert numbers to figures.
I hope you would find this voucher easy to use. You can easily customize it to suit your needs. In the attached template, I have shown how you can add custom categories to track categories relevant to your need. Only cells B3 to Q36 should be edited. The entire template is designed in such a way that it can be printed in one sheet of paper for upto 26 expense items. Go save some trees!

Note: To download the xls version, please click here.
Voucher


Mar 3, 2010

The Client is NOT Always Right

The most prominent issue of concern in any service firm is how to assure client satisfaction. The prime blockade on this road usually is that amateurish clients tend to insist on implementation of their incompetent suggestions, which lands the service providers in a sticky situation where both acceptance and denial of client ideas appear to be equally detrimental.

The path that the decision makers choose depends solely on their “ideals”. One person might value his design etiquettes above everything and would not listen to any crappy suggestions from the clients. Doing this might assure a perfect product but the client would get an impression that the service provider is adamant and rude. This would be dangerous for the firm’s reputation and might lead to market contraction for them. Those who realize this, follow the flipside approach of agreeing to all that the client says. They just keep doing things as he wants them to be done. After all, it is he who is going to suffer if the product is delivered with loopholes he himself contributed. Why risk displeasing the client when we can compromise on our principles to suit his needs. This approach, I guess, might appear healthier to many although it is as erroneous as the former.


The drawbacks of both approaches need to be understood before arriving at a decision. One can not simply follow what the client expects as this would lead to a compromise on quality, which such a client would fail to realize. This not only leads to substandard deliveries to the clients, it also has an adverse effect on the service provider’s reputation, when these projects are appended to the company portfolio. The other alternative of not following the client, will obviously lead to instant dissatisfaction as the client would feel that his propositions are not being addressed the way they should be, and that his “feedback” is being ignored by the company. This might drive the client away with a negative impression of the firm’s hospitality.

A very interesting and innovative illustration of the outcomes of the acceptance of inept client suggestions can be found here. It also highlights how this approach leads to the designer getting a feeling of being agonized by the client. Those who are in this business would easily relate to this. We also worked on this comic strip to establish the consequences of following the “client is always right” approach. Click on it to enlarge.


Having criticized the “client is always right” principle, I do not imply a “client is always wrong” theory either. What I am trying to suggest is a midway proposition with a very important realization that if any relation is messed up, there has been due contribution from both sides. We at Cheese believe in “The Client is NOT always right and neither are WE.” This is why we follow an iterative working scheme giving due concern to client feedback at each iteration. In the past, we have found most client suggestions constructive and reasonable, and have always implemented them with a supplementation of our own creativity. We too have, at times, received not-so-good kind of ideas from clients, which we try to work out with them so as to employ them in a way that suits both of us. I would like to emphasize one point concerning the client attitude that, Feedback is never bad or wrong; it is the Childish Insistences that are.

To conclude, I feel that issues on client feedback are most often exaggerated for the sake of hilarity, and such humor is, in most cases, compiled by service firms themselves. I hope any such jokes should be received in good taste as they are not intended to displease anyone nor compromise on professionalism. The important point is that both sides should give due respect to each other’s suggestions, and communication should be ample in terms of both, clarity and quantity, so as to assure a healthy exchange of ideas to deliver perfection.
Reblog this post [with Zemanta]

Feb 27, 2010

Make a search with multiple input fields using PHP, Mysql

Hello developers, I am not that this is the lesser and simpler way to make a search form with multiple inputs.
I was trying to fix the issue of "or" and "and" condition holder based on uncertain inputs by users. I wrote this and it works great for me.

below image shows the form.



In this form keyword input should match with all the available column in tables

if(isset($_POST['search'])) // Check whether form is submitted
{
if(isset($_POST['key'])) // Checks the field is set(present) or not
$key = is_not_null($_POST['key'])?$_POST['key']:false; // Set the value if user enters in input field
if(isset($_POST['domain']))
$domain = is_not_null($_POST['domain'])?$_POST['domain']:false;

if(isset($_POST['course']))

$course = is_not_null($_POST['course'])?$_POST['course']:false;

if(isset($_POST['subdomain']))

$subdomain = is_not_null($_POST['subdomain'])?$_POST['subdomain']:false;

if(isset($_POST['duration']))

$duration = is_not_null($_POST['duration'])?$_POST['duration']:false;

if(isset($_POST['projectid']))
$projectid = is_not_null($_POST['projectid'])?$_POST['projectid']:false;

if(isset($_POST['addedby']))
$addedby = is_not_null($_POST['addedby'])?$_POST['addedby']:false;

$param=""; // Start a variable to use as conditional parameter in mysql query

$finalQuery = "";
// Start a variable to use as final parameter in mysql query
$kewQuery = "";
// Start a variable to use as keyword parameter in mysql query
$queryKeyCount = 0;
// Start a variable to use in variable place to put "or" and "and" in mysql query
$query = DB_query("select * from ".TABLE_PROJECT_DETAILS.""); // select query to get columns of table
$fieldName = mysql_field_array($query);
for($i=0;$i
< (count($fieldName)-1) ) if($i < (count($fieldName)-1) ) // check less one of columns count of the tables
$kewQuery .= " ".$fieldName[$i]." like '%".$key."%' or" ; // put "or" condition for keyword
else $kewQuery .= " ".$fieldName[$i]." like '%".$key."%'" ; // last "or" should not be here
}
foreach($_POST as $name => $value) { // this loop to match all the post value

$value = is_not_null($value)?$value:false; // set the value if it filled by user

if($value) // checks if value is filled
{

if($name != "search") // check the submit button value it should not increase the count

$queryKeyCount = $queryKeyCount + 1; // increase the count if any input is made by user

if ($queryKeyCount>1 && $name != "search" && $name != "sortProj") // check all the button and unwanted input
fields, it should be used to avoid adding unwanted "and" condition in query

$finalQuery .= " and ";

if($name == "key") // check if keyword is filled by user, if so then query should add above key query to final query
$finalQuery .= " (".$kewQuery.") ";
if($name == "course")
// same checks the value input
$finalQuery .= "aca_project_suitable_for ='".$course."'"; // add the conditions according to requirements

if($name == "domain")

$finalQuery .= "aca_project_domain ='".$domain."'";
if($name == "subdomain")

$finalQuery .= "aca_project_subdomain ='".$subdomain."'";

if($name == "duration")
$finalQuery .= "aca_project_suggested_duration ='".$duration."'";

if($name == "projectid")

$finalQuery .= "aca_project_id = '".$projectid."'";

if($name == "addedby")

$finalQuery .= "aca_user_type ='".$addedby."'";
} }
if($queryKeyCount>0) // check whether user is made input in any field

$param .= "where "; // based on condition set the "where" clause in query

$param .= $finalQuery; // finally put the final query to go with the query
$sortByQuery = "";

if(isset($_POST['sortProj'])) // check if sort is choosen

{
$sortBy = $_POST['sortProj'];

if($sortBy == "sortByRate") // match the sore value

$sortByQuery = "order by aca_project_star DESC, aca_project_create_date DESC, aca_acadinnet_rate DESC, aca_project_total_workgroup DESC, aca_project_name"; // add sorting condition for the query

else if($sortBy == "sortByAcaRate")

$sortByQuery = "order by aca_acadinnet_rate DESC, aca_project_create_date DESC, aca_project_star DESC, aca_project_total_workgroup DESC, aca_project_name";

else if($sortBy == "sortByWorkgroup")

$sortByQuery = "order by aca_project_total_workgroup DESC, aca_project_create_date DESC, aca_acadinnet_rate DESC, aca_project_star DESC, aca_project_name";

else

$sortByQuery = "order by aca_project_create_date DESC, aca_project_star DESC, aca_acadinnet_rate DESC, aca_project_total_workgroup DESC, aca_project_name"; }
else {

$sortByQuery = "order by aca_project_create_date DESC, aca_project_star DESC, aca_acadinnet_rate DESC, aca_project_total_workgroup DESC, aca_project_name";
}
$param .= $sortByQuery;

$get_proj_query = DB_query("select aca_project_id as id from " . TABLE_PROJECT_DETAILS . " ".$param);
$fav_proj_ids = get_fav_projects_id($_SESSION['']);
while($get_proj = DB_fetch_array($get_proj_query))
{
if(is_array($fav_proj_ids))
$fav = in_array($get_proj['id'],$fav_proj_ids)?true:false;
echo draw_full_proj($get_proj['id'],$fav);
}
}


Finally got a great output in any condition. Hope it will help you to find solutions for your search form development.

Comment if any doubt or suggestion.

Feb 23, 2010

Feb 17, 2010

"Watch" That Design!!

Innovation and creativity in any field always enthuses us and invokes appreciation. Recently, while browsing the net, I came across some really impressive and exemplary watch designs which I found would be of interest to anyone who has the perception to recognize a good design. I am sharing them here. Please note that the following sequence does not imply any superiority orders.


Tokyo Flash Zero G Watch

Reblog this post [with Zemanta]

Feb 10, 2010

UI Design Tips

A good user interface for a product or website is important to create a good experience for your customers. A good interface is a mix of three important items:
  • clear understanding of the users' expectations
  • innovative solutions for easy use of interface items
  • excellent graphical elements to improve visual experience.
Typically, a simple start to building sensitivity in a user interface is to put yourself in the shoes of the user. It is not so difficult to assume yourself as a typical user of the interface in question. When you do such a role play for yourself you can immediately start seeing things which might be painful to the user.

In addition to this, some of the following tips can help achieve a better interface:
  • Remove irrelevant information: It is important to consider the importance of any information placed on the interface to the user. Sometimes, showing too much information is not required when minimum details might be sufficient. We can always allow the user to 'See More' if he needs to.
  • Minimize the number of steps: It is not a good idea to make the user do a lot of work. For example, if the user has to go through a lot of pages and a lot of steps to complete what she is trying to do, she might get frustrated and leave. At times, it is important to have numerous steps. Let the user know in advance in such a situation, so that the expectation is set correctly in the beginning of the interaction itself.
  • Differentiate information from actions: It is always good to visually separate information from the actions. You would not like people to try and find out where to click. The actions should be differentiated in a particular style so that the user always knows where to click and where to read.
  • Do not clutter the page with advertisements: People today know what looks like an advertisement. If you fill up your pages with advertisements, people tend to loose credibility on your website. Advertisements wherever need, should be accounted for separately and neatly, so that the user does not feel that he is clicking on it by mistake or is being forced to click on it.
  • Keep a dignified and uniform look and feel: It is advisable to have a visually connected look and feel for all the pages of the interface, for the purpose of building a unique identity. If every page of the website looks like an altogether new page, the user will never have an identity in mind for your brand.
To add to these tips for an internet-based user interface, it is also important to follow the right process while designing an interface. Typically an interface design activity would have the following steps:
  • Analysis of primary activities the user is intended to perform
  • Consideration of scenarios in which the user might need to use the interface
  • Outline or wire-frame design of pages showing the information design
  • Design of preliminary designs and integration with the product back-end
  • Feedback gathering through sharing the interface with stakeholders and formal user testing
  • Finalizing by incorporating changes based on the feedback
Again, the details of UI design teach us how to make decisions on the UI pattern, Navigation controls, buttons and the use of basic design principles of color, alignment and gradient. But the tips mentioned above is where you need to begin to build sensitivity into your interface for the benefit of your users.

Feb 3, 2010

iPad Impressions

Last time there was this much excitement about a tablet, there were commandments written on it- WSJ

iPad has been announced and there is a general feeling of disappointment. Apple for the first time in a decade has not met or exceeded expectations.

But lets face it, with the hype around the event, anything short of a tablet which would replace netbooks,laptops,desktops,cell phones,ebook readers,music players,portable media players, digital photo frames, gaming consoles and coffee makers would have been classified as a letdown. Apple lost out to its own hype but then the launch of a its “latest creation” was seriously underwhelming.

Firstly, iPad? Seriously? Slate was taken up by HP and hence, iSlate was out. Maybe Apple wanted to go for a name that was not rumored earlier which cuts out iTablet etc. iPad is not the most awe-inspiring gadget name ever but neither was iPhone. Apple is counting on the product being cool enough to make people look beyond the name.

Secondly, iPad does not bring a new UI paradigm to the table. iPod revolutionized music players with its scroll wheel navigation. iPhone changed the way people interacted with their cell phones because of the multi touch navigation. iPad is more of the same. The fact that there are “75 million users who already use this technology” might actually curtail the sales of iPad.

No multitasking means no chatting while watching the latest episode of Supernaturals. Or working on a spreadsheet while googling for relevant info. However, Apple has not confirmed or denied the absence of multitasking.

No flash support which translates to Apple not giving a damn if your cows, crops etc die out in farmville.

No front facing camera. Hence, no skype video calls on the move or real time pictures for twitter or FB.

No USB. So no mouse or external HDD support. 16 GB space is a seriously limiting factor to iPad doubling up as a video player as it would need regular sync with a laptop to transfer movies and videos.

iPad does come with iBooks, Apple’s foray into eReaders. My personal experience with reading ebooks on a LCD screen has not been that great but Apple’s LCD and multitouch UI could make it work. Kindle for iPhone app will work on iPad unless Amazon pulls it out of app store. Kindle and other ebook readers are facing a very real threat from iPad.

Is iPad a “third category of products” as Mr Jobs claimed? It will not be able to replace netbooks/laptops as primary computers or cell phones as primary tool for communication. Primary users of iPad will be customers of ebook readers as they can use iPad for other tasks when they do not feel like reading. So yes, iPad is indeed a 3rd category of devices as the evolutionary next step to Kindle/Nook.

It is a sleek device with Apple logo at the back, sexy LCD in the front and more of the multitouch UI that people cannot get enough of. Steve Jobs’ guarantee of an experience like none other is good enough to sell millions of devices in the first year itself. But for the 1st time since iPod, Apple seems to have made a mistake. The opportunity to take on Apple and win the war of the tablets is there. There is a 60 day window for competitors to make their case before the iPad becomes available.

Will I get one? Not sure. I have a policy of not buying any 1st generation gadgets to avoid headache and stress. However, I do want an ebook reader with ePub/PDF capabilities. So it is wait and watch for me as more information and hands-on experiences become available.

Jan 31, 2010

GizaPage: Easing the Social Networking Process

The above illustration from the internet describes aptly the concept of GizaPage – different social networking profiles accessible under a single roof. We at Cheese fleshed the skeleton ideated by our clients, and designed the user interface of this web application. The very idea of having a single login for different profiles sounds very convenient especially for those who start their browsing cycle with feeding usernames and passwords at more than one of Facebook, Flickr, LinkedIn, Twitter, YouTube, and WordPress. Whilst logging in your Google account takes care of your Gmail, Orkut, Blogger, GoogleDocs and the like, but it is limited to services provided by Google. Considering the fact that many non-Google networks are now getting popular, as already listed above, and that they come from different company sources, most people would have found it cumbersome to manage multiple profiles, all of which seem to be essential for different purposes.

This is where GizaPage came in. Now, all you need to do is, sign-up on GizaPage, and get a profile URL like "yourname.gizapage.com". Next, you can pick and add other supported profiles to your GizaPage profile, and access them without individual logins. The functionality is simple topped with an elegant design, which has been the specialty of Cheese in all its ventures. It was indeed encouraging to know that GizaPage was recently listed in the Top 100 Websites of 2009 compiled by PC Magazine. Click on the screenshot below to navigate to the page.




Jan 27, 2010

How to make decisions in uncertainty? by Prof Saras Sarasvathy


NSRCEL at IIM Banagalore is organizing a talk by Prof Saras Sarasvathy on “How to make decisions in uncertainty?” on Wed 27th Jan from 6.30 – 8 pm.
The talk would greatly help those with entrepreneurial intent as it will change the way we approach problem solving and decision making related to starting and growing a venture.   
Prof. Sarasvathy has initiated this research under the guidance of Nobel laureate Prof. Herbert Simon  by studying expert entrepreneurs with companies with annual sales from $200 million to $ 6.5 billion. This research work is now gaining popularity world over as more and more researchers are now adding to the knowledge base. Drawing inspiration from her work, data is now available on the decision logic of novices, managers, organic growth leaders, angels, VCs and the early histories of entrepreneurial firms.
If you are interested in participating, please put your name on the following list?

Venue would be IIMB. Hope to see you there!

In case of any questions, you can get in touch with:

Suresh Bhagavatula, PhD
NS Raghavan Centre for Entrepreneurial Learning
IIM B, Bannerghatta Road
Banglore, 560076, Infia
Tel # 080-26993703
Mob # 9916130680

Jan 21, 2010

Fond of Fonts?

Fonts are one of the most important elements of any webpage for the simple reason that they provide a means to display textual content, which is vital to most webpages. Use of fonts is not only limited to the web, but extends to a variety of print designs as well as visual display signs. Wise and apt use of fonts can make any design come alive even without a graphic touch, while a bungling job with fonts can ruin the aura of other design elements as well.

Most web designers are always on the quest for new and superior fonts. Here is a list of the top ten fonts for website design. However, most visitors tend to get bored with the repetitive use of the “same old fonts” which is why designers constantly need to update their font database. I found this list of the top five font suppliers on the web, which might be helpful to you.

I had the misconception that fonts were synonymous with text until I came across this font art. I was taken aback by the creativity of artists who use fonts so innovatively and impeccably to sketch celebrity illustrations. Some more interesting artworks using fonts can be found here.



It is heartbreaking to note that fonts are one of the most erred aspects of website design, as postulated by this list. Not just the type of font, but sizes, spaces, colors and many other aspects have to be taken care of while using fonts. An interesting discussion on the font sizes can be found here.
I would like to list here some points to keep in mind while using fonts on webpages. This list has been compiled by the designers at Cheese after an extensive study of various sources on the net.


  • Headlines Font Size - 18-20 px or 24-26 px
  • Body text- 13 px most popular
  • Pure white background
  • Heading to Body Font-Size Ratio - 1.96
  • Line height (pixels) ÷ body copy font size (pixels) = 1.48
  • Line length (pixels) ÷ line height (pixels) = 27.8
  • Space between paragraphs (pixels) ÷ line height (pixels) = 0.754
  • Characters per line - 73 and 90
  • Left padding of on average 11.7 pixels
Also keep in mind that the fonts which you use on the website should be one of native font provided by Windows/Mac/Linux, otherwise the browser would replace it with something else and you would not get the desired effect
Reblog this post [with Zemanta]