<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://raulingaverage.dev//feed.xml" rel="self" type="application/atom+xml" /><link href="https://raulingaverage.dev//" rel="alternate" type="text/html" /><updated>2026-01-24T09:28:02+00:00</updated><id>https://raulingaverage.dev//feed.xml</id><title type="html">Raul Maldonado</title><subtitle>Enabling you or your business with resources, data concepts, or puns/jokes!</subtitle><author><name>Raul Maldonado</name></author><entry><title type="html">Transforming Analytics Support With AI</title><link href="https://raulingaverage.dev//Transforming-Analytics-Support-With-AI/" rel="alternate" type="text/html" title="Transforming Analytics Support With AI" /><published>2025-06-01T00:00:00+00:00</published><updated>2025-06-01T00:00:00+00:00</updated><id>https://raulingaverage.dev//Transforming-Analytics-Support-With-AI</id><content type="html" xml:base="https://raulingaverage.dev//Transforming-Analytics-Support-With-AI/"><![CDATA[<p>As a data professional with deep experience, I lead a team for a short stint and built two analytics platforms in the era of “Modern Data Analytics”, focusing on, yes, analytics, strategic planning, and stakeholder relations teams focused on fostering positive relationships within our internal divisions &amp; teams. We provided analytics, analytics support, and and assistance on internal analytics services like dashboards, ad-hoc queries in Looker, and even data pipelines, while also gathering feedback from stakeholders and sharing it with business leads.</p>

<p>To meet an evolving support demand, teams have relentlessly worked on optimizing support workflows and enhancing productivity. This could look like creating automation solutions in Slack, Analytics Request Forms, to even deep documentation and training series. Despite these advancements, we still encounter repetitive questions even though comprehensive documentation exists…</p>

<p>This prompts us to consider…what’s next? Consider AI-driven self-service layer.</p>

<p>The advent of ChatGPT and other AI technologies heralds a new era in artificial intelligence, marking a significant milestone in how businesses operate. AI’s transformative potential is undeniable—it’s automating mundane tasks, enhancing decision-making, and optimizing efficiency across various industries such as the following:</p>

<p>For Stakeholders: Promptly resolving their questions without waiting for a support analyst, leading to faster issue resolution and increased satisfaction.</p>

<p>For Executives: Quickly retrieving relevant information from documentation, aiding in efficiently addressing customer requests.</p>

<p>For Support Teams: Significantly reducing incoming support requests and the resulting support tickets as stakeholders use true self-service analytics.</p>

<p>In summary, here’s how AI has proven to be highly beneficial in stakeholder support:</p>

<p>Efficiency Enhanced: (Gen)AI excels in handling routine inquiries, quickly resolving L1/L2 support questions using information from transformed source system data. This allows analysts to focus on more complex issues, optimizing overall productivity.</p>

<p>Self-Service Capabilities: AI empowers customers to resolve their questions promptly, leading to faster issue resolution and increased satisfaction. Moreover, focusing on the critical business questions</p>

<p>Knowledge Management: We can leverage AI-based tools or feature to analyze historical support interactions and generate draft documentation, which is then refined into comprehensive resources for our knowledge management spaces.</p>

<p>While the results are promising, we must set realistic expectations. There is a common misconception that AI can handle everything and make human support unnecessary. While AI is effective, it has its limitations. Here are some considerations:</p>

<p>Have Right Expectations: AI is widely used and has proven useful in many areas, including Customer Success, Account Executives, and other stakeholder support process. However, the nature of support requests greatly impacts AI’s performance. Generative AI performs much better in L1/L2 support but is less effective in handling complex issues that require human intervention, such as permissions/access problems or service failures.</p>

<p>Balanced Approach: Finding the right balance between AI and human interaction in the support processes is vital. Ensuring customer satisfaction and maintaining trust while optimizing efficiency with AI is crucial. While generative AI can enhance efficiency and personalization in customer support, the importance of human touchpoints and empathy in the overall customer experience should not be overlooked.</p>

<p>The Importance of Good Documentation: The effectiveness of AI support is heavily influenced by the quality of documentation. Comprehensive, well-structured documentation is the foundation for AI to deliver accurate and efficient support. A robust knowledge base enables AI to resolve common issues quickly, enhancing user satisfaction and reducing resolution times.</p>

<p>Continuous Improvement: Leveraging analytics data and AI-generated reports allows our teams to continuously enhance the quality and completeness of our documentation.</p>

<p>In conclusion, AI is a game-changer for stakeholders. By setting realistic expectations and focusing on comprehensive documentation, we can drive innovation, streamline workflows, and unlock new growth opportunities. I encourage data professionals to embrace this balanced approach to fully realize the benefits of AI while appreciating its limitations.</p>]]></content><author><name>Raul Maldonado</name></author><category term="Presentation" /><summary type="html"><![CDATA[As a data professional with deep experience, I lead a team for a short stint and built two analytics platforms in the era of “Modern Data Analytics”, focusing on, yes, analytics, strategic planning, and stakeholder relations teams focused on fostering positive relationships within our internal divisions &amp; teams. We provided analytics, analytics support, and and assistance on internal analytics services like dashboards, ad-hoc queries in Looker, and even data pipelines, while also gathering feedback from stakeholders and sharing it with business leads.]]></summary></entry><entry><title type="html">Public Speaking Tips</title><link href="https://raulingaverage.dev//Public-Speaking/" rel="alternate" type="text/html" title="Public Speaking Tips" /><published>2023-10-05T00:00:00+00:00</published><updated>2023-10-05T00:00:00+00:00</updated><id>https://raulingaverage.dev//Public-Speaking</id><content type="html" xml:base="https://raulingaverage.dev//Public-Speaking/"><![CDATA[<h1 id="summary">Summary</h1>

<p>Every professional must have the ability to make an impact on the people around you. If one cannot command attention and make ones advice heard, what use are they? But the question that flows from this is too rarely asked. And it’s one that too few of us learn at the start of our careers. The consequence is that your ability to make an impact grows slowly as you acquire these skills. Seasoned professionals at the peak of their career can influence their peers and clients because they have gained experience and expertise in their professional domain – but also, because they have learned to present their ideas with impact. The behavior that will give you professional impact are equally simple to explain, however, and, with a little practice, you can easily master them.</p>

<h2 id="1-ramping-up-and-argument">1. Ramping up and Argument</h2>

<p>The ability to transition your argument into the start of the topic to the main point, is important for public speaking. The maturity of this looks like someone saying something compelling. But how can you pursue others to be convinced and moved to take an action?</p>

<p>To achieve this, you must speak with intention by using a combination of cues (psychological and emotional) to change the way your listeners think and act.</p>

<p>If you are not landing the convincing part, then you may be in 2nd to last or prior levels of communication, in the following:</p>

<ol>
  <li>Make something sound compelling</li>
  <li>Information Absorbed</li>
  <li>Persuasion</li>
  <li>creating ways to ensure they remember the important parts of what you say</li>
  <li>influencing people to change their minds <code class="language-plaintext highlighter-rouge">(This is not us)</code></li>
</ol>

<h2 id="2-focus-on-the-clarity-and-simplicity-of-message">2. Focus on the clarity and simplicity of message</h2>

<p>There are many ways to build the impact you want. So, we need to be selective. Treasury advice is complex and subtle. I get it. But you are an expert, and that gives you a handicap when you want to communicate with impact. It’s called ‘the curse of knowledge’. You don’t have one point to make; you have 10. And you know that the cause-effect linkages form a web of weak and strong interactions – not a chain. But many of the people you need to persuade are drowning in information. If you want to make an impact, they need a buoy that floats in one direction only – one solid thing to hold on to. The skill of a great communicator is to find the prime message, and to deliver it with clarity. When you do this, your listener thinks, “Aha, I get it. I trust this person”. Only then have you earned the trust you need, to move to the next tier of subtlety and complexity. This allows you to offer a couple of secondary factors, and perhaps a flavour of those cause-and-effect linkages.</p>

<h2 id="3-3-boost-your-impact-by-listening">3. 3. Boost your impact by listening</h2>

<h2 id="4-harness-the-power-of-posture-poise-and-eye-contact">4. Harness the power of posture, poise and eye contact</h2>

<h1 id="resources">Resources</h1>

<ul>
  <li>https://www.treasurers.org/hub/treasurer-magazine/four-tips-how-make-impact-public-speaking</li>
  <li>https://www.saintleo.edu/about/stories/blog/9-tips-to-improve-your-public-speaking-skills</li>
  <li>https://www.reddit.com/r/lifehacks/comments/rpuvt3/do_any_of_you_guys_have_any_tips_for_public/</li>
</ul>]]></content><author><name>Raul Maldonado</name></author><category term="Presentation" /><summary type="html"><![CDATA[Summary]]></summary></entry><entry><title type="html">How to become a dbt Certified Developer</title><link href="https://raulingaverage.dev//dbt-Certification/" rel="alternate" type="text/html" title="How to become a dbt Certified Developer" /><published>2022-10-22T00:00:00+00:00</published><updated>2022-10-22T00:00:00+00:00</updated><id>https://raulingaverage.dev//dbt-Certification</id><content type="html" xml:base="https://raulingaverage.dev//dbt-Certification/"><![CDATA[<h1 id="summary">Summary</h1>

<p>The dbt (data build tool) Certification let’s you show you’re a reliable source for Analytics Engineering industry’s development for (Operational) Analytics.</p>

<p>I would recommend <a href="https://medium.com/geekculture/preparing-for-the-dbt-analytics-engineering-certification-5496c3ec6e15">Paul Fry’s article “Preparing for the dbt ‘Analytics Engineering’ Certification”</a> as an introduction to what the dbt Certified Developer Certification is and resources.</p>

<p>This article will cover additional material &amp; tips that would be helpful for folks, like myself</p>
<ul>
  <li>About me: I have 2+years of dbt experience, 3+ years of Python development for Analytics and reporting. I am currently a Sr. Data Analyst @ Autodesk.</li>
</ul>

<h1 id="the-exam">The Exam</h1>

<p><img src="https://tenor.com/view/test-gif-20712302" alt="Testing" /></p>

<h2 id="the-scenario">The Scenario</h2>

<p><img src="https://miro.medium.com/max/1272/0*2JgVQB9iEB1cvp0Y." alt="Scenario by Tribe called Quest w/Busta Rhymes" /></p>

<h3 id="what-would-you-do">What would you do?</h3>

<p>These questions are geared towards experienced model &amp; development. Moreover, the question range from starting a dbt project to developing &amp; testing (i.e Building) your first model.</p>

<p>I would say this exam is more geared towards the following folks:</p>
<ul>
  <li>3-6months of startup or full dbt project build</li>
  <li>6+months in dbt experience</li>
</ul>

<p>If you are a newcomer to the space, I recommend developing a dbt project using your preffered Database &amp; BI tool. You can find trials for such tools on their available website.</p>
<ul>
  <li>NOTE: If you work with a company, even better! Try out local dbt development!</li>
</ul>

<p>My (personal) recommended tools w/free trials are the following:</p>
<ul>
  <li>Database - <a href="https://signup.snowflake.com/">Snowflake</a></li>
  <li>BI - <a href="https://mode.com/">Mode Analytics</a></li>
  <li>BI - <a href="https://preset.io/">Preset</a></li>
</ul>

<p>You can see how I developed a dbt project, in my past (personal) training course <a href="https://raulingaverage.dev/onboarding-2-dbt/">Analytic Engineering &amp; dbt: 0-100</a></p>

<h3 id="you-can-be-technically-correct-in-one-sense-but-wrong-in-the-questions-scenario">You can be technically correct in one sense, but wrong in the question’s scenario</h3>

<p>There are certain pieces of terminology you have to certainly know. The scenario for each question sets you up to solve a problem in the context of one part of the Analytic Engineering practice, but proposed answers can be part of another part.</p>

<p>Example:</p>

<p>Imagine you are configuring a YAML file called <code class="language-plaintext highlighter-rouge">src_sfdc.yml</code>. The question you get calls for identifying a test configuration. You have 4 multiple choice questions. Two of them say “model” in their explanation, and sound right. REMEMBER, this is about a <strong>Source, not a model</strong>.</p>

<h2 id="mitigating-non-dbt-exam-issues">Mitigating Non-dbt Exam issues</h2>

<p>Learning about Discrete Option Multiple Choice (DOMC) questions…before you find out the hard way.</p>

<p>I didn’t look into DOMC-style questions. When I first saw one, I was a bit confused on what to do. Moreover, what the interpretation of a Yes/No question meant. As a consequence, I wasted 1min-2min deciphering what to do. That time could have been ~1.8mins on re-evaluating another question (120mins / 65 Q’s).</p>

<p>As a summary:</p>

<blockquote>
  <p>“DOMC represents a relatively simple but very useful change in the delivery of multiple choice question. Instead of showing all of the options at one time, as is usually done, options are randomly presented one at a time. For each presented option, the test taker chooses YES or NO indicating whether the he or she thinks it is the correct one.” - <a href="https://domc.caveon.com/about">source</a></p>
</blockquote>

<p>I should also note that DOMC-style questions are not necessarily 2+ Yes/No path questions. They could be 1 Yes/No or 3 Yes/No path questions.</p>

<h2 id="types-of-questions">Types of Questions</h2>

<ul>
  <li>Developing dbt models</li>
  <li>Debugging data modelling errors</li>
  <li>Monitoring data pipelines</li>
  <li>Implementing dbt tests</li>
  <li>Deploying dbt jobs</li>
  <li>Creating and maintaining dbt documentation</li>
  <li>Promoting code through version control</li>
  <li>Establishing environments in a data warehouse for dbt</li>
</ul>

<h3 id="questions-can-vary">Questions can vary</h3>

<p>After I passed the exam at Coalesce’22, I was headed back to the main conference floor. Approaching the staircase, I found someone else that passed the exam.</p>
<ul>
  <li>Note: You can tell because they we got special swag for being one of the many few becoming dbt Certified Developers</li>
</ul>

<p>We got to talking, and he mentioned some of the Snapshot-related scenario questions he had. I told him “WHAT Snapshot questions?” I got 3+ Incremental materialization questions, but I didn’t get any Snapshot questions…</p>

<p>Another theory to the test is that questions can vary on what is served up on the test.</p>

<p>This makes sense because the person who developed the Exam provides high standard exams that minimize cheating, compared to other tool/software certifications.</p>

<p><img src="https://tenor.com/view/pooh-think-winnie-the-pooh-gif-14107893" alt="Thinking" /></p>

<p>Hope you enjoyed this article, and good luck on your upcoming exam!</p>

<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Last day at <a href="https://twitter.com/hashtag/dbtCoalesce?src=hash&amp;ref_src=twsrc%5Etfw">#dbtCoalesce</a> 😭♥️<br /><br />Became a dbt Certified Developer &amp; had some fun! <a href="https://t.co/iMnVkSptXy">pic.twitter.com/iMnVkSptXy</a></p>&mdash; ℝaul ∈ 🥑 (YIMBY) 🚲 ❤ (@RaulingAverage) <a href="https://twitter.com/RaulingAverage/status/1583279335750107136?ref_src=twsrc%5Etfw">October 21, 2022</a></blockquote>
<script async="" src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<h2 id="resources">Resources</h2>

<ul>
  <li>
    <p><a href="https://www.getdbt.com/assets/uploads/dbt_certificate_study_guide.pdf">dbt Analytics Engineering Certification Exam Study Guide</a></p>
  </li>
  <li>dbt Fundamentals
    <ul>
      <li><a href="https://courses.getdbt.com/courses/advanced-materializations">Advanced Materialization</a>
        <ul>
          <li>Mainly focus on Snapshot &amp; Incremental Materialization methods</li>
        </ul>
      </li>
      <li><a href="https://courses.getdbt.com/courses/jinja-macros-packages">Jinja &amp; Macro Statements</a></li>
    </ul>
  </li>
  <li>Coalesce NOLA ‘22
    <ul>
      <li><a href="https://attendees.bizzabo.com/396530/agenda/activity/967466">Advanced Materialization</a></li>
      <li><a href="https://attendees.bizzabo.com/396530/agenda/activity/967474">Advanced Testing</a></li>
    </ul>
  </li>
</ul>]]></content><author><name>Raul Maldonado</name></author><category term="Technical" /><summary type="html"><![CDATA[Summary]]></summary></entry><entry><title type="html">Where have I been? A recap of ‘21-‘22</title><link href="https://raulingaverage.dev//Where-Have-I-Been/" rel="alternate" type="text/html" title="Where have I been? A recap of ‘21-‘22" /><published>2022-06-27T00:00:00+00:00</published><updated>2022-06-27T00:00:00+00:00</updated><id>https://raulingaverage.dev//Where-Have-I-Been</id><content type="html" xml:base="https://raulingaverage.dev//Where-Have-I-Been/"><![CDATA[<h1 id="where-have-i-been">Where have I been?</h1>

<p>2022, the sun is coming up, climate change is becoming more real, and I’ve never been more excited at some new challenges and joy in my life. I’ve been gone sometime! I had a combination of technical issues updating this blog, personal life updates, and work life udpates that prevented me from updating y’all.</p>

<p>They are:</p>
<ol>
  <li>I started becoming a YIMBY and Bike/Transit Advocate in California</li>
  <li>I became a Senior Data Analyst at my current company</li>
  <li>I couldn’t update this blog due to code-dependency issues</li>
</ol>

<h2 id="1-yimby-and-biketransit-advocate">1. YIMBY and Bike/Transit Advocate.</h2>

<p>You can find how I get started into advocacy, <a href="https://raulingaverage.dev/notes/yimby">here.</a></p>

<h3 id="tldr">TL;DR</h3>

<blockquote>
  <p>I advocate for diverse dense housing and tenant protections to ensure low-income people like my past self don’t get displaced, rent is stable, and more.</p>
</blockquote>

<blockquote>
  <p>Ultimately, I would like to reduce poverty, end homelessness, eliminate racial segregation, create jobs, mitigate displacement, and slow climate change.</p>
</blockquote>

<h2 id="2-senior-data-analyst">2. Senior Data Analyst</h2>

<p>I’m happy to announce I am a Senior Data Analyst at Autodesk. Being within one part of the organization for ~3years helping 1,000+ internal business users with insights and analytic engineering, I went to another team within Autodesk to do the same things–but with a larger sub organization!</p>

<p>I remember my first day at Autodesk–it meant a lot to be a part of company with ethically positive impact in the world, at scale!</p>

<h2 id="3-code-dependency-issues">3. Code dependency issues</h2>

<p>There was a major <a href="https://guides.rubygems.org/what-is-a-gem/">Gems</a> <a href="https://github.com/mmistakes/minimal-mistakes/issues/2693">issue in ~2021</a> preventing me from locally updating this website. However, I found a way to update this website differently, without focusing on <a href="https://guides.rubygems.org/what-is-a-gem/">Gems</a> installation and modifications.</p>]]></content><author><name>Raul Maldonado</name></author><category term="Personal" /><summary type="html"><![CDATA[Where have I been?]]></summary></entry><entry><title type="html">Summarizing ‘What Do Compressed Deep Neural Networks Forget?’</title><link href="https://raulingaverage.dev//Summarizing-Compressed-Deep-NNs/" rel="alternate" type="text/html" title="Summarizing ‘What Do Compressed Deep Neural Networks Forget?’" /><published>2021-01-04T00:00:00+00:00</published><updated>2021-01-04T00:00:00+00:00</updated><id>https://raulingaverage.dev//Summarizing-Compressed-Deep-NNs</id><content type="html" xml:base="https://raulingaverage.dev//Summarizing-Compressed-Deep-NNs/"><![CDATA[<p><a href="https://arxiv.org/pdf/1911.05248.pdf">“What do Compressed Deep Neural Networks Forget” by Sara Hooker and others</a> is 2020 published <a href="https://arxiv.org/">Arxiv.org</a> article (<a href="https://weightpruningdamage.github.io/">also found here</a>) discusses the tradeoffs between optimization and improvements into “AI”. Particularly, the article discusses how Deep Network “Pruning” results in  higher level “AI” performance, but with an underlying tradeoff is memorization of said model’s <strong>particular</strong> data points, what are ultimately called <a href="https://weightpruningdamage.github.io/#:~:text=natural%20adversarial%20images.-,PIE%3A%20Pruning%20Identified%20Exemplars,pruned%20and%20non%2Dpruned%20models.">Pruning Identified Exemplars (PIEs)</a>.</p>

<h2 id="why-should-i-be-interested-in-this">Why should I be interested in this?</h2>

<p>There should be a caution of using such optimizations for “AI” models as they can have societal impact on sensitive industries such as hiring, health care diagnostics, self-driving cars, facial recognition software, and others with small corner cases (i.e. uncommon occurrences).</p>

<p>You may be thinking, “ya okay, what’s a real example of this?”. Well, using programmatic implementations like Machine Learning or Artificial Intelligence, we can see consequences such as the following situations:</p>
<ul>
  <li><a href="https://www.reuters.com/article/us-amazon-com-jobs-automation-insight/amazon-scraps-secret-ai-recruiting-tool-that-showed-bias-against-women-idUSKCN1MK08G">scaling up bias in hiring practices</a></li>
  <li>Automated cars failed recognition in ultimately killing someone</li>
  <li>and other use cases</li>
</ul>

<p>Now technically, you should be interested in this is that such pruning or optimizations to models in products affects <strong>the compression impairs the model’s ability to predict accurately on the long-tail of less frequent instances</strong>.</p>

<h2 id="whats-in-the-publication">What’s in the publication?</h2>

<ol>
  <li>Abstract</li>
  <li>Problem Statement</li>
  <li>Testing Framework</li>
  <li>Results</li>
  <li>Comments, mentions, and mentions of related work in the data space</li>
</ol>

<h2 id="takeaways">Takeaways</h2>

<p>Deep Learning Pruning is accepted by the industry because of optimizations in memory, energy consumption, and lower inference latency with having little degradation to test set accuracy. “However, this measure of performance conceals significant difference in how different” small subset of data, <a href="https://weightpruningdamage.github.io/#:~:text=natural%20adversarial%20images.-,PIE%3A%20Pruning%20Identified%20Exemplars,pruned%20and%20non%2Dpruned%20models.">Pruning Identified Exemplars (PIEs)</a>, are impacted by compression techniques.</p>

<blockquote>
  <p>Side note: “What are Pruning Identified Exemplars (PIEs)?”
From the article, “PIEs are images where there is a high level of disagreement between the predictions of pruned and non-pruned models.”</p>
</blockquote>

<p>These PIEs are corner cases, or uncommon occurrences, do not get classified correctly in a statistically significant implementation, for larger different degrees of pruned models.</p>

<p>And we should not some things about PIEs too, like the following:</p>
<ul>
  <li>Mislabelled (“Ground Truth Label incorrect”)</li>
  <li>Lower Quality or Corrupt Image</li>
  <li>Depict Multiple Objects</li>
  <li>Abstract Representations</li>
  <li>Require more fine-grained classifications (e.g. ‘Green Bottle’ vs ‘Green Plastic Bottle’)</li>
</ul>

<p>Ultimately, as people in the data community create more complex &amp; larger data models, we observe vulnerabilities in classification with “lower end-tail” of the distributions of classes $c \in C$. Moreover, PIEs are heavily over-indexed relative to non-PIEs on both <strong>noisy</strong> (corrupted information) and <strong>atypical</strong> (abstract representation) examples.</p>

<p>Again, this was a short summary. But if you want to read more about this, check out the <a href="https://weightpruningdamage.github.io/">website</a> &amp; <a href="https://arxiv.org/pdf/1911.05248.pdf">article</a> on “Selective Brain Damage: Measuring the Disparate Impact of Model Compression”</p>]]></content><author><name>Raul Maldonado</name></author><category term="Data Science" /><summary type="html"><![CDATA[“What do Compressed Deep Neural Networks Forget” by Sara Hooker and others is 2020 published Arxiv.org article (also found here) discusses the tradeoffs between optimization and improvements into “AI”. Particularly, the article discusses how Deep Network “Pruning” results in higher level “AI” performance, but with an underlying tradeoff is memorization of said model’s particular data points, what are ultimately called Pruning Identified Exemplars (PIEs).]]></summary></entry><entry><title type="html">Next 5 years – Another Raul’d-Map (Roadmap)</title><link href="https://raulingaverage.dev//Five-Year-Roadmap/" rel="alternate" type="text/html" title="Next 5 years – Another Raul’d-Map (Roadmap)" /><published>2021-01-01T00:00:00+00:00</published><updated>2021-01-01T00:00:00+00:00</updated><id>https://raulingaverage.dev//Five-Year-Roadmap</id><content type="html" xml:base="https://raulingaverage.dev//Five-Year-Roadmap/"><![CDATA[<p>2020–Never heard of it. Just kidding. 2020 was truly, yes I will repeat it, <a href="https://www.dictionary.com/e/s/the-best-words-to-use-during-unprecedented-times/#1">“unprecedented times”</a> for us all.</p>

<center><img src="https://i.pinimg.com/originals/e1/40/fe/e140feb66e180e555fa62a7ba8afb4f7.jpg" alt="1918 Pandemic with cat having mask on it." width="175" height="175" /></center>
<center>1918 Pandemic with cat wearing a mask.</center>

<p>However, there are those who quite haven’t been impacted by the COVID-19 situation, and I feel I’ve been truly blessed to be somewhat in that cohort, given my recent relative privilege.</p>

<p>What do I mean by that? Let me take a step back…</p>

<blockquote>
  <p>Note to the reader: This blog post is not a recommendation into <a href="https://www.youtube.com/watch?v=L9Gpr7PEnbs">hustle culture</a>, financial advise, or imposing political views &amp; opinions.</p>
</blockquote>

<hr />

<h2 id="self-reflection">Self-Reflection</h2>

<p>In the past decade, I had the opportunity to both endure and succeed in my initiatives. In that path were underlying 2010 &amp; 2016 5-year goals, graduating from college &amp; getting a career, respectively. However, these ambitions and goals were certainly never expected of me.</p>

<p>How so? Well, in:</p>

<ul>
  <li>
    <p>~2009: I had the opportunity to drop out of High School, without traditional ‘sit-com family confrontational’ repercussions I used to watch.</p>
  </li>
  <li>2010: The Great Recession lead me to not finding a job after High School (I was looking for warehouse or Fast Food jobs). So, I enrolled into Junior College, not knowing what to do.
    <ul>
      <li>2013: I transferred to UC Davis–truly thankful of their diversity initiatives for accepting me.</li>
    </ul>
  </li>
  <li>~2016: I had the opportunity to save up ~2months worth of rent and take a <a href="https://raulingaverage.dev/i-wrote-this-when-i-was-a-teller-at-wells-fargo-in-2016/">strategic risk to move to San Francisco</a>, or move back to Modesto.</li>
</ul>

<blockquote>
  <p>“As a child, I was always one level below the average in math, and I felt incompetent compared to peers.” –<a href="https://blog.udacity.com/2017/12/5-year-plan-for-career-success.html">My “5-Year Plan For Career Success” feature in a Udacity blog post</a></p>
</blockquote>

<p><strong>Reiterating</strong>, I had several opportunities to regress into an expected lifestyle, even so without a safety net. However, keeping that in mind, with lot of preparation, grit, network of opportunities &amp; people, <strong>someone to personally help me in my journey</strong>, I am fortunately still able to continue with my goals without minimized 2020 setback–hence the “relative privilege” term.</p>

<blockquote class="twitter-tweet"><p lang="en" dir="ltr">“You have to work from one point to go to another point”<br />@ zen_ameer <a href="https://t.co/Wg20TKhEfI">pic.twitter.com/Wg20TKhEfI</a></p>&mdash; 2PAC (@2PAC) <a href="https://twitter.com/2PAC/status/1325893011176185857?ref_src=twsrc%5Etfw">November 9, 2020</a></blockquote>
<script async="" src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<hr />

<h2 id="motivation-for-this-roadmap">Motivation for this Roadmap</h2>

<p>The above prelude is not a boast, flex, or brag. But rather, a reflection on some thoughts I had in the past couple of years, especially this one…</p>
<ul>
  <li>How have I given back to lower-income communities, whilst pursuing my ambitions?</li>
  <li>Am I another case of cruising upwards into middle-class, while ignoring my origins?</li>
  <li>How can I use that same numbing frustration of the <a href="https://www.npr.org/2020/05/29/865685777/why-u-s-needs-black-lives-matter-movement-today">2020 Summer BLM movement</a>, rapid rise of corruption in American government, and deaths of tragic heroes like <a href="https://en.wikipedia.org/wiki/Kobe_Bryant">Kobe Bryant</a>, <a href="https://en.wikipedia.org/wiki/Ruth_Bader_Ginsburg">Ruth Bader Ginsburg</a>, <a href="https://en.wikipedia.org/wiki/John_Lewis">John Lewis</a>, &amp; more as motivation?</li>
</ul>

<p>Visibly experiencing the <a href="https://www.cnet.com/personal-finance/americas-v-shaped-vs-k-shaped-economic-recovery-what-does-it-all-mean/">k-shaped</a> bifurcation of the economy, theme of <a href="https://www.youtube.com/watch?v=15pFQxG9wko">rich keep on getting richer</a>, and continuing with my ambitions while not fully being impacted from ‘The ‘Rona’, I have somewhat continued to drift, meanwhile knowing there are others like me that are dealing with their own hardships to a significant degree.</p>

<p>With these considerations, I lay out my Roadmap for the next 5 years.</p>

<h2 id="1-increased-altruism">1. Increased Altruism</h2>

<p>From the <a href="https://slate.com/podcasts/what-next/2020/12/does-violence-make-protest-more-effective-makes-an-effective-protest">Black Lives Matter Movement</a>, deaths of icons like <a href="https://en.wikipedia.org/wiki/Kobe_Bryant">Kobe Bryant</a>, <a href="https://en.wikipedia.org/wiki/Ruth_Bader_Ginsburg">Ruth Bader Ginsburg</a>, <a href="https://en.wikipedia.org/wiki/John_Lewis">John Lewis</a>, and more, I reflect on the numbing pain of the overarching success they’ve achieved in their own lives, and relate how I can be a contributing factor to maintain or continue on their initiatives.</p>

<blockquote>
  <p>“There has to be an uncomfortable element in the discourse for anything to change. People have to be made to feel uncomfortable, &amp; especially white people — because we are comfortable.” - <a href="https://theundefeated.com/features/nba-gregg-popovich-speech-about-white-privilege-felt-like-a-personal-rebuke/">Gregg Popovich</a></p>
</blockquote>

<h3 id="11-contribute-your-time-not-your-skills">1.1 Contribute your time, not your skills</h3>

<p>I am currently, and have, volunteered with Nonprofits these past few years. The responsibilities associated with these contributions have been in Operational &amp; Strategy-capacities. However, was my perceived impact…truly ‘impactful’, both in perception and <a href="https://yaledailynews.com/sjp2020/2020/09/05/a-tale-of-performative-activism-how-black-lives-matter-became-just-a-trend/">non-performative</a>?</p>

<p>If true, this insignificant impact to individuals is consequential in that have I given more than I’ve taken from the San Francisco &amp; other subcommunities that I have been a part of? Moreover, how can I represent the good of tech workers (ignoring the acclaimed <a href="https://www.linkedin.com/pulse/its-time-committothebay-jeff-lawson/?trackingId=%2BdoojZvZQaOFRFdmYNfjHA%3D%3D">Tech Exodus that is happening in 2020 #CommitTotTheBay</a>).</p>

<p>Sometimes, I felt that wasn’t the case–and maybe it was because I haven’t had by ‘boots to the ground’.</p>

<p>That being said, to give more than I’ve taken away from the San Francisco community, I need to contribute more time than my skills. Moreover, how can I lead by example both in the subcommunities that I interact with?</p>

<blockquote class="twitter-tweet"><p lang="en" dir="ltr">🧵 With many of the Valley’s richest companies fleeing the Bay mid-pandemic, I feel compelled to speak out. There’s no question that California is imperfect. The cost of living, taxes and policies, among other things, make it difficult for lots of people to succeed here. (1/9)</p>&mdash; Jeff Lawson (@jeffiel) <a href="https://twitter.com/jeffiel/status/1339996375581396999?ref_src=twsrc%5Etfw">December 18, 2020</a></blockquote>
<script async="" src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<h3 id="12-share-the-codes">1.2 Share The Codes</h3>

<p>This section can be summarized in the following:</p>

<blockquote class="twitter-tweet"><p lang="und" dir="ltr"><a href="https://twitter.com/hashtag/SHARETHECODES?src=hash&amp;ref_src=twsrc%5Etfw">#SHARETHECODES</a> 💫🌱 <a href="https://twitter.com/Pharrell?ref_src=twsrc%5Etfw">@Pharrell</a> <a href="https://twitter.com/tylerthecreator?ref_src=twsrc%5Etfw">@tylerthecreator</a> <a href="https://t.co/nJm5WnzGbG">pic.twitter.com/nJm5WnzGbG</a></p>&mdash; my.💅🏽 (@_MAYA_A_) <a href="https://twitter.com/_MAYA_A_/status/1331667687815086080?ref_src=twsrc%5Etfw">November 25, 2020</a></blockquote>
<script async="" src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<h3 id="13-minimizing-american-misdis-information">1.3 Minimizing American mis/dis-information</h3>

<p>I’ve been fortunate to started my journey online in 2009, when I bought my own HP laptop. Starting their, I had the opportunity to grow and contribute to the internet culture with early adoption of <a href="https://www.buzzfeednews.com/article/katienotopoulos/memes-that-defined-the-2010s">Rage Comic memes</a>, <a href="https://www.theverge.com/2019/4/5/18287318/youtube-logan-paul-pewdiepie-demonetization-adpocalypse-premium-influencers-creators">Golden Age of Youtube</a>, and more.</p>

<p>However, many other cohorts have jumped into it without proper introduction, onboarding, or guidance on how to navigate the internet.</p>

<p>(E.g. <a href="https://g.co/kgs/LZikMX">The Social dilemma</a>, tying truth with memes, <a href="https://abcnews.go.com/Politics/men-qanon/story?id=73046374">Q-Anon</a>, echo chambers, etc).</p>

<p>I should also mention even with either younger demographics or even my age group (i.e. younger family members &amp; friends), I would assumed aligned moral ethics and uphold of truth would reside in their hearts. And resent the corruption that exists now.</p>

<p>However, they’ve lacked to updating their prior beliefs, and in consequence have a <a href="https://scholar.harvard.edu/files/fryer/files/biasedupdating-mar-12-2017-revised.pdf">insufficient update in their posterior belief of particular topics</a>. In consequence, they accept the unjust. Even to older demographics, how can I educate them on how to properly navigate the internet, meanwhile not impose too much bias into those recommendations?</p>

<p><strong>This is something I am still thinking about how to solve</strong>. If you have a suitable solution in the meantime, feel free to let me know.</p>

<blockquote>
  <p>“There are three kinds of lies: lies, damned lies, and statistics.” –Mark Twain (via my Junior College Stats Professor)</p>
</blockquote>

<h2 id="20-career">2.0 Career</h2>

<h3 id="21-exponential-growth">2.1 Exponential Growth</h3>

<p>In 2016, I graduated with a Bachelors in Applied Mathematics and Minor in Economics. But surprisingly, I didn’t know what I wanted to do. <a href="https://www.youtube.com/watch?v=AGBGetoOW4s&amp;pbjreload=101">From that time</a>, I aspired to go into <a href="https://towardsdatascience.com/data-sciences-most-misunderstood-hero-2705da366f40">Data Science</a>, which can be summarized in the opportunity to be featured in a Udacity blog  <a href="https://blog.udacity.com/2017/12/5-year-plan-for-career-success.html">“5-Year Plan For Career Success” in a Udacity blog post</a> by Caroline Watson.</p>

<p>This year, I have never been in a position to take my next steps into Data Science. With that being said, I plan to do the following:</p>
<ul>
  <li>Officially have a Data Science title and responsibilities</li>
  <li>Contribute to Open Source
    <ul>
      <li>Give back more than I’ve taken from the Python community (i.e. not being part of the ‘Stadium’ users, mentioned by <a href="https://www.amazon.com/Working-Public-Making-Maintenance-Software/dp/0578675862">Working in Public: The Making and Maintenance of Open Source by Nadia Eghbal</a>)</li>
    </ul>
  </li>
  <li>Continue with Data-related Nonprofit contributions</li>
</ul>

<h3 id="22-transparent-background">2.2 Transparent Background</h3>

<p>Linkedin</p>
<ul>
  <li>I’ll be more transparent about my background both on Linkedin and my curated <a href="https://raulingaverage.dev/job-search">Job Search Preparation material</a> for lower-income individuals who are interested in starting their career.</li>
</ul>

<p>That being said, let me explain my blog cover…</p>

<p><img src="../assets/images/personal/TacoBell-X-Bus-Stop.png" alt="In between--the hustle. Modesto, CA Bus Stop" /></p>

<p>My first job was at Taco Bell, in 2007. In between transferring buses to get to High School, I went into that Taco Bell asking, honestly annoying, the team &amp; manager if they had an open position. It took a few months, but I had a shot at getting a job.</p>
<ul>
  <li>…I failed the interview, but the manager liked my perseverance and I got the job.</li>
</ul>

<p>Mentions</p>
<ul>
  <li>Offer more transparent background in workshop/talks</li>
</ul>

<h2 id="30-personal">3.0 Personal</h2>

<p>Here are some personal goals that I also would like reach:</p>

<ul>
  <li>
    <p>Celebrating <a href="https://results.rmraces.live/Modesto-Marathon/events/2011/Modesto-Marathon/274/entrant/share">my 10 year anniversary of running a Marathon</a>.</p>
  </li>
  <li>
    <p>Losing weight, per usual :cry:</p>
  </li>
  <li>
    <p>Frequently travel to the London</p>
  </li>
  <li>
    <p>Travel to five Countries, that I have not already been to.</p>
  </li>
  <li>
    <p>Attend <a href="https://youtu.be/vJ2eHsQv7Ac?t=3779">Defcon Festival by Q-dance in Europe</a></p>
  </li>
  <li>
    <p>Home Ownership?</p>
  </li>
</ul>

<h2 id="wrapping-it-all-up">Wrapping it all up</h2>

<p>Looking back into past decade, I’ve updated my goals to center around more impactful altruistic contributions, meanwhile pursuing my career path &amp; personal goals.</p>

<p>Now, I end with this Roadmap with two sentimental songs I heard as a kid.</p>

<iframe width="560" height="315" src="https://www.youtube.com/embed/Kxi3RQl6xVI" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe>

<blockquote>
  <p>Ignore the fact Kanye West is in the above video (I.e. ‘I miss the old Kanye…I hate the new Kanye.’)</p>
</blockquote>

<iframe width="560" height="315" src="https://www.youtube.com/embed/RvVfgvHucRY" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe>]]></content><author><name>Raul Maldonado</name></author><category term="Personal" /><summary type="html"><![CDATA[2020–Never heard of it. Just kidding. 2020 was truly, yes I will repeat it, “unprecedented times” for us all.]]></summary></entry><entry><title type="html">COVID-19 - Information Resources during ‘Dark Winter’</title><link href="https://raulingaverage.dev//COVID-Winter-Is-Here/" rel="alternate" type="text/html" title="COVID-19 - Information Resources during ‘Dark Winter’" /><published>2020-12-05T00:00:00+00:00</published><updated>2020-12-05T00:00:00+00:00</updated><id>https://raulingaverage.dev//COVID-Winter-Is-Here</id><content type="html" xml:base="https://raulingaverage.dev//COVID-Winter-Is-Here/"><![CDATA[<p>In this article, I list out my resources for reliable COVID-19 updates &amp; research. Moreover, I discuss what holds for Americans after COVID-19.</p>
<blockquote>
  <p>Side note: Also, this is a follow up to my March 2020 article <a href="https://raulingaverage.dev/Joining-Masks4All/">“Joining #Masks4All against Coronavirus”</a></p>
</blockquote>

<h2 id="resources">Resources</h2>

<h3 id="general">General</h3>

<ul>
  <li>
    <p><strong>Anthony Stephen Fauci</strong> “is an American physician and immunologist who has served as the director of the National Institute of Allergy and Infectious Diseases since 1989”
<img src="https://cdn.vox-cdn.com/thumbor/gZbcLANIyly6BjxTBBxq6RsqbEM=/1400x1050/filters:format(jpeg)/cdn.vox-cdn.com/uploads/chorus_asset/file/19867593/acastro_200402_3959_drFauci_0001.jpg" alt="Fauci Meme &lt;3" /></p>
  </li>
  <li><a href="https://www.npr.org/podcasts/510318/up-first">NPR’s UpFirst Podcast</a></li>
  <li><a href="https://www.nytimes.com/column/the-daily">The Daily from New York Times</a></li>
</ul>

<h3 id="twitter">Twitter</h3>

<p>Twitter has been always great with not only random spew of memes, jokes, and real time conversations, but also following noteable people. Here are some noteable people that I rely on for COVID-19 Opinions &amp; Research Updates:</p>

<ul>
  <li>Epidemiology Asst. prof <a href="https://twitter.com/EpiEllie">@EpiEllie</a></li>
  <li>Ex-Obama health care head. <a href="https://twitter.com/ASlavitt">@ASlavitt</a></li>
  <li>Assistant Professor of Biostatistics <a href="https://twitter.com/nataliexdean">@nataliexdean</a></li>
  <li>infectious disease epidemiology <a href="https://twitter.com/emma__glennon">@emma__glennon</a></li>
  <li>Biostatistician <a href="https://twitter.com/LucyStats">@LucyStats</a></li>
  <li>Biology Professor @UW <a href="https://twitter.com/CT_Bergstrom">@CT_Bergstrom</a></li>
  <li>Associate Professor in the Center for Policy and Research in Emergency Medicine, Oregon <a href="https://twitter.com/choo_ek">@choo_ek</a></li>
  <li>Epidemiologist &amp; Health Economist. <a href="https://twitter.com/DrEricDing">DrEricDing</a>
    <ul>
      <li>Note: Some of his more recent tweets have become a mix bag of items, than sole-COVID19 topics</li>
    </ul>
  </li>
</ul>

<blockquote class="twitter-tweet"><p lang="en" dir="ltr">SMALL GATHERINGS—I’m most worried about private small gatherings now. They are not publicly visible &amp; difficult to monitor gathering sizes &amp; masks. And people often let their guards down w/ friends/guests in own home. It’s a serious blindspot. <a href="https://twitter.com/hashtag/COVID19?src=hash&amp;ref_src=twsrc%5Etfw">#COVID19</a> <a href="https://t.co/tu2eIN0sfG">pic.twitter.com/tu2eIN0sfG</a></p>&mdash; Eric Feigl-Ding (@DrEricDing) <a href="https://twitter.com/DrEricDing/status/1335249398088036354?ref_src=twsrc%5Etfw">December 5, 2020</a></blockquote>
<script async="" src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<h2 id="looking-into-the-future">Looking into the future</h2>

<h3 id="liability-and-insurance-eligibility-for-covid-19">Liability, and Insurance Eligibility for COVID-19</h3>

<h4 id="lawmakers-pressure-leaders-to-reach-covid-19-relief-deal"><a href="https://thehill.com/homenews/senate/528697-lawmakers-pressure-leaders-to-reach-covid-19-relief-deal">“Lawmakers pressure leaders to reach COVID-19 relief deal”</a></h4>

<p>Currently, American GOP (Republicans) have been pressuring to “push for coronavirus-related liability protections for businesses, schools, nonprofit groups and religious organizations.”</p>

<p><strong>How does this impact you?</strong></p>

<h4 id="coronavirus-faq-could-covid-19-ever-be-considered-a-preexisting-condition"><a href="https://www.npr.org/sections/goatsandsoda/2020/11/09/932067037/coronavirus-faq-could-covid-19-ever-be-considered-a-preexisting-condition">“Coronavirus FAQ: Could COVID-19 Ever Be Considered A Preexisting Condition?”</a></h4>

<p>“Health insurers used to be able to deny coverage – or charge more – for an applicant who had a preexisting medical condition. The Affordable Care Act changed all that as of 2014, guaranteeing coverage for those with preexisting conditions.”</p>
<ul>
  <li>But thanks to the current administration, does such coverage still hold for people?…
  “If preexisting conditions were again to become a cause to deny coverage, would a COVID-19 survivor be in jeopardy?”</li>
</ul>

<h3 id="information-mitigation">Information Mitigation</h3>

<p>How can we ensure to mitigate dis/mis-information within different communities, <a href="https://www.bbc.com/news/world-us-canada-55141055">even to those who are ‘educated’</a>?</p>

<p>I leave this as an open question, as Americans, and the world, have a lot to think and <strong>act</strong> on this effort…</p>

<p><img src="../assets/images/quotes/data-informed.jpg" alt="Data Inform" /></p>

<p>Stay safe, and hope you and your family and friends are well &lt;3.</p>]]></content><author><name>Raul Maldonado</name></author><category term="Personal" /><summary type="html"><![CDATA[In this article, I list out my resources for reliable COVID-19 updates &amp; research. Moreover, I discuss what holds for Americans after COVID-19. Side note: Also, this is a follow up to my March 2020 article “Joining #Masks4All against Coronavirus”]]></summary></entry><entry><title type="html">SQL Readability (2020)</title><link href="https://raulingaverage.dev//SQL-Readability/" rel="alternate" type="text/html" title="SQL Readability (2020)" /><published>2020-04-03T00:00:00+00:00</published><updated>2020-04-03T00:00:00+00:00</updated><id>https://raulingaverage.dev//SQL-Readability</id><content type="html" xml:base="https://raulingaverage.dev//SQL-Readability/"><![CDATA[<p>Scenario: You submitted a Pull Request (PR) for a sophisticated contribution to production (prod), that you spent <strong>several</strong> hours working on.</p>

<p><strong>Kudos to you!</strong></p>

<p><img src="/assets/images/sql-query-worked.jpg" alt="SQL Query Worked" /></p>

<p><strong>But then a code reviewer does not approve your PR.</strong></p>

<p><img src="https://media1.giphy.com/media/6tSHBDVDyOF3O/source.gif" alt="Crying--10 Things I hate about you" /></p>

<p>Your query worked, so what happened?</p>

<p>It may turn out that you’re writing style may not be up-to-par with the team’s standards.</p>

<p>And that’s not your fault! It’s something you should not be ashamed about, but understanding about.</p>

<p>But why? First…</p>

<h1 id="what-is-readability">What is Readability?</h1>

<p>Readability is the style, standardization, and practice for “readable” code. An analogy, it’s like correcting for punctuation in a writing practice.</p>

<p>The enforcement of readability practices, typically by teams, are tied to code reviewing between peers to push code to production.</p>

<h2 id="why-should-i-encourage-readability-best-practices">Why should I encourage readability best practices?</h2>

<p>From the introduction, I emphasized that coding practices are enforced by teams in agreement for better practices, standards, and alignment to contribute value to a product or organization. But what’s in it for the team? What’s in it for you</p>

<p>Let’s look at a scenario.</p>

<h3 id="the-scenario">The Scenario</h3>

<p>When a developer initially writes the code their knowledge of the system is very detailed and complex. And in it, they’ve spent a substantial amount of time to know the logical conditions, output, and corner cases–well hopefully.</p>

<p>1 year later, another person would like to change this query due to updated business logic regarding the query implementation.</p>

<p>Recall the logic being complex? Well, this developer added another layer of complexity as well–poor formatting, which can actually put-off, confuse, or just reduce productivity for the current individual.</p>

<p>This new developer may experience:</p>
<ul>
  <li>Difficult to understand logic and outputs</li>
  <li>Longer to debug</li>
  <li>Maintenance issues</li>
  <li>The complexity of reading code</li>
</ul>

<center><img src="https://i.pinimg.com/originals/17/7e/29/177e297fa5b9b5e5c889ef0b7da3abe3.gif" alt="Sleepy" class="center" /></center>

<p>With readability practices, we alleviate the complexity of reading the code for the developer.</p>

<p>This can enable:</p>

<ul>
  <li>Increased Productivity</li>
  <li>More time to focus on the core logic.</li>
  <li>Quicker turnover of implementations</li>
</ul>

<p><b><center>That seems like it's worth it, right?</center></b></p>

<center><img src="https://media.giphy.com/media/69jvP3VXUYhr3YUYu9/giphy.gif" alt="right?" class="center" /></center>

<h1 id="why-am-i-writing-about-this">Why am I writing about this?</h1>

<p>Being an upcoming analyst, I didn’t mind code readability along with the content I produced.</p>

<p>However, one job I submitted SQL, Python, and Javascript PR’s (Change Lists[CL]) to code production, and I learned the impact of readability for teams, and the long-term benefits from it.</p>

<p>Being with Autodesk, I wanted to drive impact to both colleagues and individuals that should be encouraged to enforce these same practices, as we evolve in analytics and (soft) engineering.</p>

<p>Now,
<b><center>SQL Readability</center></b></p>

<center><img src="https://thumbs.gfycat.com/SandyHelpfulAmazondolphin-max-1mb.gif" alt="Reading Vision" class="center" /></center>

<h1 id="sql-readability">SQL Readability</h1>

<h2 id="the-scenario-1">The Scenario</h2>

<p>Let’s say we want to have the total amount of logins for the past 7 days of <a href="https://en.wikipedia.org/wiki/Myspace">Myspace</a> data per user, and some attributes along with that.</p>

<p>We create a workable query using <a href="https://docs.snowflake.com/en/sql-reference/functions/ascii.html">ASCII SQL syntax</a>.</p>

<div class="language-sql highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">select</span> 

<span class="n">id</span><span class="p">,</span> <span class="n">createdDate</span><span class="p">,</span> <span class="n">events</span><span class="p">.</span><span class="n">login_id</span><span class="p">,</span> <span class="n">geoState</span><span class="p">,</span> <span class="n">firstName</span><span class="p">,</span> <span class="n">lastName</span><span class="p">,</span> <span class="k">sum</span><span class="p">(</span><span class="n">login</span><span class="p">.</span><span class="n">logIn</span><span class="p">)</span> <span class="n">total_logins</span>

<span class="k">from</span> <span class="n">mySpace_events</span> <span class="k">as</span> <span class="n">events</span>
<span class="k">LEFT</span> <span class="k">OUTER</span> <span class="k">JOIN</span> <span class="n">mySpace_users</span> <span class="n">users</span>
<span class="k">on</span> <span class="n">users</span><span class="p">.</span><span class="n">id</span> <span class="o">=</span> <span class="n">events</span><span class="p">.</span><span class="n">user_id</span>
<span class="k">WHERE</span> <span class="n">login</span><span class="p">.</span><span class="nb">date</span> <span class="o">&gt;=</span> <span class="k">current_date</span> <span class="o">-</span> <span class="p">(</span><span class="k">select</span> <span class="k">min</span><span class="p">(</span><span class="n">createdDate</span><span class="p">)</span> <span class="k">from</span> <span class="n">mySpace_users</span> <span class="k">where</span> <span class="n">profile</span>  <span class="o">=</span> <span class="s1">'Musician'</span><span class="p">)</span>
<span class="k">group</span> <span class="k">by</span> <span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">6</span>
</code></pre></div></div>

<h2 id="statement-syntax">Statement Syntax</h2>

<ol>
  <li>
    <p><code class="language-plaintext highlighter-rouge">Upper case</code> declarative statements withing your SQL queries. This allows for another dimension to mentally filter out non-essential information when going to your main target–the logic.</p>
  </li>
  <li>
    <p>Have the statements be on <code class="language-plaintext highlighter-rouge">Seperate Lines</code></p>
  </li>
  <li>
    <p>Ensure particular words are <a href="https://docs.microsoft.com/en-us/sql/t-sql/language-elements/reserved-keywords-transact-sql?view=sql-server-ver15">reserved</a> in your SQL queries.</p>
    <ul>
      <li>For example, some reserve words are <code class="language-plaintext highlighter-rouge">SELECT</code>, <code class="language-plaintext highlighter-rouge">INNER</code>, <code class="language-plaintext highlighter-rouge">JOIN</code>–so don’t use those words as columns.</li>
    </ul>
  </li>
</ol>

<p>Here, we modified the query to have declarative statements be on seperate lines and capitalize said statements.</p>

<div class="language-sql highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">SELECT</span> 

<span class="n">id</span><span class="p">,</span> <span class="n">createdDate</span><span class="p">,</span> <span class="n">events</span><span class="p">.</span><span class="n">login_id</span><span class="p">,</span> <span class="n">geoState</span><span class="p">,</span> <span class="n">firstName</span><span class="p">,</span> <span class="n">lastName</span><span class="p">,</span> <span class="k">SUM</span><span class="p">(</span><span class="n">login</span><span class="p">.</span><span class="n">logIn</span><span class="p">)</span> <span class="n">total_logins</span>

<span class="k">FROM</span> <span class="n">mySpace_events</span> <span class="k">AS</span> <span class="n">events</span>
<span class="k">LEFT</span> <span class="k">OUTER</span> <span class="k">JOIN</span> <span class="n">mySpace_users</span> <span class="n">users</span> <span class="k">ON</span> <span class="n">users</span><span class="p">.</span><span class="n">id</span> <span class="o">=</span> <span class="n">events</span><span class="p">.</span><span class="n">user_id</span>
<span class="k">WHERE</span> <span class="n">login</span><span class="p">.</span><span class="nb">date</span> <span class="o">&gt;=</span> <span class="k">CURRENT_DATE</span> <span class="o">-</span> <span class="p">(</span><span class="k">SELECT</span> <span class="k">MIN</span><span class="p">(</span><span class="n">createdDate</span><span class="p">)</span> <span class="k">FROM</span> <span class="n">mySpace_users</span> <span class="k">WHERE</span> <span class="n">profile</span>  <span class="o">=</span> <span class="s1">'Musician'</span><span class="p">)</span>
<span class="k">GROUP</span> <span class="k">BY</span> <span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">6</span>
</code></pre></div></div>

<h2 id="spacing">Spacing</h2>

<p>“Do not optimize for a smaller number of lines of code. newlines are cheap, brain time is expensive” - <a href="https://github.com/fishtown-analytics/corp/blob/master/dbt_coding_conventions.md">Source</a></p>

<center><img src="https://thumbs.gfycat.com/ElaborateEsteemedJackal-max-1mb.gif" alt="Space" class="center" /></center>

<div class="language-sql highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">SELECT</span> 

    <span class="n">id</span><span class="p">,</span> 
    <span class="n">createdDate</span><span class="p">,</span> 
    <span class="n">events</span><span class="p">.</span><span class="n">login_id</span><span class="p">,</span> 
    <span class="n">geoState</span><span class="p">,</span> 
    <span class="n">firstName</span><span class="p">,</span> 
    <span class="n">lastName</span><span class="p">,</span> 
    <span class="k">SUM</span><span class="p">(</span><span class="n">login</span><span class="p">.</span><span class="n">logIn</span><span class="p">)</span> <span class="n">total_logins</span>

<span class="k">FROM</span> <span class="n">mySpace_events</span> <span class="k">AS</span> <span class="n">events</span>

<span class="k">LEFT</span> <span class="k">OUTER</span> <span class="k">JOIN</span> <span class="n">mySpace_users</span> <span class="n">users</span> <span class="k">ON</span>
     <span class="n">users</span><span class="p">.</span><span class="n">id</span> <span class="o">=</span> <span class="n">events</span><span class="p">.</span><span class="n">user_id</span>

<span class="k">WHERE</span> <span class="n">login</span><span class="p">.</span><span class="nb">date</span> <span class="o">&gt;=</span> <span class="k">CURRENT_DATE</span> <span class="o">-</span> <span class="p">(</span><span class="k">SELECT</span> <span class="k">MIN</span><span class="p">(</span><span class="n">createdDate</span><span class="p">)</span> <span class="k">FROM</span> <span class="n">mySpace_users</span> <span class="k">WHERE</span> <span class="n">profile</span>  <span class="o">=</span> <span class="s1">'Musician'</span><span class="p">)</span>

<span class="k">GROUP</span> <span class="k">BY</span> <span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">6</span>
</code></pre></div></div>

<h2 id="80-characters">80 Characters</h2>

<p>Here, I am abiding by past enforcement of reading ergonomics that I learned from the engineering community. However, I think there is something more, historical to this<a href="https://softwareengineering.stackexchange.com/questions/148677/why-is-80-characters-the-standard-limit-for-code-width">…seen here</a>.</p>

<p>Here, the long-winded sub-query went from one line, to multiple lines, within an 80 character limit.</p>

<div class="language-sql highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">SELECT</span> 

    <span class="n">id</span><span class="p">,</span> 
    <span class="n">createdDate</span><span class="p">,</span> 
    <span class="n">events</span><span class="p">.</span><span class="n">login_id</span><span class="p">,</span> 
    <span class="n">geoState</span><span class="p">,</span> 
    <span class="n">firstName</span><span class="p">,</span> 
    <span class="n">lastName</span><span class="p">,</span> 
    <span class="k">SUM</span><span class="p">(</span><span class="n">login</span><span class="p">.</span><span class="n">logIn</span><span class="p">)</span> <span class="n">total_logins</span>

<span class="k">FROM</span> <span class="n">mySpace_events</span> <span class="k">AS</span> <span class="n">events</span>

<span class="k">LEFT</span> <span class="k">OUTER</span> <span class="k">JOIN</span> <span class="n">mySpace_users</span> <span class="n">users</span>

<span class="k">ON</span> <span class="n">users</span><span class="p">.</span><span class="n">id</span> <span class="o">=</span> <span class="n">events</span><span class="p">.</span><span class="n">user_id</span>

<span class="k">WHERE</span> <span class="n">login</span><span class="p">.</span><span class="nb">date</span> <span class="o">&gt;=</span> <span class="k">CURRENT_DATE</span> <span class="o">-</span> <span class="p">(</span>
    <span class="k">SELECT</span> 
    
        <span class="k">MIN</span><span class="p">(</span><span class="n">createdDate</span><span class="p">)</span> 
    
    <span class="k">FROM</span> <span class="n">mySpace_users</span> 
    
    <span class="k">WHERE</span> <span class="n">profile</span>  <span class="o">=</span> <span class="s1">'Musician'</span>
    <span class="p">)</span>

<span class="k">GROUP</span> <span class="k">BY</span> <span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">6</span>
</code></pre></div></div>

<h2 id="subqueries-and-with-statements">Subqueries and WITH statements</h2>

<div class="language-sql highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
<span class="k">WITH</span> <span class="n">earliest_musician_user_date</span> <span class="k">AS</span> <span class="p">(</span> 

    <span class="k">SELECT</span> 
    
        <span class="k">MIN</span><span class="p">(</span><span class="n">createdDate</span><span class="p">)</span> 
    
    <span class="k">FROM</span> <span class="n">mySpace_users</span> 
    
    <span class="k">WHERE</span> <span class="n">profile</span>  <span class="o">=</span> <span class="s1">'Musician'</span>

<span class="p">)</span>

<span class="k">SELECT</span> 

    <span class="n">id</span><span class="p">,</span> 
    <span class="n">createdDate</span><span class="p">,</span> 
    <span class="n">events</span><span class="p">.</span><span class="n">login_id</span><span class="p">,</span> 
    <span class="n">geoState</span><span class="p">,</span> 
    <span class="n">firstName</span><span class="p">,</span> 
    <span class="n">lastName</span><span class="p">,</span> 
    <span class="k">SUM</span><span class="p">(</span><span class="n">login</span><span class="p">.</span><span class="n">logIn</span><span class="p">)</span> <span class="n">total_logins</span>

<span class="k">FROM</span> <span class="n">mySpace_events</span> <span class="k">AS</span> <span class="n">events</span>

<span class="k">LEFT</span> <span class="k">OUTER</span> <span class="k">JOIN</span> <span class="n">mySpace_users</span> <span class="n">users</span>

<span class="k">ON</span> <span class="n">users</span><span class="p">.</span><span class="n">id</span> <span class="o">=</span> <span class="n">events</span><span class="p">.</span><span class="n">user_id</span>

<span class="k">WHERE</span> <span class="n">login</span><span class="p">.</span><span class="nb">date</span> <span class="o">&gt;=</span> <span class="k">CURRENT_DATE</span> <span class="o">-</span> <span class="n">earliest_musician_user_date</span>

<span class="k">GROUP</span> <span class="k">BY</span> <span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">6</span>
</code></pre></div></div>

<h2 id="aliases">Aliases</h2>

<p>Don’t pass on the <code class="language-plaintext highlighter-rouge">AS</code> statement. With adding the alias, we are ensuring we are explicit with defining nick-names of ingested information, to what we can expect for output information.</p>

<p>Here, we move the subqueries from the bottom of the list to the top, and then call the reference in the same location.</p>

<div class="language-sql highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
<span class="k">WITH</span> <span class="n">earliest_musician_user_date</span> <span class="k">AS</span> <span class="p">(</span> 

    <span class="k">SELECT</span> 
    
        <span class="k">MIN</span><span class="p">(</span><span class="n">createdDate</span><span class="p">)</span>
    
    <span class="k">FROM</span> <span class="n">mySpace_users</span> 
    
    <span class="k">WHERE</span> <span class="n">profile</span>  <span class="o">=</span> <span class="s1">'Musician'</span>

<span class="p">)</span>

<span class="k">SELECT</span> 

    <span class="n">id</span><span class="p">,</span> 
    <span class="n">createdDate</span><span class="p">,</span> 
    <span class="n">events</span><span class="p">.</span><span class="n">login_id</span><span class="p">,</span> 
    <span class="n">geoState</span><span class="p">,</span> 
    <span class="n">firstName</span><span class="p">,</span> 
    <span class="n">lastName</span><span class="p">,</span> 
    <span class="k">SUM</span><span class="p">(</span><span class="n">login</span><span class="p">.</span><span class="n">logIn</span><span class="p">)</span> <span class="k">AS</span> <span class="n">total_logins</span>

<span class="k">FROM</span> <span class="n">mySpace_events</span> <span class="k">AS</span> <span class="n">events</span>

<span class="k">LEFT</span> <span class="k">OUTER</span> <span class="k">JOIN</span> <span class="k">AS</span> <span class="n">mySpace_users</span> <span class="n">users</span> <span class="k">ON</span> 
    <span class="n">users</span><span class="p">.</span><span class="n">id</span> <span class="o">=</span> <span class="n">events</span><span class="p">.</span><span class="n">user_id</span>

<span class="k">WHERE</span> <span class="n">login</span><span class="p">.</span><span class="nb">date</span> <span class="o">&gt;=</span> <span class="k">CURRENT_DATE</span> <span class="o">-</span> <span class="n">earliest_musician_user_date</span>

<span class="k">GROUP</span> <span class="k">BY</span> <span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">6</span>
</code></pre></div></div>

<h2 id="camel-case-or-snake">Camel Case or Snake?</h2>

<p>In other coding language readability guidelines, there is an enforcement of code readability. Particularly, in Python <a href="https://www.python.org/dev/peps/pep-0008/">PEP 8</a> variable names are set to <code class="language-plaintext highlighter-rouge">camelCase</code> and file names are set to <code class="language-plaintext highlighter-rouge">snake_case</code>.</p>

<p><a href="https://www.python.org/dev/peps/pep-0008/"><img src="https://4.bp.blogspot.com/-c4o1jtkNXoM/TZyVEvHZTwI/AAAAAAAAAW4/XlD0PjNQdBM/s1600/Slithering-Camel.jpg" alt="Camel Snake" /></a></p>

<p>with SQL, we have our naming conventions be ‘Snake” conventions.</p>

<p>Here, we have all variable names be snake case (e.g. <code class="language-plaintext highlighter-rouge">createdDate</code> $\rightarrow$ <code class="language-plaintext highlighter-rouge">created_date</code>), along with other columns.</p>

<div class="language-sql highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
<span class="k">WITH</span> <span class="n">earliest_musician_user_date</span> <span class="k">AS</span> <span class="p">(</span> 

    <span class="k">SELECT</span> 
    
        <span class="k">MIN</span><span class="p">(</span><span class="n">created_date</span><span class="p">)</span>
    
    <span class="k">FROM</span> <span class="n">mySpace_users</span> 
    
    <span class="k">WHERE</span> <span class="n">profile</span>  <span class="o">=</span> <span class="s1">'Musician'</span>

<span class="p">)</span>

<span class="k">SELECT</span> 

    <span class="n">id</span><span class="p">,</span> 
    <span class="n">created_date</span><span class="p">,</span> 
    <span class="n">events</span><span class="p">.</span><span class="n">login_id</span><span class="p">,</span> 
    <span class="n">geo_state</span><span class="p">,</span> 
    <span class="n">first_name</span><span class="p">,</span> 
    <span class="n">last_name</span><span class="p">,</span> 
    <span class="k">SUM</span><span class="p">(</span><span class="n">login</span><span class="p">.</span><span class="n">logIn</span><span class="p">)</span> <span class="k">AS</span> <span class="n">total_logins</span>

<span class="k">FROM</span> <span class="n">mySpace_events</span> <span class="k">AS</span> <span class="n">events</span>

<span class="k">LEFT</span> <span class="k">OUTER</span> <span class="k">JOIN</span> <span class="k">AS</span> <span class="n">myspace_users</span> <span class="n">users</span>

<span class="k">ON</span> <span class="n">users</span><span class="p">.</span><span class="n">id</span> <span class="o">=</span> <span class="n">events</span><span class="p">.</span><span class="n">user_id</span>

<span class="k">WHERE</span> <span class="n">login</span><span class="p">.</span><span class="nb">date</span> <span class="o">&gt;=</span> <span class="k">CURRENT_DATE</span> <span class="o">-</span> <span class="n">earliest_musician_user_date</span>

<span class="k">GROUP</span> <span class="k">BY</span> <span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">6</span>
</code></pre></div></div>
<h2 id="comments">Comments</h2>

<p>Both in the beginning of the code snippet to say what data the snippet pulls, the business logic it includes, and throughout, as much as possible, to reference subqueries. SQL makes it hard to read through an entire piece of code without running specific pieces one by one to get where you’re going and comments will help jog the memory. Include them at the end of lines in code, or in blocks at the beginning of code.</p>

<p>Here, we add a block-quote comment <code class="language-plaintext highlighter-rouge">/* */</code> and single-line comments <code class="language-plaintext highlighter-rouge">--</code> to clarify logic</p>

<div class="language-sql highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
<span class="cm">/*

* Querying the Myspace Events table with user information for the time
* after the first Musician profile-user was created.

*/</span>

<span class="k">WITH</span> <span class="n">earliest_musician_user_date</span> <span class="k">AS</span> <span class="p">(</span> 

    <span class="k">SELECT</span> 
    
        <span class="k">MIN</span><span class="p">(</span><span class="n">created_date</span><span class="p">)</span>
    
    <span class="k">FROM</span> <span class="n">mySpace_users</span> 
    
    <span class="k">WHERE</span> <span class="n">profile</span>  <span class="o">=</span> <span class="s1">'Musician'</span>

<span class="p">)</span>

<span class="k">SELECT</span> 

    <span class="n">id</span><span class="p">,</span> 
    <span class="n">created_date</span><span class="p">,</span> 
    <span class="n">events</span><span class="p">.</span><span class="n">login_id</span><span class="p">,</span> 
    <span class="n">geo_state</span><span class="p">,</span> 
    <span class="n">first_name</span><span class="p">,</span> 
    <span class="n">last_name</span><span class="p">,</span> 
    <span class="k">SUM</span><span class="p">(</span><span class="n">login</span><span class="p">.</span><span class="n">logIn</span><span class="p">)</span> <span class="k">AS</span> <span class="n">total_logins</span> <span class="c1">-- Obtaining total logins</span>

<span class="k">FROM</span> <span class="n">mySpace_events</span> <span class="k">AS</span> <span class="n">events</span>

<span class="k">LEFT</span> <span class="k">OUTER</span> <span class="k">JOIN</span> <span class="k">AS</span> <span class="n">myspace_users</span> <span class="n">users</span>

<span class="k">ON</span> <span class="n">users</span><span class="p">.</span><span class="n">id</span> <span class="o">=</span> <span class="n">events</span><span class="p">.</span><span class="n">user_id</span>

<span class="k">WHERE</span> <span class="n">login</span><span class="p">.</span><span class="nb">date</span> <span class="o">&gt;=</span> <span class="k">CURRENT_DATE</span> <span class="o">-</span> <span class="n">earliest_musician_user_date</span>

<span class="k">GROUP</span> <span class="k">BY</span> <span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">6</span>
</code></pre></div></div>

<p>There are other things to refine here, but let’s stop here.</p>
<blockquote>
  <p>e.g. GROUP BY names should be actual names of columns, when code is in production</p>
</blockquote>

<p>Now, take a look at the query above compared to the original one?</p>

<div class="language-sql highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">select</span> 

<span class="n">id</span><span class="p">,</span> <span class="n">createdDate</span><span class="p">,</span> <span class="n">events</span><span class="p">.</span><span class="n">login_id</span><span class="p">,</span> <span class="n">geoState</span><span class="p">,</span> <span class="n">firstName</span><span class="p">,</span> <span class="n">lastName</span><span class="p">,</span> <span class="k">sum</span><span class="p">(</span><span class="n">login</span><span class="p">.</span><span class="n">logIn</span><span class="p">)</span> <span class="n">total_logins</span>

<span class="k">from</span> <span class="n">mySpace_events</span> <span class="k">as</span> <span class="n">events</span>
<span class="k">LEFT</span> <span class="k">OUTER</span> <span class="k">JOIN</span> <span class="n">mySpace_users</span> <span class="n">users</span>
<span class="k">on</span> <span class="n">users</span><span class="p">.</span><span class="n">id</span> <span class="o">=</span> <span class="n">events</span><span class="p">.</span><span class="n">user_id</span>
<span class="k">WHERE</span> <span class="n">login</span><span class="p">.</span><span class="nb">date</span> <span class="o">&gt;=</span> <span class="k">current_date</span> <span class="o">-</span> <span class="p">(</span><span class="k">select</span> <span class="k">min</span><span class="p">(</span><span class="n">createdDate</span><span class="p">)</span> <span class="k">from</span> <span class="n">mySpace_users</span> <span class="k">where</span> <span class="n">profile</span>  <span class="o">=</span> <span class="s1">'Musician'</span><span class="p">)</span>
<span class="k">group</span> <span class="k">by</span> <span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">6</span>
</code></pre></div></div>

<p>Isn’t that better?!</p>

<p><img src="https://media1.giphy.com/media/xT5LMWbDQuncMUJTmU/source.gif" alt="We can read!" /></p>

<h1 id="recap">Recap</h1>

<p>We learned by encouraging a readability practice for submitting code to a team’s repository, production, developers do not have to face:</p>

<ul>
  <li>Difficult to understand logic and outputs</li>
  <li>Longer to debug</li>
  <li>Maintenance issues</li>
  <li>The complexity of reading code</li>
</ul>

<p>And possible enable:</p>

<ul>
  <li>Increased Productivity</li>
  <li>More time to focus on the core logic.</li>
  <li>Quicker turnover of fixes or tasks</li>
</ul>

<center><img src="https://media2.giphy.com/media/FV8YUdZ88fNLi/source.gif" alt="Far Out--Hackers" class="center" /></center>

<p>Now,</p>
<blockquote>
  <p>Never RIGHT, move it to the LEFT..and <strong>SQL ON</strong>…</p>
</blockquote>

<p><img src="https://i.kym-cdn.com/photos/images/original/001/175/473/0c3.gif" alt="You do you" /></p>

<h1 id="bonus">Bonus</h1>

<h2 id="sql-linters">SQL Linters</h2>

<h3 id="vs-code">VS Code</h3>

<ul>
  <li>https://marketplace.visualstudio.com/items?itemName=sensourceinc.vscode-sql-beautify</li>
</ul>

<h3 id="mode-analytics">Mode Analytics</h3>

<p><a href="https://mode.com/blog/new-sql-formatting-capability">Format SQL mode</a></p>

<h1 id="resources">Resources</h1>

<ol>
  <li>
    <p><a href="http://veekaybee.github.io/2015/06/02/good-sql/">Vicki Boykis’ take on readable SQL</a></p>
  </li>
  <li>
    <p><a href="https://www.sqlstyle.guide/">SQL Style Guide</a></p>
  </li>
  <li>
    <p><a href="http://www.craigkerstiens.com/2016/01/08/writing-better-sql/">Craig Kersteins’ take on Legible SQL</a></p>
  </li>
  <li>
    <p><a href="https://www.quora.com/Why-do-we-need-to-improve-the-readability-of-our-code">Quora: Why do we need to improve readability of our code?</a></p>
  </li>
  <li>Unofficial: My own past experience on SQL Readability form 2018 learnings
    <blockquote>
      <p>Note: Company never open-sourced Readability standards for SQL, <a href="(http://google.github.io/styleguide/)">but has for others</a></p>
    </blockquote>
  </li>
  <li>
    <p><a href="https://www.codeproject.com/Articles/126380/Writing-Readable-SQL">Code Project; Writing SQL</a></p>
  </li>
  <li><a href="https://www.python.org/dev/peps/pep-0008/">PEP 8</a></li>
</ol>]]></content><author><name>Raul Maldonado</name></author><category term="Technical" /><summary type="html"><![CDATA[Scenario: You submitted a Pull Request (PR) for a sophisticated contribution to production (prod), that you spent several hours working on.]]></summary></entry><entry><title type="html">Joining \#Masks4All against Coronavirus</title><link href="https://raulingaverage.dev//Joining-Masks4All/" rel="alternate" type="text/html" title="Joining \#Masks4All against Coronavirus" /><published>2020-03-28T00:00:00+00:00</published><updated>2020-03-28T00:00:00+00:00</updated><id>https://raulingaverage.dev//Joining-Masks4All</id><content type="html" xml:base="https://raulingaverage.dev//Joining-Masks4All/"><![CDATA[<p>I am a avid viewer of Lex Fridman’s podcasts and other misc. content, particularly his Youtube videos. I recently watched one of his videos on <a href="https://www.youtube.com/watch?v=qFmaSNP6_z4">“Face Masks for All” &amp; DIY Masks, seen here</a>.</p>

<p>In it, he discusses what you need to know about face masks and its impact on it and the spread of COVID19 (2019 Coronavirus)</p>
<blockquote>
  <p>The DIY mask portion is on minute <a href="https://youtu.be/qFmaSNP6_z4?t=318">5:18 of the video</a>.</p>
</blockquote>

<p>From this video, I too wanted to take action to inform individuals the impact on face masks and how to protect yourself from both the viral pandemic and misinformation pandemic.</p>

<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Misinformation being spread by the <a href="https://twitter.com/WHO?ref_src=twsrc%5Etfw">@WHO</a> about masks 😷<br /><br />“There is no evidence they protect people who are not sick.”<br /><br />Yet seconds later, they advise wearing a mask if you’re near someone with coronavirus. So they clearly do protect people who aren’t sick.<a href="https://t.co/qE3qmaBdtt">https://t.co/qE3qmaBdtt</a></p>&mdash; Sam Feldman (@sam_feldman_) <a href="https://twitter.com/sam_feldman_/status/1242158248792330244?ref_src=twsrc%5Etfw">March 23, 2020</a></blockquote>
<script async="" src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<p>Moreover, I wanted to provide another alternative to save masks for healthcare workers that would need disposable (N95 or surgical) masks, when they come in supply again.</p>

<h2 id="how-to-control-the-spread-of-the-covid19-coronavirus-pandemic">How to control the spread of the COVID19 (Coronavirus) Pandemic</h2>

<p>Overall, from what Lex echoed from the reseach is that we need to:</p>

<ol>
  <li>Test</li>
  <li>Trace</li>
  <li>Quarantine infected</li>
  <li>#Masks4All</li>
</ol>

<h3 id="how-does-the-virus-spread">How does the virus spread?</h3>

<p>At a high level, there are 3 ways this virus can spread:</p>
<ol>
  <li>Contact</li>
  <li>Droplet</li>
  <li>Airborne</li>
</ol>

<p>Bulletins 1 &amp; 2 are focused cases to be aware of, but bulletin 3  too can be of a matter, unless you are within some distance amount of covid19-positive individuals (now you get why the 6ft mandate matters)</p>

<p>Now that individuals are social distancing, how else can we stop the spread of COVID19 through “Droplets” not being able to reach onto your face, mouth, etc?</p>

<p>Masks.</p>

<h3 id="how-do-we-know-masks4all-work">How do we know #Masks4All work?</h3>

<p>In one of Jeremy Howard’s summary of research articles, we observe the coronavirus cases cumulative # of cases over time:</p>

<p><img src="https://pbs.twimg.com/media/ET-aNWBXsAAj6AJ?format=jpg&amp;name=large" alt="Cumulative Curves" /></p>

<p>Notice the significant difference between the cumulative curves with “shapes” of growth in cases of the virus climbing to higher numbers and the “shaps” of growth in cases not climbing so much.</p>

<p>What are some of the factors that make this difference?</p>

<p>There can be cultural differences of hygenie, logistic deployment of resources, government action (i.e. reaction), or…cultural differences in how to react being sick?</p>

<p>In Japan, Hong Kong, and Singapore, we notice that maybe…maybe masks work? Who’s to know? Well, luckily there is academic research proving the degree of effect on masks to protect society, and yourself.</p>

<blockquote>
  <p>In the articles and videos, we hear about the Czech Republic or Tawain are examples of having low growth in counts of the COVID19. More can be found there an other resources, at the end of this article.</p>
</blockquote>

<p><img src="../assets/images/covid19/recommendation-masks.png" alt="" />
<a href="https://youtu.be/BoDwXwZXsDI?t=1908">Source</a></p>

<p>But I leave you with a question–<strong>What will you do?</strong></p>

<h2 id="my-diy-mask-attempt">My DIY Mask Attempt</h2>

<blockquote class="twitter-tweet"><p lang="en" dir="ltr">My attempt at <a href="https://twitter.com/hashtag/Masks4All?src=hash&amp;ref_src=twsrc%5Etfw">#Masks4All</a> <a href="https://t.co/rl9mb6X3Pd">pic.twitter.com/rl9mb6X3Pd</a></p>&mdash; Raul ∈ 🌤️📊 Ø (@RaulingAverage) <a href="https://twitter.com/RaulingAverage/status/1244144002657476608?ref_src=twsrc%5Etfw">March 29, 2020</a></blockquote>
<script async="" src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<h3 id="using-the-leftovers">Using the leftovers</h3>

<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Using the leftover material to make 2 more DIY masks. <a href="https://t.co/IygW3UUEdq">pic.twitter.com/IygW3UUEdq</a></p>&mdash; Raul ∈ 🌤️📊 Ø (@RaulingAverage) <a href="https://twitter.com/RaulingAverage/status/1244145283576913926?ref_src=twsrc%5Etfw">March 29, 2020</a></blockquote>
<script async="" src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<h3 id="how-to-wear-it">How to wear it?</h3>
<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Finished product <a href="https://t.co/HYQpnK7QxR">pic.twitter.com/HYQpnK7QxR</a></p>&mdash; Raul ∈ 🌤️📊 Ø (@RaulingAverage) <a href="https://twitter.com/RaulingAverage/status/1244144604762353664?ref_src=twsrc%5Etfw">March 29, 2020</a></blockquote>
<script async="" src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<h3 id="how-not-to-wear-it">How not to wear it?</h3>

<blockquote class="twitter-tweet"><p lang="en" dir="ltr">How not to wear it <a href="https://t.co/i3VI6kABhK">pic.twitter.com/i3VI6kABhK</a></p>&mdash; Raul ∈ 🌤️📊 Ø (@RaulingAverage) <a href="https://twitter.com/RaulingAverage/status/1244144694457593866?ref_src=twsrc%5Etfw">March 29, 2020</a></blockquote>
<script async="" src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<h3 id="other-diy-mask-tutorials">Other DIY mask tutorials</h3>

<ul>
  <li>https://www.youtube.com/watch?v=BCJcE-r7kcg</li>
  <li>https://www.youtube.com/watch?v=S9RWII2-5_4</li>
  <li>https://www.youtube.com/watch?v=vTJevg9i7XA</li>
</ul>

<h3 id="notes">Notes</h3>

<ul>
  <li>Watch out for 100% cotton shirts, as they have a effectiveness of 50%, compared to cotton blend (effect 70%), seen below and in this video</li>
</ul>

<p><img src="../assets/images/covid19/effect-against-particles.png" alt="Effect against particles" /></p>

<ul>
  <li>
    <p>When cleaning the mask, either put it in extreme heat for or clean it</p>
  </li>
  <li>
    <p>Do not re-use the mask, as the particles can stay on there</p>
  </li>
  <li>
    <p>Some other things to consider:</p>
  </li>
</ul>

<p><img src="../assets/images/covid19/diy-mask-notes.png" alt="Notes on the DIY mask" />
<a href="https://youtu.be/BoDwXwZXsDI?t=1929">Source</a></p>

<p>Also, <strong>Stay Home</strong>, please. &lt;3</p>

<iframe src="https://www.facebook.com/plugins/video.php?href=https%3A%2F%2Fwww.facebook.com%2FLOWSTEPPA%2Fvideos%2F246170693444915%2F&amp;show_text=0&amp;width=345" width="345" height="476" style="border:none;overflow:hidden" scrolling="no" frameborder="0" allowtransparency="true" allowfullscreen="true"></iframe>

<h1 id="research--resources">Research &amp; Resources</h1>

<p>The following is an appendix of existing resources I used for this article, plus the ones provided by researchers Lex Fridmen, Jeremy Howard &amp; Rachel Thomas, and Petr Ludwig</p>

<h2 id="petr-ludwig-original-research">Petr Ludwig Original Research</h2>

<ul>
  <li>
    <p><a href="https://www.youtube.com/watch?v=2_8hojsF-nY">Original Video</a></p>
  </li>
  <li>
    <p><a href="https://www.youtube.com/watch?v=HhNo_IOPOtU">Masks for all movement video</a></p>
  </li>
</ul>

<h2 id="czech-masks4all">Czech #masks4all</h2>

<ul>
  <li>Google Doc: <a href="http://tiny.cc/masks4all">http://tiny.cc/masks4all</a></li>
</ul>

<h2 id="jeremy-howard--rachel-thomas-research-paper-collection">Jeremy Howard &amp; Rachel Thomas’ research paper collection</h2>

<ul>
  <li><a href="https://www.youtube.com/watch?v=BoDwXwZXsDI">Summary of Research: Video</a></li>
  <li><a href="http://tiny.cc/maskswork">Summary of Research: Papers</a></li>
</ul>

<h2 id="lexs-resources">Lex’s resources</h2>

<ul>
  <li>Slides for this video: https://bit.ly/3duqq82</li>
  <li>Slide References: https://bit.ly/covid-19-masks</li>
</ul>]]></content><author><name>Raul Maldonado</name></author><category term="Personal" /><summary type="html"><![CDATA[I am a avid viewer of Lex Fridman’s podcasts and other misc. content, particularly his Youtube videos. I recently watched one of his videos on “Face Masks for All” &amp; DIY Masks, seen here.]]></summary></entry><entry><title type="html">2019 Lookback and the \#2020Vision</title><link href="https://raulingaverage.dev//2019Lookback-2020Growth/" rel="alternate" type="text/html" title="2019 Lookback and the \#2020Vision" /><published>2020-03-10T00:00:00+00:00</published><updated>2020-03-10T00:00:00+00:00</updated><id>https://raulingaverage.dev//2019Lookback-2020Growth</id><content type="html" xml:base="https://raulingaverage.dev//2019Lookback-2020Growth/"><![CDATA[<p>It’s been a while since I’ve produced some quality personal content. Moreover, I’ve noticed that it’s been 1 year since my time as a Data Analyst at Autodesk! Though the journey has been amazing to work in a start-up-like workflow, meanwhile working to drive impact to a corporation, I thought it would be beneficial to readers to provide some lessons learned. Also, what’s coming up for me in 2020?</p>

<p>Starting off…</p>
<h1 id="1-lessons-learned">1. Lessons Learned</h1>

<p>You’re learning if you make mistakes, improve on them, and continue to correct to drive to successful impact.</p>

<p>To help with some of the conflictions you may face this year, I would hope to provide some insights, if they apply.</p>

<h2 id="11-having-a-healthy-success-mindset">1.1. Having a healthy “Success” Mindset</h2>

<p>In school, I compared my poor performance to peers , and would be depressed by the lack of progress compared to them.</p>

<p>Even when I started in my own career path, I still was ashamed of lack of enthusiasm in deliverables, lack of productionizing some analyses, and so much more. Thinking in the day, even weeks, I would sometimes wonder why (and slightyly cringe).</p>

<p>But these failures are lessons that should be a grain of salt. Learning from <a href="https://twitter.com/lexfridman">Lex Fridman</a>, 
“Success is finding and paving your own path. It’s not defined by someone else’s success” regardless of current state.” We should be happy about our own development, and more so appreciative of other people’s achievements. Use those achievements to say “Wow, someday I too can get there as well”.</p>

<h2 id="12-dealing-with-bad-10x-engineerspeople">1.2. Dealing with bad 10X Engineers/People</h2>

<p>There are amazing individuals who outshine the rest, but may feel prideful of their accumulated knowledge. They may push you down and make you feel belittled. These are the bad 10x Engineers.</p>

<p>How can we work with these people?</p>

<ul>
  <li>
    <p>Keep calm, and continue to develop on</p>
  </li>
  <li>When having an opportunity to correct them, use sentences like “Well I and others in the community may implement this, so how can you implement it compared to those standards? What are the benefits?” In a nice manner
    <ul>
      <li>Avoid using “You”</li>
    </ul>
  </li>
  <li>When they feed their ego, agree to what they express, and say “oh man, and I bet so much more people feel that way too. I really hope that can not happen anymore soon”.
    <ul>
      <li>It’s showing you acknowledge their complaints, but at the same time dash the reality that other people exerience it too</li>
    </ul>
  </li>
  <li>
    <p><strong>For women in the workforce</strong>, if ever belittled by these people, I heard a recommendation that having a “sponsor” in the room is something that could be effective. However, I know rallying sponsors can be difficult, it can be useful in a long-run strategy to protect yourself in the workplace.</p>
  </li>
  <li>“Sit Down, Be Humble”. Always remember to be humble, carry on, and pass on sincerity and understanding to others. This enables to preserve or improve a collaborative and productive culture, meanwhile in long run would hopefully make you not stray into these 10x habits others are expressing.</li>
</ul>

<h2 id="13-degrees-dont-imply-a-top-contending-worker">1.3. Degrees don’t imply a Top Contending Worker</h2>

<p>A degree is a signal of the achievements you’ve made for particular knowledge. Another way to say this is that the probability of an individual to successfully execute on tasks depending a degree, historically, has proven to be shown from people with degrees.</p>

<p>However</p>
<blockquote>
  <p>“Correlation is not causation”</p>
</blockquote>

<p>I’ve met individuals that had degrees, but have lost some of that expertise. Remiments of the domain knowledge still exist, surely. However, does that dissapaction of knowledge bear true to the above statement?</p>

<p>Another case, if you had a degree for one specificiation, is taht translatable to having success in another domain or subject? It can, but not quite. And too that, if someone can successfully transitition between fields, then is it plausible that the initial assumption may not concretly hold…and maybe, just maybe, a degree doesn’t imply one to be a top contending worker?</p>

<p>Neither cases can be defiitely shown true, but here is the thing about probability–it’s not about probability.</p>

<p>To this, we cannot or can say high degrees makes you a productive worker. In summary, <a href="https://www.influencive.com/why-your-temperament-outshines-your-intellect/">Work ethic makes your a better worker, not smarts</a></p>

<h2 id="14-i-have-spare-time">1.4. I Have Spare Time</h2>

<p>In 2010, I gave up my most valued hobby–video games. I thought I was doing well. However, as a substitute, I was still binging on Youtube, movies, and shows. Now, this is the norm from such subscription services like Netflix &amp; Hulu. However, I realized in 2016 and forward that I needed to do more.</p>

<p>I still watch content, but I now do try to create barriers to carve out more time in my day to personal development, outside of my existing work. Moreover, in the past month I noticed I have not ran–and used time as an excuse.</p>

<p><strong>However</strong>, there can be room for improvement. I’ve used Androids Focus Mode functionality and Calendar planning for a move effective scheduling to focus on priorities on career. Moreover, I had the chance to start Commute by either Running or riding a bike through some planning. Feel free to ask how that’s going. :D</p>

<h2 id="15-do-i-really-care-about-diversity">1.5. Do I really Care about Diversity?</h2>

<p>So, I definitely do not know Spanish. It’s a skill I resented in my youth, as I didn’t want to be part of any culture – I was an odd kid.</p>

<p>Now a’days, I am basking in the achievements and work I’ve accumulated in the past, but I feel a sense of forgetting my struggle and past. Also to that, I see people of diversity in all walks of life have reminiments of the same issues I’ve faced. However, they never had the light of day to show them what their true potential is.</p>

<p>Coming to a sense of supressing my past struggles with existing pleasures, seeing others struggle, and my self reflection, I question myself and ask</p>

<blockquote>
  <p>Am I going to be the next person in my diversity group forgetting people in struggle (e.g. As a underpriveleged minority can go into another class, they spend “bank” on themselves enjoying the pleasures they never had, or never helping their communit)</p>
</blockquote>

<p>I’m just like others–inactive in holding out my hand, and helping others.</p>

<p>Let’s just say I am really thinking about that, and I want to do something about it….</p>

<h2 id="16-re-using-my-saw-dust-in-my-carpentry-of-work">1.6. Re-using my Saw Dust in my Carpentry of work</h2>

<p>For me, I would like to help diverse individuals with my skillsets. Moreover, how can I help that is also relevenat to common individuals? Well, I learned something 
I have to give some credit to this Youtube on shedding some light</p>

<h1 id="2-whats-next">2. What’s Next?</h1>

<ul>
  <li>Maintain Volunteering capacity</li>
</ul>

<p>I am currently volunteering at Delta Analytics as a Teaching assistant, and continuiing to contribute more. If you want to apply, feel free to do so. There is also DataKind, if you are interested in joining a chapter as well</p>

<ul>
  <li>Improving technical skills</li>
</ul>

<p>Implementation of productionized AB testing, and more</p>

<ul>
  <li>
    <p>Personal reinforcement of combining tests with Python Scripts</p>
  </li>
  <li>
    <p>Learning contributions at scale</p>
  </li>
</ul>

<blockquote>
  <p>Learn, grow, empower.</p>
</blockquote>

<p>#2020Vision</p>]]></content><author><name>Raul Maldonado</name></author><category term="Motivation" /><summary type="html"><![CDATA[It’s been a while since I’ve produced some quality personal content. Moreover, I’ve noticed that it’s been 1 year since my time as a Data Analyst at Autodesk! Though the journey has been amazing to work in a start-up-like workflow, meanwhile working to drive impact to a corporation, I thought it would be beneficial to readers to provide some lessons learned. Also, what’s coming up for me in 2020?]]></summary></entry></feed>