Most of you would have heard about the new collaboration tool Google Wave.
It is like a combination of wiki, discussion forum, e-mail, picture/video sharing collaborative tool which works in realtime. It also supports application & extensions. There are number of blogs on the internet explaining it zillion features & possible uses.
It is currently in preview stage and access to it is based on invitation. If you need an invite let me know. I have a few invitations left.
So, do you want to wave with me? I am really excited in trying this out!! 🙂
I recently read a discussion on validation of user inputs. The example used was of validating the Date of Birth a.k.a DOB field. The programmer was adventurous and wanted to put validation such as
- If DOB is more than 120 years ago, message: “You cannot be that old!!!”
- If DOB is in the future, message: “You must be kidding, you are not born yet!!!”
His basic question was on how far would you go in validating a user input?
My view is to put minimum validation at the field level. For this example the developer can check whether it is valid date or not but that’s it!!
One can always put all the necessary validation at the form level. By doing this, most of the business logic is at one place & not divided across various fields.
Also, avoid showing ugly error messages while the user is typing. If the validation is to be done at the field level then provide hints / suggestions to the user by showing text next to his input.
We always want correct and valid data in our databases but at the same time we should not act like a policeman slapping the user for every mistake he/she makes.
So, in your next project, how far would you go in validating user inputs?
Uno is a popular card game and I assume most of you would have played it at some point in your life. I too have this at home & have enjoyed playing it several times.
Few years back, I came across a new Uno game which is called Uno Spin.
This game caught my attention. I started thinking on how to create this game at home. I already had the game cards with me & the only thing missing was the spin part of it.
I used Excel as a tool to develop the spin logic. Actually it turned out to be quite easy. Basically, we just need a random function [like RAND() or RANDBETWEEN()] to randomly choose out of 9 valid options and display it on the screen. I also, added couple of buttons for better UI. Here is the screen shot.
We played several games & had great fun. I also, created a mobile version of the file which can be played from Mobile QuickOffice application. You can download the source files by clicking on the following links
So, have you developed any games in Excel??
Last week I saw a movie, 3 Idiots which I enjoyed a lot. In the movie, it is shown that the college students have affectionately named their dictatorial Professor Viru Sahastrabudhhe as Virus. This got me thinking into the title of my next blog post.
No, this blog is not about student and professor relationship. I am writing on actual computer virus. So, what is a Computer Virus? There are various definition available on the net but what I mean to ask is that has anybody seen a source code of a computer virus? No? OK… here it is…
This is the real source code of a virus. If you do not believe me then copy / paste the code in a text file and save it as a .com file on your PC… on second thoughts, please do not do it. Alarm bells will start ringing and your manager will catch my neck. 😉
These kinds of Virus source codes are published to provide a standardized process for testing anti-virus programs across different vendors. Basically, this virus does not harm your PC but is just flagged by the anti-virus program. If it does NOT then your anti-virus program is not so good and it is time for an upgrade!
All of us know that backups are necessary and it is imperative that we backup all useful data. But it is easier said than done. How many of us have learned the lesson the hard way? How many time have you felt like the manager in the comic strip?
Some of us have learned the lesson in a hard way and some of us in a good way. I had learnt my lesson in a good way. I can share it with you….
Back in 1995 when I had entered the world of computers for the first time (in NIIT, of course), we had to work on a dummy development projects as one of our assignment. Those were the days when the disk space was expensive and you had do the whole project on the network workarea. This workarea used to be cleared after every session and so we were provided with floppy disk to save our programs. I used to save the programs in my own floppy disk in addition to the one provided by the institute. My partner sometimes wondered that why I am wasting my time in creating two copies and I used to just mutter something.
Then the day before the project evalutation it happended… the lab assitant accidently dropped the floppy box containing the assignments of the whole class. There were many complaints and the assitants had a nightmare job in helping everybody restoring there work. Also, the evaluator was kind enough in being generous with her grade while evaluating. But I still remeber her face when I brought my own copy & restored our entire project. My team’s project was the only working model in the class.
I learnt my lesson in a good way. From that time onwards, I was always finnicky about backups. From floppy disk, it went to CD R/RW, DVD, pen drives, portable hard disk etc. All my critical local data is backedup on my pen drive on regular intervals, which is again backed up to an alternate PC or a laptop. In addition to backing up local data it is important to back up online data. For e.g. I have created another blog which is an exact copy of this blog.
Backups… backups… backups…. you can never do enough backups. To conclude, I will quote from this blog post by which I was inspired to write this article.
“So when, exactly, is International Backup Awareness Day? Today. Yesterday. This week. This month. This year. It’s a trick question. Every day is International Backup Awareness Day.”
I recently went to a book store and came across a book The Six Value Medals by Edward de Bono. Now, many of you would have heard of Edward de Bono as a pioneer of lateral thinking by introducing the concept of Six Thinking Hats to us. But this book was new to me. Going through the book, I perceived that this book provides a framework in decision making by understanding the key six values for an organization. The six values are represented as medals.
The Six Medals are
- Gold – People Values
- Silver – Organization Values
- Steel – Quality
- Glass – Creativity
- Wood – Value to environment
- Brass – Perception
This is a management concept and outside the scope of our blog. But this also got me thinking that “what if we take this medals and apply it to our development values?”. Basically, use the term ‘medals’ literally and use it as a reward and recognition means for development projects under different categories. So, we can have…
- Gold Medal – Project that gave the most value to staff.
- Silver – Project that gave the most benefit to the organization. The benefit can be in terms of profitablity, company brand or possibility of getting more projects.
- Steel – Project that was delivered with the highest quality. No defects.
- Glass – The most innovative project.
- Wood – This is tricky. There are very few IT projects that benefit the environment. Maybe we can extend it to the project that gave the most benefit to community or environment.
- Brass – The project that has been percieved as the best project by the customer.
So which medal does your project or project team deserve?
If my blog is About Coding then I feel I should write something About Code Review. There is enough said on importance of code review and its benefits. In fact, the average defect detection rate for code review is 60%. This is higher than other defect detection techniques like unit testing, functional testing or integration testing.
Also, there is enough said on various measurement techniques for code review like defect detection rate, defect density or the one showed by this cartoon :-).
So rather than focusing on importance of code review or its measurement techniques, I would like to bring up a very universal question on code reviews… whether code review should be done before or after unit testing.
Benefits of doing code review before unit testing
- If a major issue is found during code review then there is less rework. Since unit testing is not done, the defects are identified at a earlier stage and effort is saved.
- Since the reviewers know that the unit testing is not done they expect code to be buggy and would identify more defects.
Benefits of doing code review after unit testing
- Since the unit testing is done, code is not crappy and many obvious mistakes are removed in unit testing stage.
- Less defects are identified & code review time is reduced.
- Developers are more comfortable sending their code after they have done the unit testing.
So, what do you think? My personal bias is on doing the code review before unit testing but a balanced approach can be made. If there are significant changes then a dual code review can be recommended. The first one can be done at a very high level before unit testing and a detailed code review can be done after unit testing. Alternatively, a single round of code review can be done after some amount of unit testing is done but not completed.