Netflix compressed graphs in .Net

Netflix populated graph

A while back, Netflix wrote in their blog about their graph library, and the work they’ve done to reduce the memory footprint of their graph. Reducing memory allows Netflix to maintain the whole graph relations in-memory (note that the node themselves are not maintained in-memory), which means that queries on the graph are returned extremely … Read more

Best C# client for WebDAV

I always prefer using existing libraries implemented by someone else – it means that I don’t have to study the subject matter, and not less important, that someone else maintains the code for me (tests the code, implements new features, follow-ups on newer versions of the APIs if any, etc.). That being said, every now and … Read more

Using the LibraryThing API from C#

LibraryThing Logo

If you are not familiar with LibraryThing, go ahead and visit their website – it’s probably the most comprehensive bookscollection in the web. LibraryThing provide several APIs, one of them a RESTful API, which can be invoked from C# relatively easily. In this post I’ll describe how to use that API. First, you need to … Read more

Accessing OneDrive via .Net

TLDR: I created a new NuGet package/GitHub repository for a library to allow you access to OneDrive via .Net. Over the last few days, I’ve implemented a .Net Class library to provide .Net access to OneDrive. Although Microsoft provides its own SDK (which is found at http://msdn.microsoft.com/en-US/live/ff621310), that library is not very developer friendly – … Read more

Modeling GitHub Repositories and NuGet Packages

I’m planning to do some research and statistics on NuGet packages usage in GitHub repositories.Here’s some sample questions I would like to answer: I’ve shown in my previous post how to retrieve the list of packages used byspecific GitHub repository. And in a different post, I’ve shown how to retrieve the information of a NuGet … Read more

Getting NuGet package details

In my previous post I’ve shown how to get the list of NuGet packages used by a GitHub repository. Let’s see how we can retrieve some additional information for each package. The NuGet Gallery provides an OData feed, which can be used to easily query and search its database. It’s base URL is https://packages.nuget.org/v1/FeedService.svc. I’ll not go over … Read more

Playing with GitHub API – Octokit.Net

For a small project I’m working on, I needed access to GitHub, to investigate some repositories via code. Luckily, GitHub have an extremely extensive API. Furthermore, they even provide a .Net library (via a NuGet package) named Octokit.Net, to easily access that API: Let’s see some samples. We’ll start by creating a new GitHubClient object: … Read more

Throttling HttpClient requests

In my previous post, I’ve introduced a TimeSpanSemaphore, that functions as a throttling lock. Let’s see how we can use that semaphore to throttle HttpClient requests. The naïve solution would be to create an instance of the semaphore right next to the HttpClient, and wrap each request with a wait/release call on the semaphore: As … Read more

Time-based throttling of web requests

As part of my work on Cloudsfer, I’m working a lot with REST APIs of various cloud service providers, such as OneDrive, Dropbox and Instagram. Most of these services limit you to a certain number of requests per second/hour/day. This is understood – these services need to protect themselves from DDOS attacks, and other abuses. … Read more

Attaching debugger at runtime in .Net

Whenever you write code that starts a new Process, your debugging experience is rather lacking – you’re stuck outside of the debugger. The following extension method will attach the Visual Studio debugger to your process:

Reactive Extensions goes Open Source

With Reactive Extensions going open-source, as mentioned in Scott Hanselman’s Reactive Extensions (Rx) is now Open Source post, I took a swing at the library, as it solved one of my requirements perfectly. Having the ability to buffer events (or subjects), and process them in chunks, while keeping a time-limit on the delay is extremely … Read more