Subscribe to Blog

Caleffi.com: why a multinational corporation has chosen Drupal

Caleffi is a company with 1000+ employees, distributed among the main Italian branch and the foreign ones, it sells its products in more than 70 countries and has a gross revenue of 250+ million euros. Let's have a look at how we managed to build their new digital headquaters.

This article paves the way for our "case study" section, where we will show off our most interesting projects, the challenges (both organizational and technical) we face every day: an open window on our world, a place where we share what we do with the fun and passion that characterize our day to day job. The caleffi project Together with H-ART that has curated the strategic analysis, the graphic concept and the intercation design, we developed Caleffi's online presence, we raised our personal bar in terms of Drupal projects. Who is Caleffi? Caleffi is a company with 1000+ employees, distributed among the main Italian headquarters and the foreign branches, it sells its products in more than 70 countries and has a consolidated turnover of 250+ million euros. Let’s have a look at how we managed to build their new digital headquarters. This article paves the way for our “case study” section, where we will show off our most interesting projects, the challenges (both organizational and technical) we face every day: an open window on our world, a place where we share what we do with the fun and passion that characterize our day to day job. Caleffi is a manufacturer of high-quality...

Caleffi.com: why a multinational corporation has chosen Drupal

Caleffi is a company with 1000+ employees, distributed among the main Italian branch and the foreign ones, it sells its products in more than 70 countries and has a gross revenue of 250+ million euros. Let's have a look at how we managed to build their new digital headquaters.

This article paves the way for our "case study" section, where we will show off our most interesting projects, the challenges (both organizational and technical) we face every day: an open window on our world, a place where we share what we do with the fun and passion that characterize our day to day job. The caleffi project Together with H-ART that has curated the strategic analysis, the graphic concept and the intercation design, we developed Caleffi's online presence, we raised our personal bar in terms of Drupal projects. Who is Caleffi? Caleffi is a company with 1000+ employees, distributed among the main Italian headquarters and the foreign branches, it sells its products in more than 70 countries and has a consolidated turnover of 250+ million euros. Let’s have a look at how we managed to build their new digital headquarters. This article paves the way for our “case study” section, where we will show off our most interesting projects, the challenges (both organizational and technical) we face every day: an open window on our world, a place where we share what we do with the fun and passion that characterize our day to day job. Caleffi is a manufacturer of high-quality...

Multiple SSH proxying in Drush and Capistrano

TL;DR in this article I show how to use SSH's ProxyCommand option in Drush 's aliases and in Capistrano 's host options in order to easily access hosts that are NAT-ed (multiple times). What are Drush and Capistrano? At Twinbit we use a customized version of Capistrano (V2) in order to deploy our projects. Furthermore, when the project is based on Drupal we also leverage the power of Drush . Drush is a very useful commandline tool that can operate on different Drupal installations. The operations that Drush can do are many and varied, and 90% of the time those operations are run at development time against your local Drupal installation, but sometimes it's useful to easily leverage Drush's power on another (remote) installation, be it another dev environment, staging or production. Drush lets you do this by using the concept of aliases. Simply stated, drush aliases are collection of options for a (possibly remote) Drupal installation; some of these options let you specify how exactly the host should be reached using SSH. You can get all the information you need regarding aliases running drush aliases docs-aliases ; from there you can see that drush is very customizable, to the...

Multiple SSH proxying in Drush and Capistrano

TL;DR in this article I show how to use SSH's ProxyCommand option in Drush 's aliases and in Capistrano 's host options in order to easily access hosts that are NAT-ed (multiple times). What are Drush and Capistrano? At Twinbit we use a customized version of Capistrano (V2) in order to deploy our projects. Furthermore, when the project is based on Drupal we also leverage the power of Drush . Drush is a very useful commandline tool that can operate on different Drupal installations. The operations that Drush can do are many and varied, and 90% of the time those operations are run at development time against your local Drupal installation, but sometimes it's useful to easily leverage Drush's power on another (remote) installation, be it another dev environment, staging or production. Drush lets you do this by using the concept of aliases. Simply stated, drush aliases are collection of options for a (possibly remote) Drupal installation; some of these options let you specify how exactly the host should be reached using SSH. You can get all the information you need regarding aliases running drush aliases docs-aliases ; from there you can see that drush is very customizable, to the...

Storing sensitive data in a git repository using git-crypt

TL;DR in this article I show how to use git crypt to store sensitive data in a git repo. I describe the steps using the context of my dotfiles repository but the same thing can be done to store any other kind of sensitive data inside any other git repository. The context In my previous article I showed how to use a git repository to store your dotfiles. Someone in the comments pointed out the fact that you should pay attention not to commit sensitive data inside your dotfiles repo. Indeed, dotfiles usually end up containing several pieces of sensitive data related to your company or your clients. Examples of this are ssh private keys , aws certificates , api credentials , ... The list goes on, inside your personal dotfiles repo you may also want to store personal data like your password wallet data. In this article I will describe how to store sensitive data in your dotfiles git repo, but this is just an example, you can use the approach outlined here to store any other kind of sensitive data inside any other git repository. The way I solved this issue in the past was to use another "private" repository, nested inside the main one as a submodule. As you can see from this old blob...

Storing sensitive data in a git repository using git-crypt

TL;DR in this article I show how to use git crypt to store sensitive data in a git repo. I describe the steps using the context of my dotfiles repository but the same thing can be done to store any other kind of sensitive data inside any other git repository. The context In my previous article I showed how to use a git repository to store your dotfiles. Someone in the comments pointed out the fact that you should pay attention not to commit sensitive data inside your dotfiles repo. Indeed, dotfiles usually end up containing several pieces of sensitive data related to your company or your clients. Examples of this are ssh private keys , aws certificates , api credentials , ... The list goes on, inside your personal dotfiles repo you may also want to store personal data like your password wallet data. In this article I will describe how to store sensitive data in your dotfiles git repo, but this is just an example, you can use the approach outlined here to store any other kind of sensitive data inside any other git repository. The way I solved this issue in the past was to use another "private" repository, nested inside the main one as a submodule. As you can see from this old blob...

Capacity planning for startups

If you ever heard questions like: "we have a new customer asking for a project, when can we start implementing?" and you started worrying about the answer, this article might be useful! I'll introduce some nice planning tools and a simple spreadsheet-based approach to team capacity planning.

First of all I must admit I am a management novice, I am a technician! But if you ever heard questions like the following, this article might be useful: “uhh! We have a new customer asking for a project, when can we start implementing?” ( maybe without "uhh" :) “what if I go on holiday the second week of next month?” “could we postpone the frontend implementation by two weeks?” Oh great! At this point I opened some gantt charts, spreadsheet files and Redmine, sketched some drawings on paper, polished the crystal ball, trying to figure out what would be if.. This has been working so far, but now the team is growing and projects are getting more and more complex. I definitely needed a better way to estimate the resources in a simple way. Gantt charts are very useful but they gave me a view on project based activities and not on team load; even Redmine is a great tool but very task oriented as well. Spreadsheets are easy to use but I could not find a good way to clearly represent the information I needed. I started to search on internet for tools and models to adopt: there is plenty of them! I subscribed to a lot of them, watched tenths of video tutorials. But every time there was a...

Capacity planning for startups

If you ever heard questions like: "we have a new customer asking for a project, when can we start implementing?" and you started worrying about the answer, this article might be useful! I'll introduce some nice planning tools and a simple spreadsheet-based approach to team capacity planning.

First of all I must admit I am a management novice, I am a technician! But if you ever heard questions like the following, this article might be useful: “uhh! We have a new customer asking for a project, when can we start implementing?” ( maybe without "uhh" :) “what if I go on holiday the second week of next month?” “could we postpone the frontend implementation by two weeks?” Oh great! At this point I opened some gantt charts, spreadsheet files and Redmine, sketched some drawings on paper, polished the crystal ball, trying to figure out what would be if.. This has been working so far, but now the team is growing and projects are getting more and more complex. I definitely needed a better way to estimate the resources in a simple way. Gantt charts are very useful but they gave me a view on project based activities and not on team load; even Redmine is a great tool but very task oriented as well. Spreadsheets are easy to use but I could not find a good way to clearly represent the information I needed. I started to search on internet for tools and models to adopt: there is plenty of them! I subscribed to a lot of them, watched tenths of video tutorials. But every time there was a...

Your dotfiles and you

TL;DR this is an introductory article describing what dotfiles are and why you should treat them as a life long software project.

What's a dotfile anyway? Using the words of Zach Holman , "Dotfiles" are the funky little files in your *nix-based home directory that allow you to customize your nerdery: change how your prompt looks, set up your $PATH, adjust settings for Ruby's IRB, completely change everything about Vim, and about a billion and a half other things. They're fun. We're usually talking about files like .bashrc , .zshrc , .gitconfig , .vimrc and the .vim/ directory, .inputrc , .ssh/config , .tmux.conf , ... but really every configuration file that is being read during initialization is a dotfile (also called rc files). Sublime Text has its set of dotfiles, for example. Ok, so what? The assumption that I'm making in this article is that there is value in editing your dotfiles, altering the default behaviour of the programs you use in your day to day basis so that you can be more productive. After all if you are reading this article you might very well be a developer or a technology professional of some kind, and what we do on a daily basis is providing value by automating things, streamlining processes, making things more efficient. So customizing your dotfiles really is applying to your...

Your dotfiles and you

TL;DR this is an introductory article describing what dotfiles are and why you should treat them as a life long software project.

What's a dotfile anyway? Using the words of Zach Holman , "Dotfiles" are the funky little files in your *nix-based home directory that allow you to customize your nerdery: change how your prompt looks, set up your $PATH, adjust settings for Ruby's IRB, completely change everything about Vim, and about a billion and a half other things. They're fun. We're usually talking about files like .bashrc , .zshrc , .gitconfig , .vimrc and the .vim/ directory, .inputrc , .ssh/config , .tmux.conf , ... but really every configuration file that is being read during initialization is a dotfile (also called rc files). Sublime Text has its set of dotfiles, for example. Ok, so what? The assumption that I'm making in this article is that there is value in editing your dotfiles, altering the default behaviour of the programs you use in your day to day basis so that you can be more productive. After all if you are reading this article you might very well be a developer or a technology professional of some kind, and what we do on a daily basis is providing value by automating things, streamlining processes, making things more efficient. So customizing your dotfiles really is applying to your...

Drush and PsySH, a Drupal REPL

At Twinbit we rely heavily on Drupal to provide full featured web applications to our clients, and in "Drupal land" there are a handful of tools that you really can't live without if you really want to ship features in a sustainable and efficient way.

TL;DR: I wrote a small integration between Drush and PsySH that implements a REPL for Drupal, it enables you to do something like this: . What's a REPL anyway? Wikipedia states that a REPL is: a simple interactive computer programming environment where the user enters one or more expressions which are then evaluated, and the results displayed. Ruby has (a very good) one , Python has one, PHP really has not. And no, php -a is not a real REPL . Using a REPL is usually faster than setting a breakpoint just after a line whose result you want to check, or var_dump ing its contents; not to mention the fact that if your development tools all live in the shell, it avoids the friction of leaving your terminal to do just that. A REPL, besides improving the "discoverability" of your codebase, enables you to do this interactively, so that if you make a mistake you can immediately correct for it. A REPL for PHP The Opensource community has managed to fill the gap of a missing REPL for PHP, for example in projects like Boris , "A tiny REPL for PHP" . In the past , I and other people already integrated Boris in Drupal to provide a REPL. PsySH is a newer and more featured Opensource project that...

Drush and PsySH, a Drupal REPL

At Twinbit we rely heavily on Drupal to provide full featured web applications to our clients, and in "Drupal land" there are a handful of tools that you really can't live without if you really want to ship features in a sustainable and efficient way.

TL;DR: I wrote a small integration between Drush and PsySH that implements a REPL for Drupal, it enables you to do something like this: . What's a REPL anyway? Wikipedia states that a REPL is: a simple interactive computer programming environment where the user enters one or more expressions which are then evaluated, and the results displayed. Ruby has (a very good) one , Python has one, PHP really has not. And no, php -a is not a real REPL . Using a REPL is usually faster than setting a breakpoint just after a line whose result you want to check, or var_dump ing its contents; not to mention the fact that if your development tools all live in the shell, it avoids the friction of leaving your terminal to do just that. A REPL, besides improving the "discoverability" of your codebase, enables you to do this interactively, so that if you make a mistake you can immediately correct for it. A REPL for PHP The Opensource community has managed to fill the gap of a missing REPL for PHP, for example in projects like Boris , "A tiny REPL for PHP" . In the past , I and other people already integrated Boris in Drupal to provide a REPL. PsySH is a newer and more featured Opensource project that...

Say hello to the new Twinbit website

After a few years of activity, it was about time we had a new digital home to tell about our work, our experiences, our vision. We made a complete rework of technology and image, to build a new way to stay constantly connected with our customers and our partners.

It has been about six years since the release of the first "real" Twinbit website. Since then things have changed and evolved, from a close-knit group of freelance we have become a company, with the same spirit which led us to have our say on the Italian and European market . During these years we faced many challenges, and like any good team we had the strength and the joy of winning and the courage to lose and improve, the tenacity to build our team up, invest in new projects and events. We had the honor of helping large companies and agencies to propose digital solutions for their business, using the best of open source technologies on the market today. Last but not least: we invested in the technology that most of all we love : Drupal . CMS is now a fundamental component of many businesses and organizations: having a flexible and powerful tool is the key to gain a successful online presence . With the exponential growth of social media, and the multitude of devices connected to the internet (just think about the phenomenon of "wearable" devices which is strongly growing), companies no longer need just a "website" or a "web application", they need a tool that can rule their...

Say hello to the new Twinbit website

After a few years of activity, it was about time we had a new digital home to tell about our work, our experiences, our vision. We made a complete rework of technology and image, to build a new way to stay constantly connected with our customers and our partners.

It has been about six years since the release of the first "real" Twinbit website. Since then things have changed and evolved, from a close-knit group of freelance we have become a company, with the same spirit which led us to have our say on the Italian and European market . During these years we faced many challenges, and like any good team we had the strength and the joy of winning and the courage to lose and improve, the tenacity to build our team up, invest in new projects and events. We had the honor of helping large companies and agencies to propose digital solutions for their business, using the best of open source technologies on the market today. Last but not least: we invested in the technology that most of all we love : Drupal . CMS is now a fundamental component of many businesses and organizations: having a flexible and powerful tool is the key to gain a successful online presence . With the exponential growth of social media, and the multitude of devices connected to the internet (just think about the phenomenon of "wearable" devices which is strongly growing), companies no longer need just a "website" or a "web application", they need a tool that can rule their...