From f54d241357f31c71da3d1891c1877adc24ca4018 Mon Sep 17 00:00:00 2001
From: David Dias Depending on the platform, sometimes you may get audiobooks in MP3 format. However, MP3 is not the best format for audiobooks. It doesn't support chapters, and it's not bookmarkable. M4B is the best format for audiobooks. It supports chapters and is bookmarkable. It's also the format used by Apple for audiobooks. Last year, I discovered the only MacOS that simply convert multiple MP3 files into one M4B file. It's called AudioBookBinder App Store page and can be found on the App Store for free! AudioBook Binder is a simple app that does one thing and does it well. It converts MP3 files into M4B files. You drag your MP3 files into the app, and the cover, and it will convert them into one M4B file.How to use AudioBookBinder?
\n
The options are limited but sufficient. You can set the cover, the title, the author, and the genre. I usually leave it to "Audiobook" for the genre.
\nI hope you find this app useful as I did.
\nAnd in case you store some audiobooks on your own server, you take a look at audiobookshelf. It's a Google and Apple app that allows you to listen to your audiobooks from your own server. It's open-source and free. You're welcome!
\n", + "content_html": "Depending on the platform, sometimes you may get audiobooks in MP3 format. However, MP3 is not the best format for audiobooks. It doesn't support chapters, and it's not bookmarkable. M4B is the best format for audiobooks. It supports chapters and is bookmarkable. It's also the format used by Apple for audiobooks.
\nLast year, I discovered the only MacOS that simply convert multiple MP3 files into one M4B file. It's called AudioBookBinder App Store page and can be found on the App Store for free!
\nAudioBook Binder is a simple app that does one thing and does it well. It converts MP3 files into M4B files. You drag your MP3 files into the app, and the cover, and it will convert them into one M4B file.
\nThe options are limited but sufficient. You can set the cover, the title, the author, and the genre. I usually leave it to "Audiobook" for the genre.
\nI hope you find this app useful as I did.
\nAnd in case you store some audiobooks on your own server, you take a look at audiobookshelf. It's a Google and Apple app that allows you to listen to your audiobooks from your own server. It's open-source and free. You're welcome!
\n", "url": "https://thedaviddias.dev/notes/how-to-convert-mp3-to-m4b-for-audiobooks", "title": "How to Convert MP3 to M4B for Audiobooks lovers, on MacOS?", "summary": "Explore \"AudioBookBinder\", a handy MacOS app designed for making audiobooks. It quickly turns MP3 files into M4B format, making audiobook creation a breeze.", @@ -48,7 +48,7 @@ }, { "id": "https://thedaviddias.dev/notes/how-to-fix-set-output-nvmrc-github-actions", - "content_html": "You may be getting the issue "The set-output
command is deprecated and will be disabled soon. Please upgrade to using Environment Files." from your Github workflow.
Few months ago, I choose to update some of my Github workflows to read from my .nvmrc
file instead of manually specifying my node version.
on: push\n\njobs:\n build:\n runs-on: ubuntu-latest\n\n steps:\n - name: Detect Node version\n run: echo ::set-output name=NODE_VERSION::$(cat .nvmrc)\n id: nvmrc\n\n - name: Use Node.js ${{ steps.nvmrc.outputs.NODE_VERSION }}\n uses: actions/setup-node@v3\n with:\n node-version: ${{ steps.nvmrc.outputs.NODE_VERSION }}\n
But since October 2022 and the runner version 2.298.2
, Github shows a warning regarding a future depreciation of the set-output
command.
After few trials, I figured out how to update using the $GITHUB_OUTPUT
instead:
on: push\n\njobs:\n build:\n runs-on: ubuntu-latest\n\n steps:\n - name: Detect Node version\n run: echo "NODE_VERSION=$(cat .nvmrc)" >> $GITHUB_OUTPUT\n id: nvmrc\n # shell: bash (to be added if you use composite actions)\n\n - name: Use Node.js ${{ steps.nvmrc.outputs.NODE_VERSION }}\n uses: actions/setup-node@v3\n with:\n node-version: '${{ steps.nvmrc.outputs.NODE_VERSION }}'\n
And "voilà", the warning should have disappeared and you should see the number of the version right after Use Node.js XXXX
in your workflow.
You may be getting the issue "The set-output
command is deprecated and will be disabled soon. Please upgrade to using Environment Files." from your Github workflow.
Few months ago, I choose to update some of my Github workflows to read from my .nvmrc
file instead of manually specifying my node version.
on: push\n\njobs:\n build:\n runs-on: ubuntu-latest\n\n steps:\n - name: Detect Node version\n run: echo ::set-output name=NODE_VERSION::$(cat .nvmrc)\n id: nvmrc\n\n - name: Use Node.js ${{ steps.nvmrc.outputs.NODE_VERSION }}\n uses: actions/setup-node@v3\n with:\n node-version: ${{ steps.nvmrc.outputs.NODE_VERSION }}\n
But since October 2022 and the runner version 2.298.2
, Github shows a warning regarding a future depreciation of the set-output
command.
After few trials, I figured out how to update using the $GITHUB_OUTPUT
instead:
on: push\n\njobs:\n build:\n runs-on: ubuntu-latest\n\n steps:\n - name: Detect Node version\n run: echo "NODE_VERSION=$(cat .nvmrc)" >> $GITHUB_OUTPUT\n id: nvmrc\n # shell: bash (to be added if you use composite actions)\n\n - name: Use Node.js ${{ steps.nvmrc.outputs.NODE_VERSION }}\n uses: actions/setup-node@v3\n with:\n node-version: '${{ steps.nvmrc.outputs.NODE_VERSION }}'\n
And "voilà", the warning should have disappeared and you should see the number of the version right after Use Node.js XXXX
in your workflow.
This was a long wait! After months of lurking on Youtube watching others playing with their Deck, I finally got my purchase confirmation email for the Steam Deck!
\n\nWhat kept me sane during this time was probably this tool created by Labidou51. I was able to get a sense of when I would receive the email confirmation.
\nSome more days to wait and I hope to get this new amazing piece of tech (it's a computer) in my own hands! Maybe I can find a nice skin on Dbrand in the meantime 😜?!
", + "content_html": "This was a long wait! After months of lurking on Youtube watching others playing with their Deck, I finally got my purchase confirmation email for the Steam Deck!
\n\nWhat kept me sane during this time was probably this tool created by Labidou51. I was able to get a sense of when I would receive the email confirmation.
\nSome more days to wait and I hope to get this new amazing piece of tech (it's a computer) in my own hands! Maybe I can find a nice skin on Dbrand in the meantime 😜?!
", "url": "https://thedaviddias.dev/notes/finally-received-steam-deck-confirmation-email", "title": "Finally received my Steam Deck confirmation email!", "summary": "After months of waiting, I finally received my Steam Deck confirmation email!", @@ -84,7 +84,7 @@ }, { "id": "https://thedaviddias.dev/articles/ideal-desk-setup-personal-journey", - "content_html": "I first embarked on my journey to create the perfect desk setup in 2018, when I made the big move from Mauritius to Canada.
\nThe notion of an ideal setup has always been a tantalizing dream of mine. But when can we honestly say, "This is it, this is the setup I always wanted."? Well, there's no definitive answer to that. However, after a few years of relentless experimentation, I can confidently say that I'm truly happy with what I have.
\n(Check out the list of all the gear I use at https://kit.co/thedaviddias)
\nYes, my desk is usually that clean! No kidding! Almost every morning or night, I make a habit of removing from my desk what I don't need, like a cup of tea or the last letter that came in the mail.
\n\nWhat makes a desk setup almost perfect? It just has to be a place where you feel comfortable and productive! I don't like having a space cluttered with things I don't really need. I am always trying to figure out how I can replace a specific function with a smaller or more minimalistic piece of gear. It's sometimes hard to strike a balance between minimalism and productivity, but I think I am getting there.
\nMy main computers (both personal and professional) are Macs. My personal one is a MacBook M1 Max, 14-inch from 2021 with 32 GB of RAM and a 2 TB hard drive. And of course, I added a DBrand skin called "Top Skin Hyperblack Titanium" for the top and Matte Black for the bottom.
\nAs you can see in the picture above, I work with two screens instead of one. Many people I know are fans of wide, curved screens. I've tried it, but I constantly put my apps in full screen and you can't do that without a window management app.
\nI love mechanical keyboards! I have multiple ones, but the one I chose for my setup is the Keychron K3 Ultra-Slim 75%. It's thin and wireless. The keys don't make too much noise, which is important when you are in a meeting. I use it in combination with the Logitech MX Master 3S.
\nI have studied and played music for more than 10 years. But for many years, I didn't touch a single instrument. 2-3 years ago, I decided to get back to it. I initially bought the Novation Mini [MK3]. It was nice creating some songs in Ableton with it, but I quickly felt that I needed normal keys. After weeks of research and comparison, I chose the Novation Launchkey 49 MK3.
\n\nI'm fortunate enough to afford access to Kontakt and Komplete Standard edition from Native Instruments. They have so many instruments, I'm still exploring them all!
\nI started tinkering with electronics in 2011. I have left many electronic gears in every country and place I lived in! I have built a lot of unfinished projects. These days, time is the only thing that is missing to finish them. But I still love playing with electronics. I have the amazing Weller Digital Soldering Station (WE1010NA) and a few boxes filled with tools and components. I might write an article exclusively about my tools!
\n\nIronically, what took me a long time to find was the magnifying glass. I had a specific idea in mind. I finally found one that seems to be using exactly the same arm as Rode. Funny.
\nMaybe one day I will have a dedicated desk for electronics. But for now, I'm happy with what I have.
\nI wish I was a better artist! At least, I've been trying! I have a lot of respect for people who can draw, paint, etc... But whenever I can, I try to learn something new. Doing something with my hands is a great way to relax and forget about the computer and coding. I wish I could spend more time doing that.
\nA few years ago, when I was living in Paris, I would spend a fortune at Aroma Zone. I would make products based on essential oils. I would make my own shampoo, shower gel, etc... I also made my own candles. It was amazing! Unfortunately, in Canada, I've never found a similar shop.
\n\nEveryone is different, and our needs and aspirations are different. I am curious to know - what is your ideal desk setup? What do you like to have on your desk? What do you enjoy doing? What is your dream setup?
", + "content_html": "I first embarked on my journey to create the perfect desk setup in 2018, when I made the big move from Mauritius to Canada.
\nThe notion of an ideal setup has always been a tantalizing dream of mine. But when can we honestly say, "This is it, this is the setup I always wanted."? Well, there's no definitive answer to that. However, after a few years of relentless experimentation, I can confidently say that I'm truly happy with what I have.
\n(Check out the list of all the gear I use at https://kit.co/thedaviddias)
\nYes, my desk is usually that clean! No kidding! Almost every morning or night, I make a habit of removing from my desk what I don't need, like a cup of tea or the last letter that came in the mail.
\n\nWhat makes a desk setup almost perfect? It just has to be a place where you feel comfortable and productive! I don't like having a space cluttered with things I don't really need. I am always trying to figure out how I can replace a specific function with a smaller or more minimalistic piece of gear. It's sometimes hard to strike a balance between minimalism and productivity, but I think I am getting there.
\nMy main computers (both personal and professional) are Macs. My personal one is a MacBook M1 Max, 14-inch from 2021 with 32 GB of RAM and a 2 TB hard drive. And of course, I added a DBrand skin called "Top Skin Hyperblack Titanium" for the top and Matte Black for the bottom.
\nAs you can see in the picture above, I work with two screens instead of one. Many people I know are fans of wide, curved screens. I've tried it, but I constantly put my apps in full screen and you can't do that without a window management app.
\nI love mechanical keyboards! I have multiple ones, but the one I chose for my setup is the Keychron K3 Ultra-Slim 75%. It's thin and wireless. The keys don't make too much noise, which is important when you are in a meeting. I use it in combination with the Logitech MX Master 3S.
\nI have studied and played music for more than 10 years. But for many years, I didn't touch a single instrument. 2-3 years ago, I decided to get back to it. I initially bought the Novation Mini [MK3]. It was nice creating some songs in Ableton with it, but I quickly felt that I needed normal keys. After weeks of research and comparison, I chose the Novation Launchkey 49 MK3.
\n\nI'm fortunate enough to afford access to Kontakt and Komplete Standard edition from Native Instruments. They have so many instruments, I'm still exploring them all!
\nI started tinkering with electronics in 2011. I have left many electronic gears in every country and place I lived in! I have built a lot of unfinished projects. These days, time is the only thing that is missing to finish them. But I still love playing with electronics. I have the amazing Weller Digital Soldering Station (WE1010NA) and a few boxes filled with tools and components. I might write an article exclusively about my tools!
\n\nIronically, what took me a long time to find was the magnifying glass. I had a specific idea in mind. I finally found one that seems to be using exactly the same arm as Rode. Funny.
\nMaybe one day I will have a dedicated desk for electronics. But for now, I'm happy with what I have.
\nI wish I was a better artist! At least, I've been trying! I have a lot of respect for people who can draw, paint, etc... But whenever I can, I try to learn something new. Doing something with my hands is a great way to relax and forget about the computer and coding. I wish I could spend more time doing that.
\nA few years ago, when I was living in Paris, I would spend a fortune at Aroma Zone. I would make products based on essential oils. I would make my own shampoo, shower gel, etc... I also made my own candles. It was amazing! Unfortunately, in Canada, I've never found a similar shop.
\n\nEveryone is different, and our needs and aspirations are different. I am curious to know - what is your ideal desk setup? What do you like to have on your desk? What do you enjoy doing? What is your dream setup?
", "url": "https://thedaviddias.dev/articles/ideal-desk-setup-personal-journey", "title": "The Ideal Desk Setup: A Personal Journey", "summary": "Join me as I take you on a tour of my desk setup, showing how it has evolved over the years, and how it enhances my productivity and creative pursuits. Let's discuss and share our ideal desk setups!", @@ -97,7 +97,7 @@ }, { "id": "https://thedaviddias.dev/articles/decade-web-development-personal-journey-showcase", - "content_html": "I published my first website around 2001. Probably before that. Almost 20 years ago. Unfortunately, the exact date I started doing web development is probably lost by now.
\nEverything began when my dear friend, Christophe Raimbault, a priest in the Diocese of Tours, asked if I was interested in managing and building a website for the "Notre-Dame La Riche" parish. If you are not too familiar with what a parish is, it's mostly a local community of different churches. At the time, this sounded like an amazing challenge but I had no idea what I was getting into. I had never touch a line of code before, I was only 15 years old. I never stopped coding since then.
\nThe following list of websites are the ones that had the most impact on my life. I build a lot more websites but smaller and less important. I'm not including them here.
\n"Notre-Dame La Riche" parish website was my first website. At the time, no blogs, no Google, no Github... most of my time was dedicated in studying code source of other websites, reading books about HTML, CSS, PHP. It was definitelly a fun time. I was learning a lot, things seemed to be a lot more simple than nowadays.
\n\nI still have some code source and I can't bear looking at it just for few seconds 🤣: CSS mixed with HTML, no version control, layouts build with tables... as I said, it was fun but I'm glad things have changed. The website had multiple refactoring along the years. I remember having some animated banners build with Flash.
\n\n\nWikipedia was launched in 2001. At this time, wikis were popular and Wikipedia was just beginning. I remember how much criticism this community project received. For many reasons that I have somewhat forgotten, I decided to create a dedicated wiki related to Catholic knowledge. I named it WikiKto (Kto is the French abbreviation for Catholic).
\nTo my great surprise, the project gained a lot of contributors. I was no longer alone. I was not the only one who thought that a wiki about Catholic knowledge was a good idea. I was not the only one who believed that Catholic knowledge should be shared and made accessible to everyone.
\nThe project was officially launched on May 13, 2005. I had to shut it down a little over a year later when I moved to Brazil and could no longer manage it.
\n\n\nWikiKtosource was launched few weeks after WikiKto and was the equivalent to Wikimedia. It was a wiki dedicated to offer open source resources for the catholic community. It was a place to share and download resources like images mainly.
\n\nI created a first version of my personal blog in 2010. Few months before I started my first job as a web developer. For many years, creating new content and maintaining a blog has been a challenge for me with so many things and ideas to create. The current version of my blog (2022-2023) is probably the one that finally got the most attention to me.
\n\n\n\nBack from Brazil, I decided to create a forum to help Brazilians to move to France and to connect to other Brazilians living in France. Thanks to all my contacts made in Brazil, I was able to get a lot of exposure and the forum and blog got very popular.
\nfrontenddeveloper.fr
was another trial to create a blog about front-end development. I was not very active on it and I decided to close it after few months.
The Front-End Checklist is an open-source project I created just few month before leaving Mauritius. Initially build for my frontend team, it became a worlwide and very popular project around the globe. I have been meaning to build a V2, more modern and with a better user experience. Not sure if and when I will have time to do it.
\n\nI officially start the podcast World Web Stories when I was living in Mauritus, in 2016. I was not very active, only had 5 episodes and it was in French. In 2021, unemployed for few weeks, I decided to relaunch the podcast in English with a new format and with the goal to interview one person from each country in the world.
\nUnfortunately, I choose to spend more time on my other podcast "Erreur 200". I still want to continue this project, but I'm not sure when I will.
\n\nErreur 200 is a French podcast I co-host with Jean-Rémy Duboc about web development. We talk about our experience, our mistakes, our successes, our tips and tricks. We also interview people from the web development community.
\n\nLooking back more than 10 years, I'm very proud and grateful for all the opportunities and projects I had the chance to work on. I'm also very grateful for all the people I met along the way. Those projects shaped in a way my career and life and I'm not even mentionning all the professional projects I've worked on.
", + "content_html": "I published my first website around 2001. Probably before that. Almost 20 years ago. Unfortunately, the exact date I started doing web development is probably lost by now.
\nEverything began when my dear friend, Christophe Raimbault, a priest in the Diocese of Tours, asked if I was interested in managing and building a website for the "Notre-Dame La Riche" parish. If you are not too familiar with what a parish is, it's mostly a local community of different churches. At the time, this sounded like an amazing challenge but I had no idea what I was getting into. I had never touch a line of code before, I was only 15 years old. I never stopped coding since then.
\nThe following list of websites are the ones that had the most impact on my life. I build a lot more websites but smaller and less important. I'm not including them here.
\n"Notre-Dame La Riche" parish website was my first website. At the time, no blogs, no Google, no Github... most of my time was dedicated in studying code source of other websites, reading books about HTML, CSS, PHP. It was definitelly a fun time. I was learning a lot, things seemed to be a lot more simple than nowadays.
\nI still have some code source and I can't bear looking at it just for few seconds 🤣: CSS mixed with HTML, no version control, layouts build with tables... as I said, it was fun but I'm glad things have changed. The website had multiple refactoring along the years. I remember having some animated banners build with Flash.
\nWikipedia was launched in 2001. At this time, wikis were popular and Wikipedia was just beginning. I remember how much criticism this community project received. For many reasons that I have somewhat forgotten, I decided to create a dedicated wiki related to Catholic knowledge. I named it WikiKto (Kto is the French abbreviation for Catholic).
\nTo my great surprise, the project gained a lot of contributors. I was no longer alone. I was not the only one who thought that a wiki about Catholic knowledge was a good idea. I was not the only one who believed that Catholic knowledge should be shared and made accessible to everyone.
\nThe project was officially launched on May 13, 2005. I had to shut it down a little over a year later when I moved to Brazil and could no longer manage it.
\nWikiKtosource was launched few weeks after WikiKto and was the equivalent to Wikimedia. It was a wiki dedicated to offer open source resources for the catholic community. It was a place to share and download resources like images mainly.
\n\nI created a first version of my personal blog in 2010. Few months before I started my first job as a web developer. For many years, creating new content and maintaining a blog has been a challenge for me with so many things and ideas to create. The current version of my blog (2022-2023) is probably the one that finally got the most attention to me.
\nBack from Brazil, I decided to create a forum to help Brazilians to move to France and to connect to other Brazilians living in France. Thanks to all my contacts made in Brazil, I was able to get a lot of exposure and the forum and blog got very popular.
\nfrontenddeveloper.fr
was another trial to create a blog about front-end development. I was not very active on it and I decided to close it after few months.
The Front-End Checklist is an open-source project I created just few month before leaving Mauritius. Initially build for my frontend team, it became a worlwide and very popular project around the globe. I have been meaning to build a V2, more modern and with a better user experience. Not sure if and when I will have time to do it.
\n\nI officially start the podcast World Web Stories when I was living in Mauritus, in 2016. I was not very active, only had 5 episodes and it was in French. In 2021, unemployed for few weeks, I decided to relaunch the podcast in English with a new format and with the goal to interview one person from each country in the world.
\nUnfortunately, I choose to spend more time on my other podcast "Erreur 200". I still want to continue this project, but I'm not sure when I will.
\n\nErreur 200 is a French podcast I co-host with Jean-Rémy Duboc about web development. We talk about our experience, our mistakes, our successes, our tips and tricks. We also interview people from the web development community.
\n\nLooking back more than 10 years, I'm very proud and grateful for all the opportunities and projects I had the chance to work on. I'm also very grateful for all the people I met along the way. Those projects shaped in a way my career and life and I'm not even mentionning all the professional projects I've worked on.
", "url": "https://thedaviddias.dev/articles/decade-web-development-personal-journey-showcase", "title": "My Decade in Web Development: A Personal Journey and Showcase", "summary": "Dive into my decade-long journey in web development, chronicling key projects that have shaped my career.", @@ -110,7 +110,7 @@ }, { "id": "https://thedaviddias.dev/articles/raycast-applications-super-developer", - "content_html": "Spolight on Mac is great, but it always lacked the possibility to add custom commands and third party access. And that's where Alfred comes in. It's a great application that allows you to do just that. I have been a big fan of "Alfred" at least since 2015. I would recommend this application to anyone who wants to be more productive on their Mac. I was a big fan!
\nBut few months ago, one of my colleague talked to me about Raycast. Eager to always find better tools and expand my productivity, I decided to give it a try. The first thing I noticed was the speed. Not that "Alfred" is slow, but Raycast was just blazing fast!
\nI was hooked! And when I found out that all the applications were build in TypeScript, this was the cherry on the cake! After a few weeks now using it, I don't see myself going back.
\nAnd today, I wanted to share with you the 10 applications I use the most in Raycast, on a daily basis. Those applications are more towards developers but I highly recommend you to check Raycast out (it's free)
\n1Password has been my password manager for many years. I can search, copy username or password, open the website. The only annoying part is the fact that 1Password always ask me to give access to the application. Annoying but still useful.
\nI use TailwindCSS and nothing better than opening the TailwindCSS documentation directly from Raycast. I could search directly on the website but this saves me some clicks.
\nOpen pull requests, notifications, discussions from Github... I can also search directly repositories from Raycast.
\nPlay, pause, stop, next... I can control Spotify directly from Raycast. This is something I was always using on Alfred, couldn't approve Raycast if I didn't have this option.
\nRaindrops is my favourite bookmark manager. The kind of tool that constantly adds new features. I can search, open, add new bookmarks directly from Raycast with the Raindrop application.
\nI love seeing the status of my deployment on Vercel from Raycast. Can directly open my projects too.
\nI use "Visual Studio Code" Raycast App in combinaison with "Project Manager" to quickly access all my projects in an instant.
\nThis is not an application, but a feature I loved on Alfred and actually exists on Raycast, even it's slighly less powerful.
\n"Clipboard History" give you access to your last copied items. I've assign the double ⌥
(action) key to open the clipboard history. This is a feature I use constantly, and I'm glad it's available on Raycast.
Spolight on Mac is great, but it always lacked the possibility to add custom commands and third party access. And that's where Alfred comes in. It's a great application that allows you to do just that. I have been a big fan of "Alfred" at least since 2015. I would recommend this application to anyone who wants to be more productive on their Mac. I was a big fan!
\nBut few months ago, one of my colleague talked to me about Raycast. Eager to always find better tools and expand my productivity, I decided to give it a try. The first thing I noticed was the speed. Not that "Alfred" is slow, but Raycast was just blazing fast!
\nI was hooked! And when I found out that all the applications were build in TypeScript, this was the cherry on the cake! After a few weeks now using it, I don't see myself going back.
\nAnd today, I wanted to share with you the 10 applications I use the most in Raycast, on a daily basis. Those applications are more towards developers but I highly recommend you to check Raycast out (it's free)
\n1Password has been my password manager for many years. I can search, copy username or password, open the website. The only annoying part is the fact that 1Password always ask me to give access to the application. Annoying but still useful.
\nI use TailwindCSS and nothing better than opening the TailwindCSS documentation directly from Raycast. I could search directly on the website but this saves me some clicks.
\nOpen pull requests, notifications, discussions from Github... I can also search directly repositories from Raycast.
\nPlay, pause, stop, next... I can control Spotify directly from Raycast. This is something I was always using on Alfred, couldn't approve Raycast if I didn't have this option.
\nRaindrops is my favourite bookmark manager. The kind of tool that constantly adds new features. I can search, open, add new bookmarks directly from Raycast with the Raindrop application.
\nI love seeing the status of my deployment on Vercel from Raycast. Can directly open my projects too.
\nI use "Visual Studio Code" Raycast App in combinaison with "Project Manager" to quickly access all my projects in an instant.
\nThis is not an application, but a feature I loved on Alfred and actually exists on Raycast, even it's slighly less powerful.
\n"Clipboard History" give you access to your last copied items. I've assign the double ⌥
(action) key to open the clipboard history. This is a feature I use constantly, and I'm glad it's available on Raycast.
User testing is a crucial tool for gathering feedback on a product, but it's not enough to truly understand and improve user engagement. For the past 13 years, I have been building multi-language platforms for international brands and for a wide variety of users. Even in a space that constantly changes, where users have evolving needs, it's important to also acknowledge the role that experience plays in understanding them.
\nBeing a Front-End Developer gave me and all my colleagues around the world a unique perspective on user experience. We understand how small design decisions can have a big impact on the user experience, and we have a deep understanding of how users interact with products. By leveraging our experience in front-end development, we can help create products that are not only effective but also enjoyable to use, leading to increased user satisfaction and loyalty.
\nUser testing is a critical component of product development that can help identify usability issues and gather feedback from real users. By testing products with representative users, product teams can gain valuable insights in how users interact with their interfaces and what their pain points are. Whatever you use services like User Testing, or your own user testing directly with regular users, user testing also possess some limits that can’t be overlooked.
\nFor example, users may not always be able to articulate their needs and preferences accurately, or identify more obvious usability issues that sometimes are more subtle or hidden. User testing is also typically conducted in a controlled environment, which may not always accurately reflect real-wold usage scenarios.
\nWhat about people that don’t use technology in a daily basis?
\nUsually user testing is done by a certain user group or demographics and don’t include 100% of all users. From my point of view, user testing can’t be really complete without testing with people with disabilities. For people with experience in doing accessibility testing with real users, I’m sure you will agree that.
\nThrough Internet history, user testing had lead to create successful products:
\nBut user testing can also fail to uncover critical usability issues which can contribute to the failure of some projects:
\nBuilding a successful project is not an easy task, a lot of factors can influence the success or the failure of a new product. Nowadays, users have different needs. Users switch faster to competitor then before, we have daily examples of that.
\nUser testing is one tool in companies belt that should be used as often as possible, but shouldn’t be the only one.
\nFront-End Developers (FED) are not just coders. Usually seen as the ones that “just” integrate designs into HTML, CSS and JavaScript, their t-shape personalities is often times overlooked (not all FES have t-shape skills though).
\nA FED can play a critical role in creating engaging user experiences.
\nAs I said in my previous article about Front-End Developers, Web and UX/UI Designers collaboration, collaboration and communication is key in building a successful product.
\nThis collaborative approach allows different perspectives to merge and create a more holistic vision of the product. As Front-End Developers, we have the unique position of working at the intersection of design and technology. We are often the ones who bring the designers' visions to life while ensuring that the product remains functional and user-friendly.
\nFront-end development is about more than just making things look good. It's about creating a seamless and intuitive interface that guides users through a product. Every button, every transition, every piece of interactive content is a chance to engage users and keep them invested in the product.
\nFront-end developers have a deep understanding of user behavior, as they are responsible for creating the interactive elements that users engage with. They can use this knowledge to create more engaging user interfaces and to guide user testing to focus on areas of the product that are most likely to affect user engagement.
\nBeyond just implementing designs, a seasoned FED can provide insights and suggest improvements to the UX/UI designs based on their knowledge of what is technically feasible and what would create a smoother user journey. They can spot potential pitfalls in the designs that might be overlooked during user testing.
\nFor example, a developer might notice that a particular design element could cause issues on certain devices or browsers. They might also suggest an alternative way of implementing a feature that enhances the user's experience. I have been advocating about accessibility for years now. Last year, I became CPACC certified and I continue to advocate for accessibility in my daily work. Not everyone understand what web accessibility is and how it impacts users. It takes time and effort to educate people about it.
\nAs technology advances, users' expectations also rise. They demand faster, smoother, and more intuitive interfaces. User testing will always be a vital tool for gathering feedback, but to meet these evolving demands, we need to go beyond testing.
\nIncorporating the front-end developer's expertise into the design process and user testing can help create a product that not only meets the users' needs but also provides an engaging and satisfying experience.
\nWe must continue to push the boundaries, experiment with new technologies, and constantly seek ways to better understand and improve user engagement. Only by doing this can we hope to create products that users will love to use.
\nFront-End Developers bring a valuable perspective to the product development process. Let's use it to its fullest potential to create engaging, user-friendly products. After all, the success of any product lies in the satisfaction of its users.
\nAt the end, user engagement is not just about the single experience of a product but the entire journey. It's about creating an engaging, intuitive, and satisfying journey that users want to return to again and again. And Front-End Developers play a crucial role in crafting this journey.
\nRemember, user testing is a part of the journey, not the destination. We must use all the tools at our disposal, and that includes leveraging the front-end development experience to truly understand and improve user engagement.
\nLet's continue to build with the user in mind, always striving to enhance their journey, their experience, and ultimately, their engagement.
\nUser testing is a crucial tool for gathering feedback on a product, but it's not enough to truly understand and improve user engagement. For the past 13 years, I have been building multi-language platforms for international brands and for a wide variety of users. Even in a space that constantly changes, where users have evolving needs, it's important to also acknowledge the role that experience plays in understanding them.
\nBeing a Front-End Developer gave me and all my colleagues around the world a unique perspective on user experience. We understand how small design decisions can have a big impact on the user experience, and we have a deep understanding of how users interact with products. By leveraging our experience in front-end development, we can help create products that are not only effective but also enjoyable to use, leading to increased user satisfaction and loyalty.
\nUser testing is a critical component of product development that can help identify usability issues and gather feedback from real users. By testing products with representative users, product teams can gain valuable insights in how users interact with their interfaces and what their pain points are. Whatever you use services like User Testing, or your own user testing directly with regular users, user testing also possess some limits that can’t be overlooked.
\nFor example, users may not always be able to articulate their needs and preferences accurately, or identify more obvious usability issues that sometimes are more subtle or hidden. User testing is also typically conducted in a controlled environment, which may not always accurately reflect real-wold usage scenarios.
\nWhat about people that don’t use technology in a daily basis?
\nUsually user testing is done by a certain user group or demographics and don’t include 100% of all users. From my point of view, user testing can’t be really complete without testing with people with disabilities. For people with experience in doing accessibility testing with real users, I’m sure you will agree that.
\nThrough Internet history, user testing had lead to create successful products:
\nBut user testing can also fail to uncover critical usability issues which can contribute to the failure of some projects:
\nBuilding a successful project is not an easy task, a lot of factors can influence the success or the failure of a new product. Nowadays, users have different needs. Users switch faster to competitor then before, we have daily examples of that.
\nUser testing is one tool in companies belt that should be used as often as possible, but shouldn’t be the only one.
\nFront-End Developers (FED) are not just coders. Usually seen as the ones that “just” integrate designs into HTML, CSS and JavaScript, their t-shape personalities is often times overlooked (not all FES have t-shape skills though).
\nA FED can play a critical role in creating engaging user experiences.
\nAs I said in my previous article about Front-End Developers, Web and UX/UI Designers collaboration, collaboration and communication is key in building a successful product.
\nThis collaborative approach allows different perspectives to merge and create a more holistic vision of the product. As Front-End Developers, we have the unique position of working at the intersection of design and technology. We are often the ones who bring the designers' visions to life while ensuring that the product remains functional and user-friendly.
\nFront-end development is about more than just making things look good. It's about creating a seamless and intuitive interface that guides users through a product. Every button, every transition, every piece of interactive content is a chance to engage users and keep them invested in the product.
\nFront-end developers have a deep understanding of user behavior, as they are responsible for creating the interactive elements that users engage with. They can use this knowledge to create more engaging user interfaces and to guide user testing to focus on areas of the product that are most likely to affect user engagement.
\nBeyond just implementing designs, a seasoned FED can provide insights and suggest improvements to the UX/UI designs based on their knowledge of what is technically feasible and what would create a smoother user journey. They can spot potential pitfalls in the designs that might be overlooked during user testing.
\nFor example, a developer might notice that a particular design element could cause issues on certain devices or browsers. They might also suggest an alternative way of implementing a feature that enhances the user's experience. I have been advocating about accessibility for years now. Last year, I became CPACC certified and I continue to advocate for accessibility in my daily work. Not everyone understand what web accessibility is and how it impacts users. It takes time and effort to educate people about it.
\nAs technology advances, users' expectations also rise. They demand faster, smoother, and more intuitive interfaces. User testing will always be a vital tool for gathering feedback, but to meet these evolving demands, we need to go beyond testing.
\nIncorporating the front-end developer's expertise into the design process and user testing can help create a product that not only meets the users' needs but also provides an engaging and satisfying experience.
\nWe must continue to push the boundaries, experiment with new technologies, and constantly seek ways to better understand and improve user engagement. Only by doing this can we hope to create products that users will love to use.
\nFront-End Developers bring a valuable perspective to the product development process. Let's use it to its fullest potential to create engaging, user-friendly products. After all, the success of any product lies in the satisfaction of its users.
\nAt the end, user engagement is not just about the single experience of a product but the entire journey. It's about creating an engaging, intuitive, and satisfying journey that users want to return to again and again. And Front-End Developers play a crucial role in crafting this journey.
\nRemember, user testing is a part of the journey, not the destination. We must use all the tools at our disposal, and that includes leveraging the front-end development experience to truly understand and improve user engagement.
\nLet's continue to build with the user in mind, always striving to enhance their journey, their experience, and ultimately, their engagement.
\nThe web has changed so much in the past 10 years. Technology has enabled new usages, new ways of communication, new ways of seeing the world. Web Design trends are also constantly changing, every year we see new trends that sometimes stick for few years, sometimes they don’t. The same happened in web development: we’ve seen new JavaScript frameworks, new ways to build components, new ways to code CSS, using pre or post-processors. The list is almost infinite. But something that has not changed is the need for collaboration between people working on the same web project.
\nAs a Front-End Developer, I had the chance to work with numerous Web Designers and UX/UI designers over my career. No matter if I was in Brazil, France, Mauritius or Canada, I have observed the same challenges over and over again. And one unique solution doesn’t always apply to similar situations. You need to find what works best for you.
\nIn this article, I want to share some topics I believe should be discussed. From my point of view, we, as web professionals want the same thing: build accessible and performant products that will provide the best user experience possible.
\nIf you want your product to work, to get revenues, then you should start with the above goal first, not the other way around.
\nBut let’s start with some definitions.
\nA lot of people could probably define what is a Web Designer better than I. But from my perspective, as a Front-End Developer, a Web Designer is someone with extensive skills in design that understands the constraints and the possibilities given by the web. I’ve seen a lot of really good “designers” but who were not always able to fully understand the “web” part of their title. Designing for the web is far from being straightforward. Be familiar with how to use Sketch or Figma is surely part of being a Web Designer, but it’s unfortunately not enough. And honestly, for me it’s totally fine: you learn as you progress.
\nProbably, from my point of view, a Web Designers shouldn’t just rely on his knowledge and put pressure on himself to know everything about the web. That’s where a Front-End Developer can come into play. Front-End Developers are the ones that spend their time on the web, scrolling, studying code, finding new ways of building components… They are the perfect buddies of Web Designers, and both should be pairing regularly.
\nA UX/UI Designer is someone where focus lays on users. Nothing should be more important than the user, the person, the human. A UX Designer needs to spend a lot of his time doing researches. I’ve always considered that a good UX/UI Designer should be passionate about people, what they want, how they want things… Of course, you also have the word “designer” in the title, because in the context we are talking about, a UX/UI Designer has the task to understand the user and also know what works the best in terms of UI. Something that works for a website dedicate to moms may not work for a website which main users are teens.
\n\n\nI’ve always considered that a good UX/UI Designer should be passionate about people, what they want, how they want things.
\n
But he is not the only one who has developed an understanding of what users prefer and are used to when they browse the Internet. When a Front-End Developer wants to create a piece of code, a component, he usually dives into his structured memory of patterns. When someone says “button”, it triggers in his brain all the times (thousands of) he clicked on a button, but also snippets of CSS code that can be used to create a button or the long hours he spent analyzing CSS framework documentation…
\nFront-End Developers can be a huge asset for any UX/UI Designer because they’ve learned so much about the web and usual patterns from a different perspective.
\nI know a lot of people that could potentially disagree with my definition. For me, a Front-End Developer is a builder, someone that loves building web content using a combination of multiple skills. Because a Front-End Developer is not just a coder. To be a Front-End Developer you need to learn HTML, CSS, JavaScript but these are just the basics. You need to understand how to make a website accessible, how to use CSS to create an amazing layout, how to translate a design file to CSS, how to keep your application performant, how to build a UI/pattern library… the list is long but I’m sure you get my point.
\nA Front-End Developer is the backbone of any web content. Without a Front-End Developer, the website couldn’t be created (even if you use a no-code generator, a Front-End Developer had to create the UI).
\nDoes that mean that a Front-End Developer is more important than other people in their team? Absolutely not, but his role requires him to be a facilitator, to understand what he can provide for the rest of his team.
\nNow that we have a better idea of what these roles represent, how do we make them work together in a way that they feel empowered and enjoying the collaboration?
\nAny athlete will tell you that mindset is everything to achieve their goals, to win championships, to perform better. This is not that different when it’s about working as a team. Everyone’s mindset is important within a team. But it’s something that the group itself doesn’t have any control. Only individuals can decide to have an open mind, a true relationship with the other member of the team, visualize solutions instead of problems…
\nWe often forget that we all have a common goal. Sure, we can also have multiple goals for ourselves but if you are part of a team, it’s only to achieve a common goal.
\nDifferences are what make this specific group worth existing. EVERYONE has a role to play in any team.
\nBut it’s not only about individual mindsets. A team with a Web Designer, UX/UI and developers are usually part of a corporation. All over the world, numerous companies understand and value their culture. This is an essential part to guide employees towards common goals and achieve specific tasks.
\nIf companies provide the tools and the support to create trust and equality between the members of a team, then it makes it easier for people to collaborate together and learn from each other.
\nAaah the ego! Some people say that a bad reputation can hurt any company, I believe ego can hurt sometimes even more. The ego is one of the biggest enemies of any company, team or leadership group. I had the displeasure to work with 1–2 people during my career with a pretty big ego.
\nI will always feel the pain these people have caused, it’s important to make peace with any related event but also with them. After all, we are all humans.
\nEgo shouldn’t exist in a team. Period.
\nCollaboration is knowing that people are better than you in certain areas. It’s knowing that you can learn from them. It’s knowing that you can also give something to them. Collaboration is finding the balance and putting everything and everyone at the center of the group.
\nAnd no, collaboration is not something you implement once and it’s done, everything will always work perfectly. Collaboration is an equilibrist performance that could go wrong at any time. But you have to keep going because it’s so rewarding when you succeed!
\nBefore giving you some answers, I want to tell you about two of the best experiences I had during my career with Web / UX / UI Designers.
\nMy first best experience was in August 2014, in Cincinnati, USA. I’ve worked for a month with Barefoot Proximity to build a new platform. Julie Tran, which was leading the project in terms of design would create pieces of design, sent them to me for prototyping and we would discuss around that. What made the experience amazing was the level of exchange and collaboration.
\nIt wasn’t just about, “Hey, here is the design”, it would be more “hey, here is the design, can you do a quick prototype to see if that works. Let me know if you see any problems that may occur for mobile, accessibility etc…”.
\nI was able to give my feedback based on my knowledge and experience, Julie would also push back when I would be hesitant to test a particular approach. Combining our visions, being open with each other was what made this project successful. Even with my English being pretty basic at this time, we both enjoyed our work and I kept only good memories from that collaboration.
\nMy second best experience was in 2015, with Julia Bruyneel, who was working in Paris as a Web/UX Designer freelancer. I was in Mauritius for a month and we had to collaborate for few weeks on new designs for an existing project.
\nEven with the distance, and not knowing each other before, Julia would contact me and exchange about designs she would have made. That simple communication and regular exchange were reassuring for me (was lead on that project for 3 years) but also a manifestation of maturity and professionalism from Julia. It was short but I kept good memories of that collaboration.
\nThe three main keys, from my unique point of view, to have successful teams rely on mindset, culture and processes.
\n\nMindset: If you want to have people working together, in collaboration, using each other experience and vision, they need to have a similar mindset. I’m not saying an “identical mindset” or “same personalities”, I’m saying “similar mindset”. When everyone understands the goal of the team and is open to see each human behind his title, then you have more probabilities to have a successful team.
\nCulture: Sometimes, having a similar mindset is not possible or challenging. In that case, is the responsibility of the structure or company to influence a specific mindset. Companies can decide who should be part of the “family”. That’s why the recruitment process is important.
\nProcesses: a lot of people I know, hate the word processes. For me, processes have always mean freedom. When you have a defined and clear process, you don’t have to stress or be hesitant or afraid. A process should exist to guide you in a process where people can predict what will come next. It’s reassuring to know that everyone has the same process in mind. Sometimes, when people's mindsets are not similar or the culture is lacking, processes should help people to visualize the direction they need to take.
\nYou could take these 3 points separated or combine them to maximize your chances to build successful teams.
\n\n\n“We love the web and we love being part of the creation process! We decided to become Front-End Developers because we love building! And it’s not just about converting designs to CSS, we love understanding the why, the how of the creation.\nAnd we understand that this may be scary at times because why the heck a Front-End Developer will tell a designer that his design is not accessible? Or tell the designers that he is not sure, this is gonna work for the user? It’s not about competing, it’s about putting energies in sync.\nThe problem sometimes is that we see patterns and code examples in our minds that we don’t always translate for other people to understand. But we’re working on that! I promise!\nWe have more to share than just our “title”, we have more to give than just lines of code. We are here to help!”
\n
If you are still reading, I hope you also share some common ideas exposed in this article. I have dedicated a portion of my career to try to be a facilitator and share all the knowledge I accumulated to build awesome products.
\nWhat about your experience? How do you like to work with others? What would you like to see happening more often within your team?
", + "content_html": "The web has changed so much in the past 10 years. Technology has enabled new usages, new ways of communication, new ways of seeing the world. Web Design trends are also constantly changing, every year we see new trends that sometimes stick for few years, sometimes they don’t. The same happened in web development: we’ve seen new JavaScript frameworks, new ways to build components, new ways to code CSS, using pre or post-processors. The list is almost infinite. But something that has not changed is the need for collaboration between people working on the same web project.
\nAs a Front-End Developer, I had the chance to work with numerous Web Designers and UX/UI designers over my career. No matter if I was in Brazil, France, Mauritius or Canada, I have observed the same challenges over and over again. And one unique solution doesn’t always apply to similar situations. You need to find what works best for you.
\nIn this article, I want to share some topics I believe should be discussed. From my point of view, we, as web professionals want the same thing: build accessible and performant products that will provide the best user experience possible.
\nIf you want your product to work, to get revenues, then you should start with the above goal first, not the other way around.
\nBut let’s start with some definitions.
\nA lot of people could probably define what is a Web Designer better than I. But from my perspective, as a Front-End Developer, a Web Designer is someone with extensive skills in design that understands the constraints and the possibilities given by the web. I’ve seen a lot of really good “designers” but who were not always able to fully understand the “web” part of their title. Designing for the web is far from being straightforward. Be familiar with how to use Sketch or Figma is surely part of being a Web Designer, but it’s unfortunately not enough. And honestly, for me it’s totally fine: you learn as you progress.
\nProbably, from my point of view, a Web Designers shouldn’t just rely on his knowledge and put pressure on himself to know everything about the web. That’s where a Front-End Developer can come into play. Front-End Developers are the ones that spend their time on the web, scrolling, studying code, finding new ways of building components… They are the perfect buddies of Web Designers, and both should be pairing regularly.
\nA UX/UI Designer is someone where focus lays on users. Nothing should be more important than the user, the person, the human. A UX Designer needs to spend a lot of his time doing researches. I’ve always considered that a good UX/UI Designer should be passionate about people, what they want, how they want things… Of course, you also have the word “designer” in the title, because in the context we are talking about, a UX/UI Designer has the task to understand the user and also know what works the best in terms of UI. Something that works for a website dedicate to moms may not work for a website which main users are teens.
\n\n\nI’ve always considered that a good UX/UI Designer should be passionate about people, what they want, how they want things.
\n
But he is not the only one who has developed an understanding of what users prefer and are used to when they browse the Internet. When a Front-End Developer wants to create a piece of code, a component, he usually dives into his structured memory of patterns. When someone says “button”, it triggers in his brain all the times (thousands of) he clicked on a button, but also snippets of CSS code that can be used to create a button or the long hours he spent analyzing CSS framework documentation…
\nFront-End Developers can be a huge asset for any UX/UI Designer because they’ve learned so much about the web and usual patterns from a different perspective.
\nI know a lot of people that could potentially disagree with my definition. For me, a Front-End Developer is a builder, someone that loves building web content using a combination of multiple skills. Because a Front-End Developer is not just a coder. To be a Front-End Developer you need to learn HTML, CSS, JavaScript but these are just the basics. You need to understand how to make a website accessible, how to use CSS to create an amazing layout, how to translate a design file to CSS, how to keep your application performant, how to build a UI/pattern library… the list is long but I’m sure you get my point.
\nA Front-End Developer is the backbone of any web content. Without a Front-End Developer, the website couldn’t be created (even if you use a no-code generator, a Front-End Developer had to create the UI).
\nDoes that mean that a Front-End Developer is more important than other people in their team? Absolutely not, but his role requires him to be a facilitator, to understand what he can provide for the rest of his team.
\nNow that we have a better idea of what these roles represent, how do we make them work together in a way that they feel empowered and enjoying the collaboration?
\nAny athlete will tell you that mindset is everything to achieve their goals, to win championships, to perform better. This is not that different when it’s about working as a team. Everyone’s mindset is important within a team. But it’s something that the group itself doesn’t have any control. Only individuals can decide to have an open mind, a true relationship with the other member of the team, visualize solutions instead of problems…
\nWe often forget that we all have a common goal. Sure, we can also have multiple goals for ourselves but if you are part of a team, it’s only to achieve a common goal.
\nDifferences are what make this specific group worth existing. EVERYONE has a role to play in any team.
\nBut it’s not only about individual mindsets. A team with a Web Designer, UX/UI and developers are usually part of a corporation. All over the world, numerous companies understand and value their culture. This is an essential part to guide employees towards common goals and achieve specific tasks.
\nIf companies provide the tools and the support to create trust and equality between the members of a team, then it makes it easier for people to collaborate together and learn from each other.
\nAaah the ego! Some people say that a bad reputation can hurt any company, I believe ego can hurt sometimes even more. The ego is one of the biggest enemies of any company, team or leadership group. I had the displeasure to work with 1–2 people during my career with a pretty big ego.
\nI will always feel the pain these people have caused, it’s important to make peace with any related event but also with them. After all, we are all humans.
\nEgo shouldn’t exist in a team. Period.
\nCollaboration is knowing that people are better than you in certain areas. It’s knowing that you can learn from them. It’s knowing that you can also give something to them. Collaboration is finding the balance and putting everything and everyone at the center of the group.
\nAnd no, collaboration is not something you implement once and it’s done, everything will always work perfectly. Collaboration is an equilibrist performance that could go wrong at any time. But you have to keep going because it’s so rewarding when you succeed!
\nBefore giving you some answers, I want to tell you about two of the best experiences I had during my career with Web / UX / UI Designers.
\nMy first best experience was in August 2014, in Cincinnati, USA. I’ve worked for a month with Barefoot Proximity to build a new platform. Julie Tran, which was leading the project in terms of design would create pieces of design, sent them to me for prototyping and we would discuss around that. What made the experience amazing was the level of exchange and collaboration.
\nIt wasn’t just about, “Hey, here is the design”, it would be more “hey, here is the design, can you do a quick prototype to see if that works. Let me know if you see any problems that may occur for mobile, accessibility etc…”.
\nI was able to give my feedback based on my knowledge and experience, Julie would also push back when I would be hesitant to test a particular approach. Combining our visions, being open with each other was what made this project successful. Even with my English being pretty basic at this time, we both enjoyed our work and I kept only good memories from that collaboration.
\nMy second best experience was in 2015, with Julia Bruyneel, who was working in Paris as a Web/UX Designer freelancer. I was in Mauritius for a month and we had to collaborate for few weeks on new designs for an existing project.
\nEven with the distance, and not knowing each other before, Julia would contact me and exchange about designs she would have made. That simple communication and regular exchange were reassuring for me (was lead on that project for 3 years) but also a manifestation of maturity and professionalism from Julia. It was short but I kept good memories of that collaboration.
\nThe three main keys, from my unique point of view, to have successful teams rely on mindset, culture and processes.
\nMindset: If you want to have people working together, in collaboration, using each other experience and vision, they need to have a similar mindset. I’m not saying an “identical mindset” or “same personalities”, I’m saying “similar mindset”. When everyone understands the goal of the team and is open to see each human behind his title, then you have more probabilities to have a successful team.
\nCulture: Sometimes, having a similar mindset is not possible or challenging. In that case, is the responsibility of the structure or company to influence a specific mindset. Companies can decide who should be part of the “family”. That’s why the recruitment process is important.
\nProcesses: a lot of people I know, hate the word processes. For me, processes have always mean freedom. When you have a defined and clear process, you don’t have to stress or be hesitant or afraid. A process should exist to guide you in a process where people can predict what will come next. It’s reassuring to know that everyone has the same process in mind. Sometimes, when people's mindsets are not similar or the culture is lacking, processes should help people to visualize the direction they need to take.
\nYou could take these 3 points separated or combine them to maximize your chances to build successful teams.
\n\n\n“We love the web and we love being part of the creation process! We decided to become Front-End Developers because we love building! And it’s not just about converting designs to CSS, we love understanding the why, the how of the creation.\nAnd we understand that this may be scary at times because why the heck a Front-End Developer will tell a designer that his design is not accessible? Or tell the designers that he is not sure, this is gonna work for the user? It’s not about competing, it’s about putting energies in sync.\nThe problem sometimes is that we see patterns and code examples in our minds that we don’t always translate for other people to understand. But we’re working on that! I promise!\nWe have more to share than just our “title”, we have more to give than just lines of code. We are here to help!”
\n
If you are still reading, I hope you also share some common ideas exposed in this article. I have dedicated a portion of my career to try to be a facilitator and share all the knowledge I accumulated to build awesome products.
\nWhat about your experience? How do you like to work with others? What would you like to see happening more often within your team?
", "url": "https://thedaviddias.dev/articles/how-front-end-developers-ui-ux-could-better-collaborate-together", "title": "How Front-End Developers, Web and UX/UI Designers could better collaborate together?", "summary": "Collaboration between Developers and UX/UI Designers is essential to build a good product. With the right mindset, clear processes and an inclusive culture, everything is possible.", @@ -149,7 +149,7 @@ }, { "id": "https://thedaviddias.dev/articles/9-best-practices-ux-for-two-factor-authentification", - "content_html": "In 2023 alone, cybercriminals will steal 33 billion records. It takes 196 days on average to identify a data breach. The cost of a data breach will reach $150 million by 2020...\nThese numbers may be scary but they are only previsions. Things could be much worse in the near future. Security has become a hot topic these last years, almost everyone on the planet has already heard about a company data breach or even a friend that lost his Facebook account because someone hacked it! No one is completely safe nowadays.\n
\nI've recently spent multiple hours ensuring that all the accounts I possess use a unique password, complex and long with at least 20 characters and with the two-factor authentication (2FA) enable if present. I've discovered so many disparities between companies and so many issues in terms of features and user experience. I wanted to share with you in this article, what I believe are the best and recommended features for any website or company that takes the security of their users seriously.
\nThat is the starting point.
\nIf you care about your users or customers, you should give them the choice to activate the two-factor authentication. On around 800 websites where I have an account, only 5% offer a 2FA option. Some may argue that if you don't have highly sensitive information, it may be overkill to offer the 2FA. But any personal information could be considered sensitive.
\nIf you care about your users and their security, give them the option to enable the 2FA. Period.
\nGoogle, Facebook, Twitter... they all offer simultaneous ways for 2FA: text message, authentication app and security key. More commonly, at least in a text message and authentication app, the security key seems to be set up only on certain services.
\nBut I've been surprised to see Etsy, even they use toggles on their UI, to force you to only choose one of the options. I'm not even sure if it was originally designed to work like that.
\n\nBit.ly and booking.com in other hand only allow you to use your phone as a 2FA device. So if you lose your phone and your email access, you could be screwed.
\n\nMailchimp and Tumblr, on the contrary, only offer 2FA using an authentication app.
\nZapier has an awesome step by step 2FA setup, probably one of the best I found. They offer multiple complementary ways and specifically tell you "in the event you get locked out of your account and have lost both your authentication device and recovery codes". The user understands that providing his phone number is an additional way to ensure he/she can access his account in case he/she lost the other ways to connect to their web app.
\n\nI have been using 1Password for quite some time now and the modal that scans the QR code doesn't always find the QR code. In that case, I found myself drag and dropping the QR into that modal to be recognized. But it only works when the code is an image.
\nI would recommend having it as a format image that can be saved / drag and dropped.
\nReddit for example don't have the QR code as an image. Fortunately, everyone offers the text version of the QR code that you can use in your authentication application.
\nThis one only happened to me once. It happened with Instagram.
\nWhen Instagram sends a "verification code" by SMS, they included a space. If you copy-paste that code where it's required, first the input doesn't want the space and the last digit is not included in your paste. It's an annoying issue that could be fixed easily!
\n\nSounds weird when said at loud but a lot of websites don't offer backup/recovery codes when you enable the 2FA. This was a surprise for me at first, 2FA means you will always have backup codes in case you lost access to your phone, email or the app you use to generate the random number. Nowadays, some websites don't offer that option. I tend to be really careful with those.
\nKickstarter and WPEngine are examples of websites that don't offer you any recovery/backup codes. I hope they could improve that.
\n\nMost of the websites propose to copy the recovery codes. This is not the best option.
\nIt's nice to have it, sure, but it's not enough. I personally store all my recovery codes in multiple places: one is the vault from Dropbox. Having just to drag and paste a simple text file is easy and fast.
\nIf you offer only the option to copy, then you could be forcing the user to:
\nTechnology is there to save user's time.
\nSlack for example allows you to "Print codes" but not download them. Why not? I have to generate a PDF instead of my simple text file. Not the best user experience.
\n\nEven Facebook can make mistakes and this one is important for me. Currently, if you download the recovery codes from Facebook, you open the file and you can't find any mention of Facebook or the name of the account. The file name facebook_recovery_codes
is helpful but in my opinion, not enough. The name of the account and the name of the platform should be a minimum.
And to make it more useful, adding the date when the codes were generated could also be added.
\nGoogle which is a good example, uses your username in the name of the file, and also adds:
\nSAVE YOUR BACKUP CODES\nKeep these backup codes somewhere safe but accessible.\n\nLIST OF CODES\n\n(email@gmail.com)\n\n* You can only use each backup code once.\n* Need more? Visit https://g.co/2sv\n* These codes were generated on: Date, 2021.\n
It's essential to give the user the ability to regenerate recovery codes. Some don't offer this useful option.
\nThis one is less important but I still wanted to mention a key difference in terms of recovery/backup codes.
\nMost of the companies only offer one code vs a list of multiples codes that can be used. It's hard for me to defend one approach vs the other one. I just know that I feel better when I have more than one code.
\nSecurity keys are the less common way to secure your account. If you are a public figure or someone with a high level of responsibility, having a security key could give you a little bit more peace of mind. But for a normal user, it may be overkill. Nonetheless, I wanted to maximize the security of my accounts and recently bought the Titan Security Key from Google. The USB version works on any computer and I use the Bluetooth version in case I'm on my iPhone or iPad.
\n\nThey both are not cheap, but security should be part of your "unlimited budget", the same as for food.
\nI'm not a security expert and have limited knowledge in terms of security. But as a Software Engineer and particularly a user, I believe we have a long way ahead until most of the platforms implement all the tools to ensure secure access for users.
\nRecap:
\nThanks for reading, I hope these suggestions would help you to have a better UX and improve your 2FA implementation.
\nFeel free to ask me anything in the comments below!
", + "content_html": "In 2023 alone, cybercriminals will steal 33 billion records. It takes 196 days on average to identify a data breach. The cost of a data breach will reach $150 million by 2020...\nThese numbers may be scary but they are only previsions. Things could be much worse in the near future. Security has become a hot topic these last years, almost everyone on the planet has already heard about a company data breach or even a friend that lost his Facebook account because someone hacked it! No one is completely safe nowadays.\n
I've recently spent multiple hours ensuring that all the accounts I possess use a unique password, complex and long with at least 20 characters and with the two-factor authentication (2FA) enable if present. I've discovered so many disparities between companies and so many issues in terms of features and user experience. I wanted to share with you in this article, what I believe are the best and recommended features for any website or company that takes the security of their users seriously.
\nThat is the starting point.
\nIf you care about your users or customers, you should give them the choice to activate the two-factor authentication. On around 800 websites where I have an account, only 5% offer a 2FA option. Some may argue that if you don't have highly sensitive information, it may be overkill to offer the 2FA. But any personal information could be considered sensitive.
\nIf you care about your users and their security, give them the option to enable the 2FA. Period.
\nGoogle, Facebook, Twitter... they all offer simultaneous ways for 2FA: text message, authentication app and security key. More commonly, at least in a text message and authentication app, the security key seems to be set up only on certain services.
\nBut I've been surprised to see Etsy, even they use toggles on their UI, to force you to only choose one of the options. I'm not even sure if it was originally designed to work like that.
\nBit.ly and booking.com in other hand only allow you to use your phone as a 2FA device. So if you lose your phone and your email access, you could be screwed.
\nMailchimp and Tumblr, on the contrary, only offer 2FA using an authentication app.
\nZapier has an awesome step by step 2FA setup, probably one of the best I found. They offer multiple complementary ways and specifically tell you "in the event you get locked out of your account and have lost both your authentication device and recovery codes". The user understands that providing his phone number is an additional way to ensure he/she can access his account in case he/she lost the other ways to connect to their web app.
\nI have been using 1Password for quite some time now and the modal that scans the QR code doesn't always find the QR code. In that case, I found myself drag and dropping the QR into that modal to be recognized. But it only works when the code is an image.
\nI would recommend having it as a format image that can be saved / drag and dropped.
\nReddit for example don't have the QR code as an image. Fortunately, everyone offers the text version of the QR code that you can use in your authentication application.
\nThis one only happened to me once. It happened with Instagram.
\nWhen Instagram sends a "verification code" by SMS, they included a space. If you copy-paste that code where it's required, first the input doesn't want the space and the last digit is not included in your paste. It's an annoying issue that could be fixed easily!
\nSounds weird when said at loud but a lot of websites don't offer backup/recovery codes when you enable the 2FA. This was a surprise for me at first, 2FA means you will always have backup codes in case you lost access to your phone, email or the app you use to generate the random number. Nowadays, some websites don't offer that option. I tend to be really careful with those.
\nKickstarter and WPEngine are examples of websites that don't offer you any recovery/backup codes. I hope they could improve that.
\nMost of the websites propose to copy the recovery codes. This is not the best option.
\nIt's nice to have it, sure, but it's not enough. I personally store all my recovery codes in multiple places: one is the vault from Dropbox. Having just to drag and paste a simple text file is easy and fast.
\nIf you offer only the option to copy, then you could be forcing the user to:
\nTechnology is there to save user's time.
\nSlack for example allows you to "Print codes" but not download them. Why not? I have to generate a PDF instead of my simple text file. Not the best user experience.
\nEven Facebook can make mistakes and this one is important for me. Currently, if you download the recovery codes from Facebook, you open the file and you can't find any mention of Facebook or the name of the account. The file name facebook_recovery_codes
is helpful but in my opinion, not enough. The name of the account and the name of the platform should be a minimum.
And to make it more useful, adding the date when the codes were generated could also be added.
\nGoogle which is a good example, uses your username in the name of the file, and also adds:
\nSAVE YOUR BACKUP CODES\nKeep these backup codes somewhere safe but accessible.\n\nLIST OF CODES\n\n(email@gmail.com)\n\n* You can only use each backup code once.\n* Need more? Visit https://g.co/2sv\n* These codes were generated on: Date, 2021.\n
It's essential to give the user the ability to regenerate recovery codes. Some don't offer this useful option.
\nThis one is less important but I still wanted to mention a key difference in terms of recovery/backup codes.
\nMost of the companies only offer one code vs a list of multiples codes that can be used. It's hard for me to defend one approach vs the other one. I just know that I feel better when I have more than one code.
\nSecurity keys are the less common way to secure your account. If you are a public figure or someone with a high level of responsibility, having a security key could give you a little bit more peace of mind. But for a normal user, it may be overkill. Nonetheless, I wanted to maximize the security of my accounts and recently bought the Titan Security Key from Google. The USB version works on any computer and I use the Bluetooth version in case I'm on my iPhone or iPad.
\nThey both are not cheap, but security should be part of your "unlimited budget", the same as for food.
\nI'm not a security expert and have limited knowledge in terms of security. But as a Software Engineer and particularly a user, I believe we have a long way ahead until most of the platforms implement all the tools to ensure secure access for users.
\nRecap:
\nThanks for reading, I hope these suggestions would help you to have a better UX and improve your 2FA implementation.
\nFeel free to ask me anything in the comments below!
", "url": "https://thedaviddias.dev/articles/9-best-practices-ux-for-two-factor-authentification", "title": "9 Best Practices & UX Improvements for the two-factor authentication (2FA)", "summary": "The best and recommended features for any website or company that takes the security of their users seriously.", @@ -162,7 +162,7 @@ }, { "id": "https://thedaviddias.dev/articles/how-to-deploy-your-nextjs-app-on-netlify-using-github-actions", - "content_html": "I've recently spent some time working with Next.js projects. Once my projects are done, the next logical step is to deploy these apps to be accessible to the world.
\nI have naturally used the Vercel platform, which couldn't be easier to use and deploy your application with ease. Then I tried AWS Amplify, which I particularly love but for now, requires you to use the Serverless Framework if you want to benefit from Server Side Rendering (SSR) capabilities.
\nThen, I remembered that Netlify has added support for Next.js, including dynamic routes, Preview Mode and more around November 2020. It was time for me to try it! But I also wanted to have a real CI/CD in place, to test my code and do more actions before deploying to Netlify. That's where Github Actions came to the rescue!
\nI'm going to describe in this article, all the steps you need to take to deploy your Next.js application on Netlify using Github Actions.
\n\n\nThe full version of the project can be found on Github.
\n
As always, you need to have a recent version of Node and NPM installed on your machine. I personally recommend using NVM
since it simplifies having multiple active Node.js versions.
To create a new Next.js project, type this command in your CLI:
\nnpx create-next-app name-of-your-app\n\n# move into the app's root directory\ncd ~/path-to-projects/name-of-your-app/\n
This will install a new application using a basic Next.js boilerplate. Don't forget to move to your app root folder before launching any next commands.
\nOnce your Next.js project is locally created, you can create a new project on Github and push the code generated.
\n(For those you are new to coding, feel free to follow these steps to create a new repository on Github.)
\nThere are 2 ways of creating a new Netlify project:
\nLet's use the CLI this time, I'm sure you already created a new project in the past using the Netlify interface.
\nLet's start by installing netlify-cli
globally:
npm install netlify-cli -g\n
Then check if the installation succeeds, confirming with this command:
\nnetlify\n
Now you need to link your computer with your Netlify account. To authenticate with Netlify, you need to run this command:
\nnetlify login\n
This will open a new tab in your browser where you'll need to "Authorize your Application" and then grant access to Netlify CLI.
\nIn case you already logged in previously, the console will output:
\nAlready logged in via netlify config on your machine\n
Now that your CLI is authorized to communicate with your Netlify account, it's time to programmatically create a new project:
\n# create a new Netlify site using the Netlify shortcut: ntl\nntl init\n
The first question you are asked is if you want to connect this directory to an existing Netlify site or create & configure a new site. Choose Create & configure a new site:
\n\nThen you have to choose your team:
\n\nChoose the name of your application:
\n\nAfter entering the name of your project, the site is created and few URLs populated the CLI which gave you access to your admin URL, the URL of your site and the Site ID. Keep the site ID aside, you will need that number later on.
\nFor the next 3 questions (build, start and function), insert a space. We are not going to directly use the NPM scripts, our Github actions will later trigger each command.\n
\nFinally, automatically create a netlify.toml file, which we will edit later. If your respond no, you can still create that file manually at the root of your project.
\n\nOnce you provided an answer to all the questions, your terminal should look like this:
\n\nIt's now time to change some options on our Netlify project. Open directly your project on Netlify with this command:
\nntl open\n
You should see that our production deployment failed. You don't have to worry, this is totally normal. We need to disable our automatic build because our Github Actions will take care of it.
\nGo in your Settings > Build & deploy. Click on Edit settings
and Stop builds
. Save.
Just below, go to the Deploy contexts
section and select None
for the Deploy previews.
Don't worry, like the build, we will create our preview URL using Github actions.
\nIf you have been using Next.js you are aware of the capability to do the server-side rendering. But usually, you will need to configure a Node server and that's something we don't want to have to deal with. Around October 2020, the Netlify team started working on next-on-netlify
, a utility to enable SSR in Next.js on Netlify. That's what we are going to use here.
(In case you are not interested in Github Actions and want to use Netlify to build your project, take a look at how to use the Next on Netlify Plugin. It directly wraps your Next.js app and doesn't need as much configuration as we are going to explain.)
\nLet's start by installing our utility:
\nnpm install -D next-on-netlify\n
We must build our Next.js app as a serverless app
\nmodule.exports = {\n // Target must be serverless\n target: "serverless",\n};\n
We need to add a postbuild
command that is automatically triggered after our build
command finishes. next-on-netlify
does a lot of "magic" to copy and set up our Next.js app to be correctly hosted on Netlify.
{\n "name": "next-netlify-github-actions-starter",\n "version": "0.1.0",\n "private": true,\n "scripts": {\n "dev": "next dev",\n "build": "next build",\n "start": "next start",\n "postbuild": "next-on-netlify"\n },\n ...\n}\n
Remember the file that was automatically created and called netlify.toml
? You can remove all the boilerplate and replace it with only this code (be careful in respecting the indentation):
[build]\n command = ""\n functions = "out_functions"\n publish = "out_publish"\n
Technically, when next-on-netlify
will run, it will take what is in these folders and host it on Netlify. DO NOT CHANGE the name of these folders as these are hardcoded into the utility.
Don't forget to add these line to your .gitignore
file
# Netlify build\nout_*\n
You can commit your files. Let's work now on the Github Actions configuration.
\nThe netlify configuration is now done, all dependencies installed, it's time to configure our Github actions which will test, build and deploy our Next.js application to Netlify. But before that, we need to set up some Github secrets that we will need in our GH Actions.
\nGo to your Github project > Settings > Secrets > New repository secret
| Actions secret name | Comments |\n| -------------------- | ------------------------------------------------------------------------------------------- |\n| NETLIFY_AUTH_TOKEN
| Request your token here |\n| NETLIFY_SITE_ID
| The site to where deploy your site (get it from the API ID on your Site Settings) |
Create a new file called main.yml
inside .github/workflows
. Copy-paste the following code and read the explanation of it after this snippet.
name: Main workflow\n\non:\n pull_request:\n branches:\n - master\n - main\n types: [opened, synchronize, reopened]\n\njobs:\n test:\n runs-on: ubuntu-latest\n steps:\n - name: Checkout code\n uses: actions/checkout@v2\n\n # Cache node modules and next folder\n - name: 📬 Caching\n uses: actions/cache@v2\n with:\n path: |\n **/node_modules\n ${{ github.workspace }}/.next/cache\n key: ${{ runner.os }}-modules-${{ hashFiles('**/package-lock.json') }}\n\n - name: Use Node.js 14.x\n uses: actions/setup-node@v1\n with:\n node-version: 14.x\n\n - name: 🧰 Install dependencies\n run: npm run install\n\n - name: 📦 Build project\n run: npm run build --if-present\n\n # - name: 🧹 Run lint\n # run: npm run lint\n\n # - name: 🐛 Run tests\n # run: npm run test\n\n # Deploy to Netlify with a personalized message\n - name: 🚀 Deploy to Netlify\n id: deploy-netlify\n uses: netlify/actions/cli@master\n env:\n NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}\n NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }}\n with:\n args: deploy -m 'v${{ steps.package-version.outputs.current-version}} ・ ${{ github.head_ref }}'\n
build
logs in your Github Action tab:\nYou may have seen an argument passed to the Netlify deploy:
\nargs: deploy -m 'v${{ steps.package-version.outputs.current-version}} ・ ${{ github.head_ref }}'\n
This will add a message for each Deploy Preview, a way to keep track of which PR generated which Deploy.
\n\nOn the same deploy page, you can click on the Deploy Preview and access your app using the preview URL.
\nA better way would be to use another task to automatically populate your pull request with the log and preview URL. At the end of your file, add this action:
\n# Publish the inspect and preview link to the PR\n- name: 👓 Netlify Preview URL\n uses: unsplash/comment-on-pr@master\n env:\n GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n OUTPUT: "This pull request is being automatically deployed to Netlify.\\n\\n🔍 Inspect: ${{ steps.deploy-netlify.outputs.NETLIFY_LOGS_URL }}\\n✅ Preview: ${{ steps.deploy-netlify.outputs.NETLIFY_URL }}"\n with:\n msg: ${{ env.OUTPUT }}\n check_for_duplicate_msg: false\n
This will automatically create a comment in your PR.
\n\nIf you are still reading this, congrats! You have succeeded in deploying a fully enabled Next.JS application to Netlify using Github Actions!
\nThe next step for you now will be to add some linting rules and tests to ensure that you are sending to Netlify, an app that works perfectly!
\nFeel free to download or fork the next-netlify-github-actions-starter
, open an issue if you find any problem or send me any suggestion to make it better!
I've recently spent some time working with Next.js projects. Once my projects are done, the next logical step is to deploy these apps to be accessible to the world.
\nI have naturally used the Vercel platform, which couldn't be easier to use and deploy your application with ease. Then I tried AWS Amplify, which I particularly love but for now, requires you to use the Serverless Framework if you want to benefit from Server Side Rendering (SSR) capabilities.
\nThen, I remembered that Netlify has added support for Next.js, including dynamic routes, Preview Mode and more around November 2020. It was time for me to try it! But I also wanted to have a real CI/CD in place, to test my code and do more actions before deploying to Netlify. That's where Github Actions came to the rescue!
\nI'm going to describe in this article, all the steps you need to take to deploy your Next.js application on Netlify using Github Actions.
\n\n\nThe full version of the project can be found on Github.
\n
As always, you need to have a recent version of Node and NPM installed on your machine. I personally recommend using NVM
since it simplifies having multiple active Node.js versions.
To create a new Next.js project, type this command in your CLI:
\nnpx create-next-app name-of-your-app\n\n# move into the app's root directory\ncd ~/path-to-projects/name-of-your-app/\n
This will install a new application using a basic Next.js boilerplate. Don't forget to move to your app root folder before launching any next commands.
\nOnce your Next.js project is locally created, you can create a new project on Github and push the code generated.
\n(For those you are new to coding, feel free to follow these steps to create a new repository on Github.)
\nThere are 2 ways of creating a new Netlify project:
\nLet's use the CLI this time, I'm sure you already created a new project in the past using the Netlify interface.
\nLet's start by installing netlify-cli
globally:
npm install netlify-cli -g\n
Then check if the installation succeeds, confirming with this command:
\nnetlify\n
Now you need to link your computer with your Netlify account. To authenticate with Netlify, you need to run this command:
\nnetlify login\n
This will open a new tab in your browser where you'll need to "Authorize your Application" and then grant access to Netlify CLI.
\nIn case you already logged in previously, the console will output:
\nAlready logged in via netlify config on your machine\n
Now that your CLI is authorized to communicate with your Netlify account, it's time to programmatically create a new project:
\n# create a new Netlify site using the Netlify shortcut: ntl\nntl init\n
The first question you are asked is if you want to connect this directory to an existing Netlify site or create & configure a new site. Choose Create & configure a new site:
\n\nThen you have to choose your team:
\n\nChoose the name of your application:
\n\nAfter entering the name of your project, the site is created and few URLs populated the CLI which gave you access to your admin URL, the URL of your site and the Site ID. Keep the site ID aside, you will need that number later on.
\nFor the next 3 questions (build, start and function), insert a space. We are not going to directly use the NPM scripts, our Github actions will later trigger each command.\n
Finally, automatically create a netlify.toml file, which we will edit later. If your respond no, you can still create that file manually at the root of your project.
\n\nOnce you provided an answer to all the questions, your terminal should look like this:
\n\nIt's now time to change some options on our Netlify project. Open directly your project on Netlify with this command:
\nntl open\n
You should see that our production deployment failed. You don't have to worry, this is totally normal. We need to disable our automatic build because our Github Actions will take care of it.
\nGo in your Settings > Build & deploy. Click on Edit settings
and Stop builds
. Save.
Just below, go to the Deploy contexts
section and select None
for the Deploy previews.
Don't worry, like the build, we will create our preview URL using Github actions.
\nIf you have been using Next.js you are aware of the capability to do the server-side rendering. But usually, you will need to configure a Node server and that's something we don't want to have to deal with. Around October 2020, the Netlify team started working on next-on-netlify
, a utility to enable SSR in Next.js on Netlify. That's what we are going to use here.
(In case you are not interested in Github Actions and want to use Netlify to build your project, take a look at how to use the Next on Netlify Plugin. It directly wraps your Next.js app and doesn't need as much configuration as we are going to explain.)
\nLet's start by installing our utility:
\nnpm install -D next-on-netlify\n
We must build our Next.js app as a serverless app
\nmodule.exports = {\n // Target must be serverless\n target: "serverless",\n};\n
We need to add a postbuild
command that is automatically triggered after our build
command finishes. next-on-netlify
does a lot of "magic" to copy and set up our Next.js app to be correctly hosted on Netlify.
{\n "name": "next-netlify-github-actions-starter",\n "version": "0.1.0",\n "private": true,\n "scripts": {\n "dev": "next dev",\n "build": "next build",\n "start": "next start",\n "postbuild": "next-on-netlify"\n },\n ...\n}\n
Remember the file that was automatically created and called netlify.toml
? You can remove all the boilerplate and replace it with only this code (be careful in respecting the indentation):
[build]\n command = ""\n functions = "out_functions"\n publish = "out_publish"\n
Technically, when next-on-netlify
will run, it will take what is in these folders and host it on Netlify. DO NOT CHANGE the name of these folders as these are hardcoded into the utility.
Don't forget to add these line to your .gitignore
file
# Netlify build\nout_*\n
You can commit your files. Let's work now on the Github Actions configuration.
\nThe netlify configuration is now done, all dependencies installed, it's time to configure our Github actions which will test, build and deploy our Next.js application to Netlify. But before that, we need to set up some Github secrets that we will need in our GH Actions.
\nGo to your Github project > Settings > Secrets > New repository secret
| Actions secret name | Comments |\n| -------------------- | -------------------------------------------------------------------------------------- |\n| NETLIFY_AUTH_TOKEN
| Request your token |\n| NETLIFY_SITE_ID
| The site to where deploy your site (get it from the API ID on your Site Settings) |
Create a new file called main.yml
inside .github/workflows
. Copy-paste the following code and read the explanation of it after this snippet.
name: Main workflow\n\non:\n pull_request:\n branches:\n - master\n - main\n types: [opened, synchronize, reopened]\n\njobs:\n test:\n runs-on: ubuntu-latest\n steps:\n - name: Checkout code\n uses: actions/checkout@v2\n\n # Cache node modules and next folder\n - name: 📬 Caching\n uses: actions/cache@v2\n with:\n path: |\n **/node_modules\n ${{ github.workspace }}/.next/cache\n key: ${{ runner.os }}-modules-${{ hashFiles('**/package-lock.json') }}\n\n - name: Use Node.js 14.x\n uses: actions/setup-node@v1\n with:\n node-version: 14.x\n\n - name: 🧰 Install dependencies\n run: npm run install\n\n - name: 📦 Build project\n run: npm run build --if-present\n\n # - name: 🧹 Run lint\n # run: npm run lint\n\n # - name: 🐛 Run tests\n # run: npm run test\n\n # Deploy to Netlify with a personalized message\n - name: 🚀 Deploy to Netlify\n id: deploy-netlify\n uses: netlify/actions/cli@master\n env:\n NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}\n NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }}\n with:\n args: deploy -m 'v${{ steps.package-version.outputs.current-version}} ・ ${{ github.head_ref }}'\n
build
logs in your Github Action tab:\nYou may have seen an argument passed to the Netlify deploy:
\nargs: deploy -m 'v${{ steps.package-version.outputs.current-version}} ・ ${{ github.head_ref }}'\n
This will add a message for each Deploy Preview, a way to keep track of which PR generated which Deploy.
\n\nOn the same deploy page, you can click on the Deploy Preview and access your app using the preview URL.
\nA better way would be to use another task to automatically populate your pull request with the log and preview URL. At the end of your file, add this action:
\n# Publish the inspect and preview link to the PR\n- name: 👓 Netlify Preview URL\n uses: unsplash/comment-on-pr@master\n env:\n GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n OUTPUT: "This pull request is being automatically deployed to Netlify.\\n\\n🔍 Inspect: ${{ steps.deploy-netlify.outputs.NETLIFY_LOGS_URL }}\\n✅ Preview: ${{ steps.deploy-netlify.outputs.NETLIFY_URL }}"\n with:\n msg: ${{ env.OUTPUT }}\n check_for_duplicate_msg: false\n
This will automatically create a comment in your PR.
\n\nIf you are still reading this, congrats! You have succeeded in deploying a fully enabled Next.JS application to Netlify using Github Actions!
\nThe next step for you now will be to add some linting rules and tests to ensure that you are sending to Netlify, an app that works perfectly!
\nFeel free to download or fork the next-netlify-github-actions-starter
, open an issue if you find any problem or send me any suggestion to make it better!
I’m not a psychologist or either a student in psychology. I spent a good amount of time in my life reading personal development books but in the end, I’m just a Front-End Web developer, who writes code. I had the chance to live in different countries and created real and profound relationships with people with different cultures, different colors, different ages, different religions, different visions of the world… I couldn’t imagine my life without all these persons and what they brought to my existence.
\nTalking and sharing life’s moments with all these people made me realized something you may know already: most of the human beings struggle in being happy and spend most of their lives, living in their past and acting or not acting based on numerous fears. Fear and past are the two biggest challenges that every human in history had to face.
\nFear is more than just a word or a feeling you experimented watching horror movies. Fear is just the most powerful weapon that, in 2019, is killing more than any other weapon in the world.
\nFear does not just kill physically people, fear kills creativity, originality, growth, relationships, marriages, ideas, will, happiness… Fear makes you feel bad at work because you think you don’t know enough, it pushes you to fail at the University: fear to not be good enough, fear to fail another relationship, fear to talk too much, fear to not talk enough, fear to be judged, fear to be invisible, fear to be different, fear to not be understood…
\nWith all the social media platforms, we try to connect people, reduce the friction in creating new possible relationships, and it works. We have so many incredible situations, made possible thanks to all these platforms out there. But I don’t think it’s really enough to make people fearless. You can be a movie star, or a famous singer, at the end of the day, your memories, your past is there. You can’t really push the button rewind or delete. All of us need to learn to live with our past, our mistakes. And that’s probably one of the most complicated parts of being human.
\nTake 2 minutes to analyze your day until now: I doubt you didn’t find any trace of fear pushing you to act or say something you didn’t really want to.
\nWe can’t do anything to change our past, including yesterday. We can try to forget or think that we are not attached to it, and yes, you are right, our pasts don’t define who we are. But our pasts mold our personality and our beliefs, and beliefs are something so hard to change sometimes.\nWe can battle a whole life and try to change our pasts, but you know and I know that it’s a waste of time. Our pasts are all painful, we all have moments we would like to forget, people that make us feel bad, people that hurt us, friends, parents, that disappointed us, love relationships that created a hole in our heart… Fortunately, not physically.
\nSo what are our options? Actually, do we have options? Maybe we have an easy option. And if we tried to choose the one the majority chooses? That would work? I don’t think I have an answer that would make you feel happy. The only answer that I can think of, is that accepting our past, whatever happened, whatever you lived is probably the only way to live our present and feel that joy that exists in every little thing around you.
\nI know what you may think: “Easy to say, hard to do”. Does anyone told you in your entire life: “Things are easy!”? Just ask you the question. Why most of us want something easy instead of something true. What happened in the history of humanity to make us believe that life equal easy or hard? Why can’t we just say that things are how they should be, and we need to choose the way we want to react when we are facing them? The way we choose to react and act is what matters.
\nWhen someone out there, our neighbor, a president, a friend decide to create a wall in their garden or between countries, we all think and believe that it is not a solution or even an option. But how many times, did we create a mental barrier between us and the world? How many times, did we get nervous because we don’t have full control over our life’s events? How many times, did we get angry because our child felt and instead of showing him love, we yell at him because we were afraid it could hurt himself? Afraid that next time, he could fall being alone? It’s easier to hide that fear behind that attitude than accepts and embrace that uncomfortable feeling of fear and react with love.
\nMaybe things in your life, made you create layers. Layers of protection to “help you face life’s challenge”. Really? Are you feeling happiest since you closed some doors and people think you are a negative person? Is the world a better place because you hide your feelings and you are not able to cry anymore? I don’t think so.
\nI wish I could have multiple lives (some people believe in it), but the one we all have is the one we are currently living. And we usually don’t regret things we did, but things we were not able to achieve and to do, like be open to our wife or husband, show to our kids that we are not perfect and that we made mistakes sometimes.
\nIn some cultures, some places in the world, you can’t really talk about fear and past. You can’t talk about the struggle you have in your life. A lot of people across history tried their best to remove some humanity in some cultures and who really wants to defeat centuries of culture which forces you to not be yourself? Things are not equaled in the world, but it’s not a reason to not try.
\nWhat makes people think they can’t talk about their issues, once again, fear is probably behind that for most cases.
\nSometimes I’m not sure why, in a work environment, people can’t say “I don’t know, I’m not sure, I’m having doubts lately…” Is an issue to be human nowadays? Because I feel, I can’t work? Because I’m not sure, I will not be a good employee? Of course, a company is a place for you to work, help a company to grow and get more value in the market but is it not a place where humans live, breath and share emotions and moments?
\nI met many people around the world that were themselves at home, but could never be themselves at work. Look at your right… yeah, you found him/her!
\nThings are going fast, technologies like cryptocurrency, AI, VR, autonomous cars, all of that is changing and is going to change our worlds. But in the end, fears, layers, will always be there, and one day, a lot more people will have to seek help if they want to be free from all of that. Life will always be what it is, but all of us can improve other’s lives, being there when they need, sending a small message asking if everything is fine. We don’t really need to make big efforts to help our world to feel better. Believing that you can do a lot for the people around you is the first step.
\nRight now, maybe a friend is waiting to receive a message from you. A signal to make him feel he is not alone. Have someone that can reassure him that his/her past will not define his/her tomorrow.
\n…What are you really waiting for? 📲
\nDisclaimer: I usually write articles about code, immigration, and tech, but a lot of my friends are lately facing the same issues, and even I try my best to help them, it’s also up to them to take action and choose the life they really want. This article is a way to hopefully help other people that may be facing the same issues in their lives. Let me a comment if you find this article relevant for your life!
", + "content_html": "I’m not a psychologist or either a student in psychology. I spent a good amount of time in my life reading personal development books but in the end, I’m just a Front-End Web developer, who writes code. I had the chance to live in different countries and created real and profound relationships with people with different cultures, different colors, different ages, different religions, different visions of the world… I couldn’t imagine my life without all these persons and what they brought to my existence.
\nTalking and sharing life’s moments with all these people made me realized something you may know already: most of the human beings struggle in being happy and spend most of their lives, living in their past and acting or not acting based on numerous fears. Fear and past are the two biggest challenges that every human in history had to face.
\nFear is more than just a word or a feeling you experimented watching horror movies. Fear is just the most powerful weapon that, in 2019, is killing more than any other weapon in the world.
\nFear does not just kill physically people, fear kills creativity, originality, growth, relationships, marriages, ideas, will, happiness… Fear makes you feel bad at work because you think you don’t know enough, it pushes you to fail at the University: fear to not be good enough, fear to fail another relationship, fear to talk too much, fear to not talk enough, fear to be judged, fear to be invisible, fear to be different, fear to not be understood…
\nWith all the social media platforms, we try to connect people, reduce the friction in creating new possible relationships, and it works. We have so many incredible situations, made possible thanks to all these platforms out there. But I don’t think it’s really enough to make people fearless. You can be a movie star, or a famous singer, at the end of the day, your memories, your past is there. You can’t really push the button rewind or delete. All of us need to learn to live with our past, our mistakes. And that’s probably one of the most complicated parts of being human.
\nTake 2 minutes to analyze your day until now: I doubt you didn’t find any trace of fear pushing you to act or say something you didn’t really want to.
\nWe can’t do anything to change our past, including yesterday. We can try to forget or think that we are not attached to it, and yes, you are right, our pasts don’t define who we are. But our pasts mold our personality and our beliefs, and beliefs are something so hard to change sometimes.\nWe can battle a whole life and try to change our pasts, but you know and I know that it’s a waste of time. Our pasts are all painful, we all have moments we would like to forget, people that make us feel bad, people that hurt us, friends, parents, that disappointed us, love relationships that created a hole in our heart… Fortunately, not physically.
\nSo what are our options? Actually, do we have options? Maybe we have an easy option. And if we tried to choose the one the majority chooses? That would work? I don’t think I have an answer that would make you feel happy. The only answer that I can think of, is that accepting our past, whatever happened, whatever you lived is probably the only way to live our present and feel that joy that exists in every little thing around you.
\nI know what you may think: “Easy to say, hard to do”. Does anyone told you in your entire life: “Things are easy!”? Just ask you the question. Why most of us want something easy instead of something true. What happened in the history of humanity to make us believe that life equal easy or hard? Why can’t we just say that things are how they should be, and we need to choose the way we want to react when we are facing them? The way we choose to react and act is what matters.
\nWhen someone out there, our neighbor, a president, a friend decide to create a wall in their garden or between countries, we all think and believe that it is not a solution or even an option. But how many times, did we create a mental barrier between us and the world? How many times, did we get nervous because we don’t have full control over our life’s events? How many times, did we get angry because our child felt and instead of showing him love, we yell at him because we were afraid it could hurt himself? Afraid that next time, he could fall being alone? It’s easier to hide that fear behind that attitude than accepts and embrace that uncomfortable feeling of fear and react with love.
\nMaybe things in your life, made you create layers. Layers of protection to “help you face life’s challenge”. Really? Are you feeling happiest since you closed some doors and people think you are a negative person? Is the world a better place because you hide your feelings and you are not able to cry anymore? I don’t think so.
\nI wish I could have multiple lives (some people believe in it), but the one we all have is the one we are currently living. And we usually don’t regret things we did, but things we were not able to achieve and to do, like be open to our wife or husband, show to our kids that we are not perfect and that we made mistakes sometimes.
\nIn some cultures, some places in the world, you can’t really talk about fear and past. You can’t talk about the struggle you have in your life. A lot of people across history tried their best to remove some humanity in some cultures and who really wants to defeat centuries of culture which forces you to not be yourself? Things are not equaled in the world, but it’s not a reason to not try.
\nWhat makes people think they can’t talk about their issues, once again, fear is probably behind that for most cases.
\nSometimes I’m not sure why, in a work environment, people can’t say “I don’t know, I’m not sure, I’m having doubts lately…” Is an issue to be human nowadays? Because I feel, I can’t work? Because I’m not sure, I will not be a good employee? Of course, a company is a place for you to work, help a company to grow and get more value in the market but is it not a place where humans live, breath and share emotions and moments?
\nI met many people around the world that were themselves at home, but could never be themselves at work. Look at your right… yeah, you found him/her!
\nThings are going fast, technologies like cryptocurrency, AI, VR, autonomous cars, all of that is changing and is going to change our worlds. But in the end, fears, layers, will always be there, and one day, a lot more people will have to seek help if they want to be free from all of that. Life will always be what it is, but all of us can improve other’s lives, being there when they need, sending a small message asking if everything is fine. We don’t really need to make big efforts to help our world to feel better. Believing that you can do a lot for the people around you is the first step.
\nRight now, maybe a friend is waiting to receive a message from you. A signal to make him feel he is not alone. Have someone that can reassure him that his/her past will not define his/her tomorrow.
\n…What are you really waiting for? 📲
\nDisclaimer: I usually write articles about code, immigration, and tech, but a lot of my friends are lately facing the same issues, and even I try my best to help them, it’s also up to them to take action and choose the life they really want. This article is a way to hopefully help other people that may be facing the same issues in their lives. Let me a comment if you find this article relevant for your life!
", "url": "https://thedaviddias.dev/articles/you-have-something-in-you-the-world-needs", "title": "You have something in YOU that the world needs", "summary": "Sometimes the only thing you need to remember is that you are not alone in this world.", @@ -188,7 +188,7 @@ }, { "id": "https://thedaviddias.dev/articles/front-end-performance-checklist-speeds-up-web-developments", - "content_html": "Performance is a huge subject, but it's not always a "back-end" or an "admin" subject: it's a Front-End responsibility too. The Front-End Performance Checklist is an exhaustive list of elements you should check or at least be aware of, as a Front-End developer and apply to your project (personal and professional).
\nFor each rule, you will have a paragraph explaining why this rule is important and how you can fix it. For more deep information, you should find links that will point to 🛠 tools, 📖 articles or 📹 medias that can complete the checklist.
\nAll items in the Front-End Performance Checklist are essentials to achieve the highest performance score but you would find an indicator to help you to eventually prioritised some rules amount others. There are 3 levels of priority:
\nList of the tools you can use to test or monitor your website or application:
\n[ ] Minified HTML: ![medium] The HTML code is minified, comments, white spaces and new lines are removed from production files.
\nWhy:
\n\n\nRemoving all unnecessary spaces, comments and attributes will reduce the size of your HTML and speed up your site's page load times and obviously lighten the download for your user.
\n
How:
\n\n\n\nMost of the frameworks have plugins to facilitate the minification of the webpages. You can use a bunch of NPM modules that can do the job for you automatically.
\n
[ ] Place CSS tags always before JavaScript tags: ![high] Ensure that your CSS is always loaded before having JavaScript code.
\n<!-- Not recommended -->\n<script src="jquery.js"></script>\n<script src="foo.js"></script>\n<link rel="stylesheet" href="foo.css" />\n\n<!-- Recommended -->\n<link rel="stylesheet" href="foo.css" />\n<script src="jquery.js"></script>\n<script src="foo.js"></script>\n
Why:
\n\n\nHaving your CSS tags before any JavaScript enables better, parallel download which speed up browser rendering time.
\n
How:
\n\n\n\n⁃ Ensure that
\n<link>
and<style>
in your<head>
are always before your<script>
.
[ ] Minimize the number of iframes: ![high] Use iframes only if you don't have any other technical possibility. Try to avoid iframes as much as you can.
\n[ ] Pre-load optimization with prefetch, dns-prefetch and prerender: ![low] Popular browsers can use directive on <link>
tag and "rel" attribute with certain keywords to pre-load specific URLs.
Why:
\n\n\nPrefetching allows a browser to silently fetch the necessary resources needed to display content that a user might access in the near future. The browser is able to store these resources in its cache and speed up the way web pages load when they are using different domains for page resources. When a web page has finished loading and the idle time has passed, the browser begins downloading other resources. When a user go in a particular link (already prefetched), the content will be instantly served.
\n
How:
\n\n\n\n⁃ Ensure that
\n<link>
is in your<head>
section.
[ ] Minification: ![high] All CSS files are minified, comments, white spaces and new lines are removed from production files.
\nWhy:
\n\n\nWhen CSS files are minified, the content is loaded faster and less data is sent to the client. It's important to always minify CSS files in production. It is beneficial for the user as it is for any business who wants to lower bandwidth costs and lower resource usage.
\n
How:
\n\n\n\n⁃ Use tools to minify your files automatically before or during your build or your deployment.
\n
[ ] Concatenation: ![medium] CSS files are concatenated in a single file (Not always valid for HTTP/2).
\n<!-- Not recommended -->\n<link rel="stylesheet" href="foo.css" />\n<link rel="stylesheet" href="bar.css" />\n\n<!-- Recommended -->\n<link rel="stylesheet" href="foobar.css" />\n
Why:
\n\n\nIf you are still using HTTP/1, you may need to still concatenate your files, it's less true if your server use HTTP/2 (tests should be made).
\n
How:
\n\n\n\n⁃ Use online tool or any plugin before or during your build or your deployment to concatenate your files.\n⁃ Ensure, of course, that concatenation does not break your project.
\n
[ ] Non-blocking: ![high] CSS files need to be non-blocking to prevent the DOM from taking time to load.
\n<link rel="preload" href="global.min.css" as="style" onload="this.rel='stylesheet'" />\n<noscript><link rel="stylesheet" href="global.min.css" /></noscript>\n
Why:
\n\n\nCSS files can block the page load and delay the rendering of your page. Using
\npreload
can actually load the CSS files before the browser starts showing the content of the page.
How:
\n\n\n\n⁃ You need to add the
\nrel
attribute with thepreload
value and addas="style"
on the<link>
element.
[ ] Unused CSS: ![medium] Remove unused CSS selectors.
\nWhy:
\n\n\nRemoving unused CSS selectors can reduce the size of your files and then speed up the load of your assets.
\n
How:
\n\n\n⁃ ⚠️ Always check if the framework CSS you want to use don't already has a reset / normalize code included. Sometimes you may not need everything that is inside your reset / normalize file.
\n
[ ] CSS Critical: ![high] The CSS critical (or "above the fold") collects all the CSS used to render the visible portion of the page. It is embedded before your principal CSS call and between <style></style>
in a single line (minified if possible).
Why:
\n\n\nInlining critical CSS help to speed up the rendering of the web pages reducing the number of requests to the server.
\n
How:
\n\n\n\nGenerate the CSS critical with online tools or using a plugin like the one that Addy Osmani developed.
\n
[ ] Embedded or inline CSS: ![high] Avoid using embed or inline CSS inside your <body>
(Not valid for HTTP/2)
Why:
\n\n\nOne of the first reason it's because it's a good practice to separate content from design. It also helps you have a more maintainable code and keep your site accessible. But regarding performance, it's simply because it decreases the file-size of your HTML pages and the load time.
\n
How:
\n\n\n\nAlways use external stylesheets or embed CSS in your
\n<head>
(and follow the others CSS performance rules)
[ ] Analyse stylesheets complexity: ![high] Analyzing your stylesheets can help you to flag issues, redundancies and duplicate CSS selectors.
\nWhy:
\n\n\nSometimes you may have redundancies or validation errors in your CSS, analysing your CSS files and removed these complexities can help you to speed up your CSS files (because your browser will read them faster)
\n
How:
\n\n\nYour CSS should be organized, using a CSS preprocessor can help you with that. Some online tools listed below can also help you analysing and correct your code.
\n
![fonts]
\n[ ] Webfont formats: ![medium] You are using WOFF2 on your web project or application.
\nWhy:
\n\n\nAccording to Google, the WOFF 2.0 Web Font compression format offers 30% average gain over WOFF 1.0. It's then good to use WOFF 2.0, WOFF 1.0 as a fallback and TTF.
\n
How:
\n\n\n\nCheck before buying your new font that the provider gives you the WOFF2 format. If you are using a free font, you can always use Font Squirrel to generate all the formats you need.
\n
[ ] Use preconnect
to load your fonts faster: ![medium]
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />\n
Why:
\n\n\nWhen you arrived on a website, your device needs to find out where your site lives and which server it needs to connect with. Your browser had to contact a DNS server and wait for the lookup complete before fetching the resource (fonts, CSS files...). Prefetches and preconnects allow the browser to lookup the DNS information and start establishing a TCP connection to the server hosting the font file. This provides a performance boost because by the time the browser gets around to parsing the css file with the font information and discovering it needs to request a font file from the server, it will already have pre-resolved the DNS information and have an open connection to the server ready in its connection pool.
\n
How:
\n\n\n⁃ Before prefetching your webfonts, use webpagetest to evaluate your website\n⁃ Look for teal colored DNS lookups and note the host that are being requested\n⁃ Prefetch your webfonts in your
\n<head>
and add eventually these hostnames that you should prefetch too
[ ] Webfont size: ![medium] Webfont sizes don't exceed 300kb (all variants included)
\n[ ] Prevent Flash or Invisible Text: ![medium] Avoid transparent text until the Webfont is loaded
\n[ ] Images optimization: ![high] Your images are optimized, compressed without direct impact to the end user.
\nWhy:
\n\n\nOptimized images load faster in your browser and consume less data.
\n
How:
\n\n\n⁃ Try using CSS3 effects when it's possible (instead of a small image)\n⁃ When it's possible, use fonts instead of text encoded in your images\n⁃ Use SVG\n⁃ Use a tool and specify a level compression under 85.
\n
[ ] Images format: ![high] Choose your image format appropriately.
\nWhy:
\n\n\nTo ensure that your images don't slow your website, choose the format that will correspond to your image. If it's a photo, JPEG is most of the time more appropriate than PNG or GIF. But don't forget to look a the nex-gen formats which can reduce the size of your files. Each image format has pros and cons, it's important to know these to make the best choice possible.
\n
How:
\n\n\n\n⁃ Use Lighthouse to identify which images can eventually use next-gen formats (like JPEG 2000m JPEG XR or WebP)\n⁃ Compare different formats, sometimes using PNG8 is better than PNG16, sometimes it's not.
\n
[ ] Use vector image vs raster/bitmap: ![medium] Prefer using vector image rather than bitmap images (when possible).
\nWhy:
\n\n\nVector images (SVG) tend to be smaller than images and SVG's are responsive and scale perfectly. These images can be animated and modified by CSS.
\n
[ ] Images dimensions: ![medium] Set width
and height
attributes on <img>
if the final rendered image size is known.
Why:
\n\n\nIf height and width are set, the space required for the image is reserved when the page is loaded. However, without these attributes, the browser does not know the size of the image, and cannot reserve the appropriate space to it. The effect will be that the page layout will change during loading (while the images load).
\n
[ ] Avoid using Base64 images: ![medium] You could eventually convert tiny images to base64 but it's actually not the best practice.
\n\n[ ] Lazy loading: ![medium] Offscreen images are loaded lazily (A noscript fallback is always provided).
\nWhy:
\n\n\nIt will improve the response time of the current page and then avoid loading unnecessary images that the user may not need.
\n
How:
\n\n\n\n⁃ Use Lighthouse to identify how many images are offscreen.\n⁃ Use a JavaScript plugin like the following to lazyload your images. Make sure you target offscreen images only.\n⁃ Also make sure to lazyload alternative images shown at mouseover or upon other user actions.
\n
[ ] Responsive images: ![medium] Ensure to serve images that are close to your display size.
\nWhy:
\n\n\nSmall devices don't need images bigger than their viewport. It's recommended to have multiple versions of one image on different sizes.
\n
How:
\n\n\n\n⁃ Create different image sizes for the devices you want to target.\n⁃ Use
\nsrcset
andpicture
to deliver multiple variants of each image.
[ ] JS Minification: ![high] All JavaScript files are minified, comments, white spaces and new lines are removed from production files (still valid if using HTTP/2).
\nWhy:
\n\n\nRemoving all unnecessary spaces, comments and break will reduce the size of your JavaScript files and speed up your site's page load times and obviously lighten the download for your user.
\n
How:
\n\n\n\n⁃ Use the tools suggested below to minify your files automatically before or during your build or your deployment.
\n
[ ] No JavaScript inside: ![medium] (Only valid for website) Avoid having multiple JavaScript codes embedded in the middle of your body. Regroup your JavaScript code inside external files or eventually in the <head>
or at the end of your page (before </body>
).
Why:
\n\n\nPlacing JavaScript embedded code directly in your
\n<body>
can slow down your page because it loads while the DOM is being built. The best option is to use external files withasync
ordefer
to avoid blocking the DOM. Another option is to place some scripts inside your<head>
. Most of the time analytics code or small script that need to load before the DOM gets to main processing.
How:
\n\n\n\nEnsure that all your files are loaded using
\nasync
ordefer
and decide wisely the code that you will need to inject in your<head>
.
[ ] Non-blocking JavaScript: ![high] JavaScript files are loaded asynchronously using async
or deferred using defer
attribute.
<!-- Defer Attribute -->\n<script defer src="foo.js"></script>\n\n<!-- Async Attribute -->\n<script async src="foo.js"></script>\n
Why:
\n\n\nJavaScript blocks the normal parsing of the HTML document, so when the parser reaches a
\n<script>
tag (particularly is inside the<head>
), it stops to fetch and run it. Addingasync
ordefer
are highly recommended if your scripts are placed in the top of your page but less valuable if just before your</body>
tag. But it's a good practice to always use these attributes to avoid any performance issue.
How:
\n\n\n\n⁃ Add
\nasync
(if the script don't rely on other scripts) ordefer
(if the script relies upon or relied upon by an async script) as an attribute to your script tag.\n⁃ If you have small scripts, maybe use inline script place above async scripts.
[ ] Optimized and updated JS libraries: ![medium] All JavaScript libraries used in your project are necessary (prefer Vanilla JavaScript for simple functionalities), updated to their latest version and don't overwhelm your JavaScript with unnecessary methods.
\nWhy:
\n\n\nMost of the time, new versions come with optimization and security fix. You should use the most optimized code to speed up your project and ensure that you'll not slow down your website or app without outdated plugin.
\n
How:
\n\n\n\nIf your project use NPM packages, npm-check is a pretty interesting library to upgrade / update your libraries.\nGreenkeeper can automatically look for your dependencies and suggest an update every time a new version is out.
\n
[ ] Check dependencies size limit: ![low] Ensure to use wisely external libraries, most of the time, you can use a lighter library for a same functionality.
\nWhy:
\n\n\nYou may be tempted to use one of the 745 000 packages you can find on npm, but you need to choose the best package for your needs. For example, MomentJS is an awesome library but with a lot of methods you may never use, that's why Day.js was created. It's just 2kB vs 16.4kB gz for Moment.
\n
How:
\n\n\n\nAlways compare and choose the best and lighter library for your needs. You can also use tools like npm trends to compare NPM package downloads counts or Bundlephobia to know the size of your dependencies.
\n
[ ] JavaScript Profiling: ![medium] Check for performance problems in your JavaScript files (and CSS too).
\nWhy:
\n\n\nJavaScript complexity can slow down runtime performance. Identifying these possible issues are essential to offer the smoothest user experience.
\n
How:
\n\n\nUse the Timeline tool in the Chrome Developer Tool to evaluate scripts events and found the one that may take too much time.
\n
[ ] Use of Service Workers: ![medium] You are using Service Workers in your PWA to cache data or execute possible heavy tasks without impacting the user experience of your application.
\n\n[ ] Your website is using HTTPS: ![high]
\nWhy:
\n\n\nHTTPS is not only for ecommerce websites, but for all websites that are exchanging data. Data shared by a user or data shared to an external entity. Modern browsers today limit functionalities for sites that are not secure. For example: geolocation, push notifications and service workers don't work if your instance is not using HTTPS. And today is much more easy to setup a project with an SSL certificate than it was before (and for free, thanks to Let's Encrypt).
\n
📖 Enabling HTTPS Without Sacrificing Your Web Performance - Moz
\n📖 HTTP versus HTTPS versus HTTP2 - The real story | Tune The Web
\n[ ] Page weight < 1500 KB (ideally < 500 KB): ![high] Reduce the size of your page + resources as much as you can.
\nWhy:
\n\n\nIdeally you should try to target < 500 KB but the state of web shows that the median of Kilobytes is around 1500 KB (even on mobile). Depending on your target users, network connection, devices, it's important to reduce as much as possible your total Kilobytes to have the best user experience possible.
\n
How:
\n\n\n\n⁃ All the rules inside the Front-End Performance Checklist will help you to reduce as much as possible your resources and your code.
\n
[ ] Page load times < 3 seconds: ![high] Reduce as much as possible your page load times to quickly deliver your content to your users.
\nWhy:
\n\n\nFaster your website or app is, less you have probability of bounce increases, in other terms you have less chances to lose your user or future client. Enough researches on the subject prove that point.
\n
How:
\n\n\n\nUse online tools like Page Speed Insight or WebPageTest to analyze what could be slowing you down and use the Front-End Performance Checklist to improve your load times.
\n
[ ] Time To First Byte < 1.3 seconds: ![high] Reduce as much as you can the time your browser waits before receiving data.
\n\n[ ] Cookie size: ![medium] If you are using cookies, be sure each cookie doesn't exceed 4096 bytes and your domain name doesn't have more than 20 cookies.
\nWhy:
\n\n\nCookies are exchanged in the HTTP headers between web servers and browsers. It's important to keep the size of cookies as low as possible to minimize the impact on the user's response time.
\n
How:
\n\n\n\nEliminate unnecessary cookies.
\n
[ ] Minimizing HTTP requests: ![high] Always ensure that every file requested are essential for your website or application.
\n[ ] Use a CDN to deliver your assets: ![medium] Use a CDN to deliver faster your content over the world.
\n[ ] Serve files from the same protocol: ![high] Avoid having your website serving files coming from source using HTTP on your website which is using HTTPS for example. If your website is using HTTPS, external files should come from the same protocol.
\n[ ] Serve reachable files: ![high] Avoid requesting unreachable files (404).
\n[ ] Set HTTP cache headers properly: ![high] Set HTTP headers to avoid expensive number of roundtrips between your browser and the server.
\n[ ] GZIP / Brotli compression is enabled: ![high] Use a compression method such as Gzip or Brotli to reduce the size of your JavaScript files. With a smaller sizes file, users will be able to download the asset faster, resulting in improved performance.
\nThe Front-End Performance Checklist wants to also be available in other languages! Don't hesitate to submit your contribution!
\nPerformance is a huge subject, but it's not always a "back-end" or an "admin" subject: it's a Front-End responsibility too. The Front-End Performance Checklist is an exhaustive list of elements you should check or at least be aware of, as a Front-End developer and apply to your project (personal and professional).
\nFor each rule, you will have a paragraph explaining why this rule is important and how you can fix it. For more deep information, you should find links that will point to 🛠 tools, 📖 articles or 📹 medias that can complete the checklist.
\nAll items in the Front-End Performance Checklist are essentials to achieve the highest performance score but you would find an indicator to help you to eventually prioritised some rules amount others. There are 3 levels of priority:
\nList of the tools you can use to test or monitor your website or application:
\n[ ] Minified HTML: ![medium] The HTML code is minified, comments, white spaces and new lines are removed from production files.
\nWhy:
\n\n\nRemoving all unnecessary spaces, comments and attributes will reduce the size of your HTML and speed up your site's page load times and obviously lighten the download for your user.
\n
How:
\n\n\n\nMost of the frameworks have plugins to facilitate the minification of the webpages. You can use a bunch of NPM modules that can do the job for you automatically.
\n
[ ] Place CSS tags always before JavaScript tags: ![high] Ensure that your CSS is always loaded before having JavaScript code.
\n<!-- Not recommended -->\n<script src="jquery.js"></script>\n<script src="foo.js"></script>\n<link rel="stylesheet" href="foo.css" />\n\n<!-- Recommended -->\n<link rel="stylesheet" href="foo.css" />\n<script src="jquery.js"></script>\n<script src="foo.js"></script>\n
Why:
\n\n\nHaving your CSS tags before any JavaScript enables better, parallel download which speed up browser rendering time.
\n
How:
\n\n\n\n⁃ Ensure that
\n<link>
and<style>
in your<head>
are always before your<script>
.
[ ] Minimize the number of iframes: ![high] Use iframes only if you don't have any other technical possibility. Try to avoid iframes as much as you can.
\n[ ] Pre-load optimization with prefetch, dns-prefetch and prerender: ![low] Popular browsers can use directive on <link>
tag and "rel" attribute with certain keywords to pre-load specific URLs.
Why:
\n\n\nPrefetching allows a browser to silently fetch the necessary resources needed to display content that a user might access in the near future. The browser is able to store these resources in its cache and speed up the way web pages load when they are using different domains for page resources. When a web page has finished loading and the idle time has passed, the browser begins downloading other resources. When a user go in a particular link (already prefetched), the content will be instantly served.
\n
How:
\n\n\n\n⁃ Ensure that
\n<link>
is in your<head>
section.
[ ] Minification: ![high] All CSS files are minified, comments, white spaces and new lines are removed from production files.
\nWhy:
\n\n\nWhen CSS files are minified, the content is loaded faster and less data is sent to the client. It's important to always minify CSS files in production. It is beneficial for the user as it is for any business who wants to lower bandwidth costs and lower resource usage.
\n
How:
\n\n\n\n⁃ Use tools to minify your files automatically before or during your build or your deployment.
\n
[ ] Concatenation: ![medium] CSS files are concatenated in a single file (Not always valid for HTTP/2).
\n<!-- Not recommended -->\n<link rel="stylesheet" href="foo.css" />\n<link rel="stylesheet" href="bar.css" />\n\n<!-- Recommended -->\n<link rel="stylesheet" href="foobar.css" />\n
Why:
\n\n\nIf you are still using HTTP/1, you may need to still concatenate your files, it's less true if your server use HTTP/2 (tests should be made).
\n
How:
\n\n\n\n⁃ Use online tool or any plugin before or during your build or your deployment to concatenate your files.\n⁃ Ensure, of course, that concatenation does not break your project.
\n
[ ] Non-blocking: ![high] CSS files need to be non-blocking to prevent the DOM from taking time to load.
\n<link rel="preload" href="global.min.css" as="style" onload="this.rel='stylesheet'" />\n<noscript><link rel="stylesheet" href="global.min.css" /></noscript>\n
Why:
\n\n\nCSS files can block the page load and delay the rendering of your page. Using
\npreload
can actually load the CSS files before the browser starts showing the content of the page.
How:
\n\n\n\n⁃ You need to add the
\nrel
attribute with thepreload
value and addas="style"
on the<link>
element.
[ ] Unused CSS: ![medium] Remove unused CSS selectors.
\nWhy:
\n\n\nRemoving unused CSS selectors can reduce the size of your files and then speed up the load of your assets.
\n
How:
\n\n\n⁃ ⚠️ Always check if the framework CSS you want to use don't already has a reset / normalize code included. Sometimes you may not need everything that is inside your reset / normalize file.
\n
[ ] CSS Critical: ![high] The CSS critical (or "above the fold") collects all the CSS used to render the visible portion of the page. It is embedded before your principal CSS call and between <style></style>
in a single line (minified if possible).
Why:
\n\n\nInlining critical CSS help to speed up the rendering of the web pages reducing the number of requests to the server.
\n
How:
\n\n\n\nGenerate the CSS critical with online tools or using a plugin like the one that Addy Osmani developed.
\n
[ ] Embedded or inline CSS: ![high] Avoid using embed or inline CSS inside your <body>
(Not valid for HTTP/2)
Why:
\n\n\nOne of the first reason it's because it's a good practice to separate content from design. It also helps you have a more maintainable code and keep your site accessible. But regarding performance, it's simply because it decreases the file-size of your HTML pages and the load time.
\n
How:
\n\n\n\nAlways use external stylesheets or embed CSS in your
\n<head>
(and follow the others CSS performance rules)
[ ] Analyse stylesheets complexity: ![high] Analyzing your stylesheets can help you to flag issues, redundancies and duplicate CSS selectors.
\nWhy:
\n\n\nSometimes you may have redundancies or validation errors in your CSS, analysing your CSS files and removed these complexities can help you to speed up your CSS files (because your browser will read them faster)
\n
How:
\n\n\nYour CSS should be organized, using a CSS preprocessor can help you with that. Some online tools listed below can also help you analysing and correct your code.
\n
![fonts]
\n[ ] Webfont formats: ![medium] You are using WOFF2 on your web project or application.
\nWhy:
\n\n\nAccording to Google, the WOFF 2.0 Web Font compression format offers 30% average gain over WOFF 1.0. It's then good to use WOFF 2.0, WOFF 1.0 as a fallback and TTF.
\n
How:
\n\n\n\nCheck before buying your new font that the provider gives you the WOFF2 format. If you are using a free font, you can always use Font Squirrel to generate all the formats you need.
\n
[ ] Use preconnect
to load your fonts faster: ![medium]
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />\n
Why:
\n\n\nWhen you arrived on a website, your device needs to find out where your site lives and which server it needs to connect with. Your browser had to contact a DNS server and wait for the lookup complete before fetching the resource (fonts, CSS files...). Prefetches and preconnects allow the browser to lookup the DNS information and start establishing a TCP connection to the server hosting the font file. This provides a performance boost because by the time the browser gets around to parsing the css file with the font information and discovering it needs to request a font file from the server, it will already have pre-resolved the DNS information and have an open connection to the server ready in its connection pool.
\n
How:
\n\n\n\n⁃ Before prefetching your webfonts, use webpagetest to evaluate your website\n⁃ Look for teal colored DNS lookups and note the host that are being requested\n⁃ Prefetch your webfonts in your
\n<head>
and add eventually these hostnames that you should prefetch too
[ ] Webfont size: ![medium] Webfont sizes don't exceed 300kb (all variants included)
\n[ ] Prevent Flash or Invisible Text: ![medium] Avoid transparent text until the Webfont is loaded
\n[ ] Images optimization: ![high] Your images are optimized, compressed without direct impact to the end user.
\nWhy:
\n\n\nOptimized images load faster in your browser and consume less data.
\n
How:
\n\n\n⁃ Try using CSS3 effects when it's possible (instead of a small image)\n⁃ When it's possible, use fonts instead of text encoded in your images\n⁃ Use SVG\n⁃ Use a tool and specify a level compression under 85.
\n
[ ] Images format: ![high] Choose your image format appropriately.
\nWhy:
\n\n\nTo ensure that your images don't slow your website, choose the format that will correspond to your image. If it's a photo, JPEG is most of the time more appropriate than PNG or GIF. But don't forget to look a the nex-gen formats which can reduce the size of your files. Each image format has pros and cons, it's important to know these to make the best choice possible.
\n
How:
\n\n\n\n⁃ Use Lighthouse to identify which images can eventually use next-gen formats (like JPEG 2000m JPEG XR or WebP)\n⁃ Compare different formats, sometimes using PNG8 is better than PNG16, sometimes it's not.
\n
[ ] Use vector image vs raster/bitmap: ![medium] Prefer using vector image rather than bitmap images (when possible).
\nWhy:
\n\n\nVector images (SVG) tend to be smaller than images and SVG's are responsive and scale perfectly. These images can be animated and modified by CSS.
\n
[ ] Images dimensions: ![medium] Set width
and height
attributes on <img>
if the final rendered image size is known.
Why:
\n\n\nIf height and width are set, the space required for the image is reserved when the page is loaded. However, without these attributes, the browser does not know the size of the image, and cannot reserve the appropriate space to it. The effect will be that the page layout will change during loading (while the images load).
\n
[ ] Avoid using Base64 images: ![medium] You could eventually convert tiny images to base64 but it's actually not the best practice.
\n\n[ ] Lazy loading: ![medium] Offscreen images are loaded lazily (A noscript fallback is always provided).
\nWhy:
\n\n\nIt will improve the response time of the current page and then avoid loading unnecessary images that the user may not need.
\n
How:
\n\n\n\n⁃ Use Lighthouse to identify how many images are offscreen.\n⁃ Use a JavaScript plugin like the following to lazyload your images. Make sure you target offscreen images only.\n⁃ Also make sure to lazyload alternative images shown at mouseover or upon other user actions.
\n
[ ] Responsive images: ![medium] Ensure to serve images that are close to your display size.
\nWhy:
\n\n\nSmall devices don't need images bigger than their viewport. It's recommended to have multiple versions of one image on different sizes.
\n
How:
\n\n\n\n⁃ Create different image sizes for the devices you want to target.\n⁃ Use
\nsrcset
andpicture
to deliver multiple variants of each image.
[ ] JS Minification: ![high] All JavaScript files are minified, comments, white spaces and new lines are removed from production files (still valid if using HTTP/2).
\nWhy:
\n\n\nRemoving all unnecessary spaces, comments and break will reduce the size of your JavaScript files and speed up your site's page load times and obviously lighten the download for your user.
\n
How:
\n\n\n\n⁃ Use the tools suggested below to minify your files automatically before or during your build or your deployment.
\n
[ ] No JavaScript inside: ![medium] (Only valid for website) Avoid having multiple JavaScript codes embedded in the middle of your body. Regroup your JavaScript code inside external files or eventually in the <head>
or at the end of your page (before </body>
).
Why:
\n\n\nPlacing JavaScript embedded code directly in your
\n<body>
can slow down your page because it loads while the DOM is being built. The best option is to use external files withasync
ordefer
to avoid blocking the DOM. Another option is to place some scripts inside your<head>
. Most of the time analytics code or small script that need to load before the DOM gets to main processing.
How:
\n\n\n\nEnsure that all your files are loaded using
\nasync
ordefer
and decide wisely the code that you will need to inject in your<head>
.
[ ] Non-blocking JavaScript: ![high] JavaScript files are loaded asynchronously using async
or deferred using defer
attribute.
<!-- Defer Attribute -->\n<script defer src="foo.js"></script>\n\n<!-- Async Attribute -->\n<script async src="foo.js"></script>\n
Why:
\n\n\nJavaScript blocks the normal parsing of the HTML document, so when the parser reaches a
\n<script>
tag (particularly is inside the<head>
), it stops to fetch and run it. Addingasync
ordefer
are highly recommended if your scripts are placed in the top of your page but less valuable if just before your</body>
tag. But it's a good practice to always use these attributes to avoid any performance issue.
How:
\n\n\n\n⁃ Add
\nasync
(if the script don't rely on other scripts) ordefer
(if the script relies upon or relied upon by an async script) as an attribute to your script tag.\n⁃ If you have small scripts, maybe use inline script place above async scripts.
[ ] Optimized and updated JS libraries: ![medium] All JavaScript libraries used in your project are necessary (prefer Vanilla JavaScript for simple functionalities), updated to their latest version and don't overwhelm your JavaScript with unnecessary methods.
\nWhy:
\n\n\nMost of the time, new versions come with optimization and security fix. You should use the most optimized code to speed up your project and ensure that you'll not slow down your website or app without outdated plugin.
\n
How:
\n\n\n\nIf your project use NPM packages, npm-check is a pretty interesting library to upgrade / update your libraries.\nGreenkeeper can automatically look for your dependencies and suggest an update every time a new version is out.
\n
[ ] Check dependencies size limit: ![low] Ensure to use wisely external libraries, most of the time, you can use a lighter library for a same functionality.
\nWhy:
\n\n\nYou may be tempted to use one of the 745 000 packages you can find on npm, but you need to choose the best package for your needs. For example, MomentJS is an awesome library but with a lot of methods you may never use, that's why Day.js was created. It's just 2kB vs 16.4kB gz for Moment.
\n
How:
\n\n\n\nAlways compare and choose the best and lighter library for your needs. You can also use tools like npm trends to compare NPM package downloads counts or Bundlephobia to know the size of your dependencies.
\n
[ ] JavaScript Profiling: ![medium] Check for performance problems in your JavaScript files (and CSS too).
\nWhy:
\n\n\nJavaScript complexity can slow down runtime performance. Identifying these possible issues are essential to offer the smoothest user experience.
\n
How:
\n\n\nUse the Timeline tool in the Chrome Developer Tool to evaluate scripts events and found the one that may take too much time.
\n
[ ] Use of Service Workers: ![medium] You are using Service Workers in your PWA to cache data or execute possible heavy tasks without impacting the user experience of your application.
\n\n[ ] Your website is using HTTPS: ![high]
\nWhy:
\n\n\nHTTPS is not only for ecommerce websites, but for all websites that are exchanging data. Data shared by a user or data shared to an external entity. Modern browsers today limit functionalities for sites that are not secure. For example: geolocation, push notifications and service workers don't work if your instance is not using HTTPS. And today is much more easy to setup a project with an SSL certificate than it was before (and for free, thanks to Let's Encrypt).
\n
[ ] Page weight < 1500 KB (ideally < 500 KB): ![high] Reduce the size of your page + resources as much as you can.
\nWhy:
\n\n\nIdeally you should try to target < 500 KB but the state of web shows that the median of Kilobytes is around 1500 KB (even on mobile). Depending on your target users, network connection, devices, it's important to reduce as much as possible your total Kilobytes to have the best user experience possible.
\n
How:
\n\n\n\n⁃ All the rules inside the Front-End Performance Checklist will help you to reduce as much as possible your resources and your code.
\n
[ ] Page load times < 3 seconds: ![high] Reduce as much as possible your page load times to quickly deliver your content to your users.
\nWhy:
\n\n\nFaster your website or app is, less you have probability of bounce increases, in other terms you have less chances to lose your user or future client. Enough researches on the subject prove that point.
\n
How:
\n\n\n\nUse online tools like Page Speed Insight or WebPageTest to analyze what could be slowing you down and use the Front-End Performance Checklist to improve your load times.
\n
[ ] Time To First Byte < 1.3 seconds: ![high] Reduce as much as you can the time your browser waits before receiving data.
\n\n[ ] Cookie size: ![medium] If you are using cookies, be sure each cookie doesn't exceed 4096 bytes and your domain name doesn't have more than 20 cookies.
\nWhy:
\n\n\nCookies are exchanged in the HTTP headers between web servers and browsers. It's important to keep the size of cookies as low as possible to minimize the impact on the user's response time.
\n
How:
\n\n\n\nEliminate unnecessary cookies.
\n
[ ] Minimizing HTTP requests: ![high] Always ensure that every file requested are essential for your website or application.
\n[ ] Use a CDN to deliver your assets: ![medium] Use a CDN to deliver faster your content over the world.
\n[ ] Serve files from the same protocol: ![high] Avoid having your website serving files coming from source using HTTP on your website which is using HTTPS for example. If your website is using HTTPS, external files should come from the same protocol.
\n[ ] Serve reachable files: ![high] Avoid requesting unreachable files (404).
\n[ ] Set HTTP cache headers properly: ![high] Set HTTP headers to avoid expensive number of roundtrips between your browser and the server.
\n[ ] GZIP / Brotli compression is enabled: ![high] Use a compression method such as Gzip or Brotli to reduce the size of your JavaScript files. With a smaller sizes file, users will be able to download the asset faster, resulting in improved performance.
\nThe Front-End Performance Checklist wants to also be available in other languages! Don't hesitate to submit your contribution!
\nIn October 2017, I launched my first open-source project on Github: the Front-End Checklist. In few hours, the project gained international visibility. After that, for a number of weeks, I had an incredible journey with many people around the world. I recently started giving talks in local communities around Spain and Portugal about the project, and I plan to check out France later on.
\nDoing these presentations gave me a different perspective and vision about the worldwide communities who organize meetups regularly. I discovered that there were an huge number of people who were looking for more and more content and wanted to participate in local communities.
\nAfter initiating the Front-End Dev Mauritius community, I know how complicated it can be to find people willing to share their experiences about Front-End Development. And for some, such as those who recently have moved from another city or country, having a welcoming tech community is important to getting setting up.\nI wanted to share with you some of the things I learned before, during, and after these meetups I participated in throughout Europe. And I want to encourage you to participate more in local events no matter where you are today.
\nKnowing that I would be on "holidays" for a few weeks in France, Spain, and Portugal I decided to try contacting local groups in Barcelona, Madrid, Lisbon, Aveiro, and Porto. I sent messages directly to the founders of local groups using Meetup.com, or contacted them via Twitter when they had specified their account on their profile. But, as I was expecting, I didn’t receive a lot of replies at first.
\nIn Barcelona however, Bettina from Ignit, who managed the “Barcelona Front-End Development Meetup”, answered me really quickly. We decided, after some email exchanges and a phone call, to have a meetup on 14 March about my project.
\nIn Madrid, the “Front-end Developers Madrid” organizers never answered me. But Juan Macias, a teacher’s assistant at “Ironhack Madrid,” did everything to help me setup a talk, which I gave on 16 March.
\nIn Lisbon, Shannon Graybill from “Lisbon Le Wagon” showed a lot of interest in having me do a presentation. But we lost touch after we tried to call each other few times without setting a time. Besides, I decided not to present in Lisboa, but instead tried to do something in Porto (easier for me, as I was in Aveiro for two weeks).\nThen in Porto I contacted Ricardo Mendes, who usually organizes “Porto Codes”. After few messages and emails, we decide to organize a talk on 5 April at Porto.io, at a coworking space in the middle of the city.
\n\nOne of the first rules I learned about giving a talk or a presentation was to “know your audience.” That is maybe the most challenging but nonetheless important rule you need to have in mind.\nA few days before each talk, I went through all the profiles on Meetup, trying to know my future audience better. Unfortunately, most of the people don’t put their Twitter or Facebook account in their profiles. They don’t often answer some basic questions sent by the owner of the group when they subscribe, which makes it really hard for a speaker learn about the target audience of a meetup.\nI sent a tweet to some people before the meetup in Barcelona, but I didn’t receive any responses. Next time 😉.
\nSince I didn’t know my audience in advance, I then decided to ask about each person’s career just before I started my talk. I adapted my content and discourse depending on their responses and it seemed that my slides were understandable by any level.
\nI’m not a fan of football (although my father is) — I never felt passionate about it. But that was something that would’ve been useful to think about before setting the Barcelona meetup’s date. Twenty-three peopole planned to come, but just…2 of them came. I discovered afterwards that “Barcelona — Chelsea” was probably one of the reasons why people didn’t come.\nFor me, it was an awesome time. I was able to focus more on specific questions asked by Jimmy from Los Angeles and Costa Rica and Marcela from Mexico (I also won’t forget the delicious pizza we ate after the meetup at Anauco).
\nThat might sound crazy, but printing my username on a tee-shirt was one of the things I’m happy I did. Some people may ask you how to contact you or may be too shy to do so. But with your username “on you,” it’s impossible not to find you on Internet (or forget who you are 😅)!
\nTelling stories is not that hard.\nLots of talks I’ve heard in the past, from different people, seemed “empty,” without any soul. Doing a talk is much more for me than a simple exposition of facts or numbers or code. It’s about a story, how someone found a way to develop their application, how some new technologies can improve the way we work in our daily lives, and so on.\nIn my case, it was how a “simple” checklist changed the way I see the Front-End worldwide community, and the way that some people will work in the future.
\nThat is maybe one of the biggest lesson I wanted to share with you in this post: you don’t need to be the best or the expert to share what you know or what you’ve learned before.\nLot of beginners with less than a couple years of experience don’t feel confident sharing what they know with others, because they think they don’t know enough.\nFrom my point of view, that’s the wrong belief. Whether you have experience or not, you always have something useful that can be shared with others. It’s as simple as that. And it’s something some people need to start believing once and for all.
\nIf your audience is used to sharing photos on Twitter or other social media, you’re lucky — you’ll have some photos of you to help you remember your talk or show the presentation you did. They might even come in handy if you want to write an article about it 😅.\nBut taking a group photo with all your attendees is a fun thing to plan before everyone runs out of the meetup. I failed on that point many times, and I was only able to take a picture in Porto with the two organisers, including Tim Lai.
\nA photo took after most of the attendees already went home.
\nThis is another thing I missed, but I now know how useful it could’ve been. Having feedback on any work or talk can be really helpful when we try to improve ourselves and the way we present things.\nIn my next meetups, I’ll probably give attendees a bit.ly link redirecting to a Typeform quizz which I’ll ask them to fill out.
\nAnd in case you didn’t read my article about how everything began, take a look at it here.\nPutting it all together\nGiving these talks in different cities and countries helped me learn how much can be shared and taught to an incredible number of people. During these last few years, while learning and sharing my vision of Front-End development, I wasn’t able to see how large the community of people wanting to become better actually was.\nWe can start with something really small, and that small thing can give us the opportunity to meet people and give them something they needed or were searching for.
\nNow, let’s recap each point I went through:
\nThat’s it. In case you like my article and find it useful, here are some things you can do to show your support:
\nIn October 2017, I launched my first open-source project on Github: the Front-End Checklist. In few hours, the project gained international visibility. After that, for a number of weeks, I had an incredible journey with many people around the world. I recently started giving talks in local communities around Spain and Portugal about the project, and I plan to check out France later on.
\nDoing these presentations gave me a different perspective and vision about the worldwide communities who organize meetups regularly. I discovered that there were an huge number of people who were looking for more and more content and wanted to participate in local communities.
\nAfter initiating the Front-End Dev Mauritius community, I know how complicated it can be to find people willing to share their experiences about Front-End Development. And for some, such as those who recently have moved from another city or country, having a welcoming tech community is important to getting setting up.\nI wanted to share with you some of the things I learned before, during, and after these meetups I participated in throughout Europe. And I want to encourage you to participate more in local events no matter where you are today.
\nKnowing that I would be on "holidays" for a few weeks in France, Spain, and Portugal I decided to try contacting local groups in Barcelona, Madrid, Lisbon, Aveiro, and Porto. I sent messages directly to the founders of local groups using Meetup.com, or contacted them via Twitter when they had specified their account on their profile. But, as I was expecting, I didn’t receive a lot of replies at first.
\nIn Barcelona however, Bettina from Ignit, who managed the “Barcelona Front-End Development Meetup”, answered me really quickly. We decided, after some email exchanges and a phone call, to have a meetup on 14 March about my project.
\nIn Madrid, the “Front-end Developers Madrid” organizers never answered me. But Juan Macias, a teacher’s assistant at “Ironhack Madrid,” did everything to help me setup a talk, which I gave on 16 March.
\nIn Lisbon, Shannon Graybill from “Lisbon Le Wagon” showed a lot of interest in having me do a presentation. But we lost touch after we tried to call each other few times without setting a time. Besides, I decided not to present in Lisboa, but instead tried to do something in Porto (easier for me, as I was in Aveiro for two weeks).\nThen in Porto I contacted Ricardo Mendes, who usually organizes “Porto Codes”. After few messages and emails, we decide to organize a talk on 5 April at Porto.io, at a coworking space in the middle of the city.
\n\nOne of the first rules I learned about giving a talk or a presentation was to “know your audience.” That is maybe the most challenging but nonetheless important rule you need to have in mind.\nA few days before each talk, I went through all the profiles on Meetup, trying to know my future audience better. Unfortunately, most of the people don’t put their Twitter or Facebook account in their profiles. They don’t often answer some basic questions sent by the owner of the group when they subscribe, which makes it really hard for a speaker learn about the target audience of a meetup.\nI sent a tweet to some people before the meetup in Barcelona, but I didn’t receive any responses. Next time 😉.
\nSince I didn’t know my audience in advance, I then decided to ask about each person’s career just before I started my talk. I adapted my content and discourse depending on their responses and it seemed that my slides were understandable by any level.
\nI’m not a fan of football (although my father is) — I never felt passionate about it. But that was something that would’ve been useful to think about before setting the Barcelona meetup’s date. Twenty-three peopole planned to come, but just…2 of them came. I discovered afterwards that “Barcelona — Chelsea” was probably one of the reasons why people didn’t come.\nFor me, it was an awesome time. I was able to focus more on specific questions asked by Jimmy from Los Angeles and Costa Rica and Marcela from Mexico (I also won’t forget the delicious pizza we ate after the meetup at Anauco).
\nThat might sound crazy, but printing my username on a tee-shirt was one of the things I’m happy I did. Some people may ask you how to contact you or may be too shy to do so. But with your username “on you,” it’s impossible not to find you on Internet (or forget who you are 😅)!
\nTelling stories is not that hard.\nLots of talks I’ve heard in the past, from different people, seemed “empty,” without any soul. Doing a talk is much more for me than a simple exposition of facts or numbers or code. It’s about a story, how someone found a way to develop their application, how some new technologies can improve the way we work in our daily lives, and so on.\nIn my case, it was how a “simple” checklist changed the way I see the Front-End worldwide community, and the way that some people will work in the future.
\nThat is maybe one of the biggest lesson I wanted to share with you in this post: you don’t need to be the best or the expert to share what you know or what you’ve learned before.\nLot of beginners with less than a couple years of experience don’t feel confident sharing what they know with others, because they think they don’t know enough.\nFrom my point of view, that’s the wrong belief. Whether you have experience or not, you always have something useful that can be shared with others. It’s as simple as that. And it’s something some people need to start believing once and for all.
\nIf your audience is used to sharing photos on Twitter or other social media, you’re lucky — you’ll have some photos of you to help you remember your talk or show the presentation you did. They might even come in handy if you want to write an article about it 😅.\nBut taking a group photo with all your attendees is a fun thing to plan before everyone runs out of the meetup. I failed on that point many times, and I was only able to take a picture in Porto with the two organisers, including Tim Lai.
\nA photo took after most of the attendees already went home.
\nThis is another thing I missed, but I now know how useful it could’ve been. Having feedback on any work or talk can be really helpful when we try to improve ourselves and the way we present things.\nIn my next meetups, I’ll probably give attendees a bit.ly link redirecting to a Typeform quizz which I’ll ask them to fill out.
\nAnd in case you didn’t read my article about how everything began, take a look at it here.\nPutting it all together\nGiving these talks in different cities and countries helped me learn how much can be shared and taught to an incredible number of people. During these last few years, while learning and sharing my vision of Front-End development, I wasn’t able to see how large the community of people wanting to become better actually was.\nWe can start with something really small, and that small thing can give us the opportunity to meet people and give them something they needed or were searching for.
\nNow, let’s recap each point I went through:
\nThat’s it. In case you like my article and find it useful, here are some things you can do to show your support:
\nAfter I’ve been invited by my previous company to move to Mauritius to manage a Front-End Developer’s team, I’m now looking forward to choose where I want to move next. I’ve been working for many years in Paris, but going back to France, like some of my compatriotes I know, is not an option for me.
\n\nWhen you start living outside your native country, creating worldwide links with others, you know that you can’t just “go back”. You can’t live ignoring the fact that being out of your comfort zone is the best thing that you can experience in life, more challenging when you live abroad. I spent 3 years in Brazil and these last two years in Mauritius. Thus I know that everything I learned from people around, I couldn’t learn if I was living in France.
\nBut today I’m facing a dilemma. I’m not sure which country / city I should to focus on my job researches. I need your help to decide where could be my next move…
\nCanada was is on 12th position of the Top Expat Destinations in 2016, 16th in 2017 according to “Expat Insider”. With more than 35 000 000 habitants split on around 9 000 000 km2, Canada is worldwide known to be a multicultural nation and with sometimes long and cold winters.
\nI went to Canada in October 2014, to visit Toronto and Montreal. I really loved it! Most of the people prefer Montreal, but in my case, I enjoyed more staying in Toronto. I have few friends who moved there so they will be able to give me some advices if I need some. Since 2015, I have been registered in the pool for the IEC Working Holidays visa. Unfortunately, until today, I hadn’t any luck… But I still have hope 🌤
\nThe International Mobility Program for Francophones could be also an option for me. And to apply for the Express Entry, I just need to pass my [IELTS exam}(https://www.ielts.org/) (on January the 20th) and have enough point to apply for.
\nThe website Numbeo helps to compare the cost of living of different cities in the world. It seems that the cost of living in Toronto is less than most of the cities I’m interested in although these datas are not 100% reliable.
\n\nThe kangorou’s country was on 7th position in the Top 10 of best countries Expat Insider 2016 and is now on 34th position in 2017.
\nI never went to Australia, but all my friend who went there, tell me good things about it. The immigration process does not seems easy and because I am +30 years, I can’t apply for the Working Holidays Visa. I’m still waiting from the French government to expand the upper age of eligibility from 30 to 35 years old.
\nAccording to Numbeo, Sydney has a cost of living a little higher than Melbourne.
\n\nNew Zealand was on 5th position for the Top 10 best countries by Expat Insider in 2016 and 6th for 2017.
\nI don’t know why but I was always fascinated by that country. I read a lot of articles about the pros and cons, comments of people who complain about things which are better handled elsewhere. But let me tell you something, I learned one thing since I had lived in different countries. You can have an opinion about everything around, but you should learn to live with that. It doesn’t mean you need to accept everything, but you can’t be happy in a place where you are always criticising.
\nComparing two places, in the same country or in different country is in general a mistake you do in the first country you live… But the more you move, the more you’ll learn of how to enjoy where you are and skip details.
\nThe city of Auckland was the first to answer to my tweet asking about “Where I need to move”.
\nWellington followed the next day with two adorable tweets:
\nMaybe the weather in Wellington is not as good as Auckland… But the weather can’t be the only thing to compare (I’m already missing Mauritius’ sun 😂).
\n\nThe USA was always on my TOP 1 choice (I went to NY 3 times) but it seems to be more and more complicated to get a job or a visa to go to the USA (Even if you have a project on Github with more than 23 000 likes 😅).
\nI don’t completely leave that option away but today, it’s more part of a dream than a reality plan.
\nI registered on the Green Card lottery for 2018… but I really don’t believe I can be so lucky…
\nYou may wonder: why the USA? It turns out that most of the people I admire are living in the USA. It seems to be easier to follow them being in the same country. It’s without counting on all conferences and meetups that are happening all over the country which I one day, I would like to be able to participate.
\nBut it’s probably because I’m looking for years to find a team of Developers, Web Designers and UX who can build innovative products together sharing their knowledge and having a similar vision.
\n\n\nI’m looking for years to find a team of Developers, Web Designers and UX who can build innovative products together sharing their knowledge and having a similar vision.
\n
I just had that experience once: at Barefoot Proximity in Cincinnati, Ohio. Julie Tran, Creative Director and Micky Osterman, project manager gave me in 2014 an experience I could not forget. For more than one month, I’ve been working hand by hand creating a new brand website. Whereas I have much more experience today, what I tasted that month is how I would like to work with future teams.
\n2018 should be an interesting year.
\nIn January, my IELTS exam will give me more chances to complete some immigration forms.
\nIn February, I’ll start sending my resume to some companies I perceive I can fit and by chance, it’ll become easier to decide which country I should focus on more.
\nIn May/June, I hope to be in the country which will give me the chance to continue creating products and websites, managing young developers and working with an awesome team of experts who see the future of the web!
", + "content_html": "After I’ve been invited by my previous company to move to Mauritius to manage a Front-End Developer’s team, I’m now looking forward to choose where I want to move next. I’ve been working for many years in Paris, but going back to France, like some of my compatriotes I know, is not an option for me.
\n\nWhen you start living outside your native country, creating worldwide links with others, you know that you can’t just “go back”. You can’t live ignoring the fact that being out of your comfort zone is the best thing that you can experience in life, more challenging when you live abroad. I spent 3 years in Brazil and these last two years in Mauritius. Thus I know that everything I learned from people around, I couldn’t learn if I was living in France.
\nBut today I’m facing a dilemma. I’m not sure which country / city I should to focus on my job researches. I need your help to decide where could be my next move…
\nCanada was is on 12th position of the Top Expat Destinations in 2016, 16th in 2017 according to “Expat Insider”. With more than 35 000 000 habitants split on around 9 000 000 km2, Canada is worldwide known to be a multicultural nation and with sometimes long and cold winters.
\nI went to Canada in October 2014, to visit Toronto and Montreal. I really loved it! Most of the people prefer Montreal, but in my case, I enjoyed more staying in Toronto. I have few friends who moved there so they will be able to give me some advices if I need some. Since 2015, I have been registered in the pool for the IEC Working Holidays visa. Unfortunately, until today, I hadn’t any luck… But I still have hope 🌤
\nThe International Mobility Program for Francophones could be also an option for me. And to apply for the Express Entry, I just need to pass my [IELTS exam}(https://www.ielts.org/) (on January the 20th) and have enough point to apply for.
\nThe website Numbeo helps to compare the cost of living of different cities in the world. It seems that the cost of living in Toronto is less than most of the cities I’m interested in although these datas are not 100% reliable.
\nThe kangorou’s country was on 7th position in the Top 10 of best countries Expat Insider 2016 and is now on 34th position in 2017.
\nI never went to Australia, but all my friend who went there, tell me good things about it. The immigration process does not seems easy and because I am +30 years, I can’t apply for the Working Holidays Visa. I’m still waiting from the French government to expand the upper age of eligibility from 30 to 35 years old.
\nAccording to Numbeo, Sydney has a cost of living a little higher than Melbourne.
\n\nNew Zealand was on 5th position for the Top 10 best countries by Expat Insider in 2016 and 6th for 2017.
\nI don’t know why but I was always fascinated by that country. I read a lot of articles about the pros and cons, comments of people who complain about things which are better handled elsewhere. But let me tell you something, I learned one thing since I had lived in different countries. You can have an opinion about everything around, but you should learn to live with that. It doesn’t mean you need to accept everything, but you can’t be happy in a place where you are always criticising.
\nComparing two places, in the same country or in different country is in general a mistake you do in the first country you live… But the more you move, the more you’ll learn of how to enjoy where you are and skip details.
\nThe city of Auckland was the first to answer to my tweet asking about “Where I need to move”.
\nWellington followed the next day with two adorable tweets:
\nMaybe the weather in Wellington is not as good as Auckland… But the weather can’t be the only thing to compare (I’m already missing Mauritius’ sun 😂).
\nThe USA was always on my TOP 1 choice (I went to NY 3 times) but it seems to be more and more complicated to get a job or a visa to go to the USA (Even if you have a project on Github with more than 23 000 likes 😅).
\nI don’t completely leave that option away but today, it’s more part of a dream than a reality plan.
\nI registered on the Green Card lottery for 2018… but I really don’t believe I can be so lucky…
\nYou may wonder: why the USA? It turns out that most of the people I admire are living in the USA. It seems to be easier to follow them being in the same country. It’s without counting on all conferences and meetups that are happening all over the country which I one day, I would like to be able to participate.
\nBut it’s probably because I’m looking for years to find a team of Developers, Web Designers and UX who can build innovative products together sharing their knowledge and having a similar vision.
\n\n\nI’m looking for years to find a team of Developers, Web Designers and UX who can build innovative products together sharing their knowledge and having a similar vision.
\n
I just had that experience once: at Barefoot Proximity in Cincinnati, Ohio. Julie Tran, Creative Director and Micky Osterman, project manager gave me in 2014 an experience I could not forget. For more than one month, I’ve been working hand by hand creating a new brand website. Whereas I have much more experience today, what I tasted that month is how I would like to work with future teams.
\n2018 should be an interesting year.
\nIn January, my IELTS exam will give me more chances to complete some immigration forms.
\nIn February, I’ll start sending my resume to some companies I perceive I can fit and by chance, it’ll become easier to decide which country I should focus on more.
\nIn May/June, I hope to be in the country which will give me the chance to continue creating products and websites, managing young developers and working with an awesome team of experts who see the future of the web!
", "url": "https://thedaviddias.dev/articles/choose-city-country-front-developer", "title": "Help me to choose the best city/country to be a Front-End Developer!", "summary": "Choosing a new city or country to leave is not an easy task. I'm sharing my process to choose the next city where I wanna live.", @@ -227,7 +227,7 @@ }, { "id": "https://thedaviddias.dev/articles/front-end-checklist-just-tool-everything-depends-on-you", - "content_html": "One month ago, I launched the Front-End Checklist on GitHub. In less than 2 weeks, more than 10,000 people around the world starred the repository. That was completely unexpected and incredible!
\n\nI’ve been working as a front-end developer since 2011, but I started to build websites in 2000. Since then, like us all, I’ve been trying to improve the quality of my code and deliver websites faster. Along the way, I’ve been managing developers from two different countries. That has helped me to produce a checklist a little different than what I’ve found on around the web over the years.
\nWhile I was creating the checklist, I continuously had the book “The Checklist Manifesto: How to Get Things Right” by Atul Gawade in mind. That book has helped me build checklists for my work and personal life, and simplify things that sometimes seem too complex.
\nIf you are working alone or in a team, individually, remotely, or on-site, I wanted to share some advice on using the Front-End Checklist and the web application that goes with it. Perhaps I can convince you to integrate it into your development cycle.
\n\nEvery project is different. Before starting a new project, the whole team (i.e. the project managers, designers, developers, QA, etc.) need to agree on what the deliverables will be.
\nTo help you to decide, I created 3 different levels of priority: high, medium, and low. You don’t necessarily need to agree with those distinctions, but they may help order your tasks.
\nThe Front-End Checklist app was done to facilitate the creation of personalized checklists. Change some JSON files to your liking and you are ready to start!
\nYou shouldn’t check all these rules only at the end of a project. You know as well as I do how projects are at the very end! Too hectic. Most of the items of the Front-End Checklist can be considered at the beginning of your development. It’s up to you to decide. Make it clear to your team upfront what happens when.
\nWho loves reading the docs? Not most of us, but it’s essential. If you want to understand the reasons for the rule, you can’t avoid reading up about them. The more you understand the why of each rule, the better developer you become.
\nThe Front-End Checklist app can facilitate your life as a developer. It’s a live checklist, so as you complete items your progress and grade are updated live. Everything is saved in localStorage so you can leave and come back as needed.
\nThe project is open source, so feel free to fork it and use it however you like. I’m working on making sure all the files are commented. I especially invite those interested in Pug to take a look at the views folder.
\nWe all dream of automation (or is it just me?). For now, the Front-End Checklist is just an interactive list, but some of the tasks can be automated in your workflow.
\nTake a look at the gulpfile used to generate the project. All tasks are packages you can use with npm, webpack, etc.
\nIf you’re passionate about generating clean code and care about your code quality, you should be regularly testing your pages. It’s so easy to make mistakes and remove some essential code. Or, someone else on your team might have done it, but it’s your shared responsibilty to be catching things like that.
\nThe Front-End Checklist can generate beautiful reports you can send to a project manager or Quality Assurance team.
\nSome people might look at such a long checklist and feel sick to their stomach. Going through such a list might cause anxiety and really not be any fun.
\nBut the Front-End Checklist is just a tool to help you deliver higher quality code. Code that affects all aspects of a project: the SEO, the user experience, the ROI, and ultimately the success of the project. A tool that can help across all those things might actually help reduce your anxiety and improve your health!
\nThe success the Front-End Checklist received in such a short time reminded me that a lot of people are really interested in finding ways to improve their work. But just because the tool exists doesn’t directly help with that. You also need to commit to using it.
\nIn a time where AI is taking over many manual tasks, quality is a must-have. Even if automation takes over a lot of our tasks, some level of quality will remain impossible to automate, and us front-end developers still have many long days to enjoy our jobs.
", + "content_html": "One month ago, I launched the Front-End Checklist on GitHub. In less than 2 weeks, more than 10,000 people around the world starred the repository. That was completely unexpected and incredible!
\n\nI’ve been working as a front-end developer since 2011, but I started to build websites in 2000. Since then, like us all, I’ve been trying to improve the quality of my code and deliver websites faster. Along the way, I’ve been managing developers from two different countries. That has helped me to produce a checklist a little different than what I’ve found on around the web over the years.
\nWhile I was creating the checklist, I continuously had the book “The Checklist Manifesto: How to Get Things Right” by Atul Gawade in mind. That book has helped me build checklists for my work and personal life, and simplify things that sometimes seem too complex.
\nIf you are working alone or in a team, individually, remotely, or on-site, I wanted to share some advice on using the Front-End Checklist and the web application that goes with it. Perhaps I can convince you to integrate it into your development cycle.
\n\nEvery project is different. Before starting a new project, the whole team (i.e. the project managers, designers, developers, QA, etc.) need to agree on what the deliverables will be.
\nTo help you to decide, I created 3 different levels of priority: high, medium, and low. You don’t necessarily need to agree with those distinctions, but they may help order your tasks.
\nThe Front-End Checklist app was done to facilitate the creation of personalized checklists. Change some JSON files to your liking and you are ready to start!
\nYou shouldn’t check all these rules only at the end of a project. You know as well as I do how projects are at the very end! Too hectic. Most of the items of the Front-End Checklist can be considered at the beginning of your development. It’s up to you to decide. Make it clear to your team upfront what happens when.
\nWho loves reading the docs? Not most of us, but it’s essential. If you want to understand the reasons for the rule, you can’t avoid reading up about them. The more you understand the why of each rule, the better developer you become.
\nThe Front-End Checklist app can facilitate your life as a developer. It’s a live checklist, so as you complete items your progress and grade are updated live. Everything is saved in localStorage so you can leave and come back as needed.
\nThe project is open source, so feel free to fork it and use it however you like. I’m working on making sure all the files are commented. I especially invite those interested in Pug to take a look at the views folder.
\nWe all dream of automation (or is it just me?). For now, the Front-End Checklist is just an interactive list, but some of the tasks can be automated in your workflow.
\nTake a look at the gulpfile used to generate the project. All tasks are packages you can use with npm, webpack, etc.
\nIf you’re passionate about generating clean code and care about your code quality, you should be regularly testing your pages. It’s so easy to make mistakes and remove some essential code. Or, someone else on your team might have done it, but it’s your shared responsibilty to be catching things like that.
\nThe Front-End Checklist can generate beautiful reports you can send to a project manager or Quality Assurance team.
\nSome people might look at such a long checklist and feel sick to their stomach. Going through such a list might cause anxiety and really not be any fun.
\nBut the Front-End Checklist is just a tool to help you deliver higher quality code. Code that affects all aspects of a project: the SEO, the user experience, the ROI, and ultimately the success of the project. A tool that can help across all those things might actually help reduce your anxiety and improve your health!
\nThe success the Front-End Checklist received in such a short time reminded me that a lot of people are really interested in finding ways to improve their work. But just because the tool exists doesn’t directly help with that. You also need to commit to using it.
\nIn a time where AI is taking over many manual tasks, quality is a must-have. Even if automation takes over a lot of our tasks, some level of quality will remain impossible to automate, and us front-end developers still have many long days to enjoy our jobs.
", "url": "https://thedaviddias.dev/articles/front-end-checklist-just-tool-everything-depends-on-you", "title": "The Front-End Checklist is just a tool… everything depends on you", "summary": "The steps you need to follow to efficiently use the application frontendchecklist.io", @@ -240,7 +240,7 @@ }, { "id": "https://thedaviddias.dev/articles/how-my-open-source-project-earned-6000-stars-on-github-in-just-5-days", - "content_html": "Last month I launched two open source projects on GitHub. A few days later, my Front-End Checklist was showing more than 6,000 stars (17,000 as of writing). And I got 600 stars for my Resources-Front-End-Beginner project!
\nIt was unexpected for me to receive such support coming from so many people around the globe: USA, Brazil, China, Japan, France, Canada, Spain, Mauritius, Japan, Portugal... Even now, I still can’t believe how many pull requests I received with changes and corrections these last days.
\nFor so long I received gifts from the open source world. Now I felt it was finally time for me to give back everything I have learned, and to help others.
\nAs a professional Front-End manager, I spend my time teaching and encouraging others to learn and practice. I regularly share interesting content and useful tools on the Front-End Dev Mauritius group on Facebook. But I never planned that the Front-End Checklist will become a worldwide project.
\nI’ve seen some Front-End checklists over the past year on the web:
\n\nSome of them helped me years ago when I wanted to improve my Front-End knowledge, but most of them were just “not enough.”
\nTwo years ago, I decided to start writing my own checklist based on my experiences. That checklist became way more important when I started to manage Front-End teams in France and Mauritius. Based on questions and usual mistakes from the teams, the content kept improving.
\nWhen I needed to teach someone how to become a better Front-End developer, I always had in mind that checklist that I started to work on. The document which started with a simple personal need became an ambitious tool for my team.
\nThen I started to feel the need to share it with more people.
\nA month ago I decided to put a first version on GitHub. And… at that moment, everything started to happen fast… really fast.
\nOn 18 October, I published the first version of my Front-End Checklist. I went to see all members of my team and I asked them to put a star 😀 on the repository. They don’t really have the habit to star projects on Github, I had to encourage them to do so 😂.
\nA few hours later, watching an episode of Hawaii Five-O with my wife, I opened my GitHub repository on my iPad. I was shocked to find that in only few hours, I had already received 700 stars.
\n\nI was not able to understand why and where these stars were coming from. (At that time, I didn’t know about the Insights > Traffic section on GitHub.)
\nI hadn’t even published any tweet about the Github repository. The next day, I published on my Twitter account: just few likes and retweets about the checklist. Nothing that may explain, where everyone was coming from.
\nI then started to validate pull requests and answer some logged issues. I was feeling so grateful for that unimaginable support. Even working daily with international websites, I forgot sometimes the power of Internet. (Or it’s maybe I’m living in a small island far from everything 😂.)
\nNext day, I received on Twitter a message from Product Hunt:
\nWithout really taking time to think, I opened my Illustrator and designed a logo to put on the page. I kept it basic, inspired by the logo of Front-End Coders, a future NGO I’ll be launching soon officially.
\n\nSince then, I received in less than one week 40 pull requests, was published on Codrops for my 2 lists in their Collective #359, on the Panda Weekly Newsletter #130 and #131, Hacker news, Reddit (multiple times), NewsCenter.io, La Ferme du Web and more.
\nTranslation in Japanese, Spanish, Chinese, Korean, Portuguese and Vietnamese were done in less than 2 weeks!
\n\nThe list is positioned first on Google for the words “Front-End Checklist”. Some landing pages on Github have the checklist on first position (Front-End Development, Checklist, Guidelines).
\nI discovered more recently that the project was on top of the trending feed on GitHub with more than 6,000 stars in less than a week (on 27 October 2017).
\nThe Front-End Checklist is trending on Github!
\nI’m a big fan of “Awesome”, the curated list of awesome lists created first by\nSindre Sorhus\n. But some lists are colossal and I found myself sometimes struggling to find what I want. I’m not sure if it’s because the amount of links or the absence of information attached to each link.
\nThis is why I decided to add emoticons in my two lists. I usually don’t use them too often, but in that case I found interesting to add more of these to have more information about the content of my links.
\nThe Front-End Checklist use emoticons to add more informations for each rule\nAs mentionned in the introduction of the Front-End Checklist, I used:
\nI also used 3 images (High, medium, low) to integrate different levels of priorities. I didn’t find any emoticon that could replace these images easily.
\nThe list of resources for Front-End Beginners also use emoticons to add some additional informations.\nOn my list of resources for Front-End Beginners, for example, I decided to indicate free and paid tutorials. It’s easier to have these type of informations before you click on any link. People can directly focus on what they prefer.
\nI use daily applications like Cloud Outliner Pro and MindNode to create new lists for my personal and professional life (and Todoist). I can’t imagine doing a complex task without a set of items into a list.
\nIf you have something to share, share it on GitHub now!\nWhen it comes to sharing documentation or code, today, there’s no other place I like more than Github. Last week I decided I needed to put my work in a place where people can easily access and participate.
\nThis kind of project is meant to be used and perfected by experiences and different points of view. Because Front-End development is always moving, evolving, it’s not always simple to stay on track on everything. Collaborative projects, where people can participate are for me the best way to have constantly updated tools.
\nI regularly meet young developers and people who want to become Front-End developer. Even on my YouTube channel, I receive lot of questions and requests. The first advice I give to them is to start coding and put their work on Github. It’s a way for them to show their interests to their friends, a future recruiter and to the world.
\nThe Front-End Code Camp is an event workshop to better understand the process of web development.\nDon’t hesitate, everything you do, related to coding and web, take time to present it correctly on an README file and click “push”!
\nBy the time I wrote this article I was already working on a small open-source web app... Today, you can already access the Front-End Checklist App online!
\nDue to many requests, I’m already working on an NPM module which will probably be used by a future website. It was not in my initial plans but when I saw so many people asking for, I couldn’t refuse.
\nI have much more to share! I’m working on other lists that may be as good as the Front-End Checklist… Well, I hope! 😃
", + "content_html": "Last month I launched two open source projects on GitHub. A few days later, my Front-End Checklist was showing more than 6,000 stars (17,000 as of writing). And I got 600 stars for my Resources-Front-End-Beginner project!
\nIt was unexpected for me to receive such support coming from so many people around the globe: USA, Brazil, China, Japan, France, Canada, Spain, Mauritius, Japan, Portugal... Even now, I still can’t believe how many pull requests I received with changes and corrections these last days.
\nFor so long I received gifts from the open source world. Now I felt it was finally time for me to give back everything I have learned, and to help others.
\nAs a professional Front-End manager, I spend my time teaching and encouraging others to learn and practice. I regularly share interesting content and useful tools on the Front-End Dev Mauritius group on Facebook. But I never planned that the Front-End Checklist will become a worldwide project.
\nI’ve seen some Front-End checklists over the past year on the web:
\n\nSome of them helped me years ago when I wanted to improve my Front-End knowledge, but most of them were just “not enough.”
\nTwo years ago, I decided to start writing my own checklist based on my experiences. That checklist became way more important when I started to manage Front-End teams in France and Mauritius. Based on questions and usual mistakes from the teams, the content kept improving.
\nWhen I needed to teach someone how to become a better Front-End developer, I always had in mind that checklist that I started to work on. The document which started with a simple personal need became an ambitious tool for my team.
\nThen I started to feel the need to share it with more people.
\nA month ago I decided to put a first version on GitHub. And… at that moment, everything started to happen fast… really fast.
\nOn 18 October, I published the first version of my Front-End Checklist. I went to see all members of my team and I asked them to put a star 😀 on the repository. They don’t really have the habit to star projects on Github, I had to encourage them to do so 😂.
\nA few hours later, watching an episode of Hawaii Five-O with my wife, I opened my GitHub repository on my iPad. I was shocked to find that in only few hours, I had already received 700 stars.
\nI was not able to understand why and where these stars were coming from. (At that time, I didn’t know about the Insights > Traffic section on GitHub.)
\nI hadn’t even published any tweet about the Github repository. The next day, I published on my Twitter account: just few likes and retweets about the checklist. Nothing that may explain, where everyone was coming from.
\nI then started to validate pull requests and answer some logged issues. I was feeling so grateful for that unimaginable support. Even working daily with international websites, I forgot sometimes the power of Internet. (Or it’s maybe I’m living in a small island far from everything 😂.)
\nNext day, I received on Twitter a message from Product Hunt:
\nWithout really taking time to think, I opened my Illustrator and designed a logo to put on the page. I kept it basic, inspired by the logo of Front-End Coders, a future NGO I’ll be launching soon officially.
\nSince then, I received in less than one week 40 pull requests, was published on Codrops for my 2 lists in their Collective #359, on the Panda Weekly Newsletter #130 and #131, Hacker news, Reddit (multiple times), NewsCenter.io, La Ferme du Web and more.
\nTranslation in Japanese, Spanish, Chinese, Korean, Portuguese and Vietnamese were done in less than 2 weeks!
\nThe list is positioned first on Google for the words “Front-End Checklist”. Some landing pages on Github have the checklist on first position (Front-End Development, Checklist, Guidelines).
\nI discovered more recently that the project was on top of the trending feed on GitHub with more than 6,000 stars in less than a week (on 27 October 2017).
\nThe Front-End Checklist is trending on Github!
\nI’m a big fan of “Awesome”, the curated list of awesome lists created first by\nSindre Sorhus\n. But some lists are colossal and I found myself sometimes struggling to find what I want. I’m not sure if it’s because the amount of links or the absence of information attached to each link.
\nThis is why I decided to add emoticons in my two lists. I usually don’t use them too often, but in that case I found interesting to add more of these to have more information about the content of my links.
\nThe Front-End Checklist use emoticons to add more informations for each rule\nAs mentionned in the introduction of the Front-End Checklist, I used:
\nI also used 3 images (High, medium, low) to integrate different levels of priorities. I didn’t find any emoticon that could replace these images easily.
\nThe list of resources for Front-End Beginners also use emoticons to add some additional informations.\nOn my list of resources for Front-End Beginners, for example, I decided to indicate free and paid tutorials. It’s easier to have these type of informations before you click on any link. People can directly focus on what they prefer.
\nI use daily applications like Cloud Outliner Pro and MindNode to create new lists for my personal and professional life (and Todoist). I can’t imagine doing a complex task without a set of items into a list.
\nIf you have something to share, share it on GitHub now!\nWhen it comes to sharing documentation or code, today, there’s no other place I like more than Github. Last week I decided I needed to put my work in a place where people can easily access and participate.
\nThis kind of project is meant to be used and perfected by experiences and different points of view. Because Front-End development is always moving, evolving, it’s not always simple to stay on track on everything. Collaborative projects, where people can participate are for me the best way to have constantly updated tools.
\nI regularly meet young developers and people who want to become Front-End developer. Even on my YouTube channel, I receive lot of questions and requests. The first advice I give to them is to start coding and put their work on Github. It’s a way for them to show their interests to their friends, a future recruiter and to the world.
\nThe Front-End Code Camp is an event workshop to better understand the process of web development.\nDon’t hesitate, everything you do, related to coding and web, take time to present it correctly on an README file and click “push”!
\nBy the time I wrote this article I was already working on a small open-source web app... Today, you can already access the Front-End Checklist App online!
\nDue to many requests, I’m already working on an NPM module which will probably be used by a future website. It was not in my initial plans but when I saw so many people asking for, I couldn’t refuse.
\nI have much more to share! I’m working on other lists that may be as good as the Front-End Checklist… Well, I hope! 😃
", "url": "https://thedaviddias.dev/articles/how-my-open-source-project-earned-6000-stars-on-github-in-just-5-days", "title": "How my open source project earned 6,000 stars on GitHub in just 5 days", "summary": "The Front-End Checklist is my first open-source project gaining so much attraction and visibility! In this article, I explain what happen the first 5 days my project got published.", @@ -253,7 +253,7 @@ }, { "id": "https://thedaviddias.dev/articles/how-morning-routine-can-positively-change-your-life-forever", - "content_html": "\nI cannot remember how many times it was hard for me to wake up in the morning. The snooze button was my best friend every morning, and I even hated when I was late to go somewhere. It was hard to believe that other ways could possibly exist when you work in my job area.
\n\n\nAt that time, I believed only one possible way to live was possible.
\n
As a Front-End Web Developer, these last years, sleeping 3–4 hours per night during a few successive days, drinking cups of coffee during the day (sometimes Redbull) was my ritual and my life. And I thought all developers life was close to that. To be the best, you need to go further, faster and perform better than others, and you cannot be restful, calm, have lot of leisure if you want to succeed…
\nI was asked to move from France to Mauritius in October 2015, delaying my goal to move to North America, to help my company to grow up and to manage a Front-End team of 12 persons (today 20).
\nI met my wife on that island, the most beautiful and Kind woman ever (Kajaal Dias). And you may imagine I was in the paradise…
\nBut in reality, it was far to be the paradise like most of my colleagues and friends may still imagine.
\nAt that point of my life, I was not feeling accomplished; I was not really happy for what I was doing and I was not living the life I always wanted.
\nAs most of the people, I was not able to take real actions and make changes to build something new and different.
\nIn October 2016, seeing web tutorials on Youtube, my eyes were attracted by a video title “My 20 Hour Day” by Travis Neilson on his DevTips channel. And that was probably the start of lots of changes in my life.
\nIt was the first time I heard about “polyphasic sleep”. A way to sleep less, but being in good health and more alert than sleeping successive 8 hours. At the beginning, I thought it was another fake experiment that may work for few people only. But my curiosity pushed me to dive in some advanced research. (Thanks to Damien Fauché and his french ebook: “How to sleep only 2h per day”)
\nFinally, few days after, I decided to try the polyphasic sleep - Everyman 3.
\nAt the beginning it was hard and challenging but my motivation and dedication help me not to give up. Today, it has been 4 months that I’m still sleeping 3–4 hours at night and taking 2–3 naps during the day.
\nMy core sleeping time is between 10h30 pm to 2h30–3h00 am. I do my first nap at home before leaving for work at 7h am for 25 minutes, my second nap is at 1h pm during lunch time for 20 minutes (in my car) and the third one at home again at 6h30 pm for 25 minutes after working hours.
\nIt is not always simple to be regular, but it’s really essential to listen to your body. I remember sometimes at the beginning sleeping much more in the weekend because I missed some naps during the weekdays. I simply took attention to my body reactions and even you need to try hard at the beginning to create a new habit, your body can adapt if your are really aware of its needs.
\nToday I am able to fall in sleep in less than 5 minutes (I slow down my breath, put myself in a stress-free position and not let my thoughts haunt me). That helps a lot when you need to do a 20 minutes nap.
\nSome weeks after, I started to feel that my life can be different, I could do things differently and put a real step forward to my dreams and achieve more than I always wanted to do.
\nPutting a step forward in life, is putting a step ahead of others. And to feel good with others, you need to feel good in your life. And it started with me being grateful…
\n\n\nGratitude is the quality of being thankful and simply appreciate what we have, even in general we don’t want to see how lucky we are.
\n
I started writing into “The Five Minute Journal”. It is not a journal like the others. It allows me to be grateful, mindful and plan which great things will happen during my day. I feel positive and happier when I use it.
\nStarting my day with my journal, creating and tracking new habits were just the beginning of my journey.
\nSleeping less allowed me to have time… much more time (one more day in my week). And even I love my work and to be a programmer, I felt I gave maybe too much to my coding life and not to my personal life and personal growth. I needed to put a real daily routine, a way to equilibrate my life in all its aspects.
\nAfter starting my Five Minute Journal, I discovered “The Miracle Morning” by Hal Elrod, reading articles and his book. That was exactly what I was looking for!
\nThen I started to put a morning routine using my favorite Todo app (Todoist).
\nS.A.V.E.R.S means Silence, Affirmations, Visualization, Exercises, Reading and Scribing. These 6 elements are part of my daily routine now and help me to start my day in the most positive way.
\nWaking up at 2h30 am, I start my day with a glass of water and a personal recipe with lemon, water, cinnamon, cayenne, ginger, apple cider, honey and collagen (everything organic). It allows me to feel good for whatever I ate the day before or will eat during the day. That did a huge change for my stomach, and I never had any stomach problems or pain again. (Remember in Mauritius, most of the recipes are spicy).
\nI brew my “Kick Ass” coffee from Kicking Horse Coffee with my beautiful Java Presse (I really love USA brands). I don’t really need coffee, but it’s more a personal pleasure for my morning ritual. (Sometimes I drink the Bulletproof Coffee by Dave Asprey with Coconut Oil and Ghee).
\n\nFor meditation I use the excellent app calm.com. It can take only 10 minutes sometimes more, but that practice in my life had a significant impact in my way I live the present and feel more peaceful. There are other useful apps like Headspace amongst others.
\nI wrote some affirmations I read every morning and before to go bed. After I take some minutes to visualize what I want to achieve in my day, that helps me to keep focus.
\nI use Day One for scribbing whatever I feel or have in mind during my day and recently move to Fields Notes for my Morning Pages (thanks to Loic Le Meur).
\nI put Brain.fm for 15 minutes (with my headphones) and read at least for 15 minutes. I created a list of books on Evernote I want to read each week and month. I’m challenging myself with Goodreads to read 50 books in 2017… I am late already… :)
\nI regularly undertake activities like coding, watching tutorials, design, social media updates, new projects depending on the day. It is normally between 1h to 1h30 hours in the morning and oneextra hour in the evening.
\nThen when my wife wakes up, we go for a 20 minutes walk in the park near our apartment. Before I take my shower, 5 minutes of plank and 5 minutes of shaper, it’s enough for me to sweat and feel good.
\nI add when I have 20 minutes free some Yoga exercises with the help of Daily Yoga. Otherwise I participate every Saturday morning to a session class.
\n\nI take my cold shower hearing my favorite podcasts The School of Greatness by Lewis Howes, The 5 AM miracle by Jeff Sanders and The Tim Ferris Show by Tim Ferriss. Can’t leave home without hearing these guys!
\nSince few weeks, I’m practicing Intermittent Fasting, so I don’t take breakfast but instead, I prepare a natural juice with cucumber, lemon, parsley, apple, carrot, wheat grass and with all others vegetables and fruits I find around.
\nDuring my short trajet to work (10 minutes), I listen with my wife some best-selling nonfiction books using Blinkist. I really recommend you to take a premium account, it is worths every penny.
\nThen I start my day at work with some other routines I may share in another article.
\n(I use to track some new habits on my mini-book “Track your habits” by kikki.k and with the Coach.me app.)
\nExperimenting lot of new things in the previous 4 months, give me the will to go further and do everything I can to achieve my goals and dreams.
\nI know I’m still adjusting with my Morning Routine, but I can’t go back after all what I discovered, all people I meet that give me some mindfulness and clarity in the life. I’m so grateful for all of this.
\nNothing can stop me now to fulfill every single unique present moment of my life.
\nAnd you, do you have a daily or morning routine?
\nWhat you do daily to improve your life, achieve your goals and take actions to build the life you want?
", + "content_html": "I cannot remember how many times it was hard for me to wake up in the morning. The snooze button was my best friend every morning, and I even hated when I was late to go somewhere. It was hard to believe that other ways could possibly exist when you work in my job area.
\n\n\nAt that time, I believed only one possible way to live was possible.
\n
As a Front-End Web Developer, these last years, sleeping 3–4 hours per night during a few successive days, drinking cups of coffee during the day (sometimes Redbull) was my ritual and my life. And I thought all developers life was close to that. To be the best, you need to go further, faster and perform better than others, and you cannot be restful, calm, have lot of leisure if you want to succeed…
\nI was asked to move from France to Mauritius in October 2015, delaying my goal to move to North America, to help my company to grow up and to manage a Front-End team of 12 persons (today 20).
\nI met my wife on that island, the most beautiful and Kind woman ever (Kajaal Dias). And you may imagine I was in the paradise…
\nBut in reality, it was far to be the paradise like most of my colleagues and friends may still imagine.
\nAt that point of my life, I was not feeling accomplished; I was not really happy for what I was doing and I was not living the life I always wanted.
\nAs most of the people, I was not able to take real actions and make changes to build something new and different.
\nIn October 2016, seeing web tutorials on Youtube, my eyes were attracted by a video title “My 20 Hour Day” by Travis Neilson on his DevTips channel. And that was probably the start of lots of changes in my life.
\nIt was the first time I heard about “polyphasic sleep”. A way to sleep less, but being in good health and more alert than sleeping successive 8 hours. At the beginning, I thought it was another fake experiment that may work for few people only. But my curiosity pushed me to dive in some advanced research. (Thanks to Damien Fauché and his french ebook: “How to sleep only 2h per day”)
\nFinally, few days after, I decided to try the polyphasic sleep - Everyman 3.
\nAt the beginning it was hard and challenging but my motivation and dedication help me not to give up. Today, it has been 4 months that I’m still sleeping 3–4 hours at night and taking 2–3 naps during the day.
\nMy core sleeping time is between 10h30 pm to 2h30–3h00 am. I do my first nap at home before leaving for work at 7h am for 25 minutes, my second nap is at 1h pm during lunch time for 20 minutes (in my car) and the third one at home again at 6h30 pm for 25 minutes after working hours.
\nIt is not always simple to be regular, but it’s really essential to listen to your body. I remember sometimes at the beginning sleeping much more in the weekend because I missed some naps during the weekdays. I simply took attention to my body reactions and even you need to try hard at the beginning to create a new habit, your body can adapt if your are really aware of its needs.
\nToday I am able to fall in sleep in less than 5 minutes (I slow down my breath, put myself in a stress-free position and not let my thoughts haunt me). That helps a lot when you need to do a 20 minutes nap.
\nSome weeks after, I started to feel that my life can be different, I could do things differently and put a real step forward to my dreams and achieve more than I always wanted to do.
\nPutting a step forward in life, is putting a step ahead of others. And to feel good with others, you need to feel good in your life. And it started with me being grateful…
\n\n\nGratitude is the quality of being thankful and simply appreciate what we have, even in general we don’t want to see how lucky we are.
\n
I started writing into “The Five Minute Journal”. It is not a journal like the others. It allows me to be grateful, mindful and plan which great things will happen during my day. I feel positive and happier when I use it.
\nStarting my day with my journal, creating and tracking new habits were just the beginning of my journey.
\nSleeping less allowed me to have time… much more time (one more day in my week). And even I love my work and to be a programmer, I felt I gave maybe too much to my coding life and not to my personal life and personal growth. I needed to put a real daily routine, a way to equilibrate my life in all its aspects.
\nAfter starting my Five Minute Journal, I discovered “The Miracle Morning” by Hal Elrod, reading articles and his book. That was exactly what I was looking for!
\nThen I started to put a morning routine using my favorite Todo app (Todoist).
\nS.A.V.E.R.S means Silence, Affirmations, Visualization, Exercises, Reading and Scribing. These 6 elements are part of my daily routine now and help me to start my day in the most positive way.
\nWaking up at 2h30 am, I start my day with a glass of water and a personal recipe with lemon, water, cinnamon, cayenne, ginger, apple cider, honey and collagen (everything organic). It allows me to feel good for whatever I ate the day before or will eat during the day. That did a huge change for my stomach, and I never had any stomach problems or pain again. (Remember in Mauritius, most of the recipes are spicy).
\nI brew my “Kick Ass” coffee from Kicking Horse Coffee with my beautiful Java Presse (I really love USA brands). I don’t really need coffee, but it’s more a personal pleasure for my morning ritual. (Sometimes I drink the Bulletproof Coffee by Dave Asprey with Coconut Oil and Ghee).
\n\nFor meditation I use the excellent app calm.com. It can take only 10 minutes sometimes more, but that practice in my life had a significant impact in my way I live the present and feel more peaceful. There are other useful apps like Headspace amongst others.
\nI wrote some affirmations I read every morning and before to go bed. After I take some minutes to visualize what I want to achieve in my day, that helps me to keep focus.
\nI use Day One for scribbing whatever I feel or have in mind during my day and recently move to Fields Notes for my Morning Pages (thanks to Loic Le Meur).
\nI put Brain.fm for 15 minutes (with my headphones) and read at least for 15 minutes. I created a list of books on Evernote I want to read each week and month. I’m challenging myself with Goodreads to read 50 books in 2017… I am late already… :)
\nI regularly undertake activities like coding, watching tutorials, design, social media updates, new projects depending on the day. It is normally between 1h to 1h30 hours in the morning and oneextra hour in the evening.
\nThen when my wife wakes up, we go for a 20 minutes walk in the park near our apartment. Before I take my shower, 5 minutes of plank and 5 minutes of shaper, it’s enough for me to sweat and feel good.
\nI add when I have 20 minutes free some Yoga exercises with the help of Daily Yoga. Otherwise I participate every Saturday morning to a session class.
\n\nI take my cold shower hearing my favorite podcasts The School of Greatness by Lewis Howes, The 5 AM miracle by Jeff Sanders and The Tim Ferris Show by Tim Ferriss. Can’t leave home without hearing these guys!
\nSince few weeks, I’m practicing Intermittent Fasting, so I don’t take breakfast but instead, I prepare a natural juice with cucumber, lemon, parsley, apple, carrot, wheat grass and with all others vegetables and fruits I find around.
\nDuring my short trajet to work (10 minutes), I listen with my wife some best-selling nonfiction books using Blinkist. I really recommend you to take a premium account, it is worths every penny.
\nThen I start my day at work with some other routines I may share in another article.
\n(I use to track some new habits on my mini-book “Track your habits” by kikki.k and with the Coach.me app.)
\nExperimenting lot of new things in the previous 4 months, give me the will to go further and do everything I can to achieve my goals and dreams.
\nI know I’m still adjusting with my Morning Routine, but I can’t go back after all what I discovered, all people I meet that give me some mindfulness and clarity in the life. I’m so grateful for all of this.
\nNothing can stop me now to fulfill every single unique present moment of my life.
\nAnd you, do you have a daily or morning routine?
\nWhat you do daily to improve your life, achieve your goals and take actions to build the life you want?
", "url": "https://thedaviddias.dev/articles/how-morning-routine-can-positively-change-your-life-forever", "title": "How a Morning Routine can positively change your life forever", "summary": "Having a Morning Routine can positively change your life in so many good ways. Through experimentation, I explore ways to improve my health and my mindset.", diff --git a/apps/blog/public/rss/feed.xml b/apps/blog/public/rss/feed.xml index 1e16e2a3..19cbc97f 100644 --- a/apps/blog/public/rss/feed.xml +++ b/apps/blog/public/rss/feed.xml @@ -4,7 +4,7 @@Last year, I discovered the only MacOS that simply convert multiple MP3 files into one M4B file. It's called AudioBookBinder App Store page and can be found on the App Store for free!
AudioBook Binder is a simple app that does one thing and does it well. It converts MP3 files into M4B files. You drag your MP3 files into the app, and the cover, and it will convert them into one M4B file.
- - +The options are limited but sufficient. You can set the cover, the title, the author, and the genre. I usually leave it to "Audiobook" for the genre.
I hope you find this app useful as I did.
And in case you store some audiobooks on your own server, you take a look at audiobookshelf. It's a Google and Apple app that allows you to listen to your audiobooks from your own server. It's open-source and free. You're welcome!
-]]> +]]>You may be getting the issue "The set-output
command is deprecated and will be disabled soon. Please upgrade to using Environment Files." from your Github workflow.
-
+
Few months ago, I choose to update some of my Github workflows to read from my .nvmrc
file instead of manually specifying my node version.
on: push
@@ -145,7 +145,7 @@ jobs:
Thu, 28 Jul 2022 15:47:33 GMT
This was a long wait! After months of lurking on Youtube watching others playing with their Deck, I finally got my purchase confirmation email for the Steam Deck!
-
+
What kept me sane during this time was probably this tool created by Labidou51. I was able to get a sense of when I would receive the email confirmation.