Node.js: An Introduction for Decision Makers

JavaScript and The Web

JavaScript is a popular web programming language that is most often associated with the client side or Front End. It is comprehensive, considering that JavaScript is the language that interacts with the web page’s elements directly through the HTML DOM (Document Object Model). Almost all web developers must use JavaScript to some extent, whether on the Front End or Back End, JavaScript is everywhere on web applications! JavaScript is responsible for binding events to DOM elements, it has responsibility for adding/editing/deleting DOM elements, and most importantly, it is what fires web service calls (often via AJAX) to the Back End. Simply put, a majority of web developers will have to write JavaScript at some point.

Node.js Structure


The following diagram shows a Node.js server lifecycle.

“Node.js is a JavaScript runtime built on Chrome’s V8 JavaScript runtime.” Using the least amount of words, Node.js is software that allows JavaScript to run on the server. Before deciding whether or not Node.js is a good option for your next web application, it is important to understand how it works. Node.js can be installed on any platform! It can run on Windows, Linux or Mac. This can save a lot of headaches when configuring and coding the application. This may be seen as an advantage, since your application will not be tied to any particular server architecture.

Other platforms and applications normally have an Application Starting Point event, function or file, where code is run linearly with a well-defined beginning and end. Node.js is different:  events are defined and attached to a server port, where they wait to run code until an event is triggered. “Node.js runs single-threaded, non-blocking, and asynchronously.”

This makes Node.js very fast and memory efficient due to the way that the server handles a new request.

It does not create a new thread, instead it starts running asynchronously and is always ready to handle the next request. This consumes less memory and makes the server fast, but it is important to understand when this is useful and when it may not be the best approach for a given set of business needs. This approach does not work as well as other options when the  application needs to perform a big, long, complex calculation but becomes very powerful when it is required to perform several actions at the same time or handle a high traffic load (horizontal scaling).

It is important to note that the Sleep function will make the main single thread sleep, therefore putting everything to sleep! Apart from being fast and asynchronous, Node.js is also lightweight thanks to its modular approach. Node.js code can be seen as defined modules on ports. Common frameworks are heavy and contain all the references possible to use within that framework even if they aren’t used in a particular implementation. On the other hand, since Node.js defines modules, the references are only loaded when they are deliberately included (they need to be included with the ‘require’ keyword).

FrontEnd + BackEnd

Taking into consideration that Node.js is cross platform, asynchronous and lightweight, it’s often a good option for many API’s or other Back End projects where each operation requested is comparatively lightweight in scope but many are potentially needed in a small timeframe (horizontal scale). JavaScript has historically been limited to the Front End, are you telling me that it is now a legitimate Back End technology as well? In many cases, yes!

This is another great advantage, now both the Front End and Back End for an application can be done in the same language thanks to Node.js. For the Front End, JavaScript alone is not sufficient, the developer also needs HTML, CSS, and often frameworks such as Angular, React, etc. But this has always been the way for JavaScript in Front End. The same can be said for using JavaScript on the Back End, where familiarity with new modalities and different libraries and frameworks can round out a Back End JavaScript developer’s skillset. However, you can imagine the great potential efficiencies and savings unlocked by having the same pool of developers familiar with a language equally powerful on both the Front and Back Ends! This is the promise of Node.js.

Popularity & Community

After exploring some of Node.js’s characteristics, it shouldn’t be surprising to know that even big companies increasingly are choosing to use Node.js in production environments. Some examples: Netflix, LinkedIn, Walmart, Uber, PayPal and many more. Being popular and active in various production environments and companies makes Node.js a technology that has one of the most important advantages for any technology under evaluation, the community. Node.js has a very large and fast-growing community, thanks to its efficiency and its unique abilities. This helps because if an environment running Node.js presents an issue or needs diagnostics or maintenance, it is highly probable that someone else has already encountered the same issue, and the solution can be easily found and digested.

A big community for a given technology means that there is a lot of support and documentation on the web, which can drastically shorten the time-to-resolution.
A big community gives rise to another advantage, Node.js has a package manager (NPM) available to facilitate downloading and using third party libraries. There are countless extensions in these libraries that offer solutions to most problems that a developer might face, reducing the learning curve or development time of the project.


Node.js is an exciting option for many web applications when its high efficiency and lightweight, modular design are taken into consideration. It can handle high traffic loads and high concurrency with sometimes game-changing performance compared to many other platforms. Running a Back End project on Node.js is comparatively simple, and since the majority of developers are already skilled to some degree with JavaScript, synergies and efficiencies on your team could be very advantageous. Finally, Node.js has become so popular in the last few years that it now has a large community that have created thousands of solutions and extensions for tackling all sorts of common problems. If your next project will be highly concurrent, and your team has a lot of existing experience with JavaScript, considering Node.js makes a lot of sense.

My Xamarin Experience

xamarinDifferent Options

When developing software, whether it’s for a fun project or a formal business project, a requirement can be met by many different options and technologies. After a while of looking at many, it is natural to think which is the best option for the requirement.

Let us consider the options for building a mobile application.

Sometimes the best option is determined by the compatibility of the implications of the option and the technical strengths of the development team. (I’ll cover implications a little later)  The first option to consider when building a mobile application are native applications, but it immediately raises a warning – when the code for a platform is done, the code will need to be transcribed to another platform.  Second, every native technology has its own implications. So to have a successful mobile experience in all native platforms, a developer for each platform is needed.

Even if there was a developer for each platform, is it worthwhile to develop a native mobile application for each platform instead of modifying a web page so it can be viewed in any device?  This is an important question to consider so here is a comparison chart for key characteristics.

CharacteristicNative ApplicationWeb Page
InternetAfter downloading the app, it can work in offline or online modeOnly works with internet connectivity
PerformanceNative components are lightweight and fastPages tend to be heavy and work somewhat slower
Push NotificationsCan send push notificationsCan’t send push notifications
Hardware AccessAccess to camera, speaker, flash, etc.Does not have access to hardware
AccessibilityOpening the app with a clickOpening browse and typing URL
User ExperienceNatural feels and smoothUnnatural and, in some cases, slow

Based on this comparison, it appears that a native application offers a wider range for creativity and service options. If the development team handles all the implications for every platform then it might be a good idea to develop a mobile app natively for each platform, considering that native applications have the best performance and assuming the business is willing to pay a higher cost.

Let’s talk more about those “implications”.


When dealing with software frameworks and APIs, each framework works naturally with the programmer at least interacting with (in others mastering) certain technologies or programming languages. This comes naturally if the framework is an extension for another technology.

For example, consider Node.js, a JavaScript runtime. When using Node.js, being a JavaScript runtime, the code will naturally be programmed in JavaScript language. Therefore, working with Node.js framework implies the programmer knows, or can at least interact with, JavaScript language. We’ll call these framework dependency implications.

Following are some implications for some mobile application frameworks.

Mobile Application TechnologyImplications
Native Android Mobile App• Java
Native iOS Mobile App• Objective-C or Swift programming language
Xamarin• .Net (C# programming language) • Extensible Application Markup Language (XAML)
Appcelerator• JavaScript • Titanium SDK
Phonegap• Hypertext Markup Language (HTML) • JavaScript Language • Cascading Style Sheets (CSS) Language
Ionic• Hypertext Markup Language (HTML) • JavaScript Language • Cascading Style Sheets (CSS) Language • AngularJS
React Native• Hypertext Markup Language (HTML) • JavaScript Language (ES6 Syntax) • JavaScript XML (JSX) • Document Object Model (DOM)
Sencha Touch• Hypertext Markup Language (HTML) • JavaScript Language • Cascading Style Sheets (CSS) Language • Sencha SDK • MVC Architecture

There is another cost that is not visible at first glance.  Even though the different platform projects have the same core and logic, ultimately they are individual projects. Each project has a different language and application lifecycle and SDKs, so each project will also need its specialized maintenance. This can all add up.  If creating the application natively appears to be too expensive or the development team does not handle all the implications, another strategy can be used.

Using a cross-platform technology has become very popular as a hybrid solution for mobile development, so you can write one set of code that can be used on multiple platforms and can give the user a native experience. There are many cross-platform mobile app technologies, each with it’s own implications. The strategy is to pick technology that has an implication that the development team masters, plus another consideration. Since this is cross-platform, it is important to choose a solution that has a large percentage of transcribing code; the code that can be written once and run natively across the platforms.

xamarin developerMy Experience

When I decided I wanted to develop mobile apps, my first thought was “What native technologies do I know?”

I had used Objective-C for an iOS application.  If I wanted to make a native android or windows phone application, I’d have to learn about project structure and app lifecycle and hope I could program in the language they used. Since I only knew one native technology (iOS) I decided it was better to invest time learning a cross platform technology.

I then thought “Now if I’m going to use a cross platform technology, what implications can I handle the best?”.  Xamarin was a natural choice for me, thanks to the language and application structure.  C# is one of the languages I handle the best, plus the structure was intuitive. An .xml page with its back end code, the application lifecycle was also C-like. I managed to learn XAML and the app structure and lifecycle quickly.

Later, I discovered that Xamarin generated native apps that shared 95% of the common code. I also got to an acceptable level of understanding in android and iOS native applications. Then I decided to test Xamarin’s generated native projects. It seemed that the native applications were greatly structured and coded. I thought “Wow. In theory, it is possible for someone to develop a full native Android app without knowing Java or the android app structure or even having the Android Studio”. Another plus for cross-platform technologies comes from the abstraction layer.  When using Xamarin, the code handles mobile events (like Swipe) in Xamarin’s way.

I can code once and use these events without even knowing how to do it the native way.

I decided it was a good idea to take full advantage of these generated projects and tried making everything in Xamarin, because some things are not implemented on the framework. For example, Xamarin has no radio button tag for iOS applications. Instead of modifying the generated iOS application and using Apple’s radio button, I decided to implement my own radio button in Xamarin, which rendered natively in iOS. This seemed like a good choice that would become an advantage, but I also found a disadvantage, when making a minimum change on a Xamarin project, it must be recompiled to see the changes on the device. This can be time consuming if one wants to test various changes.


I decided to use Xamarin to build mobile apps because it was cross-platform. So most code would only have to be written once. And the projects generated by Xamarin were native. This is not the case on every cross-platform technology. The fact that the final projects are native is an advantage since mobile characteristics can be used.

Still, I studied native projects for Android and iOS to be able to modify the generated projects if something can’t really be done on Xamarin (I realized Xamarin does not support everything for every platform). Again, this can be done because Xamarin generates native projects.

In other words, I take advantage of Xamarin to reutilize code and generate fully native platforms to the extent it permits me, but I also know how to do it without Xamarin in case I really need to modify a native project. Xamarin’s implications are my strengths in programming. This is how I determined Xamarin was the best option for me when it comes to developing mobile applications.

It is important to note that the best option is a balance between the technical strengths of the development team and the implications of the technology. Xamarin with native platforms background was the best option for me, but I have a C# background.  Another developer could have worked faster with Ionic if, say, the developer is a master in AngularJS.

What to Expect at IdeaFestival 2017

ideafestival 2017Technology conferences occur all over the world every year from Mobile World Congress – the largest mobile industry gathering in the world – in Barcelona, Spain to Amazon re:Invent – a conference hosted by Amazon that educates the global cloud computing community. With so many technology conferences, it is easy for someone in tech to find a conference that piques their interests. IdeaFestival 2017, located in downtown Louisville, Kentucky, is the next technology conference on the calendar.

The technology conference/festival pitches itself as “a celebration of the curious, with the goal of inspiring all people to embrace the excitement and danger of new ideas” and promotes thinking in different and innovative ways.  IdeaFestival will run from Tuesday, September 26th thru September 28th, 2017 starting with a full day event on the 26th – Thrivals 10.0. This year’s conference is hosting plenty of events and attendees will see a plethora of presenters. Read in detail what to expect at IdeaFestival in Louisville, KY this year and how to get involved.

4 Things to Expect at IdeaFestival 2017

1. Opportunity to Expand Your Festival Experience

IdeaFestival itself is a two-day festival that runs the 27th and the 28th of September; however, there is an opportunity to add another day onto your festival experience with Thrivals 10.0. For an extra $49 become a part of the full-day conference on “finding your algorithm for the future”. This fall, the conversation is focused on living in a digital age that is constantly changing. It will also cover the combination of GRIt, humanity, and artificial intelligence. Thrivals 10.0 will feature 10 presenters including Janelle Monae – an American musician and one of the leading ladies in “Hidden Figures”.

2. A Packed, Fun-Filled Day-to-Day Schedule

IdeaFestival released the day-to-day agenda for the 2017 conference and each day is full of presentations and classes. The two-day festival starts at 8:00 a.m. each day and includes different presentations as well as several 10-minute classes. Class topics have not be announced yet, but you can stay tuned on the Agenda portion of the IdeaFestival website.

The first day of the festival, after Thrivals 10.0, kicks off at 8:00 a.m. and ends at 5:30 p.m. or 8:00 p.m. depending on your festival access. If you have a festival pass, you’re invited to join sponsors and presenters for Taste: The Culinary Artists of the Region – a networking experience with food sponsored by Copper & Kings. The Thursday of the festival runs from 8:00 a.m. to 5:30 p.m. with no additional presentations available afterwards.

3. Inspirational Speakers and Presenters

On top of the 10 presenters that will be at Thrivals 10.0, there will also be 25 presenters at IdeaFestival. 2017 presenters include: Ann Carlson – a performance artist and performance curator; Hannah Drake – lead artist for Louisville’s local Project HEAL; Tom Eblen – a Western Kentucky University alumni and columnist for the Lexington Herald-Leader; Peter Gray – an American psychologist and research professor at Boston College; John King – CNN’s chief national correspondent and anchor of Inside Politics; and more.

4. Coverage Over a Variety of Topics

The presentations at IdeaFestival 2017 cover a wide variety of topics and, as a result, guarantee something for everyone. The first day of the festival opens with a presentation by Joe Geoghegan titled “Field Notes: The Untapped Power of Diversity in a Fractured World”.  His presentation will cover his experience traveling to over a dozen countries using only his wits and he’ll be sharing his notes on and impressions of his travels while taking a break from his adventuring. Throughout the first day, festival-goers will be able to listen to presentations on the future of our economy, the prevalence of cyberpunk, the relationship between humans and the planet, the science behind whiskey, and much more.

The second day of IdeaFestival will get kicked off with a presentation by Emily Dreyfuss – senior writer at Wired – during which she will discuss some of the biggest pieces of technology emerging and disrupting business, design, science, and culture. Festival attendees can participate in presentation on polarization, the art of food as medicine, and the mind and music of Chopin before IdeaFestival concludes.

IdeaFestival is going to be an informative and inspirational technology conference this year as it has in the past.

Be sure to buy a ticket to the two or three-day event depending on your interest in Thrivals 10.0! The festival will be held at the Kentucky Center  at 501 W. Main Street, Louisville, Kentucky. IdeaFestival is an opportunity to collaborate with others interested in technology and get inspired to think outside the box.

At Number 8, we embrace innovation and, furthermore, we pride ourselves on exercising formative thinking in every endeavor we chase. IdeaFestival 2017 has the same values, so we encourage any and everyone to attend the 2017 technology conference if possible. Interested in learning more about Number 8 and how we employ innovative technologies and schools of thought while living our day-to-day lives? Contact us today. Call us at 502-890-7665 today or visit us online.


Nearshore Software Development

outsourcing nearshore software developmentWhen it comes to choosing an outsourcing partner for a custom software development project, you may be faced with a critical decision in choosing between offshore and nearshore software developers. In order to operate as efficiently as possible, most companies look to find the best services at the best possible rates. Outsourcing software development has allowed companies to maximize production in a cost-effective manner to produce great end products.

Offshore outsourcing is a term often used to describe times when an organization outsources software development services to a company in a far-a-way location like India or China. When you outsource software development to a place like India or China you are significantly separated by time zones, language barriers and cultural differences.  When an organization outsources to an offshore location, it is not uncommon to face challenges with the time gap as well as communication and cultural differences. Perhaps not surprisingly, sometimes production costs are higher than expected due to this.

In comparison, nearshore outsourcing happens when an organization works with a software development company located in close proximity to the U.S.  This typically includes many locations in Latin America including Costa Rica.  Working with a nearshore software development firm often helps you avoid some of the barriers associated with outsourcing to far-away locations, including language and cultural gaps. Further, the close proximity offered by nearshore software firms allows for strong relationship-building and effective communication between onshore and offshore developers and product managers. Understandably, this may be conducive to a more efficient process, while also leading to an overall better end product.

Nearshore Technology Model

When it comes down to custom software development, nearshore outsourcing can provide you with many benefits. Follow along to learn the four basic concepts involved with the nearshore technology model:

  1. Flexibility – When outsourcing to a nearshore location, close proximity and working within the same or a similar time zone allows the project members to be adaptive, responsive and flexible throughout all stages of development. Stakeholder requests may change often during a development project. Nearshore team partners can adapt quickly to change requests during your normal business day.
  2. Communication – A development project relies heavily on communication between developers, product managers and other stakeholders involved. Language barriers can sometimes impose an impediment on product development. Nearshore developers located in places like Costa Rica are fluent in both English and Spanish. A strong communication line across all members of the team is a key part of producing a great product.
  3. Relationship building – Due to the convenient proximity of nearshore locations, relationship building between managers, developers and stakeholders can be achieved with greater ease. Onsite visits are more accessible to managers and stakeholders who want to have face to face meetings with nearshore developers. Strong relationship building encourages cohesion between team members, often increasing velocity, quality, and productivity.
  4. Skilled Technology Professionals – Nearshore software companies like number8 feature top technical talent in neighboring countries. Many Latin American countries are working to educate highly skilled software professionals. Employing the best developers in the software business may prove to give a company a competitive edge over rival offshore companies.

Outsourcing software development enables a company to employee highly skilled workers at an affordable rate in order to maximize efficiency during a software development project. A nearshore software firm may provide additional benefits to the more traditional offshore model. Find out more about nearshore software development by contacting number8 today.


A Better You

prosoft nearshore helps companies get leanThere are quite literally thousands of diet and exercise plans populating the internet.  Entire books can be found in libraries and bookstores that contain the perfect plan for getting the perfect body.  Perhaps these plans are the ideal secret to crafting the healthy version of yourself that you’ve always been seeking.  Perhaps.  

But it seems clear that getting in shape is really just a matter of three simple steps:

1. Eat a little less.

2.  Eat a little healthier.

3.  Exercise a little more.

It’s not a complicated formula.  There doesn’t seem to be a better way of accomplishing your goals.  Every diet fad and every workout plan is some variation of that system.  Whatever shape you’re in, whether you are looking to lose fifty pounds or tack on that extra inch on your bicep, the results you seek can be found through hard work and eating discipline.

Everyone wants the magic bullet.  They want the pill or the one workout or the one diet plan that can let them suddenly look and feel healthier.  But it doesn’t work that way.  The same can be said in business.

There is no magical solution to the problems that your business faces.  But following a few simple and time-tested truths will always help.

1.  Work harder.

2.  Save money.

3.  Communicate better.

Just like earning the perfect body, it won’t happen overnight.  Thankfully, Prosoft Nearshore can help.  We can’t give your company six pack abs or multi-million dollar bottom lines in a day.  But we can help you work harder, save money, and communicate better.

By outsourcing your software development needs to Costa Rica, Prosoft Nearshore offers a nearshore solution that allows your company to meet all three of those goals.  Because Costa Rica is located in the Central Time Zone, your project leaders can save you time and money by working on YOUR schedule, unlike offshore partners in India, Japan, or other East Asian nations.

You can also work harder, as Prosoft Nearshore can free up your creative employees by providing great software developers who don’t have to work in-house.  Our developers can work in agile, C++, java, ruby on rails, and many other platforms which will make your company look great.

Just like getting the perfect body, trimming the fat in your company can take time and effort.  Just think of Prosoft Nearshore as a personal trainer.

Vegas, Baby

software outsourcing with prosoft nearshoreLas Vegas, Nevada has been portrayed in movies, books, and television shows as a crazy and debauched kind of town.  It is a city well-known for gambling, drinking, prostitution and partying.  But is that the truth?

While no one is silly enough to label Vegas as a quiet, sleepy hamlet, it is reasonable to question whether or not the image of “Sin City” is quite as accurate as pop culture would lead us to believe.

The truth is, a trip to Las Vegas will be exactly what the tourist makes it.  If someone flies in to McCaron Airport looking for the ultimate party, they can find it.  If a couple arrives looking for romance, fine dining, and tranquil beauty, they will find that.  And if a traveler meanders in to town looking for art, history, and natural beauty, they can find that, too.

So while the craziest party town of all time CAN live up to its reputation, there is more to be seen than casinos and clubs.

Prosoft Nearshore doesn’t necessarily condone or condemn the party lifestyle.  But we do believe in making your journey be what you want it to be.  Much like Las Vegas can be done in many ways, we know that software development outsourcing can be done in many ways.

Our firm belief at Prosoft Nearshore is that we do it the right way.  By offering nearshore outsourcing in Costa Rica, we believe we set the standard in communication, quality, and service.

Located in the convenient Central Time Zone, unlike offshore competitors in Asia, Prosoft Nearshore works on the schedule of most American businesses.  This keeps project leaders in perfect communication with their developers.  C++, javascript, and ruby on rails are only some of the languages our highly-skilled software developers can speak.

How you do Vegas is up to you, but try software development outsourcing our way.  What happens in Costa Rica


The Decision Part 2

software development outsourcingLebron James is one of the most polarizing figures, not just in sports, but in the world.  He is undeniably one of the finest basketball players in the world.  Many would argue that he is the best.  He is large, skilled, agile, strong, and determined, which makes him the ideal hoops star.  His services are desired by every basketball team in the world.  And every few years, he gets to test the market in order to determine where he fits best.

Four years ago yesterday, Lebron James aired a television broadcast on ESPN to announce where he had decided to play.  The program, titled The Decision, was a massive ratings success.  It raised millions of dollars for charity.  And it lead him to the Miami Heat where in four years he has won three MVP’s, been to the NBA Finals four times, and brought two NBA championships home to his fans.  By most measures, this would be considered spectacular.

And yet… James was roundly criticized for the broadcast.  It was seen as arrogance.  It was seen as a betrayal of his hometown Cleveland Cavaliers.  And it was seen as three NBA stars circumventing the established free agency system to join forces and throw the balance of basketball power out of whack.

And this summer, he can do it again.

Perhaps James will decide to stay in Miami, or return to Cleveland, or move to some third, and potentially greener, pasture.  Only King James knows for sure.  But the world knows that he will consider every aspect of the decision before making it.  It will be a personal decision, but it will also be a business one.

Prosoft Nearshore understands how businesses, and even mega star athletes like Lebron James, tend to make these decisions. By considering every available variable.  When Lebron makes his choice, he will consider the weather, the money, the teammates, the chances of winning, endorsement opportunities, and the comfort of his family.

When a company tries to choose a software development outsourcing partner, they consider a similar number of factors.  Where is the company located?  How good are the software developers?  How much will it cost?  Can they work in my preferred code? And how is the overall customer service?

Prosoft Nearshore feels like we are the ideal destination for all business “free agents”.  We are located in Costa Rica, which is convenient in the Central Time Zone, allowing for optimal communication.  Our developers are top notch, capable of working in ruby, java, c++ and many other mediums.  Our costs are fair and competitive, and our customer service can’t be beat.

Maybe your company isn’t choosing where to play basketball for the next six years, and maybe your CEO isn’t as famous as Lebron James… but Prosoft Nearshore can make your decision a lot easier than his.


Prosoft Nearshore, the world leader in nearshore software development outsourcing, wants to officially congratulate the National Men’s Soccer Team of Costa Rica on qualifying for the knockout round of the World Cup!

Prosoft Nearshore has been a proud partner of Costa Rica, utilizing offices there to save our customers money and improve communication lines.  The Tico’s as they are known, have qualified for the second round for only the second time in their nation’s history.

After winning games against both Uruguay and Italy, Costa Rica finished the group stage with a 0-0 draw against England to win their Group D outright.  They will play the second place team from Group C in their round of sixteen matchup.  That could be the Ivory Coast, Columbia, Japan, or Greece.

Costa Rica becomes the second team in this World Cup to qualify for the knockout stages from CONCACAF.  Mexico came in second in Group A just yesterday.  CONCACAF is the confederation of soccer teams representing North and Central America.  Honduras and the United States of America are also representing CONCACAF in this tournament.  While Honduras has already been eliminated in a group that features Ecuador, Switzerland, and France, America could give CONCACAF a third advancing team with a win or a draw against Germany.

While Prosoft Nearshore treasures Costa Rica for their amazing software developers who excel at Java, C++, and ruby on rails, we are also proud of their athletic prowess.  Their continued development as a power in international athletics is a testament to the solid and consistent economic and political state of the nation.

Prosoft Nearshore wishes all of the remaining teams at the 2014 World Cup in Brazil the best of luck, we hold a special place in our heart for all of our corporate partners like Costa Rica and the USA.

Congratulations once again on this notable achievement!