Anton Sizikov

Paying your technical debt.

Dev environment 2016. Windows.

on 2016-06-12

I’ve changed a job last month and had to build up my dev environment from scratch again. While doing that I decided to write down some thoughts about it. I guess it might be interesting to look back at some point and see how does it evolve. Background At my previous employer, we were very into Virtual Machines. We had different base VMs which every developer can download. That’s extremely handy when a new hire has nothing to do, but to install just a couple of tools that are not standard, and enter some credentials.


Read more of Dev environment 2016. Windows.

Thoughts on C# 7 Local Functions

on 2016-04-15

Frankly when I first saw that C# 7 will come with new local functions I thought that that’s just a nice and a compact way of defining local helpers. In fact, it’s much more interesting and useful feature. Today I’m going to talk about it in more details. Let’s start with a brief overview of the current situation. Current options Private methods The first option that existed in C# 1 is having a private method.


Read more of Thoughts on C# 7 Local Functions


on 2016-04-05

It’s hard to imagine modern development without continuous intergation and unit-tests. At work I hardly pay attention on the process, it just works: I push code to GitHub, later on TeamCity picks up changes and starts the build, and few minutes after I receive Slack or email notification about the result. However for my personal projects things are different. I’m using free plan on AppVeyor. It works pretty well except the fact that your build might stay in the queue for a while.

#tools #appveyor #devops

Read more of CatLight

C# 7 features preview

on 2016-04-02

Last week my twitter feed exploded with lots of entries about Microsoft //Build 2016 conference. As it’s one of the most important events for .NET dev community MSFT prepared quite a few awesome announcements for us: Visual Studio “15” preview C# 7 preview Xamarin going open source and free Ubuntu workspace running natively on Windows 10 And lot more Since I got a bit sick this weekend I had plenty of time to play with new VS15 and C# 7.


Read more of C# 7 features preview

Fully automated Continuous Integration for your Open Source library for free

on 2016-01-10

This is a long title. Well, the post is going to be long as well. I want to show how you can set up the CI pipeline using free services and tools. GitHub GitVersion AppVeyor As an example I’m going to use my pet project: AsyncSuffix plugin for ReSharper. The reason is that the way you pack and publish R# extensions is slightly different from the regular NuGet package.

#github #appveyor #devops

Read more of Fully automated Continuous Integration for your Open Source library for free

How to convince Linus Torvalds to contribute to your project

on 2015-11-03

Look at all those famous people committing to some random developer’s boring repository. Why would they do that? In fact, they don’t. In general, git is just a tool that allows you to create patches and distribute them around by email. When you create a commit, it will be signed with your name and email. Look at the author part here: You have your name listed twice for every commit. You are both the author and the committer.

#github #tools

Read more of How to convince Linus Torvalds to contribute to your project

GitHub Deployment statuses

on 2015-11-01

It’s very important to collect and track as much information as you can about your system. We have logging, monitoring, reports and analytics. All the systems that we build are not just packages, which are deployed to the server/computer or device. Everything starts with Issue Tracking system and through the code goes to production. The code and the process of coding both look like an important part of the system and it makes a lot of sense to collect and store all the data about code.

#github #devops

Read more of GitHub Deployment statuses

Avoid typing user name when committing to GitHub repository

on 2015-09-05

I use different accounts and different computers to work with GitHub repositories, so sometimes I face the situation when I don’t have my SSH key generated for the current environment. I can still work with my command line tool, however I have to type credentials every time I want to pull or push to the remote. Actually I’m fine with typing the password, but not the user name. So what can I do (besides generating new SSH key and adding it to my Git/GitHub account) is to update the remote to have my user name in it.

#github #tools

Read more of Avoid typing user name when committing to GitHub repository

ReSharper Annotations. Can it be null?

on 2015-08-16

Hi, ReSharper is doing great job when it comes to semantics of your code and control flow graph analysis. The special edge case I want to talk about is nullness analysis. Unfortunately sometimes it’s hard to predict whether the method returns null or it doesn’t. To solve this problem R# provides an option to annotate your code. Let’s look at this snippet: public Bar Foo() { return Random.NextDouble() < 0.1 ?

#resharper #programming

Read more of ReSharper Annotations. Can it be null?

Reactive Extensions. Api client with Cache-Aside & Refresh-Ahead strategy. Part 2.

on 2015-08-14

Hi, In the previous post I told you how to implement the Reactive Api client with caching. Well, to prove that our code works we might want to have some unit tests. To do so let’s create a new project (Class Library), add a reference to the main project, and install few NuGet packages. Rx-Main, Rx-Testing, xUnit.Net and Moq. Install-Package Rx-Main Install-Package Rx-Testing Install-Package xunit Install-Package Moq Then we’ll create a class RxGitHubClientTest, inherited from ReactiveTest.


Read more of Reactive Extensions. Api client with Cache-Aside & Refresh-Ahead strategy. Part 2.