<?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: Scott Simontis</title>
    <description>The latest articles on DEV Community by Scott Simontis (@ssimontis).</description>
    <link>https://dev.to/ssimontis</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%2F149535%2F1b3be83f-c74f-4472-abb7-c3059129300c.jpg</url>
      <title>DEV Community: Scott Simontis</title>
      <link>https://dev.to/ssimontis</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ssimontis"/>
    <language>en</language>
    <item>
      <title>Resume Reflection: Life Before Programming</title>
      <dc:creator>Scott Simontis</dc:creator>
      <pubDate>Tue, 27 Apr 2021 18:05:28 +0000</pubDate>
      <link>https://dev.to/ssimontis/resume-reflection-life-before-programming-273b</link>
      <guid>https://dev.to/ssimontis/resume-reflection-life-before-programming-273b</guid>
      <description>&lt;p&gt;At the start of this year, I became a mentor for &lt;a href="https://twitter.com/UnderdogDevs"&gt;Underdog Devs&lt;/a&gt;. Without saying an intimate amount about my past, it is a group that resonates greatly with my life and I felt called to contribute my knowledge to help others in the community who were overcoming immense hardships in life. Many of our members are just beginning their programming journey, and they face the challenge of not having much direct programming experience.&lt;/p&gt;

&lt;p&gt;You should always highlight the skills you feel comfortable with and any projects you have been involved on; I am not trying to downplay the importance of those sections of the resume. One thing I have seen many people trying to break out into the industry struggle with is if they should post past jobs on their resume. As someone who has hired several people in the past, my opinion is that experiences outside of the programming world are fine if you can definitively prove that those skills are applicable to development.&lt;/p&gt;

&lt;p&gt;I'd like to give some examples from my own life. I dropped out of a Computer Science program to become an Emergency Medical Technician, and eventually made my way back to the software world. Some of these show things you can put on your resume directly, while others are things you can use in an interview to solidify your skills.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Not-So-Wonderful World of Retail
&lt;/h2&gt;

&lt;p&gt;My first job ever was working as a cashier for Banana Republic. I loved the discounts, but there are only so many times you can fold every shirt in the store before you start going insane. Nevertheless, I learned some important lessons.&lt;/p&gt;

&lt;h3&gt;
  
  
  Passion is a Fashion
&lt;/h3&gt;

&lt;p&gt;I used to spend several hours a week going through various fashion blogs and saving pictures of styles that resonated with me. At sixteen years old, I was already awkward enough and trying to suggest fashionable items to people twice my age felt incredibly intimidating. I had very opinionated views of style, and sometimes those views didn't vibe with the customer.&lt;/p&gt;

&lt;p&gt;I learned to separate style, which I consider as guiding rules in the world of clothes, from fashion, which I consider as an individual's personal expression of themselves. If I didn't see eye-to-eye with someone on their clothing choices, I could at least try to guide them with general principles and recommend some awesome basic staples we had.&lt;/p&gt;

&lt;p&gt;How in the world does this relate to programming? If you become deeply interesting in software development, I hope you develop some very strong opinions on craftsmanship. Not everyone will see eye-to-eye with you, and some of those people will unfortunately be the paying customer. Let passion drive your career, but understand when your opinions and experience may not apply to someone else and see if you can apply some less-intense guiding principles to the situation.&lt;/p&gt;

&lt;p&gt;If you caught that this this sub-heading is the name of a biography of the Clash, I want to high-five you and hope you friend me so we can nerd out about punk rock!&lt;/p&gt;

&lt;h2&gt;
  
  
  The Terror Of Food Service
&lt;/h2&gt;

&lt;p&gt;My second job would eventually land me as shift manager for an amazing burrito chain in the South that I feel I should not directly name to protect the innocent. I was insanely naïve going into this job, and even if it isn't something I would put on my resume, it taught me incredible lessons on my journey as a human being.&lt;/p&gt;

&lt;h3&gt;
  
  
  Make Yourself Valuable
&lt;/h3&gt;

&lt;p&gt;My duo on most shifts loved to party, and I will never speak ill of someone who shares the same passion. But he slipped up sometimes, arriving late for work and generally intoxicated. Please never do that at work. The only reason he didn't get fired was that he was willing to come in early every day to get the kitchen going, and absolutely no one else volunteered to deep-clean the kitchen.&lt;/p&gt;

&lt;p&gt;As I write this, I feel like it is kind of a cynical example. Don't give employers reasons to can you, but if you are willing to do the work no-one else volunteers for, you become an indispensable asset. Try to volunteer for everything you feel comfortable with. Unlike the food service, we developers have a wonderful trick for repetitive tasks: automate it!&lt;/p&gt;

&lt;h3&gt;
  
  
  Know When To Walk Away
&lt;/h3&gt;

&lt;p&gt;If a job ever makes you morally uncomfortable, I encourage you to leave it without a second thought. My general manager verbally harassed me after taking a shift that wasn't on my schedule because the above coworker was too intoxicated to deal with coworkers. If that happened today, I would laugh in his face and walk off the job. As a developer, you provide a valuable service and I hope that you know that you are a wonderful human being worthy of respect. If anyone ever makes you feel otherwise, you need to get away from that immediately. I promise you that there are other employers that respect your worth.&lt;/p&gt;

&lt;h2&gt;
  
  
  911
&lt;/h2&gt;

&lt;p&gt;If you have read this article, I feel you might be most curious about my time as an EMT. It was the most exciting, terrifying, and traumatizing thing I have ever done. If I did it today as opposed to six years ago, I probably would choose it over software. But at the time I wasn't cut out for the job and I am grateful I am able to see some lessons from it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Know Your Limits
&lt;/h3&gt;

&lt;p&gt;What I did, or didn't do, could literally mean the difference for life and death for my patients. In most of software, we don't have this pressure, although there are a few specific domains where it is still a prescient matter. There were times that I had to admit to my paramedic that I did not feel comfortable performing a skill. It felt shameful at first, but it shouldn't. Knowing your limits is far more valuable than arrogance or ignorance, and I hope there are still a few people alive today as evidence of that.&lt;/p&gt;

&lt;h3&gt;
  
  
  Grace Under Pressure
&lt;/h3&gt;

&lt;p&gt;I love the old school paramedics who taught me my trade. I was in absolute shock the first time I saw a cardiac arrest, and the only thing that brought me to action was my paramedic shoving me forward to take command and start delivering CPR. There's times where even if you know your limits, you will be forced into uncomfortable situations and you can choose whether to flounder or grow. Great leaders are incredible motivators. After 40 minutes of CPR, I was exhausted beyond belief. But that paramedic inspired me to reach deeper into myself than I thought was possible, and that patient ended up living.&lt;/p&gt;

&lt;p&gt;I learned as an electrical engineer that the two best problem solving strategies were to start from a known good and divide the problem in half, and I have yet to meet a situation where those two guides didn't lead to a definitive diagnosis. It got my through calls where neither my medic nor I had any idea what was going on when we walked in, and it has served me well in the software world since.&lt;/p&gt;

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

&lt;p&gt;Sure, you didn't use JavaScript at your past few jobs. But think about the experiences that you gained which apply directly to software engineering. You are not a stack of skills, you are an incredible human being with a story to tell! I hope to hear how your prior life experiences helped you with a development career!&lt;/p&gt;

</description>
      <category>career</category>
      <category>resume</category>
      <category>management</category>
    </item>
    <item>
      <title>FlowGoal: An AI-powered Inbox Assistant</title>
      <dc:creator>Scott Simontis</dc:creator>
      <pubDate>Wed, 08 Apr 2020 01:01:34 +0000</pubDate>
      <link>https://dev.to/ssimontis/flowgoal-an-ai-powered-inbox-assistant-3hdf</link>
      <guid>https://dev.to/ssimontis/flowgoal-an-ai-powered-inbox-assistant-3hdf</guid>
      <description>&lt;p&gt;I have been wanting to learn machine learning for a long time now, but have always found a convenient excuse or shiny object to keep me away from it. The statistics aspect of machine learning terrifies me; probstat is one of the several key factors why I dropped out of university. I am in no hurry to visit that feeling of frustration and hopelessness again, but how much longer will I let my fears hold me back?&lt;/p&gt;

&lt;p&gt;I've actually done a system with Twilio many years ago. My best friend was a volunteer firefighter in South Australia at the time, and we bonded over our shared love of music, our first responder careers, and fascination with programming. All volunteer units in his region were still using Motorola pages to receive dispatches to calls, which was inefficient, cumbersome, and sometimes lethal. During a major bushfire, the pager network went down and several firefighters did not receive orders to evacuate immediately.&lt;/p&gt;

&lt;p&gt;Their sacrifice will not be forgotten. We could do our part to ensure that the same mistakes were never repeated. With a combination of patent documents, USB TV scanners and open-source SDR software, we reverse engineered the protocol. We were able to send dispatches to firefighters as text messages, and we had a large majority of volunteer units in the region subscribing to our service. It was fun while it lasted and I learned a lot, but one of our coworkers was embezzling and had drained the company dry behind our backs. Working from across the world, it was easy for me to step away and avoid the infighting that brought the remains of the company to the ground in a not-so-dignified series of dramatic events.&lt;/p&gt;

&lt;p&gt;Originally, I figured I would do the same concept! Except reverse engineering radio signals might be against the contest's terms of use, so I had to broaden my horizon. Starting at the 30,000 unopened e-mails in Thunderbird, I wondered if I could find a way to automate the dumpster fire that is my inbox. And at that moment, &lt;em&gt;FlowGoal&lt;/em&gt; was born.&lt;/p&gt;

&lt;p&gt;I hope to use Natural Language Processing to find out what really matters within my inbox. Twilio's SMS API can text me if it appears that a server is going down or if I have a potential business opportunity. If an e-mail thread goes back and forth too long, my extension will offer to let me place a VOIP call with the other party and see if five minutes on the phone can avoid another dozen replies. New leads can be validated for legitimate phone numbers. For a guy who doesn't really know any ML it is quite ambitious but let's see what I can manage!&lt;/p&gt;

&lt;p&gt;Originally, I wanted to do this all in F# or Clojure. It's been a few years since I have worked with F# extensively, and I barely know closure. I wanted to add a novel technology to the mix, but I have enough of a challenge on my hands. I will work in C#/ASP.NET Core on the background since I am most familiar with that tech stack, although I will let myself try Dart to write the extension!&lt;/p&gt;

&lt;p&gt;And so it begins! GitLab repo coming soon!&lt;/p&gt;

</description>
      <category>twiliohackathon</category>
      <category>machinelearning</category>
      <category>startup</category>
      <category>dotnet</category>
    </item>
    <item>
      <title>Enabling TLS Just got a Little Bit Easier</title>
      <dc:creator>Scott Simontis</dc:creator>
      <pubDate>Tue, 27 Aug 2019 03:32:50 +0000</pubDate>
      <link>https://dev.to/ssimontis/enabling-tls-just-got-a-little-bit-easier-1igk</link>
      <guid>https://dev.to/ssimontis/enabling-tls-just-got-a-little-bit-easier-1igk</guid>
      <description>&lt;p&gt;We all know that enabling HTTPS is one of the ten commandments of web development, but it's always a pain and there's always a brilliant justification to put it off until later. Well, not anymore. Mozilla has released a &lt;a href="https://ssl-config.mozilla.org/"&gt;generator that will write your secure configuration automatically&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Whaaaa? It's true! It supports a number of webservers, including nginx and Apache, database connections (PostgreSQL and MySQL) and even some cloud resources (AWS). Several more web servers are offered, some of which I don't feel like Googling right now.&lt;/p&gt;

&lt;p&gt;You choose from one of three security levels after you have selected the system to configure. &lt;strong&gt;Modern&lt;/strong&gt; supports TLS1.3 and is great if you have no need for backwards compatibility of any sort. Unfortunately, that's not a reality we work in, so an &lt;strong&gt;Intermediate&lt;/strong&gt; general-case option is available. There's an &lt;strong&gt;Old&lt;/strong&gt; option which is listed as a last resort and should be avoided unless you have tested and Intermediate isn't working. &lt;/p&gt;

&lt;p&gt;You can even control the version of OpenSSL and the server that you are using. I couldn't find any combinations of server versions and OpenSSL versions that drastically affected configurations of interest to me, but it's there for you to check out.&lt;/p&gt;

&lt;p&gt;The only option I needed to look up was &lt;strong&gt;OCSP Stapling&lt;/strong&gt;. I still don't know that I have mastered it, but here's a shot at explaining it in my own words: It is an alternative to &lt;em&gt;Certificate Revocation Lists&lt;/em&gt; which your browser uses to find out if an SSL certificate is still trustworthy down the entire certificate chain to the root certificate. &lt;em&gt;OCSP Stapling&lt;/em&gt; lets you make a request to OCSP servers and do this validation for the user.&lt;/p&gt;

&lt;p&gt;That sounds like something a shady website could take advantage of, right? Actually, it is better for your privacy. Since your browser isn't doing the Revocation list check, the Certificate Authority does not have a logged request from your browser. The Certificate Status Request is sent to your browser during the TLS handshake process, so your browser can verify that the response is legit. It also speeds up the handshake process because you don't need a connection to the CA!&lt;/p&gt;

&lt;p&gt;If that last paragraph sounded like gibberish to you, let me know and I will try to create a post going into how security certificates works. Which will probably end up being a series because it's a LOT of information!&lt;/p&gt;

&lt;p&gt;Here is what I have been given for PostgreSQL 11.3, on the &lt;strong&gt;Intermediate&lt;/strong&gt; setting, because PostgreSQL apparently doesn't support TLS 1.3 exclusively at this time. I didn't do that, and I wouldn't have known I needed this config snippet either.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 2019-08-27, https://ssl-config.mozilla.org/#server=postgresql&amp;amp;server-version=11.3&amp;amp;config=intermediate&lt;/span&gt;
ssl &lt;span class="o"&gt;=&lt;/span&gt; on

ssl_cert_file &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'/path/to/signed_cert_plus_intermediates'&lt;/span&gt;
ssl_key_file &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'/path/to/private_key'&lt;/span&gt;

&lt;span class="c"&gt;# curl https://ssl-config.mozilla.org/ffdhe2048.txt &amp;gt; /path/to/dhparam.pem&lt;/span&gt;
ssl_dh_params_file &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'/path/to/dhparam.pem'&lt;/span&gt;

ssl_ciphers &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In case you missed it, &lt;a href="https://ssl-config.mozilla.org"&gt;here is the link again&lt;/a&gt;. Grab your LetsEncrypt certificate and start locking things down! If you don't know how to obtain a free certificate from LetsEncrypt, please let me know in the comments and I will make sure to write an article that helps you out.&lt;/p&gt;

&lt;p&gt;Happy configuring everyone, and congratulations on another Monday survived!&lt;/p&gt;

</description>
      <category>security</category>
      <category>webdev</category>
      <category>sql</category>
      <category>dev</category>
    </item>
    <item>
      <title>IoT Design Whiteboard Challenge</title>
      <dc:creator>Scott Simontis</dc:creator>
      <pubDate>Tue, 30 Jul 2019 00:13:32 +0000</pubDate>
      <link>https://dev.to/ssimontis/iot-design-whiteboard-challenge-26gl</link>
      <guid>https://dev.to/ssimontis/iot-design-whiteboard-challenge-26gl</guid>
      <description>&lt;p&gt;I keep telling myself to hold off on writing an article; wait until I finish my website. Since that isn't happening, I wanted to go ahead and get an article out there!&lt;/p&gt;

&lt;p&gt;This one is an interview prep question. Access to a whiteboard may be helpful, but you won't need to code. I'm sick of data structures and algorithms questions and felt like we could use some more questions on architecture and systems design.&lt;/p&gt;

&lt;p&gt;Here's the assignment:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Your team has been tasked with gathering data from a company's fleet of diesel  trucks. How would you go about designing a system that records data from the    trucks and sends it to the cloud for processing and reporting? If certain events are considered operational emergencies, how would you go about ensuring that supervisors get notified of the emergency on their mobile phone? Think about what systems need to be connected, what cloud offerings you would take advantage of, how you would transform your data, what protocols you would use, and possible points of failure.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;You can take a photo of your design on a whiteboard, or snap a photo of your solution drawn out on paper. Or respond on your blog. Or use PlantUML or mermaid or another tool. The important part is that you try it!&lt;/p&gt;

&lt;p&gt;Tomorrow, I will post a reference answer. If you choose to answer the question, I will ask you some follow up questions in the comments.&lt;/p&gt;

&lt;p&gt;Happy whiteboarding everyone!&lt;/p&gt;

</description>
      <category>iot</category>
      <category>architecture</category>
      <category>career</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Let's See Your Awesome Workspaces!</title>
      <dc:creator>Scott Simontis</dc:creator>
      <pubDate>Sun, 31 Mar 2019 23:50:46 +0000</pubDate>
      <link>https://dev.to/ssimontis/let-s-see-your-awesome-workspaces-3n2n</link>
      <guid>https://dev.to/ssimontis/let-s-see-your-awesome-workspaces-3n2n</guid>
      <description>&lt;p&gt;Curious how everyone else likes to have their environment set up. Mine is a disaster right now, but man there's a lot of cool computers in that mess :)&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F8ssunt5fyxhsg6c91rrf.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F8ssunt5fyxhsg6c91rrf.jpg" alt="Desk with MacBook Pro, aging desktop and 4 monitors"&gt;&lt;/a&gt;&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Ft1e2mlmsr1blnu52pbto.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Ft1e2mlmsr1blnu52pbto.jpg" alt="Makeshift server rack and some out of control Ethernet cables"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I do most of my work on my 2013 MacBook Pro and my good ol' desktop from university (2 rightmost screens). After a good 6 years of service, he's finally getting replaced with a powerhouse I ordered yesterday.&lt;/p&gt;

&lt;p&gt;The Poweredge R720 that is gracefully propped up on the windowsill is still in search of a purpose...I wanted to turn it into a private cloud server and mess around with Docker &amp;amp; DevOps tools a lot. Unfortunately job hunting has taken me away from being able to load some cool stuff on it :(&lt;/p&gt;

</description>
      <category>homelabs</category>
      <category>showoffsunday</category>
      <category>noplacelikelocalhost</category>
    </item>
  </channel>
</rss>
