<?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: Dominic Barajas</title>
    <description>The latest articles on DEV Community by Dominic Barajas (@santiago548).</description>
    <link>https://dev.to/santiago548</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%2F660057%2Fde24367f-2d97-4b12-b05a-1cf54ecae783.jpeg</url>
      <title>DEV Community: Dominic Barajas</title>
      <link>https://dev.to/santiago548</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/santiago548"/>
    <language>en</language>
    <item>
      <title>Exploring the Art of Defense: How to Detect and Thwart Social Engineering Attacks</title>
      <dc:creator>Dominic Barajas</dc:creator>
      <pubDate>Thu, 19 Oct 2023 01:47:15 +0000</pubDate>
      <link>https://dev.to/santiago548/mastering-the-art-of-defense-how-to-detect-and-thwart-social-engineering-attacks-14k3</link>
      <guid>https://dev.to/santiago548/mastering-the-art-of-defense-how-to-detect-and-thwart-social-engineering-attacks-14k3</guid>
      <description>&lt;p&gt;Technological advancements and increased connectivity have made our lives more convenient, cyber threats have also evolved, becoming more sophisticated and deceptive. Social engineering attacks, in particular, have become a substantial menace to cybersecurity. These attacks prey on human vulnerabilities rather than technical weaknesses, making them a challenging adversary. Let's unveil some of the various techniques attackers employ to deceive and manipulate individuals. and fill our toolkit with a robust set of defense strategies to recognize and thwart these bad actors.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Art of Deception: Unveiling Social Engineering Techniques
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Phishing: The Hook That Casts a Wide Net
&lt;/h3&gt;

&lt;p&gt;Phishing is one of the most prevalent social engineering techniques. Attackers disguise themselves as trustworthy entities, such as banks or familiar brands, and send emails or messages containing malicious links or attachments. These deceptions aim to extract sensitive information or deliver malware. To protect yourself:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Always be skeptical of unsolicited requests for personal information.&lt;/li&gt;
&lt;li&gt;Verify the sender's legitimacy through official channels, not just the contact details provided in the message.&lt;/li&gt;
&lt;li&gt;Hover over links to reveal the actual URL before clicking on them.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Pretexting: Crafting a Convincing Backstory
&lt;/h3&gt;

&lt;p&gt;Pretexting is a manipulative tactic where attackers create elaborate backstories to gain trust and access to sensitive information. They may pose as colleagues, government officials, or service providers. To stay safe:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Always verify the identity of anyone requesting confidential data.&lt;/li&gt;
&lt;li&gt;Cross-check the information they provide with official records.&lt;/li&gt;
&lt;li&gt;Follow a strict "need-to-know" policy, disclosing only what is essential.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Baiting: Temptation Lures You In
&lt;/h3&gt;

&lt;p&gt;Baiting attacks lure victims into compromising situations by offering something appealing, such as free software, movies, or music downloads. These temptations conceal malware or spyware, ready to infiltrate your system. Protect yourself by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Exercising caution when downloading files or software from unverified sources.&lt;/li&gt;
&lt;li&gt;Using reputable sources for your downloads.&lt;/li&gt;
&lt;li&gt;Keeping your devices updated with the latest security patches.&lt;/li&gt;
&lt;li&gt;Using tools like Virus Total to investigate URLs or files&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Building Resilience: Recognizing and Defending Against Social Engineering Attacks
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Skepticism as a Shield
&lt;/h3&gt;

&lt;p&gt;Skepticism is your first line of defense. Always question the legitimacy of unsolicited communications. If something seems too good to be true or raises even the slightest doubt, take a step back and investigate further.&lt;/p&gt;

&lt;h3&gt;
  
  
  Identity Verification
&lt;/h3&gt;

&lt;p&gt;Verifying the identity of the person or entity making a request is crucial. Utilize official contact details, double-check the information they provide, and don't hesitate to confirm their identity through separate channels if needed.&lt;/p&gt;

&lt;h3&gt;
  
  
  Ongoing Security Awareness Training
&lt;/h3&gt;

&lt;p&gt;Stay informed and vigilant through ongoing security awareness training. Cybersecurity is an ever-evolving field, and keeping up with the latest threats and defense strategies is essential to staying safe.&lt;/p&gt;

&lt;h2&gt;
  
  
  Empowerment through Knowledge
&lt;/h2&gt;

&lt;p&gt;The cornerstone of a resilient cybersecurity strategy is empowering individuals with the knowledge to recognize and defend against social engineering attacks. By being vigilant, verifying identities, and staying informed, we can collectively fortify our defenses and outsmart the cunning tactics employed by attackers.&lt;/p&gt;

&lt;p&gt;Social engineering attacks are an ever-persistent threat that can target anyone, from individuals to organizations. By understanding the tactics attackers use and adopting a proactive defense strategy, we can navigate the digital landscape with greater confidence. Remember, skepticism is your ally, identity verification is your safeguard, and knowledge is your armor against attacks. Stay informed, stay vigilant, and stay safe in the digital world.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>The Importance of Secure Coding: Best Practices for Developers</title>
      <dc:creator>Dominic Barajas</dc:creator>
      <pubDate>Sat, 07 Oct 2023 19:50:07 +0000</pubDate>
      <link>https://dev.to/santiago548/the-importance-of-secure-coding-best-practices-for-developers-2kgo</link>
      <guid>https://dev.to/santiago548/the-importance-of-secure-coding-best-practices-for-developers-2kgo</guid>
      <description>&lt;p&gt;In an era where software permeates nearly every aspect of our daily lives, the significance of secure coding practices cannot be overstated. Vulnerabilities in code have the potential to unleash a cascade of catastrophic consequences, including severe security breaches, data leaks, and the compromise of user privacy. We will explore the critical importance of secure coding and dive into essential best practices that developers should adhere to. By implementing these practices rigorously, developers can substantially reduce the risk of introducing vulnerabilities and enhance the overall security of their applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Input Validation: The First Line of Defense
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Robust input validation&lt;/strong&gt; serves as the cornerstone of secure coding. Inadequate validation of user inputs can pave the way for various attacks, such as SQL injection, cross-site scripting (XSS), and more. To fortify your application's defenses:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ANg_a1P3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i.stack.imgur.com/vqgdD.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ANg_a1P3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i.stack.imgur.com/vqgdD.jpg" alt="Input Validation Example" width="615" height="475"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scenario&lt;/strong&gt;: Imagine a simple login form where users enter their username and password. The application's code doesn't properly validate or sanitize user inputs, making it vulnerable to SQL injection.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Vulnerable Code (Before Input Validation)&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# SQL Query
&lt;/span&gt;&lt;span class="n"&gt;query&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"SELECT * FROM users WHERE username = '"&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;user_input_username&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="s"&gt;"' AND password = '"&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;user_input_password&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="s"&gt;"'"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Exploitation (SQL Injection)&lt;/strong&gt;:&lt;br&gt;
Suppose an attacker enters the following input for the username:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;' OR '1'='1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The query would then become:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;users&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;username&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;''&lt;/span&gt; &lt;span class="k"&gt;OR&lt;/span&gt; &lt;span class="s1"&gt;'1'&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'1'&lt;/span&gt; &lt;span class="k"&gt;AND&lt;/span&gt; &lt;span class="n"&gt;password&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'user_input_password'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this case, the injected SQL code &lt;code&gt;'1'='1'&lt;/code&gt; always evaluates to true, allowing the attacker to bypass authentication and potentially gain unauthorized access.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Use Whitelisting&lt;/strong&gt;: Employ a "whitelist" approach by explicitly defining the allowable inputs. This means that only known, specific values or patterns are accepted, rejecting anything else.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Parameterized Statements&lt;/strong&gt;: When dealing with databases, utilize parameterized queries. This method separates data from the query itself, preventing SQL injection attacks by design.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Sanitization&lt;/strong&gt;: Ensure that all user-generated content is thoroughly sanitized before display. Remove or encode special characters to mitigate the risk of XSS attacks.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;: Consider a user registration form. Implement input validation to check that the provided email address adheres to a valid format, contains no harmful characters, and is not already in use.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Secure Handling of Sensitive Data
&lt;/h3&gt;

&lt;p&gt;The secure handling of sensitive data is paramount for any application. This encompasses safeguarding user passwords, credit card information, and personal details.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Encryption&lt;/strong&gt;: Utilize strong encryption algorithms to protect data both at rest and in transit. TLS/SSL encryption should be a default for communication over the internet.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Salting and Hashing&lt;/strong&gt;: Store passwords securely by adding a unique salt to each one before hashing. Hashed passwords are more resistant to attacks.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LQ1oZPhT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://uploads-ssl.webflow.com/60658b47b03f0c77e8c14884/6256965282e9d1a5a5df6841_Password%2520Hashing.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LQ1oZPhT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://uploads-ssl.webflow.com/60658b47b03f0c77e8c14884/6256965282e9d1a5a5df6841_Password%2520Hashing.png" alt="Password Hashing Example" width="720" height="318"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scenario&lt;/strong&gt;: Storing user passwords securely is crucial. Without proper hashing and salting, passwords can be compromised.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Secure Password Storage&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Registering a new user
&lt;/span&gt;&lt;span class="n"&gt;salt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;generate_random_salt&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;hashed_password&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;hash&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;user_input_password&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;salt&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;store_salt_and_hash&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;username&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;salt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;hashed_password&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here, the password is salted (a unique random value is generated for each user) and then hashed before storage. Even if the database is compromised, attackers won't have access to plaintext passwords.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Data Minimization&lt;/strong&gt;: Collect and retain only the data that is absolutely necessary for your application's functionality. Avoid unnecessary data storage to minimize potential risk.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;: If your application requires user authentication, use bcrypt to hash and salt passwords before storing them in the database. This makes it exceedingly difficult for attackers to obtain plaintext passwords even if they compromise the database.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Proper Error Handling
&lt;/h3&gt;

&lt;p&gt;While error handling is an often overlooked aspect of security, it can inadvertently reveal valuable information to potential attackers. Secure coding involves error handling practices that are informative to developers but obfuscating to malicious actors.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6meDgsDI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rh29i67yz793ntd4fciv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6meDgsDI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rh29i67yz793ntd4fciv.png" alt="Custom Error Message Example" width="800" height="503"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scenario&lt;/strong&gt;: Consider an error during a login attempt.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Custom Error Message (Secure)&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Invalid username or password.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This message is informative enough for the user to understand what went wrong but doesn't disclose whether the username or password was incorrect. It prevents attackers from learning which part of the login credentials they guessed correctly.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Custom Error Messages&lt;/strong&gt;: Create custom error messages that provide minimal information to users. Detailed error messages are invaluable to developers during debugging but can be harmful if leaked to attackers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Log Management&lt;/strong&gt;: Implement robust log management to track and analyze errors. Ensure logs do not contain sensitive information and are securely stored.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Fail-Safe Mode&lt;/strong&gt;: Consider implementing a fail-safe mode that activates during critical errors. This mode should provide minimal information and gracefully handle errors without disclosing internal details.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;: If an authentication error occurs, display a generic message like "Invalid credentials" to the user, without revealing whether it was the username or password that was incorrect.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Use of Secure Coding Frameworks
&lt;/h3&gt;

&lt;p&gt;Leveraging established secure coding frameworks and libraries can be a significant advantage for developers. These frameworks encapsulate best practices, reducing the risk of vulnerabilities in your codebase.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Lh63lKNa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.contrastsecurity.com/hs-fs/hubfs/theme/owasp-logo-vert.png%3Fwidth%3D250%26height%3D213%26name%3Dowasp-logo-vert.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Lh63lKNa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.contrastsecurity.com/hs-fs/hubfs/theme/owasp-logo-vert.png%3Fwidth%3D250%26height%3D213%26name%3Dowasp-logo-vert.png" alt="OWASP Logo" width="250" height="213"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scenario&lt;/strong&gt;: You're developing a web application and want to ensure it follows secure coding practices.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OWASP (Open Web Application Security Project)&lt;/strong&gt;:&lt;br&gt;
OWASP provides a wealth of resources, including a list of the top 10 web application security risks. By following their guidance and utilizing their tools, you can proactively address common security issues in your application.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;OWASP&lt;/strong&gt;: Explore the Open Web Application Security Project (OWASP) for a wealth of valuable resources and tools to secure your application.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Security Libraries&lt;/strong&gt;: Utilize reputable security libraries and components for common security tasks. These libraries are maintained by experts and often undergo rigorous security testing.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Regular Updates&lt;/strong&gt;: Keep all frameworks and libraries up to date. Regular updates patch known vulnerabilities and are essential to maintaining a secure application.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;: If you are developing a web application, consider using a web framework like Ruby on Rails or Django, which include built-in security features and practices.&lt;/p&gt;

&lt;p&gt;In the constantly evolving landscape of software development, security must remain a top priority. Secure coding practices are not just about protecting user data; they also safeguard an organization's reputation and trustworthiness. By following these comprehensive best practices, developers can build applications with a robust security posture, significantly reducing the risk of security breaches and contributing to a safer digital world for all.&lt;/p&gt;

&lt;p&gt;Remember, security is an ongoing commitment, not a one-time effort. Stay vigilant, stay informed, and continuously enhance the security of your code to meet the ever-evolving challenges of today's digital landscape.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Navigating the Cybersecurity Landscape of Remote Work</title>
      <dc:creator>Dominic Barajas</dc:creator>
      <pubDate>Sat, 23 Sep 2023 20:00:35 +0000</pubDate>
      <link>https://dev.to/santiago548/navigating-the-cybersecurity-landscape-of-remote-work-omb</link>
      <guid>https://dev.to/santiago548/navigating-the-cybersecurity-landscape-of-remote-work-omb</guid>
      <description>&lt;p&gt;The shift towards remote work has revolutionized our work culture, offering flexibility and convenience. However, it has also ushered in a new era of cybersecurity challenges. Let's the security implications of remote work and see the challenges faced by individuals and organizations in maintaining a secure remote work environment.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;The Increased Reliance on Personal Devices and Home Networks&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;One of the fundamental changes from remote work is the increased reliance on personal devices and home networks. These environments may not offer the same level of security as corporate offices. To mitigate this risk do these things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Regular Software Updates:&lt;/strong&gt; Ensure all devices used for remote work are kept up-to-date with the latest security patches.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Strong Passwords:&lt;/strong&gt; Encourage the use of strong, unique passwords for all accounts and devices.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Antivirus and Firewall:&lt;/strong&gt; Install and regularly update antivirus and firewall software to protect against threats.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Risks of Public Wi-Fi Networks&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Remote work often involves connecting to public Wi-Fi networks, which can be convenient yet risky. Public Wi-Fi networks lack the security features found in corporate environments, making them a target for cybercriminals. To stay safe:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Use VPNs:&lt;/strong&gt; Virtual Private Networks (VPNs) create secure tunnels for data transmission, safeguarding your information on public networks.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Secure Remote Access Methods&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Understanding the various secure remote access methods is crucial. These include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;VPNs:&lt;/strong&gt; For secure connections to corporate networks.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Remote Desktop Protocols:&lt;/strong&gt; When you need to access your office computer remotely.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Cloud-Based Solutions:&lt;/strong&gt; Securely access and share files using cloud-based services.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Implementing Strong Authentication Measures&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Multi-Factor Authentication (MFA) is essential. It adds an extra layer of security by requiring users to provide multiple forms of identification before granting access.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Data Encryption: Protecting Confidentiality&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Data encryption is paramount. Encrypt data in transit and at rest using encryption protocols and tools to safeguard confidentiality.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;The Human Factor in Remote Work Security&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The human element plays a significant role in remote work security. Educate remote workers about common threats:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Security Awareness Training:&lt;/strong&gt; Teach employees to recognize phishing emails and social engineering attacks.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Shared Responsibility:&lt;/strong&gt; Foster a culture of security within remote teams, emphasizing shared responsibility for cybersecurity.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;The Challenge of Shadow IT&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;While we navigate the complex cybersecurity landscape of remote work, one particular challenge deserves special attention: Shadow IT. This term refers to the use of unauthorized and unmonitored software, applications, or devices within an organization. It often creeps into remote work environments, posing significant security risks.&lt;/p&gt;

&lt;p&gt;In remote work, employees might download and use their favorite productivity tools or communication apps without the IT department's knowledge. While these tools can enhance efficiency, they may also lack the rigorous security standards required by the organization.&lt;/p&gt;

&lt;p&gt;To address Shadow IT:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Policy Awareness:&lt;/strong&gt; Ensure remote employees know the company's IT policies and the risks associated with using unauthorized tools.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Provide Alternatives:&lt;/strong&gt; Offer approved, secure alternatives to popular consumer-grade apps to meet employees' needs while maintaining security standards.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Monitoring and Reporting:&lt;/strong&gt; Implement monitoring tools that can identify and report on the use of unauthorized software or devices. This proactive approach allows IT teams to respond swiftly.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Balancing the need for flexibility and innovation with security is essential. Recognizing and addressing Shadow IT is a crucial step in achieving this balance.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Solutions and Best Practices&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Here are practical solutions and best practices to enhance remote work security:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Endpoint Protection Software:&lt;/strong&gt; Install robust endpoint protection software to defend against malware and other threats.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Secure File Sharing and Collaboration Tools:&lt;/strong&gt; Choose secure tools to facilitate remote collaboration without compromising data security.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Regular Backups:&lt;/strong&gt; Backup critical data regularly to prevent data loss in the event of a security incident.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Incident Response Planning:&lt;/strong&gt; Develop a well-defined incident response plan to minimize the impact of potential security incidents.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In an era where remote work continues to evolve, staying ahead of cybersecurity threats is not an option; it's a necessity. This can only be done by both IT and Users working together to safeguard the digital workspace, embrace the benefits of remote work, and address the complexities of the modern work environment without compromising security.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Demystifying Malware: Types, Detection, and Prevention Techniques</title>
      <dc:creator>Dominic Barajas</dc:creator>
      <pubDate>Sat, 26 Aug 2023 17:15:55 +0000</pubDate>
      <link>https://dev.to/santiago548/demystifying-malware-types-detection-and-prevention-techniques-58cc</link>
      <guid>https://dev.to/santiago548/demystifying-malware-types-detection-and-prevention-techniques-58cc</guid>
      <description>&lt;p&gt;In today's digital landscape, the threat of malware looms large, underscoring the vital importance of comprehending its various forms and the means to combat them. Exploring the intriguing diversity of its types—viruses, worms, trojans, and ransomware. Moreover, we delve into the art of detection, unveiling the prowess of antivirus software and the ingenuity of behavior-based analysis. To cap it all off, we unveil practical prevention techniques, from the wisdom of regular software updates to the power of user education and the magic of secure browsing practices.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Web of Malware: Unmasking its Types
&lt;/h2&gt;

&lt;p&gt;Malware's ability to infiltrate our digital lives stems from a medley of methods:&lt;/p&gt;

&lt;p&gt;Free Applications or Software: The allure of free software can be a double-edged sword, leading us into the lair of malware, from pirated software to dubious cracks.&lt;br&gt;
Free File-Sharing Services: Torrents and peer-to-peer platforms can unwittingly spread malware, a shadow cast over the lure of free downloads.&lt;br&gt;
Removable Media: Innocent-seeming USB drives can harbor digital threats, reminding us that curiosity can be hazardous.&lt;br&gt;
Malicious Email Attachments: Phishing emails sneakily carry the seeds of malware, relying on our unsuspecting curiosity to plant their digital traps.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Malicious Tango: Navigating Notable Malware
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Ransomware:
&lt;/h3&gt;

&lt;p&gt;As a virtual extortionist, ransomware stealthily traverses your files, transforming them into impregnable vaults. It then holds your data hostage, demanding a cryptocurrency ransom in exchange for the decryption keys. It's a digital gambit where you're locked out until the ransom is paid.&lt;/p&gt;

&lt;p&gt;Example: &lt;a href="https://en.wikipedia.org/wiki/WannaCry_ransomware_attack"&gt;WannaCry&lt;/a&gt;&lt;br&gt;
In 2017, the WannaCry ransomware attack shook the world by exploiting a known Windows vulnerability, swiftly propagating and encrypting countless systems. Its global impact underscored the urgency of system updates and robust security practices. &lt;/p&gt;

&lt;h3&gt;
  
  
  Trojan:
&lt;/h3&gt;

&lt;p&gt;A Trojan masquerades as legitimate software, and when executed or downloaded opens the gates to attackers. This invader infiltrates without a trace, granting unauthorized access to your things.&lt;/p&gt;

&lt;p&gt;Example: &lt;a href="https://en.wikipedia.org/wiki/Emotet"&gt;Emotet&lt;/a&gt;&lt;br&gt;
a notorious Trojan, it takes the guise of a seemingly innocuous email attachment. Once triggered, it deploys additional malware, covertly pillaging sensitive information and granting remote control to malevolent entities.&lt;/p&gt;

&lt;h3&gt;
  
  
  Worm:
&lt;/h3&gt;

&lt;p&gt;a self-replicating malware that spreads to other computers, often utilizing network vulnerabilities for access. It infiltrates a host computer, scans for new targets, and continues this process as it spreads. Using recursive techniques and exploiting exponential growth, worms rapidly infect numerous computers, causing network harm and consuming bandwidth. This sets them apart from viruses that primarily damage files on a single computer.&lt;/p&gt;

&lt;p&gt;Example: &lt;a href="https://en.wikipedia.org/wiki/Conficker"&gt;Conficker&lt;/a&gt;&lt;br&gt;
also referred to as Downup, Downadup, and Kido, is a persistent computer worm focusing on Microsoft Windows. It leverages OS vulnerabilities and password attacks to spread, forming a botnet and stands out for its intricate use of advanced malware tactics. Infecting millions worldwide across 190+ countries.&lt;/p&gt;

&lt;h3&gt;
  
  
  Botnet:
&lt;/h3&gt;

&lt;p&gt;a set of compromised devices under the control of an unseen puppeteer, using the power of the mass of machines it wields that power for malicious ends—launching massive DDoS attacks or pilfering sensitive data.&lt;/p&gt;

&lt;p&gt;Example: &lt;a href="https://en.wikipedia.org/wiki/Mirai_(malware)"&gt;Mirai&lt;/a&gt;&lt;br&gt;
Mirai's reign as a malevolent botnet manifested through hijacking vulnerable Internet of Things (IoT) devices. Its orchestrators harnessed these devices to launch disruptive DDoS attacks.&lt;/p&gt;

&lt;h3&gt;
  
  
  Logic Bomb:
&lt;/h3&gt;

&lt;p&gt;A digital sleeper agent, a logic bomb rests dormant until the precise moment triggers its malicious payload. Unlike its explosive counterpart, this agent inflicts damage through calculated and timed releases of malevolent code.&lt;/p&gt;

&lt;p&gt;Example: &lt;a href="https://en.wikipedia.org/wiki/Stuxnet"&gt;Stuxnet&lt;/a&gt;&lt;br&gt;
Stuxnet, a highly sophisticated logic bomb and worm, was designed to target industrial control systems, particularly those in Iran's nuclear program. Its intricacies and targeted destruction highlighted the potential for logic bombs as digital saboteurs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Crypto Malware:
&lt;/h3&gt;

&lt;p&gt;Operating in the shadows, crypto-malware seizes your device's resources for cryptocurrency mining, harnessing its computing power to solve complex mathematical puzzles and contribute to the digital gold rush, all without your consent.&lt;/p&gt;

&lt;p&gt;Example: &lt;a href="https://www.trendmicro.com/vinfo/us/security/news/cybercrime-and-digital-threats/coinhive-miner-the-6th-most-common-malware"&gt;Coinhive&lt;/a&gt;&lt;br&gt;
Coinhive epitomizes this clandestine miner, utilizing visitors' CPU power without consent to mine cryptocurrency on compromised websites. The result: compromised user experience and covert enrichment for malicious actors.&lt;/p&gt;

&lt;h3&gt;
  
  
  Spyware:
&lt;/h3&gt;

&lt;p&gt;Imagine an unseen observer scrutinizing your every digital move. Spyware, tracking your digital footprint, scrutinizing your actions, and gathering sensitive information.&lt;/p&gt;

&lt;p&gt;Example: &lt;a href="https://en.wikipedia.org/wiki/FinFisher"&gt;FinFisher&lt;/a&gt;&lt;br&gt;
A commercial spyware suite serves as a tool for surveillance. Often utilized by governments and entities, it covertly monitors activities, captures keystrokes, and even exploits webcams and microphones.&lt;/p&gt;

&lt;h3&gt;
  
  
  Rootkit:
&lt;/h3&gt;

&lt;p&gt;A clandestine passage to your system's core, a rootkit manipulates functions and provides unauthorized access. Its actions occur beneath the surface, evading detection until it's too late.&lt;/p&gt;

&lt;p&gt;Example: &lt;a href="https://en.wikipedia.org/wiki/Sony_BMG_copy_protection_rootkit_scandal"&gt;Sony BMG Rootkit&lt;/a&gt;&lt;br&gt;
Sony BMG's ill-fated rootkit was meant for digital rights management but opened a vulnerability for attackers. Hidden from view, it provided unauthorized access and exposed the fine line between digital rights and digital threats.&lt;/p&gt;

&lt;h3&gt;
  
  
  Virus:
&lt;/h3&gt;

&lt;p&gt;Much like its biological namesake, a digital virus infiltrates, replicates, and alters your files, spreading its malicious essence. The infected files become agents of harm within interconnected systems.&lt;/p&gt;

&lt;p&gt;Example: &lt;a href="https://en.wikipedia.org/wiki/Melissa_(computer_virus)"&gt;Melissa&lt;/a&gt;&lt;br&gt;
A macro virus, propagated through infected email attachments. It spread through vulnerabilities in Microsoft Word and Outlook, inundating email servers and exemplifying the widespread nature of digital infection.&lt;/p&gt;

&lt;h3&gt;
  
  
  Potentially Unwanted Programs (PUPs):
&lt;/h3&gt;

&lt;p&gt;Uninvited guests often accompany legitimate programs. These PUPs may not harbor malicious intent, but their resource consumption disrupts smooth system operations.&lt;/p&gt;

&lt;p&gt;Example: &lt;a href="https://en.wikipedia.org/wiki/Conduit_toolbar"&gt;Conduit Toolbar&lt;/a&gt;&lt;br&gt;
The Conduit toolbar epitomizes the unwelcome hitchhiker—bundled with legitimate software, it redirected searches and bogged down systems. A cautionary tale about reading agreements and embracing discernment.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fileless Virus:
&lt;/h3&gt;

&lt;p&gt;A fileless virus resides exclusively in your system's memory, evading traditional security measures. Its insidious nature defies detection, making it a formidable adversary.&lt;/p&gt;

&lt;p&gt;Example: &lt;a href="https://nordvpn.com/cybersecurity/glossary/poweliks/"&gt;Poweliks&lt;/a&gt;&lt;br&gt;
Poweliks, a stealthy fileless malware, enters via malicious attachments or websites. Operating from memory, it utilizes scripting engines like PowerShell, rendering its presence virtually invisible while executing harmful actions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Command and Control:
&lt;/h3&gt;

&lt;p&gt;In the digital symphony, the Command and Control (C&amp;amp;C) server conducts the malicious ballet. It orchestrates malware behavior, akin to a marionette's strings, dictating actions from afar.&lt;/p&gt;

&lt;p&gt;Example: &lt;a href="https://en.wikipedia.org/wiki/Gameover_ZeuS"&gt;GameOver Zeus&lt;/a&gt;&lt;br&gt;
GameOver Zeus, a sophisticated botnet, masterminded widespread banking fraud. It controlled compromised computers, exploiting them to pilfer banking credentials and enabling large-scale financial theft—a stark reminder of network monitoring's significance.&lt;/p&gt;

&lt;h3&gt;
  
  
  Keyloggers:
&lt;/h3&gt;

&lt;p&gt;Envision a virtual scribe meticulously recording your keystrokes. Keyloggers, these surreptitious chroniclers, capture digital conversations, credentials,&lt;/p&gt;

&lt;p&gt;Example: &lt;a href="https://en.wikipedia.org/wiki/Zeus_(malware)"&gt;Zeus Trojan (Zbot)&lt;/a&gt;&lt;br&gt;
The Zeus Trojan, also known as Zbot, is an infamous keylogging malware that materialized in the digital landscape around 2007. Unlike a typical artist's muse, Zeus was far from benign—it targeted financial institutions and their patrons with a voracious appetite for sensitive data.&lt;/p&gt;

&lt;p&gt;these are just a cursory overlook at some of the most well know examples of these malware attacks. &lt;/p&gt;

&lt;h2&gt;
  
  
  Effective Detection Methods
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Antivirus Software
&lt;/h3&gt;

&lt;p&gt;The Guardian of Your Digital Realm&lt;/p&gt;

&lt;p&gt;In the battle against malware, antivirus software stands as the sentinel, ceaselessly guarding your digital dominion. This software scans your files and applications for telltale signs of malicious code, working tirelessly to identify and eliminate threats.&lt;/p&gt;

&lt;p&gt;One of the primary tools in an antivirus software's arsenal is signature-based detection. It operates by comparing known patterns of malicious code—signatures—against your files. While effective against recognized threats, its Achilles' heel lies in its inability to recognize new or previously unseen malware.&lt;/p&gt;

&lt;p&gt;Heuristics steps in where signature-based detection falls short. This approach doesn't rely on exact matches but rather examines files for behaviors that resemble those of malware. In a digital game of cat and mouse, heuristics detects suspicious activities and flags potential threats, offering a broader scope of protection.&lt;/p&gt;

&lt;p&gt;Behavior-based analysis takes a more intricate route to malware detection. Rather than scrutinizing files, it studies how software behaves—how it interacts with your system and other applications. If a program exhibits anomalous behavior, such as attempting unauthorized access or modifying files, behavior-based analysis sounds the alarm. The power of behavior-based analysis lies in its adaptability. It can detect both known and unknown threats, making it a potent weapon against the ever-evolving world of malware. This approach also resists evasion tactics used by some malware strains, as they can't camouflage their behavior as easily as their code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Practical Prevention Techniques
&lt;/h2&gt;

&lt;h4&gt;
  
  
  Regular Software Updates
&lt;/h4&gt;

&lt;p&gt;Regular software updates are akin to fortifying the walls of your digital fortress. These updates aren't just about adding features; they often patch security vulnerabilities that malicious actors exploit. Neglecting updates leaves your system vulnerable to attacks that prey on known weaknesses.&lt;/p&gt;

&lt;p&gt;creating or turning on an automated Update Process.&lt;br&gt;
Staying current with software updates can be a chore, but automation comes to the rescue. Many operating systems and applications allow you to automate updates, ensuring your defenses remain steadfast without interrupting your workflow.&lt;/p&gt;

&lt;h4&gt;
  
  
  User Education
&lt;/h4&gt;

&lt;p&gt;User education is a cornerstone in the art of preventing malware. By educating users about common social engineering tactics—like phishing emails and deceptive downloads—you give them the tools to discern genuine opportunities from digital pitfalls. This doesn't mean overwhelming users with technical jargon. Instead, employ relatable examples and scenarios. This empowers users to recognize potential threats and make informed decisions that bolster their digital safety.&lt;/p&gt;

&lt;h4&gt;
  
  
  Secure Browsing Practices
&lt;/h4&gt;

&lt;p&gt;The vast expanse of the internet is full of beauty and danger. Secure browsing practices are your compass, guiding you away from treacherous waters. Stick to well-known, reputable websites, and avoid clicking on suspicious links or ads that promise too-good-to-be-true offers. Enhance your browsing experience with security-focused tools and extensions. These add-ons can block malicious ads, prevent tracking, and provide an extra layer of defense against digital pitfalls.&lt;/p&gt;

&lt;p&gt;In the intricate dance between users and malicious actors, understanding malware types, detection methods, and prevention techniques becomes a powerful tool. By grasping the intricacies of the digital world's malevolent side, you empower yourself to navigate with caution and knowledge. From the vigilant eyes of antivirus software to the wisdom of regular updates, the potency of behavior-based analysis, and being suspicious of links and files can keep your digital security fortified. Remember, education is your ally, and secure practices are your shield protecting you as you traverse the digital realm. Embrace these insights, make them your own, and build a safer online experience for yourself and those around you.&lt;/p&gt;

</description>
      <category>cybersecurity</category>
      <category>security</category>
      <category>hacking</category>
    </item>
    <item>
      <title>Embracing the Cybersecurity Journey: From Software Engineering to a New Frontier</title>
      <dc:creator>Dominic Barajas</dc:creator>
      <pubDate>Thu, 25 May 2023 02:37:20 +0000</pubDate>
      <link>https://dev.to/santiago548/embracing-the-cybersecurity-journey-from-software-engineering-to-a-new-frontier-1ffl</link>
      <guid>https://dev.to/santiago548/embracing-the-cybersecurity-journey-from-software-engineering-to-a-new-frontier-1ffl</guid>
      <description>&lt;p&gt;Hey there! As a software engineer with over a year of experience, I've recently taken a leap into the thrilling world of cybersecurity. In this blog post, I want to share my personal journey, what motivated me to make this switch, and the exciting steps I'm taking to dive into this fascinating field. So, grab a cup of coffee and join me as we explore how a cool stipend for continued education and my unquenchable curiosity led me to enroll in an awesome online bootcamp offered the university of boulder Colorado. Trust me, this program has already got me hooked with its mix of expert-led lectures, hands-on labs, and tough challenges!&lt;/p&gt;

&lt;p&gt;After a year and some change at work I've been comfortably cruising through life as a software engineer, but deep down, I've always had this itch for cybersecurity. The only problem was that my busy workload kept pushing it to the backburner. But guess what? Fate smiled upon me when my company offered a generous stipend for continued education. It was like a neon sign pointing me towards my cyber destiny!&lt;/p&gt;

&lt;p&gt;Okay, so buckle up, because this bootcamp I found is the real deal. Imagine sitting in on lectures delivered by some seriously knowledgeable instructors who eat, sleep, and breathe cybersecurity. From one of them originally setting up the first network and internet for the FBI, to another working as a penetration tester consultant who has worked trying to get into facility's at high level companies. These folks are the Jedi Masters of the digital realm, and they know how to make even the most complex concepts feel like a breeze. Seriously, their real-world expertise adds an extra layer of awesomeness to the whole experience.&lt;/p&gt;

&lt;p&gt;Now, here's where things get hands-on and exciting! The bootcamp isn't just about passively absorbing information. Oh no, my friend. They take what we learn in those lectures and throw us into practical labs where we get to apply it to real-world situations. It's like going from theory to action in the blink of an eye. I mean, who doesn't love getting their hands dirty and seeing how things work in the wild?&lt;/p&gt;

&lt;p&gt;Now, let's talk about the most thrilling part—the challenges. These are the things we do on our own. Typically no instructor safety net.  They throw us into real-world scenarios, testing our skills, creativity, and problem-solving abilities. It's like stepping into a virtual battlefield, armed with our newfound knowledge. I gotta admit, it's equal parts nerve-wracking and exhilarating. These challenges have a way of making us think like hackers, but with good intentions, of course.&lt;/p&gt;

&lt;p&gt;As I continue my journey into the world of cybersecurity, I can't help but feel a surge of excitement and anticipation. This new direction combines my passion for technology with my deep-rooted desire to protect digital systems and data. Every day, I delve deeper into the complexities and importance of cybersecurity, and with each step, my enthusiasm grows.&lt;/p&gt;

&lt;p&gt;I can't wait to see where this path takes me. As I gain a deeper understanding of the intricacies of cybersecurity, I'm eager to contribute to this ever-evolving field. From defending against sophisticated cyber threats to safeguarding sensitive information, my mission is to make a positive impact and ensure a safer digital landscape for all.&lt;/p&gt;

&lt;p&gt;Transitioning from software engineering to cybersecurity has been an invigorating decision. The opportunity to pursue continued education, combined with my unyielding passion for all things cyber, has propelled me into this thrilling new frontier. Through the online bootcamp I'm currently enrolled in, I'm acquiring the knowledge, skills, and practical experience necessary to thrive in this exciting field.&lt;/p&gt;

&lt;p&gt;So, my fellow adventurers, join me on this journey. Embrace the challenges, broaden your horizons, and let's make a mark in the realm of cybersecurity together. Remember, the path to success is often forged by stepping out of our comfort zones and embracing new opportunities. Stay tuned for more updates as I navigate through this captivating world!&lt;/p&gt;

</description>
      <category>cybersecurity</category>
      <category>beginners</category>
      <category>security</category>
      <category>learning</category>
    </item>
    <item>
      <title>Typescript and the Force</title>
      <dc:creator>Dominic Barajas</dc:creator>
      <pubDate>Thu, 04 Nov 2021 19:03:48 +0000</pubDate>
      <link>https://dev.to/santiago548/typescript-and-the-force-555d</link>
      <guid>https://dev.to/santiago548/typescript-and-the-force-555d</guid>
      <description>&lt;p&gt;I have recently been tasked with a coding challenge to utilize the &lt;a href="https://swapi.dev" rel="noopener noreferrer"&gt;Stawars API&lt;/a&gt; to display a list of characters from the API as well as a the information provided for each character. the code was provided by the possible employer for a super rad company that I am hoping to land a junior role with. I was a little iffy at first as its a vertical I had ever anticipated working in, but after talking with there head engineer I felt like we really hit it off and how he described the way they set up their teams as well as continue to offer stipend for learning and developing was a big draw!&lt;/p&gt;

&lt;p&gt;to the challenge though the first part was pretty simple they provided some code that made an fetch request to the API cool cool I remember doing API fetch request although its been a while since I have for the most part been building my own APIs. but wait... what's this?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; React.useEffect(() =&amp;gt; {
    fetchJson&amp;lt;{ results: PersonType[] }&amp;gt;
("people").then((peopleResponse) =&amp;gt;

      setPeople(peopleResponse.results)
    );
  }, []);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;useEffect okay that I know arrow function fetchJSON ok that's some type of method wait PersonType... uhh. Well I knew it was coming as GitHub has posted its stats TypeScript is one of the most prolific languages being used to date due to its static types, and debugging prowess once set up. As well as its much easier on ramping if you are a JavaScript user. from last years 2020 GitHub &lt;a href="https://octoverse.github.com/" rel="noopener noreferrer"&gt;state of the octoverse&lt;/a&gt; it was number 4&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%2Fuploads%2Farticles%2F6upd5siejh1n28ruxtbp.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%2Fuploads%2Farticles%2F6upd5siejh1n28ruxtbp.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I have also noticed a trend in more and more places I have been applying that a willingness to learn TS is a bonus for lots of compnaies.&lt;/p&gt;

&lt;p&gt;well okay I have never used TS or looked into it other then a brief overview with a friend who is prolific with it. I had some time to get the project in, but with other applications and interviews not as much as I would have liked.&lt;/p&gt;

&lt;p&gt;so in a little under 2 days I was able to do enough research to get about 80% of the tasks required complete. the first task was to dispaly the other information for the fetched characters. with that I searched around looking at all the files provided finding in the src folder at the top level a &lt;code&gt;type.ts&lt;/code&gt; file&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;export interface PersonType {
  name: string
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;it had declaration for the PersonType a name that was a string. ok from some deduction I should be able to add more things so I updated it looking at the JSON data through a console log of what the data being provided from the API and changed the file to look like so.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;export interface PersonType {
  name: string
  height: string
  mass: string
  hair_color: string
  skin_color: string
  eye_color: string
  birth_year: string
  gender: string
  homeworld: string 
  films: string
  species: string
  vehicles: string
  starships: string
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I figured everything was a string for now and I could update it later if need be. I made some modifications to the JSX/TSX for the person being displayed an wooh hooh all the data was being presented. hmm but the films, startships and vehicles where showing on one line. okay lets map to make a list. huh cant edit type string with map. okay research time. I spent some time figuring out why I couldnt map out each string I console logged. it is in an array but its saying its a string?!?! &lt;/p&gt;

&lt;p&gt;after more reaserch I found out I needed to modify my types as TS is a strict language similar to Java or C++ i needed to make sure my tpes were correct.&lt;/p&gt;

&lt;p&gt;I needed to add the empty [] to each type that was an array to let it know that these strings were an array. a simple mistake, but boom some updating to this.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;export interface PersonType {
  name: string
  height: string
  mass: string
  hair_color: string
  skin_color: string
  eye_color: string
  birth_year: string
  gender: string
  homeworld: string 
  films: string[]
  species: string
  vehicles: string[]
  starships: string[]
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and voila I could now map each one. hurray! &lt;/p&gt;

&lt;p&gt;next step was to add a functionality for a user to search the list by typing in the characters name. I needed to find the perfect place to build it out and to me it made sence in the &lt;code&gt;People.tsx&lt;/code&gt; file as that was where each Person was being set in state. I utilized a filter function with &lt;code&gt;useState()&lt;/code&gt; making my const the &lt;code&gt;[query, setQuery]&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function People() {
  const [people, setPeople] = React.useState&amp;lt;PersonType[]&amp;gt;([]);
  const [query, setQuery] = useState(""); 

  React.useEffect(() =&amp;gt; {
    fetchJson&amp;lt;{ results: PersonType[] }&amp;gt;("people").then((peopleResponse) =&amp;gt;
      setPeople(peopleResponse.results)
    );
  }, []);

  return (
    &amp;lt;div&amp;gt;
      &amp;lt;div className="searchContainer"&amp;gt;
        &amp;lt;input
          className="searchInput"
          placeholder="Search By Name"
          onChange={(event) =&amp;gt; setQuery(event.target.value)}
        /&amp;gt;
      &amp;lt;/div&amp;gt;

      {people
        .filter((person) =&amp;gt; {
          if (query === "") {
            return person;
          } else if (person.name.toLowerCase().includes(query.toLowerCase())) {
            return person;
          }
        })
        .map((person) =&amp;gt; (
          &amp;lt;Person person={person} /&amp;gt;
          ))}
    &amp;lt;/div&amp;gt;
  );
}

export default People;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I created a container and input to allow me to add CSS later. then filtering through my list of people if the search bar was empty it would return the list if it started to be typed in it would convert everything to lowercase to make it easier on both the typed information and the names on the list then on screen would update to return that matching query. No need to hit submit I wanted it to lie filter to make less work on the user and to make a cooler looking functioning search bar. I then added the map function after the filter to make sure that it still showed on the list all the People.&lt;/p&gt;

&lt;p&gt;After that adding some CSS and &lt;code&gt;&amp;lt;fieldset&amp;gt;&lt;/code&gt; tags and the like I made it look all shiny and nice. giving it a real Starwars vibe&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%2Fuploads%2Farticles%2Fbup0vl7mpeh0v5pvtx79.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%2Fuploads%2Farticles%2Fbup0vl7mpeh0v5pvtx79.png" alt="starwars app"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The last thing I wasn't able to do due to time. Was to get the secondary information as in films, starships, and vehicles. through the API they were linked as a URL to another resource with its own attributes as you can see in the image above.&lt;/p&gt;

&lt;p&gt;I have a time setup to do some pair coding and hopefully we can get through that as I haven't been able to research it on my current job hunt schedule this week.&lt;/p&gt;

&lt;p&gt;I will update with that functionality either with their help or when I have time to research later next week!&lt;/p&gt;

</description>
      <category>typescript</category>
      <category>beginners</category>
      <category>react</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>Applying to the API for a job with POST and Postman</title>
      <dc:creator>Dominic Barajas</dc:creator>
      <pubDate>Thu, 28 Oct 2021 19:34:31 +0000</pubDate>
      <link>https://dev.to/santiago548/applying-to-the-api-for-a-job-with-post-and-postman-2ko8</link>
      <guid>https://dev.to/santiago548/applying-to-the-api-for-a-job-with-post-and-postman-2ko8</guid>
      <description>&lt;h1&gt;
  
  
  What I used
&lt;/h1&gt;

&lt;p&gt;I remember from a recent tech convention I went to we used Postman to do a quick API call to reverse engineer the dominos pizza app. since this is a much more simpler thing and I have an account made with Postman I will be using it for this POST request to applying for a job at Plaid.&lt;/p&gt;

&lt;p&gt;I wanted to try and stand out a little more than the traditional applicant and thought it was a neat way to send my info to them.&lt;/p&gt;

&lt;h2&gt;
  
  
  HOW TO
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;After creating an account &lt;a href="https://www.postman.com/"&gt;Postman&lt;/a&gt; you will be on your home page you will see a "Get Started with Postman" the first box will &lt;strong&gt;Start with something new&lt;/strong&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---lr8HqJJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i8zgns9apj47jpvt5yhc.png" alt="HTTP request" width="710" height="643"&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;click on the &lt;strong&gt;Create New link&lt;/strong&gt; a box will pop up with a few options the first being HTTP request.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MWLbWHhW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/52o5dmo4gpw3jrhbtqaf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MWLbWHhW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/52o5dmo4gpw3jrhbtqaf.png" alt="create new" width="800" height="526"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;after clicking on that go to the dropdown to change the GET to a POST request then input the URL they gave you to to their APIs endpoint. &lt;br&gt;
below where you entered the endpoint will be a list of things like below. &lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PATvgzh_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cu5zkatucnnw13g1c2xp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PATvgzh_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cu5zkatucnnw13g1c2xp.png" alt="Body tab" width="780" height="141"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;find the &lt;strong&gt;Body&lt;/strong&gt; tab click in the circle for &lt;strong&gt;raw&lt;/strong&gt; and then to the right of the GraphQL circle is a dropdown. since they want it in a JSON object change the dropdown to JSON and copy paste their example from the application site if provided. this was the copy provided by Plaid I used. &lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8T4KHjmr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zhym5oc1esjcsokfbd4y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8T4KHjmr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zhym5oc1esjcsokfbd4y.png" alt="JSON Object" width="800" height="860"&gt;&lt;/a&gt;&lt;br&gt;
and what I entered into that body tab&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rVJDhBlN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8pyqgqj5sni45gms82u3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rVJDhBlN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8pyqgqj5sni45gms82u3.png" alt="sample JSON object" width="800" height="299"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;after that just hit the big blue send button and you should get a response back like the one I received below!&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--t0d7RveR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7ifh73e5exa36mx8ecz0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--t0d7RveR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7ifh73e5exa36mx8ecz0.png" alt="API Response" width="800" height="185"&gt;&lt;/a&gt;&lt;br&gt;
and with those few easy steps and Postman you've applied to their API with a POST request. Not to difficult but a great little way companies have been testing people out before you even talk to someone.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>api</category>
      <category>programming</category>
      <category>beginners</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>First Foray into UNITY with a 2D microgame</title>
      <dc:creator>Dominic Barajas</dc:creator>
      <pubDate>Thu, 21 Oct 2021 22:28:43 +0000</pubDate>
      <link>https://dev.to/santiago548/first-foray-into-unity-with-a-2d-microgame-bf</link>
      <guid>https://dev.to/santiago548/first-foray-into-unity-with-a-2d-microgame-bf</guid>
      <description>&lt;p&gt;I am starting to take the first steps into indie game development by going down the Unity path, with lots of tutorials and documentation to help me learn. Fortunately, Unity has an abundance of resources available. This was one of the reasons I selected Unity over other options.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vwhih-M9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r3wmgnxgh9sdxa9qbiab.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vwhih-M9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r3wmgnxgh9sdxa9qbiab.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
 &lt;br&gt;
I decided to go down the Unity learning path and develop my first microgame. There are a few reasons why I chose to start with the 2d platformer. I've been playing a lot of 2D games on my switch and most of them are metroidvania-style games.&lt;/p&gt;

&lt;p&gt;the description below from the linked Metoidvania page&lt;br&gt;
&lt;a href="https://en.wikipedia.org/wiki/Metroidvania"&gt;wikipedia page on Metroidvania&lt;/a&gt;&lt;br&gt;
Metroidvania is a subgenre of action-adventure video games. The term is a portmanteau of the names of the video game series Metroid and Castlevania, with games in the genre borrowing from both series. Typically based on two-dimensional, sidescrolling platform gameplay, Metroidvania games feature a large interconnected world map the player can explore, though access to parts of the world is often limited by doors or other obstacles that can only be passed once the player has acquired special items, tools, weapons, abilities, or knowledge within the game. Acquiring such improvements can also aid the player in defeating more difficult enemies and locating shortcuts and secret areas, and often includes retracing one's steps across the map. Through this, Metroidvania games include tighter integration of story and level design, careful design of levels and character controls to encourage exploration and experimentation, and a means for the player to become more invested in their player character through role-playing game elements.&lt;/p&gt;

&lt;p&gt;The end goal is to create my vision of that style. This is how I began. The no-code demo served as an introduction to the editor and was incredibly thorough.&lt;/p&gt;

&lt;p&gt;This tutorial showed you how to navigate the editor. First, it explained some very basic navigation methods. Then it showed you how to use the assets by adding in enemies or updating the character's speed to move faster change the color. Add other elements to the platform around the level you were creating. ending with letting you roam free with what you learned to edit the "Scene" as they called it to really see what you could make.&lt;/p&gt;

&lt;p&gt;I added in a few larger enemies, I moved some assets around to make some very difficult platforming elements towards the end. And experimented with my first-level design. I was really getting into it and loved how simple it was. it really dragged me in and showed me how powerful the editor was at such a basic level. It made me excited to look more in-depth and begin to code my own functionalities and game later on.&lt;/p&gt;

&lt;p&gt;Because I have a software engineering background, I decided to go down both The "Unity Essentials" and "Junior Programmer" paths in order to get a jump on my learning so I can develop faster. Since UnityScript and JavaScript are no longer supported, I will be developing in C#.&lt;/p&gt;

&lt;p&gt;Despite hearing horror stories about C#, I know my current skills will help me develop something compelling! I am interested in learning a new language and platform.&lt;/p&gt;

&lt;p&gt;for now, I will follow these two paths and next update will see what I can create!!&lt;/p&gt;

&lt;p&gt;I recommend anyone wanting to learn to really go and check out the&lt;/p&gt;

&lt;p&gt;&lt;a href="https://learn.unity.com/pathway/unity-essentials"&gt;Unity Essentials Page&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;or&lt;/p&gt;

&lt;p&gt;&lt;a href="https://learn.unity.com/pathway/junior-programmer/?tab=skills"&gt;Unity Junior Programmer Page&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To learn more, dive in. The amount of information provided in the videos, documentation, and lessons has really impressed me.&lt;/p&gt;

&lt;p&gt;Let me know some of yall's unity stories! Tell me why you use it, or why you don't. The wins and the struggles. and let's create a Unity group!&lt;/p&gt;

&lt;p&gt;Happy coding! &lt;/p&gt;

</description>
      <category>unity2d</category>
      <category>indygamedev</category>
      <category>unity3d</category>
      <category>gamedev</category>
    </item>
    <item>
      <title>Collaborate across the states</title>
      <dc:creator>Dominic Barajas</dc:creator>
      <pubDate>Tue, 12 Oct 2021 22:55:19 +0000</pubDate>
      <link>https://dev.to/santiago548/collaborate-across-the-states-jm</link>
      <guid>https://dev.to/santiago548/collaborate-across-the-states-jm</guid>
      <description>&lt;p&gt;I have been having some brainstorm meetings with a friend talking about creating a game. Something pretty simple a turn based RPG in the vein of Final Fantasy Tactics. But where multiple people can play at the same time. &lt;/p&gt;

&lt;p&gt;They are in the industry with a prevalent database company and I am the frontend worker for now. combining our knowledge to teach each other and make one cohesive product.&lt;/p&gt;

&lt;p&gt;We have decided how we want to build our backend what data will be needed and how we want version 1.0 to look and play. The place we are now is deciding which engine to use. &lt;/p&gt;

&lt;p&gt;We are deciding if we want to use Unity or something like the GO-DOT engine. neither of us have used either, but I have spent the last few days reading over and trying to decide. &lt;/p&gt;

&lt;p&gt;I think we are both going with Unity. as it has been really well utilized for similar games. and the awesome Unity learn!&lt;/p&gt;

&lt;p&gt;We both currently live in different states but thanks to google meet and other things we have been on a tear developing our idea.&lt;/p&gt;

&lt;p&gt;We started by whiteboarding the database entities. Building multiple database tables for the characters, dungeon master, monsters and other related and connected tables. There is a 3-tier setup. An elementary version has fewer data sets and fewer tables. Afterwards, if we make progress faster than expected and the functionality is smooth, a second version will be created. In the Golden Child version, we incorporate all of the dream ideas we have to make the full game we are dreaming of. &lt;/p&gt;

&lt;h2&gt;
  
  
  Basic version
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;characters {
name:
race:
characterClass:
skills:
health:
armor:
weapons:
spells:
movement:
}

Game_master {
name:
monsters:
characters:
campaigns:
objectives:
}

campaigns {
name:
objectives:
game_master:
characters:
}

monster {
name:
type:
damage:
health:
armor:
skills:
features:
movement:
}

items {
name:
type:
effect:
}

weapon {
name:
type:
requirements:
damage:
magic:
}

armor {
name:
type:
requirements:
armor_class:
magic:
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These are our basic tables. not including the spells, skill, and feats tables we are still working on. but you can see from this small sample we have a whole lot working off each-other to make everything functional in the way we want it.&lt;/p&gt;

&lt;p&gt;This upcoming week we start to implement things and get it from the paper and pen phase into the codebase and see what we can do.&lt;/p&gt;

&lt;p&gt;As far as game engines Unity, Go Dot or whatever you use or even not using a game engine what do you all think is a good way to go for a turn based multiplayer RPG?&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>unity3d</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Live Coding in an interview and how companies are starting to do it right.</title>
      <dc:creator>Dominic Barajas</dc:creator>
      <pubDate>Thu, 07 Oct 2021 23:11:03 +0000</pubDate>
      <link>https://dev.to/santiago548/live-coding-in-an-interview-and-how-companies-are-starting-to-do-it-right-4c9n</link>
      <guid>https://dev.to/santiago548/live-coding-in-an-interview-and-how-companies-are-starting-to-do-it-right-4c9n</guid>
      <description>&lt;p&gt;This week's Part Two was supposed to cover my improvements to the NPC Generator, but I decided to table that and focus on coding interviews instead. I had one this week, and it was the best one I've ever had. &lt;/p&gt;

&lt;p&gt;Keeping track of dishes while traveling was the company's project and I was asked to design an MVP spending 30-45 minutes max. The premise was that it would be an application used by a chef to enter dishes in a form, add them to a list, display the list, and finally delete a dish.&lt;/p&gt;

&lt;p&gt;In a nutshell, I presented my application during the interview and we would build it to offer more functionality according to the interviewer's directions.&lt;/p&gt;

&lt;p&gt;What impressed me most about the email was the words they used to describe my success in the technical interview phase. I liked how it addressed how interviews can be stressful and presented it in a more personable way. They encouraged me to work in a language or framework I was comfortable with and genuinely seemed to want me to succeed, and that came across in the interview and after.&lt;/p&gt;

&lt;p&gt;Was a great report built in the beginning with my interviewer and us exchanging some stories and with me sprinkling some small hooks for later use in my questions at the end.&lt;/p&gt;

&lt;p&gt;During the interview I was asked to add functionality to add ingredients to each dish. Since I needed to build this quickly I opted to not use a backend to store data and just use State to store all info.&lt;/p&gt;

&lt;p&gt;originally my constructor was this&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;constructor(props) {
    super(props);
    this.state = {
      dishes: []
    };
    this.addDish = this.addDish.bind(this);
    this.deleteDish = this.deleteDish.bind(this);
  }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;just an array to concat the dishes into with two binds to pass "this" down to the delete and add dish methods I created.&lt;/p&gt;

&lt;p&gt;I hadn't worked with state in a minute but was so glad I had gone back and refreshed my brain on syntax and constructors before. the interview.&lt;/p&gt;

&lt;h3&gt;
  
  
  BIG TIP
&lt;/h3&gt;

&lt;p&gt;go back and refresh on your basics. that is one thing. I learned from a previous one I could do some very advanced things but man some of my basics were lagging. That made this interview so much more fruitful.&lt;/p&gt;

&lt;h3&gt;
  
  
  END OF TIP
&lt;/h3&gt;

&lt;p&gt;my updated construcor became this.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;constructor(props) {
    super(props);
    this.state = {
      dishes: [
        {
          name: "",
          ingredients: [],
        },
      ],
    };
    this.addDish = this.addDish.bind(this);
    this.deleteDish = this.deleteDish.bind(this);
  }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;then I had to go through and update the rest of the app to account for the ingredients.&lt;/p&gt;

&lt;p&gt;my add dish went from this .&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;addDish(event) {
    if (this._inputElementName.value !== "") {
      const newDish = {
        dishes: this._inputElement.value,
        key: Date.now(),
      };

      this.setState((prevState) =&amp;gt; {
        return {
          dishes: prevState.dishes.concat(newDish),
        };
      });
      this._inputElement.value = "";
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;which was then changed to this.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;addDish(event) {
    if (this._inputElementName.value !== "") {
      const newDish = {
        name: this._inputElementName.value,
        ingredients: this._inputElementIngredient.value,
        key: Date.now(),
      };

      this.setState((prevState) =&amp;gt; {
        return {
          dishes: prevState.dishes.concat(newDish),
        };
      });
      this._inputElementName.value = "";
      this._inputElementIngredient.value = "";
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I then updated my ref elements to account for the new value and new ingredient and then changing dishes to name which was one thing I over looked and had me debugging for a little bit. to figure out why my values where not presenting when I added a new dish. &lt;/p&gt;

&lt;h2&gt;
  
  
  BIG TIP 2
&lt;/h2&gt;

&lt;p&gt;get comfortable with console.logs() and whatever debugger your language uses and use them often and frequently. one thing I learned from my teacher was to solve a lot of headaches was anytime i was passing data "which is pretty much all the time" it always keeps you on your toes and will let you know data isn't being passed correctly before you get to far and have to hunt down why and where  you made your mistake.&lt;/p&gt;

&lt;h3&gt;
  
  
  END OF TIP 2
&lt;/h3&gt;

&lt;p&gt;the other functionality that we didn't quite get to was using a list of ingredients what possible dishes could someone make. I was able to make a pseudo version of what it would look like and then walk my interviewer of how I would build it. We did this Because she wanted to make sure to leave time for my questions. &lt;/p&gt;

&lt;p&gt;Those questions are so important in an interview that I spent a lot of time coming up with ten and then whittling it down to five depending on how technical the person was.&lt;br&gt;
through those I was really able to build a good report with my interview finding out what set the company aside from others. I was able to cut through the typical BS responses. The information they provided was useful for getting a better understanding of what to expect in the next steps. They had gone through the same program as me, and some solid advice was given. It is always my practice to ask for a timeline at the end to temper expectations and be aware of when to follow up if I do not hear back.&lt;/p&gt;

&lt;p&gt;All in all, it was the most professional and personal interview I have ever had. It was really impressive to me how everything was designed to really drive me to succeed and that I was able to really demonstrate my strengths in what I know and how I work.&lt;/p&gt;

&lt;p&gt;I'm happy to see more industries take a page from their book and keep building toward creating a better interview process. I think for all parties involved it will really push the industry forward to have those who may be overlooked because they don't have a traditional learning background. Which will create stronger developers and stronger more profitable companies because us underrepresented and untraditional learning background people need a foot in the door and we will show you how much drive we have.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>NPC Generator Version 2.0</title>
      <dc:creator>Dominic Barajas</dc:creator>
      <pubDate>Thu, 30 Sep 2021 20:47:30 +0000</pubDate>
      <link>https://dev.to/santiago548/npc-generator-version-2-0-2i9c</link>
      <guid>https://dev.to/santiago548/npc-generator-version-2-0-2i9c</guid>
      <description>&lt;p&gt;Dungeons and Dragons is my favorite thing to do with friends. DMing has been my main focus lately with my friends as a lot of them are new to the game. I am also working on my people management skill in the world where their choices can be so impossible to predict. I am always using my coding prowess to make that easier. &lt;/p&gt;

&lt;p&gt;I built a fits draft of this application when going into my bootcamp for my javascript portion of the curriculum. I built a generator that would allow for users to create three encounters worth of NPCs for quick battles. &lt;/p&gt;

&lt;p&gt;This version I wanted to Flesh out the characters more. I wanted to give myself and my users a nearly complete package from the one click button.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
        const npcToAdd = {
            firstName: firstName,
            lastName: lastName,
            title: title,
            race: race,
            sex: sex,
            alignment: alignment,
            health: health,
            armor: armor,
            melee: melee,
            ranged: ranged,
            str: str,
            dex: dex,
            con: con,
            int: int,
            wis: wis,
            cha: cha,
            npcClass: npcClass,
            trait: trait,
            background: background,
            quirk1: quirk1,
            quirk2: quirk2,
            notablePhysicalFeature: physicalTrait

        }
        this.props.addNpc(npcToAdd)
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is my current new list of attributes that I am using for version 2.0&lt;/p&gt;

&lt;p&gt;Right now I am at MVP. It works well enough and looks OOOkay. However it doesn’t have the aesthetic that I want or full functionality.&lt;/p&gt;

&lt;p&gt;The current logic I have coded builds a full character albeit missing spells and certain fighting techniques. But they are completely usable for a game. when you need a quick NPC for your party to run into. I also provided some amazing storytelling hooks to really let the DM bring them to life. See example below.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--f3IEhvQD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/57tm4t2mu4ybh7e0ymsu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--f3IEhvQD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/57tm4t2mu4ybh7e0ymsu.png" alt="NPC demo char" width="800" height="387"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is the current state with some basic aesthetics to center the NPC card and have a few links to explain NPC races and classes. I used it in the last session I played and it really streamlined the gameplay and was perfect for persisting a solid character for my notes for the next session.&lt;/p&gt;

&lt;p&gt;The best part of this version is that I have built into the handleClick function that builds the character for the user the logic that builds a character based on the rules of the game. If the character generated is a dwarf they get the +2 bonus to their constitution on top of the stats generated by the random stat function. based on their class they get access to a specific array of titles for that class. see the charisma portion of code below.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const randomChaFunction = () =&amp;gt; {

              const chaArray = [1, 2, 3]

              if (randomRace === "Dwarf") {
                  return chaArray[Math.floor(Math.random() * chaArray.length)]
                 } else if (randomRace === "Dragonborn") {
                   return chaArray[Math.floor(Math.random() * chaArray.length) + 1]
                 } else if (randomRace === "Elf") {
                  return chaArray[Math.floor(Math.random() * chaArray.length)]
                } else if (randomRace === "Gnome") {
                  return chaArray[Math.floor(Math.random() * chaArray.length)]
                } else if (randomRace === "Half-Elf") {
                  return chaArray[Math.floor(Math.random() * chaArray.length) + 1]
                } else if (randomRace === "Halfling") {
                  return chaArray[Math.floor(Math.random() * chaArray.length)]
                } else if (randomRace === "Human") {
                  return chaArray[Math.floor(Math.random() * chaArray.length) + 1]
                } else if (randomRace === "Tiefling") {
                  return chaArray[Math.floor(Math.random() * chaArray.length) + 2]
                } else if (randomRace === "Goliath") {
                  return chaArray[Math.floor(Math.random() * chaArray.length)]
                } else if (randomRace === "Firbolg") {
                  return chaArray[Math.floor(Math.random() * chaArray.length)]
                } else if (randomRace === "Goblin") {
                  return chaArray[Math.floor(Math.random() * chaArray.length)]
                } else if (randomRace === "Orc") {
                  return chaArray[Math.floor(Math.random() * chaArray.length)]
                } else if (randomRace === "Tabaxi") {
                  return chaArray[Math.floor(Math.random() * chaArray.length) + 1]
                } else if (randomRace === "Warfoged") {
                  return chaArray[Math.floor(Math.random() * chaArray.length)]
                } else if (randomRace === "half-Orc") {
                  return chaArray[Math.floor(Math.random() * chaArray.length)]
                }
          }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's the current set up at the moment. The final product will be even more extensive. and I will be working on that. I want the class make sense with the stats generated. whatever the highest stat is the class will generate off of that. For example if Strength is the highest it will create a fighter or barbarian. also based on the class it will give them access to two or three spells of class features. &lt;/p&gt;

&lt;p&gt;My plan for that is to place the "Classes" in a separate model with its own features and that model will belong to an NPC and "Classes" will have many NPCs. due to that word being a reserved ruby words I will call it DndClasses for simplicity.&lt;/p&gt;

&lt;p&gt;please feel free to check out the current repo. I am hoping to get more work on it done when I get my computer back as I am currently working on a very old Mac Book Air. Which is a struggle haha. I always am up for any advice or tips on making this more robust of the logic more streamlined.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/Santiago548/NPC_Generator_Ver2"&gt;https://github.com/Santiago548/NPC_Generator_Ver2&lt;/a&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>javascript</category>
      <category>rails</category>
      <category>ruby</category>
    </item>
    <item>
      <title>Getting through app wanderlust and how I regain my focus.</title>
      <dc:creator>Dominic Barajas</dc:creator>
      <pubDate>Thu, 23 Sep 2021 21:32:40 +0000</pubDate>
      <link>https://dev.to/santiago548/getting-through-app-wanderlust-and-how-i-regain-my-focus-3p3j</link>
      <guid>https://dev.to/santiago548/getting-through-app-wanderlust-and-how-i-regain-my-focus-3p3j</guid>
      <description>&lt;p&gt;I've been on the job hunt since August. Still, it's not a long time. However, I have been making sure to balance my search with learning, practicing, and taking a breath whenever I can. Whether that be working out, playing some video games, or playing D&amp;amp;D with my friends,&lt;/p&gt;

&lt;p&gt;but the biggest thing that gets me pumped up is working on a new project. Building the bones of it and reaching the MVP (minimum viable product) point.&lt;/p&gt;

&lt;p&gt;Although I have been experiencing application wanderlust lately. So many ideas fill my head, I start and build, but then move on to the next one. Moving on without getting to that MVP point.&lt;/p&gt;

&lt;p&gt;The past was definitely a struggle for me without having a clear goal in mind or letting my mind wander too far off course. The old bad habits would creep back in, and my productivity would suffer. As I worked towards refocusing my mind, I crafted ways for it to get back on track. As everyone's circumstances are different, I can't say for sure if these tips will all help if you're feeling lost. We hope that this checklist of my Limitless Focus Power can provide you with some valuable advice.&lt;/p&gt;

&lt;p&gt;See the bullet list at the bottom!&lt;/p&gt;

&lt;p&gt;When I wake up in the morning, I ensure I have a cup of black cold brew right away. After that, do the joint movement and full-body stretch routine I learned while doing Parkour. Doing these two things should not take longer than 10 minutes.&lt;/p&gt;

&lt;p&gt;Afterward, I will stand at my desk, put on a YouTube study mix or hip-hop mix, and begin to work on a project for an hour. Moving my phone and any other distractions out of sight so I won't see them.&lt;/p&gt;

&lt;p&gt;Once the hour is up. I'll do a quick stretch. Once that is done, I get my whiteboard or notebook. I will then spend 30 minutes planning my schedule for the week. Since I am currently seeking employment, my days are pretty packed with study and projects. After that, I will have a whole setup to keep my time focused for the week.&lt;/p&gt;

&lt;p&gt;My next step is to work out or do some sort of physical activity for an hour in order to keep my energy level up and help my body cope with stress. Then I will wash up and have breakfast.&lt;/p&gt;

&lt;p&gt;Then I'm back behind my computer. I will pick a project and focus on either getting it to MVP or building a newer feature on top of it to make it more robust. I'll be concentrating on that project the whole week.&lt;/p&gt;

&lt;p&gt;Afterwards, I will take a ten-minute break every 45 minutes to make sure I'm checking things like posture. Getting some water, or bothering my girlfriend, or throwing the ball to my dog.&lt;/p&gt;

&lt;p&gt;My focus this week is on developing an application for exercising. With my old parkour experience, I am building an application that enables you to customize your workout based on what you want. In addition to the workout being tailored to each person's skill level, some instruction will be given on parkour movements.&lt;/p&gt;

&lt;p&gt;I so far have built a bit of the front end with some navigation links. I have tested out my embedded YouTube videos that demonstrate the movements. That is courtesy of the amazing Apex School of Movement. My next step is to create the functionality that creates the workout for you based on what type you are looking for.&lt;/p&gt;

&lt;p&gt;pseudo code&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const buildWorkoutFunction = () = &amp;gt; {
    const uppperBodyArray = upperBody
    const lowerBodyArray = lowerBody

    if (buttonPush === upperBodyButtonBeginer) {
       return beginerUpperBodyWorkout    } else if (buttonPush === upperBodyButtonIntermediate) {
     return intermediateUpperBodyWorkout
    }  else if (buttonPush === upperBodyButtonAdvanced) {
     return advanceUpperBodyWorkout
    }  else if (buttonPush == lowerBodyButtonBeginner) {
     return beginnerLowerBodyWorkout
    }  else if (buttonPush == lowerBodyButtonIntermediate) {
     return intermediateLowerBodyWorkout
    } else if (buttonPush == lowerBodyButtonAdvanced) {
     return advancedLowerBodyWorkout
    } 
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;then some functions that manage all the workouts to build based on what compliments each other and would make sense from my extensive parkour training background.&lt;/p&gt;

&lt;p&gt;Currently, to get it to MVP I’m going to have two buttons. An upper body and a lower body. When it is clicked it will generate a workout list to use. That list will have your sets and reps. It will also have descriptions of the movements as well as links to the embedded videos demonstrating the movements. This should have me focused all week and possibly into the following if I am really grove ing on getting the other more ambitious functionality out of it.&lt;/p&gt;

&lt;p&gt;So now back focused on a new project my ritual completed yesterday I feel like I can keep this Thomas the tank engine going for another week and keep distractions at a minimum.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;wake up as early as you can. 6-8am &lt;/li&gt;
&lt;li&gt;grab some caffeinated beverage (cold brew for me)&lt;/li&gt;
&lt;li&gt;stretch and wake up with a bit of light joint movement for 10 min&lt;/li&gt;
&lt;li&gt;immediately get behind your computer and start working on something for 1 hour&lt;/li&gt;
&lt;li&gt;take a 10 min break to loosen up and check your posture.&lt;/li&gt;
&lt;li&gt;spend the next 30 minutes planning the week.&lt;/li&gt;
&lt;li&gt;take an hour to work out or do any physical activity&lt;/li&gt;
&lt;li&gt;clean off and grab some brain fuel.&lt;/li&gt;
&lt;li&gt;Then focus on one project for the week.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I do this to get back into the productive groove and keep my practice flowing. I would love to hear how you all refocus.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
