Home » Architecture

Tag Archives: Architecture

The importance of a data format: Part II – The environment matters

When designing a new data format, it is important to remember in what environment we’ll operate in, what are the requirements and what type of scenarios we’ll face. With RavenDB, we are talking about the internal storage format, so it isn’t something that is available externally. That means that we don’t have to worry about interchange with anything, that frees ...

Read More »

Architecture and Modelling Tools

UML models helps you to design and understand your application architecture. Further, you can use the UML models for your documentation, not at least to make it easier for other developers to understand the application. With the new Visual Studio 2015, Microsoft made the Architecture and Modelling Tools available to more developers. The tools were only available for users of ...

Read More »

The insidious cost of allocations

  One of the things we learned from build high performance systems is that algorithm complexity is important for system performance, but it is (usually) easy to see. Controlling allocations is something that you don’t see. But it can have an even greater impact on your system. In particular, allocations require some CPU cost immediately, but the .NET framework is ...

Read More »

CoreCLR Documentation

Today I want to show you some documentation that is not directly from the MSDN. Instead, it comes from the team that works on the CoreCLR. So this documentation can be found on GitHub. The CoreCLR is the Open Source implementation of the .NET Runtime from Microsoft. It is open and cross-platform. I selected this documentation since it is very interesting ...

Read More »

Buffer Allocation Strategies – Explaining the solution

In my previous post, I threw a bunch a code at you, with no explanation, and asked you to discuss it. Here is the code, with full discussion below. [ThreadStatic] private static Stack<byte[]>[] _buffersBySize; private static byte[] GetBuffer(int requestedSize) { if(_buffersBySize == null) _buffersBySize = new Stack<byte[]>[32]; var actualSize = PowerOfTwo(requestedSize); var pos = MostSignificantBit(actualSize); if(_buffersBySize[pos] == null) _buffersBySize[pos] = ...

Read More »

User experience on the main path–get it or get lost

The background for this post: Recently I got an email from a startup founder about a service that they are offering. It so happened that this service matched something that I was actually considering doing, so I was very happy to try it out. I registered, and on two separate occasions I attempted to use the service for its intended ...

Read More »

Dependency injection in WCF

Dependency injection is a software design pattern that implements inversion of control for resolving dependencies and is highly recommended for building scalable, testable and maintainable applications. In this very blog we have seen many times this pattern, mostly in ASP.NET MVC and ASP.NET Web API related posts where for example dependencies (data repositories or middle services) were injected into MVC ...

Read More »

Data’s hierarchy of needs

This post originally published in the AppsFlyer blog. A couple of weeks ago Nir Rubinshtein and I presented AppsFlyer’s data architecture in a meetup of Big Data & Data Science Israel. One of the concepts that I presented there, which is worth expanding upon is “Data’s Hierarchy of Needs:” Data should Exist Data should be Accessible Data should be Usable ...

Read More »

Are you getting worked up over code duplication?

As programmers, we have long learned that Duplication is the Ultimate Sin of programming. Even considering to duplicate something is almost unthinkable. But removing duplication introduces dependencies. If you and I use the reuse the same piece of code instead of duplicating it, changes I make may affect you. This effect can anything from beneficial (I fixed a bug you ...

Read More »