Blog

Apu Saha of University of Khulna Won the First Scholarship by Nascenia

The first receiver of our scholarship program is Mr. Apu Saha. He is a student of the 11th batch of CSE discipline in Khulna University. He is studying in his first term, in the first year.

Scholarship to Apu Saha

The VC of Khulna University, on behalf of Nascenia, hands over a PC (as scholarship) to Apu Saha

We hope he will make the best use of the personal computer that he received as the scholarship. We wish him all the success.

Bangladesh Outsourcing Conference 2011

On a lazy evening Shaer called me up and asked, “are you going to attend tomorrow’s conference?” Momentarily I recapped my schedules and replied –‘no I don’t have any plan “. With disappointment he said “such an important program is going on but you are not even curious to visit once”. Well, I gave it a thought, gave in, not so enthusiastic, though. I never regretted. And this is why didn’t.

Next day, I cancelled some of my preplanned schedules and went there. I was waiting for my colleague, Chayan and all of a sudden found some known faces around me. After spending little time with them we entered into seminar hall. I glimpsed approximately 8-10 foreign faces along with some local experts on the stage.

Seminar started exactly at 4PM, but I was barely interested to lend my ear. After a while I noticed that some interesting statistics were being showed by presenters on how Bangladesh would earn billion dollar through IT outsourcing. Suddenly it struck my mind, and I gave full attention to perceive how it’s possible. The speakers demonstrated every strength and weakness we currently have to reach to the destination. Low cost, quality coding, government support are some of our strengths. On the other hand, English speaking skill, limited international payment support were showed as our weaknesses.

Bangladesh Outsourcing Conference 2011

Currently about 10,000 freelance software developers in the country are earning roughly $40 million annually.  Growth rate of the industry has been around 40% for last few years. Freelancers and outsourcing companies demanded to take necessary steps to introduce a convenient online money transfer service, such as PayPal, for smooth transfer of their payment. Consequently, State Minister explained the progress to introduce PayPal service.

Some of the seminars that took my attention are followings.

  • Strategic Positioning of Bangladesh as leading Outsourcing.
  • Freelancing Conference
  • Critical success factors in the off shoring business: the practioners’ view

Have you ever imagined that Bangladesh ICT industry is capable to earn billions of dollar?  Had I not attended the seminars, I wouldn’t have the idea either. If everything follows the trend, this industry is going to be as big as RMG industry in a decade. What do you think?

E-Asia 2011 held in Dhaka

Asian nations arrange many technological conferencse each year. Among them, E-Asia is the one endeavor to unite all the Asian nations to a single platform.

This year it happened in Dhaka, at BICC. Three days of  conferences, exhibitions and an award ceremony. Around 150 exhibitors displayed a wide range of services, such as mobile banking, e-health care, e-Agri service, e-education and e-Governance. Some of the well promoted products in the exhibition were bKash (BRAC Bank), DigiClass (Rahimafrooz), electronic voting machines (Election Commission) , table for farmer (Amadeyr Cloud Ltd)  and Doel laptop (TSS) — the first Made in Bangladesh laptop PC.

Along with exhibitions, a number of conferences were organized with high class local and international speakers. Freelancers urged the government to take steps to introduce a convenient online money transfer service, such as PayPal, for smooth transfer of their payment. State Minister for ICT Yeafesh Osman pledged to provide all support to introduce PayPal service in the country.

A number of Speakers and industry experts sheared some interesting statistical findings and analysis. AKM Fahim Mashroor, senior vice president of Bangladesh Association of Software and Information Services, said that there are about 10,000 freelance software developers in the country, earning roughly $40 million annually. Their income is equivalent to one-fourth of the country’s total software exports. We also came to know that Bangladesh has been providing quality service at very cheap price and consequently growing at a rate of around 40% per year for last 4-5 years. Considering growth rate and other prospect, experts showed how this industry could be billion dollar industry within next 10 years.

Award program for ICT companies was taken place on the second day of the event. Along with some colorful culture programs, seventeen local and international ICT initiatives won awards in five different themes. We won one of them. The mega technology even ended on 3rd December. Bangladesh quite successfully showed her competency in digital technology. It’s up to the world to take the advantage.

Award Winners in e-Asia 2011

Asia’s mega technology event, eAsia 2011 arranged an award ceremony for innovative initiatives in the use of information and Communication Technology for Development (ICT4D). The award categories were on five themes. They were Building Capacity, Connecting People, Serving Citizens, Driving Economy and Breaking Barriers. Among 37 finalists, 17 local and international initiatives won awards in a gala ceremony on December 02 evening.

E-Asia 2011 Award Winners

Some of the highly appreciated local and international award winning products those I can recall are:

bdipo 

Bdipo, a product of Nascenia Limited, won in Driving Ecnonomy: Best ICT Initiative Boosting Business Productivity category. bdipo is a hub for IPO related information in Bangladesh. Customers of bdipo can download dynamically filled up IPO application forms, receive IPO related Information and search IPO results.

bdipo, a IPO related site built on Ruby on Rails

Ganit Gurroz

Ganitgurooz.com is an Indian (Ellipsis Consulting) not-for-profit website that aims to become an integral part of professional life of over 17,00,000 school mathematics teachers in India by creating a knowledge sharing network. It has been awarded as best ICT Enable teacher Training Program under Building Capacity theme.

Online Central Admission For Diploma Engineering Courses

It’s a system to collect application with the mentioned period for diploma engineering courses for 46 public polytechnic institutes and 3 other mono technical institutes. It also verifies their requisite qualifying and grade accounting to the defined rules. It has been awarded as best ICT initiative for Education Administration and Governance.

BBC Janala

BBC Janala, Best Open and Distance Learning Program winner, is an exclusive service of BBC World Service Trust. This enables millions of people to learn English using mobile phones in a simple and affordable way. BBC Janala has brought innovation in English language learning in Bangladesh. It turned mobile phone into a low-cost educational device.

Dutch-Bangla Bank Mobile Banking

Best Financial Transaction Initiative Using ICT under Driving Economy category award has been given to Dutch Bangla Bank for their mobile banking service. The product is an initiative to include the un-banked rural Bangladesh under the umbrella of banking.

Apart from these, twelve other local and international companies won award in different categories. Award ceremony was decorated with colorful cultural program, fire spinning and dinner.

Books on Ruby on Rails

I was a hard core .Net developer till Nov 2007 until Syed asked to join ScrumPad team in Code71. I got curious. I started to dig about Ruby on Rails. I visited some of the popular websites written in RoR. Read some tutorials, skimmed through a few books here and there. Within a very short period of time, my initial curiosity turned out to be passion. I have been working in this framework since then and never regretted joining ScrumPad team.

Today, if someone does a simple Google search for Ruby on Rails he gets over 30 million results. Thousands of web applications are written in rails. More and more people are trying to learn RoR. Many books are written and many are on the process of writing.

Here are some popular books of ‘Ruby on Rails’ those I came across and recommend you to give a try:

Agile Web Development with Rails by David Heinemeier Hansson1. Agile Web Development with Rails

David Heinemeier Hansson, creator of the Rails framework, along with his Rails team came up with Jolt-award winning guide “Agile Web Development with Rails” in 2006 to take advantage of all the new Rails 1.2 features. Recently fourth edition of the book released which has covered all new features of Rails 3. This book introduced a web-based application development with shopping cart that enables developers to create full-featured, sophisticated web-based applications using less code and less effort.

2. Head First Rails: A Learner’s Companion to Ruby on Rails

Head First Rails takes programming and productivity to the max. One will learn everything from the fundamentals of Rails scaffolding to building customized interactive web apps using Rails’ rich set of tools and the MVC framework. Like other Head First Series, it is written in such a way that you will get lots of fun while learning. Author Mr. David Griffiths, currently an agile coach with Exoftware in the UK, started programming at age the age of 12 and devoted his experience while writing this one.

3. Ruby on Rails 3 Tutorial: Learn Rails by Example

This book guides you through the development of your own complete sample application using the latest techniques in Rails web development. Author Michael Hartl explains how each new technique solves a real-world problem. And he demonstrates this with bite-sized code that’s simple enough to understand, yet novel enough to be useful.

4. The Ruby Programming Language

Author David Flanagan begins with a quick-start tutorial to the language also includes a long and thorough introduction to the rich API of the Ruby platform, demonstrating — with heavily-commented example code — Ruby’s facilities for text processing, numeric manipulation, collections, input/output, networking, and concurrency.

5. Ruby Cookbook

The Ruby Cookbook is the most comprehensive problem-solving guide to today’s hottest programming language written by. Lucas Carlson, a professional Ruby programmer who specializes in Rails web development. From data structures and algorithms, to integration with cutting-edge technologies, the Ruby Cookbook has something for every programmer.

6. Beginning Ruby: From Novice to Professional

Beginning Ruby provides the excellent introduction to Ruby, including the addition of the Merb framework and a chapter on GUI development so developers can take advantage of these new trends. Peter Cooper has been a Ruby and Rails developer since 2004, and runs the most popular Ruby and Rails weblog Ruby Inside.

7. Programming Ruby 1.9: The Pragmatic Programmers’ Guide

This Book is a reference manual for Ruby written by Dave Thoma. It includes a description of all the standard library modules, a complete reference to all built-in classes and modules. It also contains all the new and changed syntax and semantics introduced since Ruby 1.8. Learn about the new parameter passing rules, local variable scoping in blocks, fibers, multinationalization, and the new block declaration syntax, among other exciting new features.

8. Rails Recipes : Rails 3 Edition

Rails Recipes by Chard Fowler has explained all latest features of Rails 3 and distinctive solution of possible problems. Moreover, roughly half of the book is stocked with new eye-opening solutions of extend Rails, test and deploy sites. Chard Fowler has spiced up with shorter Snacks, easily digestible tricks of the trade to read.

If you do not know Ruby on Rails, this is the time to learn it.

If you already know it, enhance your knowledge.

Reading some of the books above will definitely be helpful. It will help you to write beautiful code, spur productivity, and dare I say, make you happy :).

Ruby on Rails in Bangladesh

Ruby on Rails started its journey worldwide in 2005. It was introduced to Bangladesh in mid 2007 by a US based company which later became Code71.

Let me give a little more overview on Ruby on Rails (RoR) in Bangladesh.

Companies worked in Ruby on Rails in Bangladesh

In Bangladesh the first notable application that was made of RoR is Scrumpad. It  is developed by Code71 and was developed in RoR 1.2. It was deployed on IIS first, and later moved to Apache running in Amazon EC2. Starting with a three persons company in two years Code71 became a 17 persons company. Quite a few web applications were built by this team. With core focus on Ruby Code71 worked in .Net and php too. code71, however, dissolved its offshore development center in Bangladesh in mid 2011 to become a single-product-focused company.

Three ex-employees from Code71 formed Nascenia when former shut down its operation in Bangladesh. Nascenia focused on Ruby on Rails, too. At the time of writing this blog, more than 20 applications are developed by Nascenia in RoR. The projects are developed by its customers in USA, Canada, UK, Sweden, Australia and even India. They also built a couple of products for Bangladeshi market, one of them is bdipo.com which received massive popularity.

bdipo, a IPO related site built on Ruby on Rails

www.bdipo.com a popular Bangladeshi site built by Ruby on Rails

Another company that came to my notice working on RoR was TekSymmetry, which was later acquired and named as Tasawr Interactive. Tasawr among many other things, still works or like to work on RoR, I believe. And I know that Grameen Solutions and Vantage Labs work or worked on Ruby on Rails. There is a product company, Akhoni, who develops its product in Ruby on Rails. Apart from these, there are a handful developers who are experts in RoR, but either they are in other technologies now, or work as a freelancers.

Communities of Ruby on Rails in Bangladesh

There is a Google group for Ruby on Rails developers in Bangladesh. Currently there are  73 members in it, not very active though. Recently a newcomer, Erfan with all his enthusiasm, started a Facebook group; the group is still forming.

Websites built in  Ruby on Rails in Bangladesh

Bangladeshi live web products developed in Ruby on Rails are: bdipo.com, Akhoni.com, khadok.com, travelobd, khanacademybangla.com

khadok.com, a Bangladeshi site built on Ruby on Rails

khadok.com, a Bangladeshi site for food lovers, built by Ruby on Rails

Among these bdipo.com is the most popular web application developed in Ruby on Rails. This site is developed and owned by Nascenia. There are a couple more those can be ranked in the top SaaS products in Bangladesh.

PS: Most of the information above is based on our best knowledge; please enlighten us by commenting below, if you know better. I am sure some of you do.

Brown Bag Session: Nazia talking about TDD, BDD and RSpec

For a recent client project it is required to have 70% test coverage. That’s a very interesting project, and I would love to talk about that, but I can’t until the project is released. We assigned Nazia to write test code. She did a commendable job. We have 90% test coverage now. And she took a brown bag session on her learning.

We are sharing her presentation here. We will keep sharing as they come :).

Entrepreneurship is Like Painting: Interview of Richard Branson

Here is the bullet point take away from the 40 min rendezvous with Sir Richard Branson.

  • Entrepreneurship is an art. Painting on a huge canvas, filling up the blanks and combining the bits and pieces. Similar thought was expressed by Mohammad Yunus recently. He said there is no legal relationship among the different concerns named as Grameen and founded by him. He just had to build different ventures to fill the gaps. And here Richard founded 300+ businesses under Virgin group to fill in the blanks on his canvas. A ‘wow’ is even an under statement!
  • Entrepreneurs are not managers, save Steve Jobs. Entrepreneurs should be good at delegation, and move on to grabbing the next opportunity.
  • The cheapest way of promotion is to make sure you have a good product to talk about.
  • The inspiring way of promotion is the Chairman to talk about the product from the forefront! Who does it better than Richard Branson and Steve Jobs?
  • It is an easier and faster way of knowing people in a fun environment than in formal meetings. Joe Polish mentioned form Peter Drucker: “Either you are working, or you are in meeting.” That’s bold! Richard said that he makes sure his employees have fun in work and after. By the way “don’t drink and fly a plane” rule applies to Virgin Airlines, too. No wonder!
  • Creating business is one of the best ways to solve problems in the modern world. So do think Mohamamd Yunus (Social Business and Creating World without Poverty) and NR Narayana Murthy (A better India: A Better World). For some of the issues, however, business might not work. That’s where Virgin Unite plays role for Richard. For Yunus Social Business works.
  • Prepare for the worst.  That’s the most common preparations startups fail to make. 8 out of 10 fails, remember? Keep and exit strategy handy. Be flexible to sway from your initial plan.
  • Use modern communication to stay close to your dear ones. That means, stay close physically to your family, and stay connected to your business using technology; as much as is practical. That’s the secret recipe form Richard for work-life balancing.

That’s it! It meant to be bullet point, right?

In case you are hungry for more, go ahead watch the the full video. You might have a different set of take away. If you do, share them on the comment box.

Richard Branson with Marie Forleo, Joe Polish and Yanik Silver on Necker Island. Thanks to Marie Forleo for sending me the link.

10 ways and tools to measure performance of a rails application

You had some unique business idea. You jot those down, thought about days after days, nights after nights! Then, you hired a talented bunch of developers, web designers, UX specialist. They built it using a great framework, say, Ruby on Rails, and you could see it in action that you were dreaming for months.

Your site is live now! Unfortunately, you do not have millions of dollars to spend on server (like Google or Facebook). You deployed it on a Linux box with limited memory. After a months of excitement, you realized that, users are encouraging enough in-terms of visit, but not enough to earn revenue. To make it worse, you found that, bounce rate is higher than anticipated. You ran some survey to find that users had some specific sets of expectations about responsiveness of the application, that your site couldn’t just meet. They wanted it to be quick, reliable, responsive — all your site isn’t.

Well, you didn’t consider this aspect when you assigned the project to the development team. What to do now?

This is where performance enhancement comes into place. To dig further, you need to start gathering data about performance of your system because people are quite bad at predicting which part of a computer program has the biggest performance problems. Once you find bottlenecks, you can solve your problem easily.

Here are some tips for you to measure and monitor performance in a Ruby on Rails application. Some tools and tips are equally applicable for other web applications.

1. Rails Performance Test – Benchmarking
Through Rails performance test, source of application’s memory or speed bottleneck and can be found. Benchmarking helps find out how fast each performance test runs. Each test case is run 4 times in benchmarking mode.

2. Rails Performance Test – Profiling
Profiling helps you to see the details of a performance test and provide an in-depth picture of the slow and memory hungry parts. Each test case is run 1 time in profiling mode.

3. Rails logger
The simplest way to get information about performance is to analyze rails log. It will provide you information of the time spent processing each request, broken down into rendering and SQL time. You can also find whether a particular part are cached or the occurrence of cache expiry.

4. Rails analyzer
The Rails Analyzer project contains a collection of tools (The Production Log Analyzer, The Action Profiler, Rails Analyzer Tools, The SQL Dependency Grapher) for Rails that let you discover biggest slow spots in your applications allowing you to best focus optimization efforts.

5. Rails footnote
It is a rails plugin which displays footnotes in your application for easy debugging, such as sessions, request parameters, cookies, filter chain, routes, queries, etc. Even more, it contains links to open files directly in your editor including your backtrace lines.

6. Query Reviewer
Query Reviewer is an advanced SQL query analyzer. It generates a page with explanation output of all SELECT queries, rate a page’s SQL usage, display interactive summary on page.

7. Slim Scrooge
SlimScrooge is an optimization layer to ensure your application only fetches the database content needed to minimize wire traffic, excessive SQL queries and reduce conversion overheads to native Ruby types.

SlimScrooge implements inline query optimization, automatically restricting the columns fetched based on what was used during previous passes through the same part of your code.

8. New Relic
New Relic is the all-in-one web application performance tool that lets you see performance from the end user experience down to the line of application code. It will also list the errors if such occurrence occur.

9. Rack-bug
It is a debugging toolbar for Rack applications implemented as middleware.

10. Firebug
Firebug is a firefox plugin and a very powerful tool. Thanks to Joe Hewitt for this life saver. Apart from many outstanding features, it helps to monitor network performance. You can see the load time of each files (when they started to load and when they are completed), filter it by type (e.g. javascript or CSS) and examining http headers.

That’s it! You can suggest more. These are a mere introduction. You can try those out and examine the health of your application. I have a plan to write another one with tips regarding enhancing performance based on the generated health report of a web application. Stay tuned for that!

10 tips to boost up performance of your ruby on rails application

In my previous article, I wrote about “10 ways and tools to measure performance of a rails application” . In this article I will give you 10 tips to boost up performance of you ruby on rails application. The boost up are in-terms of speed as well as quality. Enough happy talking, let’s dive into those.

Ruby on Rails

1. Limit amount of data in a controller method

Thin controllers are easy to test and has a good performance profile because there’s some overhead involved in passing the controller instance variable around. In short, you need to follow “Thin controller and fat model”.

2. Split view in separate partials

In this way, views will be easier to read and easier to cache.

3. Choose right session storage

Based on your level of need, choose your session storage carefully. Here are what rails provide:

  • CookieStore – Stores everything on the client.
  • DRbStore – Stores the data on a DRb server.
  • MemCacheStore – Stores the data in a memcache.
  • ActiveRecordStore – Stores the data in a database using Active Record.

4. DRY (Don’t repeat yourself)

This is the most common things programmers tend to listen and don’t follow. Here is very basic example:

if(Player.find_by_id(1).name == "Tamim")
 return Player.find_by_id(1)
 else
 return nil
 end

It should be written by:

player = Player.find_by_id(1)
 if(player.name == "Tamim") then player else nil end

4. Eager loading

Eager loading is a way to solve the classic N + 1 query performance problem caused by inefficient use of child objects.

Let’s look at the following code. It will fetch zip of 10 users.

users = User.all(:limit => 10)
users.each do |user|
 puts user.address.zip
 end

Hence, 11 queries will be executed, 1 for the top and 10. The solution is to rewrite it to eager load address:

users = User.includes(:address).limit(10)

users.each do |user|
 puts user.address.zip
 end

You can use bullet, a great gem to kill N + 1 query problem.

5. Indexing

Database indexing is one of the simplest ways to improve database performance. The insert operation will become slower but will boost up fetching data which is more frequently used in web application.

6. Avoid dynamism

Although find_by and find_all_by dynamic methods are really cool, the are also kind of slow because each one needs to run through method_missing and parse the filename against the list of columns in database table.

7.  Caching

This is the purest way to speed up a rails application. Here are a short example of different types of caching:

  • Page Caching
  • Action Caching
  • Fragment Caching:
  •  SQL Caching
  • Asset caching

8. Use of CDN

CDN aka content delivery network is an interconnected system of computers on the Internet that provides Web content rapidly to numerous users by duplicating the content on multiple servers and directing the content to users based on proximity.
When, concurrent users will come to your site, using CDN rather than serving asset (like image, javascript, stylesheets) from your server will boost up performance.

You can try CDN from Amazon Cloudfront or Rackspace cloud files

9. Image spriting

In websites, a significant times are consumed for loading large number of images. One way of minimizing is to sprite your images. This will reduce number of images to be served significantly.

10. Minify and GZip stylesheets and javascripts

This is the last point, but an important one. You can reduce size of the stylesheets and javascripts significantly by Minifying it and serve as GZip format. It will improve the performance significantly by reducing request/response time.

Well, these are pretty basic guidelines but surely help you to boost up your application. Now, the bounce rate of your site should be less and you are expected to be a happier product owner :-)

Feel free to enrich it by providing comments and feedback.

Latest Posts

Address

Nascenia IT
12/4 Iqbal Road, Mohammadpur
Dhaka, Bangladesh

Awards

Affiliations