I am not a RoR developer but was quite surprised to know that Netbeans 7.0 would no longer support Ruby on Rails citing low usage and lack of engineering resources.
Time for a competing tool to rise?
Few days back, I did introspection and thought, as a developer:
- How many languages I know?
- How many databases I have worked with?
- Which frameworks I am comfortable working with?
- Do I know the latest technologies in my field?
I then realized that working on PHP 4, PHP 5, Ruby 1.8.6 doesn't mean that I know the latest cutting edge technologies. I should try learning may be Ruby 1.9.2, or may be a new language. I have worked with MySQL, Oracle, but what's new? I should try working with some other database, may be Mongodb. I did work on Drupal 4.7.x, 5.7.x and also on Rails 2.0.x to 2.3.x, but may be I should try Rails 3.
Then I downloaded Ruby 1.9.2, with
pik, so I can continue work on the project work(ruby 1.8.6), as well as try out rails 3. Needless to say Rails 3.x is far better than it's predecessor Rails 2.x.
bundler is just awesome! But I was so used to use ActiveRecord (with mysql and oracle), I was not able to think how would I work without it on a Rails project.
I first tried
mongodb online (Try it out section) and felt it different, but complete. Whatever basic operations you can perform in mysql/oracle, you can do it in that tutorial.
Once I was done with my rails3-mongodb test application, I realized that MySQL and Oracle are not end of the world. There are better and different things that I should learn. It is much faster to install and configure Ruby 1.9.2 + mongodb + rails 3 and get the application up and running as compared to Ruby 1.9.2 + MySQL/OracleXE (10g) + rails 3 from scratch.
I would love to hear comments/similar experiences :)
I just moved my blog to Jekyll and Github Pages which I hope will help me get back into the rhythm of posting regularly.
Why did I switch?
There were several things I wanted to change
- Syntax highlighting for my code — Jekyll uses pygments which supports about a bazillion languages including “Gherkin” (cucumber) and blogger had nothing.
- Authoring tools I wanted — The blogger wysiwyg editor never really worked for me and I’d prefer to use TextMate and markdown or textile anyway.
- New site design — Making the move gave me a chance to redo my design. The old one felt cluttered and dated and I hope this new one is not.
- Geek street cred — I like having everything on github and besides all the cool kids are doing it :)
Jekyll is a gem that converts a structured directory of pages and posts written in markdown, textile or html into static html files that can be served by apache or nginx. Of course there’s an official definition that explains it in more detail.
With Github Pages I just have to create a git repository alexrothenberg.github.com and with each push github runs jekyll to generate a static site it serves up at http://alexrothenberg.github.com
How did I create this new site?
1. Create an empty site
There are lots of sites others have created with jekyll to peruse for design ideas. I spent some time looking through them and eventually picked one to use as a template. I copied one and pushed it to a new project on github called alexrothenberg.github.com.
2. Get my existing content
First I had to get my old content out of blogger into a Jekyll site. There are instructions for migrating from many different platforms (including from blogger to jekyll). I followed the instructions to “import with vilcans’ Jekyll rss_importer” and just had to change the rss url to http://www.alexrothenberg.com/feeds/posts/full?alt=rss&max-results=1000 since I had more than 25 posts.
I now had my posts in the _posts folder. I copied these posts into my alexrothenberg.github.com/_posts and had a version of my blog with all my old posts.
3. Syntax highlighting code
I next did some experimentation with the old posts to see how the code highlighting worked. It’s very natural and in-the-flow.
While writing my article I just add a block like
{ % highlight ruby %}
class User
def name
[first, last].join(' ')
end
end
{ % endhighlight %}
and get this fantastic output
class User
def name
[first, last].join(' ')
end
end
Well not quite… It generated html with all sorts of css classes but I couldn’t find css stylesheets out there with the Vibrant Ink theme I like.
Through some trial and error I created my own vibrant_ink.css
Because Jekyll generates static pages it has no commenting engine so I have to integrate with an external service. I decided to go with disqus.
Adding it into my site was simple but getting my old comments in turned out to be much harder than it should have been.
First I went to disqus.com, signed up for an account and used their admin too to create a site for www.alexrothenberg.com. They give you a bit of javascript to add to your page. I added this to my _layouts/post.html and I was done.
It looked like it would be just as easy to import my comments from blogger as they have a big import from blogger button on their admin site under Tools->Import/Export. I ran it and I suddenly had all my old comments. But this is where things started to break down. Blogger ties the comments to blogger profiles instead of an email address so none of my comments had avatar pictures next to them.
What followed was a frustrating journey to try and edit the comments using their admin tool. The first thing I tried was using their admin tool but it doesn’t let you edit a commenter’s email or url so I couldn’t stick email addresses in when I knew them (for example I know my own email). My next approach was to export the comments in disqus, edit the xml file it gave me and re-upload. The problem here is that the exported xml uses a different format than the import accepts although they don’t tell you that when you try importing the file you exported it just tells you 0 items imported - how annoying?!?
After a lot of trial and error I wound up with all my comments in an xml file that disqus could import. In case you want to do something similar here are the steps I followed
- Create a temp site in disqus (I called mine alexrothenberg1)
- Import the comments from blogger using the Disqus import tool
- Export those comments to an xml file - I saved mine in alexrothenberg.github.com/_disqus_import/exported_comments.xml
- Run my script alexrothenberg.github.com/_disqus_import/exported2import to migrate the format to a Word Press XFR and change the timestamp format.
- Hand edit
alexrothenberg.github.com/_disqus_import/import_comments.xml to update the emails and urls for each comment (luckily I didn’t have that many old comments)
- Delete the temp discus site and create a new one
- Import my XFR file to the new site
- Jekyll and Blogger use different formats for post urls (jekyll includes year/month/date while blogger is year/month) so we need to run the disqus Migrate Threads->Upload a URL Map tool to upload a file like alexrothenberg.github.com/_disqus_import/url.map
5. Mapping my domain name
At this point I have a blog site up at http://alexrothenberg.github.com and its only a quick step to start serving it at http://www.alexrothenberg.com.
- Create a CNAME containing
www.alexrothenberg.com in my project
- Update the dns entry in my domain to create a CNAME record aliasing
www to alexrothenberg.github.com
Authoring and Publishing
Now that the site is up and running it was time to write my first article (this one).
-
jekyll --auto --server
Starts the jekyll server running at http://localhost:4000 and monitors the files so it regenerates each time I save an edit
-
newpost Moved Blog to Jekyll and GitHub Pages
Creates a new empty post using a script I stuck in my project _bin (thanks al3x for this gist)
-
Start writing content in _posts/2011-01-27-moved-blog-to-jekyll-and-github-pages.md
Each time I hit save I can preview in a few seconds at http://localhost:4000
-
git commit -am 'wrote the article'
-
git push origin master
In a few seconds github processes the site into static files and its published for all the world to see.
I just moved my blog to Jekyll and Github Pages which I hope will help me get back into the rhythm of posting regularly.
Why did I switch?
There were several things I wanted to change
- Syntax highlighting for my code — Jekyll uses pygments which supports about a bazillion languages including “Gherkin” (cucumber) and blogger had nothing.
- Authoring tools I wanted — The blogger wysiwyg editor never really worked for me and I’d prefer to use TextMate and markdown or textile anyway.
- New site design — Making the move gave me a chance to redo my design. The old one felt cluttered and dated and I hope this new one is not.
- Geek street cred — I like having everything on github and besides all the cool kids are doing it :)
Jekyll is a gem that converts a structured directory of pages and posts written in markdown, textile or html into static html files that can be served by apache or nginx. Of course there’s an official definition that explains it in more detail.
With Github Pages I just have to create a git repository alexrothenberg.github.com and with each push github runs jekyll to generate a static site it serves up at http://alexrothenberg.github.com
How did I create this new site?
1. Create an empty site
There are lots of sites others have created with jekyll to peruse for design ideas. I spent some time looking through them and eventually picked one to use as a template. I copied one and pushed it to a new project on github called alexrothenberg.github.com.
2. Get my existing content
First I had to get my old content out of blogger into a Jekyll site. There are instructions for migrating from many different platforms (including from blogger to jekyll). I followed the instructions to “import with vilcans’ Jekyll rss_importer” and just had to change the rss url to http://www.alexrothenberg.com/feeds/posts/full?alt=rss&max-results=1000 since I had more than 25 posts.
I now had my posts in the _posts folder. I copied these posts into my alexrothenberg.github.com/_posts and had a version of my blog with all my old posts.
3. Syntax highlighting code
I next did some experimentation with the old posts to see how the code highlighting worked. It’s very natural and in-the-flow.
While writing my article I just add a block like
{ % highlight ruby %}
class User
def name
[first, last].join(' ')
end
end
{ % endhighlight %}
and get this fantastic output
class User
def name
[first, last].join(' ')
end
end
Well not quite… It generated html with all sorts of css classes but I couldn’t find css stylesheets out there with the Vibrant Ink theme I like.
Through some trial and error I created my own vibrant_ink.css
Because Jekyll generates static pages it has no commenting engine so I have to integrate with an external service. I decided to go with disqus.
Adding it into my site was simple but getting my old comments in turned out to be much harder than it should have been.
First I went to disqus.com, signed up for an account and used their admin too to create a site for www.alexrothenberg.com. They give you a bit of javascript to add to your page. I added this to my _layouts/post.html and I was done.
It looked like it would be just as easy to import my comments from blogger as they have a big import from blogger button on their admin site under Tools->Import/Export. I ran it and I suddenly had all my old comments. But this is where things started to break down. Blogger ties the comments to blogger profiles instead of an email address so none of my comments had avatar pictures next to them.
What followed was a frustrating journey to try and edit the comments using their admin tool. The first thing I tried was using their admin tool but it doesn’t let you edit a commenter’s email or url so I couldn’t stick email addresses in when I knew them (for example I know my own email). My next approach was to export the comments in disqus, edit the xml file it gave me and re-upload. The problem here is that the exported xml uses a different format than the import accepts although they don’t tell you that when you try importing the file you exported it just tells you 0 items imported - how annoying?!?
After a lot of trial and error I wound up with all my comments in an xml file that disqus could import. In case you want to do something similar here are the steps I followed
- Create a temp site in disqus (I called mine alexrothenberg1)
- Import the comments from blogger using the Disqus import tool
- Export those comments to an xml file - I saved mine in alexrothenberg.github.com/_disqus_import/exported_comments.xml
- Run my script alexrothenberg.github.com/_disqus_import/exported2import to migrate the format to a Word Press XFR and change the timestamp format.
- Hand edit
alexrothenberg.github.com/_disqus_import/import_comments.xml to update the emails and urls for each comment (luckily I didn’t have that many old comments)
- Delete the temp discus site and create a new one
- Import my XFR file to the new site
- Jekyll and Blogger use different formats for post urls (jekyll includes year/month/date while blogger is year/month) so we need to run the disqus Migrate Threads->Upload a URL Map tool to upload a file like alexrothenberg.github.com/_disqus_import/url.map
5. Mapping my domain name
At this point I have a blog site up at http://alexrothenberg.github.com and its only a quick step to start serving it at http://www.alexrothenberg.com.
- Create a CNAME containing
www.alexrothenberg.com in my project
- Update the dns entry in my domain to create a CNAME record aliasing
www to alexrothenberg.github.com
Authoring and Publishing
Now that the site is up and running it was time to write my first article (this one).
-
jekyll --auto --server
Starts the jekyll server running at http://localhost:4000 and monitors the files so it regenerates each time I save an edit
-
newpost Moved Blog to Jekyll and GitHub Pages
Creates a new empty post using a script I stuck in my project _bin (thanks al3x for this gist)
-
Start writing content in _posts/2011-01-27-moved-blog-to-jekyll-and-github-pages.md
Each time I hit save I can preview in a few seconds at http://localhost:4000
-
git commit -am 'wrote the article'
-
git push origin master
In a few seconds github processes the site into static files and its published for all the world to see.
Watched the awesome movie 'Goal' (English). The protagonist Santiago Munez inspires all to chase a dream and I am no exception. The young boy suffered from asthma and tried of hiding that, fearing he may loose the chance to play in one of the premium football teams. When the selector came to know of this fact, quite contrary to my expectation of a person in such a situation he told, "Asthma is not a problem, but lying is!". What a thought, and what a way of expressing that. Many a times I keep on thinking the different physical criteria which are necessary for applying for job of our dream, such as in army, air force, ballet dancer or a soccer player.But rare do we listen such a noble thought of handling our physical problems and to deal with it medically rather hiding it.
Similar to working in a team, be it in our school project to make a poster or to finish up the lab assignments in the college days to our present official deadlines, we need to "Pass the ball" in the soccer field. We need to learn that the ball runs faster and the more effectively we can delegate/distribute the work, the effective will be the ball in reaching the goal-post. It remind us that to work in a team, the work is more important than the worker, hence it has been aptly said, the team's name in jersey is written in front and the player's in the back.
Though Santiago's father was against his dream of becoming a footballer but at the end he was also convinced by his passion. Though he passed away and may not be physically present to witness him playing but he was seeing that from above. Whatever grief we may face in our life, which is not in our hands, we may learn to think that life and death are not in our hands and we may learn to live life with realising the eternal truth and "All in our life is not in our hands."
Recently came across this cool online tool that enables to view websites as graph
http://aharef.info/2006/05/websites_as_graphs.htm
http://www.aharef.info/static/htmlgraph/
Tried this on portal / web app we implemented and here is how their DOM elements look like
1) Saralsociety.com

2) Oncocure.com

Shown above is my "InMap" (Infographics on my LinkedIn Connection).
My Reading? Got to connect with professionals from more diverse background.
Visualize your network at:
http://inmaps.linkedinlabs.com
During the week between Christmas and New Year’s I finally took the time to redesign and redeploy this site on Heroku using Toto, a very simple Rack blog engine. Sorry if I spammed your RSS inbox with duplicate articles.
What makes Toto fantastic is that it includes just enough code to run a very simple blog site… and nothing else. Alexis Sellier’s code is concise and elegant; you can see it all in a single Ruby file: toto.rb. It leaves you a clean, blank slate to add anything special or custom you might need. In fact, I chose to use Toto instead of Jekyll, Nesta or other blog engine alternatives only because it looked like it would be fun to understand how it works and customize it…
The constraints used are:
1) Number of goalkeepers = 1
2) Number of defenders = 4
3) Number of mid fielders = 3
4) Number of strikers = 3
5) Total team cost = 50 GBP
6) Maximum number of players from a team = 2 (most fantasy soccer sites use this)


The Psychologist’s View of UX Design , Psychic Search , The Importance of Designing an Experience Culture and User Experience for Developers
I have recently started working on Ruby and I am trying to pick up the technique via resources available on the net. there are a lot but not many look of much use. Many are screencasts (MPEGs embedded in webpages) but i dont put on head phones at work and letting the speaker on would [...]
nice :-)
Came across this lovely story today, something really inspirational for the new year, and could not help re-posting it here...
SOAR BEYOND FEARS
Once there was a king who received a gift of two magnificent falcons from Arabia. They were peregrine falcons, the most beautiful birds he had ever seen. He gave the precious birds to his head falconer to be trained.
Months passed and one day the head falconer informed the king that though one of the falcons was flying majestically, soaring high in the sky, the other bird had not moved from its branch since the day it had arrived.
The king summoned healers and sorcerers from all the land to tend to the falcon, but no one could make the bird fly. He presented the task to the member of his court, but the next day, the king saw through the palace window that the bird had still not moved from its perch. Having tried everything else, the king thought to himself, "May be I need someone more familiar with the countryside to understand the nature of this problem." So he cried out to his court, "Go and get a farmer."
In the morning, the king was thrilled to see the falcon soaring high above the palace gardens. He said to his court, "Bring me the doer of this miracle."
The court quickly located the farmer, who came and stood before the king. The king asked him, "How did you make the falcon fly?"
With his head bowed, the farmer said to the king, " It was very easy, your highness. I simply cut the branch where the bird was sitting."
We are all made to fly -- to realize our incredible potential as human beings. But instead of doing that, we sit on our branches, clinging to the things that are familiar to us. The possibilities are endless, but for most of us, they remain undiscovered. We conform to the familiar, the comfortable, the mundane. So for the most part, our lives are mediocre instead of exciting, thrilling and fulfilling.
So let us learn to destroy the branch of fear we cling to and free ourselves to the glory of flight.
-- From the Book "Why walk when you can fly"
Three short links that caught my attention
- Free developer e-books: http://refcardz.dzone.com/
- Steps to use firebug-lite on Internet Explorer: link
- On a lighter note - 15 biggest flops in Tech for 2010
English cricket is strong once again. And it is great to see that (after all they invented the gentleman's game).
In a sharp contrast to previous tours of Australia, England outplayed Australia on their home ground in the recently concluded Ashes 2010-11 series (see performance comparison of 2010-11 and 2006-07 series below).
English wins in 2010-11 were convincing and Aussies must be heart broken. This series loss might be the last nail in Ricky Ponting's coffin. His leadership and batting woes continue... Ponting's performance in this series was similar to Collingwood's, who decided to retire from Test cricket. Will Ponting do the same?
Ponting was the best batsman in 2006-07 with an average of 64, and this year Cook is the best batsman with an average of twice that! (see batting charts below). Hats off to Cook's performance. His elegance and patience is a blessing for English cricket.
In Chris Tremlett, England has found a fantastic bowler. England didn't miss a heart beat with Stuart Broad's injury. Tremlett, Anderson and Bresnan more than filled that gap by bowling exceptionally well.
England and South Africa clearly have the best fast bowling units now.
I'm looking forward to India's tour to England this summer.
Compare 2010-11 Ashes series with England's previous Ashes tour to Australia in 2006-07. In 2010-11, English cricketers (pink) dominated the top-right corners of batting/bowling performance charts, whereas in 2006-07 Australia (yellow) dominated the top-right section of these charts.


In my project, I was trying to pass an argument to my object's method being called as &:symbol_name in the collect method of an Array.
I googled to find whether any one has faced this before and I found a very nice post by Iain Hecker - http://iain.nl/2010/02/going-crazy-with-to_proc/
With his implementation, I was able to solve my problem. Thanks Iain !
I just got a new MacBook (whoo hoo!) because my old machine dies (boo hoo) and thought I'd write down the steps I'm taking to set it up. I imagine this is more for myself than anyone else but keep reading if you like.
I just got a new MacBook (whoo hoo!) because my old machine dies (boo hoo) and thought I'd write down the steps I'm taking to set it up. I imagine this is more for myself than anyone else but keep reading if you like.
‘High Performance Team’, a phrase that one always dreams to be a part of some day. A team that inspires other teams to achieve what they would generally consider way above their potential. A team, where there is no place for finger pointing, rut and panic(even in crucial times). I am working in a team which is high performing and I would like to uncover the challenges we faced and how we overcome those as a team.
We never thought that one day we will be a successful and high performing team nor did it happen overnight. We faced the moments of finger pointing, failures, boredom and heated discussions during the initial phase. We slowly made use of continuous ‘retrospection’ from ‘Scrum’, which helped a lot. We found that retrospection never hurts, even if you don’t have any failure since last retrospection, you may find better ways of doing the same thing. We saw that rhythm is important, as repetition reduces complexity. So, we tried continuous improvement in everything, be it very small discussion, a big deployment or regular review meeting with product owners and sponsors. Soon, we found our key mantra, ‘rhythm’ and we stick to it.
Challenges:I believe most of the teams face these challenges, but since our team was very small(one developer, one hands-on architect and one product owner) and our sprints were small (one week), these became crucial for various reasons:
* Begin meetings on schedule: Since we have meetings with different groups and most of the times they are back to back, it became crucial to join meeting on time.
* Meetings, never end on time: This costs a lot if you have small development cycle, if meetings go beyond their scheduled time, you have to back fill the development hours, may be sometimes by staying late and sometimes working over the weekend to avoid delayed deliveries.
* Distractions from the agenda: This one is real killer and one of the real cause of the previous challenge. It happened very often in our team, until we found solution for this.
* No more boring stories (tasks): How would you feel if you are given to write automated functional test cases for more than 50 combinative scenarios in a sprint?
* New Ideas/innovation: Every team feels that it should innovate something or implement new ideas, that no one around have thought about (which in turn brings confidence and enthusiasm)
* Effective retrospection: Every Scrum project team does the retrospection, but how can we do it in a better way was a big challenge, as we did not want to do it as a ritual which will die in few days.
* Avoid panicking in crucial times: I admit, no one can avoid panicking in a production failure, but we all know it will not help either. The challenge was to learn how to avoid panic in crucial moments and keep the calm hat on, so that team can find right solution in instead of a quick and dirty solution.
* Why failures in QA instead of development environment?: No matter how much we test some issues come-up in QA instead of development, which is a big challenge for any team.
* Demanding stakeholders do not agree for automation testing: It was always challenging to convince sponsors for automated unit/functional/integration testing. Their question was dead straight, “Why would I spend my money on something which is not a must have feature in my product?”
Approach to solve these challenges:It all started with retrospection and I love saying that retrospection is the best process Scrum has come-up with. It is a forum to brainstorm, rather than asking questions like, why you have done that crap, why you did not build the right code? Who love such questions? I don’t and I don’t think anybody would love it. There are better ways to do the retrospection and I think our team came-up with the right approach.
* Effective retrospection: We all do the retrospection in Scrum projects, sometimes every sprint, sometimes on ad-hoc basis. We were doing retrospection, but in three to four weeks, it became boring, we were not getting benefit of the retrospection. Then we tried new approach, we started maintaining ‘retrospection-backlog’. We took ownership of say two items per person per sprint. Until the team agree, that we have worked on those items, we do not close (or mark as done) those items in the backlog. Also, we made those items appear in the stand-up, as whether we have acted on those items or not. Now, we are not addressing them at the end of the sprint, but we were addressing them daily. Result? We close many items in the backlog and suddenly it is working for us. There are many of the retrospection items I have listed in this paper, one I liked most, “Cutting corners never help in a big picture. Shortcuts work for few days, but you have to pay it’s cost in a longer run”.
* Begin meetings on schedule: A big challenge, I feel it is very easy to say, that we begin on time, but difficult to follow. We spoke in our retrospective and decided to maintain a backlog on our own, and whoever is late (more than two minutes) three times should give a treat to the team or bring snacks items (we maintain a snacks corner in our team room) or bring small logical game (we have a game zone too!). It really worked!
* Meetings, never end on time: Another challenge and another retrospective was waiting for it. One of us volunteered to do time checks in meeting, so that participants talk precisely what is important and it helped to finish meetings on time.
* Distractions from the meeting: This one was one of the root cause of previous challenge and we came up with parking lot idea. It is really helpful, if you see someone is distracting the discussion and one of us would raise a hand, which means: ‘Focus!’.
* No more boring stories (tasks): This happened with me, when I was asked to write automated functional test cases for more than 50 combinatorial scenarios in a sprint. It is boring to the death at the same time you have to keep reminding yourself that you are not missing any crucial scenario, otherwise needless to say your efforts are waste. I discussed with my product owner and we came-up with a mutually exclusive and collectively exhaustive(MECE) list of scenarios on ‘matrix based problem solving’ approach.

It was new for me and in less than one hour we discussed only important scenarios and implemented them, which kept the problem interesting at the same time it helped us to achieve the goal.
* New Ideas/innovation: We as a team would like to try out different things, but the pressure of development work never let us do ideas, which we wanted to try-out (for example unit testing of javascript code). We made a retrospective item that as a team we will spend some time to try-out new things, sync-up with the new technologies/we trends. The ‘so what’ for our product owner was, better solution will come upfront when the team, a) learn new things and b) share the ideas/innovations with broader groups. Since we added this as a retrospection item and even product owner voted on that, we found no excuses and started implementing new ideas. Another idea we came-up with was to have backlog for ‘Most Teamish Room goal’ and the acceptance criteria was, if anyone stop by, ‘wow!’ should be the first expression/reaction.
* Books are best friends, how can they help my team?: Building a team with collaboration and learning, Do it yourself, workaholics is killer, good enough is fine, pick a fight and how to say you’re sorry, are few of the principles I have learnt from few books I have read. Books not only guide you, but more importantly they keep hammering the concepts, so that you are bound to find a better way of doing the same thing.
* Avoid panicking in crucial times: It happened when ‘we’ as a team tasted failure first time. Again, retrospection came to rescue us. Once we got over the failure, we did the retrospection from a distance (after a week) and found that instead of panicking, it was our cool mind, which helped us. We were very tempted to go with quick and dirty solution, but we waited and thought, ‘Is this the right solution for the long term?’. It helped and this approach became our habit. The key is to, ‘never lose the calmness, never in a crucial situation’.
* Why failures in QA instead of development environment?: We happened to see failures in QA, even when developers do their part of testing in development environment. In our retrospection we brought this and came-up with, ‘Team testing time with freinds’. So, we called few friends who were neither part of development team nor part of sponsors’ group. This strategy worked and we started catching issue in development environment.
* Demanding sponsors do not agree for automation testing We find it difficult to convince sponsors for tech debt or automated testing stories. One of the retrospection item was to present a Scrum factoid at the end of the sprint review meeting, to help sponsors understand the Scrum more. It worked like a charm. More we involved sponsors (though they hesitated initially), more it became easier to convince to them what development team wanted to try to improve the code quality(and obviously to improve the product).
Benefits:With the challenges we faced, we uncovered a lot many solutions for variety of problems. Be it technical problem or a process issue, we decided not to be caught up in a rut of work. The benefits were many folded.
Joy of work and flow of energy: Most importantly team was enjoying the work. No task or deadline pushed us to do something, everything was in flow.
Confidence of stakeholders: We won the confidence of the sponsors and product owners.
Software Craftsmanship: We implemented our own ideas (software craftsmanship), which boosted morale and confidence of the team.
No more ‘staying late’ nightmaresRetrospect everything: Retrospectives made life much easy. Nothing fell of the cracks, as we were doing retrospection every week.
Celebrations: Team had a lot to celebrate; their innovation, problem solving approach and knowledge sharing with other teams. Best practices became part of the team activities.
In all it became a win-win situation for everyone.
I feel that every team can become a ‘High Performing Team’. It only takes small efforts every sprint, but in a longer run, you will find yourself out of those nightmares of teams with lack of energy, lack of vision and above all lack of self confidence. Retrospection is the best tool Scrum has given and each team will get benefit, if it is used. Finally, if you have the idea implement it, because, world needs execution of ideas (I think I read it in some book, ‘no one likes the idea guy!’).
I would like to thank my team members, with whom I lived this experience. Also to thank my colleagues and my seniors to inspire me to learn and achieve, they are not directly involved in project activities directly, but always helped with their continuous feedback.
References: 1. Rework - http://37signals.com/rework/
2. Beautiful Teams -Inspiring and Cautionary Tales from Veteran Team Leaders http://oreilly.com/catalog/9780596518028
I am very excited to share updates about my first project assignment on UX, that I have been working for last 1.5 month. It is a platform for me to apply my usability concepts and knowledge that I have gained so far from online UX tutorials, blogs, Technical forums etc.
I am working on a Ruby and Rails tutorial with my friends in India (Abhishek Nalwaya and Akshat Paul). Our objective is to improve the overall experience of this site. The initial versions of this tutorial were deployed in Heroku with the sole intention of learning some new technologies. But now, we want to completely focus on re-designing this site for improving the usage. It is a small effort from our side to contribute to the ROR community.
So we started with analyzing the site usage results in Google Analytics Dashboard, where we observed a very high bounce rate. Moreover, the Google pagerank and visual appeal of the tutorial was not very good, which definitely implied that there is a huge scope of improvement.

We came up with these initial thoughts to start our work :-
Improve the whole information architecture by revising the content with the latest version material, as that is the main deciding factor to retain visitors on any tutorial. Also, adding two sitemap's i.e. one for site visitors and the other for googlebot would be helpful to provide an organized view of the site to its visitors.
Navigation mechanism can be structured better by shifting the navigation links to the top , so that we have more space on the content page. The social media icons and twitter feeds are not prominent currently and they can made more visible.
We pushed our first release on 18 Dec with following improvement stories:-
1. XML sitemap implemented and registered in Google Webmaster Tools to improve the content accessibility to the crawler.

2. Favicon added to have a unique brand image to the tutorial.

3. Revision of the About Us page with pictures to make the developers more approachable for suggestions and feedback's.

We are currently working on the content revision and application of search optimization techniques. I would keep you guys updated about my learning experience with this system. In case you have any suggestions or feedback, please feel free to reach out to me.