<?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>Forem: Martín Vukovic</title>
    <description>The latest articles on Forem by Martín Vukovic (@mdev88).</description>
    <link>https://forem.com/mdev88</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%2F255129%2Feeec958f-8116-41a2-86a0-8a6d456c1e98.jpg</url>
      <title>Forem: Martín Vukovic</title>
      <link>https://forem.com/mdev88</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/mdev88"/>
    <language>en</language>
    <item>
      <title>So you've overwritten the partition table of that disk by mistake again huh?</title>
      <dc:creator>Martín Vukovic</dc:creator>
      <pubDate>Sat, 17 Apr 2021 17:54:33 +0000</pubDate>
      <link>https://forem.com/mdev88/so-you-ve-overwritten-the-partition-table-of-that-disk-by-mistake-again-huh-2fld</link>
      <guid>https://forem.com/mdev88/so-you-ve-overwritten-the-partition-table-of-that-disk-by-mistake-again-huh-2fld</guid>
      <description>&lt;p&gt;This is something that I have done more than once unfortunately. But the good news is that as long as you don't write anything on the disk, you can easily recover the partitions and it's content with this nice tool: &lt;code&gt;gpart&lt;/code&gt; (not to be confused with &lt;code&gt;gparted&lt;/code&gt;)&lt;/p&gt;

&lt;p&gt;In my case, I accidentally created a new msdos partition table on /dev/sdb, so what I had to do was run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;gpart /dev/sdb
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;to run a scan on that disk and see if &lt;code&gt;gpart&lt;/code&gt; could find any data, and it did. It showed me 4 o 5 "guesses", the first of which was obviously correct because it was the only one with actual data (the others were all zeroes or other nonsense).&lt;/p&gt;

&lt;p&gt;So after reading what were the possible actions to restore the partition table, I ran:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;gpart /dev/sdb &lt;span class="nt"&gt;-W&lt;/span&gt; /dev/sdb
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and this means that I will (-W)rite the "guessed" table to the same device (/dev/sdb). After that it asked me which of the guesses I wanted to save, so I selected 1 for the first one, and then it was done and I was asked to reboot.&lt;/p&gt;

&lt;p&gt;I did, and there were all my partitions with all the data intact, back to me.&lt;/p&gt;

</description>
      <category>sysadmin</category>
      <category>linux</category>
      <category>partitions</category>
      <category>recovery</category>
    </item>
    <item>
      <title>My yearly theme for 2021</title>
      <dc:creator>Martín Vukovic</dc:creator>
      <pubDate>Fri, 01 Jan 2021 23:09:11 +0000</pubDate>
      <link>https://forem.com/mdev88/my-yearly-theme-for-2021-ib9</link>
      <guid>https://forem.com/mdev88/my-yearly-theme-for-2021-ib9</guid>
      <description>&lt;p&gt;For a few years now I've been following the idea of a &lt;strong&gt;yearly theme&lt;/strong&gt; instead of the classic new year's resolutions. I've discovered this thanks to the &lt;a href="https://www.relay.fm/cortex"&gt;Cortex podcast&lt;/a&gt;, and for the last three years I've been using yearly themes with great success.&lt;/p&gt;

&lt;p&gt;(You can learn more in &lt;a href="https://www.thethemesystem.com/"&gt;The Theme System's webpage&lt;/a&gt;, or you can also watch &lt;a href="https://www.youtube.com/watch?v=NVGuFdX5guE"&gt;this video&lt;/a&gt; made by CGP Grey himself)&lt;/p&gt;

&lt;p&gt;For the last two years, I've embraced the "Year of less", which I stole from CGP Grey, and I was really happy with the results. But this year I feel that I have incorporated the Year of less into my routine and my normal life altogether, so it doesn't make much sense to keep using it as a yearly theme anymore. Instead, I decided to try a new theme, the "Year of Visibility"&lt;/p&gt;

&lt;h2&gt;
  
  
  The Year of Visibility
&lt;/h2&gt;

&lt;p&gt;I chose this theme after two other candidates that didn't just "resonate" with me right now. They were Year of control and Year of investment, but who cares about those losers, let's talk about Visibility!&lt;/p&gt;

&lt;p&gt;I feel that Visibility has many possible interpretations and I like the implications of all of them, so the Year of Visibility comes with many faces:&lt;/p&gt;

&lt;h3&gt;
  
  
  Inward visibility
&lt;/h3&gt;

&lt;p&gt;Gain more visibility about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;My health: for a long time I have not paid enough atention to this and I am starting to feel the consequences.&lt;/li&gt;
&lt;li&gt;How I spend my time, how much productive time I actually have, how much my time is worth, etc.&lt;/li&gt;
&lt;li&gt;My finances: I don't have a fixed income, and I am not sure about how much I've earned or spent last year. &lt;/li&gt;
&lt;li&gt;My own internal life: emotional and psychological.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;My goal is that by having more visibility about these aspects, I will be able to anticipate possible problems, and also discover hidden ones.&lt;/p&gt;

&lt;h3&gt;
  
  
  Visibility from the outside
&lt;/h3&gt;

&lt;p&gt;Become more visible, and some examples of this could be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create new projects or participate in projects that can give me an oportunity to make myself known.&lt;/li&gt;
&lt;li&gt;Make new contacts, clients, partners, friends, etc.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;My goal is to break the isolation in which I have been living... all my life? I'm not going to stop being an introvert, it's not about that, it's about creating more oportunities for people to know me and my work. I have always struggled to get new clients other than by word of mouth and I want to change that.&lt;/p&gt;

&lt;h3&gt;
  
  
  Visibility of others
&lt;/h3&gt;

&lt;p&gt;Give more visibility to a cause or causes I believe in.&lt;br&gt;
By helping spread awarenes, or volunteering to help something I feel passionate about can help improve the lives of others, and at the same time, find a healthy source of personal satisfaction other than work or play.&lt;/p&gt;

&lt;p&gt;Do you have a yearly theme? Why or ahy not?&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>career</category>
    </item>
    <item>
      <title>About productivity for the other half of the planet</title>
      <dc:creator>Martín Vukovic</dc:creator>
      <pubDate>Mon, 07 Dec 2020 14:07:48 +0000</pubDate>
      <link>https://forem.com/mdev88/about-productivity-for-the-other-half-of-the-planet-1n7e</link>
      <guid>https://forem.com/mdev88/about-productivity-for-the-other-half-of-the-planet-1n7e</guid>
      <description>&lt;p&gt;I am really really tired of reading "awesome productivity tips" that are oblivious about a half of the planet (I'm making this number up), the half that has a family, that have children, that has a life other than work and comfortable sleep.&lt;/p&gt;

&lt;p&gt;I have found many techniques, tips and advice related to productivity that has certanly improved mine, but I have to say that most of the times I end up crashing against reality and thinking "this is just not possible for me", or "this is unrealistic" or "I wish I were 10 or 20 years younger to be able to do this".&lt;/p&gt;

&lt;p&gt;When you have a demanding life, a family, responsabilities and time-consuming daily occupations, when you live with other people under the same roof and you can't just decide to do whatever you need whenever you need however you need, it gets a little anoying when all advice seems to be targeted to single, young, wealthy people. &lt;/p&gt;

&lt;p&gt;I am baffled by the lack of productivity related material targeted at... well, people like me. People who really need to squeeze the very last drop of productivity out of a busy, crowded and interrupted schedule. These are not the ideal conditions to be productive, believe me, I KNOW, but that's precisely why we need to focus on those type of problems.&lt;/p&gt;

&lt;p&gt;It's not just about what tools to use, or how to track time, or what to do when you wake up, it's also about how to deal with interruptions, how to deal with frustration, how to cope with the reality that maybe the productivity that you once had and that you wish you could go back to is never coming back, not fully anyway.&lt;/p&gt;

&lt;p&gt;I don't want this to just be a rant. I really want to find quality content about productivity made by and for people other than youths in the pinacle of their lives. &lt;/p&gt;

&lt;p&gt;Got any and care to share?&lt;/p&gt;

</description>
      <category>help</category>
      <category>productivity</category>
    </item>
    <item>
      <title>The ups and downs of the tech world</title>
      <dc:creator>Martín Vukovic</dc:creator>
      <pubDate>Tue, 08 Sep 2020 22:00:53 +0000</pubDate>
      <link>https://forem.com/mdev88/the-ups-and-downs-of-the-tech-world-39fh</link>
      <guid>https://forem.com/mdev88/the-ups-and-downs-of-the-tech-world-39fh</guid>
      <description>&lt;p&gt;One day you wake up and you realize that you are the only one not using vim, and as you read everywhere, vim is the best editor for programing, so you dedicate a couple of months of your life to learn and master vim, but wait, what is that? oh no, vim is a terrible editor because it's too complex for the most basic things, making you waste precious time you could be using doing actual work, and since you just need to do a couple of things in your editor, nothing fancy, you should be using an IDE to actually help you, not be against you, so you find an IDE that helps you code faster by generating boilerplate code so you don't have to, and now you are happy because your productivity has increased, but wait, what is that? oh no, it turns out that by letting the IDE doing most of your code you are not learning properly to code, you need to have a strong grasp of the basics before you can actually do anything really, so you start from the bottom and start learning algorithms and software engeneering, and you spend a lot of time planning and creating diagrams and workflows so that you can be prepared for most of the possible problems you might encounter in your development process, but wait, what is that? oh no, you are wasting your time, sure you need to know the basics, but what you really need is to start coding from day zero and create your own projects, you need to fail in order to learn to succeed, practice makes perfect, and it's more important to get the product out in the world as soon as possible than it being perfect (that's impossible anyway), besides, the feedback from your users will guide you in your next steps improving your... wait, what is that? oh no, your users are furious because you leaked all their private information with an unsecured AWS bucket, but you know this happens all the time, companies are constantly messing up with their security, all you need is to publish a sincere-sounding blog post telling your users that you take their privacy and security very seriously, yeah, that will do it, so you do it, and hey, not only that worked, you also got a call from a big company that wants to invest in your project, it's actually working out pretty well for you, you are actually going to make some money with your humble project, but wait, what is that? oh no, they want to change some things, actually a lot of things to the point where your pet project will become an atrocity, all you ever wanted to avoid, you wanted it to be open source, they want to close it, you wanted it to be for everyone, they want it to be exclusive, you wanted it to be simple and friendly, they want to make it feature rich and sell training courses to be able to use it, how could this happen? you are losing control, you hear that word in your mind... "burnout", you need to take a break, you live to work and work to live, you need to prioritize, no, you need to stop, you need to meditate and practice mindfulness and learn to live in the moment, so you do that and you start to feel better, you spend more time with your family and doing what you like, and even when your life's work comes crashing down in flames you can calmly say "actually, I don't mind, because I have everything I need inside", and this works for a while, until you realize that you were lying to yourself and you can't live without your project and you hate your life without it, so you go to a board meeting and tell them to go f* themselves, and you start your own company and this time you will do everything right, starting with the correct framework for developing your next big hit, so you go with the cool multiplatform engine that will get you out making money in no time, but wait, what is that? oh no, that framework suddenly is having internal conflicts between the founders and the community of supporters and contributors, and they are splitting into 2 different projects, what do you do? which one you choose?, none!, you go native because you are too old for this sh*t anyway, if you want anything done properly you have to do it yourself with the best tools that are available to you, that is what you should have done in the first place instead of trying cutting corners, that's it, you will develop on your own all 5 variants or your app for every major platform because you are a professional and you can teach yourself anything you want, you did it before, you can do it again, only that that is completely false and you are lying to yourself and you are scared and confused and overwhelmed with everything around you and you are terrified of showing weakness or doubt so you keep that avatar of the successful you and keep imploding inside, until one day you had enough of all of this, all the trends and fads and the top 20 tools every developer should master and the best 10 programming languages every decent person should learn to even think properly, and the 5 secrets that every successful entrepreneur know and nobody told you and the single most important thing you must definitely do, or don't do, or know, or forget, or learn again or teach to your disciples, or experience at least once to have a fulfilling life, or avoid at all cost if you don't want to destroy your career forever, unless you follow this easy steps to become everything you wanted to be, it's so easy yet nobody speaks about it, but you are one of the few lucky ones to learn this, you only need to send to this address 5 bitcoin, yes that's right, I know it looks like a lot but how do you want to succeed if you are not willing to sacrifice a little, today it seems like a lot but tomorrow, but think of the day when you are in your own private yatch sorrounded with celebrities and your face is in People magazine and your work is talked about on YC and newspapers around the world write articles about your edgy and sometimes problematic tweets, and your habits and your goofy yet adorable quirks and your sometimes out of place remarks about a minority, or your random mood changes and the roumors about your breakup with the hottest celebrity and you don't care because you are above all of that and above all of them, you have reached the top and touched the sky with your hands, and yet... you feel a wave coming and you know it's coming for you, and suddenly you realize it's inevitable because everything is so fragile and things turn to dust so fast, so you find peace in the thought that it was all for nothing really, all you have will be gone and everything you did will be forgotten, and you don't amount to nothing in the world, or the Universe, and you are already forgotten and erased forever as if you never existed and what remains is a blinking cursor waiting for the next simulation to be started.&lt;/p&gt;

</description>
      <category>watercooler</category>
    </item>
    <item>
      <title>Tweaking Epiphany's webapps icons</title>
      <dc:creator>Martín Vukovic</dc:creator>
      <pubDate>Fri, 04 Sep 2020 18:14:09 +0000</pubDate>
      <link>https://forem.com/mdev88/tweaking-epiphany-webapp-icons-cap</link>
      <guid>https://forem.com/mdev88/tweaking-epiphany-webapp-icons-cap</guid>
      <description>&lt;p&gt;I've been using &lt;strong&gt;Epiphany&lt;/strong&gt; (Gnome's web browser) to create webapps of some services I use daily so I have them in the form of a desktop app.&lt;/p&gt;

&lt;p&gt;Also, I want them to be isolated, and not interfere or know anything about my regular browsing, messing up with sessions and cookies. This way, every webapp runs in a separate profile that acts like a sandbox.&lt;/p&gt;

&lt;p&gt;The thing that was bothering me is that because all these webapps are actually the same app (Epiphany), &lt;strong&gt;they all had the same icon&lt;/strong&gt; in the open windows bar (they all have their own launcher icons, but the window buttons in the bottom, the one used to change between apps, were the same). That made me mad...&lt;/p&gt;

&lt;p&gt;So I did some research and I found &lt;code&gt;xseticon&lt;/code&gt;, a neat little command line tool to change the icons of running applications. It's used like this &lt;code&gt;xseticon -name "Title of the app" /path/to/an/image.png&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;But there was still a catch... once the webapp opens, the window title changed to whatever the webpage inside was, so what I did was this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open the webapp as usual&lt;/li&gt;
&lt;li&gt;Wait half a second to give time for the app to actually open&lt;/li&gt;
&lt;li&gt;Use xseticon to change the icon based on the window name, which luckily, all Epiphany webapps start with the title "Blank page" and quickly change to whatever else is being loaded. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The half a second wait gave me enough time to wait for the app to start, and also to catch the correct window title before it changes.&lt;/p&gt;

&lt;p&gt;The final script looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#!/bin/bash
epiphany --application-mode --profile="/home/user/.local/share/epiphany-whatsapp-086ea71f39bc5d178a4c363ad9e448d24b02665a" https://web.whatsapp.com/ &amp;amp;  ## the "&amp;amp;" at the end is very IMPORTANT!

sleep 0.5;

xseticon -name "Blank page" /home/user/.local/share/epiphany-whatsapp-086ea71f39bc5d178a4c363ad9e448d24b02665a/app-icon.png 
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;The &amp;amp; at the end of the line that launches the app is important because without it, the sleep line would not execute, not until I close the app. By using the &amp;amp; I am starting that process but the execution of the script continues, so then I wait half a second and then change the icon.&lt;/p&gt;

&lt;p&gt;That's it!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qFxek1xK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/5t8rdddh62yz8mqjh86o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qFxek1xK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/5t8rdddh62yz8mqjh86o.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'm sure this will be of no use to anyone, but this is the kind of things I do when I get bored.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>tutorial</category>
      <category>linux</category>
    </item>
    <item>
      <title>Let's talk productivity tools!</title>
      <dc:creator>Martín Vukovic</dc:creator>
      <pubDate>Wed, 26 Aug 2020 00:29:14 +0000</pubDate>
      <link>https://forem.com/mdev88/let-s-talk-productivity-tools-2hbj</link>
      <guid>https://forem.com/mdev88/let-s-talk-productivity-tools-2hbj</guid>
      <description>&lt;p&gt;Hey, I'm a big fan of productivity tools, I love using them, I love trying new ones, I hate having to migrate all my stuff from one to another but I do it anyway from time to time because I get bored and want to try new things all the time.&lt;/p&gt;

&lt;p&gt;Let's play a game. I'll give you 4 "roles" and you tell me what tool or tools you use for filling those roles. You can name the same tool in multiple roles. You can add comments on why you chose those tools, or not.&lt;/p&gt;

&lt;p&gt;Role #1: To-Do's and Lists&lt;br&gt;
Role #2: Note taking&lt;br&gt;
Role #3: Time tracking&lt;br&gt;
Role #4: Cloud sync and/or storage&lt;/p&gt;

&lt;p&gt;I'll leave my choices (as of today at least) in the comments.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>watercooler</category>
    </item>
    <item>
      <title>Filter tags in feed?</title>
      <dc:creator>Martín Vukovic</dc:creator>
      <pubDate>Fri, 21 Aug 2020 12:50:46 +0000</pubDate>
      <link>https://forem.com/mdev88/filter-tags-in-feed-2lf7</link>
      <guid>https://forem.com/mdev88/filter-tags-in-feed-2lf7</guid>
      <description>&lt;p&gt;Is there a way to NOT show posts that contain certain tags. In my case it would be #javascript because I don't use Javascript, I don't like Javascript, I don't care about Javascript, I don't want to learn about Javascript, I already know what I need to know about Javascript, I know it has weird inconsistencies, and 1 in 3 posts here is about Javascript, so...&lt;/p&gt;

&lt;p&gt;Thanks&lt;/p&gt;

</description>
      <category>meta</category>
    </item>
    <item>
      <title>3 things that make Flutter &gt; Android native (for me)</title>
      <dc:creator>Martín Vukovic</dc:creator>
      <pubDate>Mon, 17 Aug 2020 21:52:01 +0000</pubDate>
      <link>https://forem.com/mdev88/3-things-that-make-flutter-android-native-for-me-25ho</link>
      <guid>https://forem.com/mdev88/3-things-that-make-flutter-android-native-for-me-25ho</guid>
      <description>&lt;p&gt;I come from native Android development and I am trying out Flutter mostly for mobile but also Desktop development. I know they are not the same thing, so this post is about my &lt;strong&gt;personal experience&lt;/strong&gt; with both frameworks. &lt;/p&gt;

&lt;h2&gt;
  
  
  Simplicity
&lt;/h2&gt;

&lt;p&gt;In Flutter, most of the common structures and boilerplate is so simple that &lt;strong&gt;I can actually remember how to do it&lt;/strong&gt;. Realizing this is just crazy. I can do my job with only the contents of my brain. Amazing.&lt;br&gt;
This means that even with very little experience, I can just sit and start coding in Flutter and make actual progress. This allows me to very easily get in 'the flow' and it's a more rewarding experience overall.&lt;/p&gt;

&lt;p&gt;In Android native I struggle constantly with things like adapters, fragments, the navigation stack, and so on. Even with Jetpack and Kotlin (which simplified things &lt;strong&gt;a lot&lt;/strong&gt; for me) I still am constantly going to other projects to borrow pieces of code, or searching StackOverflow for answers to things that feel like they should be much easier to understand and use. This distracts me from what I want to achieve, and requires a huge mental effort.&lt;/p&gt;

&lt;p&gt;Maybe because I'm getting older, I feel like native Android is always getting more and more complex and it's impossible for me to catch up anymore.&lt;/p&gt;

&lt;h2&gt;
  
  
  Documentation
&lt;/h2&gt;

&lt;p&gt;I thought I would &lt;strong&gt;never&lt;/strong&gt; say this about a Google product, but I think that the Flutter documentation is very good, even useful!&lt;/p&gt;

&lt;p&gt;I'm sure the Flutter team is full of (or directed by) designers, and the native Android team is mostly engineers, and it shows. &lt;/p&gt;

&lt;h2&gt;
  
  
  Time economy
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Android native makes me waste so much time&lt;/strong&gt;. Everything takes so long that some times the app finally runs in the emulator and I end up staring at the screen because I can't even remember what I wanted to test.&lt;/p&gt;

&lt;p&gt;On the other hand, Flutter's hot reload and hot restart is like breathing fresh air after being locked up in a 1 by 1 jail cell underwater.&lt;/p&gt;

&lt;p&gt;Again, this keeps me in 'the flow' and makes the whole experience much more enjoyable.&lt;/p&gt;

</description>
      <category>android</category>
      <category>flutter</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Fail to build Flutter Linux desktop app in Android Studio (but works if built manually)</title>
      <dc:creator>Martín Vukovic</dc:creator>
      <pubDate>Sat, 08 Aug 2020 01:30:13 +0000</pubDate>
      <link>https://forem.com/mdev88/fail-to-build-flutter-linux-desktop-app-in-android-studio-but-works-if-built-manually-1382</link>
      <guid>https://forem.com/mdev88/fail-to-build-flutter-linux-desktop-app-in-android-studio-but-works-if-built-manually-1382</guid>
      <description>&lt;p&gt;So, I'm experimenting with Flutter for desktop, specifically in Linux.&lt;br&gt;
The good news is &lt;strong&gt;I'm able to run my app&lt;/strong&gt; on my Xubuntu 20.04 by running &lt;code&gt;flutter run -d linux&lt;/code&gt; from the console. I repeat, this works just fine, there is not an issue with the Flutter installation, or my code, the app works, it's super simple, everything's fine.&lt;/p&gt;

&lt;p&gt;The problem is with Android Studio, my IDE of choice since I also do native Android development. I select "Linux (desktop)" from the devices dropdown, click the green play button and... I get a pretty generic error: &lt;code&gt;Exception: Build process failed&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;So then I add the &lt;code&gt;--verbose&lt;/code&gt; flag to the run/debug parameters and here's the interesting part:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[   +5 ms] Exception: Build process failed
[   +6 ms] 
           #0      throwToolExit (package:flutter_tools/src/base/common.dart:14:3)
           #1      RunCommand.runCommand (package:flutter_tools/src/commands/run.dart:460:9)
           &amp;lt;asynchronous suspension&amp;gt;
           #2      FlutterCommand.verifyThenRunCommand (package:flutter_tools/src/runner/flutter_command.dart:869:18)
           #3      _rootRunUnary (dart:async/zone.dart:1198:47)
           #4      _CustomZone.runUnary (dart:async/zone.dart:1100:19)
           #5      _FutureListener.handleValue (dart:async/future_impl.dart:143:18)
           #6      Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:696:45)
           #7      Future._propagateToListeners (dart:async/future_impl.dart:725:32)
           #8      Future._completeWithValue (dart:async/future_impl.dart:529:5)
           #9      _AsyncAwaitCompleter.complete (dart:async-patch/async_patch.dart:40:15)
           #10     _completeOnAsyncReturn (dart:async-patch/async_patch.dart:311:13)
           #11     RunCommand.usageValues (package:flutter_tools/src/commands/run.dart)
           #12     _rootRunUnary (dart:async/zone.dart:1198:47)
           #13     _CustomZone.runUnary (dart:async/zone.dart:1100:19)
           #14     _FutureListener.handleValue (dart:async/future_impl.dart:143:18)
           #15     Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:696:45)
           #16     Future._propagateToListeners (dart:async/future_impl.dart:725:32)
           #17     Future._completeWithValue (dart:async/future_impl.dart:529:5)
           #18     Future._asyncCompleteWithValue.&amp;lt;anonymous closure&amp;gt; (dart:async/future_impl.dart:567:7)
           #19     _rootRun (dart:async/zone.dart:1190:13)
           #20     _CustomZone.run (dart:async/zone.dart:1093:19)
           #21     _CustomZone.runGuarded (dart:async/zone.dart:997:7)
           #22     _CustomZone.bindCallbackGuarded.&amp;lt;anonymous closure&amp;gt; (dart:async/zone.dart:1037:23)
           #23     _microtaskLoop (dart:async/schedule_microtask.dart:41:21)
           #24     _startMicrotaskLoop (dart:async/schedule_microtask.dart:50:5)
           #25     _runPendingImmediateCallback (dart:isolate-patch/isolate_patch.dart:118:13)
           #26     _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:169:5)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;This means &lt;strong&gt;nothing&lt;/strong&gt; to me...&lt;/p&gt;

&lt;p&gt;I have tried searching for bug reports and have found a &lt;a href="https://github.com/flutter/flutter/issues/57641"&gt;closed issue&lt;/a&gt; in the Flutter repository which looks similar if not exactly the same, but from 5 months ago, but I don't have high hopes of getting an answer from there.&lt;/p&gt;

&lt;p&gt;Can anyone help me debug this?&lt;/p&gt;

&lt;p&gt;Thanks&lt;/p&gt;

</description>
      <category>help</category>
      <category>flutter</category>
    </item>
    <item>
      <title>Cómo forzar el tamaño de la ventana de una aplicación en Linux</title>
      <dc:creator>Martín Vukovic</dc:creator>
      <pubDate>Wed, 05 Aug 2020 16:01:36 +0000</pubDate>
      <link>https://forem.com/mdev88/como-forzar-el-tamano-de-la-ventana-de-una-aplicacion-en-linux-58cd</link>
      <guid>https://forem.com/mdev88/como-forzar-el-tamano-de-la-ventana-de-una-aplicacion-en-linux-58cd</guid>
      <description>&lt;p&gt;Encontré este método para forzar externamente el tamaño de la ventana de una aplicación. Necesitaba hacer esto porque en la actualidad las aplicaciones Flutter de escritorio (Linux) no cuentan con una forma de definir el tamaño de la ventana al abrirse (o por lo menos no logré encontrar una forma de hacerlo).&lt;/p&gt;

&lt;h2&gt;
  
  
  Identificar el nombre de la aplicación que se quiere redimensionar.
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Abrir la aplicación a redimensionar.&lt;/li&gt;
&lt;li&gt;Buscar el nombre del proceso en ejecución, por ejemplo ejecutando el comando &lt;code&gt;ps x&lt;/code&gt; o con algún monitor de procesos visual. Algunos ejemplos en mi caso podrían ser &lt;code&gt;firefox&lt;/code&gt;, &lt;code&gt;mousepad&lt;/code&gt;, &lt;code&gt;Telegram&lt;/code&gt;, etc.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Redimensionar la ventana
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Asegurarse de que la aplicación a redimensionar se encuentra &lt;strong&gt;sin maximizar&lt;/strong&gt;, caso contrario, no funcionará.&lt;/li&gt;
&lt;li&gt;Ejecutar el siguiente comando reemplazando &lt;code&gt;nombre_aplicación&lt;/code&gt; por el nombre del proceso y las dimensiones por las deseadas, en donde 500 es el ancho y 450 el alto:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;xdotool windowsize $(xdotool search --name "nombre_aplicación" | tail -1) 500 450&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Notas
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Por alguna razón este método no funciona con todos los procesos, es cuestión de probar o de aprender a usar correctamente la herramienta, algo que por el momento no tengo interés en hacer porque ya cumple con lo que necesito 😄&lt;/li&gt;
&lt;li&gt;Hay aplicaciones que tienen tamaños mínimos predefinidos, por lo que si se especifica con xdotool un tamaño menor, se respetará igualmente el definido internamente por la aplicación.&lt;/li&gt;
&lt;li&gt;Tip: Se puede crear un alias o agregar el comando al lanzador de la aplicación para forzar el tamaño cada vez que se abre.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>linux</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Eliminar comentarios rápidamente en Android Studio o VS Code</title>
      <dc:creator>Martín Vukovic</dc:creator>
      <pubDate>Sun, 02 Aug 2020 12:00:42 +0000</pubDate>
      <link>https://forem.com/mdev88/eliminar-comentarios-rapidamente-en-android-studio-o-vs-code-4mhf</link>
      <guid>https://forem.com/mdev88/eliminar-comentarios-rapidamente-en-android-studio-o-vs-code-4mhf</guid>
      <description>&lt;p&gt;Algunos archivos y plantillas vienen con excesivos comentarios, como por ejemplo la aplicación inicial por defecto de Flutter, con 50 comentarios en un archivo de 117 líneas en total.&lt;/p&gt;

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

&lt;p&gt;En vez de eliminar uno por uno los comentarios, podemos hacer lo siguiente para acelerar un poco la tarea desde el mismo IDE, sin recurrir a herramientas como &lt;code&gt;sed&lt;/code&gt; en la consola.&lt;/p&gt;

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

&lt;h2&gt;
  
  
  Android Studio
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Abrir el diálogo para buscar y reemplazar con &lt;code&gt;Ctrl + R&lt;/code&gt; o desde &lt;code&gt;Editar &amp;gt; Buscar &amp;gt; Reemplazar...&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;En el diálogo, activar la opción &lt;code&gt;Regex&lt;/code&gt;. &lt;/li&gt;
&lt;li&gt;En el campo para buscar, introducir &lt;code&gt;//.*&lt;/code&gt; (Alternativamente se pueden reemplazar las barras con el o los caracteres de comentario de otros lenguajes, como &lt;code&gt;#&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Seleccionar &lt;code&gt;Reemplazar todo&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Reformatear código para eliminar espacios en blanco.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  VS Code
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Abrir el diálogo para buscar y reemplazar con &lt;code&gt;Ctrl + H&lt;/code&gt; o desde &lt;code&gt;Editar &amp;gt; Reemplazar&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;En el diálogo, activar la opción regex representada por el ícono &lt;code&gt;.*&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;En el campo para buscar, introducir &lt;code&gt;//.*&lt;/code&gt; (Alternativamente se pueden reemplazar las barras con el o los caracteres de comentario de otros lenguajes, como &lt;code&gt;#&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Seleccionar &lt;code&gt;Reemplazar todo&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Reformatear código para eliminar espacios en blanco.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Explicación
&lt;/h2&gt;

&lt;p&gt;La expresión regular &lt;code&gt;.*&lt;/code&gt; quiere decir "hacer match con cualquier caracter a continuación hasta que termine la línea", por lo que &lt;code&gt;//.*&lt;/code&gt; quiere decir hacer match con &lt;code&gt;//&lt;/code&gt; y todo lo que le siga.&lt;/p&gt;

&lt;p&gt;Al dejar el campo para reemplazar vacío, estaremos reemplazando las coincidencias con nada, es decir, borrándo lo que haga match.&lt;/p&gt;

&lt;p&gt;El resultado será que se eliminarán los comentarios que se encuentran al final de líneas, y las líneas que sólo contenían comentarios quedarán en blanco.&lt;/p&gt;

&lt;p&gt;Links relacionados:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Formatear código Flutter en distintos IDEs: &lt;a href="https://flutter.dev/docs/development/tools/formatting" rel="noopener noreferrer"&gt;https://flutter.dev/docs/development/tools/formatting&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>androidstudio</category>
      <category>vscode</category>
      <category>productivity</category>
    </item>
    <item>
      <title>3 sitios para encontrar software alternativo</title>
      <dc:creator>Martín Vukovic</dc:creator>
      <pubDate>Thu, 30 Jul 2020 21:21:21 +0000</pubDate>
      <link>https://forem.com/mdev88/3-sitios-para-encontrar-software-alternativo-4ao1</link>
      <guid>https://forem.com/mdev88/3-sitios-para-encontrar-software-alternativo-4ao1</guid>
      <description>&lt;p&gt;Cuando encuentro alguna limitación en un producto que uso, o simplemente necesito algo nuevo o mejor, siempre me encuentro visitando estos sitios para intentar encontrar alternativas.&lt;/p&gt;

&lt;p&gt;Cada sitio tiene distintos criterios y opciones para filtrar los resultados, por lo que creo que se complementan muy bien.&lt;/p&gt;

&lt;h2&gt;
  
  
  AlternativeTo.net
&lt;/h2&gt;

&lt;p&gt;Abrir &lt;a href="https://alternativeto.net/"&gt;alternativeto.net&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Probablemente sea el más conocido de los tres y generalmente el que visito primero. En el momento de publicar este post cuenta con 89,967 aplicaciones.&lt;/p&gt;

&lt;h2&gt;
  
  
  SaasHub
&lt;/h2&gt;

&lt;p&gt;Abrir &lt;a href="https://www.saashub.com/"&gt;saashub.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Segundo en cantidad de aplicaciones, con 126455.&lt;/p&gt;

&lt;h2&gt;
  
  
  Alternative.me
&lt;/h2&gt;

&lt;p&gt;Abrir &lt;a href="https://alternative.me/"&gt;alternative.me&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Finalmente la tercera opción en cantidad de aplicaciones, con 10203.&lt;/p&gt;

</description>
      <category>opensource</category>
    </item>
  </channel>
</rss>
