<?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: Periklis Gkolias</title>
    <description>The latest articles on DEV Community by Periklis Gkolias (@perigk).</description>
    <link>https://dev.to/perigk</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%2F57084%2F9b94dba7-45b9-4822-8e81-22b6c10bfd53.jpeg</url>
      <title>DEV Community: Periklis Gkolias</title>
      <link>https://dev.to/perigk</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/perigk"/>
    <language>en</language>
    <item>
      <title>The journey to join the offensive security highs (part 1)</title>
      <dc:creator>Periklis Gkolias</dc:creator>
      <pubDate>Sun, 02 Apr 2023 13:05:45 +0000</pubDate>
      <link>https://dev.to/perigk/the-journey-to-join-the-offensive-security-highs-part-1-h5l</link>
      <guid>https://dev.to/perigk/the-journey-to-join-the-offensive-security-highs-part-1-h5l</guid>
      <description>&lt;p&gt;Over the years and regardless of their specialization, I have met only a couple of people that didn’t like offensive security operations. But most people, have no idea how such an engagement happens.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;N.B: In this article (and the subsequent ones in the series) we are only talking about legal engagements, where you have permission to attack a system (or for fun, in your own local vulnerable VMs). Don’t forget that you can be prosecuted if acted against those common sense guidelines.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is an Offensive Security Engineer?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fc1.wallpaperflare.com%2Fpreview%2F182%2F936%2F1023%2Fhacker-silhouette-hack-anonymous.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fc1.wallpaperflare.com%2Fpreview%2F182%2F936%2F1023%2Fhacker-silhouette-hack-anonymous.jpg" width="800" height="615"&gt;&lt;/a&gt;An offensive security engineer is a professional who is responsible for identifying and exploiting vulnerabilities in networks, systems, and applications. They conduct penetration testing and other security assessments to find weaknesses in a company’s defenses and provide recommendations for improvement.&lt;/p&gt;

&lt;p&gt;Also, offensive security engineers work on “ethical hacking projects”, performing simulated attacks to test the security of a company’s systems and networks. They use their skills and knowledge to mimic the actions of real-world attackers and identify potential entry points that could be exploited by malicious actors.&lt;/p&gt;

&lt;h2&gt;
  
  
  High-level engagement steps
&lt;/h2&gt;

&lt;p&gt;A team of offensive engineers (usually called red team), uses a set of steps like the below, to perform their engagement&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgbknvprge6gjin9qszf6.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgbknvprge6gjin9qszf6.jpg" width="600" height="450"&gt;&lt;/a&gt;&lt;em&gt;Performing an engagement&lt;/em&gt;&lt;strong&gt;Scope&lt;/strong&gt;: Determine the scope of the engagement, including what systems and networks are in scope and what types of attacks will be simulated.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gather information&lt;/strong&gt;: Conduct reconnaissance to gather information about the target systems and networks, such as IP addresses, network topology, and software versions. Reconnaissance can be either passive or active.&lt;/p&gt;

&lt;p&gt;By passive we mean, searching public information or semi-private ones like social media. Two known tools in the passive recon realm are the Shodan search engine and theHarvester.&lt;/p&gt;

&lt;p&gt;By active we mean directly probing a system with tools like Nmap or Amass&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Identify vulnerabilities&lt;/strong&gt;: Use tools and techniques to identify vulnerabilities in the target systems and networks. This can include scanning for open ports, testing for weak passwords, and looking for unpatched software. Known tools here are Nessus and OpenVAS.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Exploit vulnerabilities&lt;/strong&gt;: Attempt to exploit the identified vulnerabilities to gain access to the target systems and networks. Metasploit anyone?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Document findings and report&lt;/strong&gt;: Record all findings, including vulnerabilities that were successfully exploited and those that were not, as well as any recommendations for remediating the issue. You thought you will only break machines and go home? 🙂&lt;/p&gt;

&lt;h2&gt;
  
  
  Who decides the minutiae?
&lt;/h2&gt;


&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fexed.solvay.edu%2Fimages%2F309%2Fsecuritycisodesktop3.jpg" width="800" height="400"&gt;A company might have an internal or an external red team.

&lt;p&gt;An engagement process is usually proposed by cybersecurity organizations like &lt;a href="http://MITRE" rel="noopener noreferrer"&gt;MITRE&lt;/a&gt; and might be adapted to the team’s needs. An internal team might be affected more by the decision of senior leadership (e.g. the &lt;a href="https://en.wikipedia.org/wiki/Chief_information_security_officer" rel="noopener noreferrer"&gt;CISO&lt;/a&gt;) than an external team.&lt;/p&gt;

&lt;p&gt;Regardless of whether the red team is internal or external, the engagement process should be well-defined and documented to ensure that all parties understand the scope and objectives of the engagement.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do you become a red team member?
&lt;/h2&gt;

&lt;p&gt;I think the right question is, how to increase your offensive engineering mindset. Becoming a red team member is a by-product of that. In my humble opinion, even though there is a shortage of people with proper cybersecurity skills, the red team area is a bit congested.&lt;/p&gt;


&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/data%3Aimage%2Fjpeg%3Bbase64%2C%2F9j%2F4AAQSkZJRgABAQAAAQABAAD%2F2wCEAAoHCBIRFBYWEhUYEhUaGBkcGhgYFRgZGBgYGRoaHBkZGRocLi4lHB4rIRwYJjgmODA0NTU1GiQ7QDszPy40NTEBDAwMEA8QHhISHjQhISsxNDE0NDQ2NDQ3NDQ0MTQ2NDExNDQ0PzQxMTQxMTQ0NDQxNTE%2FPTQ0ND0xNDQ0NDQ0Mf%2FAABEIAMIBAwMBIgACEQEDEQH%2FxAAcAAEAAgMBAQEAAAAAAAAAAAAABAUCAwYHAQj%2FxAA%2BEAACAQIDBAcGBQMCBwEAAAABAgADEQQSIQUxQVETFCJTYXGSBjJSgZGhQmKxwdEH4fAjwiRyk6Ky0vFD%2F8QAGAEBAQEBAQAAAAAAAAAAAAAAAAECAwT%2FxAAhEQEBAQEAAgICAwEAAAAAAAAAARECEjEDISJRYXGxQf%2FaAAwDAQACEQMRAD8A8biIndCIiAiIgIiICIiAiIgIiICJnTpsxsoLHkBeXlP2Q2g9I1Vw7sgJFlXM9ha7ZRqRrv8AOS2QUETJlIJBFiNCDvBmMoREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBNtFVJ7RyrxtqfkJqmSW4wOp2K5LAYZES293zMQPiOXX9BPZvY2nXRENY3BQt2QwWzN2TYs1iQp%2FtPD9m7bp0QoNFKgHBswB1vfQixnqX9O6uIqs1WnRalQtTQKKt1WwZyVVwTlOcbm38Jy7n0sX%2FtZ%2FT%2FCbTBcjoMRwqqouxtYdIu5xu10Om%2FhPCPab2axOzavRYlLXuUcXKOBvKnw0uN4uLjUT9VJ95U%2B0%2BwKO0cO9CsNDqrW7SOB2XXxH3BI4znz3Z%2FS2PyhEmbUwFTDVqlGqMr02KsOFwd45g7weIIkOehkiIlCIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICWuA2LVqqH7CUycud6tNAD4hmBA8bTDYuy6uKcpSQvlUsxC5sqjebcTwA5mTBhaTauXY%2Fma%2Bny3eUxepGpzav9mbASkyuMdgaeUBmfplqvYbwqKCP%2FAJO3obQ2Cal3xDJUDtdg9VKb5LICy%2B5%2BHTQTys7OoH8LAc1b%2BbzfS9mXqAmi6t%2BVtD9ZzvfN93F8On6L2PisLUUdWqpUWw91w1hw8RLWflOkmIwlRaiE03Q6OjDeP1E9J9m%2F6uVAUp42i1QkgdJSHaJPOnuJ8j8pnr49%2B5dT17a%2F657ACtSxtNfe%2FwBOqR8QF6bH5Blv4KJ4%2FP1RtzC09qYCtTTtCpTOXMjKVcdpMyNYqQwXQ2M%2FLLKQbEWI0IPA8p1%2BLrZiVjEROiEREBERAREQEREBERAREQEREBERAREQEREBERAREQO19m6D9HiKFBylSrT0toXCqS1O43XsT4kAcZv2V7MNWuXQHz%2FneJz%2BysQ9OqjoTcajU77afzOlO0MQq5M5VRbKVRHy%2FwDOjWDeB3jhPL82y%2FjcduMs%2B0zEewOJRS%2BFcE2uaTNdWHJWP6H6zPYdNgrBkem4OVlI42HuniNdDKyptLEoAaeJqs1re6VQnW5OY3HDQaaeMxobRqXLFtSSdDxM52W85brUuX6XmC9iWxRNbFOtJfwUb6AW%2FGRvN%2BAPmd4kfaHs1RVSKbqSB5f2lX1x66hKpqOg3KtRVU8bMGVg3hu3nnMX2b%2BJVKnLluWzME%2BEZVVQPlfxj7%2F7c%2Fgki59jPa7E4J1SpUarh81mR2zZEBsWRjquUdrLuIBFtxHLf1H2YMLtPEoBZWfpF5WqAMbeAYsPlMqNIZaiH4WYemzD9Jdf1ZTpepYof%2FpRem3LNQci%2Fmc%2F2no4965dc486iInZgiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIAiSKVK432vwHE8oGoITGljcEGT8DsypXYJTXMx5sqjwuzEKPmZv23sLFYMqMRTNMMLqQVZGHEqyEqfEX00vJs3DE72Xwoq1aaH8ast%2BRyNr9Z2OxdmDFqjhgj27acQw0bTlcGcf7LVhSrU3Y2yPr5HT9C0n4rMa2JpXyOlRmSx1sdb6fI%2BV55%2Fm5t9fTv8XWOr9pdkUsPRJLrn0sl%2B0fG3AeM47D4ZnJABuN9hJWzNqpTYHEqVYG92W6MVsdCdGnU%2Bye3cRjMRXOEw2GZSCzu6MMptZAcp%2FERutfRjOHM65l%2F1bY5%2FYuGKOHqIxpZsrlRcg20M6rEVcAEY9KAORVw30tcyjq%2B0OMU1aGKwzU3zXZKNNspPAgDMSDob3IMq2p1KrBmQ0kB0ViCzvwuBuA389B851zbdv0vN%2FSvxLDrBCg5MpGvIzqqmHTE7DwzVVLmniXVQoOufObHkLkfScy6gO7fDp9FvOh2ViM%2ByBTUlWXHG9ja4akWFvDW3ynq59Ry7u1D2X7NYeoc9RAUXeqAWzcixIvbiBebH9k8HjAWwzGnl96wAA%2Fb%2FN8l7QxQw1BKa6NbW3M%2BXnNuzMT0eHqMeYN%2BelyPtab2sPMtq7POHqMhYOAdGG4%2BHnIM7s4Fa2HdmHEtccCSSCPKcTiKDIbN8jzHOblRqiIlCIiAiIgIiICIiAiIgIiICIiAiJtopc7tIGaUDoTr4SZ0YCk7gPlb%2B8ypU9LXtyvp5TDGVUuoAuLAtbnbQfvBDAU0rErVq9EN4ZlZlvY7wuvLXznU7Yxi09n0cK2ITE3qdIhSxWkiq6subfdi17HW3Kc8mER1upAPK9jOn2X7U1KVNKGLw9LG4dBZUqIuZBwyNbScr7125n42OVp1lVrjXQX04j%2FPvJeLxjJiBXs1mVMwIsSQihvuL%2FOdX7QeyuHrUKWL2ZTdFdsj4d8xKsbkMpJJy3uN5GotbWVO2AEpU6JQB6faqXUFw7gWU34Kv%2FlHlOvok8ZtX%2Bw8UikHVqT21DMpW%2FiP0M6HbK4PCUhWY13V3VSqOBqwPaO640855jsja7YRjcdJh395BvW%2FFb7j9jPQdsYWljdk1XosKqoFfsnUZLFlI%2FC1r6GePr4vHub6tbvWzVpszD4GtQTEIjXdSbVHLEWYixtv1EpdtOtJHrOAEQWRQALsdBYfb6mWuw6VHDbLw1Ss6016PNdmGuYkgLb3ibjQTzX2n2y%2BMfeUpLpTQan%2FAJm4Zj9t3Mlz8V67v6lTyyIlGsTScnVnqm%2F0BNvsJc%2BzObMRchAxci%2BhKrlv%2FwB32kTZOyC6ZmOWnTDMxvqzHgPoo%2FSTkcU6ZAGUnS3EAa%2FqTPbjjUPHV%2BkxH5VmzFbQ%2FwCHrIB2i1gQfisJW0HsWJNiSTcz5syqr1bPohYMb%2Fl1%2FaaxF%2FVcph0S1i5ReNwNL%2FQWlXtzZ6up4Ebj%2FnCb1x4r4hT%2BBNfkATIWNxxqXfcGYhR%2BUaX%2BZiDlmQqSDoRMZb7Zw3bJXUgC%2FwBJUTSEREBERAREQEREBERAREQERED6q3m9XZeyN%2FPlI8zp7%2FOB8JuddfObsGbONM00kay32BRDVBcZiOA3%2FLnF9LzNq5bZyugYlVJNrEW%2B%2B6TcLgcTh8rBOkW%2BiumdDyFt%2FwBDLzD%2Bz9SspcZQmW4Yt2bDfv3S02Vs98JaqcStOjobK4cOd%2BVU1BJ8p571%2Bnrkk9pO2%2Fah6OFSk1HoMVUpnJksqIPdzanMrAaga68Z5hiFrMzVczO5JNQsSzMeJYneZ0e3enxFTp6jF20toBZRqAABbj9TMDh8yiqmunaG69vHnN8ySPN1drmBRp1FuvYNu0Bw%2BRmpMNUoEmlUdCRYhC4JFiSDl1Itc%2BV5e4vZKVe3RJpv8vvzlZiHxFMnOqsV8CDyJB1m%2Faa1VVc5S7u7AWzMxNhpZVBvlAHCR2cj%2FP0jrl750bwswI%2FaaijOQT2V4DwG8mWRNdXhK2WhSogdpzmY3PuLru%2B3zkTalU2y33ab7i3CYbN9w1nJ17CD8i%2B8fmdPlIuMqZnA8ftIItZ%2BFpERrf5zmdZu0ZpmkbaWKZEYLvYWvxF9%2FwCk34WqAc7e5TACD4nG7%2BT8pAZpkgLFRYtroo3mBOQlyoPvOS7E8t%2Bvhb9ZT4hArabjqPIyyr1Cl1uDUfRmG5V%2BFf3M14rD9m7dgfgB32gVkREBERAREQEREBERAREQEREBN1IXBtvGs0yRhtIElMKzWKdry1P04yXhMLUzApdWB0tcMD4W1vMsFoewcpPhpOioYroaLvUfMQDlWw7bnQA2138PC8lqvlCtUFaimJqvVSoLlS7FfAEbm115aTsMZs1GZMuhJB3a2G7Q25fbynnL4q7YO9gVVV0%2FLpPTumuqG%2B7d4aW%2Bc59TPS7rZV2aCtrb93EHfz4ygp4Y4apkf3G%2Fc7rGdia9kBNr8OAty10kHaaJiqZyjtjlbfyvMyjm8fgghzoeyTzH6TVRemWHSKGG43GpBFj%2B8yp7QyEpVuEvx0t9ZVbSORrqwKX3jW02IWL2TlrFAex72b8m%2B%2Fnw85W7QIY2TRd3yG4S0xW1aZXIDuHvtoSeVuA%2Bcoaldb%2B8PqJqalWL40MoUDKFAUAcgJDSplYMRcSL0y%2FEPqIfEqVAuNDzEo3bQUZyV91tR85CM2Bi3u3byBP6TCvSdBdkZQdAWVgCeQJ3wjSg5fU%2FtJ1CuqLlAIv7zi2c%2BAJ3DwkFGuBMs0onriKaH%2FSp3b4nbMfpuH0mLuXa7JmbnmN%2F7SNQpO26wHEk2AkpEYDKhtf3nbTT8g328YEHF0dSRv4iRJbPhkA01PPNqZW1qZUnSwga4iICIiAiIgIiICIiAiIgfQLyZh6UjUxJYrhBuueA%2FmBaUujormc%2BS8W8hI2HrvjsRRpucqF1UKDYKCdTfn4ypq1Wc3Y3Ml7DqZMRRblUT%2FyElg9no7DwWGVcnR1BvDPh6LkHmGftD6nzlgmJp2AD0wBu%2FwCHw%2Bk81qbYewAYjKLCxImsbYqfG%2FqM4%2BNa16quLQ6GqluXQYebqNamputRQTxWhQB%2ByzygbaqfG3qM%2Brtup8beoyeNNesHoX95lc%2BNCgf9k2hKHNf%2BjQH%2ByeTLtqp8beozaNtVPjb1GPGmvWUFDw%2F6dH9km1Wo%2BHop%2FwDpPJF2zU%2BNvUZITbD%2FABH6mPCmvV1enwJHkE%2F9JtV%2BTv8AIqP9s8wpbXc%2FiP1Mu9l48sbFj9ZPFL07gEn8T%2Bv%2B02V8ElSmy1LurKcyOc6MOIZToRKbBV%2BO%2BTsbiimGr1D%2BGm5%2BindMWEuvy%2Fi8i1XFO%2BQOwXW%2FZzHL56WnwON8nbP9ncTW1CFF%2BJ%2ByPkDqZZ0NiU6TWqo72%2FESvR35kISbfOerUUVLpH0RSR4DQfxJJ2bV3kgHxJvOhqOU7OQottOjPYI52kCviAR2Tm%2BVj8xxl0VXVsg1IvzI%2Fm8iVsw5fIASdXxAP%2BfpK13vKNcREBERAREQEREBERAQIiBsz2msm8RATOkbMPOYT6u8QLIVzMhWkHPHSGTBP6afRWkEOZkHjBPWvNq4iVwqT6HjBZpiJvTEyoWpNqVZMHQ4fFeMvtl4uzDWcVRrS2weJtxmbEr1DBV77pM9s8UaWy65U5WKhAfF2Cj9ZzOw8bmy6zd%2FU7HBcCiX9%2Bov%2FaC36gTln5Qjz%2FZWJYt%2FqVsht7mUsH03D4W8f5mzFY0FcysVPIDfbnOarYi3HUWIPMT42NaxJ333%2Be%2BejGtWbbaLKQwsR9fP%2BZAxmJDG4Nr7iP3kCq92vzmomXEZM1%2F84zCIgIiICIiAiIgIiICIiAiIgIiICfQZ8iBlmjNMYgZhpkHmqLwNwafQ003n0GBvDzNXkbNMg0CYtWS6OJtKkPMlqSYO52BtGzAXj%2BpO1ekFBAdAGY%2BegH7zlMBiyrCbNt4oVWW4Y5V4EAC513jymfH71IqC14Z59KeY87T5lm1YRMrz4TA%2BWiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAvF4iB9vF58iBmjkHfaZs5O8kzTF4GwtMSZjEBERAREQEREBERAREQOy6lS7tPQsdSpd2noWImA6lS7tPQsdSpd2noWIgOpUu7T0LHUqXdp6FiIDqVLu09Cx1Kl3aehYiA6lS7tPQsdSpd2noWIgOpUu7T0LHUqXdp6FiIDqVLu09Cx1Kl3aehYiA6lS7tPQsdSpd2noWIgOpUu7T0LHUqXdp6FiIDqVLu09Cx1Kl3aehYiA6lS7tPQsdSpd2noWIgOpUu7T0LHUqXdp6FiIDqVLu09Cx1Kl3aehYiA6lS7tPQsdSpd2noWIgOpUu7T0LHUqXdp6FiIDqVLu09Cx1Kl3aehYiA6lS7tPQsRED%2F%2FZ" width="259" height="194"&gt;To start building your offensive mindset I would suggest the following process:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Learn about cybersecurity foundations&lt;/strong&gt;. Yeah, there is no shortcut to that. A good starting point is Coursera’s &lt;a href="https://www.coursera.org/learn/cyber-security-fundamentals" rel="noopener noreferrer"&gt;course&lt;/a&gt; on the fundamentals of cybersecurity.&lt;/li&gt;
&lt;li&gt;Confidence with programming. Not a deal breaker, but you will need to write your exploit or automate a process, sooner rather than later.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Confidence with networking&lt;/strong&gt;. Same as above, not a deal breaker, it will level up your game faster if you do.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Analytical thinking&lt;/strong&gt;. You need to be able to construct an attack route, given a vulnerability. Most of the time you will have seen something similar before, but sometimes not. And this is where you truly need that skill&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Practice, practice, practice&lt;/strong&gt;. No escape here either. You can use platforms like &lt;a href="https://tryhackme.com" rel="noopener noreferrer"&gt;tryhackme&lt;/a&gt; and &lt;a href="https://www.hackthebox.com/" rel="noopener noreferrer"&gt;hackthebox&lt;/a&gt; or build your own lab with vulnerable images like &lt;a href="https://www.vulnhub.com/" rel="noopener noreferrer"&gt;vulnhub&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stay up-to-date&lt;/strong&gt;. Attend &lt;a href="https://infosec-conferences.com/" rel="noopener noreferrer"&gt;conferences&lt;/a&gt;, read industry &lt;a href="https://www.infoq.com/security-vulnerabilities/" rel="noopener noreferrer"&gt;publications&lt;/a&gt;, and participate in online communities to stay informed.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Becoming an offensive security engineer is a challenging but rewarding career path. It requires a combination of education, work experience, certifications, and ongoing learning to stay up to date with the latest security tools and techniques.&lt;/p&gt;

&lt;p&gt;With the right skills, knowledge, and experience, offensive security engineers play a critical role in protecting organizations from cyber &lt;a href="https://nvd.nist.gov/" rel="noopener noreferrer"&gt;threats&lt;/a&gt; and helping them stay one step &lt;a href="https://owasp.org/" rel="noopener noreferrer"&gt;ahead&lt;/a&gt; of attackers.&lt;/p&gt;

</description>
      <category>security</category>
    </item>
    <item>
      <title>The IAM introduction I wish I had</title>
      <dc:creator>Periklis Gkolias</dc:creator>
      <pubDate>Tue, 29 Mar 2022 16:21:26 +0000</pubDate>
      <link>https://dev.to/perigk/how-to-evaluate-if-a-certification-is-worth-it-for-you-4776</link>
      <guid>https://dev.to/perigk/how-to-evaluate-if-a-certification-is-worth-it-for-you-4776</guid>
      <description>&lt;p&gt;The term IAM is one of the common you hear in cloud-native environments. What does such a system do, though? And if you do know, how long did it take you to understand the full purpose? I will explain the main concepts behind this massive software family, having the busy engineer in mind.&lt;/p&gt;

&lt;p&gt;The fundamentals described here are vendor agnostic. Though most of my experience derives from AWS's implementation.&lt;br&gt;
&lt;a href="https://media2.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%2Fx22vpfsqcx0j7f318o52.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx22vpfsqcx0j7f318o52.jpg" alt="Human form of IAM" width="687" height="1031"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is IAM
&lt;/h2&gt;

&lt;p&gt;IAM stands for Identity Access Management. It is a complex system of entities (humans, applications, etc) that request access to a system, on the one hand. And also, there is a complex hierarchical set of rules, to grant or deny the requested access. Before we go any further, below are the main terms you will encounter.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Resource&lt;/strong&gt;: Anything worth protecting. A storage service a virtual machine etc&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Policy&lt;/strong&gt;: A set of rules which dictate "who can what" on which resource. And of course, who cannot&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Action&lt;/strong&gt;: Anything someone can do, inside the cloud environment. For example, creating a virtual machine&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;User&lt;/strong&gt;: Well...a user :)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Group&lt;/strong&gt;: A group of users, with the same permissions, applied&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Principal&lt;/strong&gt;: A user or an application requesting access&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Role&lt;/strong&gt;: A set of powers assigned to a principal. Usually for a limited amount of time.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why it is useful
&lt;/h2&gt;

&lt;p&gt;Its main usage roams in the realms of authentication, authorization, granular access, governance. Let's see what those things are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Authentication&lt;/strong&gt;: We have verified who you are&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Authorization&lt;/strong&gt;: We want to identify if you can perform the action you ask for. Usually, combined with Authentication but not necessary.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Granular access&lt;/strong&gt;: Each action that can happen in a resource, is controlled by permission. Having access to see the firewall rules doesn't mean you can change them. This is implemented with &lt;a href="https://en.wikipedia.org/wiki/Role-based_access_control" rel="noopener noreferrer"&gt;Role-Based Access Control&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Governance&lt;/strong&gt;: The actions you take to know what the f@ck is happening to your environment. Mostly from a budget, compliance, proper access scope.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Are you a company of 1-3 people? Then, setting up a full-blown IAM solution is overkill and a burden to maintain. But if you are more than that or you are planning to scale, then you should start considering it&lt;br&gt;
&lt;a href="https://media2.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%2F481m5ojawcte6qjlzzeh.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F481m5ojawcte6qjlzzeh.jpg" alt="IAM pillars" width="620" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Problems from the lack of one
&lt;/h2&gt;

&lt;p&gt;I believe you can see the benefits of an IAM solution. Let's see what are some common problems organizations face in the absence of it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Hard to audit and administer access
&lt;/h3&gt;

&lt;p&gt;Have you heard of cases where an employee had more access than they should? And additionally, no one knew? This can be prevented with a properly set-up IAM solution.&lt;/p&gt;

&lt;h3&gt;
  
  
  Setting up new hire accounts is a pain
&lt;/h3&gt;

&lt;p&gt;With a properly set-up IAM solution, this is a matter of a few clicks. Namely, set up the users, add them to the IAM groups their teams use. And that's all.&lt;/p&gt;

&lt;p&gt;But without it? You need to do all the permission settings from scratch. You might have a reference user to "copy from". But do we need all the permissions this reference user has? Do we want to have special handling for users that are less than 6 months in the company? Does the reference user have superuser permissions that should not accidentally be assigned to the new hire?&lt;/p&gt;

&lt;h3&gt;
  
  
  Offboarding people
&lt;/h3&gt;

&lt;p&gt;Here you have problems of a similar nature to the "new hire case". But you also need to change the password to all the accounts they &lt;strong&gt;potentially&lt;/strong&gt; used. This can turn ugly very fast, not to mention the side effects it has on other team members.&lt;/p&gt;

&lt;p&gt;For example, one will have to update all the password occurrences on every offboarding. In every script and application. What if you have a team change 2-3 times per month? How productive this will be?&lt;/p&gt;

&lt;h3&gt;
  
  
  Commodity identity tasks need human intervention
&lt;/h3&gt;

&lt;p&gt;By commodity, I mean tasks like, resetting a password or re-enabling an account that was locked. The top-tier IAM solutions have a way to resolve such issues fast without much hassle.&lt;/p&gt;

&lt;h2&gt;
  
  
  Best practices
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmqf9c4mmgqmp83ucd4za.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmqf9c4mmgqmp83ucd4za.jpg" alt="Best practices" width="687" height="1030"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Below are some best practices I have derived. It is far from being a full list, it is only my personal experience. I have seen them in more than one team though, so they are probably good enough.&lt;/p&gt;

&lt;h3&gt;
  
  
  No full access...EVER
&lt;/h3&gt;

&lt;p&gt;In a real-world scenario, you don’t want every user to have unlimited access to the account. Ideally, no one should have (apart from the account owner). &lt;br&gt;
If Jack is working on monitoring logs, they should have read access to that tool. They should not be able to restart a service. Or the accounting team should only view billing information.&lt;/p&gt;

&lt;p&gt;Knowing how the VM scalability rules are set is not gonna help anyone.&lt;/p&gt;

&lt;h3&gt;
  
  
  Groups vs multiple users
&lt;/h3&gt;

&lt;p&gt;Prefer a single group to multiple users when you have a choice. The groups make administration exponentially easier.&lt;/p&gt;

&lt;h3&gt;
  
  
  Roles vs multiple groups vs a new user
&lt;/h3&gt;

&lt;p&gt;When you have the choice, prefer assigning a role to a user, rather than creating a new user. For example, don't create an admin user and share the password between 10 people. Create an admin role and assign it to whoever needs it for a limited amount of time.&lt;/p&gt;

&lt;h3&gt;
  
  
  Permissions should be frequently audited
&lt;/h3&gt;

&lt;p&gt;It is easy to make mistakes or perform malicious actions. At the very least, a company should audit that only the proper people have access and this is at the minimum level.&lt;/p&gt;

&lt;p&gt;You could also send an email to a certain team when a suspicious action happens. For example, assigning an Admin role to a new hire.&lt;/p&gt;

&lt;h3&gt;
  
  
  Setup boundaries beforehand
&lt;/h3&gt;

&lt;p&gt;If the IAM solution allows it, add boundaries to your ecosystem. Copying from Amazon's documentation ( I know, I promised vendor-agnostic :) )&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A permissions boundary is an advanced feature for using a managed policy to set the maximum permissions that an identity-based policy can grant to an IAM entity. An entity's permissions boundary allows it to perform only the actions that are allowed by both its identity-based policies and its permissions boundaries.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In layman's terms, you can define the "maximum" permissions that can be assigned to anyone. For example, a user will at most be able to view the logs from the relevant tool and restart a service. If someone attempts to get a role to create a new virtual machine they will be disallowed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Thank you for reading this far. I hoped you enjoyed the introduction to the IAM technologies. Any questions, please reach out.&lt;/p&gt;

</description>
      <category>cloud</category>
      <category>security</category>
      <category>iam</category>
      <category>auth</category>
    </item>
    <item>
      <title>What can La Casa De Papel teach you about Cybersecurity</title>
      <dc:creator>Periklis Gkolias</dc:creator>
      <pubDate>Thu, 13 Jan 2022 19:18:19 +0000</pubDate>
      <link>https://dev.to/perigk/what-can-la-casa-de-papel-teach-you-about-cybersecurity-5bb4</link>
      <guid>https://dev.to/perigk/what-can-la-casa-de-papel-teach-you-about-cybersecurity-5bb4</guid>
      <description>&lt;p&gt;I was watching the TV series, La Casa De Papel (Money Heist) on Netflix, a few weeks ago. I realized that the story of the gang can reveal some best practices we should use while dealing with the security of the products we build.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnskddpkeid6bwxwb9m2f.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnskddpkeid6bwxwb9m2f.jpg" alt="A gang with a Salvador Dali mask" width="651" height="282"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Beware, the text contains spoilers. If you haven't seen the show till the end and you are planning to, please visit the article on a later day. Or proceed with your own responsibility :)&lt;/p&gt;

&lt;h2&gt;
  
  
  Threat modeling can protect you against unexpected events
&lt;/h2&gt;

&lt;p&gt;First of all, &lt;strong&gt;what is threat modeling&lt;/strong&gt;?&lt;br&gt;
Threat modeling, in layman terms, is an analytical process. In there, the engineers who build a product coordinate with the security team. They collaborate towards the security architecture of the product. &lt;/p&gt;

&lt;p&gt;More specifically, the model, how someone can attack the product, and what is worth protecting (assets). They also model what they can be loose about. Being loose, not because they don't care. But because protecting it can be more costly than the asset itself.&lt;/p&gt;

&lt;p&gt;Threat modeling can get you a long way and protect you from events, against the odds. What is threat modeling in our "Money Heist" case? It is Professor's (aka Sergio Marquina's) plan against all potential routes the plan will take. In having alternatives, even for the edgiest scenarios. The assets are clearly, the stolen money or his comrades in the heist.&lt;/p&gt;

&lt;h2&gt;
  
  
  A single point of failure can cause a chain of bad reactions
&lt;/h2&gt;

&lt;p&gt;Threat modeling might help you recover from many security problems that will arise. You can recover from a cyber-attack but things will never be the same. A crack in the security wall can have a domino effect.&lt;/p&gt;

&lt;p&gt;Imagine a lake dam, with a few cracks around, going unnoticed and being exploited by nature. You can always fix it, but it might take time for the lake visitors to establish trust again. &lt;/p&gt;

&lt;p&gt;Like the Professor, where he lost respect after the gold (temporarily) vanished. Even though his great problem-solving skills, helped resolve the issue, things got hairy very fast.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhijf8m7zulor83zncwuc.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhijf8m7zulor83zncwuc.jpg" alt="Chain reactions" width="800" height="426"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Luck is not a strategy in the long term.
&lt;/h2&gt;

&lt;p&gt;In the show, there are some provocative cases of luck. For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Raquel renegading the police organization&lt;/li&gt;
&lt;li&gt;Police and army failing plans to invade the bank&lt;/li&gt;
&lt;li&gt;Failing to shoot to the target many times. From troops, that are supposed to be professional shooters.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Snitches and below-expectations defense might give you some extra time. to move with your plan or escape. But you have to take advantage of it. To either move with your plan or escape. Always think your luck might go away, any time soon.&lt;/p&gt;

&lt;h2&gt;
  
  
  Never drop the weapons
&lt;/h2&gt;

&lt;p&gt;This is not specific to cybersecurity but to life in general.&lt;/p&gt;

&lt;p&gt;Pain is temporary, quitting lasts forever. Accept your mistakes, remediate them and learn from them. As long as your heart is pumping blood, you are not dead yet.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Architectural mistake? Patch it immediately and re-architect the product (yeah, I know...delivery and business constraints)&lt;/li&gt;
&lt;li&gt;Below expectations monitoring? Fix it now. Add more people and see how they can be more effective&lt;/li&gt;
&lt;li&gt;Serious defects in the code? Train your team insecure practices and code review focused on security. Buy a license to a package like Snyk or Nessus. Plan some percentage of your capacity to patch the most severe ones&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fikt4phwoh4eaxs0q85rm.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fikt4phwoh4eaxs0q85rm.jpg" alt="Budget constraints" width="800" height="988"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Even in the worst of moments, keep your composure
&lt;/h2&gt;

&lt;p&gt;Imagine a ransomware attack. It is there, it is happening. Screaming over people's heads will not solve the problem.&lt;/p&gt;

&lt;p&gt;When you cannot win against an attack, you still have to do your best, to at least not lose. For sure, don't panic. As the Stoics say, you have to be your best self on the things you control. And let the rest, just be. Accept them.&lt;/p&gt;

&lt;p&gt;You cannot control the next stage of an attack. But you can do your best to prevent it, to not repeat the same mistakes, and to close the open doors that exist now.&lt;/p&gt;

&lt;p&gt;Don't lose your temper and clear mind,. Like Tamayo lost it, when he realized the gang was blackmailing him for various reasons.&lt;/p&gt;

&lt;p&gt;He got angry, he got blackmailed, he was even ridiculed in the eyes of the European Central Bank. And what was the result? He lost, hands down, even though he lied to the media about winning.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Top-notch cybersecurity is not a free lunch. And not everyone can do it, as the caveats are so many. But with some discipline, retrospection, and humility, you can do wonders. Also, the show is great, if you haven't seen it, please do.&lt;/p&gt;

</description>
      <category>cybersecurity</category>
    </item>
    <item>
      <title>How to evaluate if a Certification is worth it (for you)</title>
      <dc:creator>Periklis Gkolias</dc:creator>
      <pubDate>Mon, 22 Nov 2021 18:06:25 +0000</pubDate>
      <link>https://dev.to/perigk/how-to-evaluate-if-a-certification-is-worth-it-for-you-pb8</link>
      <guid>https://dev.to/perigk/how-to-evaluate-if-a-certification-is-worth-it-for-you-pb8</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvq5fraj4w3ldacyb837r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvq5fraj4w3ldacyb837r.png" alt="Graduation" width="301" height="354"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Asking whether you should go for a certification or not, is maybe the most sought-after knowledge in the tech internet. Usually, accompanied by a flamed discussion of people with strong opinions and virtual verbal fights. &lt;/p&gt;

&lt;p&gt;I will share with you how I approach such dilemmas.&lt;/p&gt;

&lt;h3&gt;
  
  
  Current or near-future career plans
&lt;/h3&gt;

&lt;p&gt;Getting a certification, at least a quality one, requires hard work and study. If this certification is going to improve your career prospects, tangibly, by all means, go for it. &lt;/p&gt;

&lt;p&gt;If not, I would spend my precious and limited time elsewhere. Life is too short and a piece of paper alone means nothing.&lt;/p&gt;

&lt;h3&gt;
  
  
  Changing tech tracks
&lt;/h3&gt;

&lt;p&gt;Like the above remark, a certification might be a good vehicle to land a new job, especially if this requires changing your technical domain. &lt;/p&gt;

&lt;p&gt;Are you a mathematician and you want to become a data engineer? Earning a reputable certification in data engineering will give you extra points.&lt;/p&gt;

&lt;p&gt;Keep in mind though, not all transition pairs, are created equal. &lt;/p&gt;

&lt;p&gt;Both for this and the previous point, remember: &lt;br&gt;
Some companies filter out CV keywords while hiring, so a certification might give you extra points for the next step of the process. You have fewer chances of being disqualified early, all other things equal.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cost
&lt;/h3&gt;

&lt;p&gt;Do you pay the tuition? Does your employer pay? Certifications usually vary from a hundred dollars (e.g. AWS cloud practitioner) to a few thousand (e.g. Cisco Architect). &lt;/p&gt;

&lt;p&gt;Sometimes the cost is in proportion to the opportunities (and the salary) this certification can bring. Hype though is also playing a vital role in the cost. Make sure you evaluate the relationship beforehand.&lt;/p&gt;

&lt;h3&gt;
  
  
  Current knowledge
&lt;/h3&gt;

&lt;p&gt;I would choose to certify easier if I am starting from a way above zero point. My philosophy is to pair a  certification with battle-tested knowledge of the domain. That way you get more value as a professional and the certification shines on you.&lt;/p&gt;

&lt;p&gt;Let's revisit my above example on data engineering again. It is easier to get it (and more valuable to you and your company) if you back it up with existing good knowledge. But might take 2-3 times more to study if you have never seen how a data pipeline work.&lt;/p&gt;

&lt;h3&gt;
  
  
  Desire to go deep
&lt;/h3&gt;

&lt;p&gt;In your career, unless you love your comfort zone or you are pro-early-specialization, you will gain a good breadth in the sector within 5-10 years. &lt;/p&gt;

&lt;p&gt;Not all knowledge requires a certification. I am very confident with Linux and administration, as I have used it at home and work for many years. Though, getting a Linux administration is not something I consider (at least for now), as it is not the focus I want to have in my career.&lt;/p&gt;

&lt;h3&gt;
  
  
  Vendor reputation
&lt;/h3&gt;

&lt;p&gt;We will agree, hands down here. Anyone can create a certification. That doesn't mean the rest of the world gives a damn. As mortals, we have limited time slots for certifications. As Wilfredo Pareto would say, 20% of your actions, will give the 80% of the results. Use your limited time quota, wisely.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;What is your view on certifications? There are many opinions in the field, and I would like to listen to other perspectives.&lt;/p&gt;

</description>
      <category>career</category>
    </item>
    <item>
      <title>Not so obvious tech that I believe will become mainstream</title>
      <dc:creator>Periklis Gkolias</dc:creator>
      <pubDate>Mon, 14 Jun 2021 20:13:49 +0000</pubDate>
      <link>https://dev.to/perigk/not-so-obvious-tech-that-i-believe-will-become-mainstream-51ed</link>
      <guid>https://dev.to/perigk/not-so-obvious-tech-that-i-believe-will-become-mainstream-51ed</guid>
      <description>&lt;p&gt;By the time of writing of this article everyone knows, the "technologies of the future" as listed from various mainstream media. And I agree with most of them. It is worth discussing a few not so obvious though. I expect my "predictions" to be fulfilled by 2030.&lt;/p&gt;

&lt;p&gt;Please note that these are my personal views. The views are built according to my understanding of how technology (and society) evolves. I am by no means a psychic, so reality might prove me wrong.&lt;/p&gt;

&lt;h2&gt;
  
  
  Blockchain will end bureaucracy
&lt;/h2&gt;

&lt;p&gt;Unless you have been in a coma for the past decade, you should have heard about blockchain. In two sentences, blockchain is a technology that helps someone confirm that an action has taken place. No one can alter the action or the source of truth, at least not in an illegitimate way.&lt;/p&gt;

&lt;p&gt;The most popular blockchain-based application is bitcoin. Though various domains can benefit from blockchain.&lt;/p&gt;

&lt;p&gt;A very interesting case is checking out from a hotel without the need for a receptionist. That will happen with the help of applications that run on blockchains, called smart contracts. When the time has passed and you have not returned the keys to a special vault, alarms will start ringing. Or if the rent has not been deposited on time, consequences will fire (eg late interest). If you have worked with services like IFTT you know what I mean.&lt;/p&gt;

&lt;p&gt;But of course, the big pain point is not a renter with a bad credit score and behavior but bureaucracy. Bureaucracy can hinder innovation, drain your energy, and can be costly. You may check &lt;a href="https://publications.jrc.ec.europa.eu/repository/handle/JRC115049" rel="noopener noreferrer"&gt;this&lt;/a&gt; paper from the EU to read more about their research.&lt;/p&gt;

&lt;p&gt;I understand it sounds crazy at the moment, but who wouldn't think the same for today's circumstances (e.g. Covid19) 10 years ago, if described in an article?&lt;/p&gt;

&lt;h2&gt;
  
  
  Doctors will stop dealing with commodity cases
&lt;/h2&gt;

&lt;p&gt;As we have robot investing or self-managed investing nowadays. Where did stockbrokers go? They only deal with big bucks. The same will go with doctors. Artificial intelligence will take off of their shoulders a handful of cases. &lt;/p&gt;

&lt;p&gt;I appreciate different opinions; though spending 20 minutes of a doctor's time to get, the same remedy as last year is not optimal to me.&lt;/p&gt;

&lt;p&gt;Speaking about "technology acting as doctors", there are even &lt;a href="https://www.nature.com/articles/nature21056" rel="noopener noreferrer"&gt;models&lt;/a&gt; that can predict skin cancer better than doctors. The future here is exciting and...intense.&lt;/p&gt;

&lt;p&gt;Hopefully, in that way, the medical community will free up resources to focus on more important problems the human race faces.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frontend development will completely transform
&lt;/h2&gt;

&lt;p&gt;Frontend development has created many dev jobs in the past decade (at least since Angular come out in 2010). Though I don't think it will remain a lot more in the current state.&lt;/p&gt;

&lt;p&gt;Companies (should) pay more attention to the user experience. So, sooner or later they will stop creating another custom feed or login page. Dear company, your app is not that special.&lt;/p&gt;

&lt;p&gt;Here come low-code tools (N.B: I don't like them, but they are here), just like static HTML development transformed when Adobe Dreamweaver became the new cool kid in town.&lt;/p&gt;

&lt;p&gt;What about the backend? Backend can lose some of its glory too, though the commodity parts are less, in my humble opinion.&lt;/p&gt;

&lt;h2&gt;
  
  
  Zoom fatigue will fade
&lt;/h2&gt;

&lt;p&gt;Don't get excited so fast. Augmented reality calls might replace Zoom calls. Not sure if we have a new form of fatigue then. :) &lt;/p&gt;

&lt;p&gt;We have seen how augmented reality works, in various movies, like Ironman. So you may see the movie (or similar Sci/Fi ones) to understand it better.&lt;/p&gt;

&lt;h2&gt;
  
  
  Driverless cabs
&lt;/h2&gt;

&lt;p&gt;Self-driving means of transportation and cabs, in tandem with more eco-friendly governments, will probably reduce the need to own a car. At least for a city commute. But even for off-city commute, there is a (yet baby) trend that car rental companies offer cars with a per-hour lease.&lt;/p&gt;

&lt;p&gt;Cars drove (no pun intended) the last industrial revolution but are considered a bad asset to have (financially). More and more companies have entered the self-driving battlefield in the past few years. So we expect jaw-dropping results sooner rather than later.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cryptography v2
&lt;/h2&gt;

&lt;p&gt;Quantum computers might hit the reset button to the cryptography sector. I am not a cryptography expert. Though quite a few algorithms have based their success on computational hardness to break a ciphertext without the key(s).&lt;/p&gt;

&lt;p&gt;But Quantum computers can run exponentially faster than classic binary ones.  So there is a fear that cornerstone cryptographic technologies like SSL will be affected adversely. Maybe they become obsolete too. That sounds scary, as our communications, banking transactions, etc., will be exposed in transit.&lt;/p&gt;

&lt;p&gt;There is work in the &lt;a href="https://csrc.nist.gov/Projects/Post-Quantum-Cryptography" rel="noopener noreferrer"&gt;post-quantum&lt;/a&gt; area and hopefully, the countermeasures will be deployed before the...measures.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Thank you for reading this article, I hope you liked it. What are your thoughts on such developments?&lt;/p&gt;

</description>
      <category>trends</category>
    </item>
    <item>
      <title>How different are managed and serverless services?</title>
      <dc:creator>Periklis Gkolias</dc:creator>
      <pubDate>Sun, 16 May 2021 15:17:23 +0000</pubDate>
      <link>https://dev.to/perigk/how-different-are-managed-and-serverless-services-1moh</link>
      <guid>https://dev.to/perigk/how-different-are-managed-and-serverless-services-1moh</guid>
      <description>&lt;p&gt;A common confusion between people who have their first touchpoint with cloud technologies is&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What is the difference between serverless technologies and managed services?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.unsplash.com%2Fphoto-1517685352821-92cf88aee5a5%3Fixid%3DMnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8%26ixlib%3Drb-1.2.1%26auto%3Dformat%26fit%3Dcrop%26w%3D700%26q%3D80" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.unsplash.com%2Fphoto-1517685352821-92cf88aee5a5%3Fixid%3DMnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8%26ixlib%3Drb-1.2.1%26auto%3Dformat%26fit%3Dcrop%26w%3D700%26q%3D80" alt="Clouds. Credits to Zbynek Burival" width="700" height="525"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What Are Managed Services?
&lt;/h2&gt;

&lt;p&gt;A managed service enables the end-user to focus on &lt;em&gt;using&lt;/em&gt; a service rather &lt;em&gt;setting up&lt;/em&gt; the service. Not that the cloud provider can detect your thoughts. Rather any input the service requires is happening via a user-friendly form. Managed services fit into the category of PaaS products (Platform as a Service).&lt;/p&gt;

&lt;p&gt;One of the most famous managed services around is Amazon's &lt;a href="https://aws.amazon.com/elasticbeanstalk/" rel="noopener noreferrer"&gt;Elastic Beanstalk&lt;/a&gt;. In ElasticBeanstalk you can &lt;br&gt;
a) set up some parameters &lt;br&gt;
b) provide a docker image&lt;/p&gt;

&lt;p&gt;and the service will set up the rest for you. Things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Virtual machines&lt;/li&gt;
&lt;li&gt;A webserver (if needed)&lt;/li&gt;
&lt;li&gt;Expose your application to the public&lt;/li&gt;
&lt;li&gt;Monitoring and logging infrastructure&lt;/li&gt;
&lt;li&gt;Semi-automated configuration&lt;/li&gt;
&lt;li&gt;Load balancing&lt;/li&gt;
&lt;li&gt;Scaling etc.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You will be able to see the results of the Elastic Beanstalk operation e.g. the virtual machines, that were bootstrapped, as a result. Usually, you won't be able to access and fiddle around with them. Otherwise, it is not a managed service, you are the manager.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Ffit%2Ft%2F1600%2F480%2F1%2AFd6rk1k1FHPZcg4aK_OXtQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Ffit%2Ft%2F1600%2F480%2F1%2AFd6rk1k1FHPZcg4aK_OXtQ.png" alt="AWS ElasticBeanStalk" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So a managed service is essentially an abstraction of a... non-managed service. The abstraction is usually interfaced via web forms. Additionally in a managed service as a user, you don't bother with updates, patches, etc. &lt;/p&gt;

&lt;p&gt;This is because you have no access to the machines, someone has to do the laundry. Usually, you have only limited choices, if any, on the underlying system. That might be the operating system, version of the software used.&lt;/p&gt;

&lt;p&gt;Fairly simple, right? Let's go to serverless who is a bit more complex.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Does Serverless Mean?
&lt;/h2&gt;

&lt;p&gt;With the word serverless we refer to a different computing model, on the contrary to the "traditional" one which is server-oriented. In server-oriented computing (or serverfull if you like more sophisticated words), we use virtual or physical machines to set up and execute our application.&lt;/p&gt;

&lt;p&gt;Qualities like the availability and the performance of our applications are strongly bound to the health of your machines. &lt;/p&gt;

&lt;p&gt;Clusterisation solutions have been perfected over time (amongst other reasons) to make the decline of machines' health less and less important. &lt;/p&gt;

&lt;p&gt;What about the cost though? Why do we still pay for idle or underutilized servers (either in money or in lost CPU cycles)? If we need to scale a cluster of machines why does this take time?&lt;/p&gt;

&lt;p&gt;Here comes serverless. Serverless fits in the category of FaaS products (Function as a service).&lt;/p&gt;

&lt;p&gt;The name is a bit misleading; the server where "the code" runs does exist. &lt;/p&gt;

&lt;p&gt;Though you don't care, just like in managed services. Serverless goes a bit further. Your application runs, when it is needed and for just as long as it should. Idle times are eliminated.&lt;/p&gt;

&lt;p&gt;You never get to see the server in your virtual machine dashboard and of course, you don't know any details about it/them.&lt;/p&gt;

&lt;p&gt;Serverless implementations are usually event-driven. The instances are idle unless an event occurs. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;N.B: There might be a case where you have instructed them to not be idle which is known as "scale-to-one". They get busy and when done, they go idle again. If they get too busy they get support from other clones aka horizontal scaling.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;There are few benefits with serverless implementations. A big one is that they are scaling easily and effectively. That is because they are usually based on lightweight installation media, like Docker images/containers and there is no need to provision extra machines.&lt;/p&gt;

&lt;p&gt;In theory, with serverless computing, you have the whole cloud infrastructure of the provider on your feet. With the respective cost of course. :)&lt;/p&gt;

&lt;p&gt;Speaking about costs, serverless code is billed per second and at a higher rate than a machine lease. So it is recommended to run for relatively short workloads in time.&lt;/p&gt;

&lt;p&gt;Some providers put a hard limit on how long serverless code can run. this is to also avoid unpleasant surprises on your bill.&lt;/p&gt;

&lt;p&gt;One notable example of full-stack serverless and the cost benefits that come with it is acloud.guru. &lt;/p&gt;

&lt;p&gt;I remember studying for the AWS Architect certification using one of their courses (awesome content btw, highly recommended), and the instructor mentioning that "We pay 400$ per month with Serverless and it would be around 100000$ using servers".&lt;/p&gt;

&lt;p&gt;One of the cons serverless architectures have is on time-critical applications. Usually, newly deployed serverless functions, experience some kind of latency also known as "cold start". There are mitigations around that, called -surprise, surprise- "warm starts". But you may want to check other architectures for such a requirement.&lt;/p&gt;

&lt;p&gt;By the way, serverless solutions provided by the cloud providers are i.e AWS Lambda, Azure Functions are...managed too. That means you can set up your serverless architecture using high-level abstractions and input your preferences/configuration with provided forms.&lt;/p&gt;

&lt;h2&gt;
  
  
  Managed Services + Serverless
&lt;/h2&gt;

&lt;p&gt;As you have probably figured by now, serverless and managed services have some interesting similarities. We can sum them up like: Don't worry about the infrastructure, focus on your business value.&lt;/p&gt;

&lt;p&gt;There is a very interesting public service that comes with both flavors, managed and serverless. This is AWS Aurora. Aurora is a managed database, compatible with MySQL and Postgresql. There are two flavors of Aurora.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4a5kfchqpr6wytayayv5.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4a5kfchqpr6wytayayv5.jpeg" alt="Lend from David Zhang" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The managed one, where you set up a database using a form, and brings up a few virtual machines, and takes care of their health. You may just focus on deploying a good database schema. &lt;/p&gt;

&lt;p&gt;In this flavor, the database is running 24/7/365. Or at least that's the goal, as it offers very high availability and otherwise works in the same way as any database server you have used in the past.&lt;/p&gt;

&lt;p&gt;There is also the serverless flavor, where Aurora is set up as such. In that case, you have the storage "deployed" 24/7/365 as above. You cannot have serverless storage, which is contradictory (according to my current knowledge at least). :) &lt;/p&gt;

&lt;p&gt;The processes though, that perform data manipulations on your data, like fetch and update, can be easily converted to serverless functions. Aurora serverless can have significant cost reductions, as the data manipulations run on an as-needed basis. Though if the database is fairly busy the cost might be higher than in a serverfull architecture. That being said Aurora serverless is better used when your workload is intermittent and unpredictable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Openfaas
&lt;/h2&gt;

&lt;p&gt;During this article, I explained those technologies with public cloud providers.&lt;/p&gt;

&lt;p&gt;If you want to run serverless computing / FaaS without relying on a public provider you may use OpenFaas (future article to come). &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F27013154%3Fs%3D280%26v%3D4" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F27013154%3Fs%3D280%26v%3D4" alt="OpenFaaS logo" width="280" height="280"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This technology will not only give you more control over your architecture. It will also help you realize that the serverless model relies on clustering technologies like Kubernetes. Also, you will learn how you can set up scaling rules and cold/warm starts.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Thank you for reading till the end. We spoke about Serverless technologies and compared them with managed services. They have serious overlap but cover different needs too. If you need to add something I would love to hear your view.&lt;/p&gt;

</description>
      <category>cloudskills</category>
      <category>cloud</category>
      <category>cloudnative</category>
      <category>serverless</category>
    </item>
    <item>
      <title>What are your first-choice when it comes to picking convolutional neural network architectures and why?</title>
      <dc:creator>Periklis Gkolias</dc:creator>
      <pubDate>Fri, 02 Oct 2020 20:38:56 +0000</pubDate>
      <link>https://dev.to/perigk/what-are-your-first-choice-when-it-comes-to-picking-convolutional-neural-network-architectures-and-why-2di1</link>
      <guid>https://dev.to/perigk/what-are-your-first-choice-when-it-comes-to-picking-convolutional-neural-network-architectures-and-why-2di1</guid>
      <description></description>
      <category>machinelearning</category>
      <category>help</category>
    </item>
    <item>
      <title>Myths about self teaching that need to be busted</title>
      <dc:creator>Periklis Gkolias</dc:creator>
      <pubDate>Mon, 28 Sep 2020 16:22:42 +0000</pubDate>
      <link>https://dev.to/perigk/myths-about-self-teaching-that-need-to-be-busted-30ki</link>
      <guid>https://dev.to/perigk/myths-about-self-teaching-that-need-to-be-busted-30ki</guid>
      <description>&lt;p&gt;Self-teaching is the norm in the industry, many years now. Most of the technologies you learned during your official education 2, 10, or 30 years ago are almost obsolete in the industry.&lt;/p&gt;

&lt;p&gt;So, no official education would constantly give you everything you need, here, almost by design.&lt;/p&gt;

&lt;p&gt;But lately, it has been popularized too. The main reasons IMHO is the need for more "coding hands NOW" aka supply vs demand and the cost (in terms time and money) to go to the university (in terms of time and money again).&lt;/p&gt;

&lt;p&gt;Sadly with that popularization comes some level of...myths and things that are dangerous to spread; especially for people that are entering the field. Here is my view on them:&lt;/p&gt;

&lt;h2&gt;
  
  
  We are paid to google things
&lt;/h2&gt;

&lt;p&gt;Google searches are an important part of our day. Though that doesn't mean people google solutions and paste them blindly into their IDE (which happens of course).&lt;/p&gt;

&lt;p&gt;You need to have some certain level of competency to know WHAT to google. And some higher level of competency to filter out the crap from the results. That's how the following joke came up:&lt;/p&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Where did you find this crappy code?&lt;/li&gt;
&lt;li&gt;Stackoverflow&lt;/li&gt;
&lt;li&gt;From the question or the answer(s)?&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;As &lt;a href="https://www.developertoarchitect.com/" rel="noopener noreferrer"&gt;Mark Richards&lt;/a&gt; said to one of his books &lt;a href="https://www.amazon.com/Fundamentals-Software-Architecture-Comprehensive-Characteristics/dp/1492043451" rel="noopener noreferrer"&gt;Fundamentals Of Software Architecture&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Architecture is the stuff you can’t Google.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you think you are paid to google things and you feel an impostor, try becoming an architect. Let me know how it goes. :)&lt;/p&gt;

&lt;p&gt;Also, don't forget that some things MUST be googled.&lt;/p&gt;

&lt;p&gt;We are dealing with so many different technologies, libraries, and tools every day which will be close to impossible to remember more than the basics, in more than a few of them. Or if you are looking for research papers that were created 6 months ago you cant know it from the top of your head.&lt;/p&gt;

&lt;p&gt;Last but not least, most professions google a lot...but you wouldn't pick a cardiologist who is paid to Google. Don't be that guy/girl.&lt;/p&gt;

&lt;h2&gt;
  
  
  You don't need computer-science theory or math
&lt;/h2&gt;

&lt;p&gt;Oh, that's a very touchy topic.&lt;/p&gt;

&lt;p&gt;You will not need any advanced math if you are working as a backend web developer 95% of your time. I doubt you will ever need non-high school math if you are a frontend developer.&lt;/p&gt;

&lt;p&gt;Though, mathematics can teach you serious problem-solving skills which many people I have encountered throughout my career don't have.&lt;/p&gt;

&lt;p&gt;But what about game programmers? What about people that are working on machine learning and need to know serious linear algebra and statistics (you can be a practitioner without those, though)?&lt;/p&gt;

&lt;p&gt;Computer science theory, in a similar manner, will help you scale up.&lt;/p&gt;

&lt;p&gt;What if you are having issues with the network handling in your application? Will you go to the "network expert"? Will you just cross your hands because you are the in "the java-only team"?&lt;/p&gt;

&lt;p&gt;Can you be a security engineer (not expert) by not having deep knowledge of computer science theory? And no, Metasploit tutorials on YouTube are not enough.&lt;/p&gt;

&lt;p&gt;As a former colleague wrote on Twitter once: "You appreciate big-O complexity when you get your first AWS bill".&lt;/p&gt;

&lt;p&gt;I can continue with more examples, but I think you get the point. I am not saying to attend a university (I understand the high tuition fees, though many universities in Europe provide high-quality education at minimal or no costs), out of compulsion.&lt;/p&gt;

&lt;p&gt;But whatever way you choose, at one point or another if you want to scale up, &lt;strong&gt;you cannot escape the necessary reading&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;My advice is: Don't disregard and nag about something that is just challenging your comfort zone. This is how people grow. And think if you are better off as a one-trick pony or a swiss knife.&lt;/p&gt;

&lt;p&gt;Speaking about universities...&lt;/p&gt;

&lt;h2&gt;
  
  
  We should learn interviewing git and scrum in the universities
&lt;/h2&gt;

&lt;p&gt;The main mission of a university is to learn someone how to think and learn. And of course the foundation of the science you are about to serve.&lt;/p&gt;

&lt;p&gt;Yes, I am expecting to learn python or javascript instead of Cobol. But those would be the tools to implement a purpose, not the purpose.&lt;/p&gt;

&lt;p&gt;I would appreciate any seminars or talks to prepare me for my first days in the industry (and I didn't have those, back my days), though NOT EVERYONE IS CHOOSING A CORPORATE PATH. Their needs need to be respected as well.&lt;/p&gt;

&lt;h2&gt;
  
  
  You will certainly do it
&lt;/h2&gt;

&lt;p&gt;I like the encouragement there is in the dev community. Of course, there are stupid trolls and bitter people out there but their power is pretty much inexistent.&lt;/p&gt;

&lt;p&gt;Mastering any STEM profession takes grit, tenacity, and perseverance. But to project those you need (at the very least) to like what you do. Alas, as with all professions, it is not a field for everyone. Some people are here because of career prospects or peer pressure and not because they like it.&lt;/p&gt;

&lt;p&gt;Even though in some countries it is considered a taboo discussion topic, not everyone can do everything. And surely not equally good. Some countries in Europe do such filtering early on (like around the age of 13) and people tend to be happy with their choices without feeling inferior if they exercise an "unpopular profession'.&lt;/p&gt;

&lt;p&gt;So my advice is, pick what you like and ignore the pop-talk. Who knows, you might be an early rider of the next wave, which seems to be public health and space industry (again) at the moment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bootcamps can teach me everything I need
&lt;/h2&gt;

&lt;p&gt;Sadly a bootcamp can only prepare you for your first months/year in the industry.&lt;/p&gt;

&lt;p&gt;Not because they are of low quality. But because they can't teach you anything you might need in a few weeks. And if they could, you probably wouldn't be able to absorb them so fast as they are complex concepts by nature.&lt;/p&gt;

&lt;p&gt;I am almost ten years in the industry and still feel an impostor. 😃 Why do you think a few-months-bootcamp is all you need?&lt;/p&gt;

&lt;p&gt;If you choose a bootcamp for the start of your career, make sure you do not rely there completely. Make sure, as I mentioned above, to do the necessary reading sooner or later. Being a well-rounded engineer will never go out of fashion.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Thank you for reading this article. What do you think about such myths? Have you heard any other opinion that should be addressed?&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>beginners</category>
      <category>career</category>
    </item>
    <item>
      <title>A gRPC primer from a non-gRPC dev</title>
      <dc:creator>Periklis Gkolias</dc:creator>
      <pubDate>Tue, 15 Sep 2020 18:49:19 +0000</pubDate>
      <link>https://dev.to/perigk/a-grpc-primer-from-a-non-grpc-dev-3jbb</link>
      <guid>https://dev.to/perigk/a-grpc-primer-from-a-non-grpc-dev-3jbb</guid>
      <description>&lt;p&gt;I keep hearing about gRPC those days; not sure if the existing trend is soaring or it is a coincidence. In any case, as I have never dug to the concept, I thought it is a good time to do so.&lt;/p&gt;

&lt;h2&gt;
  
  
  High-level view of gRPC
&lt;/h2&gt;

&lt;p&gt;gRPC is an RPC framework, created by Google. Interestingly enough, the initial "g" stands for "general (purpose)" and not for "google".&lt;/p&gt;

&lt;p&gt;So gRPC is an RPC framework that can be used in any kind of situation where an RPC style communication is required.&lt;/p&gt;

&lt;p&gt;Usually, we are talking about communications between services.&lt;/p&gt;

&lt;p&gt;gRPC takes care of all the boring stuff that is required for communication between services, like defining service interfaces, communication formats, authentication, health checking, etc.&lt;/p&gt;

&lt;p&gt;But in order to do so, we need to do some upfront work first.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wait...What is RPC
&lt;/h2&gt;

&lt;p&gt;I understand you might have encountered some unknown terminologies in the previous paragraph.&lt;/p&gt;

&lt;p&gt;So, RPC is a technique (and used to be very popular before RESTful APIs take over) to make service-to-service calls.&lt;/p&gt;

&lt;p&gt;In that case service, A calls service B but from a code reader perspective, it looks like this is on the same machine.&lt;/p&gt;

&lt;p&gt;As with all high-quality abstractions, RPC does great work at hiding the low-level details that are required to perform network communication.&lt;/p&gt;

&lt;p&gt;RPC also has different conventions and semantics from REST. From example, whereas in RPC you can see calls like&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;POST /addNewProduct
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;with body&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{"company_id": 2}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;in REST you would do something like&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;POST /products
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;with the same body.&lt;/p&gt;

&lt;p&gt;Below is a nice diagram I borrowed from &lt;a href="https://www.geeksforgeeks.org/remote-procedure-call-rpc-in-operating-system/" rel="noopener noreferrer"&gt;geekstogeeks&lt;/a&gt; which shows an RPC client-server communication&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fstorage.googleapis.com%2Fslite-api-files-production%2Ffiles%2F~03dINw~4A%2F2dabd822-da4e-4280-9358-860fb50d895d%2Foperating-system-remote-procedure-call-1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fstorage.googleapis.com%2Fslite-api-files-production%2Ffiles%2F~03dINw~4A%2F2dabd822-da4e-4280-9358-860fb50d895d%2Foperating-system-remote-procedure-call-1.png" alt="operating-system-remote-procedure-call-1.png" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Protocol Buffers
&lt;/h2&gt;

&lt;p&gt;Protocol buffers are the most popular entity of the gRPC framework. They are part of the "upfront work we need to do" in order to leverage gRPC.&lt;/p&gt;

&lt;p&gt;What they do is to serialize and deserialize data at both ends of the communication. You can declare them in a struct-like format like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;message Point {
  int32 x = 1;
  int32 y = 2;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Easy, right?&lt;/p&gt;

&lt;p&gt;The best part is that protocol buffers get serialized in binary, which means (amongst other benefits) a smaller size (comparing to text formats like JSON) and faster transmission.&lt;/p&gt;

&lt;h2&gt;
  
  
  Supported languages
&lt;/h2&gt;

&lt;p&gt;gRPC supports officially most of the main programming languages. By the time of writing this article, those &lt;a href="https://grpc.io/docs/languages/" rel="noopener noreferrer"&gt;are&lt;/a&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;C/C++
C#
Dart
Go
Java
Kotlin/JVM
Node.js
Objective-C
PHP
Python
Ruby
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Where do I start
&lt;/h2&gt;

&lt;p&gt;Apart from grpc.io, I struggled to find free resources. If I could pick two those would be:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=Y92WWaZJl24" rel="noopener noreferrer"&gt;Building a Basic API with gRPC and Protobuf&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=dQK0VLahrDk" rel="noopener noreferrer"&gt;10000 Messages in 2.18 seconds with Python and gRPC&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you are willing to pay a few bucks, Stephane Maarek's &lt;a href="https://www.udemy.com/course/grpc-nodejs/" rel="noopener noreferrer"&gt;course&lt;/a&gt; will not let you down.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Thank you for reading this short article. I have to say gRPC is a very interesting framework that I recommend you into if you are working with (micro)services.&lt;/p&gt;

</description>
      <category>microservices</category>
      <category>webdev</category>
    </item>
    <item>
      <title>If a candidate has been cofounder in a startup, will that increase the possibility of you, handing them an offer?</title>
      <dc:creator>Periklis Gkolias</dc:creator>
      <pubDate>Fri, 11 Sep 2020 19:02:39 +0000</pubDate>
      <link>https://dev.to/perigk/if-a-candidate-has-been-cofounder-in-a-startup-will-that-increase-the-possibility-of-you-handing-them-an-offer-27o</link>
      <guid>https://dev.to/perigk/if-a-candidate-has-been-cofounder-in-a-startup-will-that-increase-the-possibility-of-you-handing-them-an-offer-27o</guid>
      <description></description>
      <category>discuss</category>
    </item>
    <item>
      <title>Git Bisect, the Undervalued Debugging Machine Gun</title>
      <dc:creator>Periklis Gkolias</dc:creator>
      <pubDate>Tue, 21 Jul 2020 15:24:21 +0000</pubDate>
      <link>https://dev.to/perigk/git-bisect-the-undervalued-debugging-machine-gun-b68</link>
      <guid>https://dev.to/perigk/git-bisect-the-undervalued-debugging-machine-gun-b68</guid>
      <description>&lt;p&gt;&lt;em&gt;Git bisect&lt;/em&gt; is a fantastic tool that could make debugging a breeze. Yet, very few people use it actively.&lt;/p&gt;

&lt;p&gt;In this quick article, I will showcase how &lt;em&gt;git bisect&lt;/em&gt; can point out the where your bug cause lies, fairly fast.&lt;/p&gt;

&lt;p&gt;But first, lets talk about...&lt;/p&gt;

&lt;h3&gt;
  
  
  Delta debugging
&lt;/h3&gt;

&lt;p&gt;Delta debugging is a process where you do many steps and in each one your plan is to eliminate half the "problem". You can think of it as the binary search of debugging. Or as the man who made the term popular, &lt;a href="https://andreas-zeller.info/" rel="noopener noreferrer"&gt;Andreas Zeller&lt;/a&gt; is saying:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Delta Debugging automates the scientific method of debugging. The basic idea of the scientific method is to establish a hypothesis on why something does not work. You test this hypothesis, and you refine or reject it depending on the test outcome. When debugging, people are doing this all the time. Manually. Delta Debugging automates this process&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;Git bisect&lt;/em&gt; is how we apply delta debugging with git.&lt;/p&gt;

&lt;p&gt;Assuming we have an injected bug and we try to find the root cause, in every step of our investigation for a solution, we eliminate half the solution space. Configuration, code, input...anything. Lets see an example to make it more clear.&lt;/p&gt;

&lt;h3&gt;
  
  
  Example
&lt;/h3&gt;

&lt;p&gt;Initialize a repository to track our work.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mkdir test_git_bisect &amp;amp;&amp;amp; cd test_git_bisect &amp;amp;&amp;amp; git init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let's say we will make a script that gets an epoch and converts to&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;datetime
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We will do that by using an input file (named epochs.txt) that &lt;em&gt;should&lt;/em&gt; contain only epochs.&lt;/p&gt;

&lt;p&gt;Please note, that in order to run a &lt;em&gt;git bisect&lt;/em&gt; smoothly, we need to have quite a few commits.&lt;/p&gt;

&lt;p&gt;The python script &lt;code&gt;parse_epochs.py&lt;/code&gt; we will use, nothing special here.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
from time import localtime, strftime

with open('epochs.txt', 'r') as handler:
    epochs = handler.readlines()
    for epoch in epochs:
        current_datetime = strftime('%Y-%m-%d %H:%M:%S', localtime(int(epoch)))
        print(current_datetime)

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

&lt;/div&gt;



&lt;p&gt;Let's commit the first change:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;git add . &amp;amp;&amp;amp; git commit -m "Created epoch parser"&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;then create the input:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;for i in {1..100}; do   sleep 3;   date +%s &amp;gt;&amp;gt; epochs.txt; done&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;which is essentially all epochs from the time we started the script (plus 3 seconds) till five minutes later, with a 3 seconds step.&lt;/p&gt;

&lt;p&gt;Again commit the change:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;git add . &amp;amp;&amp;amp; git commit -m "Generated the first version of input"&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;If we now run the initial script, we get all inputs parsed to dates:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ python3 parse_epochs.py
2020-07-21 16:08:39
2020-07-21 16:10:40
2020-07-21 16:10:43
2020-07-21 16:10:46
2020-07-21 16:10:49
2020-07-21 16:10:52
...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let's amend the input now to make it faulty:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;echo "random string" &amp;gt;&amp;gt; epochs.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and commit again&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git add . &amp;amp;&amp;amp; git commit -m "Added faulty input"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For the sake of entropy, to make the example more complex, let's add more faulty inputs - commits.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;echo "This is not an epoch" &amp;gt;&amp;gt; epochs.txt 
&amp;amp;&amp;amp; git add . &amp;amp;&amp;amp; git commit -m "Added faulty input v2"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;echo "Stop this, the script will break" &amp;gt;&amp;gt; epochs.txt
&amp;amp;&amp;amp; git add . &amp;amp;&amp;amp; git commit -m "Added faulty input v3"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here is the commit log we have created:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ git log --pretty=format:"%h - %an, %ar : %s"
b811d35 - Periklis Gkolias, 2 minutes ago: Added faulty input v3
dbf75cd - Periklis Gkolias, 2 minutes ago: Added faulty input v2
cbfa2f5 - Periklis Gkolias, 8 minutes ago: Added faulty input
d02eae8 - Periklis Gkolias, 20 minutes ago: Generated first version of input
a969f3d - Periklis Gkolias, 26 minutes ago: Created epoch parser
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;if we run the script again, it will obviously fail with the error:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Traceback (most recent call last):
  File "parse_epochs.py", line 6, in &amp;lt;module&amp;gt;
    current_datetime = strftime('%Y-%m-%d %H:%M:%S', localtime(int(epoch)))
ValueError: invalid literal for int() with base 10: 'random string\n'

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

&lt;/div&gt;



&lt;p&gt;Looks like we need &lt;em&gt;git bisect&lt;/em&gt; to fix this. To do so we need to start the investigation:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;git bisect start&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;and mark one commit as bad (the last one usually) and one commit as good. This would be the second commit when we generated the input:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git bisect bad b811d35 &amp;amp;&amp;amp; git bisect good d02eae8
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After that git bisect will split the history between the good and the bad commit in two. You can see that by doing&lt;br&gt;
&lt;br&gt;
 &lt;code&gt;git bisect visualize&lt;/code&gt;&lt;br&gt;
&lt;br&gt;
 to see the commits that are considered the culprits and&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git show
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;to print the currently checked out one, in our case&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dbf75cd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If we run the script it will still fail. So we mark the current commit as bad&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;git bisect bad dbf75cd&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;It is worth mentioning the output of git in that case:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git bisect bad dbf75cd
Bisecting: 0 revisions left to test after this (roughly 0 steps)
[cbfa2f5f52b7e8a0c3a510a151ac7653377cfae1] Added faulty input
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Git knows we are almost there. Yay!!!&lt;/p&gt;

&lt;p&gt;If we run the script again, it of course fails. And if we mark it as bad git says:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git bisect bad cbfa2f5
cbfa2f5f52b7e8a0c3a510a151ac7653377cfae1 is the first bad commit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;By then, you may either fix the bug or contact whoever committed the bad code/input/configuration. Here is how to get the details:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ git show -s --format='%an, %ae' cbfa2f5
Periklis Gkolias, myemail@domain.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;Thank you for reading this article. Feel free to comment on  your thoughts towards this great tool.&lt;/p&gt;

</description>
      <category>git</category>
      <category>productivity</category>
    </item>
    <item>
      <title>You set up a new dev team. What are the first things you would do to make things go as smoothly as possible?</title>
      <dc:creator>Periklis Gkolias</dc:creator>
      <pubDate>Mon, 25 May 2020 16:52:58 +0000</pubDate>
      <link>https://dev.to/perigk/you-set-up-a-new-dev-team-what-are-the-first-things-you-would-do-to-make-things-go-as-smoothly-as-possible-4jpf</link>
      <guid>https://dev.to/perigk/you-set-up-a-new-dev-team-what-are-the-first-things-you-would-do-to-make-things-go-as-smoothly-as-possible-4jpf</guid>
      <description>&lt;p&gt;Imagine you are setting up a new dev team. Either to your current company or to a new one.&lt;/p&gt;

&lt;p&gt;What are the first things you would do to safeguard the quality of your day to day life? Those could be technical or more procedural like:&lt;/p&gt;

&lt;p&gt;Setting up CI/CD, coding standards, remove technical debt, etc&lt;br&gt;
Setting out a clear process the various recurring meetings, ground rules like "leave the meeting if it is not valuable to you", evaluation processes, 1-1s, etc&lt;/p&gt;

</description>
      <category>watercooler</category>
      <category>discuss</category>
      <category>leadership</category>
    </item>
  </channel>
</rss>
