Dynamic Binding

A blog by Dody Gunawinata

December 2009 - Posts

Mama teach your children protocols

I work and live in Cairo, Egypt - so I get to see the Pyramids of Giza from my office window while you suckers have to pay thousands of dollars to pay see it for a couple of uncomfortable hours.

On the downside, I have to review resumes and interview people on a weekly basis for web development jobs.

A standard resume will list litanies of languages, frameworks and databases that a particular person has mastered - but rarely I see people list of protocols in there. Not surprisingly I have not interviewed any web development candidates that know their HTTP/1.1 cold. That is a damn shame.

I do not see universities teaching protocols as parts of their IT degrees either. Developer conferences sell the latest language and libraries. Professional IT traning firms drill down either Java or .Net framework to their participants. But nobody talks about protocols.

It probably because people think protocols are boring. Yes, protocols are boring and you cannot do some flashy demoware on them at conferences - but not mastering critical protocols in your daily work hinders your progress unecessarily. You will get by without knowing HTTP/1.1 as a web developer, but let's aim higher than getting by in a profession.


(image licensed by creative common)

When you get to know an underlying protocol, you will be able to figure out easily their weaknesses and strength and be able to make the appropriate decision on when to use this. Protocols also tend to last longer than just mere frameworks.The coolest thing about mastering protocols is that you get to know how things work. There are wonderful things to be discovered inside multitude of protocols that are available and being used everyday on the Internet.

I wish universities take protocols more seriously than they are now. They should be at least one course on mastering the most popular Internet and web based protocols and open formats.

Anyway, here is a list of protocols that a developer can learn much from.

and there are a whole lot more.

I wish Steve Balmer can repeat his schtick of shouting Developers! Developers! Developers! to Protocols!Protocols!Protocols! It will do inumerable service to wider development community if more of us take mastering protocols seriously.

My favorites .Net development toolkits

Toolbox

 

Infrastructure

Useful web infrastructure (some are free)

  • Rabbit MQ - Rabbit MQ is a scalable message/queue AMQP server with WCF/C# client (free)
  • Twillio - This is an awesome commercial programmable VOIP infrastructure. Free accounts available (commercial)
  • ejabberd - This is one really scalable jabber/XMPP server (free)
  • fyiReporting - This is a free reporting tools for .Net based on Report Definition Langauge (RDL) (free)
  • Dotnet OpenID - C# library for OpenID authentication (free)
  • Tweetsharp - An excellent library for Tweeter API (free)
  • XML-RPC.Net - This is *the* library to make XML-RPC calls (free)
  • Jabber-net - This is the only client library for Jabber/XMPP protocol
  • Mono RelaxNG Validator - This is the most viable RelaxNG validator reader for .Net (free)
  • Quartz. Net - Enterprise job scheduler for .Net (free)
  • Topshelf - Windows service application framework (free)
  • Facebook Developer Toolkit - If you want to develop a Facebook App on .Net, use this (free)
  • Gitsharp - Library for Git version control (free)
  • SharpSVN - A library for Subversion Client API (free)
  • Math.NET - A mathematical open source (MIT/X11, LGPL & GPL) library written in C#/.Net, aiming to provide a self contained clean framework for symbolic algebraic and numerical / scientific computations. (free)
  • Linq to Twitter - Linq to Twitter
  • Sharp SSH - SSH Implementation in C#

Workflow

Workflow system you can use for your applications

  • Simple State Machine - his is a powerful and simple open source workflow system driven by Boo DSL (free)
  • Stateless - State machine framework for C#

Open Source Web Application

Useful open source web application written using .Net technologies

  • Simple Kanban - This is a simple javascript based tool to create your kanban board based on a single html file

Design Tools

Free tools to help you during design

  • Balsamiq - Bar none the most developer friendly UI sketch tools available (commercial)
  • yUML - Produce beautiful UML diagram fast (free)
  • Web Sequence Diagrams - Draw UML web sequence diagram quickly (free)
  • Spec Explorer - An awesome model based testing tool from Microsoft Research

RDF

RDF Libraries

    Scripting

    Scripting languages for .Net

    • Iron Python - A fast implementationo of Python language on DLR (free)
    • Iron Ruby - A fast implementation of Ruby language on .Net (free)
    • RemObjects ECMAScript - A DLR based implementation of JavaScript language (free)
    • LuaSharp - Use Lua language on .Net (free)
    • Iron Scheme - a DLR based implementation of Scheme language (free)
    • Boo - It's not exactly a scripting language, but an awesome language nevertheless (free)

    Serializers

    Libraries to serialize your data to open format

    • Json.NET - An excellent JSON serializer (free)
    • Yaxlib - If you find the default .Net or WCF XML Serializers too retarded for you, check this awesome library (free)
    • Yaml Serializer - A YAML 1.2 serializer

    Database

    Libraries to connect to relational or nosql database

    • System.Data.SQLite - This is the one library to use to connect to SQLite database (free)
    • Firebird .Net Data Provider - Firebird is an awesome open source database. Use this library to connect to it from .Net (free)
    • Divan - This is a c# library for CouchDB
    • Manage ESENT - Powerful and fast built in database in Windows

    Service Bus

    .Net based service bus for your enterprise application

    • nservicebus - This is an excellent service bus library (free)
    • masstransit - If nservicebus is not your cup of tea, try this one (free)

    REST Framework

    REST Application Framework

    • Open Rasta - This is a unique open source REST framework for .Net. Highly recommended (free)
    • REST for ASP.Net MVC SDK - REST programming support based on ASP.Net MVC framework (free)
    • RestSharp - this is a new kind of the block (free)
    • Dream - I use it and love it for its simplicity and brilliant async framework (free)

    ORM

    Excellent ORM for your application

    • Subsonic - A productive open source ORM (free)
    • NHibernate - This is the oldest and very popular port of Hibernate ORM (free)
    • LLBLGen Pro - This is the most awesome ORM for .Net available out there (commercial)

    Template Engine

    Text template engine

    • ndjango - a .Net implementation of Django template engine (free)
    • String Template - This is a powerful template engine (free)

    Unit Test

    Unit Test tools

    • NUnit - The oldest .Net unit testing library (free)
    • MbUnit - This unit test is compatible with NUnit attribute but also introduces boatloads of testing features (free)
    • smtp4dev - Dummy SMTP server that sits in the system tray and does not deliver the received messages. (free)
    • Spec Flow - This is a library for BDD (similar to cucumber)
    • mspec - This is yet another BDD framework (similar to specflow)

    Dependency Injection

    DI tools

    • ninject - An easy to use DI tool (free)
    • Structure Map - I know some people that swear by this (free)

    Mocking

    Mocking libraries

    • moq - An easy to use mocking library (free)
    • Rhino.Mocks - One of the most popular mocking library for .Net (free)

    Syndication

    RSS/ATOM libraries

    • Argotic - Supports RSS, ATOM and various syndication format (free)

    Javascript Libraries

    RSS/ATOM libraries

    • wireit - An open source javascript library to create wireable interface (free)
    More Posts