<?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: Lucas Frota</title>
    <description>The latest articles on DEV Community by Lucas Frota (@lucasfrota).</description>
    <link>https://dev.to/lucasfrota</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%2F51726%2F1468c8ad-5fc3-4c3a-89e1-5d560e18ad2d.jpeg</url>
      <title>DEV Community: Lucas Frota</title>
      <link>https://dev.to/lucasfrota</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/lucasfrota"/>
    <language>en</language>
    <item>
      <title>Things I have learned from my dead startups as a programmer</title>
      <dc:creator>Lucas Frota</dc:creator>
      <pubDate>Fri, 05 Jun 2020 03:52:53 +0000</pubDate>
      <link>https://dev.to/lucasfrota/things-i-have-learned-from-my-dead-startups-as-a-programmer-2d90</link>
      <guid>https://dev.to/lucasfrota/things-i-have-learned-from-my-dead-startups-as-a-programmer-2d90</guid>
      <description>&lt;p&gt;In many ways, software development and startups are deeply linked currently, and for this reason, many of us have already tried to create a Startup or even just developed an MVP, however, there's no recipe to ensure that it is going to succeed or not, and statistically, it usually doesn't. This article aims to expose some of the things I have learned trying to create startups and some advice that I believe could be helpful for an entrepreneur programmer.&lt;/p&gt;

&lt;h1&gt;
  
  
  Your product is not always only your software
&lt;/h1&gt;

&lt;p&gt;Since 2016 I have been involved as a founder in three startups which have died in early-stage, always being the developer, and the first thing I learned was that the startup is much more than just the software! Although the software is usually the main interface between the company and the clients it is not the whole business, for instance, if the internet stopped working tomorrow Uber could still work by phone calls it would be slower and very confuse compared with what we have today, but the service could still be working, my point here is: what Uber sells is not the app, it sells car rides and it happens that an app is a cheap and efficient way to sell it.&lt;/p&gt;

&lt;p&gt;Startups are more about solving a problem than making good looking and fast apps, for the final user doesn't matter if you are using the latest web framework or if your server takes less then 1 second to answer, what makes your service relevant is how you solve the problems of your users not how cool the technology is, and sometimes it means that a traditional monolithic CRUD system in PHP will work fine for you.&lt;/p&gt;

&lt;h1&gt;
  
  
  Your product doesn't have to be perfect
&lt;/h1&gt;

&lt;p&gt;Something that also seems to be a very common problem is overthinking about the MVP, the minimum viable product should aim just to prove that your business model works, so don't worry about making it perfect at the beginning, remember that you have no guarantee that your product will succeed, so it doesn't matter if it is not scalable for 1 billion users, it is better to have something that works with some failures in production with real users than just have a perfectly designed not implemented project with no users. Just improve your MVP as you go.&lt;/p&gt;

&lt;p&gt;As an example of how you can have a popular service even when your code is not perfect, we can think about Twitter, until 2013, it had the fail whale, which would appear when they had any sort of problem in their system, and yet Twitter is one of the largest social media worldwide, so it is fine to fail sometimes as long as you are constantly improving.&lt;/p&gt;

&lt;h1&gt;
  
  
  Its is also about the team
&lt;/h1&gt;

&lt;p&gt;Despite what some people think having a good idea is just not enough to succeed as a startup, in fact there many factors that are out of our control like timing or the state of technology, but in my experience, good teams can make wonderful things even in bad scenarios, it is not about being experts, it is more about being at the same page and always up to listen each other, by its nature startups are very volatile and everything changes all the time, and eventually unpleasant situations just come up out of the blue and a good team should be able to address those situations. &lt;/p&gt;

&lt;p&gt;Keep in mind that in many cases it is better to have a team with no much experience that is up to learn and change their minds than a team full of stubborn experts.&lt;/p&gt;

&lt;h1&gt;
  
  
  Don't overthink if it fails
&lt;/h1&gt;

&lt;p&gt;And last but not least, not all of your ideas are flawless! I know how it feels when we have a good idea, and for a second you imagine it is the greatest idea of all the times, however, most likely that's just not the truth and that's completely fine. Just keep in mind that your idea may fail, or it just may not be the right time, but if you believe in your idea, just give it a try, and even if you fail don't overthink it, you have learned a lot from this.&lt;/p&gt;

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

&lt;p&gt;In many ways creating a Startup is not simple at all but eventually, it may work and the worse thing that may happen to you as a developer is learning by failing and spending some time and eventually some money.&lt;/p&gt;

&lt;p&gt;Hope this article may be useful for someone, this is not a definitive startup guide or anything, it is just a compilation of what I have learned as a developer in startups world and if you have any question or just disagree on something on this text please leave a comment below so we can talk about it :).&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>discuss</category>
      <category>career</category>
    </item>
    <item>
      <title>Keeping the eye on the ML model training with CodeMonitor</title>
      <dc:creator>Lucas Frota</dc:creator>
      <pubDate>Thu, 04 Jun 2020 01:09:00 +0000</pubDate>
      <link>https://dev.to/lucasfrota/keeping-the-eye-on-the-ml-model-training-with-codemonitor-3ho9</link>
      <guid>https://dev.to/lucasfrota/keeping-the-eye-on-the-ml-model-training-with-codemonitor-3ho9</guid>
      <description>&lt;p&gt;If you work with deep learning, you probably have faced a situation where your model takes too long to learn, and you have to keep watching its progress, however staying in front of the desk watching it learn is not exactly the most exciting thing ever, for this reason, this article's purpose is to introduce CodeMonitor, a simple but very useful python library. It helps you to keep an eye on your model even when you are away from your computer by sending reports on each epoch directly to your phone in the form of messages.&lt;/p&gt;

&lt;p&gt;The first thing you need to know about CodeMonitor is that it is an open-source initiative thus any suggestions or problem retorts are more than welcome. The code is being hosted on Github and for any report, please use the &lt;a href="https://github.com/Lucasfrota/CodeMonitor/issues" rel="noopener noreferrer"&gt;issues&lt;/a&gt; section.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&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%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Lucasfrota" rel="noopener noreferrer"&gt;
        Lucasfrota
      &lt;/a&gt; / &lt;a href="https://github.com/Lucasfrota/CodeMonitor" rel="noopener noreferrer"&gt;
        CodeMonitor
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Code Monitor is a simple way to send feedback about your code to your smartphone as a Telegram message!
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Currently, this library uses only Telegram to send the messages and have two ways to do it, you can make use of a Keras callback that will send a report of the logs generated on the training to your Telegram chat at the end of each epoch, these logs may be the loss or the accuracy, for example, it may vary according to your project. The other way you could use it is just sending any string you like,as a message thus you can send messages of any nature, in any context you come up with.&lt;/p&gt;

&lt;p&gt;In this article I am assuming that you already have a Keras model, if it is not your case you can learn more about Keras with this &lt;a href="https://elitedatascience.com/keras-tutorial-deep-learning-in-python" rel="noopener noreferrer"&gt;tutorial&lt;/a&gt; that addresses the classification of handwriting texts on images and come back later or just read it without fully implementing the code.&lt;/p&gt;

&lt;h1&gt;
  
  
  Set up
&lt;/h1&gt;

&lt;p&gt;To import this library you can download the source code directly from GitHub or get it with pip, at this tutorial I am going to use the second option for sake of simplicity, to do so just copy and paste the following line of code on your terminal (we are assuming that you already have pip installed, to learn more about pip visit their &lt;a href="https://pip.pypa.io/en/stable/installing/" rel="noopener noreferrer"&gt;installation page&lt;/a&gt;).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pip install CodeMonitor
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once you have it installed you need to set up the Telegram side, which is pretty simple, if you already have the app installed on your phone just open it and touch the search icon at the right upper corner and search for CodeMonitor and in the image below, select it.&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%2Fs52ckkgx00auwmh2vtro.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%2Fs52ckkgx00auwmh2vtro.png" alt="Search for CodeMonitor bot"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At this point you just need to send any message to it, in response, you will receive a code, this is the chat id, we are using it to send messages to this chat, keep this code in secret, because if anyone who has it can send you messages.&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%2Fd3ymwuy1n5m0gdbirlg8.jpg" 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%2Fd3ymwuy1n5m0gdbirlg8.jpg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now everything is set up on Telegram side, so we can come back to the computer and send our fist message from python! On python side, we have two classes that are responsible for the functionalities we have discussed earlier, lets import those.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;from CodeMonitor.telegram import Messenger, FitMonitor
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Please note that on the sample code, we will use "123456789" as chat id, however, you'll need to replace it on your code&lt;/p&gt;

&lt;h1&gt;
  
  
  Messenger
&lt;/h1&gt;

&lt;p&gt;This class allows you to send any string you want to the Telegram chat, only requiring the chat id as mentioned on the Telegram side section.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;messenger = Messenger("123456789")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When the class is instantiated it sends the message "All ready!", to send your messages to use the function send_message.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;messenger.send_message("your awesome message!")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  FitMonitor
&lt;/h1&gt;

&lt;p&gt;As mentioned above this class allows you to send reports based on the logs generated on the training as in the first class you will have to provide the chat id to identify your chat. To simply send all logs generated on the training just add the FitMonitor class to the callbacks list as shown below.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;model.fit(X_train, Y_train,          
          epochs = 10,
          validation_data = (X_test, Y_test), 
          callbacks=[FitMonitor("123456789")])
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To specify the logs you want to send you can set a list of the ones you want to include in the message by using the log_keys parameter, as shown in the code snippet which specifies that only the loss should be included in the message.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;model.fit(X_train, Y_train,          
          epochs = 10,
          validation_data = (X_test, Y_test), 
          callbacks=[FitMonitor("123456789", log_keys=["loss"])])
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;In this article, you have been introduced to a simple but useful tool that may help you to keep monitoring your model from anywhere with your phone, as mentioned above this is an open-source initiative and is still being developed so if you have any idea or suggestion please drop it at comments and thanks for reading.&lt;/p&gt;

</description>
      <category>python</category>
      <category>machinelearning</category>
      <category>lib</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Explain gRPC Like I'm Five</title>
      <dc:creator>Lucas Frota</dc:creator>
      <pubDate>Sun, 07 Jan 2018 01:29:37 +0000</pubDate>
      <link>https://dev.to/lucasfrota/explain-grpc-like-im-five-26mm</link>
      <guid>https://dev.to/lucasfrota/explain-grpc-like-im-five-26mm</guid>
      <description></description>
      <category>explainlikeimfive</category>
      <category>grpc</category>
    </item>
    <item>
      <title>If you could write a programming language how would it be?</title>
      <dc:creator>Lucas Frota</dc:creator>
      <pubDate>Sat, 06 Jan 2018 05:11:28 +0000</pubDate>
      <link>https://dev.to/lucasfrota/if-you-could-write-a-programming-language-how-would-it-be-1f2l</link>
      <guid>https://dev.to/lucasfrota/if-you-could-write-a-programming-language-how-would-it-be-1f2l</guid>
      <description></description>
      <category>discuss</category>
    </item>
  </channel>
</rss>
