Tunnelling Software

BarbaTunnelProject Description

A layer that hide, redirect. forward, re-encrypt internet packet to keep VPN, Proxies and other p2p software hidden from Firewall. Free implementation for HTTP-Tunnel, UDP-Tunnel, port forwarding, port redirecting and packet re-encryption that can work in network data-link layer and transport layer.
ref: http://barbatunnel.codeplex.com

 

Using Service Bus on Windows Server

Service Bus 1.0 on windows Server
http://www.microsoft.com/en-gb/download/details.aspx?id=35374

 

REDIS: Remote Dictionary Server, an in-memory, key-value data store

“Redis is an open-source, networked, in-memory, key-value data store with optional durability. It is written in ANSI C. The development of Redis has been sponsored by Pivotal since May 2013;[1] before that, it was sponsored by VMware.[2][3] According to the monthly ranking by DB-Engines.com, Redis is the most popular key-value store.[4]” ref: http://en.wikipedia.org/wiki/Redis

remote dictionary server

“Redis is an open source, BSD licensed, advanced key-value store. It is often referred to as a data structure server since keys can contain strings, hashes, lists, sets and sorted sets.”
ref: http://redis.io/

Quick start
http://redis.io/topics/quickstart

 

How many requests per second can I get out of Redis?
http://skipperkongen.dk/2013/08/27/how-many-requests-per-second-can-i-get-out-of-redis/
How many requests per second can I get out of Redis?
http://highscalability.com/blog/2014/9/8/how-twitter-uses-redis-to-scale-105tb-ram-39mm-qps-10000-ins.html

 

Redis is a very powerful tool that can be used widely in building especially a large scaling system, as a distributed cache, NoSQL and message queue.
http://geekswithblogs.net/shaunxu/archive/2012/04/27/redis-on-windows.aspx

RestMQ: Redis based message queue
http://www.restmq.com/
https://github.com/gleicon/restmq
http://www.slideshare.net/gleicon/restmq-httpredis-based-message-queue

 

 

Redis vs MongoDB

Redis vs. MongoDB Performance

“MongoDB is an open source document database, and the leading NoSQL database which is written in C++ and Redis is also an open source NoSQL database but it is key-value store rather than document database. Redis is often referred to as a data structure server since keys can contain strings, hashes, lists, sets and sorted sets.

Results were measured using MongoDB 2.4.8 and Redis 2.6.16

Machine Specifications

  • Processor : 4x Intel(R) Core(TM) i5-3230M CPU @ 2.60GHz
  • Memory : 3892MB
  • Operating System : Ubuntu 13.04
  • Kernel -Version : Linux 3.8.0-33-generic (x86_64)
Redis Read Mongo Read Redis Write Mongo Write
10 2 5 5 8
100 13 11 8 34
1,000 38 93 31 153
10,000 238 980 220 1394
50,000 958 5218 979 8713

Calculated time in milliseconds (lower is better)”
http://badrit.com/blog/2013/11/18/redis-vs-mongodb-performance#.VkRXivnhDWI

MongoDB and Redis: a different interpretation of what’s wrong with Relational DBs
http://oldblog.antirez.com/post/MongoDB-and-Redis.html

 

Redis as the primary data store? WTF?!
https://muut.com/blog/technology/redis-as-primary-datastore-wtf.html

 

 

 

servicestack and other redis clients

servicestack redis client alternatives
“The free-quota limit on ‘6000 Redis requests per hour’ has been reached.”
http://stackoverflow.com/questions/20785419/alternative-to-servicestack-redis
https://code.google.com/archive/p/booksleeve/

 

 

 

scaling redis
How Twitter Uses Redis To Scale – 105TB RAM, 39MM QPS, 10,000+ Instances
http://highscalability.com/blog/2014/9/8/how-twitter-uses-redis-to-scale-105tb-ram-39mm-qps-10000-ins.html

Scaling Redis
http://petrohi.me/post/6323289515/scaling-redis

Partitioning: how to split data among multiple Redis instances.
http://redis.io/topics/partitioning

Redis cluster tutorial
http://redis.io/topics/cluster-tutorial

 

WCF routing

Hello World routing sample

Bridging and Error Handling routing sample

Advanced Filters routing sample

Dynamic routing sample

Advanced error handling routing sample

Routing topic on MSDN — full coverage of services, contracts, filters, and scenarios

Routing Rules! Blog — the entire blog is about the routing service and the different scenarios it enables. Take a read through all the blog posts for sure.

Building a WCF Router, Part 1 on MSDN Magazine

Building a WCF Router, Part 2 on MSDN Magazine

 

Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4
http://www.microsoft.com/en-us/download/details.aspx?id=21459
http://download.microsoft.com/download/1/5/9/159D6D71-7728-45D4-BC15-5DF1F2DDCD94/WF_WCF_Samples.exe

 

Self-signed certificates with WCF

Using a self-signed certificate with .NET’s HttpWebRequest/Response
Turns out, if you just want to disable certificate validation altogether, you can change the ServerCertificateValidationCallback on the ServicePointManager, like so:
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };”
http://stackoverflow.com/questions/526711/using-a-self-signed-certificate-with-nets-httpwebrequest-response
How to accept a self-signed SSL certificate in a WCF client?
http://stackoverflow.com/questions/4977218/how-to-accept-a-self-signed-ssl-certificate-in-a-wcf-client

C# Ignore certificate errors?
http://stackoverflow.com/questions/2675133/c-sharp-ignore-certificate-errors

 

GIT Source Control System

A Short History of Git
https://git-scm.com/book/en/v2/Getting-Started-A-Short-History-of-Git

10 Years of Git: An Interview with Git Creator Linus Torvalds
http://www.linux.com/news/featured-blogs/185-jennifer-cloer/821541-10-years-of-git-an-interview-with-git-creator-linus-torvalds

A year with Git
http://beletsky.net/2012/05/year-with-git.html

how to set up a centralized Git repository
https://code.google.com/p/tortoisegit/wiki/HOWTO_CentralServerWindowsXP

Simple git server for Windows: http://bonobogitserver.com/

Git Stack – Git Server for Windows
http://gitstack.com/pricing/

 

git – the simple guide
“just a simple guide for getting started with git.”
http://rogerdudler.github.io/git-guide/

 

3 Reasons to Switch to Git from Subversion
“1) Git creates a full repository with this command. With Subversion, you’re just checking out the files in the repository.
2) With each branch, no new files are created in the project file hierarchy on your system. Since you have a full local repository, Git creates the files you need on the fly by processing the recorded changes. With Subversion, you have to create every branch remotely on the server. This can get messy depending on the size of your team. If you decide to control branching to keep things clean, you forfeit the power branching offers.
3) With Git, we only push our work to the server AFTER collaboration (more below). With Subversion, it all hits the server.
4) Again, no file system work. Since we’re using a local repository, we let Git handle the details of removing the branch. With Subversion, you still have the old copy until you update. You either have to clean up manually, or “update” to clean up local and remote copies.”
http://markmcb.com/2008/10/18/3-reasons-to-switch-to-git-from-subversion/
Why You Should Switch from Subversion to Git
http://blog.teamtreehouse.com/why-you-should-switch-from-subversion-to-git
GitSvnComparison: A summary of differences
“Git is much faster than Subversion
Subversion allows you to check out just a subtree of a repository; Git requires you to clone the entire repository (including history) and create a working copy that mirrors at least a subset of the items under version control.
Git’s repositories are much smaller than Subversions (for the Mozilla project, 30x smaller)
Git was designed to be fully distributed from the start, allowing each developer to have full local control
Git branches are simpler and less resource heavy than Subversion’s
Git branches carry their entire history
Merging in Git does not require you to remember the revision you merged from (this benefit was obviated with the release of Subversion 1.5)
Git provides better auditing of branch and merge events
Git’s repo file formats are simple, so repair is easy and corruption is rare.
Backing up Subversion repositories centrally is potentially simpler – since you can choose to distributed folders within a repo in git
Git repository clones act as full repository backups
Subversion’s UI is more mature than Git’s
Walking through versions is simpler in Subversion because it uses sequential revision numbers (1,2,3,..); Git uses unpredictable SHA-1 hashes. Walking backwards in Git is easy using the “^” syntax, but there is no easy way to walk forward.”
https://git.wiki.kernel.org/index.php/GitSvnComparison
GIT vs SVN
“DVCS proponents point to several advantages of distributed version control systems over the traditional centralized model:
Allows users to work productively even when not connected to a network
Makes most operations much faster since no network is involved
Allows participation in projects without requiring permissions from project authorities, and thus arguably better fosters culture of meritocracy instead of requiring “committer” status
Allows private work, so users can use their revision control system even for early drafts they do not want to publish
Avoids relying on a single physical machine as a single point of failure.
Still permits centralized control of the “release version” of the project”
http://www.codeforest.net/git-vs-svn

 

Please. Stop Using Git. – Matthew McCullough
https://www.youtube.com/watch?v=o4PFDKIc2fs

 

Git Large File Storage
https://git-lfs.github.com/

 

 

 

 

Sorting Algorithms

Sorting Match betwwen Quicksort and Bubble Sort
http://www.youtube.com/watch?v=aXXWXz5rF64

Three Beautiful Quicksorts
http://www.youtube.com/watch?v=aMnn0Jq0J-E

Visual Demonstration of the QuickSort Algorithm
http://www.youtube.com/watch?v=Z5nSXTnD1I4

NAnt

Tutorial on Nant How to install and configure
http://www.kevinjensen.com/2007/02/15/tutorial-on-nant-how-to-install-and-configure/

Building and Deploying Using NAnt
http://www.codeproject.com/Articles/38718/Building-and-Deploying-Using-NAnt

NAntBuilder
http://www.polestarsoft.com/download/nantbuilder/

NaNT .build file Intellisense
http://www.mindthe.net/devices/2008/06/23/nant-build-file-intellisense/

A Brief Introduction to NAnt
http://www.4guysfromrolla.com/articles/120104-1.aspx

NAnt 0.92: log4net:ERROR XmlConfiguratorAttribute: Exception getting ConfigurationFileLocation
Download “streams” from http://technet.microsoft.com/en-us/sysinternals/bb897440.aspx and execute:  streams -s -d <Nant Folder>
ref: http://gisbiz.com/2012/12/nant-0-92-log4neterror-xmlconfiguratorattribute-exception-getting-configurationfilelocation/

How to discover multi threading related bugs and debug them?

Multi threaded applications are great, they provide high performance, high throughput but tackling concurrency issues are sometimes  not easy. Especially preemption related bug cannot be easily reproduced. Thus Microsoft created a useful tool called CHESS, to simulate all possible preemptions for your multi threaded application.

How to correctly implement multi-threading in C#
http://csharptest.net/323/how-to-correctly-implement-multi-threading-in-c/

Tools And Techniques to Identify Concurrency Issues
http://msdn.microsoft.com/en-us/magazine/cc546569.aspx

 

Custom Trace Listener and multiple threads
http://woodoweb.com/index_files/c19ae1908f273cdfe9dc2c8f2a82e202-26.html

 

CHESS: Systematic Concurrency Testing

CHESS is a tool for systematic and disciplined concurrency testing. Given a concurrent test, CHESS systematically enumerates the possible thread schedules to find hard-to-find concurrency errors, including assertion violations, deadlocks, data-races, and atomicity violations.
ref: http://chesstool.codeplex.com/

CHESS: An Automated Concurrency Testing Tool
http://channel9.msdn.com/shows/Going+Deep/CHESS-An-Automated-Concurrency-Testing-Tool/

CHESS: Find and Reproduce Heisenbugs in Concurrent Programs
http://research.microsoft.com/en-us/projects/chess/

CHESS: An Automated Concurrency Testing Tool
http://channel9.msdn.com/shows/Going+Deep/CHESS-An-Automated-Concurrency-Testing-Tool/

 

 

Unit Testing Asynchronous Code: Three Solutions for Better Tests
https://msdn.microsoft.com/en-us/magazine/dn818494.aspx

Improved Multithreaded Unit Testing
http://mir.cs.illinois.edu/gliga/papers/JagannathETAL11IMunit.pdf

 

 

SOLID Principles with Examples in C#

Implementing the Inversion of Control Pattern in C#
http://www.codeguru.com/columns/experts/implementing-the-inversion-of-control-pattern-in-c.htm

SOLID Principles in C# – An Overview
http://www.codeguru.com/columns/experts/solid-principles-in-c-an-overview.htm

SOLID principles with real world examples
http://blog.gauffin.org/2012/05/solid-principles-with-real-world-examples/#.Ulv_JlC1G8M

 

ref: http://en.wikipedia.org/wiki/SOLID_(object-oriented_design)

Initial Stands for
(acronym)
Concept
S SRP
Single responsibility principle
class should have only a single responsibility.
O OCP
Open/closed principle
“software entities … should be open for extension, but closed for modification”.
L LSP
Liskov substitution principle
“objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program”. See also design by contract.
I ISP
Interface segregation principle
“many client-specific interfaces are better than one general-purpose interface.”[5]
D DIP
Dependency inversion principle
one should “Depend upon Abstractions. Do not depend upon concretions.”[5]
Dependency injection is one method of following this principle.

 

What’s the difference between the Dependency Injection and Service Locator patterns?
“The difference may seem slight, but even with the ServiceLocator, the class is still responsible for creating its dependencies. It just uses the service locator to do it. With DI, the class is given it’s dependencies. It neither knows, nor cares where they come from. One important result of this is that the DI example is much easier to unit test — because you can pass it mock implementations of its dependent objects. You could combine the two — and inject the service locator (or a factory), if you wanted.”
http://stackoverflow.com/questions/1557781/whats-the-difference-between-the-dependency-injection-and-service-locator-patte

 

The Principles of Good Programming
http://www.artima.com/weblogs/viewpost.jsp?thread=331531

3 Key Software Principles You Must Understand
http://code.tutsplus.com/tutorials/3-key-software-principles-you-must-understand–net-25161

 

 

Liskov Substitution Principle

Can you explain Liskov Substitution Principle with a good C# example?
http://stackoverflow.com/questions/4428725/can-you-explain-liskov-substitution-principle-with-a-good-c-sharp-example

Simplifying the Liskov Substitution Principle of SOLID in C#
http://www.infragistics.com/community/blogs/dhananjay_kumar/archive/2015/06/30/simplifying-the-liskov-substitution-principle-of-solid-in-c.aspx

Liskov Substitution Principle in C#
http://www.c-sharpcorner.com/UploadFile/b1df45/liskov-substitution-principle-in-C-Sharp/

 

 

 

 

 

Moscow Prioritisation

MoSCoW Principle: Must, Should, Could, Would
“MoSCoW is a technique used in management, business analysis, and software development to reach a common understanding with stakeholders on the importance they place on the delivery of each requirement – also known as MoSCoW prioritization or MoSCoW analysis.
According to A Guide to the Business Analysis Body of Knowledge, version 2.0,[1] section 6.1.5.2, the MoSCoW categories are as follows:”
https://en.wikipedia.org/wiki/MoSCoW_method

Moscow Prioritisation
“Must Have, Should Have, Could Have, Won’t Have this time”
http://www.dsdm.org/content/10-moscow-prioritisation

 

 

 

 

Interesting Features in C#

New features in C# 4.5 and C# 5.0
http://www.b-virtual.com/new-features-in-c-4-5-and-c-5-0/

C# 5.0: More Than Just Async
http://visualstudiomagazine.com/articles/2012/11/01/more-than-just-async.aspx

An Introduction to New Features in C# 5.0
http://blogs.msdn.com/b/mvpawardprogram/archive/2012/03/26/introduction-of-new-features-in-c-5-0.aspx

What Happens in an Async Method
http://msdn.microsoft.com/en-us/library/hh191443.aspx

Asynchronous Programming in C# 5.0 using async and await
http://www.codeproject.com/Tips/591586/Asynchronous-Programming-in-Csharp-5-0-using-async

 

closure in c#

C# Closures Explained
http://www.codethinked.com/c-closures-explained

The Beauty of Closures
http://csharpindepth.com/Articles/Chapter5/Closures.aspx