How to Launch a New Technology Service

Software companies must stay informed of the latest trends and technologies to remain leading edge with their work.  Avantica is no different.  How do we do it?  How do we bring new technologies into our service offering efficiently?  We have 3 main phases we go through before customers are offered a service or technology.  Let’s go through them one at a time.

Step 1 — Vision

The first step for any new technology is for someone to have a vision about the benefits of the technology to the industry and the company.  Someone has to champion the topic so to speak and raise awareness of the potential.  We’re lucky that our company is loaded with early adopters and an abundance of technology geeks.  Chances are if it’s new and hot, we already know about it.  Knowing about new technology is not the same thing as having a vision or seeing the market potential however.  The visionary must be the advocate or the champion to drive interest within the organization.  Let’s look at a couple of our recent examples.

While everyone in the US was going crazy for iPhones and Android, the adoption rate for nearshore providers was a bit slower.  Our CEO recognized that mobile would be big and so would mobile as a companion for Web.  In fact, he was given an Entrepreneur of the Year award for his vision and for recognizing the potential long before others.  I am proud to say that with Ruby on Rails, I was the one who recognized the power of doing things the “Ruby-way”.  I started learning language several years ago and attended industry events like the 2008 Rails Conference in Portland, Oregon.  We’re several years into our Ruby on Rails practice and truthfully it has been very successful and continues to be one of our fastest growing market segments.

In both of these cases, we recognized not only the power of the platform but also the potential of the market.  We investigated further and determined this was a good place to focus our leading edge people.  Then, we championed the idea to start to build momentum.

Step 2 – Research

Your CEO or CTO says this is a business to be in, now what?  Simple really.  Call in the gurus!  We have these people in our company that generally serve as  architects and leads on projects, but part of their time is set aside for research and exploration.  You know the type of engineer I am talking about.  These are the people who look at a blank white board and know what to draw.  They can look over an SDK and compare to the 5 other similar ones they already know.  Truthfully, we think this is something that sets us apart from more traditional outsourcers. Our senior guys are really into technology.  It’s a hobby and a way of life in addition to a job.

Our leading edge engineers explore the new technology and validate the vision.  They study the internals and create sample products and solutions to see how the pieces fit together.  Once they are proficient, these technology leaders work to bring the rest of the organization along.  They provide links to Web sites and articles that explain all angles of the technology.  Our best engineers go so far as to develop classes like the one pictured below to teach our teams the new technology.  That person in the front is one of the aforementioned gurus by the way.  We even do internal projects for teams to learn.  For example, we did a Ruby on Rails project called RubyNearShore to implement a community site with expert exchange functionality and social networking based on Ruby on Rails.  The site was only viewed internally but served as a great project for people to work on real implementations of the language.

Step 3 – Opportunity

At some point, our research validates the technology and we have enough trained engineers to field a team.  We start marketing our new capability and looking for clients who need a product based on leading edge technology. Generally, the companies we engage with are start-ups and technology companies looking for a competitive edge.  For example, when Ruby on Rails first emerged, the attraction was speed of development and that lead many venture funders to push their new companies to launch on a new language.  Over time, the technology matures as our customer base grows and eventually we end up with a stable practice that we offer to new and existing customers.

We’ll see who in our company has the vision for that next great technology movement.  Perhaps we’re already seeing that in location-based services or maybe even high volume messaging.

Avantica Mobile Development Leader Ronald Hernandez

We interviewed our head of mobile development Ronald Hernández about his group and what they are working on.  Read his comments below.

What are the goals of the mobile group and what are you trying to achieve?

Obviously there is the goal of getting some great products out there.  We are trying to expand our knowledge and put in place some processes that will make mobile development run smoothly.  As a group we are a functional unit inside Avantica, meaning that we would have a whole set of resources dedicated to this specific area, like an independent group that provides services not only to external clients, but also to Avantica’s internal projects.

What types of applications does Avantica have experience with?

I guess we’ve been pretty much across the board in types of apps: Finance, Entertainment, Lifestyle, Health and Fitness. We are talking to a new client about a music application that should begin development shortly.  The apps that we’ve worked on vary a lot in terms of functionality and what it takes to piece them together to have something the client will be satisfied with.  We’ve developed them in all platforms: Android, iPhone, Symbian, Blackberry, Windows Mobile, so I can say we have experience across the whole board in both categories and platforms.  We’re never shy to go ahead and expand that.

How did you get involved with Avantica’s mobile group?  What interested you to lead the group?

I think that I’m a very technical person.  I love to work with gadgets and play around with stuff, so, all mobile things and working with small devices comes really natural to me.  Henry [Avantica Director of Development] came to me and asked me if I was interested to get the group going.  I did a couple of applications and the company saw that there was potential to get into this line of work.  Ever since then, I’ve grown to like the experience.

Can you describe a favorite project your group has done?

One of my personal favorites is a news app we developed for La Nación, which is an important Costa Rican newspaper that has the largest circulation in the country. It’s a personal favorite because it took a big effort to get it done, it’s a really cool app, and I think it pushes the boundaries in the UI side more than what we have done in the past.  It meant working with a very important client in Costa Rica and it’s going to give us a lot of exposure as a development company.

What mobile platforms seem interesting to you and what technologies are you looking at?

Every day is a new learning experience for us.  We try to cover as much as each SDK has to offer. We are investigating cross platform options like Phone Gap or Mono Touch to be able to go ahead and build mobile applications from other types of frameworks.  That is interesting to us because then we can generate apps in a lot less time across all platforms than if we create different applications for each platform.

From the Graphics point of view, I would say iPhone and iPad are very interesting to us. Obviously we don’t want to outcast other platforms, but seeing an iPad and the real estate that it offers, the possibilities we can explore are very interesting to us.

How do you envision Avantica´s mobile division in the future?

I see it growing in size.  Our engineers need to be fully trained in a whole suite of platforms.  Obviously I want them to be experienced in iPhone, Android, Blackberry and all major platforms.  Also I see us as a unit that generates content and learning material so that we can give back our knowledge to Avantica and all its resources, so that if they are not directly involved with the unit, at least they know what we are doing.  And from then on I also think that at one point we will be able to be recognized as experts in the area and we will be able to give back and share our knowledge to clients and the regional mobile community via seminars.

What is your favorite device and why?

My favorite device at the moment is the iPad.  It just rocks! It’s a tool that helps you with your every day activities. I’ve been using it for work, to write down notes, check out websites, check out trends and new apps coming out, that’s pretty cool. I carry it with me all the time. It’s great and it has given me an excuse to not carry my laptop around anymore, and that is always welcomed.

If a person is interested in mobile development, what do you recommend they do?

Read a lot.  Scour blogs and forums because it is an ever-changing environment and new stuff comes out every day.  Just being able to browse through the information that the Internet offers is a great start. Certainly, mobile is something that is flourishing at this moment.  Not all the rules and standards have been written down and there is new stuff coming out every day so just keep up with the trends and all that is going on.

I would recommend that if you are looking to get into mobile development, to start only with one platform and then move on to the others. If java developers are serious about doing mobile they can start off with Android or Blackberry because they can actually do java developments in there.  They just have to learn the quirks, nuts and bolts of how to do the application, but they already have the skill to start with.  If they want to do iPhone, I would suggest they get a book.  There are a ton of really good books out there that feature the craft.  Just keep in touch with other developers and what they are doing.

Any final thoughts?

Mobile devices are adding more functionality every generation so consequently apps will get more and more complex.  That gives developers and users lot of opportunities.  Faster processors, larger memory and bigger display screens are giving great opportunities to get creative and we are getting to a point where the sky is the limit to what you can do.  It is only going to get better with time.

I would encourage companies and developers to go ahead and jump into this. It is very interesting in the technical side and is something that the end user is going to be craving, especially with the proliferation of smart phones. It’s good business-wise and is also great progress from a technological and scientific approach.

Avantica Ruby on Rails Expert Christian Segura

We interviewed our most senior Ruby on Rails expert Christian Segura about this growing technology movement.  Read his opinions below.

When did you start learning Ruby on Rails (RoR) and what interested you about it?

I started learning RoR more than 2 years ago based on the fact that I am a web developer specialized in scripting languages and at that time I used to work mostly with PHP. The forums, discussions and the web in general terms were pretty hot regarding the Ruby programming language and its most popular framework Rails.

What type of applications is RoR suitable for?

In general terms, RoR is suitable for most types of web applications that currently exist. However many people have been using it for quite a long time in apps such as e-learning systems, content management systems, blogs, CRM, social networks, e-commerce solutions, web services and API connectivity applications among others.

Do you think there is a real benefit for customers who choose RoR?

Indeed they are going to perceive real benefit from the start.  RoR allows you to set up a basic application literally in minutes, which makes it great for the customers that enjoy watching results sooner than later (what customers don’t like that?). In that same line, Rails gems and plug-ins allow you to add core functionality into the application (authentication, pagination, etc.), that have been used by many applications and even more important are being tested around the world, so you can focus on development of customer specific business rules.

What are you favorite parts about working with RoR compared to other languages and frameworks?

I have to say that what I like the most from RoR is the fact that it is based in a pretty solid language. Ruby native core functionality provides developer with powerful tools such as metaprogramming and reflection which makes it really flexible and effective in some tasks that in other languages would be painful to accomplish.  I think definitely Rails has an advantage over other frameworks because it is based in simple principles like convention over configuration, DRY and even the Model/View/Controller pattern (MVC). Any developer with the notion of MVC will feel comfortable working with RoR.  The ramp up process for new developers that join an existing RoR project is clearly minor than with other languages/frameworks.

You are now the company teacher about RoR.  Can you tell us how you train new engineers?

I like to start by taking a look at the powerful functionality that the language provide.  Ruby has many interesting features that any developer can take advantage and that definitely is worth it to teach first. Also, I think it is important for developers to recognize where the programming language ends and the Rails framework starts.  After that, I like to teach the basics and theory behind the framework: Active Record, Action Controller, Action View, etc. After some basics, I like to combine theory with the creation of a project from scratch since it is great for developers to see before their very eyes how fast they can build an application.  At the very end, I include other more complex topics/tools not only from the framework but also that help to create better products.

What is interesting about upcoming changes in the language and framework?  Do you like the direction it is going?

The next major milestone is going to be Rails 3.  It’s really interesting because they are also merging the Merb framework (another popular Ruby framework) into Rails, and the core dev team is going to receive great input from Merb.  Besides that, I think some of the interesting features are going to be ActiveModel which is going to allow the use of validators and other ActiveRecord functionality into regular classes, Responders which will allow to set specific business logic to be wrapped when you are sending a result back from controller to views (like the format of response, etc) and also performance improvements among others.  They are also planning on defining more standards to have better API integrations, for example, new ActiveModel would make easier to include a particular ORM’s (by following the standards) instead of ActiveRecord if needed.  The direction I think is the correct one.

Why do you think engineers like RoR so much?

I’m one of them!  I can say that in general terms we like the flexibility that Rails and Ruby allow without leaving out important topics such as security or performance.  Definitely Rails facilitates the learning process when you need to move from one project or application to another since you don’t need to learn the whole stack and architecture from scratch.  The conventions will show you the way to go.  One thing that every human being appreciates is having an easier life.

Cultural Similiaries Costa Rica and US

We often mention that Costa Rica and the US have significant cultural synergy.  Clients give us instructions like they want a site like Facebook but with LinkedIn groups and forums like StackOverflow and our teams understand what that means because they are on-line savvy and familiar with what is happening in US markets.  To prove the point, I walked around the office on my last trip to Costa Rica and took pictures of anything I was likely to find in a US office.  Here’s what I found.

We get our news and information about the industry from the same sources.  The latest Wired was sitting on a desk in an office.

We both care about our health and eating right.  This post about healthy eating was on a common bulletin board.

Wii is fun in any country.  Who hasn’t participated in a Wii tournament at this point!  This was on that same bulletin board as the health information.

Raising your kids to do well in school is important.  Most offices have family pictures in them.

And of course, Costa Rica is into the same cultural icons and trends as we are.  Take a look at what I found on cubicle shelves around the office.

I can’t believe someone had a Mr. Potato Head!  That just made my day.

I guess there is something to that cultural similarities point after all.  We’re concerned about the same issue like health and education.  We’re all really into technology and having fun.  And truthfully, Homer Simpson is funny in any language.  Doh!

Happy Birthday Henry, Director of Development

Just because we work under tight deadlines does not mean we can’t have a little fun now and then.  Happy Birthday to Henry, our Director of Development and one of the longest standing employees of Avantica!

Refreshing a URL After An AJAX Call

This technology post was written by Jorge, one of our engineers in Peru who is also a .NET expert.

A few days ago I was facing a little problem.  How can I update the browser’s URL after an Ajax Callback?  Well I started doing some research and I found an easy way to solve my little problem.  Before pointing you to the solution I want to let you know the context of my situation.

I have a gallery with many thumbnail images.  If you click one of them you will be sent to a page where I will show you the original image.  The first time everything is OK, because you will see the correct URL.  Let’s say I clicked the photo with ID = 1, the URL you will see something like this: http://mydomain.com/Page.aspx?GalleryID=1&PhotoID=1

But what would happen if I click on previous and next buttons? Of course doing an Ajax Callback you will see the right image, but the URL still remains the same.  I mean: http://mydomain.com/Page.aspx?GalleryID=1&PhotoID=1 is always shown even if I clicked the next button twice (if I did so, I’m supposed to be at PhotoID=3).

Well the solution I found is to use a nice Jquery plugin jquery haschange event thanks to the contribution of Ben Alman: http://benalman.com.  Download the source code and just copy and paste it in your page or in a js file.  I recommend you to create a js file.  The source code can be found at: http://github.com/cowboy/jquery-hashchange/raw/v1.2/jquery.ba-hashchange.js

Refer your script file at your page, something like this: <script language=”javascript” type=”text/javascript” src=”<%= ResolveUrl(“~/js/jqueryHasChange.js”) %>”></script>

Create a new javascript section:

<script language="javascript" type="text/javascript">
$(function(){
$(window).bind('hashchange', function(){
var hash = location.hash;
var array = hash.substr(1).split('&');
galleryId = array[0].substr(array[0].indexOf('=') + 1);
selectedPhotoId = array[1].substr(array[1].indexOf('=')  + 1);
});
$(window).trigger('hashchange');
});
</script>

And that’s it, you’ll see the magic in action. The code I listed here is for the following URL: http://mydomain.com/Page.aspx?#GalleryID=1&PhotoID=1.

Also don’t forget if you have a link for previous to do something like the following, in this case for a Ruby on Rails application: <a id=”navigateRight” href=”#GalleryID=<%= GalleryID %>&PhotoID=<%# GetRightPhotoID() %>”>Next Picture</a>.  Notice that for “href” you need to include “#” then the parameter and that’s it.

Enjoy it and happy coding,

Jorge.

Follow

Get every new post delivered to your Inbox.