Intervista a Francesco Cesarini di Erlang Solutions

A language that doesn’t affect the way you think about programming, is not worth knowing.
Yale Professor Alan Perlis

In occasione dell’Elixir Conf siamo lieti di pubblicare una intervista con Francesco Cesarini.  Nel 2009 abbiamo già recensito Erlang Programming A Concurrent Approach to Software Development” scritto a quattro mani con Simon Thompson. Ora siamo lieti di ospitare una intervista ad ampio respiro con una delle colonne portati di Erlang Solutions.

Continue reading “Intervista a Francesco Cesarini di Erlang Solutions”

C# 4.0 in a Nutshell

My Big Company asked me to develop a small-sized application using C# and WebForms. The Customer was a big Italian Bank, and it asked for that technology: I was chosen because of my Java seniority, but I was zero on .NET knowledge

The “C# 4.0 In a Nutshell” was a real time-saver for my. The 1000-pages book written by Joseph&Ben Albahari will give you a complete look to the C# Technology.

It is not easy to find so well written and complete books: only Herbert Schmidt with the  “C++, The Complete Reference” give me the same joy of reading about twenty years ago.

The books cover all the C# Language in the first part, with a complete description of basic .NET library (ICollection-s, Strings, Date, I/O).

Some very nice insighs are

  • Chapter 12 Disposal and Garbage Collection
  • Chapter 17 Assemblies
  • Chapter 18 Reflection and Metadata
  • Chapter 19 Dynamic Programming

I was a .NET newbie before this book, because I was never able to study Microsoft libraries (even in the nice 90-ies pre-windows95 programming). I only used a bit of Turbo Pascal in the 1992-1993 and some Access 1.0 visual basic macros.

After studing this book I was able to draw the archtecture of my project and develop the entire set of layers (from web forms to database access).

My twelve years java knowledge helped me, but this book really outperformed my needs, giving all I need.

The LINQ topic is very well written, and the authors also provide LINQ PAD, a nice utility to train yourself on the LINQ C# Magic. This is very important because LINQ is unique to C#, and it is very difficult to have previous experience on this topic.

The networking chapter teach you how to use the internal Windows http server (!) you got for free inside the Microsoft operating system.

Because of its weight, the ebook edition is a good shot if you have an iPad or an eBook Reader.

Mercurial: The Definitive Guide

This entry is part 5 of 3 in the series Version Control

Mercurial, The Definitive Guide

I Love Version Control Software, as I like programming languages. So even if “Mercurial, The definitive guide” was published months ago, I asked O’Reilly to review it. The Bryan O’Sullivan book is very compact, and will explain the mercurial world in less than 250 pages.

After years of CVS and Subversion, I feel something was missed: even with subversion, doing merge was hard and time-consuming. Branching and delivery was a pain.Why so?…

The first book chapter does a brief history of the  revision control software, from SCCS (1970) to CVS (end of ’80) and Subversion (2001). Mercurial spring into life in the 2005, the same year Git come to life.

Mercurial is a python based distributed version control. In respect of Git, Mercurial is a lot easier to use, and it is very efficient also under MS-Windows. Because is based only on python (and some native extension if you want better performance), it is very compact.

Chapter 2 & 3 give you a tour of mercurial, from installation to a day by day use.

Chapter 3 is fully devoted to Merging and branching: a task which a distributed version control system make very easy to do. Even Joel Spolsky has just written a blog post about Mercurial, explaining the reason it rocks: distributed version control thinks in term of atomic change set, which give you a better isolation and integration when it comes to merging.

The book shines when it explain the internal organization of Mercurial (Chapter 4, Behind the Scene) and when deals with very advanced stuff like Mercurial Queues (Chapter 12&13, Managing Changes with Mercurial Queues).

Mercurial Queues are important if you plan to integrate third-part software you need to patch. Suppose you need to customize a complex software like a complex html parser or renderer (like Apache Cocoon). It is a bad practice, but sometimes you need it.

Mercurial Queues give you the ability to record your personal patch. But you also need to update Cocoon to the last version, for bug-fixing and performance improvements.

Mercurial Queue is able to de-apply your patch, give you the option of updating Cocoon, and then re-apply your personal customizations.

The entire procedure is quite complex, but the tool give you a clean methodology to deal with the challenge. I think this is the true value of the book, because it is not easy to find such tutorial on the internet, and the author deals a lot with this topic.

The Web interface is described on chapter 6, along with hooks-based customization (chapter 10, Handling Repository Events with Hooks).

Mercurial can be extended via plugins, and its core is conceptually smaller than Git because a lot of extra feature are managed by plugins.

On the opposite, Git has a lot of complex feature on its core.

Finally, chapter 14 deals with extension installation, and we found  a funny misprint on page 222. Under “Cherry-Picking with the transplant Extension”, we read “Need to have a long chat with Brendan about this”.

Conclusion: a nice, compact and proficient book on distributed version control. A must-have if you plan to organize your projects with Mercurial

Other resources

Mercurial Visual Tutorial