An Expert Community Where Every Voice Matters


Join Us
  • Replace .NET performance counters by CLR event tracing

    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

    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

    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

    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

    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

    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!

    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

    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?

    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

    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…