Author: Abhishek Nag

  • Selecting An Offshore Tech Development Partner – Six Steps to consider

    Having the right offshore software product development partner is very crucial for a business. Many organizations have started outsourcing software product development services looking at the various advantages it has to offer. Cost-saving was an important reason until 2009. Since 2010 the core purpose of offshoring is more from the logic of distributed teams, ensuring on-time deliverables, with exposure to the latest talent and quick scalability. Selecting a tech partner based on cost factors either resulted in a negative or not-so-positive experience. Undoubtedly, the offshore partner will help in reducing the in-house cost, but be sure that you don’t jeopardize your tech product’s quality over cost.

    Always look for an offshore tech partner who understands your product properly, adds value, works as an extended team located in different locations, and is genuine. Outsourcing helps the business to access the top industry talent based on their requirements, access to new technologies and tools, and professional problem solvers. Well, managing a long-distance relationship with your tech partner is not at all difficult. All you have to do is to onboard the right tech partner. Now, the question arises how to find the one who aligns with your product’s vision? To find the right match, we have curated a list of key points that an organization can check out before choosing a software development partner for their product.

    Six Steps help you choose the right tech partner:

    1. Do a background check of your potential partner: With the various option available for an offshore development tech partner, choosing the right partner can turn to challenge at times. Every outsourcing company portrays itself as having the ability to deliver successful results and matching up with the expectations of the client. Thus, it is advisable to narrow down and identify the potential partners based on your requirements. Carry out an extensive background check to know their competencies. Things that you should observe include company portfolio, reviews, as well as testimonials from their previous client. With all these data you can measure the offshore tech partner’s competencies, professionalism, and work quality.

    2. Set up your goals: Just sit with your team and draft a coherent and detailed account of your business goals. You should be thoroughly aware of the things that you expect or want out of your business or your software product. Most of the time, the offshore development partner has to go through the burden of explaining their offerings, the working method, and what makes them an ideal partner. However, if we look at the real scenario, the organization onboarding a tech partner should equally be responsible for explaining their requirements and expectations thoroughly. If you wish to achieve successful results, then make sure that you are examining the requirements properly to send out a clear message to the outsource tech team.

    3. Inspect the tools used for source control and track bugs: You should examine the tools that your offshore partner uses to control and check the source and bugs. Get in a detailed discussion with your partner to understand the exact functioning of the tools that are used by them. If for example, you are collaborating with an offshore web development tech partner, then inquire about the tool used to control the source and bugs. Tracking the changes made in the source code is usually of great help at the time of project maintenance. With the help of a bug tracker tool, your offshore partner will be easily able to track, discover, log, and fix the bugs found during a web development process. Thus, a source code tool and bug tracking tool are highly critical for a development project.

    4. Communication is the key: Try to communicate with your offshore partner effectively and often to stay in the loop. Especially during critical projects when communication plays an important role, as it requires a lot of back and forth engagement of both parties. And, this is only possible by communicating in the right way. Conduct daily meetings and ask for weekly status reports to stay updated on the status of the project. This helps in keeping across the points easily when you communicate on a daily basis, this will ensure that you all are on the same page.

    5. Flexibility: There might be times when your project will get complicated, in such situations the approach of your offshore development partner should be flexible. The partner should be flexible enough to adjust effectively on the basis of the project’s requirements. Any long-term partnership will have a scaling process, thus, the ability to scale up when required and being able to deliver the quality within time is very important. Even the development methodology used by the offshore partner is crucial. The agile development approach surely creates more room for flexibility via the development.

    6. Check the pricing model: The main reason to opt for an offshore software development tech partner is cost. Many organizations look for partners who are capable of providing them the required software services at an affordable price. So, before you select your offshore partner, check out the pricing models for as many partners as possible. Look for a partner who is able to provide a team of experienced and dedicated engineers within your budget. Check for the tech partners who match the requirements of your financial expectations.

    Therefore, before you choose an offshore tech partner, keep the points mentioned above handy to achieve better results. We, at EmbarkingOnVoyage, work as an offshore technology partner and have enabled a good amount of organizations with successful software product development. Highly skilled engineers who hold nearly two decades of development and delivery experience in various domains.

    As an offshore software product development partner, we first understand our client’s challenges and give our best to address their challenges. Help clients staying focused on their core business. Thus, we always make a point as a team that our client considers us like their extended team at a different location. And, we highly believe in aligning ourselves with our client’s ideas and vision.

  • How To Migrate Application From .Net Framework To .Net Core ? 11 Step by Step Guide

    How To Migrate Application From .Net Framework To .Net Core ? 11 Step by Step Guide

    .Net Core is a free and open-source development platform maintained by Microsoft. It is a well-known and developed framework considered as a new version of the .NET Framework that contains various major updates. Thus, making it stable and technologically advanced.

    .Net Core runs on Windows, macOS, and Linux operating systems which makes it a cross-platform framework. You can leverage .Net Core to build various applications for mobile, desktop, Cloud, IoT, Machine learning, web, microservices, etc. It consists of certain core features that assist in running a basic .Net Core app successfully. Let’s check out some of the features of Net Core as mentioned below:

    • It can implement modern development paradigms like asynchronous programming.
    • Performs highly with tiered compilations and intrinsics.
    • It is highly consistent across every supported platform.
    • Command-line tools can be included.
    • Can be easily integrated in your app.

    Now, let’s move to the most exciting part, where we will take you through the procedure of migrating .Net Framework to .Net Core.

    How to Migrate?

    Once you’ve decided to migrate to .Net Core, here’s a quick guide to carry out the procedure without much difficulty:

    1. Use portability analyzer tool once the .Net solution is ready for migration. It will give you an idea regarding the labor-intensive porting from one platform to another.
    2. If your existing solution has used NuGet packages, just be sure regarding its compatibility with .Net Core. Use the NuGetPackageExplorer tool to check for compatibility.
    3. Changes of .csproj file format simplification into ASP.NET Core includes: Inclusion of files explicitly isn’t necessary for the project; it reduces the risk of XML merging conflicts when you work on large teams. File readability is improved due to the absence of GUID-based references. You can edit the file without uploading it in the visual studio.
    4. Update the namespace by deleting all the uses of the System.Web and then replace it with Microsoft.AspNetCore.
    5. Now, instead of using the global.asax, configure your Startup.cs file. ASP.NET Core will load the app. As the app’s entry point is Startup, so there isn’t any dependency on Global.asax file. Middlewares will get registered in the app by startup and then the startup should incorporate the configure method. Add the required middleware to the pipeline in configure.
    6. You might come across some issues in Startip.cs that I feel you should pay heed to before executing the next step. Please go through the issues as given below:
    • Issues while configuring the middleware for your MVC and WebAPI requests
    • You will come across multiple collisions during the porting procedure, so set up the exception handling in your development environment. With UseDeveloperExceptionPage, just add the middleware to catch exceptions.
    • In the MVC routing, the registration for new routes has been amended. So, instead of your RouteCollection the IRouteBuilder is used to register restrictions in IActionConstraint.
    • Update the filters MVC/WebAPI following the ASP.NET Coe’s new implementation.
    • Formatters of MVC/WebAPI and binding models.
    • Don’t forget to include Area in an ASP.NET Core app. Then add a regular route to your Startup.cs file.

    7. Now, migrate the HTTP handlers along with your HTTpModules to Middleware using the built-in DI. Next, you should use       the WebAPI project Compatability shells.

    8. You will see a porting application configuration, just port the static content to wwwroot and EntityFramework to EF Core.

    9. Now you should remove all the HttpContext references. Just replace the obsolete classes and change the namespace too.

    10. You will see an authentication and authorization update. The JS/CSS will be updated.

    11. Finally, you will see the porting being carried out. And, with this, the migration of .Net framework to .Net Core is carried out   successfully.

    With this, the process of migrating the .Net framework to .Net Core is carried out successfully. As you are already aware of the fact that .Net Core is here to stay and is a future for multi-platform applications. It also offers new native features that are usually not supported by the traditional framework. So, as a final word, you should constantly review your app’s functionality and then choose the migration approach. Choose the platform that would suit the context appropriately for your existing applications.

  • CI/CD : Few things to remember

    Today, CI/CD pipeline is hailed as one of the most important and beneficial practices for DevOps teams when it comes to delivering the code changes in a more reliable and quicker manner. Continuous Integration (CI) and Continuous Delivery (CD) refer to a set of operational principles, or basically a culture of following certain practices that enables development teams to deliver changes in the code more frequently and in a more reliable fashion.

    CI/CD is an irreplaceable part of any development approach, irrelevant of what framework you are using, the tech stack or what your development practices are. The value addition of CI/CD is faster delivery, less deployment overhead to your development team. It enables you to deliver value in a quick, safe, and repeatable manner.

    Purpose of CI/CD

    Continuous Integration is a coding philosophy and group of practices. Their purpose is to enable the development teams to make small changes to the code and serves as a mechanism to integrate and validate those changes.

    The purpose of CI is to automate your build pipeline. It is dependent on the tech stack that you are using. However, it enables your development teams to integrate your features, development changes in an automated way. It helps them to increase code quality, reduce errors and potential conflicts & deliver more value in less time.

    Continuous Delivery comes into play where continuous integration exits the scene. It automates the process of application delivery to infrastructure environments. Basically, CD enables your operation team to integrate the end result over multiple environments. This way you can test your changes in multiple phases and make sure that we are getting value out of it. CD enables us to operationalize log aggregation, monitoring and other components. This is required for making sure smooth working of our end result.

    CI Approach:

    1. Improve the code quality: We can run the test cases and make sure that our code coverage is up to the par. We also can use static code analysis tools like sonarQube and codecy. This will be helpful to make sure that coding standards are maintained throughout the development process
    2. Avoiding the code maintenance issues: One of the efficient ways to do this is to merge your code in the main/master branch frequently. This way, we can avoid last minute maintenance issues in code
    3. Make sure that we enable automated testing and build deployment processes in the initial environments. This makes sure that we catch the issues early and improve the quality of code at faster pace.

    CD Approach:

    1. It’s best to follow a  fail fast strategy in lower environments. This enables us to catch issues early on which increase stability in higher environments
    2. Set up release & rollback strategy for each environment build. Things go wrong and we need to make sure that we have a plan in handy. In most of the cases, solution is move back to previous build artefacts .

    CI/CD: Conclusion

    So, we can see that CI/CD and its implementation requires the operations teams and the development teams to properly collaborate. This means they have to come together on technologies, priorities and practices. The different teams will have to build a consensus on which approach and technology they want to choose for their business. This is essential in order to make sure there is uniformity in following practices once CI/CD is in place.

    If you would like to know more about CI/CD at EmbarkingonVoyage, please get in touch with us at info@embarkingonvoyage.com. We will be happy to help!

  • Transitioning from DevOps to NoOps

    DevOps is the now widely used practice of having Developers and Ops work closely to enable faster, shorter releases to production. Instead of waiting longer times and preparing elaborate, risky releases, DevOps shortens the release process while still upholding quality and system integrity.

    Then what is wrong with DevOps? Why would we need something like NoOps?

    There is actually nothing wrong with DevOps, save a couple of operational challenges. NoOps is not built to tackle any limit but rather forge the path to higher organisational and operational maturity. Hence, it would make sense to think that unless you have a solid DevOps practice, there should be no strategising towards NoOps.

    NoOps, exactly as the name says is very much the removal of Ops from the process. There are a few rationale behind wanting this.

    1) Developers who monitor production environments are likely to catch issues much quicker than Ops who would rely on the customer to report.

    2) It enables even faster releases and puts the onus of quality and environment protection on the developers and the tools in place for NoOps.

    3) NoOps frees up the developers in DevOps to work on features or do something else.

    4) Ops is difficult to scale. When you deal with more complex features and products, getting Ops to scale is a difficult process which needs a lot of adapting to the DevOps mindset.

    How does one transition from DevOps to NoOps?

    1) Mirroring

    This would seem quite obvious, but this is very crucial to start moving to NoOps. There must be a non-production environment (like a sandbox) which completely mirrors the production environment. No exceptions. This would ensure that the final regression and functional quality checks are going to hold good in production as well. Without this, no amount of automated testing or tooling will ensure that you won’t need ops to keep looking over their shoulders after every release.

    2) Cultural shift

    Getting to NoOps is no mean feat, and hence a lot of friction needs to be absorbed. There may be reports of “but this is not working”. For any such instance, diagnose – > revamp -> redeploy. The core issue (say a missed bug in production) can be caught the next time by improving the process or strengthening the net to “catch” better. Of course, a great vendor is imperative to help craft and re-craft these improvements. But the key thing is to keep plowing on. Remember, NoOps is 0 ops, not sometimes 1 or 2 ops.

    3) Empower the developers

    The developers will own the production environments’ issues in NoOps. It is important to keep their hassles to a minimum. This can be done using tools to analyse and report production problems. With the right tooling, the majority of issues can be preemptively reported. It does not stop there. Tools can also help take minimise impact by running some pre-configured scripts upon report of specific issues. With the right tooling and strategy, you will see a matrix of different problem scenarios and the processes and the tools that kick in for each of them.

    4) Get everyone on the same page

    Developers, testers, product owners, senior management- must understand and accept the NoOps implications. There will be a phase of “pain” when the NoOps practice kicks in, not to forget the apprehension. Hence, it is important to cover all concerns in separate workshops with the stakeholders. “But what about that weekly report that the Ops used to send?” “What will happen to customer requests and not bugs?” “What will happen if no developer is available?” Get all those pesky questions out (make sure your IT partner tags along for these discussions). Each questions’s answer (if needed- because we will also prioritise the concerns based on cost, impact, frequency) will help the process to become sharper for your business context.

    All this sounds like a lot of work? Well it is! But the good news is that, NoOps practices are slowly taking shape in the industry. So, chances are that you would move very smoothly and none of the things that worry you would actually come true. If you don’t believe us, then why don’t you drop an email to info@embarkingonvoyage.com and we can discuss what your thoughts are and find the best NoOps strategy for you.

  • Artificial intelligence and the e-Commerce market

    Today, with the advent of more and more technological advancement, almost all the e-Commerce players are leveraging the power of Artificial Intelligence (AI). This is mainly to enhance their customer experience and revolutionise the way common operations are carried out.

    In this blog, we will look at some of the ways in which AI is changing the e-commerce marketplace scenario and helping such firms in their growth and scalability.

    Optimization of warehouse operations

    Bigger e-commerce players such as Amazon have huge fulfilment centres, spread globally. These firms are looking into millions of orders on a daily basis. Can you imagine the complexity of this process? How does one find where a particular product is? How to fulfil the order in the stipulated time? For this purpose, Amazon uses AI-powered robots that help in grouping, placing and arranging the packages to reduce the time taken to find and pack them. Well, this is just one example from the lot!

    Chatbots

    More and more businesses are adopting chatbots for their e-commerce stores. They are growing increasingly popular and all customers are falling in love with them! With fully-functional chatbots in place, customers can automatically find answers to their queries through text chats. In all of this,  you won’t have to worry a bit! Chatbots are a wonderful product of artificial intelligence which facilitate businesses to offer round-the-clock customer support to their target audience. Another important factor is that they help to collect important data. Through chatbots, you can also track consumer behaviour and fuel your conversion rates.

    Image recognition to find products

    It is a quite common occurrence for all of us to like something and wanting to purchase it. however, we are not sure what it is called or where exactly to search for it. This is another way AI has been revolutionising the online marketplaces. So, the next time you want a particular item that you have fallen in love with, what to do? Take a picture and upload it and the apps powered for the same, will show you all related products. Having this feature integrated to your e-commerce site will give you the leverage of tapping a wide range of customers.

    Customer Relationship Management

    The whole world hails artificial intelligence for its predictive nature. Traditional CRM has been completely transformed by artificial intelligence. Gone are the days when one had to collect huge amounts of data and go through them individually to make conclusions and predictions. Today, we have AI and its power, to consume all the data that is coming over to you. And, process them, without any human intervention. AI processes the data and gives out important information to you. this includes who is more likely to purchase from you, what is their area of interest. It also tells you what is it that they will likely purchase and how you can engage with them to encourage conversions. WOW!

    Quality advertising

    Earlier, there used to be a lot of aggressive marketing and re-marketing along with increase ad exposure. With the advent of AI, the new marketing world has been focussing more on quality. As a result, it stresses on the importance of pushing more relevant ads to the right visitors at the correct time. This will help to connect better with your audience, give them what they want and encourage them to buy more from you.

    Smart Technology

    We have all heard of IoT or Internet of Things. Earlier internet meant only a group of computers and laptops connected together. Today, more and more devices and gadgets are coming to be connected to the internet. We have smart cars, smart watches, smart refrigerators and so on! So, if you are also looking to tap the advantage of AI to your e-commerce setup, you should really not delay it further.

    Conclusion

    From this above discussion, we can see that artificial intelligence is constantly helping e-commerce platforms to enhance the experience for the customers. With better recommendations, advertisements, smart technology and chatbots etc, AI has been changing the game with e-commerce platforms.

    If you are also interested in using AI for your benefit, you are at the right place. At EOV, we have a team of experts who will help you in incorporating AI to your e-commerce platform. This will in turn help you give out better services to your customers. You can reach out to us at info@embarkingonvoyage.com to know how we can help you.

  • Data Extraction using Python Libraries

    Introduction

    Today, we are surrounded by data everywhere. Data has become easily accessible. So, the challenge that arises out of it is how to make the most of the available data! The first step towards using such vast amounts of data is finding the right data integration tool that could help you to study, analyse and manage dynamically different data from numerous sources. However, the bigger challenge before using the data is data extraction.

    Therefore, now we are going to see in details what exactly this extraction of data is, what tools are available for the same and what role it plays in integrating data.

    What is data extraction?

    In simple words, it is the collection of different types of data from multiple sources, most of which are unorganised or purely unstructured.

    Data extraction is mainly about consolidating, processing and refining the unstructured data and storing it on a centralised location for further transformation. You may store it on-site, or on cloud based platforms or a hybrid of both.

    Data Extraction and ETL: How does the process work?

    Let us have a brief look at the ETL process for a better understanding. With the help of ETL, the companies can collect data from different sources and store them on a centralised location and assimilate various and differing data into a common and understandable format. Basically, the ETL process involves:

    1. Extraction: This process mainly deals with getting the data from various different sources. The extraction finds and locates relevant data and makes it suitable for further processing.
    2. Transformation: After extraction is complete, it is now time for refining the data. During this process, the data is organised and cleansed. The main elements in this process include erasing the duplicate entries, removing the missing values etc. At the end of the transformation phase, what we are left with is reliable, and usable data.
    3. Loading: Once the transformation of data is complete, the processed and high-quality data is loaded onto a centralised storage location for further use and analysis.

    Many companies use data extraction for a number of reasons. It could be to streamline processes or support compliant efforts or so on.

    Because now we are clear about what the process of data extraction is, let us have a look at what are the tools or methodologies available to extract the data.

    Types of Data Extraction Tools

    When it comes to extracting data, the two key decisions that data engineers have to take while designing the process are

    What method to choose for extraction?

    When it comes to selecting the extraction method, there are two options with the data engineers. They can go for either logical or physical modes of extraction. Under the logical extraction, there are further two ways – full extraction and incremental extraction.

    Now, let us look at these extraction methods in brief.

    Physical extraction

    Sometimes, there could be certain limitation with the source systems. Say for example, if you are trying to extract data from an outdated data storage unit, you will not be able to do it using logical extraction and you are left with only the physical way to do it. There are two types of physical extraction

    Online extraction – where data is directly transferred from the source to the data warehouse by directly connecting the extraction tools to the source system or the transitional system.

    Offline extraction – where there is no direct extraction and the process has to be carried out outside the source unit. In this process, the data in question is already organised.

    Logical Extraction

    There are two kinds of logical extraction:

    Full extraction: Under this process, all the data is extracted from the source system at one go directly. Any need for extra information, be it logical or technological, does not arise. For example, if you are trying to export a file on price change, the system will extract the entire financial records of the organisation.

    Incremental extraction: This process deals with the incremental or delta changes in the data. The extraction tool recognises new or altered information based on date and time. If you are using this method, you need to add complex extraction logic to the source systems first.

    What are the two libraries you would need to scrape website data on Python?

    To extract data from web pages, some of the Popular Python Libraries to Perform Web Scraping include

    lxml Library

    It is another versatile Python library that deals with HTML and XML files. It is relatively fast and easy to use.

    How to install it?

    We can use the pip command to install lxml.

    (base) D:\ProgramData>pip install lxml
    Collecting lxml
       Downloading
    https://files.pythonhosted.org/packages/b9/55/bcc78c70e8ba30f51b5495eb0e
    3e949aa06e4a2de55b3de53dc9fa9653fa/lxml-4.2.5-cp36-cp36m-win_amd64.whl
    (3.
    6MB)
       100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 3.6MB 64kB/s
    Installing collected packages: lxml
    Successfully installed lxml-4.2.5

    Beautiful Soup Library for Web Scraping

    Let’s consider the case where you are looking to collect al the hyperlinks from any web page. In such cases, we can use Beautiful Soup Python library. It is mainly used to pull data out of HTML and XML files. You can use it with requests because it can’t fetch a web page on its own and needs an input to process.

    How to install it?

    We use the pip command to install beautiulsoup.

    (base) D:\ProgramData>pip install bs4
    Collecting bs4
       Downloading
    https://files.pythonhosted.org/packages/10/ed/7e8b97591f6f456174139ec089c769f89
    a94a1a4025fe967691de971f314/bs4-0.0.1.tar.gz
    Requirement already satisfied: beautifulsoup4 in d:\programdata\lib\sitepackages
    (from bs4) (4.6.0)
    Building wheels for collected packages: bs4
       Running setup.py bdist_wheel for bs4 ... done
       Stored in directory:
    C:\Users\gaurav\AppData\Local\pip\Cache\wheels\a0\b0\b2\4f80b9456b87abedbc0bf2d
    52235414c3467d8889be38dd472
    Successfully built bs4
    Installing collected packages: bs4
    Successfully installed bs4-0.0.1
    

    Extracting Data with EOV

    EmbarkingOnVoyage has been a successfully leading the data extraction field, with an adept knowledge in multilingual text analytics. So, if you would like to know how we can help you in extraction of required data, please feel free to get in touch with us at info@embarkingonvoyage.com today!