About

Something about me

Hello and welcome!

Many thanks for taking the time to visit my GitHub page, my name is Daniele Catanesi I’m an IT Industry veteran with more than 20 years’ experience in various fields of the IT world spanning from IT Infrastructure, Network Engineering and Training as I used to work as Senior Infrastructure Trainer for a large training institution in Italy.

I used to work as a Messaging Specialist but nowadays I spend my time designing automation frameworks and writing code to automate various business processes.

I guess somebody would use the word DevOps but I still prefer to consider me an Infrastructure Engineer doing lot of coding.

If you’re interested in the full story feel free to read below.


The beginning

I started my career as a Windows Systems Administrator and later specialized in messaging systems where I oversaw messaging systems based on Microsoft Exchange for multiple enterprise customers.

In my role as Messaging Engineer I was in contact with a multitude of technologies spanning from Storage to Networking and *nix based systems that I was mainly using to maintain custom anti-spam rulesets and enforce messaging hygiene.

I enjoyed so much working with *nix that it eventually turned it from a passion to my full-time job.

The dark side

I switched sides when I joined the oldest IT Company in the world, hint it has to do with the blue color, as Linux Systems Engineer dealing with Mail Systems, High Availability and Automation (mainly via Bash, Python and Puppet which at the time was an emerging technology).

During my years serving as Linux Engineer I learned a lot about writing reusable code and, as a colleague called it, the tool mindset.

Try not to write code that will serve a single purpose but write code that can be re-used multiple times. Your goal is writing a tool not a bunch of code that can be thrown away after you completed the task at hand.

The end of cscript.exe

When Microsoft started developing Monad that picked up my interest as, like many other engineers, I always thought the lack of a proper scripting language was one of the weakest points for Microsoft Enterprise ecosystem and, as a bonus, it had many similarities with technologies I was already familiar with so I started toying around with it.

I did not know but my skills would have come handy sooner than I thought or planned.

Back to the roots

Shortly after Microsoft released Exchange 2007, the first Exchange version that was heavily relying on PowerShell rather than on GUI tools, I had my chance to put newly acquired skills to good use.

As it often happens in life things abruptly changed, the project I was working on came to an unexpected end and my role was made redundant as the bulk of my work was bound to that specific solution.

One day a colleague from another team told me they were facing a shortage in resources with skills in the Messaging and Exchange area and were desperate to find somebody to complete a project, while I was not planning to go back to the Microsoft world I thought this could give me some time to work on something rather sitting idle with little in my hands. That’s how all is started… again!

I mentioned my past as Exchange Engineer and messaging skills and the same afternoon I spoke to her manager together with the project Architect who agreed to immediately make me part of the team.

Being completely honest, after a lot of time spent into an SSH session going back to a world made of GUIs, was familiar and weird at the same time but allowed me to further sharpen my PowerShell skills and see how the Microsoft world has evolved during my absence.

Back ad the time I had to write a lot of custom code to carry on simple tasks like sending an email, as cmdlets like Send-MailMessage were not yet part of PowerShell, but that just made motivated me to learn more and write tools/functions that I felt could be beneficial for other engineers like me. Nowadays most of the functions I wrote have been implemented as native cmdlet with better performances and functionality but still there are bits used in production environments like my Microsoft Exchange Nagios Monitoring plugin.

Like all good things even this project came to an end but I received an unexpected offer to remain in the team as an Advisory Engineer helping with Automation and Messaging projects.

Probably I gave this away with the title and you have guessed it. I was back to my roots.

PowerShell and GUIs

In my new role as Advisory Engineer I found myself solving a lot of the same challenges I was dealing as a Linux Engineer, processes that were being executed manually, a lot of scheduled tasks that were configured with dependencies I defined as black magic and a lot, and I mean a LOT, of batch files.

I spent most of my first year converting all these batch files to proper PowerShell scripts while discovering the power of workflows, not a new concept in the Linux world, and started to gradually introduce Orchestrator Runbooks that helped removing lot of the black magic I was talking of earlier.

At the same time I, once gain, wore the trainer hat and started showing my colleagues the benefits of automation and started fighting again the …it always worked like this, why change it now?… mindset.

Once all the legacy tasks have been converted I started writing support scripts for my colleagues but there was an issue that seemed all too common, especially among Junior staff, which was adapting to the new paradigm of having a CLI tool carrying on all the heavy lift work, this is when I started poking around with PowerShell and GUIs.

I started converting some of the CLI only tools I wrote to their GUI counterpart while most these tools were internal only I released some of them like my Exchange message tracking GUI which is a replacement for (now defunct) Exchange Log Tracking utility.

The present

Fast forward to date I’m lucky enough to work as a Senior Engineer, guess my role goes by the fancy name DevOps nowadays, developing complex automation frameworks for a large enterprise.

In few words I spend my time writing PowerShell code and not shying away from C# or Python which I deeply love for its simplicity and elegance.

I mainly deal with Active Directory/Azure AD, Identity Management and Office 365 so more often than not you will find example and snippets related, in a way or another, to these technologies.

Why a blog

I used to maintain a full blown WordPress blog where I rambled about various technical arguments but with the passing of years time grew scarce and I closed it down, issue is I do love to write (ok ramble is more appropriate) and to give back to the community so I started this GitHub space where I share code snippets, full scripts or functions hoping to help somebody out there.

ADs on the website

I, like most of you, don’t like invasive AD especially when I’m trying to consume content but nonetheless placed some ADs on the website not because I want to make money from the blog, ultimately I enjoy doing what I do and it does not cost me a dime, but because any payout from ADs will go directly to charity.

The world we live in is plagued with wars, famine and other such amenities and the first victim of all of this are children, for this reason we always try to give as much as we can to charitable associations helping people who most need it.

This is the only reason why I have placed ADs on the website, if you are using an AdBlocker that is fine, I do that myself, but if you take a second to display an AD be sure any earning will go to charity and I want to THANK YOU for that.