<?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: Roberto Orozco</title>
    <description>The latest articles on Forem by Roberto Orozco (@robertoor).</description>
    <link>https://forem.com/robertoor</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%2F27669%2Fe1fafef9-3732-4cfa-a438-072473155157.jpg</url>
      <title>Forem: Roberto Orozco</title>
      <link>https://forem.com/robertoor</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/robertoor"/>
    <language>en</language>
    <item>
      <title>.NET – Dictionary vs HashTable vs HashSet 📖</title>
      <dc:creator>Roberto Orozco</dc:creator>
      <pubDate>Sun, 15 Sep 2024 23:46:32 +0000</pubDate>
      <link>https://forem.com/robertoor/net-dictionary-vs-hashtable-vs-hashset-3goo</link>
      <guid>https://forem.com/robertoor/net-dictionary-vs-hashtable-vs-hashset-3goo</guid>
      <description>&lt;p&gt;First things first, in computing, a hash table is a data structure that stores key-value pairs. Internally, it uses a hash function to compute an index into an array of buckets, from which the desired value can be found. This allows for efficient retrieval, insertion, and deletion of items.&lt;/p&gt;

&lt;p&gt;To understand this concept a little better, let's look at the following example I found on Stack Overflow.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://stackoverflow.com/questions/730620/how-does-a-hash-table-work" rel="noopener noreferrer"&gt;data structures - How does a hash table work? - Stack Overflow&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To visualize this concept with a real-world analogy, let's imagine a library where we need to easily find books when we need them. A hash table comes to the rescue! We take the title of a book, run it through a computer program (hashing) to get the shelf and slot number, and place the book there.&lt;/p&gt;

&lt;p&gt;Then, when we need the book, we compute the hash of the title again and immediately find the shelf number and slot where the book is located.&lt;/p&gt;

&lt;p&gt;In our example, the key is the title of the book, the hash represents the book's location after being computed by the hash function, and the value is the content of the book.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4ayz1g1ari7vma6a08lu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4ayz1g1ari7vma6a08lu.png" alt="Image description" width="800" height="233"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;While the concept of a hash table may seem straightforward, real-world implementations can be more complex. One such complexity involves handling collisions, where different keys hash to the same index. Despite this, our simple example illustrates the fundamental workings of a hash table.&lt;/p&gt;

&lt;p&gt;Now that we understand how a hash table works and have a use case for implementing it in our application, we've only just scratched the surface. Hash tables are versatile and go by many names depending on the context: hash maps, dictionaries, associative arrays, hash sets, and more.&lt;/p&gt;

&lt;p&gt;However, navigating these variations can be challenging. Different tech stacks and languages may offer their own implementations and nuances.&lt;/p&gt;

&lt;h2&gt;
  
  
  .NET Dictionary Collections
&lt;/h2&gt;

&lt;p&gt;In .NET, collections based on the IDictionary interface represent elements that contain both a key and a value. This may sound familiar—it's the foundation of the hashtable concept.&lt;/p&gt;

&lt;p&gt;Now, let's delve into the various collection types available in .NET.&lt;/p&gt;

&lt;h3&gt;
  
  
  Hashtable
&lt;/h3&gt;

&lt;p&gt;The Hashtable class in .NET, found in the System.Collections namespace, is a non-generic collection that stores key-value pairs. It uses a hash function to quickly find values based on their keys, offering efficient retrieval, insertion, and deletion.&lt;/p&gt;

&lt;h3&gt;
  
  
  SortedList
&lt;/h3&gt;

&lt;p&gt;The SortedList class in .NET, found in the System.Collections.Generic namespace, is a generic collection that stores key-value pairs in sorted order based on the keys. It combines the features of a hash table and a sorted array, allowing fast lookups and sorted access to keys and values.&lt;/p&gt;

&lt;h3&gt;
  
  
  Dictionary ⭐
&lt;/h3&gt;

&lt;p&gt;The Dictionary class in .NET, found in the System.Collections.Generic namespace, is a generic collection that stores key-value pairs. It provides fast lookups, insertions, and deletions based on keys using a hash table internally.&lt;/p&gt;

&lt;h3&gt;
  
  
  HashSet
&lt;/h3&gt;

&lt;p&gt;The HashSet class in .NET, found in the System.Collections.Generic namespace, is a generic collection that stores unique elements. It uses a hash table internally to provide fast lookups, insertions, and deletions.&lt;/p&gt;

&lt;h3&gt;
  
  
  ConcurrentDictionary
&lt;/h3&gt;

&lt;p&gt;The ConcurrentDictionary class in .NET, found in the System.Collections.Concurrent namespace, is a thread-safe collection that stores key-value pairs. It provides high-performance concurrent operations, allowing multiple threads to access and modify the dictionary without needing additional synchronization.&lt;/p&gt;

&lt;h2&gt;
  
  
  Selecting a Type
&lt;/h2&gt;

&lt;p&gt;Now that you're familiar with some of the collection types available in .NET, how do you choose the correct one for your needs? Here's a quick guide to help you make the right choice.&lt;/p&gt;

&lt;h3&gt;
  
  
  Generic Types &amp;gt; Nongeneric types
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;It is generally better to use generic types, using generic collections in .NET is recommended because they provide type safety, better performance, clearer code, compiler checks, and ease of use compared to non-generic collections.

&lt;ul&gt;
&lt;li&gt;Dictionary and ConcurrentDictionary are the generic classes that correspond to Hashtable.&lt;/li&gt;
&lt;li&gt;Use SortedList instead of the nongeneric SortedList.&lt;/li&gt;
&lt;li&gt;Use HashSet instead of the nongeneric HashSet.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Sorted vs Nonsorted
&lt;/h3&gt;

&lt;p&gt;The choice between using sorted and non-sorted dictionary types depends on the specific needs of your application. Use a sorted type when you require the keys to be maintained in a sorted order. These collections are beneficial when you need to iterate over the elements in a sorted manner or perform range queries. The SortedDictionary is more efficient for frequent insertions and deletions, while the SortedList is more memory-efficient for smaller datasets with infrequent modifications.&lt;/p&gt;

&lt;p&gt;On the other hand, use a Dictionary or ConcurrentDictionary when you prioritize performance for fast lookups, insertions, and deletions without caring about the order of keys. The Dictionary is ideal for single-threaded scenarios, while the ConcurrentDictionary provides thread-safe operations for concurrent access. Each type has its strengths, and selecting the appropriate one depends on whether your primary need is ordered iteration or optimal performance for dynamic data operations.&lt;/p&gt;

&lt;h3&gt;
  
  
  Dictionary is Your Friend
&lt;/h3&gt;

&lt;p&gt;As indicated by the star emoji above, in .NET, when you need a hash table, you should typically use the Dictionary type. It is often the preferred choice for hash tables due to its high performance, with average O(1) time complexity for lookups, insertions, and deletions. It is easy to use, offering a clear API, and supports a wide range of key types.&lt;/p&gt;

&lt;p&gt;Here is a brief example on how to use it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        // Create a new dictionary with keys of type string and values of type int
        Dictionary&amp;lt;string, int&amp;gt; myDictionary = new Dictionary&amp;lt;string, int&amp;gt;();

        // Add some key-value pairs to the dictionary
        myDictionary.Add("apple", 10);
        myDictionary.Add("banana", 5);
        myDictionary.Add("orange", 8);

        // Access and print the value associated with the "apple" key
        Console.WriteLine("Number of apples: " + myDictionary["apple"]);

        // Check if the dictionary contains a key
        if (myDictionary.ContainsKey("banana"))
        {
            Console.WriteLine("Number of bananas: " + myDictionary["banana"]);
        }

        // Iterate over all key-value pairs in the dictionary
        foreach (var pair in myDictionary)
        {
            Console.WriteLine("Key: " + pair.Key + ", Value: " + pair.Value);
        }
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Understanding and effectively using collection types like hash tables, dictionaries, and hash sets in .NET is crucial for maintaining organized data and ensuring your applications run efficiently. Each collection type has its strengths, and choosing the right one can significantly impact performance and usability. Dive into these collections and discover the best fit for your .NET application needs to optimize your development process and enhance your software's functionality. 🫡&lt;/p&gt;

</description>
      <category>c</category>
      <category>programming</category>
      <category>beginners</category>
    </item>
    <item>
      <title>AI-Augmented Development 🤖</title>
      <dc:creator>Roberto Orozco</dc:creator>
      <pubDate>Sat, 27 Apr 2024 19:23:57 +0000</pubDate>
      <link>https://forem.com/robertoor/ai-augmented-development-2cb9</link>
      <guid>https://forem.com/robertoor/ai-augmented-development-2cb9</guid>
      <description>&lt;p&gt;In recent years, the integration of Artificial Intelligence (AI) into software development processes has transformed the way developers work. AI-augmented development refers to the use of AI technologies to enhance and streamline various aspects of the software development lifecycle, from coding and testing to deployment and maintenance. This post explores a few tools for adopting AI-augmented development, the potential future of software development with AI, and why AI will not replace developers but rather enhance their capabilities.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tools for AI-Augmented Development
&lt;/h2&gt;

&lt;p&gt;AI-Augmented Development is in high demand, leading to numerous companies striving to develop the best assistant to gain developers’ confidence and market share. This market is expected to continue growing with the introduction of more tools. For now, let’s explore some of the most popular ones.&lt;/p&gt;

&lt;h3&gt;
  
  
  GitHub Copilot
&lt;/h3&gt;

&lt;p&gt;GitHub Copilot is an AI-powered code completion tool designed to assist developers in writing code more quickly and efficiently. By leveraging machine learning models trained on vast amounts of code, Copilot suggests entire lines or blocks of code as you type, tailored to the context of your project. This tool can greatly accelerate the development process and minimize the time spent on repetitive coding tasks.&lt;/p&gt;

&lt;p&gt;Copilot offers several features, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Code completion. Copilot suggests code as you type.&lt;/li&gt;
&lt;li&gt;Chat. Ask Copilot for help with your code, explanations or personalized assistance.&lt;/li&gt;
&lt;li&gt;Commit and PR summaries. Get Copilot to describe the changes in a commit or PR.&lt;/li&gt;
&lt;li&gt;CLI assistance. Ask for assistance directly in your terminal.&lt;/li&gt;
&lt;li&gt;IDE integration. Compatible with VS Code, Neovim, Visual Studio, and JetBrains IDEs.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Amazon CodeWhisperer
&lt;/h3&gt;

&lt;p&gt;This is Amazon’s contribution to AI-Augmented development, powered by AWS. Currently free for individual use, this tool offers real-time code suggestions directly in your IDE, ranging from snippets to full functions. It also supports CLI completions and natural language to bash translation. Additionally, it features Amazon Q, an interactive, generative AI-powered assistant within the IDE, enabling natural dialogues for code explanations, transformations, and personalized suggestions.&lt;/p&gt;

&lt;p&gt;Among CodeWhisperer’s features, we can find:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Code completion. ACW generates suggestions as you code.&lt;/li&gt;
&lt;li&gt;Chat. Amazon Q gives you expert guidance through a conversational interface.&lt;/li&gt;
&lt;li&gt;Flag public code. CodeWhisperer can flag or filter code suggestions that resemble publicly available code, providing the repository URL and license information.&lt;/li&gt;
&lt;li&gt;Security scans. Scan your code to identify security vulnerabilities.&lt;/li&gt;
&lt;li&gt;IDE integration. Compatible with VS Code, Visual Studio, JetBrains IDEs, AWS Cloud9, and AWS Lambda Console.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Tabnine
&lt;/h3&gt;

&lt;p&gt;One more AI code assistant that shares common features: code completions, context-aware recommendations directly to your IDE, and support for multiple languages. Tabnine is exclusively trained on permissively licensed open-source repositories and adheres to enterprise-grade security standards, including SOC 2 and GDPR.&lt;/p&gt;

&lt;p&gt;Features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Code generation. Tabnine autocompletes your code, suggest function implementations and generates code based on your comments.&lt;/li&gt;
&lt;li&gt;Risk mitigation. Tabnine training approach eliminates privacy, license and compliance issues.&lt;/li&gt;
&lt;li&gt;Private. Tabnine does not train on your code unless you choose to connect your codebase.
These tools represent just a fraction of the AI-augmented development landscape, and we can expect to see a continuous influx of new solutions entering the market.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Personally, I have tried the aforementioned tools, and as of the time of writing, I have found Copilot to be the most effective. However, it’s important to note that these tools are evolving rapidly, and their performance can vary depending on individual tech stacks. I invite you to share your experiences in the comments section. Let me know which tools you have used, and which ones have worked best for you.&lt;/p&gt;

&lt;h2&gt;
  
  
  Will AI Replace Developers?
&lt;/h2&gt;

&lt;p&gt;AI has and will undoubtedly revolutionize many industries, including software development, with its ability to automate tasks, optimize processes, and even assist in code generation. However, the notion that AI will completely replace software developers is unlikely for several reasons.&lt;/p&gt;

&lt;p&gt;Firstly, while AI can handle repetitive and mundane tasks, software development requires creativity, problem-solving skills, and a deep understanding of complex systems. These are traits that are uniquely human and not easily replicated by AI. Developers not only write code but also design software architecture, collaborate with team members, and understand the needs of end-users, tasks that require human intuition and empathy.&lt;/p&gt;

&lt;p&gt;Additionally, software development is not just about writing code; it’s also about understanding the broader context in which the software operates. This includes factors such as business requirements, user experience, and regulatory compliance, areas where human judgment and decision-making are crucial.&lt;/p&gt;

&lt;p&gt;Furthermore, AI is not without its limitations. While it can analyze large datasets and identify patterns, it lacks the ability to understand nuance, context, and human emotions. This limits its effectiveness in certain aspects of software development, such as user interface design, where human-centric considerations play a significant role.&lt;/p&gt;

&lt;p&gt;In conclusion, while AI has the potential to transform the way software is developed, it is unlikely to completely replace human software developers. The human element of creativity, problem-solving, and empathy will continue to be essential in driving innovation and creating software that meets the needs of users in a rapidly evolving digital landscape.&lt;/p&gt;




&lt;p&gt;There is no denying that the role of AI in software development is on the rise. While the idea of AI replacing software developers may be far-fetched, we should embrace these AI tools as valuable assistants that can help us improve our productivity, enhance our code quality, and streamline our workflows. By leveraging AI technologies, we can seize the opportunity to further advance the field of software development and create innovative solutions that meet the evolving needs of our users.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>ai</category>
      <category>programming</category>
    </item>
    <item>
      <title>Array Methods: TypeScript vs C# 🧮</title>
      <dc:creator>Roberto Orozco</dc:creator>
      <pubDate>Fri, 12 Apr 2024 22:41:58 +0000</pubDate>
      <link>https://forem.com/robertoor/array-methods-typescript-vs-c-1faf</link>
      <guid>https://forem.com/robertoor/array-methods-typescript-vs-c-1faf</guid>
      <description>&lt;p&gt;Arrays are fundamental in programming, enabling developers to efficiently store and manipulate collections of data. Most programming languages provide a variety of array functions or methods to simplify common tasks such as iteration, transformation, filtering, and aggregation. In this blog post, we’ll explore and compare some of the most commonly used array functions, examining their implementations in both TypeScript and C#.&lt;/p&gt;

&lt;h2&gt;
  
  
  forEach
&lt;/h2&gt;

&lt;p&gt;Executes a provided function once for each array element, allowing you to perform a specific action on each element without creating a new array.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// TypeScript&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;array&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="nx"&gt;array&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;forEach&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;element&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;element&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="c1"&gt;// C#&lt;/span&gt;
&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;array&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;5&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="n"&gt;array&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ForEach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;element&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;element&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  map
&lt;/h2&gt;

&lt;p&gt;Creates a new array populated with the results of calling a provided function on every element in the calling array. It’s useful for transforming each element in an array based on a specific logic.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// TypeScript&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;array&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;newArray&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;array&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;element&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;element&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;newArray&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Output: [2, 4, 6, 8, 10]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="c1"&gt;// C#&lt;/span&gt;
&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;array&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;5&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;newArray&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;array&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Select&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;element&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;element&lt;/span&gt; &lt;span class="p"&gt;*&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}).&lt;/span&gt;&lt;span class="nf"&gt;ToList&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;", "&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;newArray&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Output: 2, 4, 6, 8, 10&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  filter
&lt;/h2&gt;

&lt;p&gt;Creates a new array with all elements that pass the test implemented by the provided function. It’s useful for removing elements that don’t meet a certain condition.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// TypeScript&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;array&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;filteredArray&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;array&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;element&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;element&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;filteredArray&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Output: [3, 4, 5]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="c1"&gt;// C#&lt;/span&gt;
&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;array&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;5&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;filteredArray&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;array&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Where&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;element&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;element&lt;/span&gt; &lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}).&lt;/span&gt;&lt;span class="nf"&gt;ToList&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;", "&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;filteredArray&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Output: 3, 4, 5&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  reduce
&lt;/h2&gt;

&lt;p&gt;Applies a function against an accumulator and each element in the array (from left to right) to reduce it to a single value. It’s useful for aggregating the elements of an array into a single value.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// TypeScript&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;array&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;array&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;reduce&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;accumulator&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;currentValue&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;accumulator&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;currentValue&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Output: 15&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="c1"&gt;// C#&lt;/span&gt;
&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;array&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;5&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;array&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Aggregate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;accumulator&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;currentValue&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;accumulator&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="n"&gt;currentValue&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Output: 15&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  find
&lt;/h2&gt;

&lt;p&gt;Returns the first element in the array that satisfies the provided testing function. It’s useful for finding a single element based on a condition.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// TypeScript&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;array&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;foundElement&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;array&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;find&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;element&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;element&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;foundElement&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Output: 3&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="c1"&gt;// C#&lt;/span&gt;
&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;array&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;5&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;foundElement&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;array&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Find&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;element&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;element&lt;/span&gt; &lt;span class="p"&gt;==&lt;/span&gt; &lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;foundElement&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Output: 3&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;There you have it, while the syntax and specific method names may differ between the two languages, the core concepts remain the same. By understanding the similarities and differences in array functions between TypeScript and C#, developers can effectively work with arrays in their projects and leverage the full power of arrays in any programming language.&lt;/p&gt;

</description>
      <category>typescript</category>
      <category>csharp</category>
      <category>arrays</category>
      <category>programming</category>
    </item>
    <item>
      <title>5 Websites to Boost Your Coding and Master Algorithms 🚀</title>
      <dc:creator>Roberto Orozco</dc:creator>
      <pubDate>Sat, 06 Apr 2024 06:09:44 +0000</pubDate>
      <link>https://forem.com/robertoor/5-websites-to-boost-your-coding-and-master-algorithms-28od</link>
      <guid>https://forem.com/robertoor/5-websites-to-boost-your-coding-and-master-algorithms-28od</guid>
      <description>&lt;p&gt;If you've some experience as a developer, chances are you've wondered why you spent time learning about Big-O notation, complex algorithms, data structures, and more, especially if they don't seem directly applicable in your day-to-day coding.&lt;/p&gt;

&lt;p&gt;But let's face it, it is a reality that these seemingly abstract concepts are part of a lot of code interviews, and while you may not use them explicitly in every project, they influence the way you approach problems, design solutions, and write code.&lt;/p&gt;

&lt;p&gt;So, if you're preparing for technical interviews, or simply want to sharpen your programming prowess, these websites offer a wealth of resources to help you achieve your goals.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://leetcode.com/"&gt;LeetCode&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;LeetCode is a popular platform among software engineers for practicing coding problems. With a vast array of algorithmic challenges ranging from easy to hard, LeetCode provides an excellent opportunity to hone your problem-solving skills. The platform also offers mock interviews and company-specific challenges to help you prepare for real-world coding assessments.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://www.hackerrank.com/"&gt;HackerRank&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;HackerRank is another fantastic resource for improving your coding skills. It features challenges across various domains, including algorithms, data structures, artificial intelligence, and more. HackerRank also offers interview preparation kits for popular tech companies, making it a valuable tool for aspiring software engineers.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://www.codewars.com/"&gt;Codewars&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Codewars takes a unique approach to coding practice by gamifying the learning process. On Codewars, you can solve coding challenges called "kata" to earn ranks and honor. The platform supports multiple programming languages, allowing you to practice in your language of choice while competing with other users in a fun and engaging way.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://projecteuler.net/"&gt;Project Euler&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you're looking for a more mathematically-oriented challenge, Project Euler is the perfect platform for you. Project Euler offers a collection of challenging mathematical and computer programming problems that require innovative thinking and problem-solving skills. It's a great way to stretch your brain and improve your mathematical and coding abilities.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://exercism.org/"&gt;Exercism&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Exercism provides practice problems in various programming languages, making it an ideal platform for learning and practicing coding in your preferred language. The platform offers mentorship and feedback from experienced developers, allowing you to improve your coding skills through constructive criticism and guidance.&lt;/p&gt;

&lt;p&gt;These 5 websites offer valuable resources for improving your coding skills and mastering algorithms. The key is consistency: set a goal for the number of exercises to practice within a specific time frame, such as weekly, and stick to the plan. Create a routine that helps you develop this habit, for example, by solving one coding exercise before starting your day from Monday to Friday.&lt;/p&gt;

&lt;p&gt;This approach will help you improve and maintain a good level of proficiency in solving these types of problems, increasing your chances of excelling in your next coding interview&lt;/p&gt;

</description>
      <category>algorithms</category>
      <category>interview</category>
      <category>coding</category>
      <category>programming</category>
    </item>
    <item>
      <title>Temporal: Durable Execution ✨</title>
      <dc:creator>Roberto Orozco</dc:creator>
      <pubDate>Fri, 29 Mar 2024 20:37:10 +0000</pubDate>
      <link>https://forem.com/robertoor/temporal-durable-execution-4p4b</link>
      <guid>https://forem.com/robertoor/temporal-durable-execution-4p4b</guid>
      <description>&lt;p&gt;In the ever-evolving landscape of software engineering, staying ahead often means embracing new tools, frameworks and technology. Let’s take a look at Temporal, a durable execution implementation that not only simplifies the complexities of distributed systems but also revolutionizes the way developers handle workflow orchestration.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Durable Execution?
&lt;/h2&gt;

&lt;p&gt;To grasp the capabilities and use cases of Temporal, it is crucial to comprehend the concept of durable execution.&lt;/p&gt;

&lt;p&gt;Durable Execution refers to a concept in the realm of distributed systems where the state and progress of an ongoing execution are reliably preserved across potential failures or interruptions.&lt;/p&gt;

&lt;p&gt;This development abstraction preserves the application state so it can seamlessly migrate execution to a different machine.&lt;/p&gt;

&lt;p&gt;To understand it better, let’s consider an analogy, imagine you are writing a captivating novel, but suddenly the power goes out, and you lose all your progress. In a traditional setting, you’d have to start the story from the beginning, and you’ll end up with an inconsistent story since you’ll not remember everything. Now, consider durable execution as having a magical notebook that automatically saves your story after every sentence. Even if the power goes out or your computer crashes, you can pick up exactly where you left off, ensuring that your story unfolds seamlessly. In the realm of software, durable execution acts like this magical notebook, persistently recording the progress of tasks. Even if there are interruptions or failures, the system remembers the state of things, enabling a reliable and consistent narrative in the software’s functionality.&lt;/p&gt;

&lt;p&gt;By implementing durable execution, a system ensures the continued progress and integrity of a process, even in the face of unforeseen events such as node failures, network issues, or application errors.&lt;/p&gt;

&lt;p&gt;As you can imagine, the concept of durable execution is increasingly gaining traction in tandem with the evolving landscape of software product development. The prevailing trend leans towards the adoption of distributed systems, prompting numerous organizations to pivot away from monolithic architectures and embrace more distributed, microservices-oriented approaches.&lt;/p&gt;

&lt;p&gt;Distributed systems bring forth a myriad of challenges and complexities that demand thoughtful solutions. Therefore, the implementation of concepts such as durable execution becomes crucial for achieving success. This may be the reason why we have seen the market of durable execution solutions to dozens in the span of a few years.&lt;/p&gt;

&lt;h2&gt;
  
  
  Temporal Features
&lt;/h2&gt;

&lt;p&gt;Temporal provides a set of tools to manage and orchestrate tasks by offering features like durable timers, activity retries, and state management.&lt;/p&gt;

&lt;p&gt;Durable timers allow developers to schedule tasks that persist even if there are system failures, ensuring reliability in time-sensitive processes. You can set timers to wait for days, weeks, or months.&lt;/p&gt;

&lt;p&gt;Activities, representing units of work, can be retried automatically by Temporal in case of errors, improving fault tolerance. Temporal allows you to define exponential retry policies for Activities, so you don’t have to write retry logic into your application code. And your retry duration can be as long as needed, even months.&lt;/p&gt;

&lt;p&gt;The framework also manages the state of workflows, preserving the progress of ongoing tasks even during disruptions.&lt;/p&gt;

&lt;p&gt;Temporal offers SDKs for Go, Java, TypeScript, Python, and .NET, allowing you to choose the most suitable option for your team.&lt;/p&gt;

&lt;p&gt;Moreover, Temporal offers execution visibility, enabling you to scrutinize, replay, and rewind each execution, step by step.&lt;/p&gt;

&lt;p&gt;While Temporal and other durable execution models offer valuable features, they present challenges such as code constraints, the need for idempotency, version control considerations, and managing payload and history log sizes. Overcoming these challenges is essential to constructing a resilient and scalable application.&lt;/p&gt;

&lt;p&gt;You can read more about these challenges here: Common Pitfalls with Durable Execution Frameworks, like Durable Functions or Temporal | by Chris Gillum&lt;/p&gt;

&lt;h2&gt;
  
  
  Use Cases
&lt;/h2&gt;

&lt;p&gt;Temporal finds application across a diverse range of scenarios and isn’t confined to specific situations or problems. Nevertheless, here are a few examples of use cases to spark your creativity.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Workflow Orchestration in E-commerce: Temporal is an invaluable asset for e-commerce platforms, where complex workflows govern processes like order fulfillment, payment processing, and inventory management. By utilizing Temporal’s durable execution capabilities, developers can ensure the seamless orchestration of these intricate workflows. For instance, in the event of a temporary failure during payment processing, Temporal allows the system to gracefully recover and resume the transaction, preventing potential order inconsistencies and enhancing the overall reliability of the e-commerce platform.&lt;/li&gt;
&lt;li&gt;Healthcare Workflows: Healthcare systems involve intricate workflows, from patient admissions and treatment plans to billing and record-keeping. Temporal can play a crucial role in ensuring the continuity and reliability of these workflows. For instance, in a scenario where a healthcare application is coordinating various tasks, such as appointment scheduling and medical record updates, Temporal’s durable execution ensures that interruptions, such as server failures, do not compromise the overall process. The result is a resilient and fault-tolerant healthcare system that prioritizes patient care and data accuracy.&lt;/li&gt;
&lt;li&gt;Media and Content Processing: In the media industry, content creation and processing workflows can be extensive and resource-intensive. Temporal’s durable execution is beneficial in managing these workflows seamlessly. For example, during the creation and processing of multimedia content, Temporal ensures that tasks such as transcoding, editing, and distribution can withstand interruptions. This resilience allows media companies to deliver high-quality content without disruptions, even in the face of network failures or hardware issues.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Get Started
&lt;/h2&gt;

&lt;p&gt;Now that you know more about Temporal and the concept fo durable Now that you have gained insights into Temporal and the concept of durable execution, the next step is to dive in and begin experimenting with how you can enhance your software by incorporating these principles.&lt;/p&gt;

</description>
      <category>typescript</category>
      <category>temporal</category>
      <category>learning</category>
      <category>coding</category>
    </item>
    <item>
      <title>Flutter vs React Native</title>
      <dc:creator>Roberto Orozco</dc:creator>
      <pubDate>Fri, 12 Apr 2019 14:44:58 +0000</pubDate>
      <link>https://forem.com/robertoor/flutter-vs-react-native-3m1f</link>
      <guid>https://forem.com/robertoor/flutter-vs-react-native-3m1f</guid>
      <description>&lt;p&gt;Hi community! There are multiple multi-platform frameworks to develop mobile apps nowadays, but personally, I think the main battle will be between these two.&lt;/p&gt;

&lt;p&gt;What are your thoughts? Which one do you prefer and why?&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>reactnative</category>
      <category>flutter</category>
    </item>
    <item>
      <title>How to Make your First Open Source Contribution</title>
      <dc:creator>Roberto Orozco</dc:creator>
      <pubDate>Mon, 08 Apr 2019 19:37:59 +0000</pubDate>
      <link>https://forem.com/robertoor/how-to-make-your-first-open-source-contribution-1k9h</link>
      <guid>https://forem.com/robertoor/how-to-make-your-first-open-source-contribution-1k9h</guid>
      <description>&lt;p&gt;I believe that contributing to an open source project is essential for any developer, contributing is very rewarding and it brings many benefits for you as a developer.&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;Improve your skills&lt;/li&gt;
    &lt;li&gt;Find mentors and teach others&lt;/li&gt;
    &lt;li&gt;Grow your career&lt;/li&gt;
    &lt;li&gt;Learn&lt;/li&gt;
    &lt;li&gt;Impact&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are just a few of the perks and I'll not go deeper into the benefits of contributing to open source projects, I assume that anyone who's reading this article is aware of them and is trying to make a contribution.&lt;/p&gt;

&lt;p&gt;The truth is that it took me a long time to make my first contribution, far more I'd have liked to, I've been aware of Open Source for a long time and been wanting to contribute for almost a year. I know, contributing to open source can be intimidating and daunting so I'd like to share my experience and this little guide so many developers take the step earlier, overcome this fears and get started in the amazing world of Open Source.&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%2Fmedia2.giphy.com%2Fmedia%2F3o7abrH8o4HMgEAV9e%2Fgiphy.gif%3Fcid%3D3640f6095c06d2d8324c383749abb922" 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%2Fmedia2.giphy.com%2Fmedia%2F3o7abrH8o4HMgEAV9e%2Fgiphy.gif%3Fcid%3D3640f6095c06d2d8324c383749abb922" alt="afraid the phantom menace GIF by Star Wars"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This guide is intended for developers looking to contribute code but remember that code is just one of many ways you can contribute to open source projects.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;The Basics&lt;/h2&gt;

&lt;p&gt;Before anything I recommend to cover a few basic concepts you'll need to make your first contribution, I'm talking about the basic steps to make a contribution.&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;Fork the repository, clone it and set up your environment.&lt;/li&gt;
    &lt;li&gt;Create a branch for your edits.&lt;/li&gt;
    &lt;li&gt;Code and test.&lt;/li&gt;
    &lt;li&gt;Provide documentation of your contribution.&lt;/li&gt;
    &lt;li&gt;Submit a Pull Request&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I understand this process can be overwhelming, especially if you haven't done it before but there are plenty of tutorials and guides about this online.&lt;/p&gt;

&lt;p&gt;Here's a great GitHub repository, &lt;a href="https://github.com/firstcontributions/first-contributions" rel="noopener noreferrer"&gt;First Contributions&lt;/a&gt;, which guides you through the full process, and gives you the opportunity to apply it in a practice environment. It is very well documented and very easy to follow, it will help you gain the confidence you'll need for the real deal.&lt;/p&gt;

&lt;h2&gt;Pick a Project&lt;/h2&gt;

&lt;p&gt;Ok, now you need to find a project you'd like to contribute to, I believe it's important to select a project you genuinely are interested in, it's a huge satisfaction to be able to contribute to a mission you believe in.&lt;/p&gt;

&lt;p&gt;There are plenty of Open Source projects of many kinds so take your time and start looking, I'm pretty sure you are already using an open source project in your daily life and I think this is one of the best options since you'll surely already know the project and are familiar with the mission of it.&lt;/p&gt;

&lt;p&gt;Here are a few resources where you can explore open source projects.&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;&lt;a href="https://github.com/explore/" rel="noopener noreferrer"&gt;GitHub Explore&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://opensourcefriday.com/" rel="noopener noreferrer"&gt;Open Source Friday&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://www.firsttimersonly.com/" rel="noopener noreferrer"&gt;First Timers Only&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://www.codetriage.com/" rel="noopener noreferrer"&gt;CodeTriage&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://24pullrequests.com/" rel="noopener noreferrer"&gt;24 Pull Requests&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://up-for-grabs.net/" rel="noopener noreferrer"&gt;Up For Grabs&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://contributor.ninja/" rel="noopener noreferrer"&gt;Contributor-ninja&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://firstcontributions.github.io/" rel="noopener noreferrer"&gt;First Contributions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In my personal experience I choose &lt;a href="https://simplenote.com/" rel="noopener noreferrer"&gt;Simplenote&lt;/a&gt; for Android, Simplenote is the simplest way to take notes, a light, clean and free available for iOS, Android, Mac, Windows, Linux and the web supported by &lt;a href="https://automattic.com" rel="noopener noreferrer"&gt;Automattic&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;Pick One Issue&lt;/h2&gt;

&lt;p&gt;Now you need to find a bug/feature where you can help and you'll need patience for this, most probably you'll not find the perfect easy but meaningful bug/feature waiting for you, be prepared to spend some time reading through the bugs/features available, getting to know the problems and making sure you'll be able to help.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/tvGOBZKNEX0ac/giphy-downsized-large.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/tvGOBZKNEX0ac/giphy-downsized-large.gif"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Some repos make this task easier by using some tags for you to identify which issues could be a good fit like &lt;strong&gt;help wanted&lt;/strong&gt; and &lt;strong&gt;good first issue&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;Get the Context&lt;/h2&gt;

&lt;p&gt;Based on my experience you may be in need of additional information in order to be able to fix the issue you selected. Don't be afraid to ask but be patient, many projects have official communication channels so be sure to search for this in the repository docs. I'm pretty sure current contributors will be happy to help you.&lt;/p&gt;

&lt;h2&gt;Contribute&lt;/h2&gt;

&lt;p&gt;Now, you're all set to hack the project and contribute, once you've finished you'll need to open your Pull Request and follow it closely until it is merged and closed.&lt;/p&gt;

&lt;p&gt;Most probably you'll receive comments and requests, don't feel bad about them, that's the magic of open source, you'll learn and discuss the best way to do things and hopefully after a little back and forth your code will be merged and shipped into the next release.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/NEvPzZ8bd1V4Y/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/NEvPzZ8bd1V4Y/giphy.gif"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>beginners</category>
      <category>career</category>
    </item>
    <item>
      <title>Android: Splash Screen with Kotlin</title>
      <dc:creator>Roberto Orozco</dc:creator>
      <pubDate>Fri, 03 Aug 2018 18:18:43 +0000</pubDate>
      <link>https://forem.com/robertoor/android-splash-screen-with-kotlin-l57</link>
      <guid>https://forem.com/robertoor/android-splash-screen-with-kotlin-l57</guid>
      <description>&lt;p&gt;There are different opinions on whether having a splash screen on your Android application or not.&lt;/p&gt;

&lt;p&gt;Personally, I think splash screens are a good place where you can showcase your app's nice design and give your users a good first impression.&lt;/p&gt;

&lt;p&gt;So, this is how I've been implementing splash screens on my recent Android apps with Kotlin.&lt;/p&gt;

&lt;h2&gt;Static vs Animated&lt;/h2&gt;

&lt;p&gt;I've used both static and animated splash screens and here are some thoughts.&lt;/p&gt;

&lt;h3&gt;Static&lt;/h3&gt;

&lt;ul&gt;
    &lt;li&gt;Showed only in the launching of your app before onCreate() is called.&lt;/li&gt;
    &lt;li&gt;You're not wasting your users time.&lt;/li&gt;
    &lt;li&gt;Not intended to run operations while the splash screen is shown.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Animated&lt;/h3&gt;

&lt;ul&gt;
    &lt;li&gt;You can show a cool animation and custom design.&lt;/li&gt;
    &lt;li&gt;Flexibility to perform some operations while the animation finishes.&lt;/li&gt;
    &lt;li&gt;Users can get bored if the animation is useless or if it takes too long.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Static Android Splash Screen&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%2Fisscroberto.files.wordpress.com%2F2018%2F06%2Fone-breath-splash.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%2Fisscroberto.files.wordpress.com%2F2018%2F06%2Fone-breath-splash.gif" alt="one-breath-splash" width="1024" height="1024"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;&lt;strong&gt;1.&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;Create the drawable file that we will use as background in the entry activity, by using a background, the app will show it without having to inflate a layout file.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;h3&gt;2.&lt;/h3&gt;

&lt;p&gt;Create a theme in the styles file with no action bar that uses the splash drawable as the background to set it in the entry activity.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;h3&gt;3.&lt;/h3&gt;

&lt;p&gt;Set the new style as a theme for the splash activity in your app manifest.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;h3&gt;4.&lt;/h3&gt;

&lt;p&gt;Add the code to navigate to the next activity as soon as the app has finished loading.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;h2&gt;Animated Android Splash Screen&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%2Fisscroberto.files.wordpress.com%2F2018%2F06%2Fpower-nap-splash.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%2Fisscroberto.files.wordpress.com%2F2018%2F06%2Fpower-nap-splash.gif" alt="power-nap-splash" width="1024" height="1024"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When I use animated splash screens I like to keep showing the static part of the splash screen on the initialization so I repeat steps 1, 2 and 3 from above and just add the animation functionality.&lt;/p&gt;

&lt;h3&gt;4.&lt;/h3&gt;

&lt;p&gt;For the animated splash screen, we will inflate a layout with the element or elements we want to animate. In this case, I'm just animating a textview.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;h3&gt;5.&lt;/h3&gt;

&lt;p&gt;Now we need to modify the splash activity to enable the animation and perform some loading operations in the meantime. Here's how my splash activity looks like.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;That's it, please share your thoughts on Android splash screens and your comments on how to improve this implementation.&lt;/p&gt;

</description>
      <category>android</category>
      <category>kotlin</category>
      <category>learning</category>
    </item>
    <item>
      <title>Why Every Developer Should Create a Mobile App</title>
      <dc:creator>Roberto Orozco</dc:creator>
      <pubDate>Mon, 11 Jun 2018 15:44:10 +0000</pubDate>
      <link>https://forem.com/robertoor/why-every-developer-should-create-a-mobile-app-2e51</link>
      <guid>https://forem.com/robertoor/why-every-developer-should-create-a-mobile-app-2e51</guid>
      <description>&lt;p&gt;I love to develop mobile apps as a hobby, the first app I published was a very simple RSS client I built in college, It was for Windows Phone 7 and I uploaded it to the Windows Phone Marketplace.&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%2Fmedia1.giphy.com%2Fmedia%2Fkaq6GnxDlJaBq%2Fgiphy.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%2Fmedia1.giphy.com%2Fmedia%2Fkaq6GnxDlJaBq%2Fgiphy.gif" alt="confused girl GIF" width="292" height="323"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I know... My first app ever was destined to die 💀, and not only the first one, because the moment I saw in my dev dashboard that someone besides my mom had downloaded my app I went crazy and eventually I create another 4 apps for Windows Phone before I even get started with Android.&lt;/p&gt;

&lt;p&gt;I don't regret it at all to have put my time and effort into creating these apps. I learned huge when building them and also it took me to the very answer of why I think every developer should create a mobile app:&lt;/p&gt;

&lt;h1&gt;User Reviews&lt;/h1&gt;

&lt;p&gt;In one of this apps I got my first user review:&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%2Fisscroberto.files.wordpress.com%2F2018%2F04%2Freview.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%2Fisscroberto.files.wordpress.com%2F2018%2F04%2Freview.png" alt="review" width="748" height="177"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Yes, that is my first review ever, and as much as first it made me sad because donna didn't understand the purpose of my movie suggestions app, I've come to realize user reviews are the reason I create mobile apps and here are a few reasons why I find them so valuable.&lt;/p&gt;

&lt;h2&gt;Impact&lt;/h2&gt;

&lt;p&gt;User reviews give you a lot of useful information about your app and your users. It is the first indicator that your app is making an impact, either positive or negative in your user's lives, they're taking the time to write a review and express their experience while using your app. It feels much better when it's a good one.&lt;/p&gt;

&lt;h2&gt;Interaction&lt;/h2&gt;

&lt;p&gt;With user reviews, you're able to come close to your users and interact with them. You can offer support, ask follow-up questions or simply say thanks. With this interaction, you build a sense of community around your app.&lt;/p&gt;

&lt;h2&gt;Improvement&lt;/h2&gt;

&lt;p&gt;User reviews are about developing better software for your users, paying attention to your user's needs can impact your app bottom line and enables you to create a better product.&lt;/p&gt;

&lt;p&gt;Receiving user reviews feels great, it's amazing to know that there are people all around the world using your app and that it is making an impact on their lives. Take the improvement opportunity from the bad reviews and the joy and satisfaction of the good ones.&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%2Fisscroberto.files.wordpress.com%2F2018%2F04%2Fscreenshot_20180417-1225091.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%2Fisscroberto.files.wordpress.com%2F2018%2F04%2Fscreenshot_20180417-1225091.png" alt="Screenshot_20180417-122509" width="800" height="459"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>career</category>
    </item>
    <item>
      <title>One Breath - Kotlin and Breathing</title>
      <dc:creator>Roberto Orozco</dc:creator>
      <pubDate>Mon, 07 May 2018 21:46:37 +0000</pubDate>
      <link>https://forem.com/robertoor/one-breath---kotlin-and-breathing-3nkm</link>
      <guid>https://forem.com/robertoor/one-breath---kotlin-and-breathing-3nkm</guid>
      <description>&lt;p&gt;A few years ago I discovered meditation and mindfulness and I've been practicing it since then.&lt;/p&gt;

&lt;p&gt;As a side effect, I've been also paying attention to breathing. As I become more conscious about it I realize I was constantly breathing wrong. I didn't even know that was possible!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/aa9VQ6gg5wCBy/source.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/aa9VQ6gg5wCBy/source.gif" width="500" height="282"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I dived a little more into the subject and I found out that multiple factors such as stress and anxiety mess up with our natural way of breathing.&lt;/p&gt;

&lt;blockquote&gt;Breathing provides a gateway between mind and body.&lt;/blockquote&gt;

&lt;p&gt;Fortunately, the solution is quite simple. Resetting your natural breathing cycle can be done by performing a slow breathing exercise a couple times a day. A lot of benefits come with good breathing, just to mention a few:&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;Reduction of stress&lt;/li&gt;
    &lt;li&gt;Natural painkiller&lt;/li&gt;
    &lt;li&gt;Better sleep&lt;/li&gt;
    &lt;li&gt;Controls blood pressure&lt;/li&gt;
    &lt;li&gt;Increased energy level&lt;/li&gt;
    &lt;li&gt;Improves self-awareness&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Why not put this technique into an app? I wanted to explore Kotlin, so I created &lt;a href="https://play.google.com/store/apps/details?id=com.isscroberto.onebreath" rel="noopener noreferrer"&gt;One Breath&lt;/a&gt;, a very simple app that helps you recover your innate natural breathing with a simple slow breathing exercise.&lt;/p&gt;

&lt;p&gt;It has only one main screen where you can set a few preferences and start a new breathing session:&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;Sound. Enable sound feedback on inhaling and exhaling.&lt;/li&gt;
    &lt;li&gt;Duration. Select duration of the exercise, you can choose between 2, 5 and 10 minutes.&lt;/li&gt;
    &lt;li&gt;Vibration. Enable or disable vibration feedback on inhaling and exhaling.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once you've set up your settings just tap the dot in the center and the session will start.&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%2Fisscroberto.files.wordpress.com%2F2018%2F03%2Fscreenshot_20180212-001442.png%3Fw%3D1000" 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%2Fisscroberto.files.wordpress.com%2F2018%2F03%2Fscreenshot_20180212-001442.png%3Fw%3D1000" alt="Screenshot_20180212-001442.png" width="720" height="1280"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's all, please take a look at it 🙂 Leave a comment on how can I improve it and a rating on Play Store would be awesome.&lt;/p&gt;

&lt;p&gt;Check the &lt;a href="https://github.com/robertoissc/one-breath-android" rel="noopener noreferrer"&gt;repo&lt;/a&gt; and feel free to contribute.&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>android</category>
      <category>opensource</category>
    </item>
    <item>
      <title>One Movie - Exploring The Movie Database Api</title>
      <dc:creator>Roberto Orozco</dc:creator>
      <pubDate>Tue, 17 Apr 2018 01:00:22 +0000</pubDate>
      <link>https://forem.com/robertoor/one-movie---exploring-the-movie-database-api-1g4p</link>
      <guid>https://forem.com/robertoor/one-movie---exploring-the-movie-database-api-1g4p</guid>
      <description>&lt;p&gt;I don't know if I fit in the definition of &lt;em&gt;cinephile&lt;/em&gt;, but I really enjoy watching movies and so does my wife, we've been going to the movies on a weekly basis for around 4 years and we watch a couple more at home in our free time.&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%2Fi.giphy.com%2Fmedia%2FpUeXcg80cO8I8%2Fgiphy.webp" 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%2Fi.giphy.com%2Fmedia%2FpUeXcg80cO8I8%2Fgiphy.webp" width="267" height="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Because of this, the question: "What movie should we watch?" has become a too recurrent question for us so I did what any other software developer would do: I start coding.&lt;/p&gt;

&lt;p&gt;I found this really cool api right away: &lt;a href="https://api.themoviedb.org" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://api.themoviedb.org" rel="noopener noreferrer"&gt;https://api.themoviedb.org&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%2Fisscroberto.files.wordpress.com%2F2017%2F12%2Fmovie_logo.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%2Fisscroberto.files.wordpress.com%2F2017%2F12%2Fmovie_logo.png" alt="movie_logo" width="238" height="211"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A public api to explore the movie db with plenty of cool features and tons of information about millions of movies. Awesome!&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%2Fi.giphy.com%2Fmedia%2Fd2Z9QYzA2aidiWn6%2Fgiphy.webp" 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%2Fi.giphy.com%2Fmedia%2Fd2Z9QYzA2aidiWn6%2Fgiphy.webp" width="356" height="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I used the /discover endpoint, you can use it to discover movies sorted and filtered by many parameters like rating, votes, genres, etc. You can look at the specs &lt;a href="https://developers.themoviedb.org/3/discover/movie-discover" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;After a few hours exploring the api and a few days of coding on my free time I had &lt;a href="https://play.google.com/store/apps/details?id=com.isscroberto.onemovie" rel="noopener noreferrer"&gt;One Movie&lt;/a&gt;, a very simple app that gives you random movies for exactly that moment when are finding a hard time deciding which movie to watch and you need an app that decide for you.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://play.google.com/store/apps/details?id=com.isscroberto.onemovie" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fisscroberto.files.wordpress.com%2F2017%2F12%2Flogo_round.png" alt="logo_round" width="518" height="518"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So, this is what you get.&lt;/p&gt;

&lt;p&gt;The app takes you directly to the main screen where you automatically get a random movie, you can see some basic information about it as well as hit &lt;strong&gt;refresh&lt;/strong&gt; to get the next movie if you're not happy with the current one.&lt;/p&gt;

&lt;p&gt;Then there is the filter screen where you can narrow your search and it has the following options:&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;Popular&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Popularity is a very important metric in IMDB, it takes many parameters in consideration, such as, the number of votes and views for the day, the number of users who favorited the movie and added it to their watchlists, the release date, the number of votes, among others. &lt;a href="https://play.google.com/store/apps/details?id=com.isscroberto.onemovie" rel="noopener noreferrer"&gt;One Movie&lt;/a&gt; order the movies by popularity and take the top ones.&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;In Theatres&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Very simple. It filters movies with a release date less than 1 month old and with theatre release.&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;Year&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It filters movies with a release year equal or greater than the specified year.&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;Original Language&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It filters movies by the selected language.&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;Genre&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It filters movies limiting the search to movies that are within the selected genre. Feel like watching comedy? Horror? Romantic?&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;Vote&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It filters movies with a vote average equal or greater than the specified value.&lt;/p&gt;

&lt;p&gt;And, of course, &lt;a href="https://play.google.com/store/apps/details?id=com.isscroberto.onemovie" rel="noopener noreferrer"&gt;One Movie&lt;/a&gt; has a simple about screen. That's it.&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%2Fisscroberto.files.wordpress.com%2F2017%2F12%2Fscreenshot_20171226-222728.png%3Fw%3D586" 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%2Fisscroberto.files.wordpress.com%2F2017%2F12%2Fscreenshot_20171226-222728.png%3Fw%3D586" alt="Screenshot_20171226-222728.png" width="586" height="1041"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Take a look at it :) Leave a comment on how can I improve it and a rating on Play Store would be awesome.&lt;/p&gt;

&lt;p&gt;Check the &lt;a href="https://github.com/robertoissc/OneMovie-Android" rel="noopener noreferrer"&gt;repo&lt;/a&gt; and feel free to contribute.&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>android</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Why Study Software Engineering?</title>
      <dc:creator>Roberto Orozco</dc:creator>
      <pubDate>Fri, 06 Apr 2018 22:40:30 +0000</pubDate>
      <link>https://forem.com/robertoor/why-study-software-engineering-3ld2</link>
      <guid>https://forem.com/robertoor/why-study-software-engineering-3ld2</guid>
      <description>&lt;p&gt;The exact same question I was asking myself 8 years ago... I knew I was really into engineering and technology so the answer was quite simple back then: Sure, why not?&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%2Fmedia3.giphy.com%2Fmedia%2Fl41YkFEPPPorUbKsU%2Fgiphy.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%2Fmedia3.giphy.com%2Fmedia%2Fl41YkFEPPPorUbKsU%2Fgiphy.gif" alt="Originals thinking think hmm sure GIF" width="1024" height="1024"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The truth is... At that moment I was not aware of how much impact this decision would be, also, my decision was not very well founded, I'd never written a code line in my life and I did not know nothing about Software Engineering, however, things turned out well, I got in love️ with code and software ❤. I guess I was lucky 🍀.&lt;/p&gt;

&lt;p&gt;Nowadays I do have some reasons that I wish I could share with my younger me and I want to share them with the young (and not so young) people out there that are asking themselves this same question.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Create&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I've never pictured myself as a creative individual, however, as I was learning to code I realized that creativity and code are tied together. Being a Software Engineer allows you to materialize your ideas from virtually nothing (probably just a cup of coffee and your laptop), and share your creations with the entire world in a extremely easy way.&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%2Fmedia3.giphy.com%2Fmedia%2F3oz8xYfQd5358zpL0s%2Fgiphy.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%2Fmedia3.giphy.com%2Fmedia%2F3oz8xYfQd5358zpL0s%2Fgiphy.gif" alt="GIPHY Arts art artist create commission GIF" width="500" height="500"&gt;&lt;/a&gt;&lt;strong&gt;2. Life Quality&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It is one of the most happiest jobs in the world, many tech companies are famous because of their employees happiness and their organizational culture. You don't like companies? No problem! You have the opportunity of pursuing the life style that you're looking for, whichever it is. Top companies like &lt;a href="https://automattic.com/" rel="noopener noreferrer"&gt;Automattic&lt;/a&gt; (creators of &lt;a href="https://wordpress.com/" rel="noopener noreferrer"&gt;WordPress&lt;/a&gt;) are promoting a full remote environment, you can work from anywhere in the world: Your home, a coworking space, a hammock on an island, an RV around the world... your choice. Amazing, right?&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%2Fmedia0.giphy.com%2Fmedia%2F3o7qE2W20GvuyCHQe4%2Fgiphy.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%2Fmedia0.giphy.com%2Fmedia%2F3o7qE2W20GvuyCHQe4%2Fgiphy.gif" alt="Topshelf Records beach ocean computer download GIF" width="480" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Constant Learning&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;Intellectual growth should commence at birth and cease only at death. - Albert Einstein&lt;/blockquote&gt;

&lt;p&gt;Technology is evolving like crazy... Updates, new languages, new tools, new concepts, new challenges. There's so much going on, the only thing you can do is try to keep up with this evolution by learning, let your curiosity take control, trying to find better ways, different solutions to the challenges you shall find and adapt to this evolving environment. Learning is important and fun!&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%2Fi.giphy.com%2Fmedia%2F26ufdipQqU2lhNA4g%2Fgiphy.webp" 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%2Fi.giphy.com%2Fmedia%2F26ufdipQqU2lhNA4g%2Fgiphy.webp" width="200" height="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What am I missing here? A lot, I'm sure.&lt;br&gt;
Leave a comment and share your answer.&lt;/p&gt;

</description>
      <category>career</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
