From 3f040d2c8c01c84d5d9634ca498e54d40cb54f8a Mon Sep 17 00:00:00 2001 From: Matteo Garza Date: Fri, 27 Oct 2023 15:58:12 +0200 Subject: [PATCH 1/5] updated icons --- config.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/config.yml b/config.yml index c14549020..beb8f3747 100644 --- a/config.yml +++ b/config.yml @@ -86,22 +86,22 @@ menu: - categories: name: "Categories" url: "/categories/" - identifier: "fa fa-folder-open-o" + identifier: "fa-solid fa-folder-open" weight: 2 - categories: name: "Authors" url: "/authors/" - identifier: "fa fa-pencil" + identifier: "fa-solid fa-pencil" weight: 3 - categories: name: "Careers" url: "/ita/careers/" - identifier: "fa fa-briefcase" + identifier: "fa-solid fa-briefcase" weight: 4 - categories: name: "Who we are" url: "/eng/who-we-are/" - identifier: "fa fa-users" + identifier: "fa-solid fa-users" weight: 5 # Insert your username and the icon will apear on the page as long as From a64ff0aeca3315b0c8b711c721c8ec5575dc244c Mon Sep 17 00:00:00 2001 From: Matteo Garza Date: Thu, 4 Jan 2024 00:53:18 +0100 Subject: [PATCH 2/5] update twitter to x.com --- .../eng/codemotion-milan-2016-in-review.md | 24 +++++++------- ...gitlab-ci-to-k8s-using-docker-in-docker.md | 10 +++--- content/blog/eng/droidcon-it-2016.md | 10 +++--- content/blog/eng/kotlin-intro.md | 2 +- .../looking-back-at-symfony-day-rome-2016.md | 16 +++++----- content/blog/eng/php-day-2016.md | 20 ++++++------ content/blog/eng/php-day-2017.md | 18 +++++------ content/blog/eng/php-day-2020.md | 18 +++++------ content/blog/eng/visual-debt-typehints.md | 4 +-- .../facile-it-devs-codemotion-milan-2015.md | 32 +++++++++---------- .../ita/miniiad-vimercate-2015-reportage.md | 6 ++-- content/blog/ita/php-7-overview.md | 2 +- content/blog/ita/php-day-2015.md | 16 +++++----- content/blog/ita/php-summer-camp-2015.md | 24 +++++++------- themes/hugo-future-imperfect | 2 +- 15 files changed, 102 insertions(+), 102 deletions(-) diff --git a/content/blog/eng/codemotion-milan-2016-in-review.md b/content/blog/eng/codemotion-milan-2016-in-review.md index 074eec2d9..d72fb492e 100644 --- a/content/blog/eng/codemotion-milan-2016-in-review.md +++ b/content/blog/eng/codemotion-milan-2016-in-review.md @@ -23,31 +23,31 @@ This post would be a short recap of some talks in chronological order. The choic # Day 1 ## The new features of PHP 7 - * Enrico Zimuel ([@ezimuel](https://twitter.com/ezimuel)) + * Enrico Zimuel ([@ezimuel](https://x.com/ezimuel)) * 11:30 – 12:10 #programming ([slides](http://zimuel.it/slides/codemotion2016/)) Enrico Zimuel, Software Engineer at [Zend Technologies](http://www.zend.com/), the company behind the PHP engine, talks about some of the new features of PHP 7: the scalar type and return type declarations, the spaceship and null coalescing operators, the anonymous classes, the consistent 64-bit support, etc. Furthermore he explains why PHP 7 is twice as fast compared to the previous version and it has 30% lower memory consumption. ## Kubernetes and lastminute.com: our course towards better scalability and processes - * Michele Orsi ([@micheleorsi](https://twitter.com/micheleorsi)) + * Michele Orsi ([@micheleorsi](https://x.com/micheleorsi)) * 11:30 – 12:10 #devops ([slides](http://www.slideshare.net/micheleorsi/kubernetes-and-lastminutecom-our-course-towards-better-scalability-and-processes)) Lastminute.com recently started a migration from a monolithic app to a microservice approach, leveraging the power of Kubernetes, the open source project lead by Google for container orchestration. This was quite the effort, and it unveiled a great deal of advantages and challenges. ## Continuous budgeting - * Francesco Fullone ([@fullo](https://twitter.com/fullo)) + * Francesco Fullone ([@fullo](https://x.com/fullo)) * 14:10 - 15:50 #inspirational This talk is about being agile in the entrepeneur side of our profession: how to plan and adapt to change when deciding how and how much to spend in our coding ventures; re-evaluating is key, and the only way to success is a delicate balance between maintenance and improvement. ## To ∞ (~65K) and beyond! - * Sebastiano Gottardo ([@rotxed](https://twitter.com/rotxed)) + * Sebastiano Gottardo ([@rotxed](https://x.com/rotxed)) * 16:10 - 16:50 #mobile ([slides](https://speakerdeck.com/dextor/to-65k-and-beyond)) A lot of old -but still widely used- Android devices are natively limited to run apps with less than 65K method references (due to the Dalvik JVM). For many apps this could be a serious problem. During the talk Sebastiano, an Android engineer at Musixmatch, gave a very comprehensive and clear explanation of the problem and went through all the possible solutions showing some really useful tips to deal or better *avoid* it. ## Functional Reactive Programming with Kotlin on Android - * Giorgio Natili ([@giorgionatili](https://twitter.com/giorgionatili)) + * Giorgio Natili ([@giorgionatili](https://x.com/giorgionatili)) * 17:10 - 17:50 #mobile ([slides](https://drive.google.com/file/d/0BxCm4NRlzb3PWjNNaG1KS0Utckk/view)) The title of this talk was very interesting considering the fact that both the functional paradigm and the Kotlin language are used within the Facile.it Android app. But actually I have to say that I found a 40 minutes talk not suitable as a format to address these two large topics together (72 slides!). I would have preferred two separate talks, but it was nevertheless an interesting presentation full of useful tips and advices about Kotlin and FRP. @@ -55,30 +55,30 @@ The title of this talk was very interesting considering the fact that both the f # Day 2 ## Coding Culture - * Sven Peters ([@svenpet](https://twitter.com/svenpet)) + * Sven Peters ([@svenpet](https://x.com/svenpet)) * 10:30 - 11:10 #inspirational ([slides](http://www.slideshare.net/svenpeters/coding-culture)) In his keynote Sven Peters, Evangelist for [Atlassian](https://www.atlassian.com/), explains - in a very geek style - what is *company culture*, referring in particular to his company. He says that when people work in a great coding culture they are motivated and they are mostly very productive, but also they will have more responsibility and investment in the features they are developing. Developers will have more freedom to change their roles and try out new stuff, this is the right way to make better products with happier developers. He concluded his speech with these words: *«Products may change, but never forget values, cultivate your culture!»*. ## MicroMonolith - Top anti-patterns of adopting distributed system - * Michal Franc ([@francmichal](https://twitter.com/francmichal)) + * Michal Franc ([@francmichal](https://x.com/francmichal)) * 12:30 – 13:10 #architectures -In this talk, Michal reports his (and his team) experience in the infamous transistion from a monolithic app to a microservice oriented architecture. Michal works at [@JustGiving](https://twitter.com/JustGiving), which mainly uses .NET, but he didn't focus on the specific technology, but rather on the generic problems and pitfalls that this kind of transition brings to the table. During his tale, he laid to us a lot of useful suggestions and common issues to look for. +In this talk, Michal reports his (and his team) experience in the infamous transistion from a monolithic app to a microservice oriented architecture. Michal works at [@JustGiving](https://x.com/JustGiving), which mainly uses .NET, but he didn't focus on the specific technology, but rather on the generic problems and pitfalls that this kind of transition brings to the table. During his tale, he laid to us a lot of useful suggestions and common issues to look for. ## Develop applications in Big Data Era with Scala and Spark - * Mario Cartia ([@mariocartia](https://twitter.com/mariocartia)) + * Mario Cartia ([@mariocartia](https://x.com/mariocartia)) * 12:30 – 13:10 #cloud #bigdata Large amount of data are produced everyday and Big Data is a concept increasingly trendy. In his talk Mario Cartia presented Scala and Spark,two powerful tools suitable to Big Data Processing. Scala is a General purpose programming language that combines the benefits of OOP and functional programming. Apache Spark is an open source framework and it's a fast engine for big data processing, based on Scala language. ## Gang of Four Patterns in a Functional Light - * Mario Fusco ([@mariofusco](https://twitter.com/mariofusco)) + * Mario Fusco ([@mariofusco](https://x.com/mariofusco)) * 14:10 – 14:50 #programming ([code](https://github.com/mariofusco/from-gof-to-lambda)) In this live-coding talk, Mario Fusco uses Java (and new Java 1.8 features) to translate the wide-known GoF design patterns into functional programming, making the code a lot less verbose, reducing the noise of boilerplate over the really important code. Also, kittens: - - + + diff --git a/content/blog/eng/continuous-deployment-from-gitlab-ci-to-k8s-using-docker-in-docker.md b/content/blog/eng/continuous-deployment-from-gitlab-ci-to-k8s-using-docker-in-docker.md index 96597fdca..bc07bbcfb 100644 --- a/content/blog/eng/continuous-deployment-from-gitlab-ci-to-k8s-using-docker-in-docker.md +++ b/content/blog/eng/continuous-deployment-from-gitlab-ci-to-k8s-using-docker-in-docker.md @@ -14,10 +14,10 @@ In the last month, I'm working on two different PHP projects here at Facile.it: After, I decided to start migrating a previous, internal project of mine to the same approach, since it's currently in production with a dumb approach that provokes some downtime during deployments; on the contrary, **doing a rolling deployment with Kubernetes is surprisingly easy**! -A few days ago David Négrier‏ ([@david_negrier](https://twitter.com/david_negrier)) published a blog posts about his way of doing continuous deployment from GitLab CI: +A few days ago David Négrier‏ ([@david_negrier](https://x.com/david_negrier)) published a blog posts about his way of doing continuous deployment from GitLab CI: - - + + This post immediately captured my attention, due to my current work: David in his post avoided the usage of Kubernetes to not add too much cognitive load, and wrote a very straightforward piece. On the other hand, in my case I wrote a kinda complicated pipeline, learning a few tricks and pitfalls in the process, so I decided to write this down and share my experience. @@ -60,7 +60,7 @@ The combination of the `alias: docker` setting and the `DOCKER_HOST` environment > My approach is a bit more **robust**, but it's overall **slower**, because each job is **totally isolated** (which is good), but on the downside it has no memory of previous builds, so no cache is available: we will have to **pull from the registry each time**.

-> **2018-02-07 ERRATA**: [Stefano Torresi](https://twitter.com/storresi) (privately) and [/u/veloxlector](https://www.reddit.com/r/kubernetes/comments/7vomn5/continuous_deployment_from_gitlab_ci_to/dttzc28/) (on Reddit) made me realize that my approach still requires a privileged runner, so that doesn't change with my approach; the privileged execution is [always required when doing Docker-in-Docker](https://github.com/docker-library/docs/blob/master/docker/README.md#start-a-daemon-instance). This reduces my security claims, but my main aim was isolation. +> **2018-02-07 ERRATA**: [Stefano Torresi](https://x.com/storresi) (privately) and [/u/veloxlector](https://www.reddit.com/r/kubernetes/comments/7vomn5/continuous_deployment_from_gitlab_ci_to/dttzc28/) (on Reddit) made me realize that my approach still requires a privileged runner, so that doesn't change with my approach; the privileged execution is [always required when doing Docker-in-Docker](https://github.com/docker-library/docs/blob/master/docker/README.md#start-a-daemon-instance). This reduces my security claims, but my main aim was isolation. The `GIT_DEPTH` option makes the project clone process in each job a bit faster, pulling only the current commit, not the whole Git history. @@ -140,7 +140,7 @@ I still leverage GitLab's `$CI_REGISTRY` variable to compose the names, so basic Just remember to use `$CI_COMMIT_REF_SLUG` for the second tag, because it has slashes and other invalid chars stripped out automatically. ### A small trick: cache-friendly Docker images -To make this process work smoothly, you should write your **Dockerfile in a cache-friendly manner**. To obtain that, we must leverage the layer-based structure of the images, and **put the stuff that changes more often in the latter layers**, and vice versa the stuff that never changes up in the first ones. In this specific case we're talking about a PHP/Symfony application and, starting from some advice that I got from my colleague [Thomas](https://twitter.com/thomasvargiu), I wrote down this Dockerfile: +To make this process work smoothly, you should write your **Dockerfile in a cache-friendly manner**. To obtain that, we must leverage the layer-based structure of the images, and **put the stuff that changes more often in the latter layers**, and vice versa the stuff that never changes up in the first ones. In this specific case we're talking about a PHP/Symfony application and, starting from some advice that I got from my colleague [Thomas](https://x.com/thomasvargiu), I wrote down this Dockerfile: ```dockerfile FROM gitlab.facile.it/facile/my-project/php-base diff --git a/content/blog/eng/droidcon-it-2016.md b/content/blog/eng/droidcon-it-2016.md index 7a6df699f..2892bd148 100644 --- a/content/blog/eng/droidcon-it-2016.md +++ b/content/blog/eng/droidcon-it-2016.md @@ -25,7 +25,7 @@ In this post I'm going to recap the event and make some considerations about the # Day 1 -## Keynote - *[Wojtek Kalicinski](https://twitter.com/wkalic)* +## Keynote - *[Wojtek Kalicinski](https://x.com/wkalic)* The day 1 keynote was all about the N Developer Preview and was given by Wojtek Kalicinski, a developer advocate directly from Google. Wojtek went through all the new improvements of the platform, both from user's and developer's point of view. Here’s a short summary of the most relevant ones: @@ -42,7 +42,7 @@ The most interesting and encouraging aspect coming out from the keynote and the Not only the release of the new OS preview six months before its public release — instead of three — is really useful for third party developers to update apps to support new APIs, but hopefully it will also help phone manufactures to keep their custom Android implementations more aligned with the stock version release cycle. This will result in a better user experience and, more importantly to us, a better developer experience, making it closer to the iOS world where developers are not required to support five years old OS versions. -## #PERFMATTERS for Android - *[Hasan Hosgel](https://twitter.com/alosdev)* +## #PERFMATTERS for Android - *[Hasan Hosgel](https://x.com/alosdev)* [Slides](https://speakerdeck.com/alosdev/perfmatters-for-android-droidcon-turin-2016) @@ -50,7 +50,7 @@ The talk was all about performance in Android. The speaker analyzed why #**PERFM Performance is crucial to **engage the user** and I think the speaker did a great job in summarizing useful tips to improve it. Moreover most of them doesn’t alter the readability or the maintainability of the code, as is often the case for performance driven code changes. -## Let it flow! Unidirectional data flow architecture in Android - [*Benjamin Augustin*](https://twitter.com/dorvaryn) +## Let it flow! Unidirectional data flow architecture in Android - [*Benjamin Augustin*](https://x.com/dorvaryn) [Slides](https://speakerdeck.com/dorvaryn/let-it-flow) @@ -68,7 +68,7 @@ They explained also how they use a **C++ library** common to all platforms to re It was a light talk but still it was interesting to see how a big company like Spotify finds solutions to scale and maintain a **consistent and engaging UX** across all of its user-base. -## Loving lean layouts - [*Huyen Tue Dao*](https://twitter.com/queencodemonkey) +## Loving lean layouts - [*Huyen Tue Dao*](https://x.com/queencodemonkey) [Slides](https://speakerdeck.com/queencodemonkey/droidcon-italy-2016-loving-lean-layouts) @@ -78,7 +78,7 @@ The talk was very easy to follow and really useful: most of the advices covered # Day 2 -## Android reactive programming with RxJava - [*Ivan Morgillo*](https://twitter.com/hamen) +## Android reactive programming with RxJava - [*Ivan Morgillo*](https://x.com/hamen) During last couple of years RxJava has been echoing all over the Android developers community and given its huge popularity I was surprised to see that Droidcon IT offered only one talk about it. Fortunately Ivan Morgillo is a topic expert — he also wrote a [book](https://www.packtpub.com/application-development/rxjava-essentials) about RxJava and Android — and during the talk he went through some of the **basics of reactive programming** (`Observables`, `Observer`, `Subscription`…) and a lot of useful **operators**, which are one of the strengths of RxJava and Reactive extensions (Rx*) in general. diff --git a/content/blog/eng/kotlin-intro.md b/content/blog/eng/kotlin-intro.md index 00bbce207..9bc23d589 100644 --- a/content/blog/eng/kotlin-intro.md +++ b/content/blog/eng/kotlin-intro.md @@ -22,7 +22,7 @@ twitterImage: 'images/kotlin-intro/logo_Kotlin.png' ## Premise -Java is an **old** programming language. Version 1.0 was released in 1996 by Sun Microsystems and even though it has evolved and grown a lot over the past twenty years it is still carrying on some bad design choices such as *null* (ask [Tony Hoare](https://en.wikipedia.org/wiki/Tony_Hoare?section=3#Apologies_and_retractions)), primitive types or lack of a proper function type. With the last version of the language (Java 8) Java tried to address some of these problems introducing concepts such as [`Optional`](https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html) or [lambda expression](http://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html). Although these additions clearly represent a step forward for the language I still have the feeling that they are just *patches* applied to **mitigate problems** and not to solve them at their very source. For example `Optional` could be used to reduce NPE (Null Pointer Exception) but it is clearly not designed for [this purpose](https://twitter.com/mariofusco/status/780770300178956289) and lambda expressions, implemented in Java 8 with SAM types, still force you to write an interface only to define a *function*. +Java is an **old** programming language. Version 1.0 was released in 1996 by Sun Microsystems and even though it has evolved and grown a lot over the past twenty years it is still carrying on some bad design choices such as *null* (ask [Tony Hoare](https://en.wikipedia.org/wiki/Tony_Hoare?section=3#Apologies_and_retractions)), primitive types or lack of a proper function type. With the last version of the language (Java 8) Java tried to address some of these problems introducing concepts such as [`Optional`](https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html) or [lambda expression](http://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html). Although these additions clearly represent a step forward for the language I still have the feeling that they are just *patches* applied to **mitigate problems** and not to solve them at their very source. For example `Optional` could be used to reduce NPE (Null Pointer Exception) but it is clearly not designed for [this purpose](https://x.com/mariofusco/status/780770300178956289) and lambda expressions, implemented in Java 8 with SAM types, still force you to write an interface only to define a *function*. ## The Android world diff --git a/content/blog/eng/looking-back-at-symfony-day-rome-2016.md b/content/blog/eng/looking-back-at-symfony-day-rome-2016.md index 1feb01ccf..72b6245fc 100644 --- a/content/blog/eng/looking-back-at-symfony-day-rome-2016.md +++ b/content/blog/eng/looking-back-at-symfony-day-rome-2016.md @@ -19,7 +19,7 @@ This post would be a short recap of all the talks. ## Symfony and micro (not so much) service{#symfony-and-micro-not-so-much-service} -Talk by: **[Michele Orselli](https://twitter.com/_orso_)** +Talk by: **[Michele Orselli](https://x.com/_orso_)**
Duration: 30 minutes Michele Orselli presented a case study of a [monolithic application](https://en.wikipedia.org/wiki/Monolithic_application) broken down into many smaller microservices. How many ways can we split a webapp? Why smaller is better? How services can interact each other? In his talk Michele answered all those questions focusing on all the advantages of the proposed architecture and a few common pitfalls. @@ -28,7 +28,7 @@ Michele Orselli presented a case study of a [monolithic application](https://en. ## Scaling Symfony apps{#scaling-symfony-apps} -Talk by: **[Matteo Moretti](https://twitter.com/mat_teo8)** +Talk by: **[Matteo Moretti](https://x.com/mat_teo8)**
Duration: 45 minutes A scalable application must support an increasing amount of data or a growing number of users. In his talk, Matteo Moretti described the architecture needed to scale. He divided the overall architecture into 4 main components: web server, sessions, database and the filesystem. He explained the right configuration to his main purpose: improving performance of a webapp. @@ -37,7 +37,7 @@ A scalable application must support an increasing amount of data or a growing nu ## E-commerce with Symfony: from case study to reality{#e-commerce-with-symfony-from-case-study-to-reality} -Talk by: **[Simone D'Amico](https://twitter.com/dymissy)** +Talk by: **[Simone D'Amico](https://x.com/dymissy)**
Duration: 30 minutes Sylius, Elcodi, Thelia, Sonata Project, Well Commerce, Shop Plus, Aimeos: these are the most popular results you can find if you google "e-commerce solution with Symfony". But which one is the final winner? Why choosing one or another? Simone D'Amico reviewed all of these frameworks and libraries comparing strengths and drawbacks. Moreover he clarified the stack he used to build an e-commerce platform. @@ -46,7 +46,7 @@ Sylius, Elcodi, Thelia, Sonata Project, Well Commerce, Shop Plus, Aimeos: these ## A journey into Symfony form component{#a-journey-into-symfony-form-component} -Talk by: **[Samuele Lilli](https://twitter.com/SamueleLilli)** +Talk by: **[Samuele Lilli](https://x.com/SamueleLilli)**
Duration: 45 minutes [Symfony form component](http://symfony.com/doc/current/forms.html) is the main obstacle for beginners and newbies in the Symfony world. Samuele Lilli gave a talk with the purpose to clarify this hot topic with a lot of examples and code snippets. He started from the simplest form examples to more advanced ones. He revealed a lot of tips and explanations for several scenarios in order to make this powerful component understandable and manageable by everyone. @@ -57,7 +57,7 @@ Talk by: **[Samuele Lilli](https://twitter.com/SamueleLilli)** ## PHP7 and Rich Domain Model{#php7-and-rich-domain-model} -Talk by: **[Massimiliano Arione](https://twitter.com/garakkio)** +Talk by: **[Massimiliano Arione](https://x.com/garakkio)**
Duration: 30 minutes In this talk Massimiliano Arione told about his experience in the migration to PHP7 of a Symfony based project. Particularly he focused on the usage of type hinting and return types and the issues encountered with an [Anemic Domain Model](https://en.wikipedia.org/wiki/Anemic_domain_model) approach suggested by the framework official documentation. He showed how to combine a Rich Domain Model without giving up new language features. @@ -66,7 +66,7 @@ In this talk Massimiliano Arione told about his experience in the migration to P ## Relevance sorting with Elasticsearch & a bit of maths{#relevance-sorting-with-elasticsearch-and-a-bit-of-maths} -Talk by: **[Matteo Dora](https://twitter.com/mattbit_)** +Talk by: **[Matteo Dora](https://x.com/mattbit_)**
Duration: 45 minutes The main topic of the talk was [Elasticsearch](https://www.elastic.co/products/elasticsearch). Elasticsearch is a distributed, RESTful search and analytics engine with a great Symfony integration. Matteo Dora, the speaker of this talk, explained how to deal when the sorting by relevance becomes hard using the right amount of math and [FOSElasticaBundle](https://github.com/FriendsOfSymfony/FOSElasticaBundle). @@ -75,7 +75,7 @@ The main topic of the talk was [Elasticsearch](https://www.elastic.co/products/e ## Command: the easy way{#command-the-easy-way} -Talk by: **[Antonio Carella](https://twitter.com/aczepod)** +Talk by: **[Antonio Carella](https://x.com/aczepod)**
Duration: 30 minutes Antonio Carella illustrated a real case how to create command-line commands using the [Symfony console component](https://symfony.com/doc/current/console.html). He showed how console commands can be used for any recurring task, such as cronjobs, imports, or other batch jobs. @@ -84,7 +84,7 @@ Antonio Carella illustrated a real case how to create command-line commands usin ## ORM hero{#orm-hero} -Talk by: **[Simone Di Maulo](https://twitter.com/toretto460)** +Talk by: **[Simone Di Maulo](https://x.com/toretto460)**
Duration: 45 minutes This talk was a journey in the *magical world* of [Doctrine](http://www.doctrine-project.org/), the most known ORM for Symfony and not only. Simone Di Maulo described how Doctrine works under the hood to better understand when and why to use its features. diff --git a/content/blog/eng/php-day-2016.md b/content/blog/eng/php-day-2016.md index 05ada3500..1fb4c690e 100644 --- a/content/blog/eng/php-day-2016.md +++ b/content/blog/eng/php-day-2016.md @@ -22,50 +22,50 @@ The talks are in chronological order, and we linked the slides when available. E # Technical Talks ## Your API is a UI - * Christopher Hoult ([@choult](http://twitter.com/choult)) + * Christopher Hoult ([@choult](http://x.com/choult)) * Day 1 - 11:00 – 12:00 - track 1 This was an interesting and very smooth talk. It stayed pretty general with nice advices about **API development**, but showed some reasoning about a pyramidal "scheme of priorities" that we should follow, deriving from the [Maslow's hierarchy of needs](https://en.wikipedia.org/wiki/Maslow%27s_hierarchy_of_needs). ## Dip Your Toes in the Sea of Security - * James Titcumb ([@asgrim](http://twitter.com/asgrim)) + * James Titcumb ([@asgrim](http://x.com/asgrim)) * Day 1 - 14:30 – 15:30 - track 1 ([slides](http://www.slideshare.net/asgrim1/dip-your-toes-in-the-sea-of-security-phpday-2016)) In this talk we saw an interesting overview of **security issues** that a web application can encounter. It ranged from basic SQL injection, to timing attacks (that were explained pretty well!), to CSRF protection. ## How I learned to stop worrying and love Regular Expressions - * Jordi Boggiano ([@seldaek](http://twitter.com/seldaek)) + * Jordi Boggiano ([@seldaek](http://x.com/seldaek)) * Day 1 - 15:30 – 16:30 - track 1 ([slides](http://slides.seld.be/?file=2016-05-13+How+I+learned+to+stop+worrying+and+love+Regular+Expressions.html)) In this talk we went from basic **regular expressions**, to basic pattern recognition, to advanced usage; the speaker took also the time to explain to us how the regex engine works, through thorough examples of pattern matching advancement and backtracking. Also, bonus points for the slides! They were pretty neat, and everything was themed to the _Dr. Strangelove_ movie, from images to phrases used in the examples. ## Dockerizing your PHP CI Pipelines - * Paul Dragoonis ([@dr4goonis](http://twitter.com/dr4goonis)) + * Paul Dragoonis ([@dr4goonis](http://x.com/dr4goonis)) * Day 1 - 17:00 – 17:30 - track 2 ([slides](http://dragoonis.com/talks/phpday-may-2016/#/)) This talk was about **using Jenkins with Docker** and having optimized pipelines for fast builds and short commit-to-deploy times. It should have been a 1-hour-long talk, so the speaker had to cut short on a lot of things, but I took a lot of useful advice from it nonetheless. Fortunately, he was kind enough to give the extra bits of his talk in the unconference track the day after. ## Drinking Beer with a Raspberry Pi and PHP - * Andrew Carter ([@AndrewCarterUK](http://twitter.com/AndrewCarterUK)) + * Andrew Carter ([@AndrewCarterUK](http://x.com/AndrewCarterUK)) * Day 2 - 15:30 – 16:30 - track 1 This talk was uncommon but really funny. The speaker explained that programming the Raspberry Pi is possible even with PHP! He showed us a working example of an AaaS (Alcohol as a Service) machine. It was a simple tool with a liquid pump and a flow detector that is used to fill up glasses with any kind of drink. It can be activated via API as any regular service. The speaker also explained how it is possible to communicate with external devices via the powerful IO pins using Unix device files. ## Evolution of Web Application Architecture - * Kore Nordmann ([@koredn](http://twitter.com/koredn)) + * Kore Nordmann ([@koredn](http://x.com/koredn)) * Day 2 - 15:30 – 16:30 - track 2 ([slides](https://qafoo.com/resources/presentations/phpday_2016_2016/evolution_of_web_application_architecture.html)) The talk covered the **evolution of the technological stack** behind a normal web application, from single-server to multi-server architecture. Each addition to the stack was discussed and weighted, without taking for granted any single step: from adding a master-slave database configuration, to caching session and\or query results. This gave us a pretty clear idea of **when and why** such steps should be taken while adding new functionalities to a project, or overcoming technical challenges. ## Being functional in PHP - * David de Boer ([@ddeboer_nl](http://twitter.com/ddeboer_nl)) + * David de Boer ([@ddeboer_nl](http://x.com/ddeboer_nl)) * Day 2 - 16:30 – 17:00 - track 1 ([slides](http://www.slideshare.net/boerdedavid/being-functional-in-php-php-day-italy-2016)) This talk was an **introduction to functional programming**. The speaker compared highly declarative languages such as Erlang with PHP. He demonstrated the options we have to adopt functional programming in PHP. Basic concepts were covered in a clear and simple way: mapping, reduction, function composition and higher-order functions. Particular focus was given to the use of pure functions and their main advantage: the absence of side effects. Finally, the speaker went through an interesting comparison between OOP and functional programming, showing their strengths and weaknesses. # Keynotes ## Deploying PHP 7 - * Rasmus Lerdorf ([@rasmus](http://twitter.com/rasmus)) + * Rasmus Lerdorf ([@rasmus](http://x.com/rasmus)) * Day 1 - 09:45 – 10:45 ([slides](http://talks.php.net/phpday16#/)) Rasmus is a veteran at PHPDay, and he gives opening keynotes here almost every two years. This year's was obviously about PHP 7, and it was more a technical talk than else. It went from **benchmark data** to technical tips on how to smooth the transition to this new major version of PHP. @@ -76,5 +76,5 @@ Rasmus is a veteran at PHPDay, and he gives opening keynotes here almost every t The [blog post](https://techblog.badoo.com/blog/2016/03/14/how-badoo-saved-one-million-dollars-switching-to-php7/) about this technological switch made the rounds on a lot on PHP-related websites some months ago; this talk was very technical too, and it showed us how big is Badoo's technological stack, with 3000 servers, 1000 of which running PHP. It gave us a nice overview of the **technical challenges** that their tech team endured to do this upgrade, and how it gave them the possibility to save more than a half of their hardware resources; also... - - + + diff --git a/content/blog/eng/php-day-2017.md b/content/blog/eng/php-day-2017.md index 40d6e7cf4..4f302afcc 100644 --- a/content/blog/eng/php-day-2017.md +++ b/content/blog/eng/php-day-2017.md @@ -19,51 +19,51 @@ We met a lot of new people and known fellow PHP developers, and like [previous]( We hope to give a brief glimpse of what we experienced to fellow developers that hadn't the opportunity to attend, and to tempt some of you to join conferences like this one or those in the PHP community at large, for your personal and professional growth. Like last year, we will later edit this article embedding the videos of the talks, when they will got released. - - + + The talks are in chronological order, and we linked the slides when available. Enjoy your reading! # Technical Talks ## Climbing the Abstract Syntax Tree - * James Titcumb ([@asgrim](https://twitter.com/asgrim)) + * James Titcumb ([@asgrim](https://x.com/asgrim)) * Day 1 - 11:00 – 12:00 - track 2 This talk started a bit complicated, since it tackles a very complex matter: the Abstract Syntax Tree that has been added to PHP since version 7, and it the implications of its use; following up a bit, it included some very easy, low level example of how the language works with the AST, and the fact that the example were in PHP itself helped a lot in increasing the understanding of the matter. ## Managing dependencies is more than running "composer update" - * Nils Adermann ([@naderman](https://twitter.com/naderman)) + * Nils Adermann ([@naderman](https://x.com/naderman)) * Day 1 - 15:30 – 16:30 - track 2 Nils is one of the co-authors of Composer, but this talk was about "dependencies" in general, not just about the literal, software ones: every software project has a lot of dependecies apart from the libs that we install in the vendor folder, and he explained how we should approach them, and how we should mitigate the risks that they can add to our work. ## The Science of Code Reviews - * Rick Kuipers ([@rskuipers](https://twitter.com/rskuipers)) + * Rick Kuipers ([@rskuipers](https://x.com/rskuipers)) * Day 2 - 12:00 – 13:00 - track 2 ([slides](https://speakerdeck.com/rskuipers/the-science-of-code-reviews)) Code reviews and pair programming are two very valuable tools that we can leverage in our work as developers. This talk was really interesting, and it started from reasons behind why do them, up to suggestions and tips on how to improve them if you already do in your team. ## Extremely defensive PHP - * Marco Pivetta ([@ocramius](https://twitter.com/ocramius)) + * Marco Pivetta ([@ocramius](https://x.com/ocramius)) * Day 2 - 15:30 – 16:30 - track 1 Marco gave this talk already a lot of times on some conferences and some user groups, but it's great! He suggests how to write code in a "defensive" way, to avoid that others are able to do mistakes with it and create problems down the line. # Keynotes ## Code Manifesto - * Graham Daniels ([@greydnls](https://twitter.com/greydnls)) + * Graham Daniels ([@greydnls](https://x.com/greydnls)) * Day 1 - 09:45 – 10:45 The first keynote wasn't strictly technical, but it was still more than interesting: Graham guided us through how much inequality and hidden problems minorities (and especially women) have to face everyday in our line of work; Graham is also the author behind the [Code Manifesto](https://github.com/greydnls/code-manifesto), a basic list of principles to be followed on OSS and workplaces to actively fight this issues and encourage diversity. ## NoEstimates: The 10 new principles for Software Projects - predicting without estimating - * Vasco Duarte ([@duarte_vasco](https://twitter.com/duarte_vasco)) + * Vasco Duarte ([@duarte_vasco](https://x.com/duarte_vasco)) * Day 2 - 09:45 – 10:45 Vasco is the famous author of the #NoEstimate strategy, and his keynote was aimed at explaining the wrong things the foundation of the issues of our industry, where estimates are always wrong and are often used to "bet" the future of our companies. ## Using Open Source for Fun and Profit - * Gary Hockin ([@geeh](https://twitter.com/geeh)) + * Gary Hockin ([@geeh](https://x.com/geeh)) * Day 2 - 17:30 – 18:30 In his keynote, Gary told us his story of how, from a simple developer, he became a Zend contributor first, and the JetBrains Developer Advocate now; the basic lessons that we can take from his experience is that open source contributions (no matter how small) are good for your career, and that when you give to the community, the community will give back to you very soon. diff --git a/content/blog/eng/php-day-2020.md b/content/blog/eng/php-day-2020.md index 4f6340aef..116d68b60 100644 --- a/content/blog/eng/php-day-2020.md +++ b/content/blog/eng/php-day-2020.md @@ -20,34 +20,34 @@ What follows is a mere recap of the event, with my some comments of mine. # Things I Wish I Knew When I Started Playing Developer -## Gary Hockin ([@GeeH](https://twitter.com/GeeH)) +## Gary Hockin ([@GeeH](https://x.com/GeeH)) A trip into developers' mindset from a ludic (and hence, engaging) point of view. Gary is a natural born speaker ;) and this talk deserves to be seen at least once by anyone interested in programming, no matter their background and interests. # What's new in PHP 8 -## Derick Rethans ([@derickr](https://twitter.com/derickr)) +## Derick Rethans ([@derickr](https://x.com/derickr)) Personally, I did not like the style of the presentation. I'm not referring to the graphical layout of slides, but how they were presented! 🙂 However, the information provided is very important and so you should take a look **[here](https://derickrethans.nl/talks/php-phpday20)** # Symfony 5, the new bit -## Andreas Hucks ([@meandmymonkey](https://twitter.com/meandmymonkey)) +## Andreas Hucks ([@meandmymonkey](https://x.com/meandmymonkey)) A deep dive into Symfony 5 features and enhancements. By knowing where the framework is heading, we will make better-informed decisions in our daily work. #Leveraging Typed Exceptions for Cleaner Error Handling -## Chris Holland ([@chrisholland](https://twitter.com/chrisholland)) +## Chris Holland ([@chrisholland](https://x.com/chrisholland)) This speech was mainly intended for entry-level or mid-level developers. However, it is very useful to learn (or recap) how to build a long-lasting relationship with exceptions. In fact, exceptions are not our enemies, they can help us contextualize the scope in which they occur and thus speed up the debugging process. Slides **[available here](https://bit.ly/exceptions-ftw)** # Kubernetes for PHP developers -## Alessandro Lai ([@AlessandroLai](https://twitter.com/AlessandroLai)) +## Alessandro Lai ([@AlessandroLai](https://x.com/AlessandroLai)) A well-presented talk by my colleague Alessandro - Too many screenshots of the dashboard for me, but that's only because I am more dev than ops ;) # Technically Speaking: Improve your code with documentation -## Alexandra White ([@heyawhite](https://twitter.com/heyawhite)) +## Alexandra White ([@heyawhite](https://x.com/heyawhite)) Brilliantly presented by Alexandra! A tidbit that I brought home: there are moments to be (like) Shakespeare and others not. One of those when not to be Shakespeare is when writing documentation. I must say that this talk lighted my interest in technical writing. @@ -55,18 +55,18 @@ The icing on the cake was that the presentation had subtitles, which should defi Slides **[available here](https://docs.google.com/presentation/d/1l7cjrouAGdsGae4nXyJLcGcool1l0zx5knXvL_4h04Q/edit#slide=id.g589a77319a_0_34)** # Looping the Loop with SPL Iterators -## Mark Baker ([@Mark_Baker](https://twitter.com/Mark_Baker)) +## Mark Baker ([@Mark_Baker](https://x.com/Mark_Baker)) A tour of the little-known iterators world. . There was also time for a little mea-culpa about the almost-not-existent documentation when the library was first published and its initial years.🙂 Slides **[available here](https://www.slideshare.net/MarkBakerUK/looping-the-loop-with-spl-iterators/)** # Getting started with ReactPHP - Pushing real-time data to the browser -## Christian Lück ([@another_clue](https://twitter.com/another_clue)) +## Christian Lück ([@another_clue](https://x.com/another_clue)) This is the real React! Not that other little thing made by Facebook! An introductory talk to the React world and the pillars it is based on: async and event-driven programming and, of course, promises (https://music.youtube.com/watch?v=Ok1Z65OMi1Y&feature=gws_kp_track). # Pragmatic Optimism: How PHP Conquered the Web -## Samantha Quiñones ([@ieatkillerbees](https://twitter.com/ieatkillerbees)) +## Samantha Quiñones ([@ieatkillerbees](https://x.com/ieatkillerbees)) I really enjoyed the final talk that was a historical retrospective of the web and web developing, starting from Charles Babbage up to (fast forward) CGI, the Personal Home Page Tools - PHP Tools and its evolution. There was a point in this talk worth mentioning: sometimes people are ashamed to tell others they are using PHP because of (insert here any drawback you heard of - probably already fixed by now). diff --git a/content/blog/eng/visual-debt-typehints.md b/content/blog/eng/visual-debt-typehints.md index 768325d84..286d3c791 100644 --- a/content/blog/eng/visual-debt-typehints.md +++ b/content/blog/eng/visual-debt-typehints.md @@ -13,8 +13,8 @@ toc: false --- A few days ago I stumbled on a strange tweet that was highlighting a controversy about scalar type hints. - - + + After asking references about this, someone alluded to this very short video: [**"PHP Bits: Visual Debt"**](https://laracasts.com/series/php-bits/episodes/1) (it's only 3 minutes, please watch it before continue reading). After that, the author of the video was dragged into the conversation, and it blew up into a big tweetstorm in the following few hours. diff --git a/content/blog/ita/facile-it-devs-codemotion-milan-2015.md b/content/blog/ita/facile-it-devs-codemotion-milan-2015.md index d5bcd700c..f0e4f2d85 100644 --- a/content/blog/ita/facile-it-devs-codemotion-milan-2015.md +++ b/content/blog/ita/facile-it-devs-codemotion-milan-2015.md @@ -13,7 +13,7 @@ aliases: - "/facile-it-devs-codemotion-milan-2015" --- -L'appuntamento con il [Codemotion](http://milan2015.codemotionworld.com) di quest'anno a Milano è stato particolarmente **ricco**: tante tracce, moltissimi contenuti suddivisi tra talk tecnici, workshop e keynote, e alcuni ospiti illustri, tra cui il celebre [Rasmus Lerdorf](https://twitter.com/rasmus), creatore del linguaggio **PHP**. Come già fatto per il [PHP Day 2015](http://engineering.facile.it/php-day-2015/), proponiamo le nostre impressioni sulla conferenza, citando i talk che ci hanno colpito maggiormente: la scelta dei talk è basata sul gusto personale dei vari membri della redazione di Facile.it Engineering, e le considerazioni esposte non vanno lette come recensioni, ma come riflessioni di vario genere sulle tematiche trattate, volte a stimolare nei lettori l'interesse a **partecipare** a conferenze come il Codemotion. +L'appuntamento con il [Codemotion](http://milan2015.codemotionworld.com) di quest'anno a Milano è stato particolarmente **ricco**: tante tracce, moltissimi contenuti suddivisi tra talk tecnici, workshop e keynote, e alcuni ospiti illustri, tra cui il celebre [Rasmus Lerdorf](https://x.com/rasmus), creatore del linguaggio **PHP**. Come già fatto per il [PHP Day 2015](http://engineering.facile.it/php-day-2015/), proponiamo le nostre impressioni sulla conferenza, citando i talk che ci hanno colpito maggiormente: la scelta dei talk è basata sul gusto personale dei vari membri della redazione di Facile.it Engineering, e le considerazioni esposte non vanno lette come recensioni, ma come riflessioni di vario genere sulle tematiche trattate, volte a stimolare nei lettori l'interesse a **partecipare** a conferenze come il Codemotion. I talk sono in ordine cronologico. @@ -35,7 +35,7 @@ I talk sono in ordine cronologico. ## A Programmer is... -- Birgitta Boeckeler ([@birgitta410](https://twitter.com/birgitta410)) +- Birgitta Boeckeler ([@birgitta410](https://x.com/birgitta410)) - day 1 - 10:15 - 11:00 - Keynote Motivational ([slides](http://www.slideshare.net/Codemotion/keynote-birgitta-boeckeler-track-motivational-a-programmer-is)) In uno dei due *keynote* di apertura della prima giornata Birgitta Boeckeler ha affrontato la spinosa questione di ["cosa è un programmatore"](http://milan2015.codemotionworld.com/talk-detail/?detail=1980&sub=1), mostrando che assunzioni e incomprensioni **vecchie di 50 anni** ancora oggi influenzano la professione di programmatore e il modo in cui essa è considerata nel mondo, da addetti ai lavori e non. @@ -48,11 +48,11 @@ Nell'ultima parte del talk, Birgitta mostra come questa erronea visione della pr Nel seguente tweet Birgitta cita libri, articoli e talk che hanno ispirato il suo *keynote*: - + ## TDD per Android -- Matteo Vaccari ([@xpmatteo](https://twitter.com/xpmatteo)) +- Matteo Vaccari ([@xpmatteo](https://x.com/xpmatteo)) - day 1 - 11:20 - 12:00 - Mobile track ([slides](http://www.slideshare.net/Codemotion/matteo-vaccari-tdd-per-android-codemotion-milan-2015)) Matteo Vaccari porta al codemotion un talk, dal titolo alla prima apparenza banale, ma indicato come livello *intermediate*. Con TDD per Android infatti, *non vuole introdurre né al testing di applicazioni Android, né al TDD*. @@ -63,14 +63,14 @@ Piuttosto durante il talk vengono mostrati alcuni trucchi da lui scovati durante ## Platformer 2D: jumping from XNA to Unity -- Paolo Cattaneo ([Raven Travel Studios](https://twitter.com/RavenTravelStd)) +- Paolo Cattaneo ([Raven Travel Studios](https://x.com/RavenTravelStd)) - day 1 - 12:10 - 13:10 - Game Dev track Il vecchio ambiente di sviluppo **XNA** è ormai stato abbandonato da Microsoft da anni. Molti sviluppatori si sono quindi visti costretti a migrare su altri *tool*, come per esempio Unity, che con XNA condivide l’adozione del linguaggio C# per gli script. Il passaggio da una programmazione vecchio stampo ad un ambiente visuale può creare qualche problema, soprattutto per via di alcuni ostacoli apparentemente invalicabili. È realmente necessario creare manualmente per ogni *asset* di un progetto un GameObject in Unity? Diffidate delle guide ufficiali e sfruttate la generazione a *runtime* di nuovi GameObject, associando uno script di creazione ad un solo GameObject padre! ## Building the world's largest grocery site in React -- Robbie McCorkell ([@robbiemccorkell](https://twitter.com/robbiemccorkell)) +- Robbie McCorkell ([@robbiemccorkell](https://x.com/robbiemccorkell)) - day 1 - 14:10 - 14:50 - Architecture track Lo speaker Robbie McCorkell, tech lead presso [Red Badger](http://red-badger.com), società londinese che si occupa di web design per grossi partner internazionali, ci ha raccontato del viaggio che ha portato la sua azienda a creare il sito web di **Tesco**, negozio online e distributore di prodotti di vario genere che opera principalmente in Europa, Nord America ed Estremo Oriente. @@ -82,7 +82,7 @@ Particolare attenzione durante il talk è stata posta sulla necessità di essere ## Alert overload: How to adopt a microservices architecture without being overwhelmed with noise -- Sarah Wells ([@sarahjwells](https://twitter.com/sarahjwells)) +- Sarah Wells ([@sarahjwells](https://x.com/sarahjwells)) - day 1 - 14:10 - 14:50 - DevOps track ([slides](http://www.slideshare.net/Codemotion/sarah-wells-alert-overload-how-to-adopt-a-microservices-architecture-without-being-overwhelmed-with-noise)) Il talk di Sarah, come promesso dal titolo, dava una serie di consigli su come mantenere in produzione un'architettura a microservizi senza venir **sommersi dalle notifiche** di errore e dagli alert che ne derivano in caso di malfunzionamento: @@ -105,7 +105,7 @@ Oltre a questo Sarah ha anche parlato di alcuni **tool** che utilizza più o men ## F#, not a game!!! -- Andrea Magnorsky ([@silverspoon](https://twitter.com/silverspoon)) +- Andrea Magnorsky ([@silverspoon](https://x.com/silverspoon)) - day 1 - 14:10 - 14:50 - Game Dev track ([slides](http://www.roundcrisis.com/presentations/2015-codemotion-milan/#/)) Andrea Magnorsky di [Digital Furnace Games](http://www.digitalfurnacegames.com) ha parlato dell'uso dei pattern di **programmazione funzionale** nello sviluppo del loro prossimo gioco *Onikira: Demon Killer*, per il quale hanno adottato il linguaggio funzionale [F#](https://en.wikipedia.org/wiki/F_Sharp_(programming_language)). @@ -116,7 +116,7 @@ Nel corso del talk Andrea ha parlato anche dell'ottima interoperabilità di F# c ## Applicazioni Real-Time con Polymer e Firebase -- Michel Murabito ([@michelmurabito](https://twitter.com/michelmurabito)) +- Michel Murabito ([@michelmurabito](https://x.com/michelmurabito)) - day 1 - 15:00 - 16:00 - Server-Side track Il talk, portato al Codemotion 2015 dal GDG (Google Developer Group) Community Manager Italia Michel Murabito, tratta due tecnologie emergenti nel panorama realtime, javascript (e non solo). Michael, attraverso un live tutorial atto a creare una todolist ci ha introdotto a [Polymer](https://www.polymer-project.org), accompagnandoci per mano alla scoperta dei [suoi components](https://elements.polymer-project.org/), spiegando come utilizzarli per ottenere senza sforzo un’interfaccia veloce e pulita, come personalizzarli e come crearne di nuovi. Successivamente ha integrato nell’applicazione ottenuta la persistenza dei dati utilizzando [Firebase](https://www.firebase.com/), un servizio API, basato su DB NO SQL, veloce e tecnologicamente avanzato, tra le cui peculiarità troviamo, ad esempio, la capacità di mantenere aggiornati in realtime i client connessi. @@ -124,7 +124,7 @@ Il talk, portato al Codemotion 2015 dal GDG (Google Developer Group) Community M ## The new Mobile Challenge: Offline-Enablement for Web Applications -- Christiane Kurz ([@learnui5](https://twitter.com/learnui5)) +- Christiane Kurz ([@learnui5](https://x.com/learnui5)) - day 1 - 15:00 - 16:00 - Mobile track ([slides](http://www.slideshare.net/Codemotion/christiane-kurz-the-new-mobile-challenge-offlineenablement-for-web-applications)) Ottimo talk che introduce tecnologie ancora poco conosciute nello sviluppo web, e offre un’ottima soluzione per iniziare a pensare a come rendere disponibili i nostri siti web anche in modalità offline. Questo apre orizzonti a nuove soluzioni e a nuove sfide, come salvare i dati lato client (nel talk si parla di [indexedDB](https://developer.mozilla.org/it/docs/Web/API/IndexedDB_API)), e gestire conflitti tra i dati durante la sincronizzazione col server, cercando possibili strumenti di compatibilità con vecchi browser: in effetti l'unica piccola pecca della soluzione proposta è la ridotta compatibilità con i browser, soprattutto mobile, consultabile anche a questo [link](https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API#Browser_compatibility). @@ -133,7 +133,7 @@ Che altro dire… questo è un ottimo spunto per iniziare a pensare a qualche po ## How to defeat feature gluttony -- Kasia Mrowca ([@MrowcaKasia](https://twitter.com/MrowcaKasia)) +- Kasia Mrowca ([@MrowcaKasia](https://x.com/MrowcaKasia)) - day 1 - 15:00 - 16:00 - Startup track ([slides](http://www.slideshare.net/Codemotion/kasia-mrowca-how-to-defeat-feature-gluttony-codemotion-milan-2015-55472938)) Kasia Mrowca, ex programmatrice ed ora product owner, ci spiega le sue strategie per ovviare ai **problemi di backlog**: desiderare buone e nuove feature è una cosa buona, ma esagerare è male. @@ -142,7 +142,7 @@ Per spiegarci tutto questo ci porta la sua esperienza, ad esempio come ha visto ## Is WebAssembly the killer of JavaScript? -- Boyan Mihaylov ([@bmihaylov](https://twitter.com/bmihaylov)) +- Boyan Mihaylov ([@bmihaylov](https://x.com/bmihaylov)) - day 1 - 17:10 - 17:50 - Languages track ([slides](http://www.slideshare.net/Codemotion/boyan-mihaylov-is-web-assembly-the-killer-of-javascript)) La presentazione è condotta da Boyan Mihaylov ed è un'introduzione al nuovo mondo di [WebAssembly](https://medium.com/javascript-scene/what-is-webassembly-the-dawn-of-a-new-era-61256ec5a8f6#.ee7hgs4df): una tecnologia in fase di sviluppo molto promettente nell'ambito internet. @@ -174,28 +174,28 @@ WebAssembly è ancora in fase di prototipazione, è una tecnologia molto interes ## The evolution in the design of FATAL ERROR -- Ciro Continisio ([@ccontinisio](https://twitter.com/ccontinisio)), Ennio Pirolo ([@SantEnnio](https://twitter.com/santennio)) +- Ciro Continisio ([@ccontinisio](https://x.com/ccontinisio)), Ennio Pirolo ([@SantEnnio](https://x.com/santennio)) - day 2 - 11:20 - 12:00 - Game Dev track ([slides](http://www.slideshare.net/Codemotion/ciro-continisio-ennio-pirolo-the-evolution-in-the-design-of-fatal-error)) A volte lo sviluppo di un videogioco può protrarsi per mesi, anche anni. È quello che è accaduto con FATAL ERROR, titolo nato dalle menti di Ciro Continisio ed Ennio Pirolo ben 2 anni fa in occasione della GamesWeek di Milano. Nel corso degli anni il processo di sviluppo iterativo tipico dei videogiochi ha portato a vari miglioramenti tecnici, rimanendo però fedeli alle prime linee guida di game design. L’IA nel gioco ha adottato un interessante meccanismo di comportamenti che, una volta associati ad un bot governato dalla CPU, permettono a seconda dell’azione su schermo di attivare un determinato comportamento. Un approccio applicabile anche al di fuori dello sviluppo di videogiochi. ## Perché nel 2015 parliamo ancora di C++? -- Marco Arena ([@italiancpp](https://twitter.com/italiancpp)) +- Marco Arena ([@italiancpp](https://x.com/italiancpp)) - day 2 - 12:10 - 13:10 - Languages track ([slides](http://www.slideshare.net/Codemotion/marco-arena-perch-nel-2015-parliamo-ancora-di-c-codemotion-milan-2015)) La domanda è lecita, a 30 anni dalla presentazione del linguaggio, ma Marco Arena ha tutte le risposte nonostante quel giorno non fosse ancora nato. Il C++ è *molto popolare*: diversi software di uso quotidiano, tra cui probabilmente il browser che state usando, sono scritti in questo linguaggio. È inoltre *compatibile con il C* e, più in generale, si *preoccupa del passato*: segue uno standard ISO, la retrocompatibiltà è sempre garantita e i miglioramenti sono ottenuti aggiungendo nuovi costrutti. Non è *garbage collected*: il lifetime di oggetti e risorse è *scoped*, garantendo in questo modo un comportamento deterministico ed evitando complicazioni in sistemi *latency-critical*. È *indipendente dal paradigma*, perché ne comprende diversi, ed è adatto al *system programming* grazie al suo accesso a basso livello alla memoria. Sta inoltre *crescendo in fretta*: dopo oltre 20 anni in cui è rimasto sostanzialmente immutato, ha recentemente presentato diverse innovazioni e molte altre sono state annunciate per i prossimi anni. Da ultimo, è immerso in un *ecosistema straordinario*, composto da industrie, mondo accademico e user groups. ## Mobile senza Unity: il caso SBK -- Giuseppe Navarria ([@WaveringRadiant](https://twitter.com/waveringradiant)) +- Giuseppe Navarria ([@WaveringRadiant](https://x.com/waveringradiant)) - day 2 - 12:10 - 13:10 - Game Dev track ([slides](http://www.slideshare.net/Codemotion/giuseppe-navarria-mobile-senza-unity-il-caso-sbk)) Con tool in circolazione come Unity ed Unreal Engine quasi ci si scorda di come vengono costruiti i motori grafici dei videogiochi. Giuseppe Navarria ha spiegato alcune caratteristiche del motore realizzato in C++ per le versioni mobile del gioco SBK, evidenziando alcuni pregi acquisiti grazie proprio al “fai da te”. L’utilizzo di lightmap generate da immagini HDR, gli effetti di rifrazione della luce con pixel shader e spheremaps, nonché ombre precalcolate con effetto blob shadow, hanno permesso di raggiungere livelli qualitativi di un certo spessore anche su dispositivi un po’ datati. Interessante la divisione in moduli del motore che seleziona il miglior set di componenti per il dispositivo sul quale opera. ## Speeding up the Web with PHP 7 -- Rasmus Lerdorf ([@rasmus](https://twitter.com/rasmus)) +- Rasmus Lerdorf ([@rasmus](https://x.com/rasmus)) - day 2 - 14:10 - 14:50 - Languages track Da questo talk di **Rasmus Lerdorf** (creatore del linguaggio PHP) ci si sarebbe potuto aspettare una semplice lista delle nuove feature di PHP 7 (di cui abbiamo già parlato in [questo post](/php-7-overview), in realtà però il relatore si è spinto molto più in là mostrando alcuni **benchmark di comparazione delle performance** tra PHP 7, PHP 5 e HHVM 3.10, nei quali PHP 7 stracciava PHP 5 e teneva egregiamente il passo con HHVM 3.10, per poi dare una semplice ma approfondita overview rispetto ad alcune parti del lavoro fatto per ottenere quello che oggi è PHP 7 in termini di **performance e feature**. diff --git a/content/blog/ita/miniiad-vimercate-2015-reportage.md b/content/blog/ita/miniiad-vimercate-2015-reportage.md index 1dd3fec00..4dbf12380 100644 --- a/content/blog/ita/miniiad-vimercate-2015-reportage.md +++ b/content/blog/ita/miniiad-vimercate-2015-reportage.md @@ -23,12 +23,12 @@ Parlare di recensione della giornata mi sembra inappropriato. Preferisco sofferm Partiamo dal primo impatto: la location. Beh, complimenti ad Alcatel perché ha una sede molto bella! raggiungerla in auto non è stato tanto difficile e tutto quel verde dentro e fuori dagli uffici trasmette una bella sensazione. Come al solito sono in ritardo, giusto il tempo di un caffè, offerto dal nostro host, e qualche stretta di mano e subito si comincia. ## Keynote -Il keynote è di [Cliff Hazell](https://twitter.com/ixhd), un ragazzo che fa l'agile coach in Spotify. Ha illustrato una **tecnica di visualizzazione** della conoscenza e dei processi su una grande parete con dei post-it. Un qualcosa che mi ha ricordato l'[event storming](http://ziobrando.blogspot.it/2013/11/introducing-event-storming.html) che ho visto raccontare da [Alberto Brandolini](http://www.avanscoperta.it/it/author/a-brandolini/) a BetterSoftware, tuttavia mi è parso ci siano alcune differenze. In entrambi i metodi il risultato finale è **una parete piena di post-it che spiegano il modello** da sviluppare. Nell'event storming, la creazione partecipata della parete è l'evoluzione degli stati del modello sono il punto focale. Non ho mai avuto il piacere di usare event storming, ma tutte le presentazioni che ho visto delineano il modo in cui la parete "si riempie", mentre ho poche informazioni su come questa poi si traduca in software. Piuttosto, mi pare di aver colto che Cliff ponga molta enfasi su come man mano la conoscenza che stiamo visualizzando si evolva e man mano si traduca in componenti software. Mi intriga l'ipotesi di combinare le due cose! +Il keynote è di [Cliff Hazell](https://x.com/ixhd), un ragazzo che fa l'agile coach in Spotify. Ha illustrato una **tecnica di visualizzazione** della conoscenza e dei processi su una grande parete con dei post-it. Un qualcosa che mi ha ricordato l'[event storming](http://ziobrando.blogspot.it/2013/11/introducing-event-storming.html) che ho visto raccontare da [Alberto Brandolini](http://www.avanscoperta.it/it/author/a-brandolini/) a BetterSoftware, tuttavia mi è parso ci siano alcune differenze. In entrambi i metodi il risultato finale è **una parete piena di post-it che spiegano il modello** da sviluppare. Nell'event storming, la creazione partecipata della parete è l'evoluzione degli stati del modello sono il punto focale. Non ho mai avuto il piacere di usare event storming, ma tutte le presentazioni che ho visto delineano il modo in cui la parete "si riempie", mentre ho poche informazioni su come questa poi si traduca in software. Piuttosto, mi pare di aver colto che Cliff ponga molta enfasi su come man mano la conoscenza che stiamo visualizzando si evolva e man mano si traduca in componenti software. Mi intriga l'ipotesi di combinare le due cose! ![](/images/miniiad-vimercate-2015-reportage/visualization.jpg) ## Agile e il business delle aziende -La mia giornata prosegue parlando di **[Startup](http://www.ideastartup.it/startupzionario/)** e **[Lean](https://it.wikipedia.org/wiki/Produzione_snella)** con [Felice Pescatore](https://twitter.com/felicepescatore). Una sessione sul percorso "[dal garage al grattacielo](http://www.agileday.it/mini/2015/vimercate/#leanstartup)". Bello stile, coinvolgente! Ho già letto tanto su Lean, purtroppo non ho portato via nulla di nuovo. +La mia giornata prosegue parlando di **[Startup](http://www.ideastartup.it/startupzionario/)** e **[Lean](https://it.wikipedia.org/wiki/Produzione_snella)** con [Felice Pescatore](https://x.com/felicepescatore). Una sessione sul percorso "[dal garage al grattacielo](http://www.agileday.it/mini/2015/vimercate/#leanstartup)". Bello stile, coinvolgente! Ho già letto tanto su Lean, purtroppo non ho portato via nulla di nuovo. Anche il talk successivo [Kanban experiment](http://www.agileday.it/mini/2015/vimercate/#Kanban_experiment), su **[Kanban](https://it.wikipedia.org/wiki/Kanban)**, non mi ha detto nulla di nuovo. Mi piace però constatare che molti gruppi di lavoro che si stanno avvicinando alle metodologie Agili, scelgono Kanban. ## Large Scaling SCRUM @@ -36,7 +36,7 @@ Dopo un buon pranzo, ho assistito ad una [sessione](http://www.agileday.it/mini/ Tutto questo mi ha colpito moltissimo perché anche nella nostra realtà (non certo così grande e complessa) alcuni elementi della filiera non riusciamo a portarli dentro tutti i team. Ad esempio i web designer o il team di marketing. Tutti i team condividono il tempo e le competenze di questi gruppi, che a loro volta fanno iterazioni settimanali (non SCRUM). Il talk mi ha illustrato alcuni dei vantaggi di Less ed ha stuzzicato la mia curiosità. Ora dovrò capire come applicarlo concretamente! ## Retrospettive creative -Si è andato avanti parlando di **[retrospettive](http://retrospectivewiki.org/index.php?title=Main_Page)** con Marco Di Biase, uno SCRUM Master di Bravofly. Su questo tema, devo dare il merito a Marco di aver [condiviso](http://www.agileday.it/mini/2015/vimercate/#Miglioramento_continuo) un sacco di idee e scoperte fatte nel corso della sua esperienza. Io, ad esempio, ho iniziato a fare retrospettive con un certo format e da allora son riuscito a coinvolgere gli interlocutori più disparati del team (facciamo retrospettive tra team di addetti alla vendita e vengono fuori continue azioni di miglioramento come dalle retrospettive tra programmatori). Ma non ho mai provato a fare e farmi delle **domande diverse durante gli incontri**. Marco accennava che [Pierluigi Pugliese](https://twitter.com/p_pugliese) gli abbia mostrato decine di approcci diversi. +Si è andato avanti parlando di **[retrospettive](http://retrospectivewiki.org/index.php?title=Main_Page)** con Marco Di Biase, uno SCRUM Master di Bravofly. Su questo tema, devo dare il merito a Marco di aver [condiviso](http://www.agileday.it/mini/2015/vimercate/#Miglioramento_continuo) un sacco di idee e scoperte fatte nel corso della sua esperienza. Io, ad esempio, ho iniziato a fare retrospettive con un certo format e da allora son riuscito a coinvolgere gli interlocutori più disparati del team (facciamo retrospettive tra team di addetti alla vendita e vengono fuori continue azioni di miglioramento come dalle retrospettive tra programmatori). Ma non ho mai provato a fare e farmi delle **domande diverse durante gli incontri**. Marco accennava che [Pierluigi Pugliese](https://x.com/p_pugliese) gli abbia mostrato decine di approcci diversi. Mi ha colpito in particolare il format della retrospettiva con i cerchi concentrici che Marco suggerisce di usare per le iterazioni o per i periodi in cui le cose non vanno particolarmente bene, per ragionare sui problemi: ogni cerchio è un attore; il cerchio di cosa posso controllare io per fare meglio, di cosa può controllare il team per fare meglio e cosa invece è fuori dal nostro controllo ma sta facendo andare male le cose. diff --git a/content/blog/ita/php-7-overview.md b/content/blog/ita/php-7-overview.md index e22a729fd..f061afb93 100644 --- a/content/blog/ita/php-7-overview.md +++ b/content/blog/ita/php-7-overview.md @@ -272,4 +272,4 @@ Ecco alcune risorse utili: - [GoPHP7-ext](http://gophp7.org/gophp7-ext/) Progetto che supporta la migrazione delle estensioni verso PHP 7, raccogliendo risorse e consigli utili ad ottenere questo scopo. - [Getting started with PHP Extensions development](http://spaghetti.io/cont/article/getting-started-with-php-extensions-development/52/1.html) - Un mio breve articolo (in inglese) su come scrivere la propria prima estensione PHP. -Se il post vi è piaciuto non dimenticate di condividerlo e di commentarlo qui sotto o su twitter menzionando [@FacileIt_Engr](https://twitter.com/FacileIt_Engr). +Se il post vi è piaciuto non dimenticate di condividerlo e di commentarlo qui sotto o su twitter menzionando [@FacileIt_Engr](https://x.com/FacileIt_Engr). diff --git a/content/blog/ita/php-day-2015.md b/content/blog/ita/php-day-2015.md index 26578505c..5ee5bf2db 100644 --- a/content/blog/ita/php-day-2015.md +++ b/content/blog/ita/php-day-2015.md @@ -38,7 +38,7 @@ I talk sono in ordine cronologico. Buona lettura! #### PHP object mocking framework world: let's compare Prophecy and PHPUnit - * Sarah Khalil ([@saro0h](http://twitter.com/saro0h)) + * Sarah Khalil ([@saro0h](http://x.com/saro0h)) * Day 1 - 14:30 – 15:30 - track 1 ([slides](https://speakerdeck.com/saro0h/php-day-verona-2015-php-object-mocking-framework-world)) @@ -49,7 +49,7 @@ Ricordatevi di aggiungere qualche altra parola (oltre a prophecy) chiave nelle v #### Containerize your PHP - * Marek Jelen ([@marek_jelen](http://twitter.com/marek_jelen)) + * Marek Jelen ([@marek_jelen](http://x.com/marek_jelen)) * Day 1 - 15:30 – 16:30 - track 2 @@ -69,7 +69,7 @@ Abbiamo scoperto il [FOSHttpCacheBundle](http://github.com/FriendsOfSymfony/FOSH #### Hello, PSR-7 - * Beau Simensen ([@beausimensen](http://www.twitter.com/beausimensen)) + * Beau Simensen ([@beausimensen](http://www.x.com/beausimensen)) * Day 2 - 11:00 – 12:00 - track 2 ([slides](https://beau.io/talks/2015/05/16/hello-psr-7-phpday-2015/)) @@ -80,7 +80,7 @@ Lo standard sarà approvato a brevissimo (solo 3 giorni dopo il talk!) e molti a #### PHP Data Structures (and the impact of PHP 7 on them) - * Patrick Allaert ([@patrick_allaert](http://www.twitter.com/patrick_allaert)) + * Patrick Allaert ([@patrick_allaert](http://www.x.com/patrick_allaert)) * Day 2 - 12:00 – 13:00 - track 1 ([slides](http://www.slideshare.net/patrick.allaert/php-data-structures-and-the-impact-of-php-7-on-them-php-days-2015)) @@ -89,7 +89,7 @@ Questo talk, dal sapore molto tecnico, ci ha fatto addentrare negli internals de #### Doctrine ORM Good Practices and Tricks - * Marco Pivetta ([@Ocramius](http://www.twitter.com/Ocramius)) + * Marco Pivetta ([@Ocramius](http://www.x.com/Ocramius)) * Day 2 - 15:30 – 16:30 - track 1 @@ -101,7 +101,7 @@ Abbiamo voluto citare in questo articolo anche i **3 keynote** della conferenza: #### Talmudic Maxims to Maximize Your Growth as a Developer - * Yitzchok Willroth ([@coderabbi](http://www.twitter.com/coderabbi)) + * Yitzchok Willroth ([@coderabbi](http://www.x.com/coderabbi)) * Day 1 - keynote di apertura Yitz, studente rabbinico poi passato alla programmazione, molto famoso nella community PHP, ci ha spinto a considerare alcuni suoi consigli su come poterci **migliorare come sviluppatori** e come membri della community stessa: cercare e coltivare un mentore, essere pazienti ed accettare i consigli, aiutare gli altri per ripagare tutto questo, partecipare nell'open source... @@ -113,7 +113,7 @@ Personalmente, mi ha anche fatto scoprire tre siti piuttosto interessanti: #### Down the Rabbit Hole: Lessons Learned combining Career and Community - * Cal Evans ([@CalEvans](http://www.twitter.com/calevans)) + * Cal Evans ([@CalEvans](http://www.x.com/calevans)) * Day 2 - keynote di apertura Cal è il community manager (ma non chiamatelo così!) per Zend, e ci ha raccontato con estrema passione, qualche lacrima e in maniera molto divertente la sua storia, come è nata la sua carriera di programmatore e come il suo percorso si è intrecciato con la community PHP e il mondo dell'open source. @@ -122,7 +122,7 @@ Tutto questo per spiegarci come **far parte della community è un valore** impor #### Behind the Scenes of Maintaining an Open Source Project - * Jordi Boggiano ([@seldaek](http://twitter.com/seldaek)) + * Jordi Boggiano ([@seldaek](http://x.com/seldaek)) * Day 2 - keynote di chiusura Jordi è il creatore e mantainer di [Composer](https://getcomposer.org/), uno dei principali tool per un programmatore PHP. Nel suo keynote ci ha raccontato con franchezza la sua esperienza in prima persona nel **gestire un progetto open source** così vasto e popolare, come spesso sia difficile accontentare tutti, e alcuni retroscena e dettagli di qualche curiosa pull request. diff --git a/content/blog/ita/php-summer-camp-2015.md b/content/blog/ita/php-summer-camp-2015.md index 9b26e4a1f..9e0d8821a 100644 --- a/content/blog/ita/php-summer-camp-2015.md +++ b/content/blog/ita/php-summer-camp-2015.md @@ -57,8 +57,8 @@ Sono state approfondite alcune configurazioni particolari di PhpUnit che consent ### Modernising the legacy (Marek Matulka) Il presentatore ha illustrato le feature implementate da un'applicazione PHP legacy. Il codice era molto disordinato e praticamente impossibile da testare. Logica di business, data retrieval e viste erano mescolate in un'applicazione che non era dotata nemmeno di un singolo [front-controller](https://it.wikipedia.org/wiki/Front_Controller_pattern). - - + + L'applicazione era un semplice sito di e-commerce per la vendita di articoli e comprendeva una sezione di checkout. Nel dover aggiungere un nuova funzionalità - il calcolo real-time delle spese di spedizione - si è voluto introdurre alcune componenti di Symfony per migliorare la qualità del sistema. È stato illustrato come introdurre e configurare le seguenti componenti: [**DependencyInjection**](http://symfony.com/it/doc/current/components/dependency_injection/introduction.html), [**Twig**](http://twig.sensiolabs.org/) e [**HttpFoundation**](http://symfony.com/it/doc/current/components/http_foundation/index.html). @@ -81,16 +81,16 @@ In generale il workshop è stato interessante ma, rispetto agli altri, conteneva Alcuni esempi di domande: Mac vs Linux, [Functional programming](http://engineering.facile.it/programmazione-funzionale-perche-preoccuparsi/) vs [OOP](https://it.wikipedia.org/wiki/Programmazione_orientata_agli_oggetti), Tea vs Coffee, USA vs Europe Il vincitore Ryan Weaver è stato selezionato dal pubblico in base ad un conteggio di consensi. È stato un momento divertente con argomenti molto vari anche al di fuori dell'ambito informatico. - - + + # Giovedì 27 agosto ### Loose coupling in practice (Jakub Zalas) L'obiettivo della sessione era disaccoppiare l'applicazione [Symfony Demo](http://symfony.com/blog/introducing-the-symfony-demo-application) da [Doctrine ORM/DBAL](http://www.doctrine-project.org/) e di consentire lo switch ad altre strategie di storage. - - + + Nonostante il sistema fosse un semplice gestionale per articoli di blog, il lavoro si è subito rilevato molto più lungo e complesso del previsto. È stato interessante notare come Symfony full-stack abbia numerosi legami "nascosti" con Doctrine. Esempi sono il componente [Security](http://symfony.com/it/doc/current/book/security.html) e il [ParamConverter](http://symfony.com/it/doc/current/bundles/SensioFrameworkExtraBundle/annotations/converters.html). Si è iniziato nel creare i **repository as services** in modo da consentire la rimozione di qualsiasi riferimento a Doctrine nei controller. @@ -106,8 +106,8 @@ Anche in questo workshop le soluzioni ai problemi erano già presenti nel reposi ### Next-gen package development with Puli (Bernhard Schussek) Questa sessione è stata divisa in due parti. La prima è una presentazione del **progetto [Puli](http://docs.puli.io/en/latest/)**. Sono state illustrate le funzionalità dell'applicazione e i problemi che essa risolve. Puli è un gestore della configurazione di pacchetti che mira a rendere **le librerie PHP più omogenee e più semplici da configurare**. Esso, per funzionare, usa [Composer](https://getcomposer.org/) che continua a gestire il package retrieval e l'autoloading. - - + + Puli consente l'accesso alle risorse di un pacchetto in modo semplice e veloce. Le risorse qualitativamente possono essere molto varie: immagini, template, file per la localizzazione, fogli di stile, basi di dati, ecc. Puli introduce il concetto di **percorso virtuale**, un nuovo standard per l'accesso alle risorse condivise da uno o più pacchetti. Ciascun componente Puli definisce dei mappings che consentono di tradurre un percorso virtuale in percorso reale. @@ -149,8 +149,8 @@ Le attività di Input/Output superflue causano rallentamenti, esempi sono le scr ### Migrating to Symfony 3 (Nicolas Grekas) Questo workshop ha consentito di apprendere la **roadmap a lungo termine del framework Symfony**. - - + + È stato annunciato che l'ultima versione LTS di Symfony 2 sarà **la versione 2.8 completamente compatibile, quanto a funzionalità, con la versione 3.0**. È interessante notare che non ci saranno cambiamenti stravolgenti per Symfony vesione 3.0: essa infatti rimuove soltanto le funzionalità deprecate nelle versioni precedenti. Sono stati alresì spiegati i concetti di [versionamento semantico](http://engineering.facile.it/git-flow-semantic-versioning/) adottati dal framework a partire dalla versione 2.3. @@ -162,8 +162,8 @@ Ciò consente all'utente di rilevare subito eventuali utilizzi non corretti già ### Meet the experts Diversi gruppi di persone si sono riunite per parlare di molteplici argomenti. - - + + Ciascun gruppo comprendeva, tra gli altri partecipanti, un paio di persone esperte dell'argomento per moderare la discussione. Io ho partecipato alla discussione di: [**E-commerce**](https://it.wikipedia.org/wiki/Commercio_elettronico) su Symfony (con particolare riguardo a [Sylius](http://sylius.org/)), [**software testing**](https://it.wikipedia.org/wiki/Collaudo_del_software) e **[API](https://it.wikipedia.org/wiki/Application_programming_interface) design**. È stato interessante discutere su come progettare architetture orientate a microservizi cercando di definire API stabili e solide. diff --git a/themes/hugo-future-imperfect b/themes/hugo-future-imperfect index b1d5faca6..837d9ee8d 160000 --- a/themes/hugo-future-imperfect +++ b/themes/hugo-future-imperfect @@ -1 +1 @@ -Subproject commit b1d5faca68fe881394df7de783f5892bbf0f4c2d +Subproject commit 837d9ee8dd02d5498105901463039554d211d237 From 7165e698664c050f7ff82cd49746e0bf586e6a65 Mon Sep 17 00:00:00 2001 From: Matteo Garza Date: Thu, 4 Jan 2024 09:33:40 +0100 Subject: [PATCH 3/5] fix(pr74): fix static icons --- static/css/add-on.css | 4 ++++ themes/hugo-future-imperfect | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/static/css/add-on.css b/static/css/add-on.css index e036d1db5..382666a1d 100644 --- a/static/css/add-on.css +++ b/static/css/add-on.css @@ -2,6 +2,10 @@ font-size: 1.8em; } +#intro ul.icons li { + padding: 0 .8em 0 0; +} + .post > footer .stats { margin-left: 24px; } diff --git a/themes/hugo-future-imperfect b/themes/hugo-future-imperfect index 837d9ee8d..49bb1e251 160000 --- a/themes/hugo-future-imperfect +++ b/themes/hugo-future-imperfect @@ -1 +1 @@ -Subproject commit 837d9ee8dd02d5498105901463039554d211d237 +Subproject commit 49bb1e251449cc2f77c9eebb0abdb623abb1e71b From 012b9236b84ed6a9373c447ea851759813922aea Mon Sep 17 00:00:00 2001 From: Matteo Garza Date: Thu, 4 Jan 2024 09:49:17 +0100 Subject: [PATCH 4/5] fix icon style on sidebar --- static/css/add-on.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/static/css/add-on.css b/static/css/add-on.css index 382666a1d..4bf13f375 100644 --- a/static/css/add-on.css +++ b/static/css/add-on.css @@ -2,7 +2,8 @@ font-size: 1.8em; } -#intro ul.icons li { +#intro ul.icons li, +#footer ul.icons li { padding: 0 .8em 0 0; } From 57c8a66ca9ceb09237a714cb73271e9539d58265 Mon Sep 17 00:00:00 2001 From: Matteo Garza Date: Thu, 4 Jan 2024 15:04:58 +0100 Subject: [PATCH 5/5] Fix share links icons style --- static/css/add-on.css | 9 +++++++-- themes/hugo-future-imperfect | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/static/css/add-on.css b/static/css/add-on.css index 4bf13f375..1fe71c904 100644 --- a/static/css/add-on.css +++ b/static/css/add-on.css @@ -2,11 +2,16 @@ font-size: 1.8em; } -#intro ul.icons li, -#footer ul.icons li { +#sidebar #intro ul.icons li, +#sidebar #footer ul.icons li { padding: 0 .8em 0 0; } +#sidebar #intro ul.icons li:last-child, +#sidebar #footer ul.icons li:last-child { + padding: 0; +} + .post > footer .stats { margin-left: 24px; } diff --git a/themes/hugo-future-imperfect b/themes/hugo-future-imperfect index 49bb1e251..8cb7c17d3 160000 --- a/themes/hugo-future-imperfect +++ b/themes/hugo-future-imperfect @@ -1 +1 @@ -Subproject commit 49bb1e251449cc2f77c9eebb0abdb623abb1e71b +Subproject commit 8cb7c17d32d28b0f4664f9a00bad3d172ecb4ce1