02 Apr 2020 Checklist for a new project
A person list I developed along those years that I try to implement across projects I start or contribute to
29 Mar 2020 Why code instrumentation?
I decided to finally create a category about code instrumentation. Because I am a develop. And I think it matters. It is important to write better code and more reliability application that we can learn from.
Slides, videos and links from a webinar I have with the CNCF about kubrenetes, profefe, golang and pprof.
How you can use logging to build assertions when testing. What the popular Golang logging library provided by Uber gives you around unit tests.
Let's try to get virtual! This is the first attempt as CNCF Meetup from Turin to do something online! The series is called Show me your code. Walter dal Mut from Corley will be the guinea pig to test this new format. Live show on YouTube about Kubernetes and how to use shared informer to extend its capabilities in Node.js.
09 Mar 2020 How to test CLI commands made with Go and Cobra
CLI commands are common in Go. Testing them is an effective way to run a big amount of code that is actually very close to the end user. I use Cobra, pflags and Viper and that's what I do when I write unit test for Cobra commands
04 Mar 2020 Smart working does not need to be remote
There is a different between remote work and smart work. You can have both, or just one. It is on you. I prefer both at the moment!
25 Feb 2020 The awesomeness of the httptest package in Go
One of the reasons why testing in Go is friendly is driven by the fact that the core team already provides useful testing package as part of the stdlib that you can use, as they do to test packages that depend on them. This article explains how to use the httptest package to mock HTTP servers and to test sdks that use the http.Client.
09 Feb 2020 Golang MockMania InfluxDB Client v2
Kube-Profefe is an open source project that acts like a bridge between Kubernetes and Profefe. It helps you to implement continuous profiling for Go applications running in Kubernetes.
23 Jan 2020 Make boring tasks enjoyable with go and colly
Recently I had the idea to update the conference page on my website with the end goal to make it a bit more structured. Where structured means a bit more reusable compared with the static HTML table I used to have. I mixed a bit of hacky Go, colly for scraping and that's who I did it
Kubectl plugins are extremely useful to provide a set of friendly utilities to interact with kubernetes in your environment. Krew is a project that helps you managing the plugin lifecycle. I have to add profefe to it and this is what I learned.
10 Jan 2020 Unit test kubernetes client in Go
A flexible an easy to use testing framework makes all the difference. Kubernetes provides a fake client in Go that works like a charm.
03 Jan 2020 Continuous profiling in Go with Profefe
Taking a snapshot at the right time is nearly impossible. A very easy way to fix this issue is to have a continuous profiling infrastructure that gives you enough confidence of having a profile at the time you need it.
30 Dec 2019 Year in review
Summary about 2019, a year in review. There is not much more to say other than that! Happy new year!
18 Dec 2019 Free PDFs about Docker from a Captain
This article contains the ebooks listed in scaledocker.com. That link won't be available forever and I decided to move it here. If you are a beginner and you are happy to read about docker I got you covered. Security? There are 22 pages available for you as well. Enjoy.
05 Dec 2019 Programmatically Kubernetes port forward in Go
Depending on your networking configuration port forwarding will may be the unique way for you to reach pods or services running in Kubernetes. When you develop a CLI integration that has to interact with pods running inside the cluster you can programmatically do a port forwarding in golang.
OpenTelemetry, OpenCensus, OpenTracing, Open your heart
Part of the o11y.guru series this post is an introduction for this side project and it describes the first architecture designed for the website.
07 Nov 2019 o11y.guru the history of the first bug
Part of the o11y.guru series this is about the first bug I discovered with the help of honeycomb and how I had to fix it twice in order to make it to work.
07 Oct 2019 O'Reilly Report Extending Kubernetes
I wrote a report with O'Reilly called: Extending Kubernetes.
07 Oct 2019 kubectl flags in your plugin
Develop cure custom kubectl plugins with friendly flags from the kubectl
18 Sep 2019 Kubernetes is not for operations
Kubernetes it not for operations. It democratize resources and workloads. It can be the solution to bring developers closer to ops. But YAML is not the answer.
13 Sep 2019 Reactive planning and reconciliation in Go
04 Sep 2019 Control Theory is dope
This is an introductive article about control theory applied to microservices and cloud computing. It is a very high level overview about control theory driven by what I loved most about it.
26 Aug 2019 Hack your Google Calendar with gcalcli
Everybody uses google calendar in a way or another and if you are a Linux with a light desktop manager such as i3 you lack on some commodities like reminders and notifications for your events. I find gcalcli a very good solution for my pain.
30 Jul 2019 I am in love with language servers
Language Servers are a nice way to reuse common features required by editors such as auto complete, formatting, go to definition. This article is a an open letter to share my love for this project with everybody
05 Jul 2019 When do you need a Site Reliability Engineer?
I read everyday more job description looking for SRE. In the meantime I hear and live the frustration about who does not understand what SRE means and hires somebody that won't fit.
27 May 2019 Test in production behind slogans
How fast we are capable of instrumenting an application decrease the out of time requires to understand and fix a bug.
How fast we are capable of instrumenting an application decrease the out of time requires to understand and fix a bug.
23 May 2019 After two years at InfluxData
Two years at InfluxData. Feeling, sensations, pain point, what I have learned.
19 Apr 2019 Workshop Design
I recently developed a workshop about application instrumentation. I ran it at the CloudConf in Turin. I developed it in open source and I thought it was a nice idea to share more about why I did it and how.
28 Feb 2019 Observability is for troubleshooting
The difference between monitoring and observability is the fact that observability is for troubleshooting. And you troubleshoot in any environment not only in production. This article contains how I do observability in one of my application in Go.
21 Feb 2019 From sequential to parallel with Go
From a sequence of action to parallelization in Go. Using channels and wait groups from the sync package.
14 Feb 2019 Short TTL vs Long TTL infrastructure resource
I called this framework "short vs long ttl". GitOps, Infrastructure as code are an hot topic today where the infrastructure is more dynamic and YAML doesn't look like a great solution anymore. In this article I explain a framework I am trying to use to understand when a resource is good to be managed in the old way or not.
07 Feb 2019 Extend Kubernetes via a Shared Informer
Kubernetes is designed to be extended. There a lot of way to do it via Custom Resource Definition for example. Kubernetes is an event-based architecture and you can use a primitive called Shared Informer to listen on the events triggered by k8s itself.
22 Jan 2019 Serverless means extendibility
Looking at the GitHub Actions design and connecting the docs I think I got why serverless is useful. It is a great mechanism to extend platform and SaaS.
22 Jan 2019 GitHub actions to deliver on kubernetes
GitHub recently released a new feature called GitHub Actions. They are a serverless approach to allow developers to run their own code based on what happens to a particular repository. They are amazing for continuous integration and delivery. I used them to deploy and validate kubernetes code.
15 Jan 2019 Why I speak at conferences
I am over 50 talks! To celebrate this small, personal achievement I decided to write a post about why I speak at conferences even if I am not an evangelist or a proper DevRel.
Provisioning the environment for integration tests is not easy. You need a flexible strategy to build isolated environment per test and to inject the data you need to verify your assertions. I have ported a popular library from Java to Golang called testcontainers. It wraps the Docker API in order to provide a simple test friendly library that you can use to run containers in test cases.
31 Dec 2018 Infrastructure as (real) code
Infrastructure as code today is wrong. Tools like Chef, Helm, Salt, Ansible uses a template engine to make YAML or JSON way to smarter, but comparing this solution with a proper coding language you always miss something. GitOps forces you to stick your infrastructure code in a git repository this is good. But infrastructure as code is way more.
28 Nov 2018 You need an high cardinality database
Monitoring and observability in a dynamic environment on Cloud or Kubernetes is a new challange we are facing and I think the tool that plays a big role is an high cardinality database.
28 Nov 2018 Reactive planning is a cloud native pattern
I discovered how a reactive plan works recently during a major refactoring for a custom orchestrator that we write at InfluxData to serve our SaaS offer. In this article I will explain why I think reactive planning is perfect to build cloud native application like container orchestrators and provisioning tools.
10 Nov 2018 You will pay the price of a poor design
I read the book Philosophy Software Design from John Ousterhout. It opens my eyes giving me more confidence about how to explain and apply solid design concept in software.
23 Aug 2018 Chaos Engineering
I took part at a panel at the Jazoon conference in Switzerland called Chaos Engineering. Where I had a change to learn about techniques and practices around this topic that even if I new about it I never had the chance to put my head on it. In this article I am summarizing my ideas and what I get mainly around the definition of Chaos Enginnering.
This post explain my point of view around prometheus exposition format and it summarise the next step with OpenMetrics behing supported by CNCF and other big companies.
11 Aug 2018 Apps I used during my nomad working
When I travel for conferences or now that I work in remote and I am a bit more like a nomad I discovered and learned some good apps that helps me to plan and to combine better work and travel. Some of them are WorkFrom, oBike, Yep, Adobe Scan. let me know yours.
06 Jul 2018 FAQ: Distributed tracing
Tracing is a well known concept in programming but distributed tracing is a revisitation to adapt the concept for a distributed system. This article is an FAQ where I answer common questions I received or I saw around the net about monitoring and distributed tracing.
18 Jun 2018 Logs, metrics and traces are equally useless
The key monitoring a distributed system is not logs, metrics or traces but how you are able to aggregate them. You can not observe and monitor a complex system looking at single signals.
Designing an architecture the network should be a top priority because it is very hard to change moving forward. Even in a cloud environment running on Kubernetes the situation doesn't change. Security and networking are hard pattern hard to inject in old projects. In this talk I will share a practical idea about how to start in the best way with OpenVPN and private DNS in a Kubernetes cluster in order to build your own intranet.
18 May 2018 Server time vs Response time
How do you dimension an infrastructure? How can you calculate container limits or how many nodes your application requires to support a specific load? Response time and server time are two key measurements to monitor saturation.
25 Apr 2018 Go how to cleanup HTTP request terminated.
Cleaning up HTTP request, the most expensive one can be a huge performance improvement for your application. This short article shows how to handle HTTP request termination in Go.
17 Apr 2018 Go testing tricks
This post contains some feedback about how to write tests in Go.
09 Apr 2018 The Go awesomeness
After 1 year writing go every day at work this is why I like to work with it.
04 Apr 2018 Observability according to me
Prometheus, InfluxDB, TimescaleDB, Cassandra and all the time series databases that show up every week is a clear sign that now we need more than just a way to store metrics. I think is now clear that collecting more metrics is the point. More data is not directly related to a deeper understanding of our system.
29 Mar 2018 I don't give a shit about testing
This is all about how I approach testing in development. TDD, DDD, unit test, integration test. It should make my development faster and my code easy to maintain. We have a lot of different techniques because we need to be good on picking the right one.
27 Mar 2018 Review book Database Reliability Engineer
Review Book Database Reliability Engineer. Author Laine Campbell and Chairty Major. Published by O'Reilly
21 Mar 2018 How to use a Forwarding Proxy with golang
Cloud, Docker, Kubernetes make your environment extremely dynamic, it has a lot of advantages but it adds another layer of complexity. This article is about forward proxy and golang. How to configure your http Client to use an http, https forward proxy for your golang application to increase security, scalability and to have a set of public ips for outbound traffic.
17 Mar 2018 The abstract manifesto
Often looking at the code I spot a lot of places where it looks too complicated. Disappointment is the feeling that I get reading classes with weird names or chain of abstractions or interfaces used only one time. Abstraction is often the reason for all my sadness.
15 Mar 2018 Review book Site Reliability Engineering
A review about Site Reliability Engineering a book published by O'Reilly about Google and it's massive scale from the point of view of the engineers that made that scale possible. Distributed system, microservices and data driven development.
Distributed tracing is a fast growing concept. We increased the distributions for our applications and the consequence is a different complexity to monitor and understand what is going on across regions and applications (microservices). With this article I share something about what tracing is and my experience with opentracing and opencensus.
09 Feb 2018 The right balance
My daily job as a developer is to find the right balance about everything. I would like to share what I think about this topic because the decisions that you take writing a system are the result of the software itself. So you should care about them.
19 Dec 2017 Kubernetes up and running
Kubernetes up and running review.
17 Dec 2017 Desk setup
It is not a couple of months after i left CurrencyFair to start working at InfluxData. A lot of new things but working from home for a US based company is very hard. Dealing with a such big timezone requires a big effort. But I am very excited about how I am feeling working from home. That's why I decided to share my current office setup. Desktop, Zendbook and a lot of Ikea's things!
20 Oct 2017 From Docker to Moby
Docker announced during DockerCon a new project called Moby. Moby will be the new home for Docker and all the other open source projects like containerd, linuxkit, vpnkit and so on. Moby is the glue for all that open source code. It will look as an entire platform to ship, build and run containers at scale.
10 Oct 2017 Git git git, but better
Doesn't matter for how much time you are using git or any version control system, you always have something to learn abut them. Not about the actual interface but about the right mindset.
Orbiter is a project written in go. It is an autoscaler for Docker containers. In particular it works with Docker Swarm. It provides autoscaling capabilities for your services.
03 Aug 2017 Asus universal dock station driver
Every developer loves to speak about its setup. I am here to share my trouble with my new laptop. Asus Zenbook 3.
05 Jun 2017 CNCF Italy, first event about opentracing
CNCF is a branch of The Linux Foundation focused on Cloud Computing and modern scalable architectures. it's supporting tools like Kubernetes, Prometheus, containerd and so on. If you are using one of them or you are looking to know more about them, this is your meetup. Join us! hashtag CNCFItaly on twitter.
05 Jun 2017 Container security and immutability
Docker, container and immutability. Have an immutable system has advantages not only from deploy, release and scalability point of view but also from security side. Deploy and build a new release quickly and high frequency improve the way you trust your provisioning system. Have the old environment still running and ready to be rolled back is another good point.
22 Apr 2017 Orbiter an OSS Docker Swarm Autoscaler
Orbiter is an open source project design to become a cross provider autoscaler. At the moment it works like Zero Configuration Autoscaler for Docker Swarm. It also has a basic implementation to autoscale Digitalocean. This project is designed with InfluxData a company that provides OSS solution like InfluxDB, Kapacitor and Telegraf. We are going to use all this tools to create an autoscaling policy for your Docker Swarm services.
18 Apr 2017 LinuxKit operating system built for container
LinuxKit is a new tool presented during the DockerCon 2017 built by Docker to manage cross architecture and cross kernel testing. LinuxKit is a secure, portable and lean operating system built for containers. It supports different hypervisor as MacOS hyper or QEMU to run testsuite on different architectures. In this article I am showing you some basic concept above this tool. How it works and why it can be useful.
12 Mar 2017 Containers why we are here
Cloud computing, containers, devops, everything is moving so fast that sometime for big companies or CTO is very hard keep track of everything. What it's just a new trend and what I really need. This post contains my options and a bit of history about docker, cloud computing, aws and containers.
28 Dec 2016 About your images, security tips
Everything unnecessary in your system could be a very stupid vulnerability. We already spoke about this idea in the capability chapter and the same rule exists when we build an image. Having tiny images with only what our application needs to run is not just a goal in terms of distribution but also in terms of cost of maintenance and security.
Build and Run containers is important but ship them out of your laptop is the best part! A Registry is used to store and manage your images and all your layers. You can use a storage to upload and download them across your servers and to share them with your colleagues.
Bad and good practice when you setup a continuous integration job. Silent checks are not a good practice but analyze your code is the perfect way to understand how your codebase is evolving.
15 Nov 2016 Docker Bench Security
Container security is a hot topic because today containers are everywhere also in production. It means that we need to trust this technology and start to think about best practices and tools to make our container environment safe.
10 Nov 2016 Chef Server startup notes
This tutorial explain how to setup a chef server on digitalocean from zero. It also shows how to use it to make a provisioning of one Chef Client. Chef is one of the most used provisioning tool. DevOps tool to apply infrastructure as code.
25 Aug 2016 Docker The fundamentals
Docker The fundamental is the second chapter of my book Scale Docker. Drive your boat like a captain. I decided to share free the second chapter of the book. It covers getting started with Docker. It's a good tutorial for people that are no idea about how container means and how docker works.
25 Aug 2016 Be smart like your healthcheck
In a distributed system environment has a simple way to know the status of your server help you do understand if it's ready to go in production. HealthCheck is simple and common but design a good one can help you do avoid strange behaviors. Docker 1.12 supports healthcheck and we in this blog I share an example of implementation.
25 Aug 2016 Build opinions to become wise
As a Software Engineer you need to build your own opinions about different topics like: linux or window? Editor or IDE? Containers or VM? There are different developers just for this reason. Make, share and change your opinions is the best way to grow. Not only like developer but also like human.
Docker 1.12 contains a lot of news about orchestration and production. During August Docker Meetup in Dublin I presented with a demo a set of new features around this new release.
14 Aug 2016 “Microservices and common parts"
When you think about microservices and distributed system there are a lot of parts that usually all your services require. Logging, monitoring, testing, distribution. Manage them in the best way it's one of the reason of success for your distributed system. In this article I shared few of this parts with some feedback to design them in a good way.
12 Jul 2016 What Distributed System means
I will speak about service discovery, micro services, container, virtual machines, schedulers, cloud, scalability and latency I hope to have, at the end of this experience a good number of posts in order to share what I know and how I work and approach this kind of challenges.
02 Jul 2016 Symfony and InfluxDB to monitor PHP application
How monitoring your Symfony and PHP applications with InfluxDB.
20 Jun 2016 Docker 1.12 orchestration built-in
Docker 1.12 adds different new features around orchestration, scaling and deployment, in this article I am happy to share some tests I did with this version
24 Apr 2016 A little bit of refactoring
Strategy to refactoring your code. Tricks about performance from PHPKonf Istanbul Conference.
A little overview about Jenkins 2 but the main topic of the article is about how run docker inside docker to start a continuous integration system inside a container
25 Mar 2016 Happy docker's birthday and thanks
Just a post to say thanks docker for your awesome community and happy birthday!
21 Feb 2016 Some days of work vs Jenkins CI
I love Jenkins CI is a beautiful and stable project to run job and manage continuous integration and deploy pipeline, few days ago I worked to improve the delivery pipeline in CurrencyFair and I started to do some thought about this topic, here my internal battle vs Jenkins CI
21 Feb 2016 ChatOps create your IRC bot in Go
ChatOps is a strong topic it is growing day by day because now with the IaaS are allowed a new way to manage your infrastacture provide for you an API layer. You can implement it to create your automation layer. A pretty bot is a good assistence
18 Feb 2016 InfluxDB PHP 1.3.0 is ready to go
InfluxDB is a time series database, it helps us to manage matrics, point and offert a stack of tools to collect and see this type of data. I am a maintainer of InfluxDB PHP integration. In this past I describe the news provided by new relesae 1.3.0
14 Dec 2015 Swarm scales docker for free
Docker is an awesome tool to manage your container. Swarm helps you to scale your containers on more servers.
14 Dec 2015 Docker and wordpress for a better world
Docker and wordpress to guarantee scalability, flexibilty and isolation. A lot of webagencies install all wordpress in the same server but how can they manage a disaster? AWS with Elastic Container Service could be a more professional solution.
01 Nov 2015 FastEventManager, only an event manager
FastEventManager is a PHP library designed to be a smart and light event manager. You can use it in your applications or as a base component for your framework. It adds capabilities around events as attach and triggering of events.
27 Oct 2015 Penny PHP framework made of components
Penny a PHP framework made of components, write your microframework made of symfony, zend framework and other components.
15 Sep 2015 vim composer 0.3.0 is ready
vim-composer is a plugin to manage integration between composer and vim
Environment are ephemeral. They come and go really quickly based on needs. AWS delivers a service called CloudFormation that allows you to easy describe via JSON or YALM specification a lot of AWS resources like EC2, Route53 hosted zone and domains, RDS, VPC, subnet and almost everything you normally do via console. This is infrastructure as code applied to AWS resource allows you to version and push on git entire AWS environment. You can replicate it over and over.
21 May 2015 Build your Zend Framework Console Application
ZF Console is a component written by zf-campus and Apigility organization that help you to build console application using different Zend Framework components
Test your Symfony Controller with PhpUnit. You expect that if one parameter is true your action get a service by Dependence Injcation and use it!
21 Feb 2015 The price of modularity
Modularity is not only a beautiful word, It has roles and it is a methodology that helps you to keep your project easy to understand. Modularity is a key principle to have an easy on board of new developer in your application because it will look separated and simpler to approach. As a developer you should think about how your scaffolding and your code looks from the outside because in reality you read much more code compared with how code you write.
14 Jan 2015 Zend Framework release 2.3.4
Zend Framework release 2.3.4
06 Jan 2015 Influx DB and PHP implementation
InfluxDB is a popular and open source time series database capable to store millions of points keeping a fast lookup. It supports SQL as query language and it exposes an HTTP API to interact with it. In Corley we wrote a PHP SDK and we released it open source to integrate InfluxDB in your PHP application.
21 Nov 2013 Zf2 Event, base use
Integrate in your application an event system is a good way to decouple and extend your application keeping it clean and clear. An event manager allow you to trigger and catch event based on what your application do. You can for example send different kind of notifications like email, slack message and so on from the same event like 'user registration'. Zend Framework a popular and open source PHP framework has a component called EventManager that helps you do integrate such flow.
21 Nov 2013 Git global gitignore
Git is the most popular code version control. It helps you to manage and share your code, writing a history about the evolution of it over time. It also allow teams to work together managing conflicts and large codebases. Based on languages, projects or operating system there are files that you should never commit such as .DS_Store on mac. You can setup a user level gitignore file to keep them out.
14 Sep 2013 Vagrant Up, slide and first talk
This is my first public talk delivered at the PHP User Group Milan. It is about how to setup a local environment using Vagrant as automation tool. A well setup local environment is a must have to quick develop your application. With Vagrant you make infrastructure as a code to provision your environment. You can push your code inside a version control system such as GIT to share it with your collagues.
22 Aug 2013 Zend Framework 2 - Console usage a speed help
CLI tools are an easy way to interact with an application because you can drive users or even other developers in a well know direction. It is a very good way to decrease possible mistakes. Zend Framework 2 a PHP open source framework has a Console package that helps you to address common issue like argument management, command parsing and to format a colored and nice output.
09 Aug 2013 Generale Jekyll sitemap without plugin
Every site should have its sitemap to tell search engine like Google about news and updates from your site. With a static site generator such as Jekyll you need to generate statically the sitemap too. This article explains how to write a template that generate a sitemap.
Logging is a requirement for every application. In PHP and in every other language. It is the way your application has to tell you what its doing. This article is about how to implement a logger in a Zend Framework 2 application in PHP. This solution achieve simplicity and usability.
22 Jul 2013 Why this blog?
This is my first article on Jekyll. A new static site generator that I have selected as engine for my site to replace wordpress.