<?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: Eduardo Flores</title>
    <description>The latest articles on DEV Community by Eduardo Flores (@edfloreshz).</description>
    <link>https://dev.to/edfloreshz</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%2F427210%2F75d65189-1b18-49b2-bca8-f260a34590c8.jpg</url>
      <title>DEV Community: Eduardo Flores</title>
      <link>https://dev.to/edfloreshz</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/edfloreshz"/>
    <language>en</language>
    <item>
      <title>Tips to deal with side projects</title>
      <dc:creator>Eduardo Flores</dc:creator>
      <pubDate>Mon, 31 Aug 2020 05:41:36 +0000</pubDate>
      <link>https://dev.to/edfloreshz/tips-to-deal-with-side-projects-5e1k</link>
      <guid>https://dev.to/edfloreshz/tips-to-deal-with-side-projects-5e1k</guid>
      <description>&lt;p&gt;So here you are once again, procrastinating your time... but not to worry, this article intends to help you get better at getting things done!&lt;/p&gt;

&lt;p&gt;If you are passionate about programming you've probably started a side project by now, first you have an idea, it can go from building the next big thing to just building a simple to-do list, it doesn't matter. You start really excited and throw in some code until a few days later it all falls apart, you've lost all interest or enthusiasm.&lt;/p&gt;

&lt;p&gt;Happens to me all the time, here are some tips I've encountered that have helped me stick with my side projects until they're done!&lt;/p&gt;

&lt;h1&gt;
  
  
  Satisfaction
&lt;/h1&gt;

&lt;p&gt;There are lots of reasons why people abandon projects, one of them is not feeling satisfied, feeling satisfied with a project is a big factor in whether or not you'll stick with it.&lt;/p&gt;

&lt;p&gt;Of course, not every minute will be satisfying, but if the project itself is not satisfying, you might want to reflect on that for a bit, perhaps find a way to address that or perhaps move on to something that might be more satisfying for you.&lt;/p&gt;

&lt;p&gt;If the project was satisfying before, try to find what changed. You can encourage yourself to feel more satisfied by reflecting on how much you've improved on a project, that can be very uplifting.&lt;/p&gt;

&lt;h1&gt;
  
  
  Realistic Goals
&lt;/h1&gt;

&lt;p&gt;When starting a new project you set yourself a simple goal, once you progress towards that goal it starts to get more complicated, this is often when things start to feel unsatisfying. &lt;/p&gt;

&lt;p&gt;You start to feel like you're not progressing anymore, coming up with unrealistic goals is really easy.&lt;/p&gt;

&lt;p&gt;How do we deal with that?&lt;/p&gt;

&lt;h1&gt;
  
  
  Automaticity
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;Automaticity is the ability to do things without occupying the mind with the low-level details required, allowing it to become an automatic response pattern or habit.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;With this in mind, forming habits that become automatic is one of the ways in which you can improve your productivity, perhaps not writing code but starting up your development environment as soon as you power your computer on, that may encourage you to continue working on your project.&lt;/p&gt;

&lt;h1&gt;
  
  
  When to work?
&lt;/h1&gt;

&lt;p&gt;Most of us think of setting a fixed schedule and sticking with it, but this is an incredibly hard task to accomplish, considering that most of our day is ruled by events, not times.&lt;/p&gt;

&lt;p&gt;Think of these events as when you get out of the shower or eat breakfast, these events are more significant than fixed times throughout the day. These events are the times to schedule working on your project.&lt;/p&gt;

&lt;h1&gt;
  
  
  Planning
&lt;/h1&gt;

&lt;p&gt;Even when knowing you have to work, it can be hard to start doing it, but there's a simple technique you can apply.&lt;/p&gt;

&lt;p&gt;Let's say you want to start working out&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If I take a shower, I will get my workout clothes on in order to push myself to exercise.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The idea is to get simple tasks into your routine so that the harder tasks get easier.&lt;/p&gt;

&lt;p&gt;Now let's say you want to get work done&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If I log into my computer, I will open my text editor and project planner in order to get work done.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That way it will be easier to get yourself writing code.&lt;/p&gt;

&lt;h1&gt;
  
  
  Goals
&lt;/h1&gt;

&lt;p&gt;Be sure that your goals are &lt;strong&gt;specific&lt;/strong&gt;, meaning that they're very clear in what needs to be done. They should be &lt;strong&gt;measurable&lt;/strong&gt;, meaning that it should be clear what's required for it to be workable. Also &lt;strong&gt;achievable&lt;/strong&gt;, meaning that it's something that is not outside the roam of possibility, that it's realistic and &lt;strong&gt;relevant&lt;/strong&gt;, meaning that it's something that you care about.&lt;/p&gt;

&lt;h1&gt;
  
  
  Some extra advice
&lt;/h1&gt;

&lt;p&gt;*&lt;em&gt;Talk to friends in real life *&lt;/em&gt;-&amp;gt; This can be a really good way to distract yourself for a moment when you are feeling frustrated about a problem you have.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Join friendly online communities&lt;/strong&gt; -&amp;gt; This can be really helpful when having questions and finding people that can answer them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Take breaks&lt;/strong&gt; -&amp;gt; You might come up with the solution to a problem you've been looking for just by lying in bed or making dinner.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Celebrate little victories&lt;/strong&gt; -&amp;gt; Make sure to celebrate when you accomplish something, no matter how small it is.&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;Being a software developer is not an easy task, we are constantly facing new problems and dealing with insecurity within our ability to resolve those issues, these tips will help you improve in your ability to get things done and hopefully make you feel confident and prepared for what's to come.&lt;/p&gt;

&lt;p&gt;If you enjoyed this article, consider sharing it so more people can benefit from it! Also, feel free to &lt;a href="https://twitter.com/edfloreshz"&gt;@me&lt;/a&gt; on Twitter.&lt;/p&gt;

</description>
      <category>productivity</category>
    </item>
    <item>
      <title>Should we trust Rust with the future of systems programming?</title>
      <dc:creator>Eduardo Flores</dc:creator>
      <pubDate>Mon, 31 Aug 2020 05:40:50 +0000</pubDate>
      <link>https://dev.to/edfloreshz/should-we-trust-rust-with-the-future-of-systems-programming-3cmm</link>
      <guid>https://dev.to/edfloreshz/should-we-trust-rust-with-the-future-of-systems-programming-3cmm</guid>
      <description>&lt;p&gt;That's a pretty daring question considering Rust has been around for a fairly short amount of time and in that time has become the most loved language for 5 years in a row, according to the Stack Overflow &lt;a href="https://insights.stackoverflow.com/survey/2020#technology-most-loved-dreaded-and-wanted-languages-loved"&gt;Developer Surveys&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;It is very clear that developers love working with Rust, many big companies have been adopting it to fix many of the memory issues C and C++ have caused by taking advantage of Rust's memory safety capabilities. Microsoft recently started rewriting &lt;a href="https://msrc-blog.microsoft.com/2019/11/07/using-rust-in-windows/"&gt;core components&lt;/a&gt; of Windows in Rust and the folks in charge of Linux have been talking about integrating Rust to the &lt;a href="https://lore.kernel.org/lkml/CAKwvOdmuYc8rW_H4aQG4DsJzho=F+djd68fp7mzmBp3-wY--Uw@mail.gmail.com/T/"&gt;kernel&lt;/a&gt;. That's a big step for Rust.&lt;/p&gt;

&lt;p&gt;But the question remains... should we trust Rust with the future of systems programming?&lt;/p&gt;

&lt;h1&gt;
  
  
  Rust is still a young language
&lt;/h1&gt;

&lt;p&gt;As much as it costs to admit, Rust is still a young language compared to C, which has been around for over 48 years and still is the preferred language for &lt;strong&gt;systems programming&lt;/strong&gt;, every major operating system in the world is written in C/C++, as well as their drivers, utilities and built-in software.&lt;/p&gt;

&lt;p&gt;But is Rust up to the challenge? Many developers have been rewriting software written in C with Rust, demonstrating that it is not only capable of competing with it but also of generating faster, more reliable software by taking advantage of Rust's modern features.&lt;/p&gt;

&lt;p&gt;Here's a small &lt;a href="https://zaiste.net/posts/shell-commands-rust/"&gt;list&lt;/a&gt; of projects to check out:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://zaiste.net/posts/shell-commands-rust/#bat"&gt;bat&lt;/a&gt; -&amp;gt; is a &lt;code&gt;cat&lt;/code&gt; clone with syntax highlighting.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://zaiste.net/posts/shell-commands-rust/#exa"&gt;exa&lt;/a&gt; -&amp;gt;  is a modern replacement for &lt;code&gt;ls&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://zaiste.net/posts/shell-commands-rust/#starship"&gt;starship&lt;/a&gt; -&amp;gt; is a minimal, blazing-fast, and infinitely customizable prompt for any shell.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://zaiste.net/posts/shell-commands-rust/#ripgrep"&gt;ripgrep&lt;/a&gt; -&amp;gt; is an extremely fast alternative to &lt;code&gt;grep&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Operating systems written in Rust
&lt;/h1&gt;

&lt;p&gt;While having programs rewritten in Rust is pretty cool, being able to write low-level components is a must-have for a language that intends to become #1 for systems programming, things such as the kernel and drivers. There are no immediate plans to rewrite current operating systems in Rust, but there is a project created by &lt;a href="https://twitter.com/jeremy_soller"&gt;Jeremy Soller&lt;/a&gt;, System76 Principal Engineer called &lt;a href="https://www.redox-os.org/"&gt;RedoxOS&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Redox is a Unix-like Operating System written in Rust, aiming to bring the innovations of Rust to a modern microkernel and full set of applications.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Redox aims to demonstrate Rust's systems programming capabilities to a full extent, having written not only the kernel in Rust but also every piece of software that it ships with it. One of those is &lt;a href="https://gitlab.redox-os.org/redox-os/relibc/-/blob/master/README.md"&gt;relibc&lt;/a&gt;, a portable POSIX C standard library compatible with Redox and Linux. Redox isn't currently going to replace your existing OS, but it's a fun thing to try.&lt;/p&gt;

&lt;p&gt;Rust still has a long way to go before it can compete with a language like C, but the future is looking very promising.&lt;/p&gt;

&lt;h1&gt;
  
  
  Rust is still missing some features
&lt;/h1&gt;

&lt;p&gt;While Rust has come a long way but it still lacks many of the features that C/C++ programmers take for granted, just to name a few:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Compile-time code/type generation and verification&lt;/strong&gt; -&amp;gt; Rust does have a procedural macro system that can be used to accomplish these things but it's not remotely the same.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Static Analysis&lt;/strong&gt; -&amp;gt; There may be more tools available for C++ but the quality of the static analysis built right into Rust's type system blows all of them away, no tool can reliably prevent dangling references or data races in C++. As far as only using safe Rust, static analysis is in a way better shape than C++ because it has nothing as powerful as the borrow checker.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sanitizers&lt;/strong&gt; -&amp;gt; Due to the type system, safe Rust code has much less need for sanitizers, when it comes to unsafe code, C++ has the advantage as it has more tools available.&lt;/p&gt;

&lt;p&gt;There's also safe transmutation (safely cast “plain old data” types to and from raw bytes), safe support for C style unions, and fallible allocation (fail gracefully from allocation failure, rather than panic) as stated by Microsoft.&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;As many missing features Rust has, its safe to say that, in time, Rust may become the language of choice for systems programming. Rust has an amazing community of developers that work hard every day to bring new features to the language, especially now that Microsoft supports Rust into becoming a better and more useful language. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;We at Microsoft will be able to help in these endeavors to shape the future of the language to improve its usefulness [...]. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you enjoyed this article, consider sharing it so more people can benefit from it! Also, feel free to &lt;a href="https://twitter.com/edfloreshz"&gt;@me&lt;/a&gt; on Twitter.&lt;/p&gt;

</description>
      <category>rust</category>
    </item>
    <item>
      <title>Best Development Tools And Resources For Rust</title>
      <dc:creator>Eduardo Flores</dc:creator>
      <pubDate>Mon, 31 Aug 2020 05:37:38 +0000</pubDate>
      <link>https://dev.to/edfloreshz/best-development-tools-and-resources-for-rust-2ce7</link>
      <guid>https://dev.to/edfloreshz/best-development-tools-and-resources-for-rust-2ce7</guid>
      <description>&lt;p&gt;As new Rust developers, we constantly encounter new challenges, especially coming from languages like JavaScript or Python. Rust isn't as familiar as other languages, but being a modern language it brings many benefits to the table that other older languages don't.&lt;/p&gt;

&lt;p&gt;The purpose of this article is to help Rust developers find tools and resources to make the most out of their developer experience. If you are reading this and Rust is not installed in your system head over to this &lt;a href="https://www.rust-lang.org/tools/install"&gt;website&lt;/a&gt; and install it.&lt;/p&gt;

&lt;h1&gt;
  
  
  Learning Rust
&lt;/h1&gt;

&lt;p&gt;If you are new to Rust, you are going to want to read &lt;a href="https://doc.rust-lang.org/book/"&gt;The Rust Book&lt;/a&gt;, which is a free book containing everything you need to know about the language, you can alternatively buy the &lt;a href="https://www.amazon.com/Rust-Programming-Language-Covers-2018/dp/1718500440/ref=tmm_pap_swatch_0?_encoding=UTF8&amp;amp;qid=&amp;amp;sr="&gt;book&lt;/a&gt; online if you prefer paperback books.&lt;/p&gt;

&lt;p&gt;Reading the book will give you a better understanding of the design choices made by the &lt;a href="https://www.rust-lang.org/governance/teams/core"&gt;Core Team&lt;/a&gt; and what are the differences of Rust in comparison to other languages, this will make it easier for you to get started writing code!&lt;/p&gt;

&lt;p&gt;After you are done with the book check the &lt;a href="https://www.rust-lang.org/learn"&gt;learning section&lt;/a&gt; on the Rust website, it contains many more resources for you to continue your journey into becoming a Rustancean.&lt;/p&gt;

&lt;p&gt;You should also check out &lt;a href="https://www.youtube.com/c/JonGjengset/videos"&gt;Jon Gjengset&lt;/a&gt; YouTube channel and join the Rust &lt;a href="https://discord.gg/RS3Ntb9"&gt;Discord&lt;/a&gt; server.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This book assumes that you’ve written code in another programming language, having personally read the book I can assure you that you don't want to read this book as your first language unless you are very interested in systems development.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  Code Editor vs IDE
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Visual Studio Code
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PrTMmA_j--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1598303690695/wOl1NrkvW.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PrTMmA_j--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1598303690695/wOl1NrkvW.webp" alt="vscode.webp"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When I started learning Rust I used &lt;a href="https://code.visualstudio.com/"&gt;Visual Studio Code&lt;/a&gt;, it is a fantastic code editor with a lot of extensibility, even to the point as making it work as a complete IDE, updates constantly bring new features and performance keeps getting better as Microsoft pushes &lt;a href="https://www.electronjs.org/"&gt;Electron&lt;/a&gt; forward. &lt;/p&gt;

&lt;p&gt;Although my experience writing Rust code was good, it lacked some features other development tools like JetBrains CLion have, such as type inference and in depth coding assistance which is very nice to have.&lt;/p&gt;

&lt;p&gt;Nevertheless, my experience was really pleasant and I could comfortably go back to Visual Studio Code.&lt;/p&gt;

&lt;h4&gt;
  
  
  Rust extensions for Visual Studio Code
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=rust-lang.rust"&gt;Rust&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=miqh.vscode-language-rust"&gt;Rust Grammar&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=dunstontc.vscode-rust-syntax"&gt;vscode-rust-syntax&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=bungcip.better-toml"&gt;Better Toml&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Other Tools
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=formulahendry.code-runner"&gt;Code Runner&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.forrestthewoods.com/blog/how-to-debug-rust-with-visual-studio-code/"&gt;How to debug Rust in Visual Studio Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=usernamehw.errorlens"&gt;Error Handling&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  JetBrains CLion
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--clIb_xzy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1598303728100/4g6Lq-eEN.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--clIb_xzy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1598303728100/4g6Lq-eEN.png" alt="1440x900-clion.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When I made the switch to CLion I immediately noticed a much better integration of the IDE with Rust. The &lt;a href="https://intellij-rust.github.io/"&gt;Rust Plugin&lt;/a&gt; developed by JetBrains is the single piece of software that convinced me to switch from Visual Studio Code to CLion, here are some of the features that caught my eye.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Right-click to create new files has Rust templates.&lt;/li&gt;
&lt;li&gt;The Cargo plugin allows you to run cargo commands with one click.&lt;/li&gt;
&lt;li&gt;Debugging is already integrated with the IDE.&lt;/li&gt;
&lt;li&gt;Preview the types of your variables as you write your code in real-time thanks to type inference.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Click &lt;a href="https://intellij-rust.github.io/features/"&gt;here&lt;/a&gt; for a full list of features.&lt;/p&gt;

&lt;h4&gt;
  
  
  Plugins
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://plugins.jetbrains.com/plugin/8195-toml/"&gt;Toml&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Of course, CLion is not free software, but you can get a free license if you are a &lt;a href="https://www.jetbrains.com/community/education/#students"&gt;student&lt;/a&gt;. If you are not a student you can still get a &lt;a href="https://www.jetbrains.com/clion/buy/#discounts?billing=yearly"&gt;free or discounted license&lt;/a&gt;, alternatively you can buy CLion &lt;a href="https://www.jetbrains.com/clion/buy/#personal?billing=yearly"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;The resources in this article are not exhaustive, these are just some of the resources that helped me in my journey into becoming a Rustacean, it covers some of the best resources to learn Rust and how to set up your development environment to take full advantage of the tools we have available.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If you enjoyed this article, consider sharing it so more people can benefit from it! Also, feel free to &lt;a href="https://twitter.com/edfloreshz"&gt;@me&lt;/a&gt; on Twitter.&lt;/p&gt;
&lt;/blockquote&gt;

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