.NET code analysis using Neo4j Database

This article is an introduction into a field of graph-based code analysis. My name is Vlad, I am a Tech Lead at Agoda, and have spent the last four years working on architectural changes of high-load systems, including a clean architecture redesign of Gateway API and modularization of the Agoda website.

Today, we will discuss a base concept of graph-based code analysis and learn how to build a Codebase Knowledge Graph (or Code Knowledge Graph or simply CKG) for a .NET Core project using Strazh.

  • Codebase Knowledge Graph: a graph concept agnostic to a programming language.
  • Strazh: tool to build…


Modular redesign of Agoda.com

This article tells the story about the ongoing process of a modular redesign of the Agoda website (at the moment when the article was written). The first part contains information about the development process in Agoda and the second part is a high-level overview of the modular architecture.

I am Vlad, an Engineering Technical Lead at Agoda’s Frontend department, primarily working on modular redesign, including traffic migration from Windows to Linux and the codebase migration from ASP.NET Framework to .NET Core.

Let’s dive in!

How We Work

Agoda's front-facing web applications use the .NET …


Forgotten projects like a good wine. Longer you not touch, better they become.

Photo by Kym Ellis on Unsplash

In this article, you will learn how to build a small game using Elm. I hope my example will inspire you to try it.

From time to time, I like to rest from a working routine and do my hobby: create casual games. Usually, this kind of project started suddenly, paused unexpectedly, rarely finished, and never released. Sometimes I use ReactNative, sometimes Elm.

Elm

Elm is a functional language that compiles to JavaScript. Elm helps you make websites and web apps (copied from Introduction to Elm).

If you ask me what Elm is, yes, this is a language. But at the…


How to use the subgraph technique to detect the circular money flow (money laundering) in the Neo4j Database of a finance system

Photo by Allie Smith on Unsplash

Goal

This article is written for educational purposes to share cool stuff about Neo4j graph data modelling, subgraph technique, and Cypher query building. Our goal is to illustrate a type of money laundering activity called “Circular money flow”, of a very simplified financial system using a graph database. This post provides a conceptual view of how this can be approached using graph techniques. …


GRANDstack overview: Neo4j Database, React, GraphQL API on Apollo server powered by neo4j-graphql-js library

In this series of articles, I share my experience of building a web application that you can use to search for flights. The project was started for Neo4j Workshop in Bangkok, November 5, 2019. I hope this series can help you in your learning journey of modern web development tools using Neo4j, Docker and GraphQL. This article covers the last phase of project development: applying GRANDstack framework. I will share how easy it can be to use the GRANDstack toolset to build a full-stack web application. Project GitHub repo with all source code you can find here. …


How to write your own APOC Custom Procedures & set it up in Docker using Cypher-shell

Part 1: Dokerizing

Target

In this series of articles, I will share my experience of building a simple web application that you can use to search for flights. The application was built for Neo4j Workshop in Bangkok, November 5, 2019.

The general idea is to have a page with a search box where you can define a place of departure and destination, choose the date and voila — a list of available flights would appear below. Our needs are limited by only a one-way flight, no class options, and no other fancy options. A brutal one-way flight for MVP. …


How to build Neo4j Docker Image with Database import using neo4j-admin import tool

Target

In this series of articles, I will share my experience of building a simple web application that you can use to search for flights. The application was built for Neo4j Workshop in Bangkok, November 5, 2019.

The general idea is to have a page with a search box where you can define a place of departure and destination, choose the date and voila — a list of available flights would appear below. Our needs limited by only a one-way flight, no class options, and no other fancy options. Brutal one-way flight for MVP. …


Our team has agreed on this statement a year ago. In this article, I want to share how we improved our Retrospective and how it helped our team to be better. You will read about useful Retrospective techniques and real-life examples from the Scrum of our team.

Why Retrospective so important?

Because Retrospective is the best time and place to improve your team. Indeed, the retrospective is not about the number of Story Points completed, KPI reached, or bugs are fixed. It is about healthy team collaboration.

One of the most important indicators of team quality is the team’s capacity for self-reflection. Reflection, not…


React Native Animated library is a simple, but powerful tool to manage animation. I highly recommend you to read the official documentation to catch the basics. Not right now, but definitely a must-read.

In this post, we will discuss easy and cute transformation examples based on one small piece from my hobby-programming indie game. From time to time I do some primitive games in JS and Elm because it is fun and I can learn something new. Let’s begin!

Water planet

For such a small topic, I don’t think, it’s really necessary to talk about the game itself. Just know, that in…


I am one of the founders of DevOWL Meetup, the first city independent collaboration dedicated to creating Software Developers Community in Vitebsk. Vitebsk is a regional city in Belarus with a population of around 300K people.

For 4 years from 2013 till 2017, I’ve been leading the local Software Developers Community together with other organizers from our small team: Olga Khaladovich, Max Podolyako, Kseniya Talstykh.

This post is a retrospective, full of respect and positive emotions to people I met and the events we did. …

Vlad Batushkov

Engineering Technical Lead @ Agoda. Neo4j Featured Community Member. Certified Neo4j Professional. Articles brewed on web, hops and indie rock’n’roll.

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