-

Replace .NET performance counters by CLR event tracing
This post of our new series shows why performance counters might not be the best solution to monitor your .NET application and why the CLR events will definitively be a better solution. Introduction At Criteo, each .NET application provides custom metrics to monitor deviation and trigger alerts. This is the first line of defense against misbehaviors. The…
-

Making Criteo Functional
Criteo uses a lot of Scala in its code-base. This originally started by experimentations with big data jobs and data science scripts, but quickly it became evident that Scala would be very useful for application development too. At the beginning, like in most companies, it was first used as a “shorter Java”. But eventually, as…
-

Extending the new WinDbg, Part 3 — Embedding a C# interpreter
In part 1 and part 2, we’ve seen in detail how to customize the WinDBG UI as we see fit. This time, we’ll apply this knowledge to cover a very specific use-case: running C# code as script directly inside of WinDBG. Why would you want to do that? If like us you often use ClrMD during…
-

Machine Learning Model Deployment
Web-scale ML: Learning is not the (only) point Machine Learning (ML) is all in the news these days to the extent that even government agencies are taking note. Behind the fanfare, ML has been playing a key role in many major businesses for years (e.g. search engines, online advertising, recommendation systems, machine translation, etc. ). At…
-

Hashcode 2018 Report
How to make it to the top. This year we took part in the Google Hashcode competition. This is a yearly competition where teams of 2 to 4 participants have to solve a real-life optimization problem. It starts with a 4 hours online contest, with thousands of teams participating worldwide. The top 50 teams then move…
-

Performance Counters Hell
On Windows, performance counters are the building blocks of most monitoring dashboards. When you need to corelate one counter with another counter, what could possibly go wrong? Let’s take an example: you have two instances of an application running such as two worker processes w3wp.exe spawned by IIS to run your application and you need to…
-

Aujourd’hui je code!
Teaching girls to code The last day of November 2017 was a special day: about 40 students came to visit Criteo, discover our company and learn to code with close monitoring from experienced programmers. Why holding “Aujourd’hui, je code!”? At Criteo, we are coders and we thoroughly enjoy the creativity that computer programming unlocks. Programming is a…
-

Extending the new WinDbg, Part 2 — Tool windows and command output
In the first part of the series, we saw how to extend the new WinDbg add a button to the UI, execute, and listen to commands. This time, we will push things a bit farther, and we’re going to add history and multiple editors support. The history feature will allow you to recall an old…
-

How being a mom made me more self-confident in a Tech environment?
Today, I am a proud mom of two kids, one girl aged 6 and one little boy aged 2. I started my career as a Software Engineer, working for three years before joining Criteo in 2010. Today, I am an Engineering Program Manager Lead in R&D, meaning I have to develop a team of talented Engineering…
-

ClrMD Part 9 — Deciphering Tasks and Thread Pool items
This post of the series shows how to easily list pending tasks and work items managed by the .NET thread pool using DynaMD proxies. Part 1: Bootstrap ClrMD to load a dump. Part 2: Find duplicated strings with ClrMD heap traversing. Part 3: List timers by following static fields links. Part 4: Identify timers callback and other…
