Do you want to know more about the cutting-edge technology behind eCabs’ innovative solutions? Follow our Tech blog, where our expert team dives deep into the fascinating world of technology and mobility.

Behind the code innovative minds, seamless rides

Behind the code: innovative minds, seamless rides

Explore the story, challenges, and solutions ‘behind the code’ with eCabs Technologies’ Backend Team Lead.

What are the main responsibilities of a backend developer in your team?

Working in backend development at eCabs, I focus on designing, developing, and maintaining our server-side logic and databases. I write clean, efficient, and reusable code to ensure seamless platform operation.

My day-to-day involves collaboration, code reviews, mentoring, and optimising for performance, scalability, and security. I also troubleshoot and stay updated with industry trends to implement cutting-edge solutions.

How does your team’s work contribute to fulfilling eCabs’ mission and improving transportation services?

My team’s work is pivotal in fulfilling eCabs’ mission. We focus on backend infrastructure, ensuring it’s robust and aligned with company goals.

By delivering high-quality, scalable solutions, we provide a seamless user experience, revolutionising transportation services. Our emphasis on code quality and performance optimisation positions us for long-term success and growth.

Can you share a specific project that you are proud of, and what challenges you faced during its implementation?

One project that I’m particularly proud of is our multi-tenancy transition. Initially, our operations were exclusive to Malta, but this project marked a significant leap in our expansion strategy.

It allowed us to extend our technology into both Greece and Romania, opening up numerous exciting possibilities for the future.

However, this transition came with its fair share of challenges. Adapting our platform for multi-tenancy required a meticulous approach.

We needed to ensure that each tenant could seamlessly and securely access their data and services while maintaining optimal performance and reliability across all regions.

What strategies and actions did you take to tackle these challenges?

To tackle these challenges, we conducted a comprehensive analysis of our existing infrastructure.

This informed our strategy for implementing multi-tenancy, which involved an almost complete redesign of our backend architecture, optimisation of database schemas, and the establishment of robust access control mechanisms.

Additionally, we put in place rigorous testing protocols to validate the scalability and security of the system.

The successful execution of this transition not only expanded our operational reach but also positioned us for further growth and expansion into new markets.

It stands as a testament to the dedication and expertise of our team in overcoming complex challenges and achieving strategic objectives.

Can you describe the technologies and tools you use in your tech stack for backend development?

As a backend developer, the arsenal of technologies at my disposal is diverse and tailored to meet the specific needs of our platform. Our tech stack is finely tuned to ensure the efficiency, scalability, and robustness of our services.

For legacy services, Java 8 remains an essential component of our toolset, allowing us to maintain stability and support for existing systems. For newer services, we adopted Java 17, leveraging its cutting-edge features to build innovative solutions that align with industry best practices.

How do you ensure scalability in your tech mobility platform, and what role do cloud-native architecture and microservices play in this?

Frameworks play a pivotal role in our development process. Spring Boot is a cornerstone, enabling rapid application development and seamless integration with various components.

Additionally, we’ve embraced Quarkus, harnessing its lightweight and reactive architecture to further enhance the performance of our applications.

In terms of databases, we rely on Postgres for its reliability and robust feature set. For more specialised data requirements, we have integrated MongoDB, offering flexibility and scalability for specific use cases.

As for message queuing and communication, we utilise RabbitMQ to facilitate asynchronous communication between different parts of our system. We also leverage pubsub mechanisms to ensure real-time updates and notifications.

Containerisation and orchestration are fundamental to our deployment strategy. Kubernetes forms the backbone of our container orchestration, providing a scalable and resilient environment for our services.

This, in conjunction with our cloud infrastructure, is hosted on Google Cloud Platform (GCP), ensuring a secure and performant environment for our applications.

In essence, our tech stack is a carefully curated blend of proven technologies and innovative solutions. It allows us to deliver a high-performance platform while maintaining the flexibility to adapt to evolving industry standards and user demands.

How do cloud-native architecture and microservices contribute to this scalability?

Scalability is central to our tech mobility platform. We adopt cloud-native architecture and microservices, allowing us to independently scale components based on demand.

Auto-scaling and horizontal scaling ensure seamless handling of increased user activity. Rigorous testing and load balancing fine-tune performance. Our team continuously explores emerging tech to enhance scalability.

Our development process thrives on effective collaboration. Working closely with product managers, designers, frontend developers and mobile developers, I ensure a clear understanding of project goals. Continuous communication, including stand-up meetings and design reviews, keeps us aligned.

With frontend and mobile developers, we establish seamless integration and troubleshoot together. Knowledge-sharing and cross-training further enhance our collective expertise, leading to high-quality solutions.

Continuous learning is fundamental in software development. Staying updated with emerging technologies is imperative.

In the dynamic field of software development, complacency is not an option. Keeping pace with emerging technologies is crucial.

Recent breakthroughs such as serverless architectures and widespread Kubernetes adoption have reshaped how we develop and deploy. This adaptability ensures our solutions remain cutting-edge.

Our development process thrives on effective collaboration. Working closely with product managers, designers, frontend developers and mobile developers, I ensure a clear understanding of project goals.

eCabs Technologies Backend Team Lead Burak Aykan Ürer

Embracing microservices empowers rapid response to changing demands. A steadfast focus on observability and stringent security safeguards system reliability and data integrity.

The commitment to continuous learning not only enhances our capabilities but also leads to innovative and effective software solutions.

In the fast-paced, competitive market of ride-hailing, sustaining innovation and agility is pivotal. We actively seek customer feedback and foster a culture of experimentation.

Agile methodologies empower us to swiftly adapt to changing needs. Additionally, we keep a vigilant eye on industry trends and invest in ongoing learning.

This comprehensive approach ensures we stay at the forefront of development, remaining both competitive and responsive to our customer base.

What advice would you offer to aspiring backend developers entering the tech mobility industry

I would advise aspiring backend developers looking to enter the tech mobility industry to focus on a few key areas.

Firstly, mastering core backend technologies is crucial. This forms the foundation of your technical prowess.

Additionally, familiarise yourself with cloud platforms like AWS or Google Cloud, as they’re integral for creating scalable and reliable infrastructure.

Understanding microservices architecture is equally important, as it allows for flexibility and scalability in complex systems.

APIs are a cornerstone in mobility services, so becoming proficient in designing and working with them is essential.

Given the sensitive nature of user data, prioritising knowledge of data security, encryption, and privacy regulations is paramount.

Lastly, remember that continuous learning is non-negotiable. The tech industry is ever evolving, so staying curious and open to adopting new tools and frameworks is imperative.

This combination of technical proficiency, problem-solving abilities, and a passion for learning will undoubtedly pave the way for success in the tech mobility industry.

Burak Aykan Ürer
Sticking to what works in ride-hailing apps

Sticking to what works in ride-hailing apps

What places eCabs Technologies’ App amongst the best ride-hailing apps in the world today?

Modern-day applications are user-centric. We are no exception to the rule.

Instead of reinventing the wheel, we’ve applied our extensive learnings and experience to ensure a standardised seamless in-app experience.

The landscape of digital interfaces is constantly evolving. Yet there is something to be said for adhering to what users are familiar with. Especially in the fast-paced world of ride-hailing apps.

In our pursuit to design the optimal user experience, we’ve settled on a few key principles that drive our decision-making.

Sticking to what works in ride-hailing apps

Seamless and intuitive experience

We prioritise a seamless UX/UI that reduces friction for users. Instead of trying to be overly innovative, we believe in building upon what users are already accustomed to in ride-hailing application layouts. This approach ensures an intuitive and natural experience for our end user. This ensures that customers can easily adopt the eCabs app wherever our technology is deployed without encountering any steep learning curves.  

Consistent movement and action

Just as you would expect a book to open from the side rather than the top, or a door to swing, app functionalities should follow familiar patterns. At eCabs Technologies, we respect the ‘mental muscle memory’ users develop over time. Replicating existing movements means users won’t be caught off guard or feel the need to learn a new way to navigate an app. This also contributes to reducing drop-offs and increasing conversions.

Reduced cognitive load

Every second counts when you are trying to book a ride. By reducing the thinking time and effort required to use our app, we’re ensuring that you can book a cab swiftly and without hassle. Additionally, this ensures that your end customers reduce ‘toggling’, between other ride-hailing platforms. When users intuitively know what to do next, they stage engaged.

Sticking to what works in ride-hailing apps

In essence, our design philosophy is to make the eCabs experience so smooth and effortless that it becomes the go-to choice when you need to book a cab, every single time.

Are we right?

Download our app and let us know.

Kristen Jim Albuquerque
What to know when looking up taxi near me

What to know when looking up taxi near me

Before you search ‘taxi near me’ on your phone or web browser, you should take some time to learn about safety protocols, fare prices and more.

These are some ways to ultimately choose a reliable cab service that meets your needs.

Safety first (and comfort too)

Make sure the taxi company you choose is licensed and insured. This is a vital step to ensure your protection.

Also, a reputable ride-hailing service will have made sure that their drivers would have undergone significant and in-depth training before they are allowed to take on clients.

Another factor that you should take into consideration is the condition of the vehicles that the ride-hailing company uses.

A reliable company will have well-maintained vehicles that are comfortable and clean.

Having an easy way to book your ride, such as a user-friendly App, is a definite bonus too.

Check out the different payment options on offer

Make sure the taxi company offers a variety of payment options, including credit and debit cards, as well as cash, and other digital means like Google Pay and Apple pay.

This will give you more convenience, reliability and flexibility when deciding how you would like to pay for your trip.

Reputation is vital when choosing a taxi company

Do consider the reputation of the taxi company. Read online reviews or ask for recommendations from friends and family.

A reputable taxi company will have a history of providing a high-quality service and will be more likely to meet your expectations.

Reviews and ratings should also be taken in the context of the quantity and quality of reviews it has. Three 5-star reviews may not be as good as 1,000 4-stars.

Awards, such as TripAdvisor’s Traveler’s Choice Award are another thing to look out for.

Reward schemes

As a customer, it is nice to get something in return for your loyalty.

Reward schemes are also proof that a company values its customers and wants to go out of its way to ensure they feel that way.

With eCabs’ reward scheme, the more rides you take, the more points you earn… leading to various benefits.

Impeccable customer service

The level of customer service offered by the taxi company is also an important consideration. A professional taxi service will have friendly and helpful drivers and a very responsive customer service team.

For instance, did you know that eCabs has a 24/7 customer service with a phone number +356 21383838 that you can call day and night?

It is nice to speak to a human being when in need rather than just having access to lengthy FAQs. Emergencies are subjective and require attention.

They also have a Lost and Found department that you can contact if you happen to leave something in one of their vehicles, or the vehicle of any of their partner drivers.

Selecting a reliable and professional taxi service is crucial for your overall experience.

The right choice will give you peace of mind and ensure that you have a safe, enjoyable, and smooth ride.

Using machine learning for cost optimisation

Using machine learning for cost optimisation

As a marketing data analyst working in the tech mobility industry, I mainly work on tasks centred around the needs and requirements of the Marketing Department.

But I also get to collaborate with different teams and work on projects that need my technical and scientific expertise.

I was recently approached by eCabs International Business Development Manager Ruslan Golomovzy as part of a large-scale project.

The task: to plan a permanent mobility solution for transporting hundreds of people to various destinations from an initial central location. And then back to their original destinations.

The goal: to assist the client in a cost-cutting exercise, reducing travel time (by 50%) to ensure employee satisfaction.  

It was a tall order that presented a unique set of challenges. Just the sort of thing I like to sink my teeth into.

We couldn’t simply provide an infinite number of rides for the users. Since that would strain the budget resources and interfere with restrictions set by our client.

So, what could we do instead? Eventually the discussion turned to machine learning.

Using the predictive model which I created, I was able to approximate the volumes of users during the project’s time window. You can find an explanation of this predictive model in my previous blog post.

I therefore had a rough estimate of how many cabs we could use for this project. I will denote this number of available (and maximum) cabs as the letter K.

K-means clustering algorithm

At an initial glance, it seems like a relatively easy exercise, right? Clustering locations that are within a certain radial distance and providing transportation that suffices to hold each cluster.

Optimising the number of vehicles ensures minimal resource cost and maximum customer experience.

On a small scale, this can be done manually or visually. But this particular exercise had hundreds of passengers, from varying destinations spread all over Malta.

So, I took a look at my scientific toolkit. And I decided to use an unsupervised learning technique called the K-means clustering algorithm.

This centroid-based algorithm is widely used in Machine Learning. It is used for grouping sets of unlabelled data points together based on a minimisation of the sum of the distances between the data points and their corresponding K clusters.

Identifying the most efficient trip paths

By clustering the pickup and drop-off locations of our customers, we are able to identify the most efficient trip paths together with the optimal number of cabs for this particular event that ensured minimal waiting time too.

Machine learning Julia Vella eCabs Technologies Marketing Data Analyst
Above is a screenshot with a small portion of the geographical locations for pickup, showing how it is not as simple as visually grouping points.

To get started, I collected the geographical locations of the pickup and drop-off locations in latitudes and longitudes coordinates in order to pre-process the data.

I plotted them on a map to visualise the distribution across Malta. So that I could give a first guess at the number of clusters I thought would suffice. Thus ensuring it was less than (or equal to) the K value I previously determined.

However, it is important to note that most cases would need the use of the Elbow method in order to find the optimal number of clusters.

Where the ‘magic’ happens

I wrote a small Python script to train the K-mean clustering algorithm on my dataset. And it grouped these locations into K clusters based on their proximity to each other.

Training is where the magic happens. In this case, training was performed by assigning each data point to the cluster with the closest centroid. And the variance is then calculated for each point such that a new centroid is placed within each cluster.

This is an interactive procedure that repeats until reassignment occurs. In which case the model stops, and the K clusters are finalised.

I ended up with a less value of clusters than I had previously estimated, which was satisfactory.

The final clustering results were plotted on the map to visualise the algorithm’s suggestion.

It was interesting to note that some clusters contained many people and thus demanded the need for a larger vehicle. Whereas some clusters only contained two people such that a smaller vehicle sufficed.

At first glance, we wanted to group these small clusters in other larger ones to reduce the cab quantity. But upon inspection it made more sense to leave them isolated due to their distance from the centralised pickup location and thus much larger driving time – which was a much-appreciated suggestion from the method.

Saving time, money, and resources through machine learning

It is important to note that at the end of the day, these models are objective suggestions. Such that if certain requests are made by the users or if a B2B client has further restrictions, limitations, or requirements, they can easily supersede these results in the final planning stage.

In conclusion, the K-mean clustering algorithm proved to be a valuable tool for optimising trip paths and the number of resources needed for our large-scale collaborative project.

By using this machine learning technique, I was able to offer the B2B team a solution to save time, money, and resources. While still providing excellent service to our customers, cutting waiting time by 50%.

References:

Julia Vella driving data

Driving data to predict passenger volumes

I’m a Senior Data Analyst at eCabs Technologies. But when people ask me what I do all day – I tell them I’m storytelling

Data is a collection of raw and discrete values that make no particular sense at first glance. It usually sits inside a data warehouse, which not only stores, organises, and manages the data but also allows querying and quick analysis. It is a core component of business intelligence and creates a space for number crunching, reporting and scientific study.

As a marketing data analyst, my job involves collecting, organising, and analysing all the relevant data to help inform and sometimes answer business decisions, primarily centered around the Marketing department’s needs.

At its core, data analysis is the process of using statistical and mathematical techniques to make sense of the information available to us so that I can turn what looks like Matrix-style numbers into stories that even non-technical personnel can understand. 

Whether I’m looking for patterns in the number of rides requested at particular times of the day or trying to quantify the reasons for cancelled pick-ups, app open sessions or passenger ETA, what I’m really doing is asking questions to tell better and more relevant stories that can eventually answer some vital business questions.

So, while a lot of it is invisible to the naked eye at first, what I’m doing is uncovering information. By observing users under an analytical microscope and looking at their interaction within the ride-hailing industry.

I will use this blog space to talk about some of the nuts and bolts of what we do here at eCabs Technologies as we try to improve your mobility experience.      

But this first story is special to me. 

Asking the right question

In early 2023 I made use of a powerful yet relatively simple supervised learning method in my data analysis toolkit. It is called simple linear regression.

This technique allows me to investigate the relationship between two variables. These are often referred to as the independent variable (X) and the dependent variable (Y). In this case, the user volumes and driver hours respectively. By using simple linear regression, I can determine how changes in one variable affect the other variable.

I applied a linear regression analysis to a large data set that contained a few years’ worth of values for both the volumes of rides of eCabs users and that of partner driver hours.

This came about after asking this question. “How many more driver hours would it take to make a noticeable impact on user volumes?”. The answer may be  intuitive to some, so much so that you may have already guessed what type of relationship exists here, but to what degree?

I wanted to be able to quantify this to a relatively high accuracy. And be able to approximate how many more people would request rides if there was a controllable and known number of increased drivers available at a given time.

Doing my homework

Before applying this technique, I needed to first ensure that my data abided by and respected the standard rules and limitations of linear regression. As with any algorithm, we need to check the foundation of assumptions before we apply it. Otherwise, any analyst runs the risk of faulty and misleading results. 

The first is that simple linear regression assumes there is a linear relationship between the independent and dependent variables.

This may not always be the case though.

There may be non-linear relationships or interactions between the variables that are not captured by a simple linear mode. In our scenario we assume linearity over large scales. 

Other limitations include the assumptions of independence, homoscedasticity, and normal distribution.

If we do not respect these assumptions, then applying the algorithm anyway would provide errors and inaccuracies in the results that would deem them useless.

Outliers and influential data points may also distort the result, impacting the estimations. But for our exercise we may assume that these are all respected. 

Therefore, while useful analytical methods may be used for making predictions, it is important to research and respect their limitations. As well as carefully evaluate their assumptions and ensure the data follow in their shadows, especially when considering the potential sources of error when interpreting the results. 

“I used a very simple approach”

After carrying out this preliminary analysis, I adopted a very simple approach. That of extracting the two relevant fields from our data warehouse, and loaded them into arrays in Python.

I imported a few data science toolkits into my script, namely sklearn and sklearn.metrics.

I then split the arrays into training and testing sets as part of this learning algorithm and in order to use them in the relevant package.

The model was trained using these sets. And immediately made the necessary predictions as part of linear regression.

The resulting coefficient was outputed together with the mean-squared error to describe how well these two variables were related and to what degree they can be ‘trusted’.

Using best practices in data analysis

A simple line graph was fitted to the scatter plot of the dependent and independent variables to better display the relationship between them.

This forms part of the best practices in data analysis and science as plotting results is always the most concise and diligent way of communicating results. It also comes full-circle regarding the story-telling part of my expertise since a picture speaks a thousand words. 

I also found an equation for this fitted graph. So that, as simple as that, if we plug in the values for the number of driver hours that we have a direct impact and influence on, we can now approximate the user volumes that eCabs can expect.

We now have a way of influencing our independent variable (volumes) with our dependent one (hours).

This also gave a clear ‘maximum’ number of drivers that had absolutely no effect on the number of volumes. So much so, that no matter how much they increased past a certain amount, there were no noticeable fluctuations in users in the data and would instead cause the drivers to waste time.

This is saturation. It can be used to optimise hours on the road. Thus mitigating bad impressions and driver experience.

Improving customer and driver experience

This process taught me that it doesn’t always need to be impressive pipelines in complex code with a million data points.

Sometimes it is as simple as seeing how sets of variables grow or decay together, plotting a graph and finding the equation to best describe their relationship.

This is something that is done in beginner maths and physics. So next time a kid asks, “When will I use this in real life?”, get them to read this.

In the end, I settled on a multiplier that predicts passenger volumes in relation to the number of drivers out on the road with less than a 10% error margin.

The data said, ‘Hey if you put out say X more drivers at this time, you increase the probability of securing a passenger by Y’.

This changed how eCabs manages its relationship with all partner drivers.

We could see when we needed to incentivise for the supply of driver availability, and when we did not. Thus, ensuring there is no saturation of drivers.

This did not just improve customer experience, but by transitivity, that of the drivers working on the eCabs platform too.

For eCabs, we translated the formula into cost analysis, and revenue projections. It was even fed into marketing and operations plans.   

It was a win3.