TECH

May 21, 2025

Web Programming Series - MinIO - S3 For Local

Continuing the series on web development, this article shares my experience with MinIO, which allows users to build an S3 Storage locally. This is a case study that I usually encounter in my work. Today, cloud storage is commonly used in many projects, including AWS S3.

View More
TECH

May 21, 2025

Frontend code generation using CursorAI

Nowaday, AI can do many tasks in the development process. It helps us to speed up the many phases, example: Coding, reviewing, testing...
In this post, I will introduce how to use AI to support the coding phase (Frontend)

View More
TECH

May 21, 2025

How to handle difficult situations when interpreting between Japanese clients and Vietnamese developers

Being a comtor is not just about translating—it’s about resolving tricky situations between Japanese clients and Vietnamese developers. Here are some real-life scenarios and smart ways to handle them!

View More
TECH

May 21, 2025

CSS properties that require special attention for cross-device consistency

As mobile devices continue to develop and become the primary means of accessing the internet, ensuring our website maintains consistency across various platforms is a crucial factor in development. However, some CSS properties behave inconsistently across different devices that lead to UI issue. In this article, I will discuss some CSS properties that should be avoided or used with caution, along with safer and more efficient alternatives.

View More
TECH

May 21, 2025

Smtp4dev - the fake SMTP email server for development and testing

Sending email is one of popular features in a business application. Email's content and format have to test carefully before send out to customer. In the past, I often tested sending email by using Gmail's smtp, but this way would require sending some information out. In this guide, we'll explore SMTP4dev, an open-source application that simplifies email testing for developers.

View More
TECH

May 21, 2025

Introduction: Ramda in JavaScript: A Powerful Functional Programming Library

In the JavaScript ecosystem, Ramda is a practical functional library for JavaScript programmers. It is designed to help us write more readable, cleaner, and fewer error codes. If you are looking for a tool that makes working with data more efficient without worrying about state or side effects, Ramda is a great choice.

 

View More
TECH

May 21, 2025

How to Use ChromaDB: A Vector Database for LLM Applications

What is Vector Database?

A vector database is a specialized database system that stores, manages, and indexes high-dimensional vector data, representing data points as vectors, which are numerical representations. This allows for efficient similarity searches and retrieval of similar data points.

 

Key Features and Concepts of Vector Database

Vector Embeddings:

Data points are converted into numerical vectors, capturing their meaning or features.

High-Dimensional Data:

Vector databases are designed to handle data with many dimensions, making them well-suited for unstructured data like text, images, and audio.

Similarity Search:

The primary function is to find data points that are most similar to a given query vector.

Indexing:

Vector databases use advanced indexing techniques to enable fast similarity searches.

Applications:

They are used in various applications, including recommendation systems, semantic search, image and document retrieval, and more.

 

What is Chroma Database

Chroma is an open-source AI application database with built-in features like embedding, vector search, document storage, full-text search, metadata filtering, and multi-modal capabilities, offering comprehensive retrieval in one place.

logo-chromadb

 

Features of Chroma Database

- Simple and powerful: With Chroma, you can seamlessly move from initial notebook experimentation through prototyping and iteration to final production deployment.
Getting started is as easy as pip install...
- Full featured: Chroma offers a full suite of retrieval functionalities: vector search, document storage, metadata filtering, full-text search, and multi-modal retrieval.
- A wide range of programming languages are supported, including JS, Python, Java, PHP, and additional options
- Free and open source: Open source under Apache 2.0
- Integrated: Pre-integrated embedding models from leading platforms such as HuggingFace, OpenAI, and Google are included. It also offers seamless integration with Langchain and LlamaIndex, and the addition of further tool and framework support is planned. You'll find built-in embedding capabilities powered by models from HuggingFace, OpenAI, Google, and more. It's designed to work smoothly with Langchain and LlamaIndex, and we're actively adding support for other tools and frameworks.

 

How to use?

Chroma allows you to install it either locally within a project or globally on your machine.

The article describes a local installation. Install Chroma Database by command line.

install-chroma-db

 

Then run Chroma Database by CLI

chroma run

 

The Chroma database is started at http://localhost:3000. So, we can create a Python file to use the Chroma database like this:

Step 1: Import the ChromaDB Library

The first line of code simply imports the chromadb library so that we can use the functions it provides.

Step 2: Initialize the ChromaDB Client

Here, we create an instance of the Client. In this example, we are using an in-memory client. This means that the data will be stored temporarily in the computer's memory and will be lost when the program ends. This is an ideal choice for quick experiments without needing to set up a complex storage system.

Step 3: Create a Collection

 

Next, we create a collection (similar to a table in a relational database) named code_snippets. This collection will hold the example code snippets that we want to store and query.

Step 4: Add Data to the Collection

codeChromaDB

 

This is the crucial part where we add data to the collection:
documents: A list containing the code snippets (as text strings) that we want to store. In this example, we have a JavaScript function for greeting and a simple Python class with an addition function.
metadatas: A list of dictionaries containing additional information (metadata) about each corresponding document. Here, we store information about the programming language of each code snippet. Metadata is very useful for filtering and categorizing data later.
ids: A list of unique string identifiers for each document. Providing IDs helps us easily manage, update, or delete specific documents in the collection.

Step 5: Perform a Query

With the documents added to ChromaDB in step 4, you can preview them below:

"function greet(name) { return `Hello, ${name}!`; }",  
"class Calculator:\n    def add(self, a, b):\n        return a + b",  
 "class Person(val firstName: String, val lastName: String, var age: Int)",  

In this step, we perform a query to search for code snippets related to function for addition. What's special about ChromaDB is that it doesn't just search based on keywords but also on semantics. It uses embedding models (either built-in or provided by you) to convert text into numerical vectors and then searches for the vectors closest to the vector of the query.
query_texts: A list containing the query strings (in this case, only one).
n_results: The number of desired results to return (here we want the single most relevant result).
where: An optional parameter (commented out in the example) that allows you to filter results based on metadata. If you uncomment this line, it will only return code snippets where the language is python.

Step 6: Print the Results

The complete code is as shown in the image below:

codeFullChromaDB

 

Finally, we print the query results. These results typically include:

  • documents: A list of the documents that best match the query.
  • distances: A list of values representing the similarity (vector distance) between the query and the retrieved documents. A smaller distance indicates a higher similarity.
  • metadatas: The corresponding metadata of the found documents.
  • ids: The IDs of the found documents.

In summary, this result shows that when you queried ChromaDB with the question function for addition, the system identified the Python code defining the Calculator class (with the add method) as the most relevant result based on semantic similarity, and the distance between them is approximately 0.9014. This implies that, according to how ChromaDB embedded and compared the text, this Python code snippet has the closest meaning to the intent of your query.

 

Conclusion

The code snippet above illustrates a basic process for using ChromaDB: initializing the client, creating a collection, adding data (including content, metadata, and IDs), performing semantic queries, and viewing the results.

ChromaDB unlocks many exciting possibilities for applications that need to search and compare information based on meaning, from building intelligent question-answering systems to suggesting related content. This is just a small example, and you can explore many other powerful features of ChromaDB to serve your projects.

 

Reference 

https://dbdb.io/

https://www.trychroma.com/

https://www.freepik.com/free-photo/website-hosting-concept-with-circuits_26412535.htm#fromView=search&page=1&position=0&uuid=0d1ab0c6-b18b-46a7-936f-c37891b433be&query=database (C0ver)

View More
TECH

April 18, 2025

Getting Started with Orthanc: A free and lightweight DICOM tool

When developing applications related to processing DICOM images, we often need some tools to test the application's behavior. Instead of creating a custom test tool from scratch, there are now many free tools available that support most of the basic features for handling DICOM images.

View More
TECH

March 3, 2025

Most popular programming languages in 2025

Generative AI lead a wave of innovation in 2024, and 2025 is already bringing new developments that are reshaping the tech industry. As a result, the popularity of programming languages is shifting rapidly to keep up with these advancement.

In 2024, Python gained tremendous momentum because of it vital role and use in AI, machine learning, and data science. These were the settings for Python to becoming the trendiest programming language of 2024.

Most popular programming languages in 2024

In 2025, changes are already emerging. Keeping track of these trends help developers and companies make informed decisions when starting new projects or updating existing ones.

The TIOBE Index offers fascinating insights into these trends, and so does this article looking at the latest rankings of February 2025 to determine the most popular programming languages illustrating how the popularity of programming languages is evolving.

 

TIOBE Index

The TIOBE Index is a widely recognized barometer of programming language popularity.

Updated monthly by TIOBE Software, this index is based on in-depth search frequency data from platforms as Google, Wikipedia, Bing, Microsoft, SharePoint, eBay, and Amazon.

This programming language ranking reflects how frequently each language is mentioned and discussed. Developers, companies, and learners often use it as a reference when deciding which languages to study or adopt.

Historical data from the TIOBE Index also allows researchers to track shifts in language preferences over time.

Although it provides a useful snapshot of interest and awareness, it’s worth noting that the TIOBE Index does not measure actual usage in production environments or judge technical capabilities. It simply indicates how much attention a language receives on major search platforms.

 

Programming Language Popularity Ranking in February 2025

The latest TIOBE Index for February 2025 sheds light on the top programming languages shaping the landscape.
Below are the top 10 rankings, alongside last year’s positions and percentage changes:

 

Feb 2025 Ranking

Feb 2024 Ranking

Programming Language

Ratings

Ratings Change

1

1

Python

23.88%

+8.72%

2

3

C++

11.37%

+0.84%

3

4

Java

10.66%

+1.79%

4

2

C

9.84%

-1.14%

5

5

C#

4.12%

-3.41%

6

6

JavaScript

3.78%

+0.61%

7

7

SQL

2.87%

+1.04%

8

8

Go

2.26%

+0.53%

9

12

Delphi/Object Pascal

2.18%

+0.78%

10

9

Visual Basic

2.04%

+0.52%

 

2025 Programming Language Popularity Ranking

 

Python Remains Dominant, taking the 1st place

Python continues to hold first place at 23.88%. Its year-over-year increase of 8.72% reflects growing demand across AI, machine learning, data science, and general web development. This momentum suggests ongoing expansion as the language continues to offer relatively easy syntax and a vibrant ecosystem.

 

C++ Surges Ahead of C to take 2nd place

C++ has moved into second at 11.37%, edging out C, which dropped to fourth. Though its gain of 0.84% is moderate, it was enough to shift the rankings. Its use in systems programming, game development, robotics, and performance-critical domains keeps it firmly in the spotlight.

 

Java Gains Momentum and Rises to 3rd place

Java sits in third with 10.66%, an increase of 1.79% from a year earlier. Many enterprise applications, web platforms, and mobile solutions rely on its stability and scalability. This consistent demand explains its place as one of the top programming languages in 2025.

 

C Slips to 4th place

C has fallen to 9.84%, down 1.14% since last year. It remains important in many areas, especially embedded systems, but it faces pressure from newer or more specialized alternatives, along with the surge of Python and C++.

 

Among the other impressive trends, C# maintains its 5th place with 4.12%, although its popularity dipped by an astounding 3.41% from last year.

JavaScript, coming 6th, had a 0.61% increase, maintaining its status as among the most crucial web development languages.

SQL is ranked 7th and continues to be essential for database management, with 1.04% year-over-year growth in popularity.

Go has also continued to advance steadily, proof of its wide application for cloud infrastructures and microservices.
Also, Delphi/Object Pascal rose by 0.78% from its previous rating at 12th to 9th, likely driven by the need to maintain legacy systems and deliver cross-platform solutions.

 

TOP 50 Programming Language Popularity Ranking in February 2025

The table below ranks the top 50 programming languages from the TIOBE Index as of February 2025. It offers a broad snapshot of current popularity and can guide anyone deciding which language to learn or integrate into new projects.

Ranking

Programming Language

Ratings

1

Python

23.88%

2

C++

11.37%

3

Java

10.66%

4

C

9.84%

5

C#

4.12%

6

JavaScript

3.78%

7

SQL

2.87%

8

Go

2.26%

9

Delphi/Object Pascal

2.18%

10

Visual Basic

2.04%

11

Fortran

1.75%

12

Scratch

1.54%

13

Rust

1.47%

14

PHP

1.14%

15

R

1.06%

16

MATLAB

0.98%

17

Assembly language

0.95%

18

COBOL

0.82%

19

Ruby

0.82%

20

Prolog

0.80%

21

Swift

0.77%

22

Classic Visual Basic

0.76%

23

Kotlin

0.76%

24

Ada

0.71%

25

SAS

0.58%

26

Lisp

0.54%

27

Haskell

0.52%

28

Dart

0.52%

29

(Visual) FoxPro

0.52%

30

Perl

0.49%

31

Scala

0.48%

32

Lua

0.42%

33

Objective-C

0.40%

34

Julia

0.37%

35

Transact-SQL

0.37%

36

VBScript

0.37%

37

PL/SQL

0.23%

38

TypeScript

0.21%

39

GAMS

0.21%

40

Solidity

0.19%

41

ABAP

0.19%

42

Logo

0.18%

43

D

0.17%

44

Bash

0.16%

45

PowerShell

0.15%

46

Elixir

0.15%

47

RPG

0.15%

48

ML

0.14%

49

Ladder Logic

0.14%

50

Awk

0.14%

 

Fortran at 11th and COBOL at 18th stand out among legacy languages. Both were introduced in the 1950s and 1960s and maintain steady demand as industries with large, older systems face challenges with maintaining and refactoring established codebases. A shortage of engineers who specialize in these technologies further elevates their rankings.

PHP and Ruby, once popular for web and application development, appear to be losing ground. PHP ranks 14th with 1.14%, and Ruby follows at 19th with 0.82%, even behind COBOL. This shift may reflect the rise of frameworks and tools built on JavaScript (React, Vue.js, Node.js, Next.js) or Python (Django, Flask), which many organizations favor for modern web projects.

 

Conclusion

In the 2025 rankings of programming languages popularity, Python continues to overshadow many other languages, while C++ and Java sustain solid momentum. On the other hand, C has lost some of its edge, and previously dominant choices like PHP and Ruby struggle to keep pace. This shifting balance reflects how emerging technologies are redefining which languages thrive.

Fortran and COBOL illustrate how certain older languages retain importance when entire industries depend on stable codebases. Their presence in fields like finance and government ensures they remain part of the overall program language ranking despite their age. New breakthroughs in AI, cloud-native development, and data science also guide which tools rise to the top.

Looking ahead, further changes in programming language popularity are likely as businesses adapt to fresh challenges and opportunities. Both organizations and developers stand to benefit from staying informed and aligning skill sets with the evolving demands of modern software projects. A willingness to learn and adjust keeps everyone prepared for the next wave of innovation.

 

About ISB Vietnam

At ISB Vietnam, we specialize in a wide range of technologies, bridging the gap between cutting-edge innovation and proven legacy systems to deliver seamless software development worldwide.

With over 20 years of experience, our expert engineers provide high-quality IT outsourcing and offshore development solutions tailored to your specific needs. We don’t just develop software—we drive business growth through top-class technical expertise and a client-first approach.

 

What Sets Us Apart?

  • Deep Technical Expertise – Mastery of both modern and legacy technologies ensures long-term software sustainability.
  • Proven Track Record – Two decades of success helping global companies scale efficiently.
  • Client-Centric Approach – We align every solution with your business goals for measurable impact.

Whether you need scalable software solutions, expert IT outsourcing, or a long-term development partner, ISB Vietnam is here to deliver. Let’s build something great together—reach out to us today!

View More
TECH

February 28, 2025

What Is a Dedicated Development Team? A Comprehensive Guide to Its Benefits, Challenges, and Implementation Best Practices

The digital world is evolving faster than ever at lightning speed, with generative AI and new technologies reshaping our daily life. As businesses race to innovate, user expectations are also higher than ever, pushing software quality standards to new heights. In a time of rapid change, staying ahead means adapting faster than ever before.

Choosing the right development model is more crucial than ever for success in software development. Using solely internal staff to create a development team can be challenging due to various limitations, such as hiring time, training cost, and operational overhead.

As a result, the majority of companies are moving towards a more efficient and flexible approach—Dedicated Team Model, through which they can form a Dedicated Development Team outside of the company. The model provides companies with a team of developers dedicated to a specific project with deep integration with the in-house team, as opposed to outsourcing.

In this article, we leverage ISB Vietnam's expertise as a trusted global partner in software development to explore the Dedicated Team Model in depth. As a company specializing in providing high-quality Dedicated Development Teams, ISB Vietnam has helped businesses worldwide scale their development capabilities efficiently. We will examine why companies choose this model, its key benefits and challenges, how to implement it successfully, and the factors that drive its success.

 

What Is the Dedicated Team Model?

The Dedicated Team Model is a software development model whereby a company contracts an outside development team for its own project on an exclusive basis. It differs from traditional outsourcing since it builds a close, long-term collaborative relationship between the client and the external team of developers.

With the Dedicated Team Model, companies have the ability to establish a team of specialists with required skills instantaneously. Since the entire team is dedicated solely to the client, it works just like an in-house team.

The overall benefit of this model is that they release the client from dealing with all administrative and HR work because that is managed by the service provider. The client therefore is free from the some tasks of recruitment, payroll processing, and management. Companies enable themselves to hire a large force in no time, and scale without added operational burden.

 

What Is a Dedicated Development Team?

A Dedicated Development Team is a group of experts formed under the Dedicated Team Model. It is made up primarily of specialized software developers that operate exclusively on a project of the client company.

"Dedicated" means the team only works for that client project and does not have any other external projects to handle, assuring the team's full commitment to and alignment with the client's objectives.

A dedicated development team normally works from the service provider office while doing remote collaborations with the client. Hence, any communication or coordination that is to be carried out in the project can be done remotely.

 

Why Companies Choose a Dedicated Development Team

 

The IT Talent Shortage

With digital transformation (DX) expanding to industries, IT has become the part of almost every business. Also digital services from cloud computing to mobile apps have become an integral part of daily life. Along with this, the need for skilled software developers worldwide has been growing continuously, making it difficult for organizations to acquire the best experts. As such, many companies are choosing external Dedicated Development Teams to overcome the talent deficit.

 

Rising IT Labor Costs

The shortage of IT talent has driven salaries for software developers higher, particularly in developed countries. In order to maintain costs within bounds, most companies are setting up Dedicated Development Teams in offshore areas such as Southeast Asia and Eastern Europe, where IT talent is abundant and labor costs are relatively low.
Offshore development is explained in detail in the following articles, so please take a look at these article as well.

Onshore vs. Offshore: Definition, Differences, and Key Considerations

Pros and Cons of Onshore and Offshore Development: Choosing the Right Model for Your Business Growth

 

The Growing Importance of Scalability

Since technology and demands from the marketplace change rapidly, companies must scale their development abilities at a fast rate. Using a Dedicated Development Team, companies can rapidly expand team size as per project demands, leading to accelerated development time cycles and business agility.

 

Access to High-Level Technical Expertise

The evolution of IT technologies has accelerated, making it more difficult to hire IT experts. A Dedicated Development Team allows companies to access to global talent pool and secure professionals with specialized technical skills tailored to their needs.

 

The Rise of Remote Work

The spread of remote work removed geographical limitations and became more comfortable to work with seasoned software developers worldwide. Remote work is now a standard for software development, and contemporary communication means greatly reduced the challenges of remote cooperation. As a result, more companies are leveraging Dedicated Development Teams as a practical and effective solution for software development.

 

Benefits of a Dedicated Development Team

 

Benefits of a Dedicated Development Team

 

Cost Optimization

Compared to full-time hiring, a Dedicated Development Team diminishes salary expenses, management cost, and training cost but nevertheless hires top talent software developers. It also allows companies to adjust the team as needed to meet project needs, eliminating unnecessary costs.

 

Flexible Scalability

The Dedicated Development Team's size and skill set can be modified during the course of the project. Companies can increase their developer team when additional resources are needed and decrease it when moving to the maintenance phase, allowing for effective resource utilization.

 

Easier Access to High-Level IT Specialists

Different Dedicated Development Team providers have expertise in various fields. By selecting a provider that specializes in a particular technology, companies can secure highly skilled software developers who are difficult to hire locally.

 

Faster Time to Market

By rapidly setting up a Dedicated Development Team, companies can significantly reduce the time required to start and operate projects. Faster development cycles improve competitiveness and enable quicker response to market demands.

 

Flexibility to Changing Requirements

Dedicated Development Teams are appropriate for projects that have unclear or fluctuating requirements because the development can proceed while changing requirements in parallel. This kind of flexibility allows companies to launch projects without finalizing all the specifications, and agile development and iterative updates become more effective.

 

Challenges and Limitations of a Dedicated Development Team

 

Limited Benefits for Short-Term Projects

Since a Dedicated Development Team operates as an external team, it takes time to familiarize itself with the client’s workflows, processes, and company culture etc. As a result, productivity and quality improve over time, making this model more beneficial for long-term projects.

 

Communication Challenges

Many companies build Dedicated Development Teams in offshore locations due to cost-efficiency and abundant IT talent. However, geographical distances, time zone differences, and cultural and language barriers can pose communication challenges.

To mitigate these issues, companies should increase the frequency of meeting, establish structured communication workflows, and use modern collaboration tools to ensure seamless interaction between the client and the development team.

 

Implementation Process and Best Practices for a Successful Dedicated Development Team

 

Process for a Successful Dedicated Development Team

 

 

1. Defining Business Goals and Requirements

Companies need to determine clearly the purpose of the business, technologies needed, project extent, and timeline for development before implementing a Dedicated Development Team. With a proper plan, choosing the right partner company and the right members for the team will be easy.

 

2. Selecting the Right Development Partner

When choosing a Dedicated Development Team provider, companies have to pay attention to team size, specialization, past experience, and security procedures. Having the opportunity to interview important staff members, such as project managers and lead engineers, is also advisable to learn if they have the required skills and experience and are a good cultural fit. Since this is a long-term cooperation, the main thing is selecting a quality and trustworthy partner.

 

3. Team Building and Onboarding

Once the right partner company has been selected, the team should be formed based on project requirements and company culture. To be able to leverage the team's efficacy, organizations should offer clearly defined development workflows, documentation protocols, meeting styles, and communication tools.

During the initial phase, improving the quality and quantity of communication between the client and the team can allow a smooth collaboration. Additionally, exchanging knowledge regarding the business goals, user demands, and market targets will allow the team to come up with solutions based on company needs.

For Dedicated Development Teams that are offshore, visiting the provider's site when setting up the team and communicating directly with team members can greatly enhance communication and collaboration.

 

4. Development Kickoff and Continuous Improvement

After the team has been formed, continuous improvement in development and communication needs to be prioritized in order to realize maximum long-term benefits. Agile and Scrum methodologies are usually utilized in Dedicated Development Teams to facilitate iterative improvement and more effective team relationships.

Although the team operates in a different location than companies, treating them as an integral part of the internal team promotes trust and has a positive impact on the project. Regular onsite visits and open communication with the team can be wonders in offshore teams as well and enhance collaboration.

 

Conclusion

The Dedicated Development Team Model has emerged as a highly effective approach for companies seeking scalability, cost optimization, and access to top-tier software engineering talent. By leveraging this model, companies can enhance development efficiency, accelerate project timelines, and maintain a flexible approach to evolving business needs.

For more than 20 years, ISB Vietnam has been a pioneer in providing Dedicated Development Teams to companies around the world. Backed by an exceptional team of experienced IT specialists, we hold diverse sets of technologies and sectors, ensuring our customers the professionalism they require for their particular project.

We take pride in delivering solutions that ensure the highest quality and security levels, enabling companies to achieve their business and development goals with confidence. We have the right talent required to build your ideal Dedicated Development Team.

If you are considering implementing a Dedicated Development Team, we encourage you to contact us. Our experienced consultants are ready to help you create a tailored solution that meets your business objectives.

View More
1 2 3 15