<?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: Matthew Perez</title>
    <description>The latest articles on DEV Community by Matthew Perez (@mattjperez).</description>
    <link>https://dev.to/mattjperez</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%2F359972%2F65373569-23a3-4eaf-b11d-fb93c5d7e046.jpeg</url>
      <title>DEV Community: Matthew Perez</title>
      <link>https://dev.to/mattjperez</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mattjperez"/>
    <language>en</language>
    <item>
      <title>How Initial Screenings SHOULD Be Done</title>
      <dc:creator>Matthew Perez</dc:creator>
      <pubDate>Sat, 24 Oct 2020 01:47:03 +0000</pubDate>
      <link>https://dev.to/mattjperez/how-initial-screenings-should-be-done-429c</link>
      <guid>https://dev.to/mattjperez/how-initial-screenings-should-be-done-429c</guid>
      <description>&lt;p&gt;Disclaimer: This post circulates around my experience with Cloudflare's initial screening process. I'm not affiliated with Cloudflare but I am an active applicant. &lt;/p&gt;

&lt;h1&gt;
  
  
  How It Works
&lt;/h1&gt;

&lt;p&gt;After applying to Cloudflare for an entry-level engineering role, I received an email with two public repo links. The first was labeled as "general" and "required", the second was an optional challenge for applicants interested in systems engineering. &lt;/p&gt;

&lt;p&gt;The first task was about utilizing Cloudflare's platform and tools to make a serverless webapp that, according to specification, 1) fetches a blank static website, 2) rewrites the site's HTML, and 3) serves the modified site to the user.&lt;/p&gt;

&lt;p&gt;The second, optional task was to make a cli tool that measures a website's speed in responding to requests &lt;strong&gt;without&lt;/strong&gt; using any libraries to handle the HTTP request. &lt;/p&gt;

&lt;h1&gt;
  
  
  Why this is the best dang screening process I've seen
&lt;/h1&gt;

&lt;p&gt;The initial reactions I got after explaining it to my friends were along the lines of &lt;em&gt;"What the heck?"&lt;/em&gt; and &lt;em&gt;"That's way too much for a screening!"&lt;/em&gt;. &lt;/p&gt;

&lt;p&gt;But what are our alternatives? Leetcode and hackerrank challenges? Whiteboarding? Portfolio projects? Keywords on a resume? Video-game style aptitude tests? &lt;strong&gt;All of these metrics have their caveats&lt;/strong&gt;. Most of them don't have any direct translation to work that will actually be done at a particular company and if the person is a good fit for your projects. &lt;/p&gt;

&lt;p&gt;Cloudflare's approach does multiple things I haven't seen anywhere else. &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;It tests a person's ability to understand and use their product&lt;/li&gt;
&lt;li&gt;It tests a person's ability to read and utilize their documentation to replicate an actual use-case of their customers. &lt;/li&gt;
&lt;li&gt;It educates applicants on their products, bringing in more users to their platform, regardless of the applicants' results.&lt;/li&gt;
&lt;li&gt;Because the general test is primarily about using their tools (with some JavaScript sprinkled in), it's fairly language agnostic.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IT LEAVES APPLICANTS WITH A PORTFOLIO PROJECT!🤯&lt;/strong&gt; (two if you do both assignments)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;KACHOW!💥 &lt;a href="https://general-assignment.mperez.workers.dev/%F0%9F%92%A5"&gt;https://general-assignment.mperez.workers.dev/💥&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When was the last time you left a screening challenge with something you can show off? I can't even show off my college assignments.&lt;/p&gt;

&lt;h1&gt;
  
  
  But how does this measure their ability to invert a binary tree???
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;It doesn't!&lt;/em&gt; And how often have you actually had to do that for an application? Do you use recursion for the sake of using recursion or because it's actually the most feasible solution for you?&lt;/p&gt;

&lt;p&gt;But it's a good point, how can you measure a person's fundamentals? That's where the second assignment comes in. &lt;/p&gt;

&lt;h1&gt;
  
  
  The second assignment
&lt;/h1&gt;

&lt;p&gt;It involves creating a command line tool that lets you measure your site's performance (response times to HTTP requests). Here are some things you &lt;em&gt;could&lt;/em&gt; gleam about a person's fundamentals with this kind of assessment:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Input streams (stdin, stdout, stderr)&lt;/li&gt;
&lt;li&gt;web sockets&lt;/li&gt;
&lt;li&gt;multithreading (if you want to make it fast)&lt;/li&gt;
&lt;li&gt;data structures (storing and retrieving results)&lt;/li&gt;
&lt;li&gt;algorithms (storing and retrieving results)&lt;/li&gt;
&lt;li&gt;tooling (package managers and makefiles)&lt;/li&gt;
&lt;li&gt;code hygiene&lt;/li&gt;
&lt;/ol&gt;

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

&lt;p&gt;Granted, making these types of great screening assignments isn't easy. They take time, thought, and effort. Kind of like writing good unit and integration tests. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Is this scalable?&lt;/em&gt; Probably not as much as other methods, but even marketing has this type of approach. You can increase the size of your net, or you can raise the quality of those that make it even midway into your hiring funnel. You can even get useful feedback to improve your product or documentation (another possible assignment). &lt;/p&gt;

&lt;p&gt;All in all, this was the best screening challenge I've ever taken part in. I hope more companies do the same. While it may seem like a pain to develop these types of assessments, treat it like unit and integration tests for people looking to join your main branch. &lt;/p&gt;

&lt;p&gt;No matter the final result, applicants can walk away having learned something and with a shiny new project or two to help them with their job-hunt.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you know of any companies that screen this way, please mention them in the comments! Thanks!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Only the work of those that were issued the challenge will be considered. The assignments also appear to be seasonal so you will most likely receive a different challenge (another great feature for companies that take the time to do this, they're recyclable!).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note2:&lt;/strong&gt; The flaws of portfolio projects, in my opinion, is that unless two candidates did the same project you can't compare them. The assessors could value different things, making this a moving target. Finally, good projects are hard to come up with and take a lot of time; time you could be using to job hunt. This approach lets you do both at once.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>The Dao of Gradient Descent</title>
      <dc:creator>Matthew Perez</dc:creator>
      <pubDate>Wed, 22 Jul 2020 21:06:02 +0000</pubDate>
      <link>https://dev.to/mattjperez/the-dao-of-gradient-descent-4bge</link>
      <guid>https://dev.to/mattjperez/the-dao-of-gradient-descent-4bge</guid>
      <description>&lt;h1&gt;
  
  
  Gradient Descent
&lt;/h1&gt;

&lt;p&gt;It's a technique used to find the optimum setting of something. The perfect temperature for the perfect amount of time to bake the perfect cake. The process is similar to baking thousands of cakes, and each time, slightly turning the dial in a way that would bring you closer to the right outcome. &lt;/p&gt;

&lt;p&gt;People commonly use the analogy of standing somewhere on a mountain range, blindfolded, trying to make your way to the lowest point (global minima).&lt;/p&gt;

&lt;p&gt;Techniques have been developed to reduce the time it takes to get to this optimum point, one of which is called momentum. It's very similar to rolling a ball down the mountain; if you're in a steep area, it will roll downward even faster. Another technique called annealing is where you take large steps at first then smaller ones. &lt;/p&gt;

&lt;p&gt;Probably the most popular version is called Stochastic Gradient Descent (SGD), which has the effect of teleporting you around the mountain range but would keep you from getting stuck in a rut somewhere.  &lt;/p&gt;

&lt;p&gt;There are quite a few varieties of gradient descent, all with the same purpose— Find the minima. Find the right minima, find the optimum solution.&lt;/p&gt;

&lt;h1&gt;
  
  
  Optimizing Life
&lt;/h1&gt;

&lt;p&gt;When asked if hungry, instead of a yes or no, I start thinking about how eating now would benefit me vs 30 minutes from now. I do this a lot, with everything. Making plans with friends, which road to take, chocolate or vanilla, etc.(This will annoy your partner and I do not recommend it.)&lt;/p&gt;

&lt;p&gt;You can see how someone with my personality was attracted to the concept of optimization. When I decided to study data science, I spent a month finding all the best resources and building a curriculum. In the end, I felt I had all my bases covered. Coding from Corey Schafer, linear algebra from Strang, probability from Blitzstein,  machine learning from Hastie/Tibshirani/Witten, neural networks from Karpathy, etc. &lt;/p&gt;

&lt;p&gt;For six months I grinded through everything. Before that, I had never used a greek symbol for math nor never coded more than a for-loop. Grinding really was the appropriate word for it. Sometimes it felt like I was stuck in quicksand and fighting to move forward even a few inches.&lt;/p&gt;

&lt;p&gt;Optimum ran my brain's CPU higher than Google Chrome on Windows. I'm surprised I lasted as long as I did. &lt;br&gt;
Looking back on it, I wasted a lot of time just on letting my brain cool down from doing something I was no longer enjoying.&lt;/p&gt;

&lt;p&gt;In the end, I'm glad I did it, but I don't know if I'd take the same approach again. &lt;/p&gt;

&lt;h1&gt;
  
  
  What does this have to do with Gradient Descent?
&lt;/h1&gt;

&lt;p&gt;My approach was probably most similar to Batch Gradient Descent. For those that don't know, it is not the most efficient method, especially when applied to something with a large set of features (subjects in my case). It results in the straightest line to the goal but is the slowest and most painful to watch of the variations (you can see it on any video that compares the different techniques). &lt;/p&gt;

&lt;p&gt;After taking a break and looking back on the experience, something about it all reminded me of stoicism. Going back to the analogy of standing blindfolded in the mountain range, the algorithm doesn't know where optimum is. It only knows two things: the slope beneath its feet and how big a step it will take next.  &lt;/p&gt;

&lt;p&gt;It was somewhat comforting to think that even these algorithms specifically designed to find the perfect solution, at any given point, are just as lost as I am. &lt;/p&gt;

&lt;p&gt;Here are some other conclusions this thought experiment led me to. They might not be new, but connecting them to something rooted in mathematics made me appreciate it a bit more.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No matter what method you choose, you'll never reach your goal in a single step.&lt;/li&gt;
&lt;li&gt;The fastest path often isn't a straight line. &lt;/li&gt;
&lt;li&gt;Some time spent randomly exploring can help you put your previous assumptions into perspective, preventing you from stopping at local minima. &lt;/li&gt;
&lt;li&gt;Ride the momentum when you feel the pull. You'll go farther with less effort. &lt;/li&gt;
&lt;li&gt;Every map is different. Areas where one experiences momentum will differ from person to person. &lt;/li&gt;
&lt;li&gt;Use methods that will fit within your resource limits; mainly time and energy. &lt;/li&gt;
&lt;li&gt;One problem's local minima is another one's global, and vise versa. &lt;/li&gt;
&lt;li&gt;Even with the best techniques, convergence can be tricky. Often 'good enough' and moving on to the next parameter is better than perfection in one aspect of a model.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you made it this far, you might have noticed this is not the best written work in the last century. It’s more of a rambling. But this rambling is more real than any coherent thought or perfect thought that’s never left my mind.&lt;/p&gt;

&lt;p&gt;I read a joke somewhere that says it best. “If a jupyter notebook found the cure for cancer, would anyone hear it?” or a fortune cookie I used to carry with me that said “thoughts without actions will never be bigger than the neuron that created it”.&lt;/p&gt;

&lt;p&gt;This brings us to our last bullet point.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It all starts with a single, imperfect step.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Note- I haven't started looking at how superconvergence might apply, but it's on my to-do list. &lt;/p&gt;

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