Author Archives: paulborile

About paulborile

I’m a multi-skilled IT professional with a good all-round supervisory and technical expertise. Extensive, 20+ years of professional experience in software development allowed me to investigate computer science and software engineering inside out. During these years I built up a solid base of design patterns, software architectures and programming languages such as C/C++, Golang, Java, Python, SQL, Assembly (and many others). I worked on mission-critical and multi-channel applications, applying distributed computing, messaging, image/data processing and computer graphics techniques. I faced both architecture design and systems rearchitecting, microservices introduction and technology migration as well as company wide adoption of new technologies/methodologies multiple times. As an entrepreneur I have built and grown teams and development organizations from the ground up (internal/out sourced/at customer site) focusing on software engineering methodologies as well as recruiting, budget/financial control and operations support. I am particularly interested in software testing methodologies, software quality metrics and tools to make software development faster and better. Currently leading the Italian development team for ScientiaMobile Inc, a Reston (US) based startup focused on image optimizing CDN and mobile detection technologies and services. Born in Dearborn Michigan and living in Italy since many years now I speak fluently both English and Italian, studied French and learned some Russian while working for some time for a Olivetti/Aeroflot project.

Adda river hydro power plants

During one of my MTB rides at the Cancano lakes I stumbled into this beatifull dam which is part of the A2A Hydro power of Valtellina : 8 hydro power plants from cancano lakes down to Stazzona near Tirano using water coming from the Adda river and from other 4 different basins :

  • San Giacomo : 10MW
  • Braulio : 19 MW
  • Premadio : 226 MW
  • Grosio : 428 MW
  • Grosotto/Boscaccia : 13 MW
  • Lovero 49 MW
  • Stazzona : 30 MW

Adda river continues is ride down to Po river and in the mean time produces some other Hydro power in 4 hydro power plants that have been sold to EDF :

  • Bertini : 12,5MW
  • Taccani : 11 MW
  • Semenza : 7 MW
  • Esterle : 32 MW

and then into some other small powerplants :

  • Rusca : 7 MW
  • Italgen Vaprio : 21 MW
  • Crespi (Adda Energia) : No data
  • Adda S.Anna : No data
  • Fara : 1 MW
  • Muzza : 2,5 MW
  • Maleo : 4,5 MW
  • Pizzighettone : 3 MW

A total of around 900 MW of clean, renewable, hydroelectric power!

C++

Google C++ style guide : something every C++ coder out there should read or ““Within C++, there is a much smaller and cleaner language struggling to get out.” — Bjarne Stroustrup”

Having over 100 million lines of C++ code, google took the C++ problem (language with so many features, different ways of doing the same things, dangerous constructs, some pointers to the problems with c++ can be found on wikipedia, and here for an authoritative opinion)  seriously and this is what came out.

Some interesting decisions taken :

“We do not use C++ exceptions.” from here

“Avoid defining macros, especially in headers; prefer inline functions, enums, and const variables. Name macros with a project-specific prefix. Do not use macros to define pieces of a C++ API.” from here.

“Avoid complicated template programming” from here

“Within C++, there is a much smaller and cleaner language struggling to get out.” — Bjarne Stroustrup

Microservices technology map

Microservices basic tools/technology quick guide (will always be work in progress)

REST API Server and Windows : ASP.NET Core kestrel, OWIN or plain old IIS + ASP.NET Framework ?

If you are planning to build API and make them available as micro services and your code assets are C#/.NET Framework/Windows then you have some choices :

  1. ASP.NET Core comes with an internal  web server called Kestrel : kestrel claims to be a light and fast web framework which runs ASP.NET Core applications without the need for IIS in front (you might decide that IIS is usefull for other things). Kestrel allows for middleware modules (like IIS ISAPI filters) that allow for adding features to the basic server.
  2. Katana (OWIN Microsoft implementation) is a collection of NuGET packages for building OWIN applications.
  3. Plain old IIS + ASP.NET REST API code

Some good information can be found here from uShip guys
I’m basically writing this for myself as a reminder for the new .NET Core Microsoft environment.

On the importance of having a second head to test code and TDD ( Coders just don’t want to break their code )

Good Coders don’t want to break their code because their code is like a creature and nobody wants to harm a creature. Take a note, this is how it is. Good Coders tests are just ‘combing’ the code they should test. But this creature has bugs, no matter how good the Coder is, so good Coders are bad at writing tests on their own code.

A good test tries to tear code apart, to abuse it doing the nastiest things, at the maximum possible speed, in the worst possible way : this is why you should consider making another set of tests by another coder which has not written the code itself.

But with TDD this is difficult : I like the idea that a Coder writes it’s software use cases before writing the software itself but I’m missing how to include in this process a second head to develop some really nasty tests on that piece of code and I’m not a great fan of pair programming (for many reasons).

So open issue for me here : how to include development by a second head of integration tests.

(In the picture : good coders and good testers 🙂 )