<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Daniele Fontani</title>
    <description>The latest articles on DEV Community by Daniele Fontani (@zeppaman).</description>
    <link>https://dev.to/zeppaman</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F329584%2F9bf16ed4-f419-43fc-8e0d-0b59dfe08db6.jpeg</url>
      <title>DEV Community: Daniele Fontani</title>
      <link>https://dev.to/zeppaman</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/zeppaman"/>
    <language>en</language>
    <item>
      <title>How I tried to revolutionize the scripting experience</title>
      <dc:creator>Daniele Fontani</dc:creator>
      <pubDate>Tue, 06 Dec 2022 07:50:22 +0000</pubDate>
      <link>https://dev.to/zeppaman/how-i-tried-to-revolutionize-the-scripting-experience-ojh</link>
      <guid>https://dev.to/zeppaman/how-i-tried-to-revolutionize-the-scripting-experience-ojh</guid>
      <description>&lt;p&gt;In this article, I will introduce the Opensource project Bashy, a tool that enhances the scripting experience by facilitating argument parsing and making it possible to share scripts as every package manager does. In another word, I made work Bash as any modern scripting framework should. This can be a boost for improving productivity and automating recurring tasks for programmers and data scientists.&lt;/p&gt;

&lt;p&gt;I will explain why we need a tool like Bashy, and then show how it can be used with some practical examples. Finally, after we will have discovered how it can save hundreds of hours for developers, I will move into the internal components to explain how it works.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://towardsdatascience.com/better-bash-scripts-ae542fa37bd6?sk=3ac507a5ad1ec3b9beadc4127b779930"&gt;Let’s jump into the article!&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devops</category>
      <category>programming</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Best way for argument parsing in bash</title>
      <dc:creator>Daniele Fontani</dc:creator>
      <pubDate>Fri, 03 Jun 2022 20:14:31 +0000</pubDate>
      <link>https://dev.to/zeppaman/best-way-for-argument-parsing-in-bash-1eio</link>
      <guid>https://dev.to/zeppaman/best-way-for-argument-parsing-in-bash-1eio</guid>
      <description>&lt;p&gt;What is the better solution for input parsing and script management?&lt;/p&gt;

&lt;p&gt;Both of the features are accomplished by modern languages. Just think about it, in node, .net, or PHP, you have a repository of packages and you can download executables that the package manager installs in your local. This way, content can be used to share the programs you have created with others using the public or private repository.&lt;/p&gt;

&lt;p&gt;All those languages offer (directly or using easy-to-integrate libraries) a way to freely build the information about the console commands and the options listing. Moreover, that solution also resolves the argument parsing issue. But what about bash?&lt;/p&gt;

&lt;p&gt;In this article, we will discover Bashy, a tool written in Go that aims to solve all these issues by empowering BASH scripts to parse arguments using declarative manifest and script sharing.&lt;br&gt;
&lt;a href="https://betterprogramming.pub/effective-bash-scripts-108d976026bc?sk=d37b5cfb7891549245375b8964c8fdc6"&gt;Read the article&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Go NoOps with Kubernetes and GitHub</title>
      <dc:creator>Daniele Fontani</dc:creator>
      <pubDate>Thu, 21 Oct 2021 16:58:30 +0000</pubDate>
      <link>https://dev.to/zeppaman/go-noops-with-kubernetes-and-github-226h</link>
      <guid>https://dev.to/zeppaman/go-noops-with-kubernetes-and-github-226h</guid>
      <description>&lt;p&gt;What about implementing a full automated #NoOps solution? I have done this setup in minutes thanks to &lt;strong&gt;kubernetesio&lt;/strong&gt;, &lt;strong&gt;&lt;a href="https://shipa.io/"&gt;Shipa&lt;/a&gt;&lt;/strong&gt; and &lt;strong&gt;github&lt;/strong&gt; actions. &lt;/p&gt;

&lt;p&gt;NoOps trend is now possible thanks to public cloud and services that give us solution that works out of the box. Anyway, many of these services come with some limitations or have costs that explode with resource usage. That’s why a lot of developers still prefer solutions like Kubernetes for keeping control over the application and having full freedom for implementation. Anyway, Kubernetes governance is expensive and we aim to reduce the friction near the application development.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://betterprogramming.pub/how-to-create-a-noops-deployment-with-github-actions-kubernetes-and-shipa-18aab208fe7a?sk=6461b38b64b8d4d495c855d9cfecb53d"&gt;Read the article  to discover how! &lt;/a&gt;&lt;/p&gt;

</description>
      <category>devops</category>
      <category>cloud</category>
      <category>github</category>
      <category>kubernetes</category>
    </item>
    <item>
      <title>TricetAtOps: the new DevOps frontier</title>
      <dc:creator>Daniele Fontani</dc:creator>
      <pubDate>Wed, 15 Sep 2021 15:07:37 +0000</pubDate>
      <link>https://dev.to/zeppaman/tricetatops-the-new-devops-frontier-4oi3</link>
      <guid>https://dev.to/zeppaman/tricetatops-the-new-devops-frontier-4oi3</guid>
      <description>&lt;p&gt;&lt;strong&gt;DevOps&lt;/strong&gt; is always evolving and every day a new trend comes out... Waiting for having &lt;strong&gt;TricerAtOps&lt;/strong&gt; as a skill, I tried to focus on the things that really matter and describe how to go ahead with a DevOps culture that goes beyond the labels.&lt;/p&gt;

&lt;p&gt;Joking aside, we can start talking about DevOps. In this article, I want to explain the most important buzzword and try to find out what is the fundamental lesson to take home. The title and the fun story were just an excuse to start an analysis of the most spread DevOps buzzwords.&lt;br&gt;
PS: you will discover where the terms TricerAtOps come out form.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://betterprogramming.pub/triceratops-why-devops-is-not-only-an-acronym-2177f1cf6bc2"&gt;Link to the full article&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Node.JS DevOps: Simplify Your Life with GitHub Actions</title>
      <dc:creator>Daniele Fontani</dc:creator>
      <pubDate>Wed, 18 Aug 2021 13:51:31 +0000</pubDate>
      <link>https://dev.to/zeppaman/node-js-devops-simplify-your-life-with-github-actions-2o1c</link>
      <guid>https://dev.to/zeppaman/node-js-devops-simplify-your-life-with-github-actions-2o1c</guid>
      <description>&lt;p&gt;n this article, I will share with you the configuration that I have adopted for deploying &lt;a href="https://github.com/zeppaman/mongo-event-sourcing"&gt;MESS (MongoDB Event Sourcing System)&lt;/a&gt;, my first &lt;strong&gt;Node.js&lt;/strong&gt; opensource project. The configuration is a single YAML file that unlocks infinite powers to your GitHub repository.&lt;br&gt;
What I realized here is a simple configuration that satisfies all the basic needs of a nowadays enterprise application:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;automatically version code &lt;/li&gt;
&lt;li&gt;run test on every release &lt;/li&gt;
&lt;li&gt;publish artefact to &lt;strong&gt;NPMJS&lt;/strong&gt; (in case you have a library or you are delivering through NPM)&lt;/li&gt;
&lt;li&gt;publish your docker container ready to go to a container repository&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All these features may seem hard to be reached, but you will discover that will come more or less out of the box using &lt;br&gt;
&lt;strong&gt;GitHub&lt;/strong&gt; actions.&lt;br&gt;
&lt;a href="https://towardsdatascience.com/node-js-devops-github-actions-2a1b2be1741f?sk=cc0e3c8069e2447c975f639ae6e099a6"&gt;Read the full article and learn how :)&lt;/a&gt;&lt;/p&gt;

</description>
      <category>node</category>
      <category>npm</category>
      <category>github</category>
      <category>devops</category>
    </item>
    <item>
      <title>AppOps the new frontier of DevOps</title>
      <dc:creator>Daniele Fontani</dc:creator>
      <pubDate>Wed, 18 Aug 2021 06:48:10 +0000</pubDate>
      <link>https://dev.to/zeppaman/appops-the-new-frontier-of-devops-217l</link>
      <guid>https://dev.to/zeppaman/appops-the-new-frontier-of-devops-217l</guid>
      <description>&lt;p&gt;&lt;em&gt;DevOps&lt;/em&gt; can be evolved to a more App-centric approach. That's what AppOps is and why you should embrace it. Moreover, &lt;em&gt;Kubernetes&lt;/em&gt; is great but we would like to reduce the complexity by introducing a tool that automates the process and make abstraction possible.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;AppOps&lt;/em&gt; leads to an App-centric approach based on automation and cloud tools (like for reducing the &lt;em&gt;Kubernetes&lt;/em&gt; complexity or allowing full serverless solution). What technologies can help with doing that?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://betterprogramming.pub/devops-appops-f096cdbb02ac?sk=54881bda9afd12cf0e92bd9f7bb58350"&gt;My thoughts about why we should focus our #devops process on appdevelopment rather than on technicalities&lt;/a&gt;&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>appops</category>
      <category>devops</category>
      <category>cloud</category>
    </item>
    <item>
      <title>Implement Event Sourcing With MongoDB</title>
      <dc:creator>Daniele Fontani</dc:creator>
      <pubDate>Wed, 18 Aug 2021 06:43:53 +0000</pubDate>
      <link>https://dev.to/zeppaman/implement-event-sourcing-with-mongodb-328f</link>
      <guid>https://dev.to/zeppaman/implement-event-sourcing-with-mongodb-328f</guid>
      <description>&lt;p&gt;The Event Sourcing approach is an emerging pattern for building new architectures based on microservices. The advantages of this approach are too many to be listed, but I will try to share the most important:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;decoupled systems&lt;/li&gt;
&lt;li&gt;real-time changes (in the meaning that I do not have to wait for - a scheduled job that moves data)&lt;/li&gt;
&lt;li&gt;separation of responsabilities&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This approach gained a very huge usage since we moved on to microservices and we need some approach to notify all the architectural parts on data changes.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;It is possible to enable event-sourcing patterns without touching your application codebase?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;My answer is yes, and you will find all the details in this article.&lt;/p&gt;

&lt;p&gt;In this article, we will discover in deep what Event Sourcing is and how to implement it by using MESS, a simple tool that connects directly to MongoDB and reacts to data changes. This approach is very similar to what happens with triggers on traditional RDBMS but asynchronous and with a workload that’s outside the system, so there isn’t any overload of the database.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://levelup.gitconnected.com/implement-event-sourcing-with-mongodb-1fbf2cc0d155?sk=9ecd8e4d797ae30c78f9a4e0d509b0e3"&gt;Read the full tutorial&lt;/a&gt;&lt;/p&gt;

</description>
      <category>mongodb</category>
      <category>eventdriven</category>
      <category>node</category>
      <category>microservices</category>
    </item>
    <item>
      <title>How To Create a Blog With Gatsby</title>
      <dc:creator>Daniele Fontani</dc:creator>
      <pubDate>Thu, 10 Jun 2021 16:45:13 +0000</pubDate>
      <link>https://dev.to/zeppaman/how-to-create-a-blog-with-gatsby-j2o</link>
      <guid>https://dev.to/zeppaman/how-to-create-a-blog-with-gatsby-j2o</guid>
      <description>&lt;p&gt;A headless CMS is an emerging solution for implementing websites. With that said, there is a point where you have to place the “head” (i.e. start rendering data and display it to the user). In most applicative contexts, having a traditional single-page application is enough. So you can implement your Angular or React app, and that’s all.&lt;/p&gt;

&lt;p&gt;In public websites or e-commerce, you also need to have web pages for SEO and indexing purposes. To satisfy this need, tools like Gatsby come to our aid with server-side rendering (SSR). This approach overcomes all the problems of classic websites based on on-demand output computation. Moreover, they work with static generated files, which is very SEO-friendly. Basically, you can write an SPA and generate all the web pages to be consumed as static files. This approach gives the best performance, requires low resources, and allows for a great user experience.&lt;br&gt;
In this article, we will cover the most important principles of headless by implementing a simple blog. &lt;/p&gt;

&lt;p&gt;This example is educational because it covers the most important topics and will let you start to develop a headless solution on your own. This is the roadmap for our journey into the headless world:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Introducing the headless CMS&lt;/li&gt;
&lt;li&gt;Creating the environment&lt;/li&gt;
&lt;li&gt;Installing the blog from a template&lt;/li&gt;
&lt;li&gt;Discovering how the blog works&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://betterprogramming.pub/gatsby-blog-react-d5b0d3a5d83c"&gt;So, let’s start and Read the full article!&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>gatsby</category>
      <category>headless</category>
      <category>react</category>
    </item>
    <item>
      <title>How to Improve Development Experience On Kubernetes</title>
      <dc:creator>Daniele Fontani</dc:creator>
      <pubDate>Thu, 29 Apr 2021 15:48:36 +0000</pubDate>
      <link>https://dev.to/zeppaman/how-to-improve-development-experience-on-kubernetes-g1f</link>
      <guid>https://dev.to/zeppaman/how-to-improve-development-experience-on-kubernetes-g1f</guid>
      <description>&lt;p&gt;The abstraction of containers has been a big step toward removing complexity and reducing friction between developers and the infrastructure. Then, the orchestration of such a container with Kubernetes makes things easy also on the DevOps side.&lt;/p&gt;

&lt;p&gt;Anyway, we are not satisfied with this result. Even we saved a lot of time and improved quality by applying such technologies, we are still wondering if we can save more time and simplify the management part.&lt;/p&gt;

&lt;p&gt;That’s why, nowadays, there are many &lt;strong&gt;Application Development Platforms&lt;/strong&gt; that aims to create a development experience where the only focus is on the application, automating and abstracting all the other part.&lt;/p&gt;

&lt;p&gt;In this article, I will test the &lt;strong&gt;Shipa&lt;/strong&gt; solution, that works on top of Kubernetes for managing application without knowing anything about YAML files, Helm, Docker or any other tools in the market.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://towardsdatascience.com/improve-development-experience-kubernetes-5d16da4105d7?sk=fe497d01bc1165a8cf387c10bce5e2c3"&gt;Read the full article here&lt;/a&gt;&lt;/p&gt;

</description>
      <category>cloud</category>
      <category>kubernetes</category>
      <category>programming</category>
      <category>devops</category>
    </item>
    <item>
      <title>How To Create a Universal Backend With Symfony</title>
      <dc:creator>Daniele Fontani</dc:creator>
      <pubDate>Thu, 29 Apr 2021 15:45:57 +0000</pubDate>
      <link>https://dev.to/zeppaman/how-to-create-a-universal-backend-with-symfony-4pa2</link>
      <guid>https://dev.to/zeppaman/how-to-create-a-universal-backend-with-symfony-4pa2</guid>
      <description>&lt;p&gt;In 2021, there isn’t any more space for reinventing the wheel. &lt;/p&gt;

&lt;p&gt;Development is an art that relies more and more on a pick-and-assemble strategy than developing things from scratch. Following this trend, writing code for just reading and writing data is a mess of a time. That’s probably the reason why &lt;strong&gt;headless CMS solutions&lt;/strong&gt; have been spreading in the last few years and SaaS adoption is the most common way to move to the cloud.&lt;br&gt;
Anyway, we often have to fight against complicated business logic or complex integration, and we would need the flexibility of writing custom code.&lt;/p&gt;

&lt;p&gt;What we will see in this article is how to create a headless CMS using &lt;strong&gt;Symfony&lt;/strong&gt; and &lt;strong&gt;MongoDB&lt;/strong&gt; starting from scratch. The output of this project is a working application that can be installed as a composer package, and you can use it as a base for implementing your applications (yes, applying custom business logic with ease)!&lt;/p&gt;

&lt;p&gt;This is not only an interesting way to implement data services but also a great showcase of the Symfony framework. As I mentioned in my previous article, I completely rewrote an entire headless low-code platform CMS (previously written in two years in .NET) in just two days using Symfony. Yes, two years vs. two days!&lt;br&gt;
In this article, I will show my work and explain how it is possible thanks to the native feature of that framework.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://betterprogramming.pub/graphql-api-symphony-mongodb-c866a79fdf48?sk=3b11f94b8dac7dd5c41c0ed3df2b34be"&gt;You can find a reference to the full source code at the end of this article.&lt;/a&gt;&lt;/p&gt;

</description>
      <category>symfony</category>
      <category>api</category>
      <category>programming</category>
      <category>php</category>
    </item>
    <item>
      <title>How I Wasted Two Years In Opensource Development</title>
      <dc:creator>Daniele Fontani</dc:creator>
      <pubDate>Fri, 09 Apr 2021 08:15:47 +0000</pubDate>
      <link>https://dev.to/zeppaman/how-i-wasted-two-years-in-opensource-development-2ma7</link>
      <guid>https://dev.to/zeppaman/how-i-wasted-two-years-in-opensource-development-2ma7</guid>
      <description>&lt;p&gt;I’m an open-source love. I started developing an open-source side project in 2006 and that was the secret that boosts my career. Thanks to the experiments that I have made during this trip I’m now a better developer and I give back something to the community — almost I hope.&lt;/p&gt;

&lt;p&gt;I wrote about my vision of opensource as a driver for companies and developers growth here but that is another story 😄&lt;/p&gt;

&lt;p&gt;In this article, I want to talk about my experience since 2018 on an open-source low-code platform called RawCms. &lt;/p&gt;

&lt;p&gt;This project failed but let me grow up teaching me things that I couldn't have imagined &lt;strong&gt;when I do the whole project in two days instead of two years just by changing technology.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://towardsdatascience.com/how-i-wasted-two-years-in-opensource-development-9be71491ce62?sk=225ba4fd88e40549e1d47ebc73adf8d0"&gt;Read the full article for discover my failure and what you can learn from it&lt;/a&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>programming</category>
      <category>productivity</category>
      <category>dotnet</category>
    </item>
    <item>
      <title>DNS Blockchain: a Costless Blockchain Database </title>
      <dc:creator>Daniele Fontani</dc:creator>
      <pubDate>Fri, 12 Mar 2021 07:36:25 +0000</pubDate>
      <link>https://dev.to/zeppaman/dns-blockchain-a-costless-blockchain-database-26dc</link>
      <guid>https://dev.to/zeppaman/dns-blockchain-a-costless-blockchain-database-26dc</guid>
      <description>&lt;p&gt;Do you think that hosting a blockchain solution is expensive?&lt;br&gt;
Well, I'm telling you you can do it without spending a cent. &lt;/p&gt;

&lt;p&gt;In this article, I will show how you can create a blockchain-like distributed database using only a DNS service, cryptography and some imagination.&lt;/p&gt;

&lt;p&gt;Don't you believe it?&lt;/p&gt;

&lt;p&gt;The implementation is in plain C# and all the source code is available on Github.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://betterprogramming.pub/free-dns-blockchain-database-c98fce975134?sk=6b92835d9c6a87671575c9f71a41d166"&gt;Read the article for discovered how I did it&lt;/a&gt;&lt;/p&gt;

</description>
      <category>blockchain</category>
      <category>dotnet</category>
      <category>free</category>
      <category>database</category>
    </item>
  </channel>
</rss>
