<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Enzo Conty</title>
    <description>The latest articles on DEV Community by Enzo Conty (@blkkkbvsik).</description>
    <link>https://dev.to/blkkkbvsik</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F383996%2F194587e1-1e8a-48c5-bda5-dfc59ad0799c.jpeg</url>
      <title>DEV Community: Enzo Conty</title>
      <link>https://dev.to/blkkkbvsik</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/blkkkbvsik"/>
    <language>en</language>
    <item>
      <title>My Experience Using VoiceOver for a Week as a Mobile Developer</title>
      <dc:creator>Enzo Conty</dc:creator>
      <pubDate>Mon, 17 Mar 2025 11:01:07 +0000</pubDate>
      <link>https://dev.to/blkkkbvsik/my-experience-using-voiceover-for-a-week-as-a-mobile-developer-19o2</link>
      <guid>https://dev.to/blkkkbvsik/my-experience-using-voiceover-for-a-week-as-a-mobile-developer-19o2</guid>
      <description>&lt;h2&gt;
  
  
  Why I Took on This Challenge
&lt;/h2&gt;

&lt;p&gt;As a mobile software engineer, accessibility has always been important to me, especially when one of my friends is blind, and I wanted to understand how he uses his phone daily more deeply. To do this, I decided to use &lt;a href="https://developer.apple.com/documentation/accessibility/voiceover/" rel="noopener noreferrer"&gt;VoiceOver&lt;/a&gt; exclusively for one week: not only to test apps, but to navigate my phone like someone who has recently become blind.&lt;/p&gt;

&lt;p&gt;I have to confess that I work daily with VoiceOver and &lt;a href="https://support.google.com/accessibility/android/answer/6283677" rel="noopener noreferrer"&gt;TalkBack&lt;/a&gt;, doing accessible apps and solutions &lt;a href="https://ezymob.fr/" rel="noopener noreferrer"&gt;at my current job&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At first, it was irritating because using my phone became so slow and inefficient. For a person to whom the phone is such a big part of my work and personal life, it was huge.&lt;br&gt;
To not break the challenge, I decided to create some rules just to stay on track with the challenge:&lt;/p&gt;

&lt;h3&gt;
  
  
  The rules
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwtxxdqdot5xcpmrwoifj.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwtxxdqdot5xcpmrwoifj.jpg" alt="Image where the word " width="640" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;1 - I would not turn off VoiceOver to expedite things unless completely stuck, unless using an app that will never be adapted for visual blindness, like &lt;a href="https://apps.apple.com/us/app/waze-navigation-live-traffic/id323229106?pt=274039" rel="noopener noreferrer"&gt;Waze&lt;/a&gt; for driving.&lt;/p&gt;

&lt;p&gt;2 - I'd use whatever was already installed on my phone. Of course, I can install new apps, but I'll prefer not to install any visually impaired related apps, but rather expect the accessibility solutions to be in mainstream applications.&lt;/p&gt;

&lt;p&gt;3 - I could see my phone screen, but I would only navigate using VoiceOver or with Siri. This rule may be a bit controversial because a visually impaired person wouldn't have this option, but I needed to make sure I can understand the situations to report what went great or bad with this experiement.&lt;/p&gt;

&lt;p&gt;Without further ado, let's see what happened...&lt;/p&gt;

&lt;h2&gt;
  
  
  The Good News: I Made It!
&lt;/h2&gt;

&lt;p&gt;I had made it through the week without quitting. The learning curve wasn't too steep, since I had already known and used many times VoiceOver, but I never used it for an extended period continuously. Within minutes, I realized that unlocking my phone with VoiceOver turned on was a different story, since I always enabled it after I was inside an app for testing purposes.&lt;/p&gt;

&lt;p&gt;Overall, I never met the case where an app was simply NOT accessible at all.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Challenges I Faced
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvov59zn3o5l4n4f28lag.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvov59zn3o5l4n4f28lag.jpg" alt="Image where the word " width="640" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Inaccessibility of Apps
&lt;/h3&gt;

&lt;p&gt;One of the biggest challenges was inaccessible apps. Many apps would have modal popups or bottom sheets, but VoiceOver would read content behind them instead of the actual popup content. This happened frequently and made simple tasks frustrating. This often happens when developers don't properly mark modal views as "focused" for screen readers, making VoiceOver continue reading whatever was beneath them.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Social Media &amp;amp; Incomplete Information
&lt;/h3&gt;

&lt;p&gt;This was a horrible experience while scrolling through social media feeds. At times, VoiceOver would cut off the caption, and sometimes it was very hard to know what was being said in that post. Multiple-image posts were even worse - the screen reader would jump from image to image without clarifying which caption belongs to which.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Typing with VoiceOver
&lt;/h3&gt;

&lt;p&gt;At first, it was painfully slow: VoiceOver reads out each letter as you're navigating the keyboard, so it gets rather frustrating to type out long messages. It wasn't until after two days and a call with my blind friend that I learned about the "one-shot" keyboard mode, in which you'd type normally but rely on VoiceOver afterward for error checking. This greatly improved my typing speed but at the cost of memorizing the keyboard layout.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Gesture Conflicts &amp;amp; Navigation Issues
&lt;/h3&gt;

&lt;p&gt;Many apps use custom gestures, such as swipe-to-delete or pinch-to-zoom, which conflict with VoiceOver gestures. This led to confusion—sometimes, I didn't know if the app was unresponsive or if I was simply using the wrong gesture. Navigation became unpredictable, requiring constant workarounds.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Maps &amp;amp; Navigation Difficulties
&lt;/h3&gt;

&lt;p&gt;Navigation apps worked fine for turn-by-turn directions, but exploring a map was nearly impossible. VoiceOver could read street names and points of interest, but understanding spatial relationships without visual context was extremely difficult. Planning a route manually was out of the question.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Takeaways
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1raiflzo8vcucifz608f.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1raiflzo8vcucifz608f.jpg" alt="Image where the word " width="640" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Accessibility isn't about making things "readable"; it's about making them usable. Most apps technically "work" with VoiceOver, but if the user can't efficiently complete tasks, then the experience is still bad.&lt;/p&gt;

&lt;p&gt;Most accessibility issues can be fixed with minor tweaks. Simply having popups correctly labeled, having images with alt text that makes sense, disabling VoiceOver on icons and other style elements and not allowing custom gestures to interfere with VoiceOver can greatly help in making things more usable.&lt;/p&gt;

&lt;p&gt;VoiceOver requires a lot of patience and adaptability. The experience required constant workarounds, learning hidden settings, and adjusting expectations. It made me appreciate how much effort visually impaired users put into using their phones daily.&lt;/p&gt;

&lt;h3&gt;
  
  
  Moving On
&lt;/h3&gt;

&lt;p&gt;This experience changed how I think about accessibility as a developer. I already tested my apps with VoiceOver &amp;amp; TalkBack from the first design phase, ensuring core interactions are accessible from the start, but now I'm convinced that this is something every developer should advocate for, and force companies/manager to take action for.&lt;/p&gt;

&lt;p&gt;I highly recommend any developer, product owner to try VoiceOver for a few hours or a day, it will entirely change how you look at accessibility.&lt;/p&gt;

&lt;h3&gt;
  
  
  Learn accessibility.
&lt;/h3&gt;

&lt;p&gt;Presently, we are developing a ruleset in my company, helping manager, developers, clients and curious people to learn about accessibility with a detailed book on how to make a digital product accessible.&lt;br&gt;
As it's not ready yet, I cannot share it, but you can follow me on X / Bluesky / LinkedIn where I will share it once it's ready.&lt;/p&gt;

&lt;p&gt;Meanwhile, I still want to share documentation that might help you get into accessibility more deeply:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.apple.com/design/human-interface-guidelines/accessibility" rel="noopener noreferrer"&gt;General Apple Documentation on A11Y&lt;/a&gt;&lt;br&gt;
&lt;a href="https://developer.apple.com/accessibility/" rel="noopener noreferrer"&gt;Recommendation on each types of disabilities&lt;/a&gt;&lt;br&gt;
&lt;a href="https://developer.android.com/guide/topics/ui/accessibility" rel="noopener noreferrer"&gt;Android Accessibility&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.youtube.com/playlist?list=PLNYkxOF6rcICWx0C9LVWWVqvHlYJyqw7g" rel="noopener noreferrer"&gt;A11ycasts with Rob Dodson&lt;/a&gt;&lt;br&gt;
&lt;a href="https://developer.android.com/codelabs/starting-android-accessibility" rel="noopener noreferrer"&gt;Android Accessibility Codelab&lt;/a&gt;&lt;/p&gt;

</description>
      <category>a11y</category>
      <category>mobile</category>
      <category>ios</category>
      <category>weeklyretro</category>
    </item>
    <item>
      <title>From Freelancer to CTO: A new chapter</title>
      <dc:creator>Enzo Conty</dc:creator>
      <pubDate>Tue, 17 Dec 2024 10:00:53 +0000</pubDate>
      <link>https://dev.to/blkkkbvsik/from-freelancer-to-cto-a-new-chapter-5827</link>
      <guid>https://dev.to/blkkkbvsik/from-freelancer-to-cto-a-new-chapter-5827</guid>
      <description>&lt;p&gt;Hey Flutter devs and tech enthusiasts!&lt;/p&gt;

&lt;p&gt;Enzo here, today I want to share a significant shift in my professional journey.&lt;br&gt;
After 7 years as a freelance developer, where I've had the pleasure of collaborating on many Flutter projects (Canonical, Betclic Group, Chili Publish and many more) and pushing the boundaries of Flutter on mobile, desktop and on embedded devices; I've made a big move, and I've joined one of my long-time clients as a full-time employee as their CTO!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftc3hstydcs93qnmjcd81.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftc3hstydcs93qnmjcd81.png" alt="Superman as a CTO funny image" width="800" height="472"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Why the shift?
&lt;/h3&gt;

&lt;p&gt;Freelancing has been an incredible ride. I've enjoyed unmatched flexibility in time, tackled numerous technical challenges, and connected with amazing people around the globe. &lt;br&gt;
However, as a freelancer, juggling between multiple projects, deadlines, and clients was exhilarating but often hectic.&lt;br&gt;
Shifting from a freelancing career to a full-time job was never on my radar until recently: for years, the freedom of freelancing matched my lifestyle perfectly, allowing me to choose projects that piqued my interest. The thought of anchoring myself to a single company, a single team, didn't appeal to me until it suddenly did.&lt;/p&gt;

&lt;p&gt;Joining as the CTO of a company I've freelanced with for over 3 years isn't just about stability: it's about committing to a team I deeply believe in. It’s a chance to work on projects I'm passionate about and to help establish the company's tech direction at a higher level.&lt;/p&gt;

&lt;p&gt;Sure, the steady paycheck of a full-time job might not match the peaks of a successful freelance project, but not everything is about money. This move was more about investing in my own career growth and diving deeper into projects I like to work on, as it's not always the case as a freelancer.&lt;/p&gt;

&lt;h3&gt;
  
  
  My journey (hopefully inspiring but not egocentric)
&lt;/h3&gt;

&lt;p&gt;Reflecting on my journey from a freelance developer to the CTO of a thriving company, it’s a narrative that I hope inspires those starting their tech careers as I’m reminded that everyone’s journey in tech can be unique and inspiring.&lt;/p&gt;

&lt;p&gt;I immersed myself in the world of technology with little more than a laptop, a CS master, and a great deal of curiosity. Over the years, I dedicated countless hours to mastering Flutter, contributing to open source, and sharing knowledge at conferences and meetups.&lt;/p&gt;

&lt;p&gt;My career path wasn’t just about coding: it was about creating connections, continuously learning, and adapting to new challenges. This hands-on, community-focused approach eventually led me to a pivotal role as CTO, where I now guide our company's technological vision.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why making an article about it?
&lt;/h3&gt;

&lt;p&gt;Well, firstly because I can, and I mostly write for myself!&lt;br&gt;
But most importantly, this isn't just a new job; it's BIG, at least for me, since this is the next chapter in my tech career, and I'm excited about it.&lt;/p&gt;

&lt;p&gt;For those finding themselves in a similar position or curious about balancing freelance and full-time opportunities, remember: it's all about finding the right fit for your career goals and lifestyle.&lt;br&gt;
Whether you're freelancing or an employee, staying passionate and proactive is key!&lt;/p&gt;

&lt;p&gt;And while I'll always cherish my freelancing days for their spontaneity and invaluable lessons, I’m thrilled about the extended, steady path ahead in my new role.&lt;/p&gt;

&lt;p&gt;I cannot wait to speak about what &lt;em&gt;we&lt;/em&gt; do at Ezymob at my next conferences 👀&lt;/p&gt;

</description>
      <category>career</category>
    </item>
    <item>
      <title>My Flutter Development Toolkit 2023: Daily Apps and Software</title>
      <dc:creator>Enzo Conty</dc:creator>
      <pubDate>Mon, 28 Aug 2023 20:28:39 +0000</pubDate>
      <link>https://dev.to/blkkkbvsik/my-essential-toolkit-2023-daily-apps-and-software-hardware-for-flutter-development-nbk</link>
      <guid>https://dev.to/blkkkbvsik/my-essential-toolkit-2023-daily-apps-and-software-hardware-for-flutter-development-nbk</guid>
      <description>&lt;p&gt;It has been a while since I last wrote an article.&lt;br&gt;
With the beginning of the new academic year approaching, I thought it would be a good idea to discuss the current state of my essential toolkit for Flutter development.&lt;br&gt;
Please bear in mind that this toolkit is entirely subjective, and certain items may not be of any use to you.&lt;/p&gt;
&lt;h1&gt;
  
  
  1 - Hardware &amp;amp; room tour
&lt;/h1&gt;

&lt;p&gt;As you may be aware, I am a freelance developer and work from home when I'm not wandering around attending conferences and since I recently relocated, I feel it's the perfect time to share with you my work environment and how I built my home development environment.&lt;/p&gt;

&lt;p&gt;As I write this article, this is how it looks like.&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1690422384451358720-204" src="https://platform.twitter.com/embed/Tweet.html?id=1690422384451358720"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1690422384451358720-204');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1690422384451358720&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;This is a small room used for working and occasionally drying laundry. 😅&lt;br&gt;
The desk is in front of the window, which allows me to still enjoy natural light and gaze at the trees. All of my collectibles are used as a nice background for when I do video calls with clients or speak with other developers&lt;/p&gt;

&lt;p&gt;You might have noticed that I own a total of two computers, but we'll concentrate on the MacBook since this is the one I mostly use for development, and the desk computer is used for accounting, music, and video calls (Also for gaming, but this is not the subject of this article).&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1685775948975628288-984" src="https://platform.twitter.com/embed/Tweet.html?id=1685775948975628288"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1685775948975628288-984');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1685775948975628288&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;As previously stated, let us discuss the hardware in greater detail. For Flutter development, my primary computer is a MacBook M1 Max equipped with 32 GB of RAM. My MacBook is overkill for the job, in fact, I'd suggest a MacBook/Mini M1 with 16 GB of RAM to be able to run any emulator/simulator, code editor, browser, and still have room for any extra program.&lt;/p&gt;

&lt;h1&gt;
  
  
  2 - Software &amp;amp; Tools
&lt;/h1&gt;

&lt;p&gt;I will list some programs and tools that I use during my development process. The list has no specific order, I will simply detail how I use the program, and its price.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://rotato.app/" rel="noopener noreferrer"&gt;2.1 - Rotato&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/gU5QqGOvzg0"&gt;
&lt;/iframe&gt;
In seconds, Rotato can create mockup images and promotional videos. It is very useful for creating mockups for stores, but it can also be useful for creating presentations for conferences, meetups, or for clients.&lt;br&gt;
Many devices can be mocked up, like iPads, iPhones, Android phones, MacBooks, watch, iMac, TVs or combinations of these. Helpful in many situations, Rotato costs $59 in a one-time payment.&lt;br&gt;
One of the main drawbacks is that Rotato is only available on MacOS.&lt;br&gt;
I found that the closest alternative on Windows would be After Effect, but it is much heavier and does not allow you to create renders with as much ease as Rotato.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://fvm.app/" rel="noopener noreferrer"&gt;2.2 - FVM&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3pwfnvse6z9nkn7q1uyt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3pwfnvse6z9nkn7q1uyt.png" alt="FVM" width="800" height="337"&gt;&lt;/a&gt;Flutter Version Manager - FVM is a CLI tool that lets you use multiple versions of Flutter and Dart on the same computer. This is especially useful if you're working on multiple Flutter or Dart projects with different versions. If you switch between projects or packages with different flutter versions, you won't have to use the "flutter downgrade" or "flutter upgrade" every time.&lt;br&gt;
The only inconvenience is that you must add the prefix 'fvm' for every flutter or dart command you would normally use in your terminal. One option is to fix that with an alias.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://arc.net/" rel="noopener noreferrer"&gt;2.3 - Arc&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmzspzywbo26gunur34fu.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmzspzywbo26gunur34fu.gif" alt="Arc" width="480" height="320"&gt;&lt;/a&gt;Arc is not directly related to Flutter or programming, however, since I began using it approximately one year ago, I have noticed a significant increase in my productivity, this is why I choose to include it into my toolkit.&lt;br&gt;
Arc is a browser for MacOS and iOS (but it is planned for Windows) that allows you to divide your tabs into multiple spaces. I typically utilize spaces to distinguish each project, wherein one space represents a single project. This allows for the systematic management of all resources within a project, thereby preventing any potential confusion when switching to another one. Additionally, there are "easels", which serve as a canvas for capturing notes, transferring images, and integrating live websites. Arc is completely free.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://marketplace.visualstudio.com/items?itemName=pflannery.vscode-versionlens" rel="noopener noreferrer"&gt;2.4 - Version Lens&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsmvtb3vgd86h8ws4lqhg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsmvtb3vgd86h8ws4lqhg.png" alt="Version Lens" width="548" height="208"&gt;&lt;/a&gt;For those who, like me, use Visual Studio Code, I recommend using Version Lens, which is an extension that allows you to find updates, when available, for your dependencies. It works with pub.dev, composer, dotnet, dub, maven, and npm.&lt;br&gt;
It is very useful for maintaining your apps with the latest update of the dependencies you have chosen. You can simply click on the text on top of your dependency to update it to its latest version or to the latest satisfied version, depending on your current version.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://marketplace.visualstudio.com/items?itemName=jeroen-meijer.pubspec-assist" rel="noopener noreferrer"&gt;2.5 - Pubspec Assist&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsi8hr703zwuk83zxcv2y.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsi8hr703zwuk83zxcv2y.gif" alt="Pubspec Assist" width="800" height="618"&gt;&lt;/a&gt;Pubspec Assist is another extension for Visual Studio Code; this one allows you to quickly add dependencies in your project without having to find the latest version on pub.dev&lt;br&gt;
It also sorts alphabetically all the dependencies, so it's easier to search for an element in your &lt;code&gt;pubspec.yaml&lt;/code&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  3 - Conclusion
&lt;/h1&gt;

&lt;p&gt;That was a list of the top software and tools that I frequently or almost daily use for Flutter development.&lt;br&gt;
In order to keep this list short, I did not include very popular software like Figma, Slack, Git, etc.&lt;/p&gt;

&lt;p&gt;Still, I will mention some great programs and tools that I like, but they aren't specific to Flutter or Dart. You can look into them yourself.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.git-tower.com/" rel="noopener noreferrer"&gt;Git Tower&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://singlebox.app/" rel="noopener noreferrer"&gt;Singlebox&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://apps.apple.com/fr/app/dropzone-4/id1485052491" rel="noopener noreferrer"&gt;Dropzone 4&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://fastlane.tools/" rel="noopener noreferrer"&gt;Fastlane&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I hope you enjoy reading my article and find something useful for your next project.&lt;br&gt;
You can always reach me on &lt;a href="https://twitter.com/EnzoConty" rel="noopener noreferrer"&gt;Twitter/X&lt;/a&gt; if you have any more questions, or if you want to share something from your toolkit, I'd be happy to test it and maybe include it in an article later on.&lt;/p&gt;

</description>
      <category>flutter</category>
      <category>mobile</category>
      <category>tooling</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Flutter Stacked X Appwrite authentication</title>
      <dc:creator>Enzo Conty</dc:creator>
      <pubDate>Sun, 08 May 2022 16:06:15 +0000</pubDate>
      <link>https://dev.to/blkkkbvsik/flutter-stacked-x-appwrite-authentication-1363</link>
      <guid>https://dev.to/blkkkbvsik/flutter-stacked-x-appwrite-authentication-1363</guid>
      <description>&lt;h3&gt;
  
  
  Overview of My Submission
&lt;/h3&gt;

&lt;p&gt;Hello 👋&lt;br&gt;
First time experimenting with AppWrite, and I'm really happy to find some great concurrent to my usual BackOffice.&lt;/p&gt;

&lt;p&gt;I didn't had a lot of time, and even less ideas, so I created a little application Android/iOS with &lt;a href="https://flutter.dev/" rel="noopener noreferrer"&gt;Flutter&lt;/a&gt; a Google UI framework created in 2017. It uses the Google back-end language &lt;a href="https://dart.dev/" rel="noopener noreferrer"&gt;Dart&lt;/a&gt; created in 2011.&lt;/p&gt;

&lt;p&gt;The application is based on a MVVM architecture using &lt;a href="https://pub.dev/packages/stacked" rel="noopener noreferrer"&gt;Stacked&lt;/a&gt; by FilledStacks as a state management. The usage of &lt;a href="https://pub.dev/packages/stacked" rel="noopener noreferrer"&gt;Stacked&lt;/a&gt; is for maintainability and readability. &lt;a href="https://pub.dev/packages/stacked" rel="noopener noreferrer"&gt;Stacked&lt;/a&gt; uses implicitly the &lt;a href="https://pub.dev/packages/provider" rel="noopener noreferrer"&gt;Provider&lt;/a&gt; package.&lt;/p&gt;

&lt;p&gt;As previously said, MoodyDiary is relying on the Stacked package. The main idea is to use an MVVM pattern to remove any business logic from the UI layouts by putting this logic in a separated view model. This adds more clarity and maintainability.&lt;/p&gt;

&lt;p&gt;We can decompose the project into 4 layers: the Models, The Views, and finally the ViewModels.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F695z3o802v6o7lbzi7ou.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F695z3o802v6o7lbzi7ou.png" alt="current architecture" width="433" height="235"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the project, the views are for display only.&lt;br&gt;
They can trigger interactions through Buttons/GestureDetector/Events that will call ViewModel methods.&lt;/p&gt;

&lt;p&gt;The ViewModel data-bind all the data from the services and models and create getters for the view and notify the view of any changes (using a ReactiveServiceMixin or a NotifyListeners)&lt;/p&gt;
&lt;h3&gt;
  
  
  Submission Category:
&lt;/h3&gt;

&lt;p&gt;Mobile Moguls&lt;/p&gt;
&lt;h3&gt;
  
  
  Link to Code
&lt;/h3&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/BLKKKBVSIK" rel="noopener noreferrer"&gt;
        BLKKKBVSIK
      &lt;/a&gt; / &lt;a href="https://github.com/BLKKKBVSIK/moody_diary" rel="noopener noreferrer"&gt;
        moody_diary
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A basic auth using Flutter with Stacked state management and Appwrite.io as BackOffice
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Summary&lt;/h1&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/BLKKKBVSIK/moody_diary#moodydiary" rel="noopener noreferrer"&gt;MoodyDiary&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/BLKKKBVSIK/moody_diary#current-architecture" rel="noopener noreferrer"&gt;Current architecture&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/BLKKKBVSIK/moody_diary#initialisation-requirement" rel="noopener noreferrer"&gt;Initialisation/Requirement&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/BLKKKBVSIK/moody_diary#troubleshooting" rel="noopener noreferrer"&gt;Troubleshooting&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;MoodyDiary&lt;/h3&gt;
&lt;/div&gt;
&lt;p&gt;The project is made with &lt;a href="https://flutter.dev/" rel="nofollow noopener noreferrer"&gt;Flutter&lt;/a&gt; a Google UI framework created in 2017
It uses the Google back-end language Dart created in 2011, &lt;a href="https://dartlang.org/" rel="nofollow noopener noreferrer"&gt;Dart&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The application is based on a MVVM architecture using &lt;a href="https://pub.dev/packages/stacked" rel="nofollow noopener noreferrer"&gt;Stacked&lt;/a&gt; by FilledStacks as a state management.
The usage of &lt;a href="https://pub.dev/packages/stacked" rel="nofollow noopener noreferrer"&gt;Stacked&lt;/a&gt; is for maintainability and readability.
&lt;a href="https://pub.dev/packages/stacked" rel="nofollow noopener noreferrer"&gt;Stacked&lt;/a&gt; uses implicitly the &lt;a href="https://pub.dev/packages/provider" rel="nofollow noopener noreferrer"&gt;Provider&lt;/a&gt; package.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Current architecture&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;As previously said, MoodyDiary is relying on the &lt;a href="https://pub.dev/packages/stacked" rel="nofollow noopener noreferrer"&gt;Stacked&lt;/a&gt; package. The main idea is to use an MVVM pattern to remove any business logic from the UI layouts by putting this logic in a separated view model. This adds more clarity and maintainability.&lt;/p&gt;
&lt;p&gt;We can decompose the project into 4 layers: the Models, The Views, and finally the ViewModels.&lt;/p&gt;
&lt;p&gt;
    &lt;a rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/20175372/150529665-4007b616-7590-490c-b25b-ef8a30753210.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F20175372%2F150529665-4007b616-7590-490c-b25b-ef8a30753210.png"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;In the project, the views are for display only.&lt;br&gt;
They can trigger interactions through Buttons/GestureDetector/Events that will call ViewModel methods.&lt;/p&gt;
&lt;p&gt;The ViewModel class can extend different types…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/BLKKKBVSIK/moody_diary" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h3&gt;
  
  
  Additional Resources / Info
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsvpi8zupmu5g4k9fbphu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsvpi8zupmu5g4k9fbphu.png" alt="LoginScreen" width="800" height="1498"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2bwyudu03x6rzfd2lz6t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2bwyudu03x6rzfd2lz6t.png" alt="RegisterScreen" width="800" height="1498"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw8fm9sf7hsxobdgwjktf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw8fm9sf7hsxobdgwjktf.png" alt="Logged/Homepage" width="800" height="1498"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>appwritehack</category>
      <category>flutter</category>
      <category>mobile</category>
    </item>
    <item>
      <title>Why "It doesn't work" should be a banned sentence.</title>
      <dc:creator>Enzo Conty</dc:creator>
      <pubDate>Wed, 02 Mar 2022 12:04:23 +0000</pubDate>
      <link>https://dev.to/blkkkbvsik/why-it-doesnt-work-should-be-a-banned-sentence-94f</link>
      <guid>https://dev.to/blkkkbvsik/why-it-doesnt-work-should-be-a-banned-sentence-94f</guid>
      <description>&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Every day&lt;/strong&gt;, I heard someone on some Discord, Slack, StackOverflow or even on some Jira tickets saying:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I'm trying to do &lt;code&gt;X&lt;/code&gt; and it doesn't work".&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And if you recognize yourself in this sentence, you need to stop saying that. Even if you're not an IT person.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0l18ji4lhkfn9ay4ok1u.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0l18ji4lhkfn9ay4ok1u.jpg" alt="AngryITPerson" width="640" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why ?
&lt;/h2&gt;

&lt;p&gt;Firstly, because this message is pointless ! You didn't give any context on your problem. We have no idea of what doesn't work:&lt;/p&gt;

&lt;p&gt;In my mind, I have at least a few more questions on your issue:&lt;/p&gt;

&lt;p&gt;What did you tried ?&lt;br&gt;
Did you get an error ?&lt;br&gt;
What is the result you expected ?&lt;br&gt;
Do you have documentation ?&lt;br&gt;
Did you google the error ?&lt;br&gt;
If yes, what did you tried then ?&lt;/p&gt;

&lt;p&gt;Secondly, it can also be seen that you're lazy because you're not providing any useful information on your problem.&lt;br&gt;
A lot of people will not help you because they need to start sending you messages asking you for more details to try to understand the situation and it's time-consuming, even if you reply quickly.&lt;br&gt;
It's still a lot of time wasted for both you and the people that are trying to help you.&lt;br&gt;
You can also refer to &lt;a href="https://dontasktoask.com/" rel="noopener noreferrer"&gt;https://dontasktoask.com/&lt;/a&gt; to describe correctly your first message.&lt;/p&gt;

&lt;p&gt;Finally, if you're not providing enough information, you will maybe face the &lt;a href="https://xyproblem.info/" rel="noopener noreferrer"&gt;X/Y problem&lt;/a&gt;: to describe it shortly it's when you ask how to do something (X), and somebody tells you to do something else (Y), but your original problem hasn't been solved.&lt;/p&gt;

&lt;h2&gt;
  
  
  The solution
&lt;/h2&gt;

&lt;p&gt;In summary, you should stop saying:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I'm trying to do X and it doesn't work".&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But say:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I'm trying to do X, I got this error, I tried Y, but I can't find a solution to my problem"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;By doing so, you have a higher chance of reply, a higher chance of find help, and a higher chance to fix your problem.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>beginners</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Why should you switch to a static portfolio website?</title>
      <dc:creator>Enzo Conty</dc:creator>
      <pubDate>Sat, 29 May 2021 14:04:45 +0000</pubDate>
      <link>https://dev.to/blkkkbvsik/why-should-your-portfolio-website-be-static-1mjp</link>
      <guid>https://dev.to/blkkkbvsik/why-should-your-portfolio-website-be-static-1mjp</guid>
      <description>&lt;p&gt;This is often the question I get from people whenever I told them that my website is static, made of HTML/CSS/JS only.&lt;/p&gt;

&lt;p&gt;A few years ago, I had a portfolio website where I was showing off my web dev skills and show potential recruiters that I can create a website with complex technical stacks. I was using Django, VueJS, and NuxtJS to achieve the perfect portfolio and to brag about it during my interview.&lt;/p&gt;

&lt;p&gt;The problem was that it was incredibly difficult to upgrade since the project was quite complex and I was suffering from a lack of motivation because I had to struggle with server-rendering, routing and it was just way too complex for a simple portfolio. I also needed a pipeline for my GitLab to deploy automatically my website when the build succeeded. &lt;/p&gt;

&lt;h2&gt;
  
  
  Simpler technical stack, same results
&lt;/h2&gt;

&lt;p&gt;Most of the people think that because my website is not using any back-end, it looks like a basic HTML page and I got stuck in 1995 with my website.&lt;/p&gt;

&lt;p&gt;The reality is that my website has even more features now that it is static.🤯&lt;/p&gt;

&lt;p&gt;Let's compare my old and new technical stacks:&lt;/p&gt;

&lt;p&gt;As I said previously I was using VueJS / NuxtJS / Django (and GitLab).&lt;br&gt;
Now I'm using tools that have tighter integration with each other for a more maintainable result.&lt;/p&gt;

&lt;p&gt;What I am using now:&lt;br&gt;
VueJS -&amp;gt; Bulma.io for building my front-end. It's a very simple, minimalist front-end library, a successor to the era of Bootstrap, it was just enough for what needed to be done.&lt;br&gt;
Django -&amp;gt; 11ty - My back-end became a static site generator (SSG) since I  found it way easier to manage routing and the little amount of logic that I had on my website.&lt;br&gt;
GitLab -&amp;gt; Netlify for deploying my website, Netlify can fetch, and deploy my website for free, with no pipeline configuration and after 2 minutes I had my website launched.&lt;/p&gt;

&lt;p&gt;NuxtJS was simply removed since there was no necessity for it anymore.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's the benefit?
&lt;/h2&gt;

&lt;p&gt;The benefit is mainly maintainability, it can also be a financial benefit if, like me, you were hosting your website on a VPS or dedicated server, where I can now post it directly on Github Pages and save 60 bucks per year. &lt;/p&gt;

&lt;p&gt;After refactoring my website so it can be fully static, I manage to create a static blog with little or no effort by integrating Netlify CMS, it allowed me to create an easily customizable administrator panel to manage blog posts and all the generated content of my website.&lt;br&gt;
If you were like me, using the Django admin panel, it's the perfect replacement, and when updating a blog post, it directly updates your GitHub repository.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdqu20y2idzsqdjpxismq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdqu20y2idzsqdjpxismq.png" alt="Alt Text" width="800" height="415"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Updating your website can be difficult and painful depending on your technical stack.&lt;br&gt;
You may want to keep a complex technical stack if your website should operate with APIs or have a complex business logic but if this isn't the case, you may want to consider using a static site generator such as 11ty, Jekyll, or Hugo to create easy to maintain and easy to manage websites.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>codenewbie</category>
      <category>beginners</category>
      <category>devjournal</category>
    </item>
    <item>
      <title>What did I learn by making my first Hackathon ? #Hack20 #FlutterHackathon</title>
      <dc:creator>Enzo Conty</dc:creator>
      <pubDate>Fri, 03 Jul 2020 12:31:25 +0000</pubDate>
      <link>https://dev.to/blkkkbvsik/what-did-i-learn-by-making-my-first-hackathon-hack20-flutterhackathon-2ipp</link>
      <guid>https://dev.to/blkkkbvsik/what-did-i-learn-by-making-my-first-hackathon-hack20-flutterhackathon-2ipp</guid>
      <description>&lt;p&gt;Hi everyone 👋&lt;/p&gt;

&lt;p&gt;Recently I've participated on the #Hack20, the 2020 annual Flutter hackathon.&lt;br&gt;
That was the first time that I was participating to a hackathon, and almost one of the first time I was making a tech event. So I though that I'll share my (very little) experience and some tips with you today ! &lt;/p&gt;

&lt;h1&gt;
  
  
  Making a team
&lt;/h1&gt;

&lt;p&gt;You're going to spend the next 24/48 hours making code ! So an important thing is to participate as a team: if you're doing it alone, you'll probably lose motivation quickly and you'll not push yourself to learn new thing on the road.&lt;br&gt;
As an example, my team was composed of 3 developers (including me), we didn't know each other before making our team, we were simply 3 people speaking the same language in the #searching-a-team channel on Slack. Turning out that we were all living on different continents ! And It was really cool to discover new Flutter developers with different habits of coding !&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fciuapmw3muggs163ifph.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fciuapmw3muggs163ifph.png" alt="SearchingForATeam" width="736" height="236"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Learning new things
&lt;/h1&gt;

&lt;p&gt;With a team of random people, I discovered a LOT of new packages and a lot of new habits of code ! For example, I was always using the package Provider for state management in my Flutter projects, but we choose to use bLoC pattern for state management on the hackathon and we all learn a little bit on this new way for us to deal with state management !&lt;br&gt;
We also share a lot of tips and answer each other with the bit of knowledge we had on Flutter, it was really team play at his best !&lt;/p&gt;

&lt;p&gt;After submitting our project, we've got an overview of all the projects that were submitted and some ideas were really crazy, and made by a diversity of awesome great developers !&lt;br&gt;
I've been really impressed by some of the projects and it gave me a lot of inspiration and motivation for future personal projects.&lt;/p&gt;

&lt;h1&gt;
  
  
  Don't participate to win.
&lt;/h1&gt;

&lt;p&gt;I've seen a lot of people participating for the cash prize, which was a crazy amount of 4.000$ this year for the first place, and more than 20.000$ in total. And I totally get why people get excited about, but in my opinion, it's really not a reason of why you should participate !&lt;/p&gt;

&lt;p&gt;Participating to the hackathon is more like playing a new World of Warcraft expansions with friends, you start playing in the morning and you're going bed late, and during all this time on your computer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You're happy to spend time with your mates.&lt;/li&gt;
&lt;li&gt;You learn new things.&lt;/li&gt;
&lt;li&gt;You discover things that you'll not have searched by yourself.&lt;/li&gt;
&lt;li&gt;Share a unique experience.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's maybe confusing to compare it to a game, but if you take pleasure to code with Flutter, then programming is a real game.&lt;/p&gt;

&lt;p&gt;See you for #Hack21.&lt;/p&gt;

</description>
      <category>hackathon</category>
      <category>flutter</category>
      <category>discuss</category>
      <category>motivation</category>
    </item>
    <item>
      <title>💙 #Flutter: Why should you use WireDash.io for your user feedback ?</title>
      <dc:creator>Enzo Conty</dc:creator>
      <pubDate>Mon, 25 May 2020 17:02:39 +0000</pubDate>
      <link>https://dev.to/blkkkbvsik/flutter-why-should-you-use-wiredash-io-for-your-user-feedback-5g6m</link>
      <guid>https://dev.to/blkkkbvsik/flutter-why-should-you-use-wiredash-io-for-your-user-feedback-5g6m</guid>
      <description>&lt;p&gt;Every time I publish a new application on the PlayStore or on the AppStore, I have the same problem:&lt;br&gt;
Most of the users don't leave feedback for my app, and when they do, it's mostly because they want to request a feature, or report a bug directly with the store review system !&lt;/p&gt;

&lt;p&gt;And it's very bad for your app for multiple reasons: &lt;/p&gt;

&lt;p&gt;1) The ratings are mostly people putting 3/5 stars for requesting features, or reporting a bug and it give lesser visibility to your app.&lt;/p&gt;

&lt;p&gt;2) The user is forced to go back to store to leave a review, and can be tempted to download a concurrent / similar app and uninstall yours later&lt;/p&gt;

&lt;h2&gt;
  
  
  Introducing WireDash.io
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://wiredash.io/" rel="noopener noreferrer"&gt;WireDash&lt;/a&gt; is the solution to all the problems above !&lt;br&gt;
The user will have the possibility to report a bug, ask for a feature and even more without leaving your app !&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ffxr56ybtykkqe5lppnwt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ffxr56ybtykkqe5lppnwt.png" alt="WireDash" width="750" height="1334"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It's almost black magic: you probably can't do better for UI/UX since the user take part of the testing process without leaving the app. It also gives the user a feeling of important duties and a close contact with the developers, all of this will result as a higher chance of keeping your user even if your app has major bugs or missing features.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installing WireDash
&lt;/h2&gt;

&lt;p&gt;Firstly, you need to register on the website of &lt;a href="//WireDash.io"&gt;WireDash.io&lt;/a&gt; and create a project, so you can later use the &lt;code&gt;ProjectId&lt;/code&gt; and &lt;code&gt;SecretId&lt;/code&gt; that are provided.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fg1yvgpa9du4zchg7rble.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fg1yvgpa9du4zchg7rble.png" alt="CreateProject" width="800" height="562"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Even a child can install WireDash, you need to add only 3 lines of code, but before this, don't forget to add the dependency in your pubspec.yaml:&lt;br&gt;
&lt;code&gt;wiredash: ^0.1.0&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;After this, you can start implementing WireDash by wrapping your &lt;code&gt;MaterialApp&lt;/code&gt; with the &lt;code&gt;WireDash&lt;/code&gt; widget and add your &lt;code&gt;ProjectId&lt;/code&gt; and &lt;code&gt;SecretId&lt;/code&gt; that you got from the previous steps.&lt;/p&gt;

&lt;p&gt;And you're good to go !&lt;br&gt;
WireDash is already working and you can start making your first bug report or feature request using the FAB.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3aac8xqxwtc4yxvr1iuf.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3aac8xqxwtc4yxvr1iuf.gif" alt="ReportABugWithWireDash" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And you can consult your new bug report instantly on WireDash.io&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F12rrzm9fsoxxl5vgk26o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F12rrzm9fsoxxl5vgk26o.png" alt="BugReportOnWebsite" width="800" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;WireDash support theming and dark mode, as well as most platforms:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F0btdb7ivqd4x4yplgqrb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F0btdb7ivqd4x4yplgqrb.png" alt="DarkMode" width="750" height="1334"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdu44f53cb26k5ikrid8d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdu44f53cb26k5ikrid8d.png" alt="DesktopVersion" width="800" height="643"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>flutter</category>
      <category>dart</category>
      <category>tutorial</category>
      <category>beginners</category>
    </item>
    <item>
      <title>💙 #Flutter: Why should you use it ? Pros of the cross-platform mobile framework of Google !</title>
      <dc:creator>Enzo Conty</dc:creator>
      <pubDate>Thu, 21 May 2020 16:11:06 +0000</pubDate>
      <link>https://dev.to/blkkkbvsik/flutter-why-should-you-use-it-pros-of-the-cross-platform-mobile-framework-of-google-2l7j</link>
      <guid>https://dev.to/blkkkbvsik/flutter-why-should-you-use-it-pros-of-the-cross-platform-mobile-framework-of-google-2l7j</guid>
      <description>&lt;p&gt;Maybe you are aware of this new contender in the game of cross-platform mobile framework, or maybe you're simply not aware of what is Flutter at all, but in any case we will today speak about how this powerful framework made applications creations a lot easier.&lt;/p&gt;

&lt;h2&gt;
  
  
  So firstly, what is Flutter ?
&lt;/h2&gt;

&lt;p&gt;Flutter, is a cross-platform mobile front-end framework made by Google, and it was launched firstly in May 2017 !&lt;/p&gt;

&lt;p&gt;For the beginners out there that may already be lost: making an iOS and Android app is very time consuming because you need to create 2 completely different project with different language, with Flutter, you don't have this problem anymore, because you only write code once and you will still have an Android app, and an iOS app ! So you're not loosing time (and money) to hire two kinds of developers !&lt;/p&gt;

&lt;p&gt;But for those who know a little about cross-platform mobile framework, you know that creating both iOS and Android application with the same code base in not new, Xamarin and React-Native have already done it.&lt;br&gt;
So... &lt;/p&gt;
&lt;h2&gt;
  
  
  Why should you use Flutter ?
&lt;/h2&gt;

&lt;p&gt;Firstly, because Flutter build native cross-platform apps, so no wrapping, no web app, we are building two reals apps with one programming language, so you don't have to learn Java/Kotlin for Android, and ObjectiveC/Swift for iOS !&lt;/p&gt;

&lt;p&gt;Flutter provide an SDK that compiles the code you write in native code for Android and iOS, that's why you only write once your code and with the same codebase also Flutter provide you a front-end framework to quickly and easily build UI.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Frkvq7otngi8qy3rtr3y9.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Frkvq7otngi8qy3rtr3y9.gif" alt="Demo: two apps one codebase" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Why it is better than React-Native ?
&lt;/h2&gt;

&lt;p&gt;React-Native is one of the most used cross-platform mobile framework as I write this article, so why Flutter would be better ?&lt;/p&gt;

&lt;p&gt;The answer is hidden on how the Flutter SDK compiles into native code.&lt;br&gt;
Since we're building two different apps on two different platform, you may think that when we create a button with &lt;code&gt;RaiseButton&lt;/code&gt; or &lt;code&gt;FlatButton&lt;/code&gt; in Flutter, it's "translated" as a &lt;code&gt;UIButton&lt;/code&gt; on iOS and a &lt;code&gt;widget.Button&lt;/code&gt; on Android, but &lt;strong&gt;it's not&lt;/strong&gt; !&lt;/p&gt;

&lt;p&gt;Actually, Flutter controls directly the pixels on your screen and act as a canvas on which you paint element of your UI ! If you don't believe me, I suggest you to see the video of &lt;a href="https://www.youtube.com/watch?v=DEppSs_ko48" rel="noopener noreferrer"&gt;Robert Felker, a french artist using Flutter to create art&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And what if I told you that you can do this too ? &lt;br&gt;
The code used to make such masterpiece is only 64 lines of codes !&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Solido" rel="noopener noreferrer"&gt;
        Solido
      &lt;/a&gt; / &lt;a href="https://github.com/Solido/flutter-d-art" rel="noopener noreferrer"&gt;
        flutter-d-art
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Generative d.Art with Flutter
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Generative d.Art&lt;/h1&gt;

&lt;/div&gt;
&lt;p&gt;Demonstrate how to generate your very own &lt;a href="https://twitter.com/hashtag/d_Art" rel="nofollow noopener noreferrer"&gt;#d_Art&lt;/a&gt; using Flutter.
As a technical point we are NOT relying on Widget but RenderBox directly.&lt;/p&gt;
&lt;p&gt;Don't be afraid of those 60 lines of codes &amp;amp; change everything you want
(but not the line with Math.Exp, it can damage your computer permanently)&lt;/p&gt;
&lt;p&gt;Code is tuned to work on a &amp;lt;&amp;lt; TABLET SCREEN SIZE &amp;gt;&amp;gt; so start an equivalent
not a phone.&lt;/p&gt;
&lt;p&gt;Can't wait to see your Creations on Twitter
Post with &lt;a href="https://twitter.com/hashtag/d_Art" rel="nofollow noopener noreferrer"&gt;#d_Art&lt;/a&gt; so everyone can appreciate it !&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Final Result&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/Solido/flutter-generative-art/blob/master/screenshots/01.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2FSolido%2Fflutter-generative-art%2Fraw%2Fmaster%2Fscreenshots%2F01.png" alt="Screenshot"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;



&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Solido/flutter-d-art" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;p&gt;And it might be scary to start a languages that's doesn't really have any limitations, but you shouldn't worry about it, because Flutter is one of the easiest language I learned because &lt;strong&gt;everything is a widget&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What do I mean by that ? Just check this code for creating a button, everybody (even non-technical people) can understand it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;          RaisedButton(
            color: Colors.blue,
            padding: EdgeInsets.all(10),
            onPressed: () {
              print("Button pressed");
            },
            child: Text("Press me !"),
          ),
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here is the result:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fwctty8o9oos4clpjnc40.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fwctty8o9oos4clpjnc40.png" alt="Result button" width="524" height="330"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So it means that at the end, you have full control of what's happening on the screen, you can start building complex UI without any limitation !&lt;/p&gt;

</description>
      <category>flutter</category>
      <category>tutorial</category>
      <category>dart</category>
      <category>beginners</category>
    </item>
    <item>
      <title>I participated in the making of a road safety app.</title>
      <dc:creator>Enzo Conty</dc:creator>
      <pubDate>Wed, 20 May 2020 16:54:12 +0000</pubDate>
      <link>https://dev.to/blkkkbvsik/i-participated-in-the-making-of-a-road-safety-app-1ofo</link>
      <guid>https://dev.to/blkkkbvsik/i-participated-in-the-making-of-a-road-safety-app-1ofo</guid>
      <description>&lt;p&gt;I'm a french computer science student, and for the past 3 years, I've been working along with 7 other students from my class on our end study project.&lt;br&gt;
The project was started after almost 2 weeks of brainstorming at the start of our 3rd year, and the project needs to be functional in the middle of our 5th year !&lt;/p&gt;
&lt;h2&gt;
  
  
  My Final Project
&lt;/h2&gt;

&lt;p&gt;So after a lot of brainstorming about the technical stack, the business plan and the need of our project for people around the world, we decided to create a road safety app.&lt;br&gt;
Why ? Because we saw that in France, we got problems with road safety, almost 40% of fatal accident by car are caused by 3 major factors:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Speed&lt;/li&gt;
&lt;li&gt;Distraction&lt;/li&gt;
&lt;li&gt;Sleep&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is why we created SharpEye, SharpEye is a mobile application that prevents the dangers while driving. It uses the rear camera of the phone to detect obstacles, pedestrians or any potential dangers and alert the driver by sending him a sound signal.&lt;/p&gt;

&lt;p&gt;The app is functional and we're proud of this !&lt;br&gt;
But the code is in some part very wacky, and because any of us want to continue this project so it'll actually stay as it 😓&lt;/p&gt;
&lt;h2&gt;
  
  
  Demo Link
&lt;/h2&gt;

&lt;p&gt;You can actually find it on the Play Store under the name of "SharpEye"&lt;br&gt;
Here is a &lt;a href="https://play.google.com/store/apps/details?id=sharpeye.sharpeye"&gt;link for you&lt;/a&gt; !&lt;/p&gt;

&lt;p&gt;Also a video &lt;a href="https://www.youtube.com/watch?v=MRkEZyZCgwY&amp;amp;feature=youtu.be"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Also here was the stand of our project in our school !&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KJAHgSy_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/yvs7ptlw43rx7cz34mtq.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KJAHgSy_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/yvs7ptlw43rx7cz34mtq.jpg" alt="Stand"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Link to Code
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--i3JOwpme--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/BLKKKBVSIK"&gt;
        BLKKKBVSIK
      &lt;/a&gt; / &lt;a href="https://github.com/BLKKKBVSIK/Sharpeye"&gt;
        Sharpeye
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
Sharpeye Android&lt;/h1&gt;
&lt;p&gt;This is the project for &lt;strong&gt;Sharpeye Android&lt;/strong&gt;.
&lt;strong&gt;SharpEye&lt;/strong&gt; is a mobile application that prevents dangers while driving. It uses the rear camera of the phone to detect obtacles, pedestrians or any potential dangers and alert the driver by sending him a sonor signal.&lt;/p&gt;
&lt;h2&gt;
Features&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Dangers detections&lt;/li&gt;
&lt;li&gt;Road signs reading&lt;/li&gt;
&lt;li&gt;Dashcam&lt;/li&gt;
&lt;li&gt;Sleeping detection&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
Languages&lt;/h2&gt;
&lt;p&gt;Sharpeye Android is mostly written in &lt;strong&gt;Kotlin&lt;/strong&gt;, &lt;strong&gt;Java is not prohibited&lt;/strong&gt; but try to &lt;strong&gt;avoid it as much as possible&lt;/strong&gt;, use it only if there is not kotlin alternative.&lt;/p&gt;
&lt;h2&gt;
Architecture&lt;/h2&gt;
&lt;p&gt;The App is built following a &lt;strong&gt;MVVM&lt;/strong&gt; design pattern standing for Model View ViewModel.
The folder structure follows the standard implementation of MVVM,
You can find it explained in details Here :&lt;a href="https://overflow.buffer.com/2016/09/26/android-rethinking-package-structure/" rel="nofollow"&gt; MVVM folder structure &lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
Build&lt;/h2&gt;
&lt;p&gt;Just click on make project.&lt;/p&gt;
&lt;h4&gt;
Please report any bug as soon as possible.&lt;/h4&gt;
&lt;/div&gt;



&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/BLKKKBVSIK/Sharpeye"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;h2&gt;
  
  
  How I built it (what's the stack? did I run into issues or discover something new along the way?)
&lt;/h2&gt;

&lt;p&gt;As I previously said, we started this project as a 3rd year student and finished it in the middle of our 5th year, after what we made a lot of presentations of the project to various tech events in Paris and France.&lt;/p&gt;

&lt;p&gt;So in 2 years of making, the project has evolved a lot and we too !&lt;br&gt;
The technical stack changed a bit, mostly what's concerning TensorFlow !&lt;/p&gt;

&lt;p&gt;So as I speak, SharpEye Android is mostly written in Kotlin, Java is not prohibited but try to avoid it as much as possible, and we use it only if there is no Kotlin alternative.&lt;/p&gt;

&lt;p&gt;We used TensorFlow Lite to train models that we used to recognised pedestrians and cars/truck etc.. Also OpenCV played a big role in our stack with different tracker (like the MOOSE tracker) that we implemented and tracking cars/obstacles/pedestrian between two TensorFlow Lite detection.&lt;/p&gt;

&lt;p&gt;[Final Note]: 20/30, we passed !&lt;/p&gt;

</description>
      <category>octograd2020</category>
      <category>android</category>
    </item>
    <item>
      <title>💙 #Flutter: NavigationRail, the new widget of Flutter v1.17 !</title>
      <dc:creator>Enzo Conty</dc:creator>
      <pubDate>Mon, 11 May 2020 17:08:16 +0000</pubDate>
      <link>https://dev.to/blkkkbvsik/flutter-navigationrail-widget-5fgb</link>
      <guid>https://dev.to/blkkkbvsik/flutter-navigationrail-widget-5fgb</guid>
      <description>&lt;p&gt;Recently I've been showing a real interest into Flutter and Dart, and generally into cross-platform mobile development, and Flutter caught my eyes almost 6 months ago, and since i'm following every news about the language, every conference and every tweet and I recommend you to do the same as the Flutter community is especially active on Twitter !&lt;/p&gt;

&lt;p&gt;Recently, this week actually, the Flutter team releases the v1.17 Stable of Flutter, and beside the performance improvement, the support of Metal on iOS and more than 6000 issues closed on the framework Github repository, there were also a couple of widgets that were added to the cross-platform framework.&lt;/p&gt;

&lt;p&gt;Today we're going to speak about one of them, the &lt;code&gt;NavigationRail&lt;/code&gt; widget !&lt;/p&gt;

&lt;h1&gt;
  
  
  What's the NavigationRail widget ?
&lt;/h1&gt;

&lt;p&gt;It's a material widget (so included in material.dart), and you can see it as an alternative of the &lt;code&gt;BottomNavigationBar&lt;/code&gt; widget with the look of a &lt;code&gt;Drawer&lt;/code&gt;, you can display it on the right or left side of your app to navigate between multiple screens.&lt;/p&gt;

&lt;p&gt;Here is an example found on Dribbble and other sources&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9dtv7at60jkhvyga7u82.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9dtv7at60jkhvyga7u82.gif" alt="Dribbble1" width="500" height="375"&gt;&lt;/a&gt;&lt;br&gt;
Credits to &lt;a href="https://dribbble.com/svitlana_bilan" rel="noopener noreferrer"&gt;@svitlana_bilan&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;
  
  
  How to use it ?
&lt;/h1&gt;

&lt;p&gt;After following the &lt;a href="https://api.flutter.dev/flutter/material/NavigationRail-class.html" rel="noopener noreferrer"&gt;official documentation&lt;/a&gt;, you'll find out that there are a lot of common attributes with the &lt;code&gt;BottomNavigationBar&lt;/code&gt; that we talked about just before, so as a good alternative it'll be easy to change a &lt;code&gt;BottomNavigationBar&lt;/code&gt; widget into a &lt;code&gt;NavigationRail&lt;/code&gt; widget and everybody like that, especially those who want to experiment with the beta of &lt;a href="https://flutter.dev/web" rel="noopener noreferrer"&gt;Flutter Web&lt;/a&gt; !&lt;/p&gt;

&lt;p&gt;Enough talking and let's take an example.&lt;br&gt;
I've made a snippet on Codepen, which is super cool to share Flutter code since you see the result as you write your code, for you so you can check it &lt;a href="https://codepen.io/blkkkbvsik/pen/PoPazPm" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But just in case, I'll provide the code here too:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;NavigationRail(
  selectedIndex: _selectedIndex,
  onDestinationSelected: (int index) {
    setState(() {
      _selectedIndex = index;
    });
  },
  labelType: NavigationRailLabelType.selected,
  destinations: [
    NavigationRailDestination(
      icon: Icon(Icons.favorite_border),
      selectedIcon: Icon(Icons.favorite),
      label: Text('First'),
    ),
    NavigationRailDestination(
      icon: Icon(Icons.bookmark_border),
      selectedIcon: Icon(Icons.book),
      label: Text('Second'),
    ),
    NavigationRailDestination(
      icon: Icon(Icons.star_border),
      selectedIcon: Icon(Icons.star),
      label: Text('Third'),
    ),
  ],
),
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So it doesn't look that complicated right ?&lt;br&gt;
Let me explain the code for those who want more details.&lt;/p&gt;

&lt;h3&gt;
  
  
  Functioning
&lt;/h3&gt;

&lt;p&gt;Short story long, &lt;code&gt;selectedIndex&lt;/code&gt; is an integer, initialised in your stateful widget that represent the index into &lt;code&gt;destinations&lt;/code&gt; for the current selected &lt;code&gt;NavigationRailDestination&lt;/code&gt;.&lt;br&gt;
He'll be modified with the help of a &lt;code&gt;setState&lt;/code&gt; called in an anonymous function inside the &lt;code&gt;onDestinationSelected&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Almost every other attributes is for the styling of your widget, so I ll let you play with my &lt;a href="https://codepen.io/blkkkbvsik/pen/PoPazPm" rel="noopener noreferrer"&gt;snippet&lt;/a&gt; from Codepen to discover those !&lt;/p&gt;

&lt;p&gt;So what ideas this new widget will bring to your upcoming projects ?&lt;br&gt;
Let me know on Twitter: &lt;a href="https://twitter.com/EnzoConty" rel="noopener noreferrer"&gt;@EnzoConty&lt;/a&gt; ! &lt;/p&gt;

</description>
      <category>flutter</category>
      <category>dart</category>
      <category>tutorial</category>
      <category>news</category>
    </item>
  </channel>
</rss>
