Our high performance NoSQL faceted search engine with guided navigation, 1search (more information here), serves carsales traffic at 9ms on average. That is fast. However, ‘average’ can be very misleading. For instance, if most responses are significantly faster, an average of 9ms might indicate a problem. Perhaps there is some inherent slowness with some parts of the search engine? In fact, it is only by looking at the various percentile graphs that this slowness revealed itself.

It is natural to be fooled by the ‘average’ figure but especially after scoring a 15x ‘average’ speed improvement (story for another day) for…

Dependency Injection

DI (Dependency Injection) is a common technique employed across all ASP.Net Core applications and we are no stranger to this. .Net Core itself has built-in support for DI.

Console Application

Not every app can be an ASP.Net Core application. Sometimes you have to write a console application. What most people find, however, is that they do not know where to begin coding. Your IDE will create an empty class with a static main entry point and leave the rest to you. Not very helpful when you’re from ASP.Net Core world, is it?

Manual Way

You can add the ASP.Net Core equivalent DI support for…

GitHub Project Page
Binaron.Serializer NuGet package

Performance vs BinaryFormatter and Protobuf

vs BinaryFormatter: 3x faster in both serialization and deserialization
vs Protobuf.NET: 9x faster in serialization and 2.5x faster in deserialization

Head over to .NET Fiddle to see for yourself.

What is Binaron.Serializer?

Binaron.Serializer is an MIT licensed open source binary serializer. It is designed and written from ground up to be really fast for modern programming languages with an open source binary object notation format.

In the GitHub repository above, you’ll find 2 benchmarks using BenchmarkDotNet comparing Binaron.Serializer to Newtonsoft.JSON.

The first one showcases best case scenario vs a JSON serializer, where we serialize an array of…

Configuration — What is it?

Configuration drives how your application behaves. Your application may be a web app, console app, WPF / Windows Form app but it won’t be very useful if its behaviour can’t be tailored to users’ preference.

For web / console app running in a server environment, behaviour driven by configuration means you can run the same codebase but allow users to decide how they want to use the service. For example, a microservice that sends out reports via email may need to have SMTP settings configured. …

Note: This article is now outdated and only serves as a reminder of the struggles we went through when S3 was eventually consistent. S3 as of December 2020 offers strong read-after-write consistency — https://aws.amazon.com/blogs/aws/amazon-s3-update-strong-read-after-write-consistency/

S3 is a versatile storage service — in fact, Jeff Bezos wanted it to be the malloc of internet when the service was first created. In other words, it was going to be the RAM of the cloud. That is a noble aspiration and logical assumption since distributed storage systems are not dissimilar to the CPU cache+RAM we have on a multicore multisocket server machine.


What is the most important thing in a marketplace? Discoverability.

carsales is a marketplace. While it is important to have lots of vehicles on the site, it is even more important to make it easy for users to discover the vehicles. Sellers simply won’t sell on your platform if their vehicles cannot be discovered easily, and we need to help users find that 1 car out of the 200,000+ cars on our website.

It is precisely this that carsales excel at and we do it via our patented and proprietary search and refinement engine called 1search.

Powered by 1search

What is 1search?

It never ceases to…

Zach Saw

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store